qemu-devel.nongnu.org archive mirror
 help / color / mirror / Atom feed
* [Qemu-devel] [PATCH] Correct SMBIOS handling of multiple tables
@ 2009-05-27 21:42 Beth Kon
  2009-05-27 23:17 ` [Qemu-devel] " Alex Williamson
  0 siblings, 1 reply; 7+ messages in thread
From: Beth Kon @ 2009-05-27 21:42 UTC (permalink / raw)
  To: qemu-devel; +Cc: bochs-developers, Beth Kon, alex.williamson

The current code prevents multiple entries of the same type table, as required,
for example, by table type 4.


Signed-off-by:  Beth Kon <eak@us.ibm.com>


diff --git a/bios/rombios32.c b/bios/rombios32.c
index f861f81..43aa065 100644
--- a/bios/rombios32.c
+++ b/bios/rombios32.c
@@ -2146,6 +2146,10 @@ struct smbios_table {
 #define SMBIOS_FIELD_ENTRY 0
 #define SMBIOS_TABLE_ENTRY 1
 
+#ifdef BX_QEMU
+    static uint64_t smbios_used_bitmap[4] = { 0 };
+#endif
+
 static size_t
 smbios_load_field(int type, size_t offset, void *addr)
 {
@@ -2496,14 +2500,9 @@ smbios_load_external(int type, char **p, unsigned *nr_structs,
                      unsigned *max_struct_size)
 {
 #ifdef BX_QEMU
-    static uint64_t used_bitmap[4] = { 0 };
     char *start = *p;
     int i;
 
-    /* Check if we've already reported these tables */
-    if (used_bitmap[(type >> 6) & 0x3] & (1ULL << (type & 0x3f)))
-        return 1;
-
     /* Don't introduce spurious end markers */
     if (type == 127)
         return 0;
@@ -2555,7 +2554,7 @@ smbios_load_external(int type, char **p, unsigned *nr_structs,
     }
 
     /* Mark that we've reported on this type */
-    used_bitmap[(type >> 6) & 0x3] |= (1ULL << (type & 0x3f));
+    smbios_used_bitmap[(type >> 6) & 0x3] |= (1ULL << (type & 0x3f));
 
     return (start != *p);
 #else /* !BX_QEMU */
@@ -2612,6 +2611,9 @@ void smbios_init(void)
     add_struct(32, p);
     /* Add any remaining provided entries before the end marker */
     for (i = 0; i < 256; i++)
+        /* Check if we've already reported these tables */
+        if (smbios_used_bitmap[(i >> 6) & 0x3] & (1ULL << (i & 0x3f)))
+            continue;
         smbios_load_external(i, &p, &nr_structs, &max_struct_size);
     add_struct(127, p);
 

^ permalink raw reply related	[flat|nested] 7+ messages in thread

end of thread, other threads:[~2009-05-28 16:27 UTC | newest]

Thread overview: 7+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2009-05-27 21:42 [Qemu-devel] [PATCH] Correct SMBIOS handling of multiple tables Beth Kon
2009-05-27 23:17 ` [Qemu-devel] " Alex Williamson
2009-05-28  0:10   ` Beth Kon
2009-05-28  1:38     ` Alex Williamson
2009-05-28 15:05       ` Beth Kon
2009-05-28 15:51         ` Alex Williamson
2009-05-28 16:29           ` Beth Kon

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).