Hi, On 10/21/21 11:46, Tsuchiya Yuto wrote: > On Mon, 2021-10-18 at 09:56 +0200, Hans de Goede wrote: >> Hi, >> >> On 10/17/21 18:19, Tsuchiya Yuto wrote: >>> This commit is added for Surface 3 with broken DMI table. HACK-ish. >>> Not intended for upstreaming. Thus, NOT-FOR-MERGE. But, if someone >>> knows a nicer way to address this, comments are welcome... >>> >>>> 8-----------------------------------------------------------------8< >>> >>> On some Microsoft Surface 3, the DMI table gets corrupted for unknown >>> reasons and breaks existing DMI matching used for device-specific quirks. >>> >>> This commit adds the (broken) DMI data into dmi_system_id tables used >>> for quirks so that the driver can enable quirks even on the affected >>> systems. >>> >>> On affected systems, the DMI data will look like this: >>> >>> $ grep . /sys/devices/virtual/dmi/id/{bios_vendor,board_name,board_vendor,\ >>> chassis_vendor,product_name,sys_vendor} >>> /sys/devices/virtual/dmi/id/bios_vendor:American Megatrends Inc. >>> /sys/devices/virtual/dmi/id/board_name:OEMB >>> /sys/devices/virtual/dmi/id/board_vendor:OEMB >>> /sys/devices/virtual/dmi/id/chassis_vendor:OEMB >>> /sys/devices/virtual/dmi/id/product_name:OEMB >>> /sys/devices/virtual/dmi/id/sys_vendor:OEMB >> >> I wonder what the bios_date field contains ? Typically when the DMI strings >> are no good (e.g. often they contain "Default String" or "To be filled by OEM") >> we add a check on the bios-date, which together with the broken strings is >> considered unique enough to still allow a match with broken strings in the >> kernel. > > Thank you so much for the comment :-) > > Here is the full output of "/sys/devices/virtual/dmi/id/*" (not showing > files that need root permission to read): > > $ grep . /sys/devices/virtual/dmi/id/* > /sys/devices/virtual/dmi/id/bios_date:03/09/2015 > /sys/devices/virtual/dmi/id/bios_release:5.6 > /sys/devices/virtual/dmi/id/bios_vendor:American Megatrends Inc. > /sys/devices/virtual/dmi/id/bios_version:1.51116.238 Interesting, this is the latest BIOS from july 2019 according to: https://support.microsoft.com/en-us/surface/surface-3-update-history-5d86a7bc-03f7-2d27-d858-e90ce637fb52 yet the date is still set to 03/09/2015. I just checked and the BIOS with not corrupted DMI strings also keeps the date at 03/09/2015 in BIOS updates. So the date is correct, and together with matching a coupleof the OEMB-s (which I've never seen anywhere else either) this should be plenty unique. So this not only allows adding this mathc to atomisp, but also to fix sound + wmi on bad DMI data OEMB Surface 3-s, by updating this patch: https://github.com/linux-surface/linux-surface/blob/2fb7e9ae91350098db9a280277f424272816a9ab/patches/5.5/0003-surface3-oemb.patch To include the BIOS-date match and then submitting this upstream (as 2 separate patches please). Tsuchiya, I take it that your Surface 3 has the OEMB issue, so you can actually test this ? If you can prepare 2 patches for the sound + wmi then; and submit them upstream that would be great. Please Cc me on both patches. Regards, Hans > /sys/devices/virtual/dmi/id/board_name:OEMB > grep: /sys/devices/virtual/dmi/id/board_serial: Permission denied > /sys/devices/virtual/dmi/id/board_vendor:OEMB > /sys/devices/virtual/dmi/id/board_version:00 > grep: /sys/devices/virtual/dmi/id/chassis_serial: Permission denied > /sys/devices/virtual/dmi/id/chassis_type:9 > /sys/devices/virtual/dmi/id/chassis_vendor:OEMB > /sys/devices/virtual/dmi/id/modalias:dmi:bvnAmericanMegatrendsInc.:bvr1.51116.238:bd03/09/2015:br5.6:svnOEMB:pnOEMB:pvrB16D0SM1C4G1X1:rvnOEMB:rnOEMB:rvr00:cvnOEMB:ct9:cvr:sku: > grep: /sys/devices/virtual/dmi/id/power: Is a directory > /sys/devices/virtual/dmi/id/product_name:OEMB > grep: /sys/devices/virtual/dmi/id/product_serial: Permission denied > grep: /sys/devices/virtual/dmi/id/product_uuid: Permission denied > /sys/devices/virtual/dmi/id/product_version:B16D0SM1C4G1X1 > grep: /sys/devices/virtual/dmi/id/subsystem: Is a directory > /sys/devices/virtual/dmi/id/sys_vendor:OEMB > /sys/devices/virtual/dmi/id/uevent:MODALIAS=dmi:bvnAmericanMegatrendsInc.:bvr1.51116.238:bd03/09/2015:br5.6:svnOEMB:pnOEMB:pvrB16D0SM1C4G1X1:rvnOEMB:rnOEMB:rvr00:cvnOEMB:ct9:cvr:sku: > > The "bios_date" ("03/09/2015") looks not broken. > > I also noticed when writing this mail, regarding the ones that need root > permission to read, "board_serial" and "chassis_serial" are now empty. > "product_serial" now shows "OEM": > > $ sudo cat /sys/devices/virtual/dmi/id/product_serial > OEM > > "product_uuid" looks not broken. > >> Also have you tried doing something like "load bios/setup defaults" in >> the BIOS setup ? Maybe that helps ? > > Unfortunately, there is no option like this... > > Regards, > Tsuchiya Yuto >