Sophie

Sophie

distrib > Scientific%20Linux > 5x > x86_64 > by-pkgid > 340e01248478ba8b78a6d4d1809b1eff > files > 371

kvm-83-270.el5_11.src.rpm

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