Attention is currently required from: Arthur Heymans, Felix Held, Fred Reitberger, Jason Glenesk, Matt DeVillier, Raul Rangel.
Nico Huber has posted comments on this change. ( https://review.coreboot.org/c/coreboot/+/74843?usp=email )
Change subject: soc/amd/common/data_fabric/domain: provide amd_pci_domain_fill_ssdt ......................................................................
Patch Set 11: Code-Review+1
(3 comments)
File src/soc/amd/common/block/data_fabric/domain.c:
https://review.coreboot.org/c/coreboot/+/74843/comment/cf3cbd38_2d7bd701 : PS11, Line 169: if (base > PCI_IO_CONFIG_LAST_PORT || limit < PCI_IO_CONFIG_INDEX) { I wonder what ACPI says about having a resource producer that covers this range and a consumer for cf8..cff both in the same device node. If it would do the right thing, we wouldn't need special handling for it in coreboot, I guess.
https://review.coreboot.org/c/coreboot/+/74843/comment/17d02c81_f43c30aa : PS11, Line 176: /*spit IO range to not cover PCI config IO ports*/ Whitspace around comment marks and *split*.
https://review.coreboot.org/c/coreboot/+/74843/comment/66db6e8f_179244ca : PS11, Line 168: : if (base > PCI_IO_CONFIG_LAST_PORT || limit < PCI_IO_CONFIG_INDEX) { : /* no overlap with PCI config IO ports */ : write_ssdt_domain_io_range_helper(base, limit); : } else {/* overlap with PCI config IO ports */ : if (base == PCI_IO_CONFIG_INDEX && limit == PCI_IO_CONFIG_LAST_PORT) : return; /* IO range exactly covers the PCI config IO ports */ : if (base < PCI_IO_CONFIG_INDEX && limit > PCI_IO_CONFIG_LAST_PORT) { : /*spit IO range to not cover PCI config IO ports*/ : write_ssdt_domain_io_range_helper(base, PCI_IO_CONFIG_INDEX - 1); : write_ssdt_domain_io_range_helper(PCI_IO_CONFIG_LAST_PORT + 1, limit); : } else if (limit <= PCI_IO_CONFIG_LAST_PORT) { : write_ssdt_domain_io_range_helper(base, PCI_IO_CONFIG_INDEX - 1); : } else { /* base >= PCI_IO_CONFIG_INDEX */ : write_ssdt_domain_io_range_helper(PCI_IO_CONFIG_LAST_PORT + 1, limit); : } : } Much simpler and should work too AFAICT: ``` if (base < PCI_IO_CONFIG_INDEX) write_ssdt_domain_io_range_helper(base, MIN(limit, PCI_IO_CONFIG_INDEX - 1)); if (limit > PCI_IO_CONFIG_LAST_PORT) write_ssdt_domain_io_range_helper(MAX(base, PCI_IO_CONFIG_LAST_PORT + 1), limit); ``` (or similar code without MIN/MAX on the original else branch) i.e. add each of the split ranges that isn't empty.