Re: use generic DMA mapping code in powerpc V4

From: Christian Zigotzky
Date: Sun Feb 10 2019 - 07:03:50 EST

Hi Christoph,

On 08 February 2019 at 10:18AM, Christoph Hellwig wrote:
On Fri, Feb 08, 2019 at 10:01:46AM +0100, Christian Zigotzky wrote:
Hi Christoph,

Your new patch fixes the problems with the P.A. Semi Ethernet! :-)
Thanks a lot once again for testing!

Now can you test with this patch and the whole series?

I've updated the powerpc-dma.6 branch to include this fix.

I tested the whole series today. The kernels boot and the P.A. Semi Ethernet works! :-) Thanks a lot!

I also tested it in a virtual e5500 QEMU machine today. Unfortunately the kernel crashes.


[ÂÂ 54.624330] BUG: Unable to handle kernel data access at 0xc06c008a0013014a
[ÂÂ 54.625640] Faulting instruction address: 0xc000000000027e7c
[ÂÂ 54.626140] Oops: Kernel access of bad area, sig: 11 [#1]
[ÂÂ 54.626456] BE SMP NR_CPUS=4 QEMU e500
[ÂÂ 54.626876] Modules linked in:
[ÂÂ 54.627284] CPU: 1 PID: 1876 Comm: systemd-journal Not tainted 5.0.0-rc5-DMA_A1-X5000-54581-gda1d065-dirty #1
[ÂÂ 54.627819] NIP:Â c000000000027e7c LR: c0000000000b5264 CTR: 0000000000000000
[ÂÂ 54.628173] REGS: c00000007ffeb700 TRAP: 0300ÂÂ Not tainted (5.0.0-rc5-DMA_A1-X5000-54581-gda1d065-dirty)
[ÂÂ 54.628607] MSR:Â 0000000080009000 <EE,ME>Â CR: 44008486 XER: 00000000
[ÂÂ 54.629023] DEAR: c06c008a0013014a ESR: 0000000000800000 IRQMASK: 0
[ÂÂ 54.629023] GPR00: 0000000000005254 c00000007ffeb990 c0000000016b2000 c06c008a0013014a
[ÂÂ 54.629023] GPR04: c00000007c54f8c0 0000000000000058 0000000000000006 0000000000000000
[ÂÂ 54.629023] GPR08: 0000000000000000 000000007c54f8c0 006c008a0013014a c00000007c86c000
[ÂÂ 54.629023] GPR12: 0000000028002482 c00000003ffff8c0 0000000000000000 c000000078dfaa70
[ÂÂ 54.629023] GPR16: c000000078366c00 0000000000000000 000000000000005e 0000000000000000
[ÂÂ 54.629023] GPR20: 0000000000000000 c00000007c54f8c0 0000000000000007 c000000078dfa000
[ÂÂ 54.629023] GPR24: 0000000000000000 0000000000000047 0000000000000000 80000000003f6470
[ÂÂ 54.629023] GPR28: c00000007928d470 c000000078801dc0 000000000000005e c000000078dfa7c0
[ÂÂ 54.632572] NIP [c000000000027e7c] .memcpy+0x1fc/0x288
[ÂÂ 54.632886] LR [c0000000000b5264] .swiotlb_tbl_sync_single+0xb0/0xe4
[ÂÂ 54.633221] Call Trace:
[ÂÂ 54.633513] [c00000007ffeb990] [c00000007ffeba70] 0xc00000007ffeba70 (unreliable)
[ÂÂ 54.633988] [c00000007ffeba00] [c0000000000b41e4] .dma_direct_sync_single_for_cpu+0x58/0x6c
[ÂÂ 54.634436] [c00000007ffeba70] [c000000000788da4] .e1000_clean_rx_irq+0x1bc/0x4c8
[ÂÂ 54.634857] [c00000007ffebb90] [c00000000078667c] .e1000_clean+0x714/0x8d4
[ÂÂ 54.635263] [c00000007ffebcc0] [c000000000a3f15c] .net_rx_action+0x11c/0x2a4
[ÂÂ 54.635712] [c00000007ffebdb0] [c000000000c48c20] .__do_softirq+0x150/0x2a8
[ÂÂ 54.636211] [c00000007ffebeb0] [c000000000064184] .irq_exit+0x6c/0xc4
[ÂÂ 54.636533] [c00000007ffebf20] [c000000000004124] .__do_irq+0x80/0x94
[ÂÂ 54.636985] [c00000007ffebf90] [c00000000000eca0] .call_do_irq+0x14/0x24
[ÂÂ 54.637371] [c00000007c86fd80] [c0000000000041c0] .do_IRQ+0x88/0xc4
[ÂÂ 54.637737] [c00000007c86fe20] [c000000000012920] exc_0x500_common+0xd8/0xdc
[ÂÂ 54.638104] Instruction dump:
[ÂÂ 54.638451] e861fff8 4e800020 7cd01120 7ca62850 38e00000 28a50010 409f0010 88040000
[ÂÂ 54.638887] 98030000 38e70001 409e0010 7c07222e <7c071b2e> 38e70002 409d000c 7c07202e
[ÂÂ 54.639594] ---[ end trace a4861de7e4c199f7 ]---
[ÂÂ 54.639873]
[ÂÂ 55.640484] Kernel panic - not syncing: Aiee, killing interrupt handler!
[ÂÂ 55.641556] Rebooting in 180 seconds..


I tested with the following QEMU commands:

./qemu-system-ppc64 -M ppce500 -cpu e5500 -m 2048Â -nographic -kernel /home/christian/Downloads/vmlinux-5.0-rc5-2-AmigaOne_X1000_X5000/X5000_and_QEMU_e5500/uImage-5.0 -nic user,model=e1000 -drive format=raw,file=/home/christian/Downloads/MATE_PowerPC_Remix_2017_0.9.img,index=0,if=virtio -append "rw root=/dev/vda" -smp 4

./qemu-system-ppc64 -M ppce500 -cpu e5500 -m 2048 -kernel /home/christian/Downloads/vmlinux-5.0-rc5-2-AmigaOne_X1000_X5000/X5000_and_QEMU_e5500/uImage-5.0 -drive format=raw,file=/home/christian/Downloads/MATE_PowerPC_Remix_2017_0.9.img,index=0,if=virtio -nic user,model=e1000 -append "rw root=/dev/vda" -device virtio-vga -device virtio-mouse-pci -device virtio-keyboard-pci -usb -soundhw es1370 -smp 4

The RC5 of kernel 5.0 boots without any problems in this virtual machine.