From nobody Wed Apr 8 04:28:48 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=none dis=none) header.from=gmail.com ARC-Seal: i=1; a=rsa-sha256; t=1773163148; cv=none; d=zohomail.com; s=zohoarc; b=aGNkZKyZAtvKGNHGd9OGtwvzgRaPwbd0lWJyMjzL6G/Ek2RoBYMMBKa+cdybwwhcGIPDhHuYHbZJGZD1gFMCxIy9TtC4KcvvmEJa2UZEihqfT6Wk9PWHzrOZajyuRhJEGeMq5CB9DAbxEz55JZT/Tvx16OCPpNUh1AzrlsuP0HQ= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1773163148; h=Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=eOghi8Ll3/sbazIkniNGMCKDlS8jGFlMwoa4Be1UqI8=; b=ZnnTKafPoY2lIKtOA2X1oSXOxy2YMrvn8R7sCU1woEbU+gE0qfxVxXHTRQq2vsFEWR6f/ifYcq6Phx2IMnJBAdx9/zFCJsP4ONc8JJI5o8Ho9cVV0e4sPDYE6KND+YosnSefcumlhniI98eSFWUaUTh6c3QBa9eYo7umva+hiq8= 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=none dis=none) Return-Path: Received: from lists.xenproject.org (lists.xenproject.org [192.237.175.120]) by mx.zohomail.com with SMTPS id 1773163148270737.9864341403161; Tue, 10 Mar 2026 10:19:08 -0700 (PDT) Received: from list by lists.xenproject.org with outflank-mailman.1250580.1548089 (Exim 4.92) (envelope-from ) id 1w00jJ-0006o6-0Q; Tue, 10 Mar 2026 17:18:49 +0000 Received: by outflank-mailman (output) from mailman id 1250580.1548089; Tue, 10 Mar 2026 17:18:48 +0000 Received: from localhost ([127.0.0.1] helo=lists.xenproject.org) by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from ) id 1w00jI-0006nv-Sf; Tue, 10 Mar 2026 17:18:48 +0000 Received: by outflank-mailman (input) for mailman id 1250580; Tue, 10 Mar 2026 17:18:47 +0000 Received: from se1-gles-flk1-in.inumbo.com ([94.247.172.50] helo=se1-gles-flk1.inumbo.com) by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from ) id 1w00aP-0001QA-Ad for xen-devel@lists.xenproject.org; Tue, 10 Mar 2026 17:09:37 +0000 Received: from mail-wm1-x332.google.com (mail-wm1-x332.google.com [2a00:1450:4864:20::332]) by se1-gles-flk1.inumbo.com (Halon) with ESMTPS id e9cd1f6e-1ca3-11f1-9ccf-f158ae23cfc8; Tue, 10 Mar 2026 18:09:35 +0100 (CET) Received: by mail-wm1-x332.google.com with SMTP id 5b1f17b1804b1-48534e9076fso20624205e9.0 for ; Tue, 10 Mar 2026 10:09:35 -0700 (PDT) Received: from fedora (user-109-243-67-101.play-internet.pl. [109.243.67.101]) by smtp.gmail.com with ESMTPSA id 5b1f17b1804b1-485359bf807sm119619845e9.2.2026.03.10.10.09.33 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 10 Mar 2026 10:09:34 -0700 (PDT) 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: e9cd1f6e-1ca3-11f1-9ccf-f158ae23cfc8 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1773162575; x=1773767375; darn=lists.xenproject.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=eOghi8Ll3/sbazIkniNGMCKDlS8jGFlMwoa4Be1UqI8=; b=UbWt7u0RbG1GgtM3j559JPupxy1TArRkDuM+GgCbVhjHKbkkcBjdwxW2b4W9B2+QvK eqaxXJBH0A1vAsD6j0pMQ1e2IqZgeZtNLBEufiqwDPi66RcyZt1FS/dBWj5aENgzVeA/ hKhxfaBYPJTNrZnvnBrurAyRkeEKuIQenhlr+u9yv7JK+S9ye2BaJVNEQ/NK09CKTJqL bDkwrgar/6SyGmMdJBFvV/q7UyBlMtn7RMBvTRzq6gasAooR/bQ51wMm/QVJLw84O3q2 szl7eS0sMNFlyoFMv4yLju+Ff5DvF1eynOku5uXRljp7KM9SUZQACVFVZkh8ud82sJ1v OD7A== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1773162575; x=1773767375; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-gg:x-gm-message-state:from :to:cc:subject:date:message-id:reply-to; bh=eOghi8Ll3/sbazIkniNGMCKDlS8jGFlMwoa4Be1UqI8=; b=sL6JhzYNCRQJDZDctajYEuwYwweXgVElFuKvlBuBk30GroBzr08FveM8ZbVGMZmydJ 4l6BwNG47O4zJ4MtKUsRPrbBDKXky0Ffpk/qu5R2Ah9agH3p5eOd/MzdPxNGNnC/TCGu RrmRy50rP/HMHl7VfxFUT1FqjSL7lmqo+NbhCjIU4IxkR3fi33tKK06/8AxWmY26GV1c I2+RquOqjuFvrEEilb2Px59PccygPEnxr7a1f4o7VKb8IzPG38+BI0jjipfZ+F+WrUoD ztZ4WscwOylx+AKUs9BYYM6cGJgfE7iv16WFT+SlREK1MmdYzh7Jb6MiGl7f+yw67i6K B6ig== X-Gm-Message-State: AOJu0YyJBxFViZuWXn+ab9PXplj8EnUZ+S0Bep3BhGYehbpLLL2rLu0I pdInlx2h+j6jLOsJ2gHv8uGFdJRwlvwQ8ltoZK3PP3yNYDt+obx8qAvLTjGI7KB6 X-Gm-Gg: ATEYQzzkmswMZa7ZJDLZIL1/0KbrIwDvqHjX1JRCJRW0Zx548Ng48E4l8C6imuXEqtj wKDlZwWXDqTDb7JuuKTabUOyVUNJleDf+pktykjeCA8XDLw3P2t3rYH9x4MwG1B2Mw2/teN5Oh9 frYRTwrl0yK6Pq3yymtcjjUwgvWZuKgxAFyNpyfDARyJYSkisRnKvCdrmN5XjNd+6l6D9U64QM5 7wahKNXv/fAQFQ495bc7PCJ06TnhEn0q/zs6PV8apwjqauw6RYBbs4Eh63rXOBUMcNReVNnXYtB 2hO6bkxIDzSDRqDUCIF/og/dRRMDM/bsp/Gqqg3BC8h/TZvt1JaLTR832NBfYdMBk2VwbPzWDUP qcnK7tJlSv7NfdynZ0gJNBH2/XmrrIflrQCrfeiYd3m3KHwmpJAc6hV6I7lNBqs4YvII1qHM3iV 0Vcbor96QRCC4xDRPoaa/0SRfi2HS0Fbm3WGRvqs2EPUcge0MRoi0C7z8mrlWjsOSRAw== X-Received: by 2002:a05:600c:4752:b0:480:4a8f:2d5c with SMTP id 5b1f17b1804b1-4852697721cmr266702515e9.29.1773162574476; Tue, 10 Mar 2026 10:09:34 -0700 (PDT) From: Oleksii Kurochko To: xen-devel@lists.xenproject.org Cc: Romain Caritey , Oleksii Kurochko , Alistair Francis , Connor Davis , Andrew Cooper , Anthony PERARD , Michal Orzel , Jan Beulich , Julien Grall , =?UTF-8?q?Roger=20Pau=20Monn=C3=A9?= , Stefano Stabellini Subject: [PATCH v1 21/27] xen/riscv: introduce (de)initialization helpers for vINTC Date: Tue, 10 Mar 2026 18:08:54 +0100 Message-ID: <61311834fef7cf8a736a8fa972b6461bbfd46e6d.1773157782.git.oleksii.kurochko@gmail.com> X-Mailer: git-send-email 2.53.0 In-Reply-To: References: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-ZohoMail-DKIM: pass (identity @gmail.com) X-ZM-MESSAGEID: 1773163149801158500 Content-Type: text/plain; charset="utf-8" Add common helpers domain_vintc_init() and domain_vintc_deinit() to allocate and deallocate a virtual interrupt controller (vINTC) structure and initialize basic virtual interrupt controller registers. Signed-off-by: Oleksii Kurochko --- xen/arch/riscv/domain.c | 3 +++ xen/arch/riscv/include/asm/intc.h | 4 ++++ xen/arch/riscv/intc.c | 40 +++++++++++++++++++++++++++++++ 3 files changed, 47 insertions(+) diff --git a/xen/arch/riscv/domain.c b/xen/arch/riscv/domain.c index 560b21b16ffb..1c08ba7396ea 100644 --- a/xen/arch/riscv/domain.c +++ b/xen/arch/riscv/domain.c @@ -300,6 +300,9 @@ int arch_domain_create(struct domain *d, if ( (rc =3D p2m_init(d)) !=3D 0) goto fail; =20 + if ( (rc =3D domain_vintc_init(d)) ) + goto fail; + d->arch.next_phandle =3D GUEST_PHANDLE_LAST + 1; =20 return rc; diff --git a/xen/arch/riscv/include/asm/intc.h b/xen/arch/riscv/include/asm= /intc.h index 45d41e191e30..fb4188b96a75 100644 --- a/xen/arch/riscv/include/asm/intc.h +++ b/xen/arch/riscv/include/asm/intc.h @@ -13,6 +13,7 @@ enum intc_version { }; =20 struct cpu_user_regs; +struct domain; struct dt_device_node; struct irq_desc; struct kernel_info; @@ -96,4 +97,7 @@ void intc_handle_external_irqs(struct cpu_user_regs *regs= ); =20 int intc_make_domu_dt_node(const struct kernel_info *kinfo); =20 +int domain_vintc_init(struct domain *d); +void domain_vintc_deinit(struct domain *d); + #endif /* ASM__RISCV__INTERRUPT_CONTOLLER_H */ diff --git a/xen/arch/riscv/intc.c b/xen/arch/riscv/intc.c index a91dbc5e997c..88ce658a4de0 100644 --- a/xen/arch/riscv/intc.c +++ b/xen/arch/riscv/intc.c @@ -11,6 +11,7 @@ =20 #include #include +#include =20 static const struct intc_hw_operations *__ro_after_init intc_hw_ops; =20 @@ -87,3 +88,42 @@ int map_device_irqs_to_domain(struct domain *d, struct d= t_device_node *dev, return d->arch.vintc->ops->map_device_irqs_to_domain(d, dev, need_mapp= ing, irq_ranges); } + +int __init domain_vintc_init(struct domain *d) +{ + int ret =3D -EOPNOTSUPP; + const enum intc_version ver =3D intc_hw_ops->info->hw_version; + + switch ( ver ) + { + case INTC_APLIC: + ret =3D domain_vaplic_init(d); + break; + + default: + printk("vintc (ver:%d) isn't implemented\n", ver); + break; + } + + if ( !ret ) + d->arch.vintc->info =3D intc_hw_ops->info; + + return ret; +} + +void __init domain_vintc_deinit(struct domain *d) +{ + const enum intc_version ver =3D intc_hw_ops->info->hw_version; + + switch ( ver ) + { + case INTC_APLIC: + domain_vaplic_deinit(d); + break; + + default: + printk("vintc (ver:%d) isn't implemented\n", ver); + break; + } + +} --=20 2.53.0