From nobody Sun Mar 9 21:35:58 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=reject dis=none) header.from=citrix.com ARC-Seal: i=1; a=rsa-sha256; t=1741273091; cv=none; d=zohomail.com; s=zohoarc; b=MWTx/0ch37GGHIZDtoJQoruVPlTQuTwcOiEooj4noXm1z19C3IVGsLeUvkkUyKjby+nSi3Lwz34heRXJiA3N1HtRZMSd1DNt/zp1PgHo6nchnJsjzLn30WozVF+Z334dTYr4pyt8qkwm+b113bf0sCqHlpinlJyaNTZOAJ2CvdM= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1741273091; 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=H7pow39J9Fqm1i6O6VXYZWww5I3btdSW6Ay9WFCMqtw=; b=EucH/llkkLJg2/L0bArrxinOu9Qo+ngpQE1/rfrhygAPfDgZglc8+R4jJvxCO5YX+tnkleeLlFsHFUWffX7HLdR6Vgiiu3QKws2fXOR3vx/ldAXL7w6aYoMbw40IyiIFUASN859NtrP+Ptl9oi+9yjSWSBcm5SekXr/VWEk7KXk= 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=reject dis=none) Return-Path: Received: from lists.xenproject.org (lists.xenproject.org [192.237.175.120]) by mx.zohomail.com with SMTPS id 1741273091946743.9818279399758; Thu, 6 Mar 2025 06:58:11 -0800 (PST) Received: from list by lists.xenproject.org with outflank-mailman.903669.1311640 (Exim 4.92) (envelope-from ) id 1tqCfZ-0003ZM-Lk; Thu, 06 Mar 2025 14:57:53 +0000 Received: by outflank-mailman (output) from mailman id 903669.1311640; Thu, 06 Mar 2025 14:57:53 +0000 Received: from localhost ([127.0.0.1] helo=lists.xenproject.org) by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from ) id 1tqCfZ-0003ZF-J6; Thu, 06 Mar 2025 14:57:53 +0000 Received: by outflank-mailman (input) for mailman id 903669; Thu, 06 Mar 2025 14:57:52 +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 1tqCfY-0003Ye-8V for xen-devel@lists.xenproject.org; Thu, 06 Mar 2025 14:57:52 +0000 Received: from mail-ed1-x52d.google.com (mail-ed1-x52d.google.com [2a00:1450:4864:20::52d]) by se1-gles-flk1.inumbo.com (Halon) with ESMTPS id 5f72d3b3-fa9b-11ef-9898-31a8f345e629; Thu, 06 Mar 2025 15:57:50 +0100 (CET) Received: by mail-ed1-x52d.google.com with SMTP id 4fb4d7f45d1cf-5dee07e51aaso1404598a12.3 for ; Thu, 06 Mar 2025 06:57:50 -0800 (PST) Received: from localhost ([84.78.159.3]) by smtp.gmail.com with UTF8SMTPSA id a640c23a62f3a-ac239736806sm107856366b.114.2025.03.06.06.57.48 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 06 Mar 2025 06:57:48 -0800 (PST) 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: 5f72d3b3-fa9b-11ef-9898-31a8f345e629 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=citrix.com; s=google; t=1741273069; x=1741877869; 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=H7pow39J9Fqm1i6O6VXYZWww5I3btdSW6Ay9WFCMqtw=; b=rfkBSziw1v1FTEDZQ7iBZGUJlVlcf0rSThsFM02l/2Kr1u4l2OL0SRlXCUqY+Xe1LZ FPHtZ4RWGqZys6H1Ctk5WxUEczlHCeTmGcKUaZ33ky94WFNmyqGAcCAfP1kaCJiHWrQg rCuowRGw26+W+h7Hbq4rtUqBnrdMq3kJP5Yms= X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1741273069; x=1741877869; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=H7pow39J9Fqm1i6O6VXYZWww5I3btdSW6Ay9WFCMqtw=; b=EjMWK0DOSk9ZJBivjf2BTxLp9smH7jrk4vCnLHUj7X9OsGXjzNuZcGZwytxpCrGDGW UizGBNeWaWXQH2xpAex4a6wyDXs5HJI64vQIMmDpdcx4A9CwkCZvmZWXTUS0hUzQ6ALa kZAcMEMuEUaujbkaEUX0Yevhc5zCUcJ20OcaOw71iSVSRYbBz7QhXEKPOoUlp8yGXzLa qN+16NVYCz/Szh7/kHp8QFoUyAka+4gSM8SpVQNebwA/DDZ+ip2o+gWRH8uXm0JjjNzw EDMs49MawpMACacH78LWvDAYk5feebWcMrACE7lbzpIddRLmiOCBV2ydHEN7ADQU4K0d o/uA== X-Gm-Message-State: AOJu0Yzo0jO4RqRvCEPr5f1QdkoTHmwA2acwolSKO77LwKHXqo6qxItZ 6V2yYlyW9pJMcIZKiIMgdU6nVmmpCjpIcMuOZ2f35oIB///TRG6C/hF48UwUmLaSLIYDGehyoEt W X-Gm-Gg: ASbGncvlCad4YC4w4Qu1BhATls8lFoB8PsnEj2gMm6fEvrSa/ZS2JFSTsnvDQZs67Oy VLtOrSbCgmSopbVYxA3h3+lWiaGHBhgNSLWK+tnjLK4IzxUwXYK4bzyl7LoPFODj9n73Nrsdk3L lc6W6XeCFrkv7pqcTwZGVNP9ZEe0v1JBiGOb0JokRTuZ9PaeuP/wHTU1j+RIo5HPaW6B9G9iNNg WcaOUokh4nk/2gjyb1DcHdHOLUi554d19x/JzxvPW+aa4ghMkzGt/fZTHaAJz6LfNBfmcjmP2ym g+SBrlzWiITjmxx5NtpP+fhJVchS8UwFveKmjMQOSyYY4E6bhg== X-Google-Smtp-Source: AGHT+IG4mF3y+mP2g16zoYYgZihbJs/9r+0n2H/r6BcnwQ4z1OO4c95bb6eKQRmnnXveCwH5993pYw== X-Received: by 2002:a17:907:8b97:b0:ac1:d8a9:f853 with SMTP id a640c23a62f3a-ac20e1db11amr826930266b.48.1741273068824; Thu, 06 Mar 2025 06:57:48 -0800 (PST) From: Roger Pau Monne To: xen-devel@lists.xenproject.org Cc: Roger Pau Monne , Jan Beulich , Andrew Cooper Subject: [PATCH v2 1/3] x86/apic: remove delivery and destination mode fields from drivers Date: Thu, 6 Mar 2025 15:57:31 +0100 Message-ID: <20250306145733.99927-2-roger.pau@citrix.com> X-Mailer: git-send-email 2.48.1 In-Reply-To: <20250306145733.99927-1-roger.pau@citrix.com> References: <20250306145733.99927-1-roger.pau@citrix.com> MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable X-ZohoMail-DKIM: pass (identity @citrix.com) X-ZM-MESSAGEID: 1741273094336019100 All local APIC drivers use physical destination and fixed delivery modes, remove the fields from the genapic struct and simplify the logic. No functional change intended. Signed-off-by: Roger Pau Monn=C3=A9 Reviewed-by: Andrew Cooper --- xen/arch/x86/genapic/bigsmp.c | 2 -- xen/arch/x86/genapic/default.c | 2 -- xen/arch/x86/genapic/x2apic.c | 4 ---- xen/arch/x86/include/asm/genapic.h | 5 ----- xen/arch/x86/io_apic.c | 16 ++++++++-------- xen/arch/x86/msi.c | 11 +++-------- 6 files changed, 11 insertions(+), 29 deletions(-) diff --git a/xen/arch/x86/genapic/bigsmp.c b/xen/arch/x86/genapic/bigsmp.c index b2e721845275..ddb3a0b5d727 100644 --- a/xen/arch/x86/genapic/bigsmp.c +++ b/xen/arch/x86/genapic/bigsmp.c @@ -46,8 +46,6 @@ static int __init cf_check probe_bigsmp(void) =20 const struct genapic __initconst_cf_clobber apic_bigsmp =3D { APIC_INIT("bigsmp", probe_bigsmp), - .int_delivery_mode =3D dest_Fixed, - .int_dest_mode =3D 0, /* physical delivery */ .init_apic_ldr =3D init_apic_ldr_phys, .vector_allocation_cpumask =3D vector_allocation_cpumask_phys, .cpu_mask_to_apicid =3D cpu_mask_to_apicid_phys, diff --git a/xen/arch/x86/genapic/default.c b/xen/arch/x86/genapic/default.c index 59c79afdb8fa..16e1875f6378 100644 --- a/xen/arch/x86/genapic/default.c +++ b/xen/arch/x86/genapic/default.c @@ -16,8 +16,6 @@ /* should be called last. */ const struct genapic __initconst_cf_clobber apic_default =3D { APIC_INIT("default", NULL), - .int_delivery_mode =3D dest_Fixed, - .int_dest_mode =3D 0, /* physical delivery */ .init_apic_ldr =3D init_apic_ldr_flat, .vector_allocation_cpumask =3D vector_allocation_cpumask_phys, .cpu_mask_to_apicid =3D cpu_mask_to_apicid_phys, diff --git a/xen/arch/x86/genapic/x2apic.c b/xen/arch/x86/genapic/x2apic.c index c277f4f79b0a..74a6d808ac30 100644 --- a/xen/arch/x86/genapic/x2apic.c +++ b/xen/arch/x86/genapic/x2apic.c @@ -140,8 +140,6 @@ static void cf_check send_IPI_mask_x2apic_cluster( =20 static const struct genapic __initconst_cf_clobber apic_x2apic_phys =3D { APIC_INIT("x2apic_phys", NULL), - .int_delivery_mode =3D dest_Fixed, - .int_dest_mode =3D 0 /* physical delivery */, .init_apic_ldr =3D init_apic_ldr_phys, .vector_allocation_cpumask =3D vector_allocation_cpumask_phys, .cpu_mask_to_apicid =3D cpu_mask_to_apicid_phys, @@ -163,8 +161,6 @@ static const struct genapic __initconst_cf_clobber apic= _x2apic_mixed =3D { * The following fields are exclusively used by external interrupts and * hence are set to use Physical destination mode handlers. */ - .int_delivery_mode =3D dest_Fixed, - .int_dest_mode =3D 0 /* physical delivery */, .vector_allocation_cpumask =3D vector_allocation_cpumask_phys, .cpu_mask_to_apicid =3D cpu_mask_to_apicid_phys, =20 diff --git a/xen/arch/x86/include/asm/genapic.h b/xen/arch/x86/include/asm/= genapic.h index cf36d48f3b07..04d3f1de7a1f 100644 --- a/xen/arch/x86/include/asm/genapic.h +++ b/xen/arch/x86/include/asm/genapic.h @@ -23,9 +23,6 @@ struct genapic { const char *name; int (*probe)(void); =20 - /* Interrupt delivery parameters ('physical' vs. 'logical flat'). */ - int int_delivery_mode; - int int_dest_mode; void (*init_apic_ldr)(void); const cpumask_t *(*vector_allocation_cpumask)(int cpu); unsigned int (*cpu_mask_to_apicid)(const cpumask_t *cpumask); @@ -37,8 +34,6 @@ struct genapic { .name =3D aname, \ .probe =3D aprobe =20 -#define INT_DELIVERY_MODE (genapic.int_delivery_mode) -#define INT_DEST_MODE (genapic.int_dest_mode) #define TARGET_CPUS ((const typeof(cpu_online_map) *)&cpu_online_map) #define init_apic_ldr() alternative_vcall(genapic.init_apic_ldr) #define cpu_mask_to_apicid(mask) ({ \ diff --git a/xen/arch/x86/io_apic.c b/xen/arch/x86/io_apic.c index 776dd57720a2..60b39827c851 100644 --- a/xen/arch/x86/io_apic.c +++ b/xen/arch/x86/io_apic.c @@ -1080,8 +1080,8 @@ static void __init setup_IO_APIC_irqs(void) */ memset(&entry,0,sizeof(entry)); =20 - entry.delivery_mode =3D INT_DELIVERY_MODE; - entry.dest_mode =3D INT_DEST_MODE; + entry.delivery_mode =3D dest_Fixed; + entry.dest_mode =3D 0; entry.mask =3D 0; /* enable IRQ */ =20 idx =3D find_irq_entry(apic,pin,mp_INT); @@ -1150,10 +1150,10 @@ static void __init setup_ExtINT_IRQ0_pin(unsigned i= nt apic, unsigned int pin, in * We use logical delivery to get the timer IRQ * to the first CPU. */ - entry.dest_mode =3D INT_DEST_MODE; + entry.dest_mode =3D 0; entry.mask =3D 0; /* unmask IRQ now */ SET_DEST(entry, logical, cpu_mask_to_apicid(TARGET_CPUS)); - entry.delivery_mode =3D INT_DELIVERY_MODE; + entry.delivery_mode =3D dest_Fixed; entry.polarity =3D 0; entry.trigger =3D 0; entry.vector =3D vector; @@ -2338,8 +2338,8 @@ int io_apic_set_pci_routing (int ioapic, int pin, int= irq, int edge_level, int a =20 memset(&entry,0,sizeof(entry)); =20 - entry.delivery_mode =3D INT_DELIVERY_MODE; - entry.dest_mode =3D INT_DEST_MODE; + entry.delivery_mode =3D dest_Fixed; + entry.dest_mode =3D 0; entry.trigger =3D edge_level; entry.polarity =3D active_high_low; entry.mask =3D 1; @@ -2473,8 +2473,8 @@ int ioapic_guest_write(unsigned long physbase, unsign= ed int reg, u32 val) * The guest does not know physical APIC arrangement (flat vs. cluster= ). * Apply genapic conventions for this platform. */ - rte.delivery_mode =3D INT_DELIVERY_MODE; - rte.dest_mode =3D INT_DEST_MODE; + rte.delivery_mode =3D dest_Fixed; + rte.dest_mode =3D 0; =20 irq =3D apic_pin_2_gsi_irq(apic, pin); if ( irq < 0 ) diff --git a/xen/arch/x86/msi.c b/xen/arch/x86/msi.c index bf5b71822ea9..6c11d76015fb 100644 --- a/xen/arch/x86/msi.c +++ b/xen/arch/x86/msi.c @@ -174,18 +174,13 @@ void msi_compose_msg(unsigned vector, const cpumask_t= *cpu_mask, struct msi_msg =20 msg->address_hi =3D MSI_ADDR_BASE_HI; msg->address_lo =3D MSI_ADDR_BASE_LO | - (INT_DEST_MODE ? MSI_ADDR_DESTMODE_LOGIC - : MSI_ADDR_DESTMODE_PHYS) | - ((INT_DELIVERY_MODE !=3D dest_LowestPrio) - ? MSI_ADDR_REDIRECTION_CPU - : MSI_ADDR_REDIRECTION_LOWPRI) | + MSI_ADDR_DESTMODE_PHYS | + MSI_ADDR_REDIRECTION_CPU | MSI_ADDR_DEST_ID(msg->dest32); =20 msg->data =3D MSI_DATA_TRIGGER_EDGE | MSI_DATA_LEVEL_ASSERT | - ((INT_DELIVERY_MODE !=3D dest_LowestPrio) - ? MSI_DATA_DELIVERY_FIXED - : MSI_DATA_DELIVERY_LOWPRI) | + MSI_DATA_DELIVERY_FIXED | MSI_DATA_VECTOR(vector); } =20 --=20 2.48.1 From nobody Sun Mar 9 21:35:58 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=reject dis=none) header.from=citrix.com ARC-Seal: i=1; a=rsa-sha256; t=1741273091; cv=none; d=zohomail.com; s=zohoarc; b=c/bvBpGBX2qE2yYX3gcw7YiJ0HP8bWXgRs4U/MRc5u1mbaJqTYMlflKh17R7oA7SCK1+0+VwRK9J0Rp4btOnnBsLA5myZQgoLnxrco/Li2cBmbEUivVLxPcnRjuETuvHJ/9xnNagDCnrtvRhjk9HD0hD0lUuG/hPBeXoNLN+KFU= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1741273091; 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=vNP8vm8lWdnrLbuaqz+aHqlLq12YGejtAmi/o97vgI4=; b=Rp/M8qwfyfnrKT3m4yAUlundX30vfW1w04O8B6IhhHi0+jffp+OlROg84k1Tt26EyRMxSbYScoRgbefrDfECW4RAH0ACxs+fOuvhAQ3tAy1nHCsF+o2Imx3PLYPMeWuha5U9xoZYP6zPl+Yt6QEfsIEPvPV5e6T7JgnAz7K05QE= 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=reject dis=none) Return-Path: Received: from lists.xenproject.org (lists.xenproject.org [192.237.175.120]) by mx.zohomail.com with SMTPS id 1741273091527279.4527639206834; Thu, 6 Mar 2025 06:58:11 -0800 (PST) Received: from list by lists.xenproject.org with outflank-mailman.903670.1311644 (Exim 4.92) (envelope-from ) id 1tqCfZ-0003cC-TQ; Thu, 06 Mar 2025 14:57:53 +0000 Received: by outflank-mailman (output) from mailman id 903670.1311644; Thu, 06 Mar 2025 14:57:53 +0000 Received: from localhost ([127.0.0.1] helo=lists.xenproject.org) by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from ) id 1tqCfZ-0003ba-QD; Thu, 06 Mar 2025 14:57:53 +0000 Received: by outflank-mailman (input) for mailman id 903670; Thu, 06 Mar 2025 14:57:52 +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 1tqCfY-0003Ye-Tn for xen-devel@lists.xenproject.org; Thu, 06 Mar 2025 14:57:52 +0000 Received: from mail-ej1-x634.google.com (mail-ej1-x634.google.com [2a00:1450:4864:20::634]) by se1-gles-flk1.inumbo.com (Halon) with ESMTPS id 60063f9f-fa9b-11ef-9898-31a8f345e629; Thu, 06 Mar 2025 15:57:51 +0100 (CET) Received: by mail-ej1-x634.google.com with SMTP id a640c23a62f3a-ac202264f9cso142640466b.0 for ; Thu, 06 Mar 2025 06:57:51 -0800 (PST) Received: from localhost ([84.78.159.3]) by smtp.gmail.com with UTF8SMTPSA id a640c23a62f3a-ac2397366b0sm108721266b.95.2025.03.06.06.57.49 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 06 Mar 2025 06:57:49 -0800 (PST) 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: 60063f9f-fa9b-11ef-9898-31a8f345e629 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=citrix.com; s=google; t=1741273070; x=1741877870; 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=vNP8vm8lWdnrLbuaqz+aHqlLq12YGejtAmi/o97vgI4=; b=TJdmp6Zu2lFXbVJPlBCUJK3UujvTS4qKcLTax0etcuECMKZcTocI2ytum4Lcz+lefG hSrk2PlVB05Uvq7kzDGgr0M7OxamurAdQCDRGCWFkw+xUWbI5ym3+mdif2bTHt9eFath hzGqjBzYfZvE/abCID7GfBiy0avKXlhiPSd+c= X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1741273070; x=1741877870; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=vNP8vm8lWdnrLbuaqz+aHqlLq12YGejtAmi/o97vgI4=; b=jdSISu1sUrXdTAmk5CDL7X4S8naIi8rUY1RFa/BDWN57u3yM7JwAZxXZreXMXvH6bm 9RoV58fpuQKJaW5YFy58smqLnoWQkicGUScpvXGHxQlUy5n8O17DzpULSg9hI+lRa3S5 m/2WDTAMOsi4+L4tADiCZg5fAgXHrDhsymkLjTHAeLN/2YIH4nEmKkwqYcL4i6Hzn2l9 QppPfsCuOIxPAq1lVC2Z3Xxg0KEzuRE8eDiT0uIRGsD+BrYucBHRWzuTXRd7mie5s8sO jWj6bRvN4S+5CXMDYTHjZ8wkIF16b2Ahv+Kzs0zMcS88mZqbq7t3W5uL1OEacZ3QgGH3 4VXA== X-Gm-Message-State: AOJu0YwYSEdoHh3/8nNbWCQVTyewLMkXSBFghJjH4t08cLvX4Vsl6y8J fozrjJY0hU/f6fXLBJaVNxpHZ5xcAjjGFxGX2MYuM0NFFG8n8aUoxTUFZdCo7NEbNfqLanVKFvH 1 X-Gm-Gg: ASbGncuuN+lN0kKKONbC/V5GzkJBLuptNuuKm4Y62XzMMNeaMdurhLKfZQ7fbK4cgv5 RH7MR0hLnDSNUDoqGnkqnXANTfVVPplyDK8p2Ck2052yERtCXWcszva44mq2RyliIzzqLctUkNw SCkI5/jLqzPOMY06qisUYg3QL7bSaBfhIqWj/dPu9etLMpRYnj7qel9Mpn03IdBoRULr4AxgZUI khF9w0WKDPXRksRlJ1JozwgHqKJV3VT2M/SOty5wAbVGdAbOj0+gMMwZ3J9hkFMjAiGp2xIsL6M njHMDvTRGNZmMgg1ceGeii5qsC+e/MuT/I/JKloHrelYS7u2qw== X-Google-Smtp-Source: AGHT+IG0pm1OZ77YuKmjL3LH/3H8U9L5m9NV2t1kaq5tZs3yxKMeA8gmbqAImUfjwe6gxUaizZysVw== X-Received: by 2002:a17:907:7ea6:b0:ac1:e00c:a561 with SMTP id a640c23a62f3a-ac20dac2c06mr781304266b.18.1741273070145; Thu, 06 Mar 2025 06:57:50 -0800 (PST) From: Roger Pau Monne To: xen-devel@lists.xenproject.org Cc: Roger Pau Monne , Jan Beulich , Andrew Cooper Subject: [PATCH v2 2/3] x86/msi: don't use cached address and data fields in msi_desc for dump_msi() Date: Thu, 6 Mar 2025 15:57:32 +0100 Message-ID: <20250306145733.99927-3-roger.pau@citrix.com> X-Mailer: git-send-email 2.48.1 In-Reply-To: <20250306145733.99927-1-roger.pau@citrix.com> References: <20250306145733.99927-1-roger.pau@citrix.com> MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable X-ZohoMail-DKIM: pass (identity @citrix.com) X-ZM-MESSAGEID: 1741273092169019000 Instead compose a dummy MSI message just for the purpose of getting the delivery attributes, which are the same for all messages. Note that the previous usage of the cached MSI message wasn't fetching the hardware MSI fields either. No functional change intended. Signed-off-by: Roger Pau Monn=C3=A9 --- xen/arch/x86/msi.c | 17 ++++++++++++----- 1 file changed, 12 insertions(+), 5 deletions(-) diff --git a/xen/arch/x86/msi.c b/xen/arch/x86/msi.c index 6c11d76015fb..8efe41b1526c 100644 --- a/xen/arch/x86/msi.c +++ b/xen/arch/x86/msi.c @@ -1454,6 +1454,16 @@ void __init early_msi_init(void) static void cf_check dump_msi(unsigned char key) { unsigned int irq; + struct msi_msg msg =3D {}; + uint32_t addr, data; + + /* + * Compose a dummy msg message for the purpose of getting the delivery + * attributes. + */ + msi_compose_msg(FIRST_DYNAMIC_VECTOR, NULL, &msg); + addr =3D msg.address_lo; + data =3D msg.data; =20 printk("MSI information:\n"); =20 @@ -1461,7 +1471,7 @@ static void cf_check dump_msi(unsigned char key) { struct irq_desc *desc =3D irq_to_desc(irq); const struct msi_desc *entry; - u32 addr, data, dest32; + uint32_t dest32; signed char mask; struct msi_attrib attr; unsigned long flags; @@ -1495,8 +1505,6 @@ static void cf_check dump_msi(unsigned char key) break; } =20 - data =3D entry->msg.data; - addr =3D entry->msg.address_lo; dest32 =3D entry->msg.dest32; attr =3D entry->msi_attrib; if ( entry->msi_attrib.type ) @@ -1512,8 +1520,7 @@ static void cf_check dump_msi(unsigned char key) mask =3D '?'; printk(" %-6s%4u vec=3D%02x%7s%6s%3sassert%5s%7s" " dest=3D%08x mask=3D%d/%c%c/%c\n", - type, irq, - (data & MSI_DATA_VECTOR_MASK) >> MSI_DATA_VECTOR_SHIFT, + type, irq, desc->arch.vector, data & MSI_DATA_DELIVERY_LOWPRI ? "lowest" : "fixed", data & MSI_DATA_TRIGGER_LEVEL ? "level" : "edge", data & MSI_DATA_LEVEL_ASSERT ? "" : "de", --=20 2.48.1 From nobody Sun Mar 9 21:35:58 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=reject dis=none) header.from=citrix.com ARC-Seal: i=1; a=rsa-sha256; t=1741273096; cv=none; d=zohomail.com; s=zohoarc; b=WwL3AlichlG14TvxaxF3dzB1X1izgt8MrK/HXp0ji0Hes+QdNkS11n8y7e+BQHq2AeyEQAPSZlt5zEEr/R3CPiKXUlz5xKkdPYGhwLqUChjTAe/EonM1D7wgyZL152BW3mhhLlgBm8NQZWku00kQQQ9yEci8cYaZTI6to2CM/kc= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1741273096; 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=B0ajY6/Y8/keQc8NjGLWYTwjQvi4qUcVQxavVZsdDtc=; b=F5Ng1cBuWEcf2fB5kgEbea/fp3Q91budGNT0jHsHkwg/MhUuSh98ahWUjNpzuQGdifqE4uM2rJd5h/B0RzkMsawaooi3ci53zZN+BLZo9elTLgpYdHnR/ki06QnWgSx73qvfaBNoPTgiANOaU/KNTyFckwLd0i1Mr7VFG4dTyX4= 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=reject dis=none) Return-Path: Received: from lists.xenproject.org (lists.xenproject.org [192.237.175.120]) by mx.zohomail.com with SMTPS id 1741273096183771.6210570896069; Thu, 6 Mar 2025 06:58:16 -0800 (PST) Received: from list by lists.xenproject.org with outflank-mailman.903671.1311661 (Exim 4.92) (envelope-from ) id 1tqCfb-00042I-6H; Thu, 06 Mar 2025 14:57:55 +0000 Received: by outflank-mailman (output) from mailman id 903671.1311661; Thu, 06 Mar 2025 14:57:55 +0000 Received: from localhost ([127.0.0.1] helo=lists.xenproject.org) by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from ) id 1tqCfb-00042D-2P; Thu, 06 Mar 2025 14:57:55 +0000 Received: by outflank-mailman (input) for mailman id 903671; Thu, 06 Mar 2025 14:57:54 +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 1tqCfZ-0003Ye-U6 for xen-devel@lists.xenproject.org; Thu, 06 Mar 2025 14:57:53 +0000 Received: from mail-ej1-x632.google.com (mail-ej1-x632.google.com [2a00:1450:4864:20::632]) by se1-gles-flk1.inumbo.com (Halon) with ESMTPS id 60ae5c41-fa9b-11ef-9898-31a8f345e629; Thu, 06 Mar 2025 15:57:52 +0100 (CET) Received: by mail-ej1-x632.google.com with SMTP id a640c23a62f3a-abf615d5f31so149569966b.2 for ; Thu, 06 Mar 2025 06:57:52 -0800 (PST) Received: from localhost ([84.78.159.3]) by smtp.gmail.com with UTF8SMTPSA id a640c23a62f3a-ac2399d7da1sm108296266b.174.2025.03.06.06.57.50 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 06 Mar 2025 06:57:50 -0800 (PST) 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: 60ae5c41-fa9b-11ef-9898-31a8f345e629 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=citrix.com; s=google; t=1741273071; x=1741877871; 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=B0ajY6/Y8/keQc8NjGLWYTwjQvi4qUcVQxavVZsdDtc=; b=OSKIIfMV3Se6Dj1GgHVLdxoPO8T9oLTTV6PFQFMVEzBh5dkd2JAeLY7bVvLI4pmnfk 5V0RNZSk2B43ZASSIpZswAooAQws10lRZ6RU7Aqp3sgxqhfYOsm9pphIhU0+JDGbk+uU xCPIY3W6+nUjsDKaYndU+MCUrOY+yBuRkl8Rk= X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1741273071; x=1741877871; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=B0ajY6/Y8/keQc8NjGLWYTwjQvi4qUcVQxavVZsdDtc=; b=UrfD86Op3FzO4P5q3vn+W6vKIEIDzMUBb7FVjb021UvFgEMBZldm/M3SCTpHEw+Ofp RsxL2sj6SJiqxyk3+sg3UE6ry1sWxmCXg2qxJ38L4UCLyuuB14rF6wSNr2/P6gAJs7gA 86sxCfRH6+mPwYvqMk6O/rUDOwq+xPHG3whgYODdtw2zcOwWot4MCkHXqHggWNBpC4j3 3UVG3YB7YyXVkbGar622LgOIgpmA/mjkmmrkg7slJgCmcfGxyjWOQ+3xnynzC/kdkqJm +k3wB7OCY+j5kPqhk19sjhjgHDemUNFm1C8ASbXiorLFN3c8qYnw/+5BGtgZnKklwMdY 4Efg== X-Gm-Message-State: AOJu0YyKIzkN3Fhhxd8R+UE0E8VXaJbMIdqQb8tcy/0cmDq4PC/HbdUj baRaMmDlYWCOx8NeZDBbohEKjCdR0svbg4A/Jc5vA4jh6LLo05Ev0l8ahDKt4Q8zSLDuv65EtaQ V X-Gm-Gg: ASbGncsPxaVMYcbEk+PCSgSIR14h+oziq24tnf0fvlCCN1rFa1PzzbEPvBpZTl5pXeT cmXVv5xRQCd3+LM8HSf3Aj81FRCTC6bOCDMDRDsSqfNDWHmnqe7hNCCUWRvb7Hk/FjbySrgGvKw F+UuJNAScDWkimUk1LyQ1wCJaO+k/gjsE/pAlQVhmFqXjOlW/oSXflPivctfbhj3pqMG0rT5VRv RV8wXqrZaPfhi2G1e1TCfdnoIHhHSrGOtJlzYBmiW3EyHfGYXz4jEgEtdn8tFxqvjOJtYYscZcd sAMVRsqp5pFDG2SqJrg9UXvrc7kmVrhFCUjx8ZSWLIxCU6smiw== X-Google-Smtp-Source: AGHT+IE2B7p5OoJyNXIoaN0PqeztgJP7eTf3Cgh/ZrhNPresO+mqR0S9cIopnm16cGFXVTLk4TB4bA== X-Received: by 2002:a17:907:971c:b0:ac1:e881:89aa with SMTP id a640c23a62f3a-ac20d849e84mr720030066b.5.1741273071290; Thu, 06 Mar 2025 06:57:51 -0800 (PST) From: Roger Pau Monne To: xen-devel@lists.xenproject.org Cc: Roger Pau Monne , Jan Beulich , Andrew Cooper , Ross Lagerwall Subject: [PATCH v2 3/3] x86/msi: prevent MSI entry re-writes of the same data Date: Thu, 6 Mar 2025 15:57:33 +0100 Message-ID: <20250306145733.99927-4-roger.pau@citrix.com> X-Mailer: git-send-email 2.48.1 In-Reply-To: <20250306145733.99927-1-roger.pau@citrix.com> References: <20250306145733.99927-1-roger.pau@citrix.com> MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable X-ZohoMail-DKIM: pass (identity @citrix.com) X-ZM-MESSAGEID: 1741273098163019000 Attempt to reduce the MSI entry writes, and the associated checking whether memory decoding and MSI-X is enabled for the PCI device, when the MSI data hasn't changed. When using Interrupt Remapping the MSI entry will contain an index into the remapping table, and it's in such remapping table where the MSI vector and destination CPU is stored. As such, when using interrupt remapping, changes to the interrupt affinity shouldn't result in changes to the MSI entry, and the MSI entry update can be avoided. Signed-off-by: Roger Pau Monn=C3=A9 --- Cc: Ross Lagerwall --- Changes since v1: - Add more comments. - Simplify dma_msi_set_affinity(). --- xen/arch/x86/include/asm/msi.h | 5 +++- xen/arch/x86/msi.c | 45 ++++++++++++++++++++--------- xen/drivers/passthrough/vtd/iommu.c | 11 +++---- 3 files changed, 39 insertions(+), 22 deletions(-) diff --git a/xen/arch/x86/include/asm/msi.h b/xen/arch/x86/include/asm/msi.h index 378b85ee947b..4301c58c7c4d 100644 --- a/xen/arch/x86/include/asm/msi.h +++ b/xen/arch/x86/include/asm/msi.h @@ -124,7 +124,8 @@ struct msi_desc { int irq; int remap_index; /* index in interrupt remapping table */ =20 - struct msi_msg msg; /* Last set MSI message */ + /* Last set MSI message in remappable format if applicable */ + struct msi_msg msg; }; =20 /* @@ -236,6 +237,8 @@ struct arch_msix { }; =20 void early_msi_init(void); + +/* If cpu_mask is NULL msg->dest32 is used as the destination APIC ID. */ void msi_compose_msg(unsigned vector, const cpumask_t *cpu_mask, struct msi_msg *msg); void __msi_set_enable(pci_sbdf_t sbdf, int pos, int enable); diff --git a/xen/arch/x86/msi.c b/xen/arch/x86/msi.c index 8efe41b1526c..3c9fdc9b7bf5 100644 --- a/xen/arch/x86/msi.c +++ b/xen/arch/x86/msi.c @@ -152,11 +152,13 @@ static bool msix_memory_decoded(const struct pci_dev = *dev, unsigned int pos) } =20 /* - * MSI message composition + * MSI message composition. + * If cpu_mask is NULL msg->dest32 is used as the destination APIC ID. */ void msi_compose_msg(unsigned vector, const cpumask_t *cpu_mask, struct ms= i_msg *msg) { - memset(msg, 0, sizeof(*msg)); + msg->address =3D 0; + msg->data =3D 0; =20 if ( vector < FIRST_DYNAMIC_VECTOR ) return; @@ -186,8 +188,6 @@ void msi_compose_msg(unsigned vector, const cpumask_t *= cpu_mask, struct msi_msg =20 static int write_msi_msg(struct msi_desc *entry, struct msi_msg *msg) { - entry->msg =3D *msg; - if ( iommu_intremap !=3D iommu_intremap_off ) { int rc; @@ -198,6 +198,20 @@ static int write_msi_msg(struct msi_desc *entry, struc= t msi_msg *msg) return rc; } =20 + /* + * Avoid updating the MSI entry if the address and data fields haven't + * changed. When using interrupt remapping changing the MSI affinity + * shouldn't change the interrupt remapping table index, and hence the= MSI + * address and data fields should remain the same. + */ + if ( entry->msg.address =3D=3D msg->address && entry->msg.data =3D=3D = msg->data ) + { + entry->msg.dest32 =3D msg->dest32; + return 0; + } + + entry->msg =3D *msg; + switch ( entry->msi_attrib.type ) { case PCI_CAP_ID_MSI: @@ -243,21 +257,15 @@ static int write_msi_msg(struct msi_desc *entry, stru= ct msi_msg *msg) void cf_check set_msi_affinity(struct irq_desc *desc, const cpumask_t *mas= k) { struct msi_msg msg; - unsigned int dest; struct msi_desc *msi_desc =3D desc->msi_desc; =20 - dest =3D set_desc_affinity(desc, mask); - if ( dest =3D=3D BAD_APICID || !msi_desc ) + msg.dest32 =3D set_desc_affinity(desc, mask); + if ( msg.dest32 =3D=3D BAD_APICID || !msi_desc ) return; =20 ASSERT(spin_is_locked(&desc->lock)); =20 - msg =3D msi_desc->msg; - msg.data &=3D ~MSI_DATA_VECTOR_MASK; - msg.data |=3D MSI_DATA_VECTOR(desc->arch.vector); - msg.address_lo &=3D ~MSI_ADDR_DEST_ID_MASK; - msg.address_lo |=3D MSI_ADDR_DEST_ID(dest); - msg.dest32 =3D dest; + msi_compose_msg(desc->arch.vector, NULL, &msg); =20 write_msi_msg(msi_desc, &msg); } @@ -1402,7 +1410,16 @@ int pci_restore_msi_state(struct pci_dev *pdev) } type =3D entry->msi_attrib.type; =20 - msg =3D entry->msg; + /* + * Instead of re-writing the current MSI message, regenerate it and + * force a write, as that's simpler than adding support for writing + * already translated messages. + */ + msg.dest32 =3D entry->msg.dest32; + /* Pass NULL as the cpu mask to use the value in msg.dest32. */ + msi_compose_msg(desc->arch.vector, NULL, &msg); + /* Zero the cached message to unconditionally trigger a re-write. = */ + entry->msg =3D (typeof(entry->msg)){}; write_msi_msg(entry, &msg); =20 for ( i =3D 0; ; ) diff --git a/xen/drivers/passthrough/vtd/iommu.c b/xen/drivers/passthrough/= vtd/iommu.c index a1927d9f126d..e03e9dfbc595 100644 --- a/xen/drivers/passthrough/vtd/iommu.c +++ b/xen/drivers/passthrough/vtd/iommu.c @@ -1183,22 +1183,19 @@ static void cf_check dma_msi_set_affinity( struct irq_desc *desc, const cpumask_t *mask) { struct msi_msg msg; - unsigned int dest; unsigned long flags; struct vtd_iommu *iommu =3D desc->action->dev_id; =20 - dest =3D set_desc_affinity(desc, mask); - if (dest =3D=3D BAD_APICID){ + msg.dest32 =3D set_desc_affinity(desc, mask); + if ( msg.dest32 =3D=3D BAD_APICID ) + { dprintk(XENLOG_ERR VTDPREFIX, "Set iommu interrupt affinity error!= \n"); return; } =20 msi_compose_msg(desc->arch.vector, NULL, &msg); - msg.dest32 =3D dest; if (x2apic_enabled) - msg.address_hi =3D dest & 0xFFFFFF00; - ASSERT(!(msg.address_lo & MSI_ADDR_DEST_ID_MASK)); - msg.address_lo |=3D MSI_ADDR_DEST_ID(dest); + msg.address_hi =3D msg.dest32 & 0xFFFFFF00; iommu->msi.msg =3D msg; =20 spin_lock_irqsave(&iommu->register_lock, flags); --=20 2.48.1