From ba1d2133ec51730d74faa84803ac8573f079e528 Mon Sep 17 00:00:00 2001 From: Izik Eidus <ieidus@redhat.com> Date: Thu, 11 Jun 2009 12:39:16 +0300 Subject: [PATCH 2/2] fix unresigered vbe physical mapping as reserved memory in the bios Hey, The vbe was not registered as reserved memory, and therefore windows was able to try to map pci devices into this address range. Thanks. >From e454420497aec9e77b0e7a1d20e101f9b4015bc2 Mon Sep 17 00:00:00 2001 From: Izik Eidus <ieidus@redhat.com> Date: Thu, 11 Jun 2009 11:08:03 -0400 Subject: [PATCH] bios: fix vbe unregistered mapping to e820. The vbe was not registered as reserved memory, and therefore windows was able to try to map pci devices into this address range. Thanks. Signed-off-by: Izik Eidus <ieidus@redhat.com> Message-ID: <4A30D0C4.3000405@redhat.com> Signed-off-by: Eduardo Habkost <ehabkost@redhat.com> Acked-by: john cooper <john.cooper@redhat.com> Acked-by: Marcelo Tosatti <mtosatti@redhat.com> Acked-by: Avi Kivity <avi@redhat.com> Bugzilla: 504237 --- bios/rombios.c | 17 +++++++++++++---- 1 files changed, 13 insertions(+), 4 deletions(-) diff --git a/bios/rombios.c b/bios/rombios.c index 146dd52..89c5b16 100644 --- a/bios/rombios.c +++ b/bios/rombios.c @@ -4614,28 +4614,37 @@ ASM_END return; break; case 5: + /* vbe physical mapping */ + set_e820_range(ES, regs.u.r16.di, 0xc0000000, + 0xc1000000, 0, 0, 2); + regs.u.r32.ebx = 6; + regs.u.r32.eax = 0x534D4150; + regs.u.r32.ecx = 0x14; + CLEAR_CF(); + return; + case 6: /* 4 pages before the bios, 3 pages for vmx tss pages, * the other page for EPT real mode pagetable */ set_e820_range(ES, regs.u.r16.di, 0xfffbc000L, 0xfffc0000L, 0, 0, 2); - regs.u.r32.ebx = 6; + regs.u.r32.ebx = 7; regs.u.r32.eax = 0x534D4150; regs.u.r32.ecx = 0x14; CLEAR_CF(); return; - case 6: + case 7: /* 256KB BIOS area at the end of 4 GB */ set_e820_range(ES, regs.u.r16.di, 0xfffc0000L, 0x00000000L ,0, 0, 2); if (extra_highbits_memory_size || extra_lowbits_memory_size) - regs.u.r32.ebx = 7; + regs.u.r32.ebx = 8; else regs.u.r32.ebx = 0; regs.u.r32.eax = 0x534D4150; regs.u.r32.ecx = 0x14; CLEAR_CF(); return; - case 7: + case 8: /* Maping of memory above 4 GB */ set_e820_range(ES, regs.u.r16.di, 0x00000000L, extra_lowbits_memory_size, 1, extra_highbits_memory_size -- 1.6.3.rc4.29.g8146