Annotation of qemu/pc-bios/bios-pq/0019-bios-fix-multiple-calls.patch, revision 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.