[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] Re: [BUG]i2c_hid_acpi broken with 4.17.2 on Framework Laptop 13 AMD
On 18.12.2023 18:04, Sébastien Chaumat wrote: > Le lun. 18 déc. 2023, 17:44, Jan Beulich <jbeulich@xxxxxxxx> a écrit : > >> On 18.12.2023 17:21, Sébastien Chaumat wrote: >>>>>>> On 05.12.2023 21:31, Sébastien Chaumat wrote: >>>>> This issue seems that IRQ 7 (the GPIO controller) is natively fasteoi >>>>> (so level type) while in xen it is mapped to oapic-edge instead of >>>>> oapic-level >>>>> as the SSDT indicates : >>>>> >>>>> Device (GPIO) >>>>> >>>>> { >>>>> Name (_HID, "AMDI0030") // _HID: Hardware ID >>>>> Name (_CID, "AMDI0030") // _CID: Compatible ID >>>>> Name (_UID, Zero) // _UID: Unique ID >>>>> Method (_CRS, 0, NotSerialized) // _CRS: Current Resource >> Settings >>>>> { >>>>> Name (RBUF, ResourceTemplate () >>>>> { >>>>> Interrupt (ResourceConsumer, Level, ActiveLow, >> Shared, ,, ) >>>>> { >>>>> 0x00000007, >>>>> } >>>>> Any idea why ? >>>> >>>> Information coming from AML is required to be handed down by Dom0 to >> Xen. >>>> May want checking that (a) Dom0 properly does so and (b) Xen doesn't >> screw >>>> up in consuming that data. See PHYSDEVOP_setup_gsi. I wonder if this is >>>> specific to it being IRQ7 which GPIO uses, as at the (master) PIC IRQ7 >> is >>>> also the spurious vector. You may want to retry with the tip of the 4.17 >>>> branch (soon to become 4.17.3) - while it doesn't look very likely to me >>>> that recent backports there were related, it may still be that they make >>>> a difference. >>>> >>> >>> testing with 4.17.3: >>> >>> Adding some printk in PHYSDEVOP_setup_gsi, I see (in xl dmesg) that >>> (XEN) PHYSDEVOP_setup_gsi setup_gsi : gsi: 7 triggering: 1 polarity: 1 >>> >>> but later on in dmesg I see : >>> [ 1.747958] xen: registering gsi 7 triggering 0 polarity 1 >>> >>> So triggering is flipped from 1 to 0 (cannot find the definition for >>> those values). >>> Could this be the culprit ? >> >> Possibly. Since it would be the kernel to invoke PHYSDEVOP_setup_gsi, it >> looks as if the kernel was confused about which trigger mode to use. Have >> you figured from where the kernel takes the two different values? >> > >> Would you mind pointing me to the definition for those values first ? I > did not find what 0/1 means in this context. See e.g. the IO-APIC spec, or Xen's io_apic.h: struct IO_APIC_route_entry { ... unsigned int polarity:1; /* 0: low, 1: high */ ... unsigned int trigger:1; /* 0: edge, 1: level */ (Sadly the comment may be the wrong way round for polarity, but then I may also be missing something, as msi.h and apicdef.h suggest things are as the comment above says.) In any event the PHYSDEVOP_setup_gsi invocation looks fishy, at least if this was a PCI IRQ. Just to mention it - according to the hypervisor log you sent earlier there's also no source override for IRQ 7 (in the log lines starting "ACPI: INT_SRC_OVR "). Jan
|
Lists.xenproject.org is hosted with RackSpace, monitoring our |