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 /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