Hi Martin,

Now it's making sense. The '_DMI_' table header checksum code is wrong in DevPCBios.cpp. But dmidecode normally does not get that far, because it finds the '_SM_' marker first, and that one has the right checksum if the BIOS image got run through the 'biossums' tool. I suspect that's not happening for you, and that is something which is probably missing from our makefiles.

I can't see into your repository on github. But you're probably right and it's not doing any harm. Anyway, now I see how to reproduce the problem, thanks.

     - Michal

On 2/5/2019 4:09 PM, Martin Fleisz wrote:
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
vbox-dev@virtualbox.org
https://www.virtualbox.org/mailman/listinfo/vbox-dev


_______________________________________________
vbox-dev mailing list
vbox-dev@virtualbox.org
https://www.virtualbox.org/mailman/listinfo/vbox-dev


_______________________________________________
vbox-dev mailing list
vbox-dev@virtualbox.org
https://www.virtualbox.org/mailman/listinfo/vbox-dev


_______________________________________________
vbox-dev mailing list
vbox-dev@virtualbox.org
https://www.virtualbox.org/mailman/listinfo/vbox-dev

Reply via email to