From nobody Mon Feb 9 19:30:03 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=fail; spf=none (zohomail.com: 192.237.175.120 is neither permitted nor denied by domain of lists.xenproject.org) smtp.mailfrom=xen-devel-bounces@lists.xenproject.org; dmarc=fail(p=none dis=none) header.from=citrix.com ARC-Seal: i=1; a=rsa-sha256; t=1579254854; cv=none; d=zohomail.com; s=zohoarc; b=cXDd/vKyGD3zFWzm/FO22ns6EFgYHjQolQisb4637ugufi1yDWBhIHBbhGOa96vsKtk+tPi5l433bhyvqEvW1CSRzP1K/vNv6dr0pZULJalhOHQwmwd6PaJ9CdwUP1D7XM9h+be5Tz8ncGkKLGlcBpn4s0C9GMuoJM2EKoJ5grw= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1579254854; h=Content-Type: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=d2EvT98fLf/enm0VkmAO8XyQPADdYD2VO1FnrrJvS40=; b=fKj2nMKKHYktsfCr/NOwHLXFbhhZQFs1mEyW981VZ9Hf4Mp2gEyvANDRB0kn1nVMhsUNOtGa1u7ONRgNL/jDUR967TDXI1jlOMNJi3UxQZjPTcbCT/d/wAPQgPjaBySEBqBU7MePRSRE6Tkg8semi/2PAn4k2nn9++DoG1xS7yQ= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=fail; spf=none (zohomail.com: 192.237.175.120 is neither permitted nor denied by domain of lists.xenproject.org) smtp.mailfrom=xen-devel-bounces@lists.xenproject.org; dmarc=fail header.from= (p=none dis=none) header.from= Return-Path: Received: from lists.xenproject.org (lists.xenproject.org [192.237.175.120]) by mx.zohomail.com with SMTPS id 1579254854890722.11902510922; Fri, 17 Jan 2020 01:54:14 -0800 (PST) Received: from localhost ([127.0.0.1] helo=lists.xenproject.org) by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from ) id 1isOJe-0007wh-Mu; Fri, 17 Jan 2020 09:53:22 +0000 Received: from all-amaz-eas1.inumbo.com ([34.197.232.57] helo=us1-amaz-eas2.inumbo.com) by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from ) id 1isOJe-0007wJ-1q for xen-devel@lists.xenproject.org; Fri, 17 Jan 2020 09:53:22 +0000 Received: from esa5.hc3370-68.iphmx.com (unknown [216.71.155.168]) by us1-amaz-eas2.inumbo.com (Halon) with ESMTPS id 2f4fce75-390f-11ea-8893-12813bfff9fa; Fri, 17 Jan 2020 09:53:17 +0000 (UTC) X-Inumbo-ID: 2f4fce75-390f-11ea-8893-12813bfff9fa DKIM-Signature: v=1; a=rsa-sha256; c=simple/simple; d=citrix.com; s=securemail; t=1579254796; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=wCaqkTQfHuawSxD/a+i/CF+r398ZASYyosYNgEikdi4=; b=S7/CPnytuCFdEBcgR0XFTkTN+gc1aCrtfEar4ZPtszs44BlOII0TeHnR QgBhAIWyW1jgG8Otltu8E7rYqN7wxK5iBszeiVfVT7g42dal5t8qSWvjq 4Uu+kPC4I00zrGpEHk/M0Z8xFO/oD8yxMQAirlsQz9jJ5txqxmwwADDBY s=; Authentication-Results: esa5.hc3370-68.iphmx.com; dkim=none (message not signed) header.i=none; spf=None smtp.pra=roger.pau@citrix.com; spf=Pass smtp.mailfrom=roger.pau@citrix.com; spf=None smtp.helo=postmaster@mail.citrix.com Received-SPF: none (zohomail.com: 192.237.175.120 is neither permitted nor denied by domain of lists.xenproject.org) client-ip=192.237.175.120; envelope-from=xen-devel-bounces@lists.xenproject.org; helo=lists.xenproject.org; Received-SPF: None (esa5.hc3370-68.iphmx.com: no sender authenticity information available from domain of roger.pau@citrix.com) identity=pra; client-ip=162.221.158.21; receiver=esa5.hc3370-68.iphmx.com; envelope-from="roger.pau@citrix.com"; x-sender="roger.pau@citrix.com"; x-conformance=sidf_compatible Received-SPF: Pass (esa5.hc3370-68.iphmx.com: domain of roger.pau@citrix.com designates 162.221.158.21 as permitted sender) identity=mailfrom; client-ip=162.221.158.21; receiver=esa5.hc3370-68.iphmx.com; envelope-from="roger.pau@citrix.com"; x-sender="roger.pau@citrix.com"; x-conformance=sidf_compatible; x-record-type="v=spf1"; x-record-text="v=spf1 ip4:209.167.231.154 ip4:178.63.86.133 ip4:195.66.111.40/30 ip4:85.115.9.32/28 ip4:199.102.83.4 ip4:192.28.146.160 ip4:192.28.146.107 ip4:216.52.6.88 ip4:216.52.6.188 ip4:162.221.158.21 ip4:162.221.156.83 ip4:168.245.78.127 ~all" Received-SPF: None (esa5.hc3370-68.iphmx.com: no sender authenticity information available from domain of postmaster@mail.citrix.com) identity=helo; client-ip=162.221.158.21; receiver=esa5.hc3370-68.iphmx.com; envelope-from="roger.pau@citrix.com"; x-sender="postmaster@mail.citrix.com"; x-conformance=sidf_compatible IronPort-SDR: WxY2CF6E7/S6n8CFNBmwpvPxRicy06PPK6B21XKpUjHaWxNiiduwWOTY42/4cvgFljdWlyxjyj X/OY1akIoHsm7m/hTx/MML6+vs3tW0kjNsXwd8YrbO++aAv9muFwnwXYNrRj3q4fULoEXK409e KE38gxm2Ht98+H9vlSea8g1hE7qEQkfsOZ+vP+a7HUxlm5/5ELjeyEjokM17PTzbsyFkt3l6/+ 4rSpKi9mrotZt6rxDZ2nwEgzM/Dm6foLjHRcWAkxV2HLwOfgJv9fRYahX0+J+fRsyqzSFcCYnH E5Q= X-SBRS: 2.7 X-MesageID: 11430779 X-Ironport-Server: esa5.hc3370-68.iphmx.com X-Remote-IP: 162.221.158.21 X-Policy: $RELAYED X-IronPort-AV: E=Sophos;i="5.70,329,1574139600"; d="scan'208";a="11430779" From: Roger Pau Monne To: Date: Fri, 17 Jan 2020 10:52:50 +0100 Message-ID: <20200117095251.42668-2-roger.pau@citrix.com> X-Mailer: git-send-email 2.25.0 In-Reply-To: <20200117095251.42668-1-roger.pau@citrix.com> References: <20200117095251.42668-1-roger.pau@citrix.com> MIME-Version: 1.0 Subject: [Xen-devel] [PATCH v3 1/2] x86/smp: move and clean APIC helpers X-BeenThere: xen-devel@lists.xenproject.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: Xen developer discussion List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Cc: Andrew Cooper , Wei Liu , Jan Beulich , Roger Pau Monne Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Errors-To: xen-devel-bounces@lists.xenproject.org Sender: "Xen-devel" X-ZohoMail-DKIM: fail (Header signature does not verify) Move __prepare_ICR{2}, apic_wait_icr_idle and __default_send_IPI_shortcut to the top of the file, since they will be used by send_IPI_mask in future changes. While there, take the opportunity to remove the leading underscores, drop the inline attribute, drop the default prefix from the shorthand helper, change the return type of the prepare helpers to unsigned and do some minor style cleanups. No functional change intended. Signed-off-by: Roger Pau Monn=C3=A9 Reviewed-by: Jan Beulich --- Changes since v2: - New in this version. --- xen/arch/x86/smp.c | 83 ++++++++++++++++++++++------------------------ 1 file changed, 39 insertions(+), 44 deletions(-) diff --git a/xen/arch/x86/smp.c b/xen/arch/x86/smp.c index c8e5913e47..c14f304c09 100644 --- a/xen/arch/x86/smp.c +++ b/xen/arch/x86/smp.c @@ -23,6 +23,40 @@ #include #include =20 +/* Helper functions to prepare APIC register values. */ +static unsigned int prepare_ICR(unsigned int shortcut, int vector) +{ + return APIC_DM_FIXED | shortcut | vector; +} + +static unsigned int prepare_ICR2(unsigned int mask) +{ + return SET_xAPIC_DEST_FIELD(mask); +} + +void apic_wait_icr_idle(void) +{ + if ( x2apic_enabled ) + return; + + while ( apic_read(APIC_ICR) & APIC_ICR_BUSY ) + cpu_relax(); +} + +/* Helper for sending APIC IPIs using a shorthand. */ +static void send_IPI_shortcut(unsigned int shortcut, int vector, + unsigned int dest) +{ + unsigned int cfg; + + /* Wait for idle. */ + apic_wait_icr_idle(); + /* Prepare target chip field. */ + cfg =3D prepare_ICR(shortcut, vector) | dest; + /* Send the IPI. The write to APIC_ICR fires this off. */ + apic_write(APIC_ICR, cfg); +} + /* * send_IPI_mask(cpumask, vector): sends @vector IPI to CPUs in @cpumask, * excluding the local CPU. @cpumask may be empty. @@ -80,48 +114,9 @@ void send_IPI_self(int vector) * The following functions deal with sending IPIs between CPUs. */ =20 -static inline int __prepare_ICR (unsigned int shortcut, int vector) -{ - return APIC_DM_FIXED | shortcut | vector; -} - -static inline int __prepare_ICR2 (unsigned int mask) -{ - return SET_xAPIC_DEST_FIELD(mask); -} - -void apic_wait_icr_idle(void) -{ - if ( x2apic_enabled ) - return; - - while ( apic_read( APIC_ICR ) & APIC_ICR_BUSY ) - cpu_relax(); -} - -static void __default_send_IPI_shortcut(unsigned int shortcut, int vector, - unsigned int dest) -{ - unsigned int cfg; - - /* - * Wait for idle. - */ - apic_wait_icr_idle(); - - /* - * prepare target chip field - */ - cfg =3D __prepare_ICR(shortcut, vector) | dest; - /* - * Send the IPI. The write to APIC_ICR fires this off. - */ - apic_write(APIC_ICR, cfg); -} - void send_IPI_self_legacy(uint8_t vector) { - __default_send_IPI_shortcut(APIC_DEST_SELF, vector, APIC_DEST_PHYSICAL= ); + send_IPI_shortcut(APIC_DEST_SELF, vector, APIC_DEST_PHYSICAL); } =20 void send_IPI_mask_flat(const cpumask_t *cpumask, int vector) @@ -145,13 +140,13 @@ void send_IPI_mask_flat(const cpumask_t *cpumask, int= vector) /* * prepare target chip field */ - cfg =3D __prepare_ICR2(mask); + cfg =3D prepare_ICR2(mask); apic_write(APIC_ICR2, cfg); =20 /* * program the ICR */ - cfg =3D __prepare_ICR(0, vector) | APIC_DEST_LOGICAL; + cfg =3D prepare_ICR(0, vector) | APIC_DEST_LOGICAL; =20 /* * Send the IPI. The write to APIC_ICR fires this off. @@ -181,13 +176,13 @@ void send_IPI_mask_phys(const cpumask_t *mask, int ve= ctor) /* * prepare target chip field */ - cfg =3D __prepare_ICR2(cpu_physical_id(query_cpu)); + cfg =3D prepare_ICR2(cpu_physical_id(query_cpu)); apic_write(APIC_ICR2, cfg); =20 /* * program the ICR */ - cfg =3D __prepare_ICR(0, vector) | APIC_DEST_PHYSICAL; + cfg =3D prepare_ICR(0, vector) | APIC_DEST_PHYSICAL; =20 /* * Send the IPI. The write to APIC_ICR fires this off. --=20 2.25.0 _______________________________________________ Xen-devel mailing list Xen-devel@lists.xenproject.org https://lists.xenproject.org/mailman/listinfo/xen-devel