From patchwork Wed Aug 12 13:09:49 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: Christian Zigotzky X-Patchwork-Id: 11711841 Return-Path: Received: from mail.kernel.org (pdx-korg-mail-1.web.codeaurora.org [172.30.200.123]) by pdx-korg-patchwork-2.web.codeaurora.org (Postfix) with ESMTP id 33001138C for ; Thu, 13 Aug 2020 07:13:08 +0000 (UTC) Received: from gabe.freedesktop.org (gabe.freedesktop.org [131.252.210.177]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mail.kernel.org (Postfix) with ESMTPS id 1142120781 for ; Thu, 13 Aug 2020 07:13:08 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=fail reason="signature verification failed" (2048-bit key) header.d=xenosoft.de header.i=@xenosoft.de header.b="k19xOo1H" DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org 1142120781 Authentication-Results: mail.kernel.org; dmarc=none (p=none dis=none) header.from=xenosoft.de Authentication-Results: mail.kernel.org; spf=none smtp.mailfrom=dri-devel-bounces@lists.freedesktop.org Received: from gabe.freedesktop.org (localhost [127.0.0.1]) by gabe.freedesktop.org (Postfix) with ESMTP id 7B7916E50C; Thu, 13 Aug 2020 07:12:34 +0000 (UTC) X-Original-To: dri-devel@lists.freedesktop.org Delivered-To: dri-devel@lists.freedesktop.org X-Greylist: delayed 93217 seconds by postgrey-1.36 at gabe; Wed, 12 Aug 2020 13:10:11 UTC Received: from mo4-p01-ob.smtp.rzone.de (mo4-p01-ob.smtp.rzone.de [85.215.255.52]) by gabe.freedesktop.org (Postfix) with ESMTPS id 015086E0EF for ; Wed, 12 Aug 2020 13:10:11 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; t=1597237810; s=strato-dkim-0002; d=xenosoft.de; h=In-Reply-To:Date:Message-ID:Cc:To:References:From:Subject: X-RZG-CLASS-ID:X-RZG-AUTH:From:Subject:Sender; bh=Kcodj0v7+WjSyfmFV8xxq/qYKikq4tATpX4BNGbJoj0=; b=k19xOo1HmqMAazoYZTURVLYufwTuhRTFmzqhE9KVjwVUA2xbxQlEjgy+KP95KPbJ60 e88jNxnLyyWC4C7NQX8aWHzUkXO/A73YfSlKYi/AHSVa3llF5BjR/rI+UD66CRnTnjTm YUb9TgmpIS4OwlTLJhXleF8242bVJ0JRWxy9CLsDg+iwXGthjFgqN6K1bLd6jmw3prcb 9yKexEVaJFFechKWli3BxzudVgTi4HhhM1mV+2aaNbjF1tzdPidnhRYDv43GXQpL/o7S 1O9c+v8A8FJrmXsm2U6MeML7tog55AB46kFNkQ2sUr3vQh+/gSEQm84dl+aTrSv605/D s2IA== X-RZG-AUTH: ":L2QefEenb+UdBJSdRCXu93KJ1bmSGnhMdmOod1DhGM4l4Hio94KKxRySfLxnHfJ+Dkjp5DdBJSrwuuqxvPgBLnW+lALRBb0WtQiyeOSIyvQMpg==" X-RZG-CLASS-ID: mo00 Received: from [IPv6:2a02:8109:89c0:ebfc:b869:b453:e120:98dd] by smtp.strato.de (RZmta 46.10.5 AUTH) with ESMTPSA id 60686ew7CD9ocIN (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256 bits)) (Client did not present a certificate); Wed, 12 Aug 2020 15:09:50 +0200 (CEST) Subject: [Virtual ppce500] virtio_gpu virtio0: swiotlb buffer is full From: Christian Zigotzky References: <87h7tb4zwp.fsf@linux.ibm.com> <51482c70-1007-1202-9ed1-2d174c1e923f@xenosoft.de> <9688335c-d7d0-9eaa-22c6-511e708e0d2a@linux.ibm.com> <9805f81d-651d-d1a3-fd05-fb224a8c2031@xenosoft.de> To: daniel.vetter@ffwll.ch Message-ID: <3162da18-462c-72b4-f8f0-eef896c6b162@xenosoft.de> Date: Wed, 12 Aug 2020 15:09:49 +0200 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:68.0) Gecko/20100101 Thunderbird/68.10.0 MIME-Version: 1.0 In-Reply-To: <9805f81d-651d-d1a3-fd05-fb224a8c2031@xenosoft.de> Content-Language: de-DE X-Mailman-Approved-At: Thu, 13 Aug 2020 07:12:31 +0000 X-BeenThere: dri-devel@lists.freedesktop.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: Direct Rendering Infrastructure - Development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: Darren Stevens , mad skateman , =?utf-8?q?Michel_D=C3=A4nzer?= , Maling list - DRI developers , "kvm-ppc@vger.kernel.org" , "R.T.Dickinson" , linuxppc-dev Errors-To: dri-devel-bounces@lists.freedesktop.org Sender: "dri-devel" Hello Daniel, The VirtIO-GPU doesn't work anymore with the latest Git kernel in a virtual e5500 PPC64 QEMU machine [1,2] after the commit "drm/virtio: Call the right shmem helpers". [3] The kernel 5.8 works with the VirtIO-GPU in this virtual machine. I bisected today [4]. Result: drm/virtio: Call the right shmem helpers ( d323bb44e4d23802eb25d13de1f93f2335bd60d0) [3] is the first bad commit. I was able to revert the first bad commit. [5] After that I compiled a new kernel again. Then I was able to boot Linux with this kernel in a virtual e5500 PPC64 QEMU machine with the VirtIO-GPU. I created a patch. [6] With this patch I can use the VirtIO-GPU again. Could you please check the first bad commit? Thanks, Christian [1] QEMU command: qemu-system-ppc64 -M ppce500 -cpu e5500 -enable-kvm -m 1024 -kernel uImage -drive format=raw,file=fienix-soar_3.0-2020608-net.img,index=0,if=virtio -nic user,model=e1000 -append "rw root=/dev/vda2" -device virtio-vga -device virtio-mouse-pci -device virtio-keyboard-pci -device pci-ohci,id=newusb -device usb-audio,bus=newusb.0 -smp 4 [2] Error messages: virtio_gpu virtio0: swiotlb buffer is full (sz: 4096 bytes), total 0 (slots), used 0 (slots) BUG: Kernel NULL pointer dereference on read at 0x00000010 Faulting instruction address: 0xc0000000000c7324 Oops: Kernel access of bad area, sig: 11 [#1] BE PAGE_SIZE=4K PREEMPT SMP NR_CPUS=4 QEMU e500 Modules linked in: CPU: 2 PID: 1678 Comm: kworker/2:2 Not tainted 5.9-a3_A-EON_X5000-11735-g06a81c1c7db9-dirty #1 Workqueue: events .virtio_gpu_dequeue_ctrl_func NIP:  c0000000000c7324 LR: c0000000000c72e4 CTR: c000000000462930 REGS: c00000003dba75e0 TRAP: 0300   Not tainted (5.9-a3_A-EON_X5000-11735-g06a81c1c7db9-dirty) MSR:  0000000090029000   CR: 24002288  XER: 00000000 DEAR: 0000000000000010 ESR: 0000000000000000 IRQMASK: 0 GPR00: c0000000000c6188 c00000003dba7870 c0000000017f2300 c00000003d893010 GPR04: 0000000000000000 0000000000000001 0000000000000000 0000000000000000 GPR08: 0000000000000000 0000000000000000 0000000000000000 7f7f7f7f7f7f7f7f GPR12: 0000000024002284 c00000003fff9200 c00000000008c3a0 c0000000061566c0 GPR16: 0000000000000000 0000000000000000 0000000000000000 0000000000000000 GPR20: 0000000000000000 0000000000000000 0000000000000000 0000000000000000 GPR24: 0000000000000001 0000000000110000 0000000000000000 0000000000000000 GPR28: c00000003d893010 0000000000000000 0000000000000000 c00000003d893010 NIP [c0000000000c7324] .dma_direct_unmap_sg+0x4c/0xd8 LR [c0000000000c72e4] .dma_direct_unmap_sg+0xc/0xd8 Call Trace: [c00000003dba7870] [c00000003dba7950] 0xc00000003dba7950 (unreliable) [c00000003dba7920] [c0000000000c6188] .dma_unmap_sg_attrs+0x5c/0x98 [c00000003dba79d0] [c0000000005cd438] .drm_gem_shmem_free_object+0x98/0xcc [c00000003dba7a50] [c0000000006af5b4] .virtio_gpu_cleanup_object+0xc8/0xd4 [c00000003dba7ad0] [c0000000006ad3bc] .virtio_gpu_cmd_unref_cb+0x1c/0x30 [c00000003dba7b40] [c0000000006adab8] .virtio_gpu_dequeue_ctrl_func+0x208/0x28c [c00000003dba7c10] [c000000000086b70] .process_one_work+0x1a4/0x258 [c00000003dba7cb0] [c0000000000870f4] .worker_thread+0x214/0x284 [c00000003dba7d70] [c00000000008c4f0] .kthread+0x150/0x158 [c00000003dba7e20] [c00000000000082c] .ret_from_kernel_thread+0x58/0x60 Instruction dump: f821ff51 7cb82b78 7cdb3378 4e000000 7cfa3b78 3bc00000 7f9ec000 41fc0014 382100b0 81810008 7d808120 48bc1ba8 ebfc0248 833d0018 7fff4850 ---[ end trace f28d194d9f0955a8 ]--- virtio_gpu virtio0: swiotlb buffer is full (sz: 4096 bytes), total 0 (slots), used 0 (slots) virtio_gpu virtio0: swiotlb buffer is full (sz: 16384 bytes), total 0 (slots), used 0 (slots) --- [3] https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=d323bb44e4d23802eb25d13de1f93f2335bd60d0 [4] https://forum.hyperion-entertainment.com/viewtopic.php?p=51377#p51377 [5] git revert d323bb44e4d23802eb25d13de1f93f2335bd60d0 //Output: [master 966950f724e4] Revert "drm/virtio: Call the right shmem helpers" 1 file changed, 1 insertion(+), 1 deletion(-) [6]          return -EINVAL; --- diff --git a/drivers/gpu/drm/virtio/virtgpu_object.c b/drivers/gpu/drm/virtio/virtgpu_object.c index 6ccbd01cd888..346cef5ce251 100644 --- a/drivers/gpu/drm/virtio/virtgpu_object.c +++ b/drivers/gpu/drm/virtio/virtgpu_object.c @@ -150,7 +150,7 @@ static int virtio_gpu_object_shmem_init(struct virtio_gpu_device *vgdev,      if (ret < 0)          return -EINVAL; -    shmem->pages = drm_gem_shmem_get_pages_sgt(&bo->base.base); +    shmem->pages = drm_gem_shmem_get_sg_table(&bo->base.base);      if (!shmem->pages) {          drm_gem_shmem_unpin(&bo->base.base);