Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

driver/acpi: incomplete and ambiguous PCI interrupt-routing information #5441

Open
jschlatow opened this issue Jan 31, 2025 · 1 comment
Open

Comments

@jschlatow
Copy link
Member

I noticed that the acpi ROM generated by driver/acpi contains ambiguous IRQ-routing information on newer devices (t490s, StarLite tablet). Moreover, some routing information is even missing. I'm still far from understanding the realm of ACPI tables, yet my understanding of this issue is as follows:

  • PCI IRQ routing information is defined in _PRT methods.
  • The acpi driver currently parses the _PRT methods that are explicitly referenced by any sub-device (e.g. PCI0.*).
  • _PRT methods may also be defined for the parent device (e.g. PCI0) without being referenced by its sub-devices. These are currently ignored by the acpi driver.
  • When parsing the _PRT methods, the acpi driver merely extracts all the package data but ignores the control structures within the method. This leads to ambiguous routing information in the acpi ROM.
  • The same _PRT method may be referenced by multiple sub-devices. Since the acpi driver parses the _PRT for each reference, the acpi ROM may actually contain the same <routing>-entry multiple times.

I'm uncertain how to proceed with this issue. Due to the complexity that we would need to add to the acpi driver, I believe this issue would best be addressed in terms of the pre-boot ACPI discovery (cf. roadmap).

@chelmuth
Copy link
Member

chelmuth commented Feb 3, 2025

I'm uncertain how to proceed with this issue. Due to the complexity that we would need to add to the acpi driver, I believe this issue would best be addressed in terms of the pre-boot ACPI discovery (cf. roadmap).

During my experiments I discovered that the dynamic nature of ACPI methods that may refer to other in-memory variables for conditionals goes far beyond the scope of the current acpi driver. For example, the simple discovery of basic PC devices like PS2 controller, RTC or PIT required the execution of dynamic AML code on recent systems. Therefore, I agree that this issue documents one shortcoming (_PRT info) of the current driver that should be addressed in the boot-time ACPI discovery.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants