From nobody Thu Oct 30 18:43:33 2025 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=proton.me ARC-Seal: i=1; a=rsa-sha256; t=1753734218; cv=none; d=zohomail.com; s=zohoarc; b=V53tIcStGSI7/60SZftC78yvrdZcpYEBiNl3u/NRsBay9+EbqMA28X8AQnL9gsGJBHUQvcV/Y1oJTPmbPhn0ZFcMNHadSld2njUONqwVMgNk8BId3mEVuf9TW8nOPuE8izS+Un/CRD9Pv9tnVNM6q0s4TVmgf+sk3hzlAFDrjH4= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1753734218; h=Content-Type: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=h4BAq8grM3hYAwhb4xrTFfZA6bDeJUFUE61E25P93G4=; b=WGhyZxXauZ4nvvtjRshKCtu7fs5GPi1lqWwNCkhMo1cFZAsvFa/HsC5TMpX6yv+kiwanvVOzorgAc4BPB2MKUSkghZiXfdi85HmU667EkaBqwyVkTbAUj6gwABubaWQDUYAKyTj6H8vnNUHpMdE+ypqbzmTAJJpddx74D2HzZds= 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 1753734218156879.1789338863525; Mon, 28 Jul 2025 13:23:38 -0700 (PDT) Received: from list by lists.xenproject.org with outflank-mailman.1061939.1427543 (Exim 4.92) (envelope-from ) id 1ugUNU-0003RD-7g; Mon, 28 Jul 2025 20:23:20 +0000 Received: by outflank-mailman (output) from mailman id 1061939.1427543; Mon, 28 Jul 2025 20:23:20 +0000 Received: from localhost ([127.0.0.1] helo=lists.xenproject.org) by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from ) id 1ugUNU-0003QT-2h; Mon, 28 Jul 2025 20:23:20 +0000 Received: by outflank-mailman (input) for mailman id 1061939; Mon, 28 Jul 2025 20:23:18 +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 1ugUNS-0003OM-Px for xen-devel@lists.xenproject.org; Mon, 28 Jul 2025 20:23:18 +0000 Received: from mail-4322.protonmail.ch (mail-4322.protonmail.ch [185.70.43.22]) by se1-gles-flk1.inumbo.com (Halon) with ESMTPS id b20ea8cd-6bf0-11f0-b895-0df219b8e170; Mon, 28 Jul 2025 22:23:17 +0200 (CEST) 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: b20ea8cd-6bf0-11f0-b895-0df219b8e170 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=proton.me; s=64xcyqxwaza7ngpdanrd3symj4.protonmail; t=1753734196; x=1753993396; bh=h4BAq8grM3hYAwhb4xrTFfZA6bDeJUFUE61E25P93G4=; h=Date:To:From:Cc:Subject:Message-ID:In-Reply-To:References: Feedback-ID:From:To:Cc:Date:Subject:Reply-To:Feedback-ID: Message-ID:BIMI-Selector; b=Om3QtH8qM/wSaQR0fpnyl8o6Fme/hKsmzLUgtNjMNNn7PgqodcCt6VoEp77d8GG9w h3NT1MBllJ9ALi/ER9xw2W7d/QTygCRfUhq4IlHb2xlqRWvwdSI5TQjWl8QBUEoBtF 4LQL0SBkRhR0IXm3lBnUn5X+xlZLgXmqkEASRzkyFU2yJD1x/++YOyY0v+9oi7fOYG Z/7b/nM/U8xWABuehXxCpcu3OBKJoyaQmGVXrrtj+y4MExfNDrdWUM13wjYWo2xZnS wjzuCAlzS/cgBJJQxYtmE6pupjbhmCca1VM2gjNP8KwQXbQ+i8s2Bbw++yP83BIdPt iH/BuBi70ar5Q== Date: Mon, 28 Jul 2025 20:23:12 +0000 To: xen-devel@lists.xenproject.org From: dmkhn@proton.me Cc: andrew.cooper3@citrix.com, anthony.perard@vates.tech, jbeulich@suse.com, julien@xen.org, michal.orzel@amd.com, roger.pau@citrix.com, sstabellini@kernel.org, dmukhin@ford.com Subject: [PATCH v1 1/2] drivers/ehci-dbgp: remove use of run_in_exception_handle() Message-ID: <20250728202300.1017904-2-dmukhin@ford.com> In-Reply-To: <20250728202300.1017904-1-dmukhin@ford.com> References: <20250728202300.1017904-1-dmukhin@ford.com> Feedback-ID: 123220910:user:proton X-Pm-Message-ID: dc1d3f18566347ad6fb7bfb23c52d294c917711f MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-ZohoMail-DKIM: pass (identity @proton.me) X-ZM-MESSAGEID: 1753734222240116600 Content-Type: text/plain; charset="utf-8" From: Denis Mukhin =20 Polling is relevant for early boot only where facilities requiring run_in_exception_handler() are not used (e.g. 'd' keyhandler). Rework ehci_dbgp_poll() by droppping use of run_in_exception_handler(). The ground work for run_in_exception_handler() removal was done under XSA-4= 53: https://xenbits.xen.org/xsa/advisory-453.html Suggested-by: Andrew Cooper Signed-off-by: Denis Mukhin --- xen/drivers/char/ehci-dbgp.c | 19 ++----------------- 1 file changed, 2 insertions(+), 17 deletions(-) diff --git a/xen/drivers/char/ehci-dbgp.c b/xen/drivers/char/ehci-dbgp.c index a5c79f56fcf4..ab70e53195eb 100644 --- a/xen/drivers/char/ehci-dbgp.c +++ b/xen/drivers/char/ehci-dbgp.c @@ -1245,17 +1245,13 @@ static int cf_check ehci_dbgp_getc(struct serial_po= rt *port, char *pc) return 1; } =20 -/* Safe: ehci_dbgp_poll() runs as timer handler, so not reentrant. */ -static struct serial_port *poll_port; - -static void cf_check _ehci_dbgp_poll(const struct cpu_user_regs *regs) +static void cf_check ehci_dbgp_poll(void *data) { - struct serial_port *port =3D poll_port; + struct serial_port *port =3D data; struct ehci_dbgp *dbgp =3D port->uart; unsigned long flags; unsigned int timeout =3D MICROSECS(DBGP_CHECK_INTERVAL); bool empty =3D false; - const struct cpu_user_regs *old_regs; =20 if ( !dbgp->ehci_debug ) return; @@ -1271,17 +1267,12 @@ static void cf_check _ehci_dbgp_poll(const struct c= pu_user_regs *regs) spin_unlock_irqrestore(&port->tx_lock, flags); } =20 - /* Mimic interrupt context. */ - old_regs =3D set_irq_regs(regs); - if ( dbgp->in.chunk ) serial_rx_interrupt(port); =20 if ( empty ) serial_tx_interrupt(port); =20 - set_irq_regs(old_regs); - if ( spin_trylock_irqsave(&port->tx_lock, flags) ) { if ( dbgp->state =3D=3D dbgp_idle && !dbgp->in.chunk && @@ -1298,12 +1289,6 @@ static void cf_check _ehci_dbgp_poll(const struct cp= u_user_regs *regs) set_timer(&dbgp->timer, NOW() + timeout); } =20 -static void cf_check ehci_dbgp_poll(void *data) -{ - poll_port =3D data; - run_in_exception_handler(_ehci_dbgp_poll); -} - static bool ehci_dbgp_setup_preirq(struct ehci_dbgp *dbgp) { if ( !ehci_dbgp_setup(dbgp) ) --=20 2.34.1 From nobody Thu Oct 30 18:43:33 2025 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=proton.me ARC-Seal: i=1; a=rsa-sha256; t=1753734221; cv=none; d=zohomail.com; s=zohoarc; b=euimRmg5o93ulBbA7KvYXvMvIjNpBmTSus7kEezcdUuG4uQ4FZ4GBInAFrCDJ1LdervzekGRznZuCGipc5H/yXGH/VZce58NzkUJUWUolfJBho+BeIt4mmVdrXwtItytKnYvivKqtI5wdzoEUcAvpze9V5LEPajpl3r0tUKUElw= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1753734221; h=Content-Type: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=+EKVNvHj2ysPSyqLt4ONvc2c/owLM+TnjlI1mI+lhRg=; b=YQcVrH4b2TrYFflb3nmHTU52pGHtCjlv/m08aZ5jPhaSzfUKNZ89nValqI7V0uTwZ7PYZtsR9rT23rjoD81fKzVzcOo2Kl4bD5yppRGZytGR7mvdavuKOBtGKjbc9hNj1qhfwfgR1gdSrV7XnzAKhLGL9mRUUYwDKZIMn9TjbeI= 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 1753734221099917.755534881348; Mon, 28 Jul 2025 13:23:41 -0700 (PDT) Received: from list by lists.xenproject.org with outflank-mailman.1061940.1427559 (Exim 4.92) (envelope-from ) id 1ugUNY-0003rv-EH; Mon, 28 Jul 2025 20:23:24 +0000 Received: by outflank-mailman (output) from mailman id 1061940.1427559; Mon, 28 Jul 2025 20:23:24 +0000 Received: from localhost ([127.0.0.1] helo=lists.xenproject.org) by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from ) id 1ugUNY-0003rm-9w; Mon, 28 Jul 2025 20:23:24 +0000 Received: by outflank-mailman (input) for mailman id 1061940; Mon, 28 Jul 2025 20:23:23 +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 1ugUNX-0003qZ-Lj for xen-devel@lists.xenproject.org; Mon, 28 Jul 2025 20:23:23 +0000 Received: from mail-4322.protonmail.ch (mail-4322.protonmail.ch [185.70.43.22]) by se1-gles-sth1.inumbo.com (Halon) with ESMTPS id b39a6579-6bf0-11f0-a31e-13f23c93f187; Mon, 28 Jul 2025 22:23:20 +0200 (CEST) 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: b39a6579-6bf0-11f0-a31e-13f23c93f187 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=proton.me; s=protonmail; t=1753734199; x=1753993399; bh=+EKVNvHj2ysPSyqLt4ONvc2c/owLM+TnjlI1mI+lhRg=; h=Date:To:From:Cc:Subject:Message-ID:In-Reply-To:References: Feedback-ID:From:To:Cc:Date:Subject:Reply-To:Feedback-ID: Message-ID:BIMI-Selector; b=ZY61srnT8yfyV2C5UcEIr3aefREcEc+oH/xT/1cG+l0f82HHBdj3dvXZ0cm/j/F6p ns6W8aOmIJ+7W2AjWOxydZ4aIylyXAziRKxC8iNESua6Y8oKfBh9gWxj7hFulVcDux n00FHTQlrNjQU+EtBoTgtjknATPOqtXVwFZpqhXB2CXbS7hNsZQtrW+7MTOcz7lKv3 VdSuld79jLPbND/wB/LS12IcUHKVUPB//1LAMhXh7ORF6h0mQdCKJ66Xw/P0B06vvj UNLr+BUUBrGbRcHgZq9B2LBognpXfkTHdhHGT9HMatC9WBpmUX9pYbUDoazDGMF30x uzwWzDoJC0GqQ== Date: Mon, 28 Jul 2025 20:23:17 +0000 To: xen-devel@lists.xenproject.org From: dmkhn@proton.me Cc: andrew.cooper3@citrix.com, anthony.perard@vates.tech, jbeulich@suse.com, julien@xen.org, michal.orzel@amd.com, roger.pau@citrix.com, sstabellini@kernel.org, dmukhin@ford.com Subject: [PATCH v1 2/2] drivers/ns16550: remove use of run_in_exception_handler() Message-ID: <20250728202300.1017904-3-dmukhin@ford.com> In-Reply-To: <20250728202300.1017904-1-dmukhin@ford.com> References: <20250728202300.1017904-1-dmukhin@ford.com> Feedback-ID: 123220910:user:proton X-Pm-Message-ID: 052e8a7412d27932c2661177b6269b4756d2d684 MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-ZohoMail-DKIM: pass (identity @proton.me) X-ZM-MESSAGEID: 1753734222286116600 Content-Type: text/plain; charset="utf-8" From: Denis Mukhin =20 Polling is relevant for early boot only where facilities requiring run_in_exception_handler() are not used (e.g. 'd' keyhandler). Rework ns16550_poll() by droppping use of run_in_exception_handler(). The ground work for run_in_exception_handler() removal was done under XSA-4= 53: https://xenbits.xen.org/xsa/advisory-453.html Suggested-by: Andrew Cooper Signed-off-by: Denis Mukhin --- xen/drivers/char/ns16550.c | 18 ++---------------- 1 file changed, 2 insertions(+), 16 deletions(-) diff --git a/xen/drivers/char/ns16550.c b/xen/drivers/char/ns16550.c index 0bbbafb49f6d..c10bff596b3b 100644 --- a/xen/drivers/char/ns16550.c +++ b/xen/drivers/char/ns16550.c @@ -214,21 +214,14 @@ static void cf_check ns16550_interrupt(int irq, void = *dev_id) } } =20 -/* Safe: ns16550_poll() runs as softirq so not reentrant on a given CPU. */ -static DEFINE_PER_CPU(struct serial_port *, poll_port); - -static void cf_check __ns16550_poll(const struct cpu_user_regs *regs) +static void cf_check ns16550_poll(void *data) { - struct serial_port *port =3D this_cpu(poll_port); + struct serial_port *port =3D data; struct ns16550 *uart =3D port->uart; - const struct cpu_user_regs *old_regs; =20 if ( uart->intr_works ) return; /* Interrupts work - no more polling */ =20 - /* Mimic interrupt context. */ - old_regs =3D set_irq_regs(regs); - while ( ns_read_reg(uart, UART_LSR) & UART_LSR_DR ) { if ( ns16550_ioport_invalid(uart) ) @@ -241,16 +234,9 @@ static void cf_check __ns16550_poll(const struct cpu_u= ser_regs *regs) serial_tx_interrupt(port); =20 out: - set_irq_regs(old_regs); set_timer(&uart->timer, NOW() + MILLISECS(uart->timeout_ms)); } =20 -static void cf_check ns16550_poll(void *data) -{ - this_cpu(poll_port) =3D data; - run_in_exception_handler(__ns16550_poll); -} - static int cf_check ns16550_tx_ready(struct serial_port *port) { struct ns16550 *uart =3D port->uart; --=20 2.34.1