* [PATCH v2 0/2] Clean up barriers
@ 2024-06-25 18:54 Konrad Dybcio
2024-06-25 18:54 ` [PATCH v2 1/2] drm/msm/adreno: De-spaghettify the use of memory barriers Konrad Dybcio
` (2 more replies)
0 siblings, 3 replies; 9+ messages in thread
From: Konrad Dybcio @ 2024-06-25 18:54 UTC (permalink / raw)
To: Rob Clark, Sean Paul, Abhinav Kumar, Dmitry Baryshkov,
David Airlie, Daniel Vetter
Cc: Marijn Suijten, linux-arm-msm, dri-devel, freedreno, linux-kernel,
Akhil P Oommen, Konrad Dybcio
Changes in v3:
- Drop the wrapper functions
- Drop the readback in GMU code
- Split the commit in two
Link to v2: https://lore.kernel.org/linux-arm-msm/20240509-topic-adreno-v2-1-b82a9f99b345@linaro.org/
Changes in v2:
- Introduce gpu_write_flush() and use it
- Don't accidentally break a630 by trying to write to non-existent GBIF
Link to v1: https://lore.kernel.org/linux-arm-msm/20240508-topic-adreno-v1-1-1babd05c119d@linaro.org/
Signed-off-by: Konrad Dybcio <konrad.dybcio@linaro.org>
---
Konrad Dybcio (2):
drm/msm/adreno: De-spaghettify the use of memory barriers
Revert "drm/msm/a6xx: Poll for GBIF unhalt status in hw_init"
drivers/gpu/drm/msm/adreno/a6xx_gmu.c | 4 +---
drivers/gpu/drm/msm/adreno/a6xx_gpu.c | 14 ++++++--------
2 files changed, 7 insertions(+), 11 deletions(-)
---
base-commit: 0fc4bfab2cd45f9acb86c4f04b5191e114e901ed
change-id: 20240625-adreno_barriers-29f356742418
Best regards,
--
Konrad Dybcio <konrad.dybcio@linaro.org>
^ permalink raw reply [flat|nested] 9+ messages in thread* [PATCH v2 1/2] drm/msm/adreno: De-spaghettify the use of memory barriers 2024-06-25 18:54 [PATCH v2 0/2] Clean up barriers Konrad Dybcio @ 2024-06-25 18:54 ` Konrad Dybcio 2024-06-26 7:59 ` Daniel Vetter 2024-06-25 18:54 ` [PATCH v2 2/2] Revert "drm/msm/a6xx: Poll for GBIF unhalt status in hw_init" Konrad Dybcio 2024-06-25 20:27 ` [PATCH v2 0/2] Clean up barriers Akhil P Oommen 2 siblings, 1 reply; 9+ messages in thread From: Konrad Dybcio @ 2024-06-25 18:54 UTC (permalink / raw) To: Rob Clark, Sean Paul, Abhinav Kumar, Dmitry Baryshkov, David Airlie, Daniel Vetter Cc: Marijn Suijten, linux-arm-msm, dri-devel, freedreno, linux-kernel, Akhil P Oommen, Konrad Dybcio Memory barriers help ensure instruction ordering, NOT time and order of actual write arrival at other observers (e.g. memory-mapped IP). On architectures employing weak memory ordering, the latter can be a giant pain point, and it has been as part of this driver. Moreover, the gpu_/gmu_ accessors already use non-relaxed versions of readl/writel, which include r/w (respectively) barriers. Replace the barriers with a readback (or drop altogether where possible) that ensures the previous writes have exited the write buffer (as the CPU must flush the write to the register it's trying to read back). Signed-off-by: Konrad Dybcio <konrad.dybcio@linaro.org> --- drivers/gpu/drm/msm/adreno/a6xx_gmu.c | 4 +--- drivers/gpu/drm/msm/adreno/a6xx_gpu.c | 10 ++++++---- 2 files changed, 7 insertions(+), 7 deletions(-) diff --git a/drivers/gpu/drm/msm/adreno/a6xx_gmu.c b/drivers/gpu/drm/msm/adreno/a6xx_gmu.c index 0e3dfd4c2bc8..09d640165b18 100644 --- a/drivers/gpu/drm/msm/adreno/a6xx_gmu.c +++ b/drivers/gpu/drm/msm/adreno/a6xx_gmu.c @@ -466,9 +466,7 @@ static int a6xx_rpmh_start(struct a6xx_gmu *gmu) int ret; u32 val; - gmu_write(gmu, REG_A6XX_GMU_RSCC_CONTROL_REQ, 1 << 1); - /* Wait for the register to finish posting */ - wmb(); + gmu_write(gmu, REG_A6XX_GMU_RSCC_CONTROL_REQ, BIT(1)); ret = gmu_poll_timeout(gmu, REG_A6XX_GMU_RSCC_CONTROL_ACK, val, val & (1 << 1), 100, 10000); diff --git a/drivers/gpu/drm/msm/adreno/a6xx_gpu.c b/drivers/gpu/drm/msm/adreno/a6xx_gpu.c index c98cdb1e9326..4083d0cad782 100644 --- a/drivers/gpu/drm/msm/adreno/a6xx_gpu.c +++ b/drivers/gpu/drm/msm/adreno/a6xx_gpu.c @@ -855,14 +855,16 @@ static int hw_init(struct msm_gpu *gpu) /* Clear GBIF halt in case GX domain was not collapsed */ if (adreno_is_a619_holi(adreno_gpu)) { gpu_write(gpu, REG_A6XX_GBIF_HALT, 0); + gpu_read(gpu, REG_A6XX_GBIF_HALT); + gpu_write(gpu, REG_A6XX_RBBM_GPR0_CNTL, 0); - /* Let's make extra sure that the GPU can access the memory.. */ - mb(); + gpu_read(gpu, REG_A6XX_RBBM_GPR0_CNTL); } else if (a6xx_has_gbif(adreno_gpu)) { gpu_write(gpu, REG_A6XX_GBIF_HALT, 0); + gpu_read(gpu, REG_A6XX_GBIF_HALT); + gpu_write(gpu, REG_A6XX_RBBM_GBIF_HALT, 0); - /* Let's make extra sure that the GPU can access the memory.. */ - mb(); + gpu_read(gpu, REG_A6XX_RBBM_GBIF_HALT); } /* Some GPUs are stubborn and take their sweet time to unhalt GBIF! */ -- 2.45.2 ^ permalink raw reply related [flat|nested] 9+ messages in thread
* Re: [PATCH v2 1/2] drm/msm/adreno: De-spaghettify the use of memory barriers 2024-06-25 18:54 ` [PATCH v2 1/2] drm/msm/adreno: De-spaghettify the use of memory barriers Konrad Dybcio @ 2024-06-26 7:59 ` Daniel Vetter 2024-06-26 21:24 ` Akhil P Oommen 0 siblings, 1 reply; 9+ messages in thread From: Daniel Vetter @ 2024-06-26 7:59 UTC (permalink / raw) To: Konrad Dybcio Cc: Rob Clark, Sean Paul, Abhinav Kumar, Dmitry Baryshkov, David Airlie, Daniel Vetter, Marijn Suijten, linux-arm-msm, dri-devel, freedreno, linux-kernel, Akhil P Oommen On Tue, Jun 25, 2024 at 08:54:41PM +0200, Konrad Dybcio wrote: > Memory barriers help ensure instruction ordering, NOT time and order > of actual write arrival at other observers (e.g. memory-mapped IP). > On architectures employing weak memory ordering, the latter can be a > giant pain point, and it has been as part of this driver. > > Moreover, the gpu_/gmu_ accessors already use non-relaxed versions of > readl/writel, which include r/w (respectively) barriers. > > Replace the barriers with a readback (or drop altogether where possible) > that ensures the previous writes have exited the write buffer (as the CPU > must flush the write to the register it's trying to read back). > > Signed-off-by: Konrad Dybcio <konrad.dybcio@linaro.org> Some in pci these readbacks are actually part of the spec and called posting reads. I'd very much recommend drivers create a small wrapper function for these cases with a void return value, because it makes the code so much more legible and easier to understand. -Sima > --- > drivers/gpu/drm/msm/adreno/a6xx_gmu.c | 4 +--- > drivers/gpu/drm/msm/adreno/a6xx_gpu.c | 10 ++++++---- > 2 files changed, 7 insertions(+), 7 deletions(-) > > diff --git a/drivers/gpu/drm/msm/adreno/a6xx_gmu.c b/drivers/gpu/drm/msm/adreno/a6xx_gmu.c > index 0e3dfd4c2bc8..09d640165b18 100644 > --- a/drivers/gpu/drm/msm/adreno/a6xx_gmu.c > +++ b/drivers/gpu/drm/msm/adreno/a6xx_gmu.c > @@ -466,9 +466,7 @@ static int a6xx_rpmh_start(struct a6xx_gmu *gmu) > int ret; > u32 val; > > - gmu_write(gmu, REG_A6XX_GMU_RSCC_CONTROL_REQ, 1 << 1); > - /* Wait for the register to finish posting */ > - wmb(); > + gmu_write(gmu, REG_A6XX_GMU_RSCC_CONTROL_REQ, BIT(1)); > > ret = gmu_poll_timeout(gmu, REG_A6XX_GMU_RSCC_CONTROL_ACK, val, > val & (1 << 1), 100, 10000); > diff --git a/drivers/gpu/drm/msm/adreno/a6xx_gpu.c b/drivers/gpu/drm/msm/adreno/a6xx_gpu.c > index c98cdb1e9326..4083d0cad782 100644 > --- a/drivers/gpu/drm/msm/adreno/a6xx_gpu.c > +++ b/drivers/gpu/drm/msm/adreno/a6xx_gpu.c > @@ -855,14 +855,16 @@ static int hw_init(struct msm_gpu *gpu) > /* Clear GBIF halt in case GX domain was not collapsed */ > if (adreno_is_a619_holi(adreno_gpu)) { > gpu_write(gpu, REG_A6XX_GBIF_HALT, 0); > + gpu_read(gpu, REG_A6XX_GBIF_HALT); > + > gpu_write(gpu, REG_A6XX_RBBM_GPR0_CNTL, 0); > - /* Let's make extra sure that the GPU can access the memory.. */ > - mb(); > + gpu_read(gpu, REG_A6XX_RBBM_GPR0_CNTL); > } else if (a6xx_has_gbif(adreno_gpu)) { > gpu_write(gpu, REG_A6XX_GBIF_HALT, 0); > + gpu_read(gpu, REG_A6XX_GBIF_HALT); > + > gpu_write(gpu, REG_A6XX_RBBM_GBIF_HALT, 0); > - /* Let's make extra sure that the GPU can access the memory.. */ > - mb(); > + gpu_read(gpu, REG_A6XX_RBBM_GBIF_HALT); > } > > /* Some GPUs are stubborn and take their sweet time to unhalt GBIF! */ > > -- > 2.45.2 > -- Daniel Vetter Software Engineer, Intel Corporation http://blog.ffwll.ch ^ permalink raw reply [flat|nested] 9+ messages in thread
* Re: [PATCH v2 1/2] drm/msm/adreno: De-spaghettify the use of memory barriers 2024-06-26 7:59 ` Daniel Vetter @ 2024-06-26 21:24 ` Akhil P Oommen 2024-06-27 7:56 ` Daniel Vetter 0 siblings, 1 reply; 9+ messages in thread From: Akhil P Oommen @ 2024-06-26 21:24 UTC (permalink / raw) To: Daniel Vetter Cc: Konrad Dybcio, Rob Clark, Sean Paul, Abhinav Kumar, Dmitry Baryshkov, David Airlie, Marijn Suijten, linux-arm-msm, dri-devel, freedreno, linux-kernel On Wed, Jun 26, 2024 at 09:59:39AM +0200, Daniel Vetter wrote: > On Tue, Jun 25, 2024 at 08:54:41PM +0200, Konrad Dybcio wrote: > > Memory barriers help ensure instruction ordering, NOT time and order > > of actual write arrival at other observers (e.g. memory-mapped IP). > > On architectures employing weak memory ordering, the latter can be a > > giant pain point, and it has been as part of this driver. > > > > Moreover, the gpu_/gmu_ accessors already use non-relaxed versions of > > readl/writel, which include r/w (respectively) barriers. > > > > Replace the barriers with a readback (or drop altogether where possible) > > that ensures the previous writes have exited the write buffer (as the CPU > > must flush the write to the register it's trying to read back). > > > > Signed-off-by: Konrad Dybcio <konrad.dybcio@linaro.org> > > Some in pci these readbacks are actually part of the spec and called > posting reads. I'd very much recommend drivers create a small wrapper > function for these cases with a void return value, because it makes the > code so much more legible and easier to understand. For Adreno which is configured via mmio, we don't need to do this often. GBIF_HALT is a scenario where we need to be extra careful as it can potentially cause some internal lockup. Another scenario I can think of is GPU soft reset where need to keep a delay on cpu side after triggering. We should closely scrutinize any other instance that comes up. So I feel a good justification as a comment here would be enough, to remind the reader. Think of it as a way to discourage the use by making it hard. This is a bit subjective, I am fine if you have a strong opinion on this. -Akhil. > -Sima > > > --- > > drivers/gpu/drm/msm/adreno/a6xx_gmu.c | 4 +--- > > drivers/gpu/drm/msm/adreno/a6xx_gpu.c | 10 ++++++---- > > 2 files changed, 7 insertions(+), 7 deletions(-) > > > > diff --git a/drivers/gpu/drm/msm/adreno/a6xx_gmu.c b/drivers/gpu/drm/msm/adreno/a6xx_gmu.c > > index 0e3dfd4c2bc8..09d640165b18 100644 > > --- a/drivers/gpu/drm/msm/adreno/a6xx_gmu.c > > +++ b/drivers/gpu/drm/msm/adreno/a6xx_gmu.c > > @@ -466,9 +466,7 @@ static int a6xx_rpmh_start(struct a6xx_gmu *gmu) > > int ret; > > u32 val; > > > > - gmu_write(gmu, REG_A6XX_GMU_RSCC_CONTROL_REQ, 1 << 1); > > - /* Wait for the register to finish posting */ > > - wmb(); > > + gmu_write(gmu, REG_A6XX_GMU_RSCC_CONTROL_REQ, BIT(1)); > > > > ret = gmu_poll_timeout(gmu, REG_A6XX_GMU_RSCC_CONTROL_ACK, val, > > val & (1 << 1), 100, 10000); > > diff --git a/drivers/gpu/drm/msm/adreno/a6xx_gpu.c b/drivers/gpu/drm/msm/adreno/a6xx_gpu.c > > index c98cdb1e9326..4083d0cad782 100644 > > --- a/drivers/gpu/drm/msm/adreno/a6xx_gpu.c > > +++ b/drivers/gpu/drm/msm/adreno/a6xx_gpu.c > > @@ -855,14 +855,16 @@ static int hw_init(struct msm_gpu *gpu) > > /* Clear GBIF halt in case GX domain was not collapsed */ > > if (adreno_is_a619_holi(adreno_gpu)) { > > gpu_write(gpu, REG_A6XX_GBIF_HALT, 0); > > + gpu_read(gpu, REG_A6XX_GBIF_HALT); > > + > > gpu_write(gpu, REG_A6XX_RBBM_GPR0_CNTL, 0); > > - /* Let's make extra sure that the GPU can access the memory.. */ > > - mb(); > > + gpu_read(gpu, REG_A6XX_RBBM_GPR0_CNTL); > > } else if (a6xx_has_gbif(adreno_gpu)) { > > gpu_write(gpu, REG_A6XX_GBIF_HALT, 0); > > + gpu_read(gpu, REG_A6XX_GBIF_HALT); > > + > > gpu_write(gpu, REG_A6XX_RBBM_GBIF_HALT, 0); > > - /* Let's make extra sure that the GPU can access the memory.. */ > > - mb(); > > + gpu_read(gpu, REG_A6XX_RBBM_GBIF_HALT); > > } > > > > /* Some GPUs are stubborn and take their sweet time to unhalt GBIF! */ > > > > -- > > 2.45.2 > > > > -- > Daniel Vetter > Software Engineer, Intel Corporation > http://blog.ffwll.ch ^ permalink raw reply [flat|nested] 9+ messages in thread
* Re: [PATCH v2 1/2] drm/msm/adreno: De-spaghettify the use of memory barriers 2024-06-26 21:24 ` Akhil P Oommen @ 2024-06-27 7:56 ` Daniel Vetter 0 siblings, 0 replies; 9+ messages in thread From: Daniel Vetter @ 2024-06-27 7:56 UTC (permalink / raw) To: Akhil P Oommen Cc: Daniel Vetter, Konrad Dybcio, Rob Clark, Sean Paul, Abhinav Kumar, Dmitry Baryshkov, David Airlie, Marijn Suijten, linux-arm-msm, dri-devel, freedreno, linux-kernel On Thu, Jun 27, 2024 at 02:54:57AM +0530, Akhil P Oommen wrote: > On Wed, Jun 26, 2024 at 09:59:39AM +0200, Daniel Vetter wrote: > > On Tue, Jun 25, 2024 at 08:54:41PM +0200, Konrad Dybcio wrote: > > > Memory barriers help ensure instruction ordering, NOT time and order > > > of actual write arrival at other observers (e.g. memory-mapped IP). > > > On architectures employing weak memory ordering, the latter can be a > > > giant pain point, and it has been as part of this driver. > > > > > > Moreover, the gpu_/gmu_ accessors already use non-relaxed versions of > > > readl/writel, which include r/w (respectively) barriers. > > > > > > Replace the barriers with a readback (or drop altogether where possible) > > > that ensures the previous writes have exited the write buffer (as the CPU > > > must flush the write to the register it's trying to read back). > > > > > > Signed-off-by: Konrad Dybcio <konrad.dybcio@linaro.org> > > > > Some in pci these readbacks are actually part of the spec and called > > posting reads. I'd very much recommend drivers create a small wrapper > > function for these cases with a void return value, because it makes the > > code so much more legible and easier to understand. > > For Adreno which is configured via mmio, we don't need to do this often. GBIF_HALT > is a scenario where we need to be extra careful as it can potentially cause some > internal lockup. Another scenario I can think of is GPU soft reset where need to > keep a delay on cpu side after triggering. We should closely scrutinize any > other instance that comes up. So I feel a good justification as a comment here > would be enough, to remind the reader. Think of it as a way to discourage the > use by making it hard. > > This is a bit subjective, I am fine if you have a strong opinion on this. Eh it's up to you, but "we don't do this often" is a reason to make them stand out even more. Similar reasons why cpu memory barriers must all have a comment, to explain what they're synchronizing against. Up to you if you just want a comment rule or make them stand out even more with an explicit name (and still have the comment rule) that's different from normal reads. Again comparing to cpu barriers, the nice thing is that they're (in most cases at least, unless you do really scary stuff) very easy to spot in the code and the ring alarm bells when doing reviews. -Sima -- Daniel Vetter Software Engineer, Intel Corporation http://blog.ffwll.ch ^ permalink raw reply [flat|nested] 9+ messages in thread
* [PATCH v2 2/2] Revert "drm/msm/a6xx: Poll for GBIF unhalt status in hw_init" 2024-06-25 18:54 [PATCH v2 0/2] Clean up barriers Konrad Dybcio 2024-06-25 18:54 ` [PATCH v2 1/2] drm/msm/adreno: De-spaghettify the use of memory barriers Konrad Dybcio @ 2024-06-25 18:54 ` Konrad Dybcio 2024-06-25 20:18 ` Dmitry Baryshkov 2024-06-25 20:27 ` [PATCH v2 0/2] Clean up barriers Akhil P Oommen 2 siblings, 1 reply; 9+ messages in thread From: Konrad Dybcio @ 2024-06-25 18:54 UTC (permalink / raw) To: Rob Clark, Sean Paul, Abhinav Kumar, Dmitry Baryshkov, David Airlie, Daniel Vetter Cc: Marijn Suijten, linux-arm-msm, dri-devel, freedreno, linux-kernel, Akhil P Oommen, Konrad Dybcio Commit c9707bcbd0f3 ("drm/msm/adreno: De-spaghettify the use of memory barriers") made some fixups relating to write arrival, ensuring that the GPU's memory interface has *really really really* been told to come out of reset. That in turn rendered the hacky commit being reverted no longer necessary. Get rid of it. This reverts commit b77532803d11f2b03efab2ebfd8c0061cd7f8b30. Signed-off-by: Konrad Dybcio <konrad.dybcio@linaro.org> --- drivers/gpu/drm/msm/adreno/a6xx_gpu.c | 4 ---- 1 file changed, 4 deletions(-) diff --git a/drivers/gpu/drm/msm/adreno/a6xx_gpu.c b/drivers/gpu/drm/msm/adreno/a6xx_gpu.c index 4083d0cad782..03e23eef5126 100644 --- a/drivers/gpu/drm/msm/adreno/a6xx_gpu.c +++ b/drivers/gpu/drm/msm/adreno/a6xx_gpu.c @@ -867,10 +867,6 @@ static int hw_init(struct msm_gpu *gpu) gpu_read(gpu, REG_A6XX_RBBM_GBIF_HALT); } - /* Some GPUs are stubborn and take their sweet time to unhalt GBIF! */ - if (adreno_is_a7xx(adreno_gpu) && a6xx_has_gbif(adreno_gpu)) - spin_until(!gpu_read(gpu, REG_A6XX_GBIF_HALT_ACK)); - gpu_write(gpu, REG_A6XX_RBBM_SECVID_TSB_CNTL, 0); if (adreno_is_a619_holi(adreno_gpu)) -- 2.45.2 ^ permalink raw reply related [flat|nested] 9+ messages in thread
* Re: [PATCH v2 2/2] Revert "drm/msm/a6xx: Poll for GBIF unhalt status in hw_init" 2024-06-25 18:54 ` [PATCH v2 2/2] Revert "drm/msm/a6xx: Poll for GBIF unhalt status in hw_init" Konrad Dybcio @ 2024-06-25 20:18 ` Dmitry Baryshkov 2024-06-25 21:22 ` Rob Clark 0 siblings, 1 reply; 9+ messages in thread From: Dmitry Baryshkov @ 2024-06-25 20:18 UTC (permalink / raw) To: Konrad Dybcio Cc: Rob Clark, Sean Paul, Abhinav Kumar, David Airlie, Daniel Vetter, Marijn Suijten, linux-arm-msm, dri-devel, freedreno, linux-kernel, Akhil P Oommen On Tue, 25 Jun 2024 at 21:54, Konrad Dybcio <konrad.dybcio@linaro.org> wrote: > > Commit c9707bcbd0f3 ("drm/msm/adreno: De-spaghettify the use of memory ID is not present in next > barriers") made some fixups relating to write arrival, ensuring that > the GPU's memory interface has *really really really* been told to come > out of reset. That in turn rendered the hacky commit being reverted no > longer necessary. > > Get rid of it. > > This reverts commit b77532803d11f2b03efab2ebfd8c0061cd7f8b30. b77532803d11 ("drm/msm/a6xx: Poll for GBIF unhalt status in hw_init") > > Signed-off-by: Konrad Dybcio <konrad.dybcio@linaro.org> > --- > drivers/gpu/drm/msm/adreno/a6xx_gpu.c | 4 ---- > 1 file changed, 4 deletions(-) > > diff --git a/drivers/gpu/drm/msm/adreno/a6xx_gpu.c b/drivers/gpu/drm/msm/adreno/a6xx_gpu.c > index 4083d0cad782..03e23eef5126 100644 > --- a/drivers/gpu/drm/msm/adreno/a6xx_gpu.c > +++ b/drivers/gpu/drm/msm/adreno/a6xx_gpu.c > @@ -867,10 +867,6 @@ static int hw_init(struct msm_gpu *gpu) > gpu_read(gpu, REG_A6XX_RBBM_GBIF_HALT); > } > > - /* Some GPUs are stubborn and take their sweet time to unhalt GBIF! */ > - if (adreno_is_a7xx(adreno_gpu) && a6xx_has_gbif(adreno_gpu)) > - spin_until(!gpu_read(gpu, REG_A6XX_GBIF_HALT_ACK)); > - > gpu_write(gpu, REG_A6XX_RBBM_SECVID_TSB_CNTL, 0); > > if (adreno_is_a619_holi(adreno_gpu)) > > -- > 2.45.2 > -- With best wishes Dmitry ^ permalink raw reply [flat|nested] 9+ messages in thread
* Re: [PATCH v2 2/2] Revert "drm/msm/a6xx: Poll for GBIF unhalt status in hw_init" 2024-06-25 20:18 ` Dmitry Baryshkov @ 2024-06-25 21:22 ` Rob Clark 0 siblings, 0 replies; 9+ messages in thread From: Rob Clark @ 2024-06-25 21:22 UTC (permalink / raw) To: Dmitry Baryshkov Cc: Konrad Dybcio, Sean Paul, Abhinav Kumar, David Airlie, Daniel Vetter, Marijn Suijten, linux-arm-msm, dri-devel, freedreno, linux-kernel, Akhil P Oommen On Tue, Jun 25, 2024 at 1:18 PM Dmitry Baryshkov <dmitry.baryshkov@linaro.org> wrote: > > On Tue, 25 Jun 2024 at 21:54, Konrad Dybcio <konrad.dybcio@linaro.org> wrote: > > > > Commit c9707bcbd0f3 ("drm/msm/adreno: De-spaghettify the use of memory > > ID is not present in next it ofc wouldn't be, because it was the previous patch in this series ;-) I've fixed that up (and below) while applying the patch BR, -R > > barriers") made some fixups relating to write arrival, ensuring that > > the GPU's memory interface has *really really really* been told to come > > out of reset. That in turn rendered the hacky commit being reverted no > > longer necessary. > > > > Get rid of it. > > > > This reverts commit b77532803d11f2b03efab2ebfd8c0061cd7f8b30. > > b77532803d11 ("drm/msm/a6xx: Poll for GBIF unhalt status in hw_init") > > > > > Signed-off-by: Konrad Dybcio <konrad.dybcio@linaro.org> > > --- > > drivers/gpu/drm/msm/adreno/a6xx_gpu.c | 4 ---- > > 1 file changed, 4 deletions(-) > > > > diff --git a/drivers/gpu/drm/msm/adreno/a6xx_gpu.c b/drivers/gpu/drm/msm/adreno/a6xx_gpu.c > > index 4083d0cad782..03e23eef5126 100644 > > --- a/drivers/gpu/drm/msm/adreno/a6xx_gpu.c > > +++ b/drivers/gpu/drm/msm/adreno/a6xx_gpu.c > > @@ -867,10 +867,6 @@ static int hw_init(struct msm_gpu *gpu) > > gpu_read(gpu, REG_A6XX_RBBM_GBIF_HALT); > > } > > > > - /* Some GPUs are stubborn and take their sweet time to unhalt GBIF! */ > > - if (adreno_is_a7xx(adreno_gpu) && a6xx_has_gbif(adreno_gpu)) > > - spin_until(!gpu_read(gpu, REG_A6XX_GBIF_HALT_ACK)); > > - > > gpu_write(gpu, REG_A6XX_RBBM_SECVID_TSB_CNTL, 0); > > > > if (adreno_is_a619_holi(adreno_gpu)) > > > > -- > > 2.45.2 > > > > > -- > With best wishes > Dmitry ^ permalink raw reply [flat|nested] 9+ messages in thread
* Re: [PATCH v2 0/2] Clean up barriers 2024-06-25 18:54 [PATCH v2 0/2] Clean up barriers Konrad Dybcio 2024-06-25 18:54 ` [PATCH v2 1/2] drm/msm/adreno: De-spaghettify the use of memory barriers Konrad Dybcio 2024-06-25 18:54 ` [PATCH v2 2/2] Revert "drm/msm/a6xx: Poll for GBIF unhalt status in hw_init" Konrad Dybcio @ 2024-06-25 20:27 ` Akhil P Oommen 2 siblings, 0 replies; 9+ messages in thread From: Akhil P Oommen @ 2024-06-25 20:27 UTC (permalink / raw) To: Konrad Dybcio Cc: Rob Clark, Sean Paul, Abhinav Kumar, Dmitry Baryshkov, David Airlie, Daniel Vetter, Marijn Suijten, linux-arm-msm, dri-devel, freedreno, linux-kernel On Tue, Jun 25, 2024 at 08:54:40PM +0200, Konrad Dybcio wrote: > Changes in v3: > - Drop the wrapper functions > - Drop the readback in GMU code > - Split the commit in two > > Link to v2: https://lore.kernel.org/linux-arm-msm/20240509-topic-adreno-v2-1-b82a9f99b345@linaro.org/ > > Changes in v2: > - Introduce gpu_write_flush() and use it > - Don't accidentally break a630 by trying to write to non-existent GBIF > > Link to v1: https://lore.kernel.org/linux-arm-msm/20240508-topic-adreno-v1-1-1babd05c119d@linaro.org/ > > Signed-off-by: Konrad Dybcio <konrad.dybcio@linaro.org> > --- > Konrad Dybcio (2): > drm/msm/adreno: De-spaghettify the use of memory barriers > Revert "drm/msm/a6xx: Poll for GBIF unhalt status in hw_init" > > drivers/gpu/drm/msm/adreno/a6xx_gmu.c | 4 +--- > drivers/gpu/drm/msm/adreno/a6xx_gpu.c | 14 ++++++-------- > 2 files changed, 7 insertions(+), 11 deletions(-) > --- > base-commit: 0fc4bfab2cd45f9acb86c4f04b5191e114e901ed > change-id: 20240625-adreno_barriers-29f356742418 for the whole series: Reviewed-by: Akhil P Oommen <quic_akhilpo@quicinc.com> -Akhil > > Best regards, > -- > Konrad Dybcio <konrad.dybcio@linaro.org> > ^ permalink raw reply [flat|nested] 9+ messages in thread
end of thread, other threads:[~2024-06-27 7:56 UTC | newest] Thread overview: 9+ messages (download: mbox.gz follow: Atom feed -- links below jump to the message on this page -- 2024-06-25 18:54 [PATCH v2 0/2] Clean up barriers Konrad Dybcio 2024-06-25 18:54 ` [PATCH v2 1/2] drm/msm/adreno: De-spaghettify the use of memory barriers Konrad Dybcio 2024-06-26 7:59 ` Daniel Vetter 2024-06-26 21:24 ` Akhil P Oommen 2024-06-27 7:56 ` Daniel Vetter 2024-06-25 18:54 ` [PATCH v2 2/2] Revert "drm/msm/a6xx: Poll for GBIF unhalt status in hw_init" Konrad Dybcio 2024-06-25 20:18 ` Dmitry Baryshkov 2024-06-25 21:22 ` Rob Clark 2024-06-25 20:27 ` [PATCH v2 0/2] Clean up barriers Akhil P Oommen
This is a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox