[SeaBIOS] [PATCH v2 3/6] boot: bump priority of storage-device option ROMs

Paolo Bonzini pbonzini at redhat.com
Wed Oct 17 18:23:45 CEST 2012


Right now, BCVs have DefaultHDPrio priority, while BEVs have
DefaultBEVPrio priority.  The right thing to do instead is to
look at the PCI class, while keeping DefaultHDPrio priority
for legacy option ROMs.

Signed-off-by: Paolo Bonzini <pbonzini at redhat.com>
---
 src/boot.c | 7 +++++--
 1 file modificato, 5 inserzioni(+), 2 rimozioni(-)

diff --git a/src/boot.c b/src/boot.c
index 2835008..5101167 100644
--- a/src/boot.c
+++ b/src/boot.c
@@ -342,7 +342,8 @@ void
 boot_add_bev(u16 seg, u16 bev, u16 desc, u16 class, int prio)
 {
     class &= 0xF;
-    bootentry_add(IPL_TYPE_BEV | class, defPrio(prio, DefaultBEVPrio)
+    int def_prio = class == PCI_BASE_CLASS_STORAGE ? DefaultHDPrio : DefaultBEVPrio;
+    bootentry_add(IPL_TYPE_BEV | class, defPrio(prio, def_prio)
                   , SEGOFF(seg, bev).segoff
                   , desc ? MAKE_FLATPTR(seg, desc) : "Unknown");
     DefaultBEVPrio = DEFAULT_PRIO;
@@ -353,7 +354,9 @@ void
 boot_add_bcv(u16 seg, u16 ip, u16 desc, u16 class, int prio)
 {
     class &= 0xF;
-    bootentry_add(IPL_TYPE_BCV | class, defPrio(prio, DefaultHDPrio)
+    // Legacy option ROMs have class == 0; make them DefaultHDPrio
+    int def_prio = class <= PCI_BASE_CLASS_STORAGE ? DefaultHDPrio : DefaultBEVPrio;
+    bootentry_add(IPL_TYPE_BCV | class, defPrio(prio, def_prio)
                   , SEGOFF(seg, ip).segoff
                   , desc ? MAKE_FLATPTR(seg, desc) : "Legacy option rom");
 }
-- 
1.7.12.1





More information about the SeaBIOS mailing list