lkml.org 
[lkml]   [2008]   [Dec]   [9]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCH 07/21] AMD IOMMU: move invalidation command building to a separate function
    Date
    Impact: refactoring of iommu_queue_inv_iommu_pages

    Signed-off-by: Joerg Roedel <joerg.roedel@amd.com>
    ---
    arch/x86/kernel/amd_iommu.c | 26 ++++++++++++++++----------
    1 files changed, 16 insertions(+), 10 deletions(-)

    diff --git a/arch/x86/kernel/amd_iommu.c b/arch/x86/kernel/amd_iommu.c
    index db89001..80758cc 100644
    --- a/arch/x86/kernel/amd_iommu.c
    +++ b/arch/x86/kernel/amd_iommu.c
    @@ -285,6 +285,21 @@ static int iommu_queue_inv_dev_entry(struct amd_iommu *iommu, u16 devid)
    return ret;
    }

    +static void __iommu_build_inv_iommu_pages(struct iommu_cmd *cmd, u64 address,
    + u16 domid, int pde, int s)
    +{
    + memset(cmd, 0, sizeof(*cmd));
    + address &= PAGE_MASK;
    + CMD_SET_TYPE(cmd, CMD_INV_IOMMU_PAGES);
    + cmd->data[1] |= domid;
    + cmd->data[2] = lower_32_bits(address);
    + cmd->data[3] = upper_32_bits(address);
    + if (s) /* size bit - we flush more than one 4kb page */
    + cmd->data[2] |= CMD_INV_IOMMU_PAGES_SIZE_MASK;
    + if (pde) /* PDE bit - we wan't flush everything not only the PTEs */
    + cmd->data[2] |= CMD_INV_IOMMU_PAGES_PDE_MASK;
    +}
    +
    /*
    * Generic command send function for invalidaing TLB entries
    */
    @@ -294,16 +309,7 @@ static int iommu_queue_inv_iommu_pages(struct amd_iommu *iommu,
    struct iommu_cmd cmd;
    int ret;

    - memset(&cmd, 0, sizeof(cmd));
    - address &= PAGE_MASK;
    - CMD_SET_TYPE(&cmd, CMD_INV_IOMMU_PAGES);
    - cmd.data[1] |= domid;
    - cmd.data[2] = lower_32_bits(address);
    - cmd.data[3] = upper_32_bits(address);
    - if (s) /* size bit - we flush more than one 4kb page */
    - cmd.data[2] |= CMD_INV_IOMMU_PAGES_SIZE_MASK;
    - if (pde) /* PDE bit - we wan't flush everything not only the PTEs */
    - cmd.data[2] |= CMD_INV_IOMMU_PAGES_PDE_MASK;
    + __iommu_build_inv_iommu_pages(&cmd, address, domid, pde, s);

    ret = iommu_queue_command(iommu, &cmd);

    --
    1.5.6.4



    \
     
     \ /
      Last update: 2008-12-09 15:27    [W:0.024 / U:0.768 seconds]
    ©2003-2016 Jasper Spaans. hosted at Digital OceanAdvertise on this site