Messages in this thread | | | Subject | Re: [PATCH] serdev: Add ACPI devices by ResourceSource field | From | Hans de Goede <> | Date | Mon, 23 Sep 2019 10:14:40 +0200 |
| |
Hi,
On 23-09-2019 00:29, Maximilian Luz wrote: > Hi all, > > On 9/20/19 5:00 PM, Hans de Goede wrote: >> So as promised I've given this patch a try, unfortunately it breaks >> existing users of ACPI serdev device instantation. >> >> After adding this patch "ls /sys/bus/serial/devices" is empty, >> where as before it gives: >> >> [root@dhcp-45-50 ~]# ls -l /sys/bus/serial/devices/ >> total 0 >> lrwxrwxrwx. 1 root root 0 Sep 20 16:43 serial0 -> ../../../devices/pci0000:00/8086228A:00/serial0 >> lrwxrwxrwx. 1 root root 0 Sep 20 16:43 serial0-0 -> ../../../devices/pci0000:00/8086228A:00/serial0/serial0-0 >> >> And since the serdev is missing bluetooth does not work. > > Thanks to some testing by Hans, it turns out that the reason for this is > that acpi_walk_resources fails with AE_AML_INVALID_RESOURCE_TYPE for a > specific device. If anyone is interested, the _CRS of the device in > question is > > Method (_CRS, 0, NotSerialized) // _CRS: Current Resource Settings > { > Name (NAM, Buffer (0x14) > { > "\\_SB.PCI0.SDHB.BRC1" > }) > Name (SPB, Buffer (0x0C) > { > /* 0000 */ 0x8E, 0x1D, 0x00, 0x01, 0x00, 0xC0, 0x02, 0x00, > /* 0008 */ 0x00, 0x01, 0x00, 0x00 > }) > Name (END, ResourceTemplate () > { > }) > Concatenate (SPB, NAM, Local0) > Concatenate (Local0, END, Local1) > Return (Local1) > } > > To solve this, I propose ignoring errors that occur when evaluating the > _CRS method. Note that with the previously discussed change for v2, > where we will only look at the first device in _CRS, we should be able > to handle errors from the actual serdev device allocation separately > (and only ignore AML evaluation errors). > > Further, I think it might also make sense to move the status and > already-enumerated checks out of acpi_serdev_register_device to before > looking at _CRS.
Ack, this is what drivers/i2c/i2c-core-acpi.c is doing and more in general all ACPI enumeration code always first checks _STA before doing anything else, so I think it would be best to do this here too.
Actually I think it might be best to fully copy how drivers/i2c/i2c-core-acpi.c does things.
Regards,
Hans
| |