Hi Jean, Dne 04. 06. 23 v 16:01 Jean Delvare napsal(a):
I admit I don't know. I'm not familiar with how GSI numbers relate to IRQ numbers. I think I understand that GSI numbers are an ACPI thing, and the ACPI layer is responsible for mapping these to actual IRQ numbers? Is there a GSI-to-IRQ table available somewhere as part of the ACPI tables? If so, it would be interesting to disassemble the ACPI tables on your system and check what this looks like for you.
You need to check _PRT method of PCI0 device in APIC mode. This will tell you to what GSI (APIC/pin) it goes. To check you need to have a look to the DSDT table and decompile it. You can obtain it by running acpidump > tables.txt and the acpixtract -a tables.txt and finally running iasl -d dsdt.asl. Then, because the SMBUS lives on bus0, you just need to check _PRT method under PCI0 device for the entry of 001fffff (INT C). If this entry exists it will tell you where is it connected. I assume this has no entry and then as a last chance Linux tries the PCI IRQ entry in the configuration space gets queried. And this has 0xff which is telling no IRQ connected. The southbridge has a IRQ routing configuration register which can be used to verify if this is routed anywhere or really left "unconnected". This is usually in the the RCBA base + something register. Have a look to "D31IP" register: SMBus Pin (SMIP) — R/W. Indicates which pin the SMBus controller drives as its interrupt. bits 15:12 If there is 0, it is not routed anywhere. Also you need to check "D31IR" where the PIN C is going: Interrupt C Pin Route (ICR) — R/W. Indicates which physical pin on the PCH is connected to the INTC# pin reported for device 31 functions. The PIRQA corresponds to the PIN 16 of IOAPIC etc. If you need more info on that feel free to contact me. I can try to help. Thanks, Rudolf