-
Notifications
You must be signed in to change notification settings - Fork 1
Secure Kernel Loader cannot detect any PCI device on AMD with PSP #81
Description
This loop doesn't find any real pci device
Below are detected devices in both GRUB and SKL (where vendor_id and dev_id is non-zero and non-0xffff) in both GRUB and SKL.
GRUB
dev(<bus>, <device/slot>, <function>): [<vendor_id>:<device_id>]. vendor_addr(<addr>), device_addr(<addr>)
slaunch: dev(0,0,0): [1022:153a]. vendor_addr(0x80000000), device_addr(0x80000002)
slaunch: dev(0,0,2): [1022:153b]. vendor_addr(0x80000200), device_addr(0x80000202)
slaunch: dev(0,0,3): [1022:153c]. vendor_addr(0x80000300), device_addr(0x80000302)
slaunch: dev(0,1,0): [1022:153d]. vendor_addr(0x80000800), device_addr(0x80000802)
slaunch: dev(0,2,0): [1022:153d]. vendor_addr(0x80001000), device_addr(0x80001002)
slaunch: dev(0,3,0): [1022:153d]. vendor_addr(0x80001800), device_addr(0x80001802)
slaunch: dev(0,4,0): [1022:153d]. vendor_addr(0x80002000), device_addr(0x80002002)
slaunch: dev(0,5,0): [1022:153d]. vendor_addr(0x80002800), device_addr(0x80002802)
slaunch: dev(0,7,0): [1022:153d]. vendor_addr(0x80003800), device_addr(0x80003802)
slaunch: dev(0,7,1): [1022:1555]. vendor_addr(0x80003900), device_addr(0x80003902)
slaunch: dev(0,20,0): [1022:790b]. vendor_addr(0x8000a000), device_addr(0x8000a002)
slaunch: dev(0,20,3): [1022:790e]. vendor_addr(0x8000a300), device_addr(0x8000a302)
slaunch: dev(0,24,0): [1022:12c0]. vendor_addr(0x8000c000), device_addr(0x8000c002)
slaunch: dev(0,24,1): [1022:12c1]. vendor_addr(0x8000c100), device_addr(0x8000c102)
slaunch: dev(0,24,2): [1022:12c2]. vendor_addr(0x8000c200), device_addr(0x8000c202)
slaunch: dev(0,24,3): [1022:12c3]. vendor_addr(0x8000c300), device_addr(0x8000c302)
slaunch: dev(0,24,4): [1022:12c4]. vendor_addr(0x8000c400), device_addr(0x8000c402)
slaunch: dev(0,24,5): [1022:12c5]. vendor_addr(0x8000c500), device_addr(0x8000c502)
slaunch: dev(0,24,6): [1022:12c6]. vendor_addr(0x8000c600), device_addr(0x8000c602)
slaunch: dev(0,24,7): [1022:12c7]. vendor_addr(0x8000c700), device_addr(0x8000c702)
slaunch: dev(1,0,0): [1022:1556]. vendor_addr(0x80010000), device_addr(0x80010002)
slaunch: dev(32,0,0): [1022:153a]. vendor_addr(0x80200000), device_addr(0x80200002)
slaunch: dev(32,0,3): [1022:153c]. vendor_addr(0x80200300), device_addr(0x80200302)
slaunch: dev(32,1,0): [1022:153d]. vendor_addr(0x80200800), device_addr(0x80200802)
slaunch: dev(32,2,0): [1022:153d]. vendor_addr(0x80201000), device_addr(0x80201002)
slaunch: dev(64,0,0): [1022:153a]. vendor_addr(0x80400000), device_addr(0x80400002)
slaunch: dev(64,0,2): [1022:153b]. vendor_addr(0x80400200), device_addr(0x80400202)
slaunch: dev(64,1,0): [1022:153d]. vendor_addr(0x80400800), device_addr(0x80400802)
slaunch: dev(64,1,1): [1022:153e]. vendor_addr(0x80400900), device_addr(0x80400902)
slaunch: dev(64,1,3): [1022:153e]. vendor_addr(0x80400b00), device_addr(0x80400b02)
slaunch: dev(64,1,4): [1022:153e]. vendor_addr(0x80400c00), device_addr(0x80400c02)
slaunch: dev(64,2,0): [1022:153d]. vendor_addr(0x80401000), device_addr(0x80401002)
slaunch: dev(64,3,0): [1022:153d]. vendor_addr(0x80401800), device_addr(0x80401802)
slaunch: dev(64,4,0): [1022:153d]. vendor_addr(0x80402000), device_addr(0x80402002)
slaunch: dev(64,5,0): [1022:153d]. vendor_addr(0x80402800), device_addr(0x80402802)
slaunch: dev(64,7,0): [1022:153d]. vendor_addr(0x80403800), device_addr(0x80403802)
slaunch: dev(64,7,1): [1022:1555]. vendor_addr(0x80403900), device_addr(0x80403902)
slaunch: dev(64,7,2): [1022:1555]. vendor_addr(0x80403a00), device_addr(0x80403a02)
slaunch: dev(65,0,0): [2646:5013]. vendor_addr(0x80410000), device_addr(0x80410002)
slaunch: dev(66,0,0): [144d:a809]. vendor_addr(0x80420000), device_addr(0x80420002)
slaunch: dev(68,0,0): [1022:1556]. vendor_addr(0x80440000), device_addr(0x80440002)
slaunch: dev(68,0,4): [1022:1557]. vendor_addr(0x80440400), device_addr(0x80440402)
slaunch: dev(69,0,0): [1022:7901]. vendor_addr(0x80450000), device_addr(0x80450002)
slaunch: dev(69,0,1): [1022:7901]. vendor_addr(0x80450100), device_addr(0x80450102)
slaunch: dev(96,0,0): [1022:153a]. vendor_addr(0x80600000), device_addr(0x80600002)
slaunch: dev(96,1,0): [1022:153d]. vendor_addr(0x80600800), device_addr(0x80600802)
slaunch: dev(96,2,0): [1022:153d]. vendor_addr(0x80601000), device_addr(0x80601002)
slaunch: dev(128,0,0): [1022:153a]. vendor_addr(0x80800000), device_addr(0x80800002)
slaunch: dev(128,1,0): [1022:153d]. vendor_addr(0x80800800), device_addr(0x80800802)
slaunch: dev(128,1,3): [1022:153e]. vendor_addr(0x80800b00), device_addr(0x80800b02)
slaunch: dev(128,1,4): [1022:153e]. vendor_addr(0x80800c00), device_addr(0x80800c02)
slaunch: dev(128,2,0): [1022:153d]. vendor_addr(0x80801000), device_addr(0x80801002)
slaunch: dev(160,0,0): [1022:153a]. vendor_addr(0x80a00000), device_addr(0x80a00002)
slaunch: dev(160,0,2): [1022:153b]. vendor_addr(0x80a00200), device_addr(0x80a00202)
slaunch: dev(160,1,0): [1022:153d]. vendor_addr(0x80a00800), device_addr(0x80a00802)
slaunch: dev(160,1,1): [1022:153e]. vendor_addr(0x80a00900), device_addr(0x80a00902)
slaunch: dev(160,1,2): [1022:153e]. vendor_addr(0x80a00a00), device_addr(0x80a00a02)
slaunch: dev(160,1,3): [1022:153e]. vendor_addr(0x80a00b00), device_addr(0x80a00b02)
slaunch: dev(160,1,4): [1022:153e]. vendor_addr(0x80a00c00), device_addr(0x80a00c02)
slaunch: dev(160,2,0): [1022:153d]. vendor_addr(0x80a01000), device_addr(0x80a01002)
slaunch: dev(160,3,0): [1022:153d]. vendor_addr(0x80a01800), device_addr(0x80a01802)
slaunch: dev(160,3,1): [1022:1554]. vendor_addr(0x80a01900), device_addr(0x80a01902)
slaunch: dev(160,3,3): [1022:1554]. vendor_addr(0x80a01b00), device_addr(0x80a01b02)
slaunch: dev(160,4,0): [1022:153d]. vendor_addr(0x80a02000), device_addr(0x80a02002)
slaunch: dev(160,5,0): [1022:153d]. vendor_addr(0x80a02800), device_addr(0x80a02802)
slaunch: dev(160,7,0): [1022:153d]. vendor_addr(0x80a03800), device_addr(0x80a03802)
slaunch: dev(160,7,1): [1022:1555]. vendor_addr(0x80a03900), device_addr(0x80a03902)
slaunch: dev(165,0,0): [14e4:16d8]. vendor_addr(0x80a50000), device_addr(0x80a50002)
slaunch: dev(165,0,1): [14e4:16d8]. vendor_addr(0x80a50100), device_addr(0x80a50102)
slaunch: dev(166,0,0): [1a03:1150]. vendor_addr(0x80a60000), device_addr(0x80a60002)
slaunch: dev(167,0,0): [1a03:2000]. vendor_addr(0x80a70000), device_addr(0x80a70002)
slaunch: dev(168,0,0): [1022:1556]. vendor_addr(0x80a80000), device_addr(0x80a80002)
slaunch: dev(168,0,5): [1022:156e]. vendor_addr(0x80a80500), device_addr(0x80a80502)
SKL
dev(<bus>, <device/slot>, <function>): [<vendor_id>:<device_id>].
dev(0,19,7): [3e00:0001]. vendor_addr(0x0009f000), device_addr(0x0009f002)
dev(0,28,0): [c000:0001]. vendor_addr(0x000e0000), device_addr(0x000e0002)
dev(0,28,1): [c200:0001]. vendor_addr(0x000e1000), device_addr(0x000e1002)
dev(0,28,2): [c400:0001]. vendor_addr(0x000e2000), device_addr(0x000e2002)
dev(0,28,3): [c600:0001]. vendor_addr(0x000e3000), device_addr(0x000e3002)
dev(0,28,4): [c800:0001]. vendor_addr(0x000e4000), device_addr(0x000e4002)
dev(0,28,5): [ca00:0001]. vendor_addr(0x000e5000), device_addr(0x000e5002)
dev(0,28,6): [cc00:0001]. vendor_addr(0x000e6000), device_addr(0x000e6002)
dev(0,28,7): [ce00:0001]. vendor_addr(0x000e7000), device_addr(0x000e7002)
dev(0,29,0): [d000:0001]. vendor_addr(0x000e8000), device_addr(0x000e8002)
dev(0,29,1): [d200:0001]. vendor_addr(0x000e9000), device_addr(0x000e9002)
dev(0,29,2): [d400:0001]. vendor_addr(0x000ea000), device_addr(0x000ea002)
dev(0,29,3): [d600:0001]. vendor_addr(0x000eb000), device_addr(0x000eb002)
dev(0,29,4): [d800:0001]. vendor_addr(0x000ec000), device_addr(0x000ec002)
dev(0,29,5): [da00:0001]. vendor_addr(0x000ed000), device_addr(0x000ed002)
dev(0,29,6): [dc00:0001]. vendor_addr(0x000ee000), device_addr(0x000ee002)
dev(0,29,7): [de00:0001]. vendor_addr(0x000ef000), device_addr(0x000ef002)
dev(0,30,1): [e200:0001]. vendor_addr(0x000f1000), device_addr(0x000f1002)
dev(0,30,2): [e400:0001]. vendor_addr(0x000f2000), device_addr(0x000f2002)
dev(0,30,3): [e600:0001]. vendor_addr(0x000f3000), device_addr(0x000f3002)
dev(0,30,4): [e800:0001]. vendor_addr(0x000f4000), device_addr(0x000f4002)
dev(0,30,5): [ea00:0001]. vendor_addr(0x000f5000), device_addr(0x000f5002)
dev(0,30,6): [ec00:0001]. vendor_addr(0x000f6000), device_addr(0x000f6002)
dev(0,30,7): [ee00:0001]. vendor_addr(0x000f7000), device_addr(0x000f7002)
dev(0,31,0): [f000:0001]. vendor_addr(0x000f8000), device_addr(0x000f8002)
dev(0,31,1): [f200:0001]. vendor_addr(0x000f9000), device_addr(0x000f9002)
dev(0,31,2): [f400:0001]. vendor_addr(0x000fa000), device_addr(0x000fa002)
dev(0,31,3): [f600:0001]. vendor_addr(0x000fb000), device_addr(0x000fb002)
dev(0,31,4): [f800:0001]. vendor_addr(0x000fc000), device_addr(0x000fc002)
dev(0,31,5): [fa00:0001]. vendor_addr(0x000fd000), device_addr(0x000fd002)
dev(0,31,6): [fc00:0001]. vendor_addr(0x000fe000), device_addr(0x000fe002)
dev(0,31,7): [fe00:0001]. vendor_addr(0x000ff000), device_addr(0x000ff002)
dev(16,15,7): [d6c2:75dd]. vendor_addr(0x0107f000), device_addr(0x0107f002)
SKL doesn't find any PCI device that GRUB finds (which includes PSP). If you try to skip this loop then the next problem happens at get_psp_bar_addr(); which returns 0.
PSP is accessible as you can skip all those checks and hardcode bar2_addr taken from GRUB e.g.:
-return init_drtm_interface(bar2_addr, psp->version);
+return init_drtm_interface(0xec200000, PSP_V3);Tested on zarhus/meta-trenchboot#58 (zarhus/meta-trenchboot@b69fbd6) with small changes (added prints/ignore error checks).
Test platform:
- Gigabyte MZ33-AR1
- AMD EPYC 9015 8-Core Processor
- Firmware version:
R19_F13
Issue created based on: #79 (comment) and #79 (comment)