[PATCH] DMI: Always call dmi_present with DMI structure

From: H.J. Lu
Date: Wed Feb 20 2013 - 13:12:28 EST


Hi,

This patch:

commit 9f9c9cbb60576a1518d0bf93fb8e499cffccf377
Author: Zhenzhong Duan <zhenzhong.duan@xxxxxxxxxx>
Date: Thu Dec 20 15:05:14 2012 -0800

drivers/firmware/dmi_scan.c: fetch dmi version from SMBIOS if it exists

The right dmi version is in SMBIOS if it's zero in DMI region

This issue was originally found from an oracle bug.
One customer noticed system UUID doesn't match between dmidecode & uek2.

- HP ProLiant BL460c G6 :
# cat /sys/devices/virtual/dmi/id/product_uuid
00000000-0000-4C48-3031-4D5030333531
# dmidecode | grep -i uuid drivers/firmware/dmi_scan.c:
fetch dmi version from SMBIOS if it exists

The right dmi version is in SMBIOS if it's zero in DMI region

This issue was originally found from an oracle bug.
One customer noticed system UUID doesn't match between dmidecode & uek2.

- HP ProLiant BL460c G6 :
# cat /sys/devices/virtual/dmi/id/product_uuid
00000000-0000-4C48-3031-4D5030333531
# dmidecode | grep -i uuid
UUID: 00000000-0000-484C-3031-4D5030333531

From SMBIOS 2.6 on, spec use little-endian encoding for UUID other than
network byte order.

So we need to get dmi version to distinguish. If version is 0.0, the
real version is taken from the SMBIOS version. This is part of original
kernel comment in code.

UUID: 00000000-0000-484C-3031-4D5030333531

From SMBIOS 2.6 on, spec use little-endian encoding for UUID other than
network byte order.

So we need to get dmi version to distinguish. If version is 0.0, the
real version is taken from the SMBIOS version. This is part of original
kernel comment in code.

causes a regression in 3.7, 3.8 and 3.9 kernels. Before the change,
we only scan DMI structure. Now smbios_present scans SMBIOS
entry point. I have a machine which has invalid checksum in
SMBIOS entry point. We wind up calling dmi_present with SMBIOS
entry point instead of DMI structure. This patch changes smbios_present
to always call dmi_present with DMI structure.


--
H.J.

Attachment: 0001-DMI-Always-call-dmi_present-with-DMI-structure.patch
Description: Binary data