From: Keir Fraser Date: Mon, 12 Jan 2009 10:23:55 +0000 (+0000) Subject: hvmloader: Fix SMBIOS memory device length boundary condition. X-Git-Tag: archive/raspbian/4.8.0-1+rpi1~1^2~14014^2~77 X-Git-Url: https://dgit.raspbian.org/?a=commitdiff_plain;h=4ef2a41a2d061e76d799e31fba009e992cf8a257;p=xen.git hvmloader: Fix SMBIOS memory device length boundary condition. dev_memsize ends up 0 when it shouldn't be on 16G boundary conditions. Signed-off-by: Bill Rieske Signed-off-by: Keir Fraser --- diff --git a/tools/firmware/hvmloader/smbios.c b/tools/firmware/hvmloader/smbios.c index d8667f41ab..64fa799c0b 100644 --- a/tools/firmware/hvmloader/smbios.c +++ b/tools/firmware/hvmloader/smbios.c @@ -118,8 +118,9 @@ write_smbios_tables(void *start, do_struct(smbios_type_16_init(p, memsize, nr_mem_devs)); for ( i = 0; i < nr_mem_devs; i++ ) { - uint32_t dev_memsize = ((i == (nr_mem_devs - 1)) - ? (memsize & 0x3fff) : 0x4000); + uint32_t dev_memsize = 0x4000; /* all but last covers 16GB */ + if ( (i == (nr_mem_devs - 1)) && ((memsize & 0x3fff) != 0) ) + dev_memsize = memsize & 0x3fff; /* last dev is <16GB */ do_struct(smbios_type_17_init(p, dev_memsize, i)); do_struct(smbios_type_19_init(p, dev_memsize, i)); do_struct(smbios_type_20_init(p, dev_memsize, i));