lkml.org 
[lkml]   [2020]   [Aug]   [17]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    /
    Date
    From
    SubjectRe: [Freedreno] [PATCH 05/19] iommu: add private interface for adreno-smmu
    On Thu, Aug 13, 2020 at 07:41:00PM -0700, Rob Clark wrote:
    > From: Rob Clark <robdclark@chromium.org>
    >
    > This interface will be used for drm/msm to coordinate with the
    > qcom_adreno_smmu_impl to enable/disable TTBR0 translation.
    >
    > Once TTBR0 translation is enabled, the GPU's CP (Command Processor)
    > will directly switch TTBR0 pgtables (and do the necessary TLB inv)
    > synchronized to the GPU's operation. But help from the SMMU driver
    > is needed to initially bootstrap TTBR0 translation, which cannot be
    > done from the GPU.
    >
    > Since this is a very special case, a private interface is used to
    > avoid adding highly driver specific things to the public iommu
    > interface.
    >

    Reviewed-by: Jordan Crouse <jcrouse@codeaurora.org>

    > Signed-off-by: Rob Clark <robdclark@chromium.org>
    > ---
    > include/linux/adreno-smmu-priv.h | 36 ++++++++++++++++++++++++++++++++
    > 1 file changed, 36 insertions(+)
    > create mode 100644 include/linux/adreno-smmu-priv.h
    >
    > diff --git a/include/linux/adreno-smmu-priv.h b/include/linux/adreno-smmu-priv.h
    > new file mode 100644
    > index 000000000000..a889f28afb42
    > --- /dev/null
    > +++ b/include/linux/adreno-smmu-priv.h
    > @@ -0,0 +1,36 @@
    > +// SPDX-License-Identifier: GPL-2.0-only
    > +/*
    > + * Copyright (C) 2020 Google, Inc
    > + */
    > +
    > +#ifndef __ADRENO_SMMU_PRIV_H
    > +#define __ADRENO_SMMU_PRIV_H
    > +
    > +#include <linux/io-pgtable.h>
    > +
    > +/**
    > + * struct adreno_smmu_priv - private interface between adreno-smmu and GPU
    > + *
    > + * @cookie: An opque token provided by adreno-smmu and passed
    > + * back into the callbacks
    > + * @get_ttbr1_cfg: Get the TTBR1 config for the GPUs context-bank
    > + * @set_ttbr0_cfg: Set the TTBR0 config for the GPUs context bank. A
    > + * NULL config disables TTBR0 translation, otherwise
    > + * TTBR0 translation is enabled with the specified cfg
    > + *
    > + * The GPU driver (drm/msm) and adreno-smmu work together for controlling
    > + * the GPU's SMMU instance. This is by necessity, as the GPU is directly
    > + * updating the SMMU for context switches, while on the other hand we do
    > + * not want to duplicate all of the initial setup logic from arm-smmu.
    > + *
    > + * This private interface is used for the two drivers to coordinate. The
    > + * cookie and callback functions are populated when the GPU driver attaches
    > + * it's domain.
    > + */
    > +struct adreno_smmu_priv {
    > + const void *cookie;
    > + const struct io_pgtable_cfg *(*get_ttbr1_cfg)(const void *cookie);
    > + int (*set_ttbr0_cfg)(const void *cookie, const struct io_pgtable_cfg *cfg);
    > +};
    > +
    > +#endif /* __ADRENO_SMMU_PRIV_H */
    > \ No newline at end of file
    > --
    > 2.26.2
    >
    > _______________________________________________
    > Freedreno mailing list
    > Freedreno@lists.freedesktop.org
    > https://lists.freedesktop.org/mailman/listinfo/freedreno

    --
    The Qualcomm Innovation Center, Inc. is a member of Code Aurora Forum,
    a Linux Foundation Collaborative Project

    \
     
     \ /
      Last update: 2020-08-17 19:34    [W:3.133 / U:0.788 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site