Hi Michal, I compile the OSE version (with some very small modifications in VBoxBiosAlternative386.asm <https://github.com/thincast/VirtualBox-RDP-Server/commit/98e7959e484a0145e39619dc6dbc40d3b9282520#diff-9c7472aa47554e70acbb1a4298b673e4> but that shouldn't do any harm to my understanding) and when running dmidecode on Ubuntu 18.04 it reports "# No SMBIOS nor DMI entry point found, sorry.". After applying the patch everything worked just fine. I checked with VirtualBox 6.0.4 and it works just fine out of the box ... so I guess either the checksum is somehow valid by accident or there is some code missing/different in the OSE repository.
Best regards, Martin On 05.02.2019 15:48, Michal Necasek wrote: > > Hi Martin, > > The patch looks good, but I'm struggling to reproduce the problem. > The dmidecode utility in Ubuntu 18.04.1 and 18.10 (dmidecode version > 3.1 in both) does not generate any complaints. So what exactly does? > > Regards, > Michal > > On 2/4/2019 12:16 PM, Martin Fleisz wrote: >> When using legacy BIOS the Intermediate Checksum of the SMBIOS Entry >> Point Structure is calculated incorrectly. >> >> The calculation starts at the wrong offset (at the beginning of >> pu8PcBios rather than pu8PcBios[i]) and creates the sum over the >> whole pu8PcBios data instead of just the next 15 bytes. >> >> The patch below fixes checksum calculation and makes applications >> like dmidecode work again in the guest. >> >> The patch is contributed under the terms of the MIT license. >> >> Cheers, Martin >> >> diff --git src/VBox/Devices/PC/DevPcBios.cpp >> src/VBox/Devices/PC/DevPcBios.cpp >> index e967adff2f..7e56cc18fe 100644 >> --- src/VBox/Devices/PC/DevPcBios.cpp >> +++ src/VBox/Devices/PC/DevPcBios.cpp >> @@ -1594,9 +1594,9 @@ static DECLCALLBACK(int) >> pcbiosConstruct(PPDMDEVINS pDevIns, int iInstance, PCF >> *(uint16_t*)&pThis->pu8PcBios[i + 0x06] = >> RT_H2LE_U16(cbDmiTables); >> *(uint16_t*)&pThis->pu8PcBios[i + 0x0C] = >> RT_H2LE_U16(cNumDmiTables); >> uint8_t u8Sum = 0; >> - for (unsigned j = 0; j < pThis->cbPcBios; j++) >> - if (j != i + 0x05) >> - u8Sum += pThis->pu8PcBios[j]; >> + for (unsigned j = 0; j < 0x0F; j++) >> + if (j != 0x05) >> + u8Sum += pThis->pu8PcBios[i + j]; >> pThis->pu8PcBios[i + 0x05] = -u8Sum; >> break; >> } >> >> _______________________________________________ >> vbox-dev mailing list >> [email protected] >> https://www.virtualbox.org/mailman/listinfo/vbox-dev >> > > _______________________________________________ > vbox-dev mailing list > [email protected] > https://www.virtualbox.org/mailman/listinfo/vbox-dev _______________________________________________ vbox-dev mailing list [email protected] https://www.virtualbox.org/mailman/listinfo/vbox-dev
