Annotation of qemu/pc-bios/bios-pq/0019-bios-fix-multiple-calls.patch, revision 1.1.1.1

1.1       root        1: bios: Fix multiple calls into smbios_load_ex
                      2: 
                      3: We're marking the used entry bitmap in smbios_load_external() for each
                      4: type we check, regardless of whether we loaded anything.  This makes
                      5: subsequent calls behave as if we've already loaded the tables from qemu
                      6: and can result in missing tables (ex. multiple type4 entries on an SMP
                      7: guest).  Only mark the bitmap if we actually load something.
                      8: 
                      9: Signed-off-by: Alex Williamson <[email protected]>
                     10: Signed-off-by: Anthony Liguori <[email protected]>
                     11: 
                     12: diff --git a/bios/rombios32.c b/bios/rombios32.c
                     13: index f861f81..c869798 100644
                     14: --- a/bios/rombios32.c
                     15: +++ b/bios/rombios32.c
                     16: @@ -2554,13 +2554,14 @@ smbios_load_external(int type, char **p, unsigned *nr_structs,
                     17:              *max_struct_size = *p - (char *)header;
                     18:      }
                     19:  
                     20: -    /* Mark that we've reported on this type */
                     21: -    used_bitmap[(type >> 6) & 0x3] |= (1ULL << (type & 0x3f));
                     22: +    if (start != *p) {
                     23: +        /* Mark that we've reported on this type */
                     24: +        used_bitmap[(type >> 6) & 0x3] |= (1ULL << (type & 0x3f));
                     25: +        return 1;
                     26: +    }
                     27:  
                     28: -    return (start != *p);
                     29: -#else /* !BX_QEMU */
                     30: +#endif /* !BX_QEMU */
                     31:      return 0;
                     32: -#endif
                     33:  }
                     34:  
                     35:  void smbios_init(void)

unix.superglobalmegacorp.com

This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.