On Mon, Oct 30, 2023 at 04:23:20PM -0700, Bjorn Andersson wrote: > During USB transfers on the SC8280XP __arm_smmu_tlb_sync() is seen to > typically take 1-2ms to complete. As expected this results in poor > performance, something that has been mitigated by proposing running the > iommu in non-strict mode (boot with iommu.strict=0). > > This turns out to be related to the SAFE logic, and programming the QOS > SAFE values in the DPU (per suggestion from Rob and Doug) reduces the > TLB sync time to below 10us, which means significant less time spent > with interrupts disabled and a significant boost in throughput. > > Fixes: 4a352c2fc15a ("drm/msm/dpu: Introduce SC8280XP") > Cc: stable@xxxxxxxxxxxxxxx > Suggested-by: Doug Anderson <dianders@xxxxxxxxxxxx> > Suggested-by: Rob Clark <robdclark@xxxxxxxxxxxx> > Signed-off-by: Bjorn Andersson <quic_bjorande@xxxxxxxxxxx> > --- > drivers/gpu/drm/msm/disp/dpu1/catalog/dpu_8_0_sc8280xp.h | 1 + > 1 file changed, 1 insertion(+) > > diff --git a/drivers/gpu/drm/msm/disp/dpu1/catalog/dpu_8_0_sc8280xp.h b/drivers/gpu/drm/msm/disp/dpu1/catalog/dpu_8_0_sc8280xp.h > index 1ccd1edd693c..4c0528794e7a 100644 > --- a/drivers/gpu/drm/msm/disp/dpu1/catalog/dpu_8_0_sc8280xp.h > +++ b/drivers/gpu/drm/msm/disp/dpu1/catalog/dpu_8_0_sc8280xp.h > @@ -406,6 +406,7 @@ static const struct dpu_perf_cfg sc8280xp_perf_data = { > .min_llcc_ib = 0, > .min_dram_ib = 800000, > .danger_lut_tbl = {0xf, 0xffff, 0x0}, > + .safe_lut_tbl = {0xfe00, 0xfe00, 0xffff}, What does these values represent? And how SAFE is to override the default QoS values? I'm not too familiar with the MSM DRM driver, so please excuse my ignorance. - Mani > .qos_lut_tbl = { > {.nentry = ARRAY_SIZE(sc8180x_qos_linear), > .entries = sc8180x_qos_linear > > --- > base-commit: c503e3eec382ac708ee7adf874add37b77c5d312 > change-id: 20231030-sc8280xp-dpu-safe-lut-9769027b8452 > > Best regards, > -- > Bjorn Andersson <quic_bjorande@xxxxxxxxxxx> > -- மணிவண்ணன் சதாசிவம்