From mboxrd@z Thu Jan 1 00:00:00 1970 From: "Yang, Sheng" Subject: [PATCH 6/6] kvm: qemu: Enable EPT support for real mode Date: Fri, 18 Apr 2008 17:30:16 +0800 Message-ID: <200804181730.16318.sheng.yang@intel.com> Mime-Version: 1.0 Content-Type: Multipart/Mixed; boundary="Boundary-00=_ooGCIEa37WZyhlX" To: kvm-devel@lists.sourceforge.net Return-path: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: kvm-devel-bounces@lists.sourceforge.net Errors-To: kvm-devel-bounces@lists.sourceforge.net List-Id: kvm.vger.kernel.org --Boundary-00=_ooGCIEa37WZyhlX Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Content-Disposition: inline =46rom 73c33765f3d879001818cd0719038c78a0c65561 Mon Sep 17 00:00:00 2001 =46rom: Sheng Yang Date: Fri, 18 Apr 2008 17:15:39 +0800 Subject: [PATCH] kvm: qemu: Enable EPT support for real mode This patch build a identity page table on the last page of VGA bios, and us= e=20 it as the guest page table in nonpaging mode for EPT. Signed-off-by: Sheng Yang =2D-- qemu/hw/pc.c | 14 ++++++++++++++ 1 files changed, 14 insertions(+), 0 deletions(-) diff --git a/qemu/hw/pc.c b/qemu/hw/pc.c index ae87ab9..dcb98c6 100644 =2D-- a/qemu/hw/pc.c +++ b/qemu/hw/pc.c @@ -780,6 +780,9 @@ static void pc_init1(ram_addr_t ram_size, int=20 vga_ram_size, int index; BlockDriverState *hd[MAX_IDE_BUS * MAX_IDE_DEVS]; BlockDriverState *fd[MAX_FD]; +#ifdef USE_KVM + uint32_t *table_items; +#endif if (ram_size >=3D 0xe0000000 ) { above_4g_mem_size =3D ram_size - 0xe0000000; @@ -857,6 +860,17 @@ static void pc_init1(ram_addr_t ram_size, int=20 vga_ram_size, exit(1); } +#ifdef USE_KVM + if (kvm_allowed) { + /* set up identity map for EPT at the last page of VGA BIOS region. + * 0xe7 =3D _PAGE_PRESENT | _PAGE_RW | _PAGE_USER | _PAGE_ACCESSED | + * _PAGE_DIRTY | _PAGE_PSE */ + table_items =3D (void *)(phys_ram_base + vga_bios_offset + 0xf000); + for (i =3D 0; i < 1024; i++) + table_items[i] =3D (i << 22) + 0xe7; + } +#endif + /* above 4giga memory allocation */ if (above_4g_mem_size > 0) { ram_addr =3D qemu_ram_alloc(above_4g_mem_size); =2D- 1.5.4.5 --Boundary-00=_ooGCIEa37WZyhlX Content-Type: text/x-diff; charset="utf-8"; name="0001-kvm-qemu-Enable-EPT-support-for-real-mode.patch" Content-Transfer-Encoding: quoted-printable Content-Disposition: attachment; filename="0001-kvm-qemu-Enable-EPT-support-for-real-mode.patch" =46rom 73c33765f3d879001818cd0719038c78a0c65561 Mon Sep 17 00:00:00 2001 =46rom: Sheng Yang Date: Fri, 18 Apr 2008 17:15:39 +0800 Subject: [PATCH] kvm: qemu: Enable EPT support for real mode This patch build a identity page table on the last page of VGA bios, and us= e it as the guest page table in nonpaging mode for EPT. Signed-off-by: Sheng Yang =2D-- qemu/hw/pc.c | 14 ++++++++++++++ 1 files changed, 14 insertions(+), 0 deletions(-) diff --git a/qemu/hw/pc.c b/qemu/hw/pc.c index ae87ab9..dcb98c6 100644 =2D-- a/qemu/hw/pc.c +++ b/qemu/hw/pc.c @@ -780,6 +780,9 @@ static void pc_init1(ram_addr_t ram_size, int vga_ram_s= ize, int index; BlockDriverState *hd[MAX_IDE_BUS * MAX_IDE_DEVS]; BlockDriverState *fd[MAX_FD]; +#ifdef USE_KVM + uint32_t *table_items; +#endif =20 if (ram_size >=3D 0xe0000000 ) { above_4g_mem_size =3D ram_size - 0xe0000000; @@ -857,6 +860,17 @@ static void pc_init1(ram_addr_t ram_size, int vga_ram_= size, exit(1); } =20 +#ifdef USE_KVM + if (kvm_allowed) { + /* set up identity map for EPT at the last page of VGA BIOS region. + * 0xe7 =3D _PAGE_PRESENT | _PAGE_RW | _PAGE_USER | _PAGE_ACCESSED | + * _PAGE_DIRTY | _PAGE_PSE */ + table_items =3D (void *)(phys_ram_base + vga_bios_offset + 0xf000); + for (i =3D 0; i < 1024; i++) + table_items[i] =3D (i << 22) + 0xe7; + } +#endif + /* above 4giga memory allocation */ if (above_4g_mem_size > 0) { ram_addr =3D qemu_ram_alloc(above_4g_mem_size); =2D-=20 1.5.4.5 --Boundary-00=_ooGCIEa37WZyhlX Content-Type: text/plain; charset="us-ascii" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit Content-Disposition: inline ------------------------------------------------------------------------- This SF.net email is sponsored by the 2008 JavaOne(SM) Conference Don't miss this year's exciting event. There's still time to save $100. Use priority code J8TL2D2. http://ad.doubleclick.net/clk;198757673;13503038;p?http://java.sun.com/javaone --Boundary-00=_ooGCIEa37WZyhlX Content-Type: text/plain; charset="us-ascii" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit Content-Disposition: inline _______________________________________________ kvm-devel mailing list kvm-devel@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/kvm-devel --Boundary-00=_ooGCIEa37WZyhlX--