From 541ec4c08a53a4745587fef64baf5b0d5352d6a5 Mon Sep 17 00:00:00 2001 From: Eric Ernst Date: Tue, 12 Nov 2019 19:51:33 -0800 Subject: [PATCH] architecture: update architecture docs to reflect VMM support The existing document hasn't been updated since ~1.4. Updated to remove references to qemu-lite, added details on Firecracker. We still need details on ACRN added here as well. Fixes: #570 Signed-off-by: Eric Ernst --- design/arch-images/qemu.png | Bin 25018 -> 0 bytes design/architecture.md | 29 +++++++++++------------------ 2 files changed, 11 insertions(+), 18 deletions(-) delete mode 100644 design/arch-images/qemu.png diff --git a/design/arch-images/qemu.png b/design/arch-images/qemu.png deleted file mode 100644 index b95ee980c79821b8dedf0c772529dec07e33753b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 25018 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