• Ian Munsie's avatar
    powerpc/powernv: Add support for the cxl kernel api on the real phb · 4361b034
    Ian Munsie authored
    This adds support for the peer model of the cxl kernel api to the
    PowerNV PHB, in which physical function 0 represents the cxl function on
    the card (an XSL in the case of the CX4), which other physical functions
    will use for memory access and interrupt services. It is referred to as
    the peer model as these functions are peers of one another, as opposed
    to the Virtual PHB model which forms a hierarchy.
    
    This patch exports APIs to enable the peer mode, check if a PCI device
    is attached to a PHB in this mode, and to set and get the peer AFU for
    this mode.
    
    The cxl driver will enable this mode for supported cards by calling
    pnv_cxl_enable_phb_kernel_api(). This will set a flag in the PHB to note
    that this mode is enabled, and switch out it's controller_ops for the
    cxl version.
    
    The cxl version of the controller_ops struct implements it's own
    versions of the enable_device_hook and release_device to handle
    refcounting on the peer AFU and to allocate a default context for the
    device.
    
    Once enabled, the cxl kernel API may not be disabled on a PHB. Currently
    there is no safe way to disable cxl mode short of a reboot, so until
    that changes there is no reason to support the disable path.
    Signed-off-by: default avatarIan Munsie <imunsie@au1.ibm.com>
    Reviewed-by: default avatarAndrew Donnellan <andrew.donnellan@au1.ibm.com>
    Signed-off-by: default avatarMichael Ellerman <mpe@ellerman.id.au>
    4361b034
pci-ioda.c 99.6 KB