diff options
author | Alicja Michalska <ahplka19@gmail.com> | 2024-03-01 01:44:30 +0100 |
---|---|---|
committer | Felix Singer <service+coreboot-gerrit@felixsinger.de> | 2024-03-05 23:28:21 +0000 |
commit | 5015a35f48aebb22e18b526be737b4ece5759a69 (patch) | |
tree | 863f40323a369a93c07221828e6ecf642b83e370 | |
parent | 07cfe5392a4527db4c1295c0d28c3b5447dc4f95 (diff) |
soc/intel/tigerlake: Add IRQ mapping for PEG PCI-E ports
ACPI _PRT method was missing from PEG (SoC PCI-E) links, resulting in OS
complaining about interrupt routing.
'pcieport 0000:00:06.0: can't derive routing for PCI INT A'
'nvme 0000:04:00.0: PCI INT A: not connected'
'Interrupt: pin A routed to IRQ -2147483648'
TEST=Boot Linux and Windows 10 on TGL-H platform with PEG0/PEG1
populated with PCI-E devices - Radeon RX 7800XT and Kingston KC3000 NVME
SSD. Check logs and stability while running 3D application and disk
benchmark at the same time.
Change-Id: If102522efa1a67b362b14d859d9e27a37bad85a4
Signed-off-by: Alicja Michalska <ahplka19@gmail.com>
Reviewed-on: https://review.coreboot.org/c/coreboot/+/80848
Reviewed-by: Subrata Banik <subratabanik@google.com>
Tested-by: build bot (Jenkins) <no-reply@coreboot.org>
Reviewed-by: Felix Singer <service+coreboot-gerrit@felixsinger.de>
-rw-r--r-- | src/soc/intel/tigerlake/acpi/pcie.asl | 48 |
1 files changed, 48 insertions, 0 deletions
diff --git a/src/soc/intel/tigerlake/acpi/pcie.asl b/src/soc/intel/tigerlake/acpi/pcie.asl index a25335cb91..86d53fe2b7 100644 --- a/src/soc/intel/tigerlake/acpi/pcie.asl +++ b/src/soc/intel/tigerlake/acpi/pcie.asl @@ -115,22 +115,70 @@ Method (IRQM, 1, Serialized) { Device (PEG0) { Name (_ADR, 0x00060000) + + OperationRegion (RPCS, PCI_Config, 0x4c, 4) + Field (RPCS, AnyAcc, NoLock, Preserve) + { + , 24, + RPPN, 8, /* Root Port Number */ + } + + Method (_PRT) + { + Return (IRQM (RPPN)) + } } #if CONFIG(SOC_INTEL_TIGERLAKE_PCH_H) Device (PEG1) { Name (_ADR, 0x00010000) + + OperationRegion (RPCS, PCI_Config, 0x4c, 4) + Field (RPCS, AnyAcc, NoLock, Preserve) + { + , 24, + RPPN, 8, /* Root Port Number */ + } + + Method (_PRT) + { + Return (IRQM (RPPN)) + } } Device (PEG2) { Name (_ADR, 0x00010001) + + OperationRegion (RPCS, PCI_Config, 0x4c, 4) + Field (RPCS, AnyAcc, NoLock, Preserve) + { + , 24, + RPPN, 8, /* Root Port Number */ + } + + Method (_PRT) + { + Return (IRQM (RPPN)) + } } Device (PEG3) { Name (_ADR, 0x00010002) + + OperationRegion (RPCS, PCI_Config, 0x4c, 4) + Field (RPCS, AnyAcc, NoLock, Preserve) + { + , 24, + RPPN, 8, /* Root Port Number */ + } + + Method (_PRT) + { + Return (IRQM (RPPN)) + } } #endif |