Commit 9f614197 authored by Rob Clark's avatar Rob Clark

drm/msm: Use the correct dma_sync calls harder

Looks like the dma_sync calls don't do what we want on armv7 either.
Fixes:

  Unable to handle kernel paging request at virtual address 50001000
  pgd = (ptrval)
  [50001000] *pgd=00000000
  Internal error: Oops: 805 [#1] SMP ARM
  Modules linked in:
  CPU: 0 PID: 1 Comm: swapper/0 Not tainted 5.3.0-rc6-00271-g9f159ae0 #4
  Hardware name: Freescale i.MX53 (Device Tree Support)
  PC is at v7_dma_clean_range+0x20/0x38
  LR is at __dma_page_cpu_to_dev+0x28/0x90
  pc : [<c011c76c>]    lr : [<c01181c4>]    psr: 20000013
  sp : d80b5a88  ip : de96c000  fp : d840ce6c
  r10: 00000000  r9 : 00000001  r8 : d843e010
  r7 : 00000000  r6 : 00008000  r5 : ddb6c000  r4 : 00000000
  r3 : 0000003f  r2 : 00000040  r1 : 50008000  r0 : 50001000
  Flags: nzCv  IRQs on  FIQs on  Mode SVC_32  ISA ARM  Segment none
  Control: 10c5387d  Table: 70004019  DAC: 00000051
  Process swapper/0 (pid: 1, stack limit = 0x(ptrval))
Signed-off-by: default avatarRob Clark <robdclark@chromium.org>
Fixes: 3de433c5 ("drm/msm: Use the correct dma_sync calls in msm_gem")
Tested-by: default avatarFabio Estevam <festevam@gmail.com>
parent c044e86f
...@@ -52,7 +52,7 @@ static void sync_for_device(struct msm_gem_object *msm_obj) ...@@ -52,7 +52,7 @@ static void sync_for_device(struct msm_gem_object *msm_obj)
{ {
struct device *dev = msm_obj->base.dev->dev; struct device *dev = msm_obj->base.dev->dev;
if (get_dma_ops(dev)) { if (get_dma_ops(dev) && IS_ENABLED(CONFIG_ARM64)) {
dma_sync_sg_for_device(dev, msm_obj->sgt->sgl, dma_sync_sg_for_device(dev, msm_obj->sgt->sgl,
msm_obj->sgt->nents, DMA_BIDIRECTIONAL); msm_obj->sgt->nents, DMA_BIDIRECTIONAL);
} else { } else {
...@@ -65,7 +65,7 @@ static void sync_for_cpu(struct msm_gem_object *msm_obj) ...@@ -65,7 +65,7 @@ static void sync_for_cpu(struct msm_gem_object *msm_obj)
{ {
struct device *dev = msm_obj->base.dev->dev; struct device *dev = msm_obj->base.dev->dev;
if (get_dma_ops(dev)) { if (get_dma_ops(dev) && IS_ENABLED(CONFIG_ARM64)) {
dma_sync_sg_for_cpu(dev, msm_obj->sgt->sgl, dma_sync_sg_for_cpu(dev, msm_obj->sgt->sgl,
msm_obj->sgt->nents, DMA_BIDIRECTIONAL); msm_obj->sgt->nents, DMA_BIDIRECTIONAL);
} else { } else {
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment