]> git.baikalelectronics.ru Git - kernel.git/commit
ACPI/IORT: Fix PCI ACS enablement
authorLorenzo Pieralisi <lorenzo.pieralisi@arm.com>
Mon, 2 Oct 2017 17:28:44 +0000 (18:28 +0100)
committerCatalin Marinas <catalin.marinas@arm.com>
Wed, 4 Oct 2017 16:34:41 +0000 (17:34 +0100)
commit68e332ac53d355865834d71a0dcfba3515677d0f
treee426ac90469207400f5da22cc60306ec4b6653f9
parent847fda23721a5f6597c5d2dda47dcc806b25b867
ACPI/IORT: Fix PCI ACS enablement

commit 5f7aaa30cc36 ("iommu/arm-smmu: Clean up early-probing
workarounds") removed kernel code that was allowing to initialize
and probe the SMMU devices early (ie earlier than PCI devices, through
linker script callback entries) in the boot process because it was not
needed any longer in that the SMMU devices/drivers now support deferred
probing.

Since the SMMUs probe routines are also in charge of requesting global
PCI ACS kernel enablement, commit 5f7aaa30cc36 ("iommu/arm-smmu: Clean
up early-probing workarounds") also postponed PCI ACS enablement to
SMMUs devices probe time, which is too late given that PCI devices needs
to detect if PCI ACS is enabled to init the respective capability
through the following call path:

pci_device_add()
 -> pci_init_capabilities()
  -> pci_enable_acs()

Add code in the ACPI IORT SMMU platform devices initialization path
(that is called before ACPI PCI enumeration) to detect if there
exists firmware mappings to map root complexes ids to SMMU ids
and if so enable ACS for the system.

Fixes: 5f7aaa30cc36 ("iommu/arm-smmu: Clean up early-probing workarounds")
Reviewed-by: Robin Murphy <robin.murphy@arm.com>
Tested-by: Nate Watterson <nwatters@codeaurora.org>
Signed-off-by: Lorenzo Pieralisi <lorenzo.pieralisi@arm.com>
Cc: Will Deacon <will.deacon@arm.com>
Cc: Hanjun Guo <hanjun.guo@linaro.org>
Cc: Sudeep Holla <sudeep.holla@arm.com>
Cc: Zhou Wang <wangzhou1@hisilicon.com>
Cc: Alex Williamson <alex.williamson@redhat.com>
Signed-off-by: Catalin Marinas <catalin.marinas@arm.com>
drivers/acpi/arm64/iort.c