lkml.org 
[lkml]   [2019]   [Aug]   [23]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    /
    From
    Subject[PATCH v4 0/3] Qcom smmu-500 wait-for-safe handling for sdm845
    Date
    Previous version of the patches are at [1]:

    Qcom's implementation of smmu-500 on sdm845 adds a hardware logic called
    wait-for-safe. This logic helps in meeting the invalidation requirements
    from 'real-time clients', such as display and camera. This wait-for-safe
    logic ensures that the invalidations happen after getting an ack from these
    devices.
    In this patch-series we are disabling this wait-for-safe logic from the
    arm-smmu driver's probe as with this enabled the hardware tries to
    throttle invalidations from 'non-real-time clients', such as USB and UFS.

    For detailed information please refer to patch [3/4] in this series.
    I have included the device tree patch too in this series for someone who
    would like to test out this. Here's a branch [2] that gets display on MTP
    SDM845 device.

    This patch series is inspired from downstream work to handle under-performance
    issues on real-time clients on sdm845. In downstream we add separate page table
    ops to handle TLB maintenance and toggle wait-for-safe in tlb_sync call so that
    achieve required performance for display and camera [3, 4].

    Changes since v3:
    * Based on arm-smmu implementation cleanup series [5] by Robin Murphy which is
    already merged in Will's tree [6].
    * Implemented the sdm845 specific reset hook which does arm_smmu_device_reset()
    followed by making SCM call to disable the wait-for-safe logic.
    * Removed depedency for SCM call on any dt flag. We invariably try to disable
    the wait-for-safe logic on sdm845. The platforms such as mtp845, and db845
    that implement handlers for this particular SCM call should be able disable
    wait-for-safe logic.
    Other platforms such as cheza don't enable the wait-for-safe logic at all
    from their bootloaders. So there's no need to disable the same.
    * No change in SCM call patches 1 & 2.

    Changes since v2:
    * Dropped the patch to add atomic io_read/write scm API.
    * Removed support for any separate page table ops to handle wait-for-safe.
    Currently just disabling this wait-for-safe logic from arm_smmu_device_probe()
    to achieve performance on USB/UFS on sdm845.
    * Added a device tree patch to add smmu option for fw-implemented support
    for SCM call to take care of SAFE toggling.

    Changes since v1:
    * Addressed Will and Robin's comments:
    - Dropped the patch[4] that forked out __arm_smmu_tlb_inv_range_nosync(),
    and __arm_smmu_tlb_sync().
    - Cleaned up the errata patch further to use downstream polling mechanism
    for tlb sync.
    * No change in SCM call patches - patches 1 to 3.

    [1] https://lore.kernel.org/patchwork/cover/1087453/
    [2] https://github.com/vivekgautam1/linux/tree/v5.2-rc4/sdm845-display-working
    [3] https://source.codeaurora.org/quic/la/kernel/msm-4.9/commit/drivers/iommu/arm-smmu.c?h=CogSystems-msm-49/msm-4.9&id=da765c6c75266b38191b38ef086274943f353ea7
    [4] https://source.codeaurora.org/quic/la/kernel/msm-4.9/commit/drivers/iommu/arm-smmu.c?h=CogSystems-msm-49/msm-4.9&id=8696005aaaf745de68f57793c1a534a34345c30a
    [5] https://patchwork.kernel.org/patch/11096265/
    [6] https://git.kernel.org/pub/scm/linux/kernel/git/will/linux.git/

    Vivek Gautam (3):
    firmware: qcom_scm-64: Add atomic version of qcom_scm_call
    firmware/qcom_scm: Add scm call to handle smmu errata
    iommu: arm-smmu-impl: Add sdm845 implementation hook

    drivers/firmware/qcom_scm-32.c | 5 ++
    drivers/firmware/qcom_scm-64.c | 149 +++++++++++++++++++++++++++++------------
    drivers/firmware/qcom_scm.c | 6 ++
    drivers/firmware/qcom_scm.h | 5 ++
    drivers/iommu/arm-smmu-impl.c | 27 +++++++-
    include/linux/qcom_scm.h | 2 +
    6 files changed, 149 insertions(+), 45 deletions(-)

    --
    QUALCOMM INDIA, on behalf of Qualcomm Innovation Center, Inc. is a member
    of Code Aurora Forum, hosted by The Linux Foundation

    \
     
     \ /
      Last update: 2019-08-23 08:33    [W:6.138 / U:0.008 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site