• Lorenzo Pieralisi's avatar
    ARM64: Implement pci_remap_cfgspace() interface · f1e209b7
    Lorenzo Pieralisi authored
    The PCI bus specification (rev 3.0, 3.2.5 "Transaction Ordering and
    Posting") defines rules for PCI configuration space transactions ordering
    and posting, that state that configuration writes are non-posted
    transactions.
    
    This rule is reinforced by the ARM v8 architecture reference manual (issue
    A.k, Early Write Acknowledgment) that explicitly recommends that No Early
    Write Acknowledgment attribute should be used to map PCI configuration
    (write) transactions.
    
    Current ioremap interface on ARM64 implements mapping functions where the
    Early Write Acknowledgment hint is enabled, so they cannot be used to map
    PCI configuration space in a PCI specs compliant way.
    
    Implement an ARM64 specific pci_remap_cfgspace() interface that allows to
    map PCI config region with nGnRnE attributes, providing a remap function
    that complies with PCI specifications and the ARMv8 architecture reference
    manual recommendations.
    Signed-off-by: default avatarLorenzo Pieralisi <lorenzo.pieralisi@arm.com>
    Signed-off-by: default avatarBjorn Helgaas <bhelgaas@google.com>
    Acked-by: default avatarCatalin Marinas <catalin.marinas@arm.com>
    Cc: Will Deacon <will.deacon@arm.com>
    f1e209b7
io.h 7.26 KB