Geert Uytterhoeven
22293c3373
dma-mapping: save base/size instead of pointer to shared DMA pool
On RZ/Five, which is non-coherent, and uses CONFIG_DMA_GLOBAL_POOL=y:
Oops - store (or AMO) access fault [#1]
CPU: 0 UID: 0 PID: 1 Comm: swapper Not tainted 6.12.0-rc1-00015-g8a6e02d0c00e #201
Hardware name: Renesas SMARC EVK based on r9a07g043f01 (DT)
epc : __memset+0x60/0x100
ra : __dma_alloc_from_coherent+0x150/0x17a
epc : ffffffff8062d2bc ra : ffffffff80053a94 sp : ffffffc60000ba20
gp : ffffffff812e9938 tp : ffffffd601920000 t0 : ffffffc6000d0000
t1 : 0000000000000000 t2 : ffffffffe9600000 s0 : ffffffc60000baa0
s1 : ffffffc6000d0000 a0 : ffffffc6000d0000 a1 : 0000000000000000
a2 : 0000000000001000 a3 : ffffffc6000d1000 a4 : 0000000000000000
a5 : 0000000000000000 a6 : ffffffd601adacc0 a7 : ffffffd601a841a8
s2 : ffffffd6018573c0 s3 : 0000000000001000 s4 : ffffffd6019541e0
s5 : 0000000200000022 s6 : ffffffd6018f8410 s7 : ffffffd6018573e8
s8 : 0000000000000001 s9 : 0000000000000001 s10: 0000000000000010
s11: 0000000000000000 t3 : 0000000000000000 t4 : ffffffffdefe62d1
t5 : 000000001cd6a3a9 t6 : ffffffd601b2aad6
status: 0000000200000120 badaddr: ffffffc6000d0000 cause: 0000000000000007
[<ffffffff8062d2bc>] __memset+0x60/0x100
[<ffffffff80053e1a>] dma_alloc_from_global_coherent+0x1c/0x28
[<ffffffff80053056>] dma_direct_alloc+0x98/0x112
[<ffffffff8005238c>] dma_alloc_attrs+0x78/0x86
[<ffffffff8035fdb4>] rz_dmac_probe+0x3f6/0x50a
[<ffffffff803a0694>] platform_probe+0x4c/0x8a
If CONFIG_DMA_GLOBAL_POOL=y, the reserved_mem structure passed to
rmem_dma_setup() is saved for later use, by saving the passed pointer.
However, when dma_init_reserved_memory() is called later, the pointer
has become stale, causing a crash.
E.g. in the RZ/Five case, the referenced memory now contains the
reserved_mem structure for the "mmode_resv0@30000" node (with base
0x30000 and size 0x10000), instead of the correct "pma_resv0@58000000"
node (with base 0x58000000 and size 0x8000000).
Fix this by saving the needed reserved_mem structure's contents instead.
Fixes: 8a6e02d0c0 ("of: reserved_mem: Restructure how the reserved memory regions are processed")
Signed-off-by: Geert Uytterhoeven <geert+renesas@glider.be>
Reviewed-by: Oreoluwa Babatunde <quic_obabatun@quicinc.com>
Tested-by: Lad Prabhakar <prabhakar.mahadev-lad.rj@bp.renesas.com>
Signed-off-by: Christoph Hellwig <hch@lst.de>
2024-11-14 10:45:09 +01:00
..
2024-10-24 10:17:12 -07:00
2024-09-23 09:35:36 -07:00
2024-09-01 20:34:38 +09:00
2024-10-02 17:23:23 -04:00
2024-11-14 10:45:09 +01:00
2024-07-29 07:33:10 +05:30
2024-10-14 09:14:35 +02:00
2024-09-01 20:43:33 -07:00
2024-06-15 10:43:06 -07:00
2024-09-23 12:47:06 -07:00
2024-08-01 16:40:44 -07:00
2024-07-02 16:56:18 +02:00
2024-09-29 08:51:30 -07:00
2024-09-28 09:06:15 -07:00
2024-09-27 08:18:43 -07:00
2024-09-19 10:18:15 +02:00
2024-10-17 09:58:07 +02:00
2024-10-17 09:58:07 +02:00
2024-10-24 16:43:50 -07:00
2024-10-27 08:56:22 -10:00
2024-04-24 09:43:53 +02:00
2024-02-09 11:13:59 -10:00
2024-04-04 16:24:16 +02:00
2024-04-04 16:24:16 +02:00
2024-09-03 16:35:16 -04:00
2024-08-28 16:48:28 -04:00
2024-08-28 16:48:28 -04:00
2024-06-24 22:24:55 -07:00
2024-04-29 08:29:29 -07:00
2024-08-15 21:30:43 +05:30
2024-09-17 07:25:37 +02:00
2024-09-01 20:43:37 -07:00
2024-09-01 20:43:30 -07:00
2024-02-23 17:33:31 -05:00
2024-07-24 20:59:29 +02:00
2024-02-23 17:48:22 -08:00
2024-09-21 07:29:05 -07:00
2024-09-29 21:52:29 -04:00
2024-10-14 09:14:35 +02:00
2024-05-30 01:13:20 +09:00
2024-07-24 20:59:29 +02:00
2024-09-10 11:57:27 +02:00
2024-07-20 16:33:21 +09:00
2024-08-15 09:33:35 -07:00
2024-08-15 09:33:35 -07:00
2024-02-23 17:48:22 -08:00
2024-08-01 07:08:01 -10:00
2024-09-17 12:40:34 +02:00
2024-07-24 20:59:29 +02:00
2024-09-01 17:59:01 -07:00
2024-09-01 20:43:23 -07:00
2024-04-23 14:59:01 +10:00
2024-08-05 14:04:03 +09:00
2024-07-29 10:45:54 -07:00
2024-10-09 12:47:19 -07:00
2024-07-24 20:59:29 +02:00
2024-09-03 21:15:26 -07:00
2024-08-12 22:00:43 -04:00
2024-09-16 06:28:28 +02:00
2024-09-19 10:18:15 +02:00
2024-07-24 20:59:29 +02:00
2024-07-24 20:59:29 +02:00
2024-08-12 22:00:43 -04:00
2024-08-04 13:36:28 -07:00
2024-02-22 15:38:52 -08:00
2024-04-24 09:43:53 +02:00
2024-04-25 21:07:03 -07:00
2024-09-27 08:18:43 -07:00
2024-10-09 12:47:19 -07:00
2024-09-21 07:29:05 -07:00
2024-05-30 15:31:51 -07:00
2024-07-24 20:59:29 +02:00
2024-09-26 11:39:02 -07:00
2024-08-15 00:06:48 +05:30
2024-08-20 17:13:40 +02:00
2024-07-24 20:59:29 +02:00
2023-12-29 12:22:29 -08:00
2024-09-06 16:29:22 +02:00
2024-08-15 21:30:42 +05:30
2024-07-18 12:19:20 -07:00
2024-09-23 09:35:36 -07:00
2024-06-03 15:20:37 +02:00
2024-07-24 20:59:29 +02:00
2024-10-11 10:49:32 +02:00
2024-08-12 22:00:43 -04:00
2024-05-30 15:31:38 -07:00
2024-09-25 23:23:44 +09:00
2024-07-12 16:39:53 -07:00
2024-05-17 17:31:24 -07:00
2024-07-24 20:59:29 +02:00
2024-09-09 16:47:42 -07:00
2024-09-12 12:16:09 +02:00
2024-07-24 20:59:29 +02:00
2024-05-22 08:31:15 -04:00
2024-09-03 21:15:43 -07:00
2024-08-12 22:00:43 -04:00
2024-07-17 21:11:34 -07:00
2024-09-01 20:43:32 -07:00
2024-09-18 06:59:44 +02:00