• Lorenzo Pieralisi's avatar
    PCI: ECAM: Map config region with pci_remap_cfgspace() · 053497ce
    Lorenzo Pieralisi authored
    The current ECAM kernel implementation uses ioremap() to map the ECAM
    configuration space memory region; this is not safe in that on some
    architectures the ioremap interface provides mappings that allow posted
    write transactions. This, as highlighted in the PCIe specifications (4.0 -
    Rev0.3, "Ordering Considerations for the Enhanced Configuration Address
    Mechanism"), can create ordering issues for software because posted writes
    transactions on the CPU host bus are non posted in the PCI express fabric.
    Update the ioremap() interface to use pci_remap_cfgspace() whose mapping
    attributes guarantee that non-posted writes transactions are issued for
    memory writes within the ECAM memory mapped address region.
    Signed-off-by: default avatarLorenzo Pieralisi <lorenzo.pieralisi@arm.com>
    Signed-off-by: default avatarBjorn Helgaas <bhelgaas@google.com>
    Cc: Jayachandran C <jnair@caviumnetworks.com>
ecam.c 4.53 KB