From nobody Mon Feb 9 12:24:51 2026 Delivered-To: importer@patchew.org Received-SPF: pass (zohomail.com: domain of lists.xenproject.org designates 192.237.175.120 as permitted sender) client-ip=192.237.175.120; envelope-from=xen-devel-bounces@lists.xenproject.org; helo=lists.xenproject.org; Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of lists.xenproject.org designates 192.237.175.120 as permitted sender) smtp.mailfrom=xen-devel-bounces@lists.xenproject.org; dmarc=pass(p=quarantine dis=none) header.from=suse.com ARC-Seal: i=1; a=rsa-sha256; t=1687353194; cv=none; d=zohomail.com; s=zohoarc; b=U5spfP0ARboQpkerxkGFcYatHbdMf4xDhm+454KZKEbC8R6muYwm5szkWDNDG53wFUrd5XdlbN1U61volrqXOK7I2mF4Jy/nkUXbrW571HyYUHuoeBoB+6xG/Zq+kwuh1sblzy09ieoXb0TE/myRGHvptQveR/xvpvGp4k+nJ0c= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1687353194; h=Content-Transfer-Encoding:Cc:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:To; bh=VXZNBzf99S/Re0auqUhITwZGbKoAylMdpUpWJfqNnEs=; b=Zv2xT6/pxY7yXrnRHibqMYD1TUkdVafc6TtSWB/aLxbmmIY3aANOH9rrviy0KK38CT8YmmRneOWUjR51+P6PB8gzLiYLxqEqsu/kZy1hmiZv4kbsVdtT7i9IKYLMLj30jxkvFvynp1eKqsKheCNGr2N+LhcYlb8UF22rtA38qlc= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of lists.xenproject.org designates 192.237.175.120 as permitted sender) smtp.mailfrom=xen-devel-bounces@lists.xenproject.org; dmarc=pass header.from= (p=quarantine dis=none) Return-Path: Received: from lists.xenproject.org (lists.xenproject.org [192.237.175.120]) by mx.zohomail.com with SMTPS id 1687353194532616.0926755402892; Wed, 21 Jun 2023 06:13:14 -0700 (PDT) Received: from list by lists.xenproject.org with outflank-mailman.552722.862956 (Exim 4.92) (envelope-from ) id 1qBxdp-0001j7-RA; Wed, 21 Jun 2023 13:12:57 +0000 Received: by outflank-mailman (output) from mailman id 552722.862956; Wed, 21 Jun 2023 13:12:57 +0000 Received: from localhost ([127.0.0.1] helo=lists.xenproject.org) by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from ) id 1qBxdp-0001iy-OE; Wed, 21 Jun 2023 13:12:57 +0000 Received: by outflank-mailman (input) for mailman id 552722; Wed, 21 Jun 2023 13:12:56 +0000 Received: from se1-gles-sth1-in.inumbo.com ([159.253.27.254] helo=se1-gles-sth1.inumbo.com) by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from ) id 1qBxdo-0000hv-BO for xen-devel@lists.xenproject.org; Wed, 21 Jun 2023 13:12:56 +0000 Received: from smtp-out1.suse.de (smtp-out1.suse.de [195.135.220.28]) by se1-gles-sth1.inumbo.com (Halon) with ESMTPS id 55d4e730-1035-11ee-b236-6b7b168915f2; Wed, 21 Jun 2023 15:12:55 +0200 (CEST) Received: from imap2.suse-dmz.suse.de (imap2.suse-dmz.suse.de [192.168.254.74]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature ECDSA (P-521) server-digest SHA512) (No client certificate requested) by smtp-out1.suse.de (Postfix) with ESMTPS id 5964221D0A; Wed, 21 Jun 2023 13:12:55 +0000 (UTC) Received: from imap2.suse-dmz.suse.de (imap2.suse-dmz.suse.de [192.168.254.74]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature ECDSA (P-521) server-digest SHA512) (No client certificate requested) by imap2.suse-dmz.suse.de (Postfix) with ESMTPS id 3ADDA134B1; Wed, 21 Jun 2023 13:12:55 +0000 (UTC) Received: from dovecot-director2.suse.de ([192.168.254.65]) by imap2.suse-dmz.suse.de with ESMTPSA id kMubDVf3kmQKYQAAMHmgww (envelope-from ); Wed, 21 Jun 2023 13:12:55 +0000 X-Outflank-Mailman: Message body and most headers restored to incoming version X-BeenThere: xen-devel@lists.xenproject.org List-Id: Xen developer discussion List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Errors-To: xen-devel-bounces@lists.xenproject.org Precedence: list Sender: "Xen-devel" X-Inumbo-ID: 55d4e730-1035-11ee-b236-6b7b168915f2 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=suse.com; s=susede1; t=1687353175; h=from:from:reply-to:date:date:message-id:message-id:to:to:cc:cc: mime-version:mime-version: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=VXZNBzf99S/Re0auqUhITwZGbKoAylMdpUpWJfqNnEs=; b=YxAXnBaeIC1QLya4c71Dnd7MWnN52zRwCYzAtlWAE1NHH/N5NDQTX4/Tu+fwhotb14VGCG URAvGQ6eet0QlZYOf2jJtyU9IHTDmMRbNEO7uwZOqD1L1estEo4vZi/CpAF1XL14d0hTFy hBOb1LXDca9g4Jek6AAjAjXHtcKL6j0= From: Petr Pavlu To: jgross@suse.com, sstabellini@kernel.org, oleksandr_tyshchenko@epam.com Cc: xen-devel@lists.xenproject.org, linux-kernel@vger.kernel.org, Petr Pavlu Subject: [PATCH 2/2] xen/virtio: Avoid use of the dom0 backend in dom0 Date: Wed, 21 Jun 2023 15:12:14 +0200 Message-Id: <20230621131214.9398-3-petr.pavlu@suse.com> X-Mailer: git-send-email 2.35.3 In-Reply-To: <20230621131214.9398-1-petr.pavlu@suse.com> References: <20230621131214.9398-1-petr.pavlu@suse.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-ZohoMail-DKIM: pass (identity @suse.com) X-ZM-MESSAGEID: 1687353195286100003 Content-Type: text/plain; charset="utf-8" When attempting to run Xen on a QEMU/KVM virtual machine with virtio devices (all x86_64), dom0 tries to establish a grant for itself which eventually results in a hang during the boot. The backtrace looks as follows, the while loop in __send_control_msg() makes no progress: #0 virtqueue_get_buf_ctx (_vq=3D_vq@entry=3D0xffff8880074a8400, len=3Dle= n@entry=3D0xffffc90000413c94, ctx=3Dctx@entry=3D0x0 ) at= ../drivers/virtio/virtio_ring.c:2326 #1 0xffffffff817086b7 in virtqueue_get_buf (_vq=3D_vq@entry=3D0xffff8880= 074a8400, len=3Dlen@entry=3D0xffffc90000413c94) at ../drivers/virtio/virtio= _ring.c:2333 #2 0xffffffff8175f6b2 in __send_control_msg (portdev=3D, = port_id=3D0xffffffff, event=3D0x0, value=3D0x1) at ../drivers/char/virtio_c= onsole.c:562 #3 0xffffffff8175f6ee in __send_control_msg (portdev=3D, = port_id=3D, event=3D, value=3D= ) at ../drivers/char/virtio_console.c:569 #4 0xffffffff817618b1 in virtcons_probe (vdev=3D0xffff88800585e800) at .= ./drivers/char/virtio_console.c:2098 #5 0xffffffff81707117 in virtio_dev_probe (_d=3D0xffff88800585e810) at .= ./drivers/virtio/virtio.c:305 #6 0xffffffff8198e348 in call_driver_probe (drv=3D0xffffffff82be40c0 , drv=3D0xffffffff82be40c0 , dev=3D0xffff88800= 585e810) at ../drivers/base/dd.c:579 #7 really_probe (dev=3Ddev@entry=3D0xffff88800585e810, drv=3Ddrv@entry= =3D0xffffffff82be40c0 ) at ../drivers/base/dd.c:658 #8 0xffffffff8198e58f in __driver_probe_device (drv=3Ddrv@entry=3D0xffff= ffff82be40c0 , dev=3Ddev@entry=3D0xffff88800585e810) at ../= drivers/base/dd.c:800 #9 0xffffffff8198e65a in driver_probe_device (drv=3Ddrv@entry=3D0xffffff= ff82be40c0 , dev=3Ddev@entry=3D0xffff88800585e810) at ../dr= ivers/base/dd.c:830 #10 0xffffffff8198e832 in __driver_attach (dev=3D0xffff88800585e810, data= =3D0xffffffff82be40c0 ) at ../drivers/base/dd.c:1216 #11 0xffffffff8198bfb2 in bus_for_each_dev (bus=3D, start= =3Dstart@entry=3D0x0 , data=3Ddata@entry=3D0xffffffff82b= e40c0 , fn=3Dfn@entry=3D0xffffffff8198e7b0 <__driver_attach>) at ../drivers/b= ase/bus.c:368 #12 0xffffffff8198db65 in driver_attach (drv=3Ddrv@entry=3D0xffffffff82be= 40c0 ) at ../drivers/base/dd.c:1233 #13 0xffffffff8198d207 in bus_add_driver (drv=3Ddrv@entry=3D0xffffffff82b= e40c0 ) at ../drivers/base/bus.c:673 #14 0xffffffff8198f550 in driver_register (drv=3Ddrv@entry=3D0xffffffff82= be40c0 ) at ../drivers/base/driver.c:246 #15 0xffffffff81706b47 in register_virtio_driver (driver=3Ddriver@entry= =3D0xffffffff82be40c0 ) at ../drivers/virtio/virtio.c:357 #16 0xffffffff832cd34b in virtio_console_init () at ../drivers/char/virti= o_console.c:2258 #17 0xffffffff8100105c in do_one_initcall (fn=3D0xffffffff832cd2e0 ) at ../init/main.c:1246 #18 0xffffffff83277293 in do_initcall_level (command_line=3D0xffff888003e= 2f900 "root", level=3D0x6) at ../init/main.c:1319 #19 do_initcalls () at ../init/main.c:1335 #20 do_basic_setup () at ../init/main.c:1354 #21 kernel_init_freeable () at ../init/main.c:1571 #22 0xffffffff81f64be1 in kernel_init (unused=3D) at ../in= it/main.c:1462 #23 0xffffffff81001f49 in ret_from_fork () at ../arch/x86/entry/entry_64.= S:308 #24 0x0000000000000000 in ?? () Fix the problem by preventing xen_grant_init_backend_domid() from setting dom0 as a backend when running in dom0. Fixes: 035e3a4321f7 ("xen/virtio: Optimize the setup of "xen-grant-dma" dev= ices") Signed-off-by: Petr Pavlu --- drivers/xen/grant-dma-ops.c | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/drivers/xen/grant-dma-ops.c b/drivers/xen/grant-dma-ops.c index 76f6f26265a3..29ed27ac450e 100644 --- a/drivers/xen/grant-dma-ops.c +++ b/drivers/xen/grant-dma-ops.c @@ -362,7 +362,9 @@ static int xen_grant_init_backend_domid(struct device *= dev, if (np) { ret =3D xen_dt_grant_init_backend_domid(dev, np, backend_domid); of_node_put(np); - } else if (IS_ENABLED(CONFIG_XEN_VIRTIO_FORCE_GRANT) || xen_pv_domain()) { + } else if ((IS_ENABLED(CONFIG_XEN_VIRTIO_FORCE_GRANT) || + xen_pv_domain()) && + !xen_initial_domain()) { dev_info(dev, "Using dom0 as backend\n"); *backend_domid =3D 0; ret =3D 0; --=20 2.35.3