• A
    spapr_iommu: Add root memory region · b4b6eb77
    Alexey Kardashevskiy 提交于
    We are going to have multiple DMA windows at different offsets on
    a PCI bus. For the sake of migration, we will have as many TCE table
    objects pre-created as many windows supported.
    So we need a way to map windows dynamically onto a PCI bus
    when migration of a table is completed but at this stage a TCE table
    object does not have access to a PHB to ask it to map a DMA window
    backed by just migrated TCE table.
    
    This adds a "root" memory region (UINT64_MAX long) to the TCE object.
    This new region is mapped on a PCI bus with enabled overlapping as
    there will be one root MR per TCE table, each of them mapped at 0.
    The actual IOMMU memory region is a subregion of the root region and
    a TCE table enables/disables this subregion and maps it at
    the specific offset inside the root MR which is 1:1 mapping of
    a PCI address space.
    Signed-off-by: NAlexey Kardashevskiy <aik@ozlabs.ru>
    Reviewed-by: NDavid Gibson <david@gibson.dropbear.id.au>
    Reviewed-by: NThomas Huth <thuth@redhat.com>
    Signed-off-by: NDavid Gibson <david@gibson.dropbear.id.au>
    b4b6eb77
spapr.h 23.9 KB