https://bugs.freedesktop.org/show_bug.cgi?id=83708
--- Comment #15 from Jack zduo006@163.com --- (In reply to comment #14)
(In reply to comment #13)
This patch can solve the address problem.
writel() and readl() already convert to/from little endian. Does it work better if you remove cpu_to_le32() from all lines using those functions?
@@ -751,22 +748,12 @@ }
/* stitch together an UVD destroy msg */ -#if 0
- msg[0] = cpu_to_le32(0x00000de4);
- msg[1] = cpu_to_le32(0x00000002);
- msg[2] = cpu_to_le32(handle);
- msg[3] = cpu_to_le32(0x00000000);
- for (i = 4; i < 1024; ++i)
msg[i] = cpu_to_le32(0x0);
-#endif -#if 1 writel(cpu_to_le32(0x00000de4),&msg[1]); writel(cpu_to_le32(0x00000002),&msg[2]); writel(cpu_to_le32(handle),&msg[3]); writel(cpu_to_le32(0x00000000),&msg[4]); for (i = 4; i < 1024; ++i) writel(cpu_to_le32(0x0),&msg[i]); -#endif radeon_bo_kunmap(bo); radeon_bo_unreserve(bo);
Why are you enabling this code?
1. I do not add cpu_to_le32() first ,but when I trace the messages from printk,the value of msg_type is reversed. Add, all is ok. 2. #if 0 ...#endif is the original code from kernel. #if 1 ...#endif is changed code. is the same as 1. Must do cpu_to_le32 transfer
By the way, u said writel() and readl() already convert to/from little endian. is based on the X86 arch implement?