[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

RE: [PATCH] IOMMU/x86: tidy adjust_irq_affinities hook


  • To: "Beulich, Jan" <JBeulich@xxxxxxxx>, "xen-devel@xxxxxxxxxxxxxxxxxxxx" <xen-devel@xxxxxxxxxxxxxxxxxxxx>
  • From: "Tian, Kevin" <kevin.tian@xxxxxxxxx>
  • Date: Mon, 14 Mar 2022 04:24:49 +0000
  • Accept-language: en-US
  • Arc-authentication-results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=intel.com; dmarc=pass action=none header.from=intel.com; dkim=pass header.d=intel.com; arc=none
  • Arc-message-signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=QHOmEgQovgBEG71i/B/HYiSJ1oDHWnojD6X9SvX1PEQ=; b=dIByqt6ZHr4V/pLn4MtmtG5ctzW4MdI7fWpaneGmd97lSB/jWaacCsXsiN8Saj5CmGgF+QpPRVsxSYdSUdv5WA+zsz/7fLJ4otsA3ZOmdIPdeIHhhiPruamUdkIbK6pINNDuMzz0jqnxmNu1p0spC+yYbnveTwxB/OA4F4OL1yorwx3GN6td27Ul91pjfi+meYo1WxFgw9OOYMqFUC3RGLBAtMFc1Jp4OyKW8rSBWr8qEoI0P9mgcR0pSjCVgYRQWZzBi1IDTqR0TYSrZs/VglwI1xrVcC+e4pF9rS1AtsqO6bmogEJps0wph7qsBJQUhjz61nskqSh5pmnCQDJ9Iw==
  • Arc-seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=ImSscckDbjVm2fD0857lr7ONj+UlFNIQF1pvGTiNF/xKsffmkyqU6AL7ujHR5dMDONoZHtkTQbvFNUhPwrFBEElu+dHaQSMco3flkAhFuAajXOs9XR7kgg36uW8HDeSJHFPeaVab0oapnFRoFeerHI+a+QDKv4H9M3oWP01uW3bPUrSuR6QTuXDM5LbGzGATgka+XH4dbZh+Nzver32qA0dnlJgEkH24CPiVl+gfYrgc4jKgXJP7HdiySou8QJ5hpHmgkN49U40Jcr+ZHl/cfwBf/cY2YsnmdfhVzMS/QHGL5UTYedj0jKbG0yWVLNLaILpYms6Mk8qt0YzIKumzlw==
  • Authentication-results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=intel.com;
  • Cc: Paul Durrant <paul@xxxxxxx>, "Cooper, Andrew" <andrew.cooper3@xxxxxxxxxx>
  • Delivery-date: Mon, 14 Mar 2022 04:24:58 +0000
  • List-id: Xen developer discussion <xen-devel.lists.xenproject.org>
  • Thread-index: AQHYMiCBwdBBME0p6k2Ozu7Ef1L2p6y+Uoqw
  • Thread-topic: [PATCH] IOMMU/x86: tidy adjust_irq_affinities hook

> From: Jan Beulich <jbeulich@xxxxxxxx>
> Sent: Monday, March 7, 2022 8:40 PM
> 
> As of 3e56754b0887 ("xen/cet: Fix __initconst_cf_clobber") there's no
> need for a non-void return value anymore, as the hook functions are no
> longer themselves passed to __initcall(). For the same reason the
> iommu_enabled checks can now move from the individual functions to the
> wrapper.
> 
> Signed-off-by: Jan Beulich <jbeulich@xxxxxxxx>

Reviewed-by: Kevin Tian <kevin.tian@xxxxxxxxx>

> 
> --- a/xen/arch/x86/include/asm/iommu.h
> +++ b/xen/arch/x86/include/asm/iommu.h
> @@ -101,11 +101,10 @@ void iommu_update_ire_from_apic(unsigned
>  unsigned int iommu_read_apic_from_ire(unsigned int apic, unsigned int reg);
>  int iommu_setup_hpet_msi(struct msi_desc *);
> 
> -static inline int iommu_adjust_irq_affinities(void)
> +static inline void iommu_adjust_irq_affinities(void)
>  {
> -    return iommu_ops.adjust_irq_affinities
> -           ? iommu_call(&iommu_ops, adjust_irq_affinities)
> -           : 0;
> +    if ( iommu_enabled && iommu_ops.adjust_irq_affinities )
> +        iommu_vcall(&iommu_ops, adjust_irq_affinities);
>  }
> 
>  static inline bool iommu_supports_x2apic(void)
> --- a/xen/drivers/passthrough/amd/iommu.h
> +++ b/xen/drivers/passthrough/amd/iommu.h
> @@ -234,7 +234,7 @@ int amd_iommu_prepare(bool xt);
>  int amd_iommu_init(bool xt);
>  int amd_iommu_init_late(void);
>  int amd_iommu_update_ivrs_mapping_acpi(void);
> -int cf_check iov_adjust_irq_affinities(void);
> +void cf_check iov_adjust_irq_affinities(void);
> 
>  int cf_check amd_iommu_quarantine_init(struct domain *d);
> 
> --- a/xen/drivers/passthrough/amd/iommu_init.c
> +++ b/xen/drivers/passthrough/amd/iommu_init.c
> @@ -809,13 +809,10 @@ static bool_t __init set_iommu_interrupt
>      return 1;
>  }
> 
> -int cf_check iov_adjust_irq_affinities(void)
> +void cf_check iov_adjust_irq_affinities(void)
>  {
>      const struct amd_iommu *iommu;
> 
> -    if ( !iommu_enabled )
> -        return 0;
> -
>      for_each_amd_iommu ( iommu )
>      {
>          struct irq_desc *desc = irq_to_desc(iommu->msi.irq);
> @@ -828,8 +825,6 @@ int cf_check iov_adjust_irq_affinities(v
>              set_msi_affinity(desc, NULL);
>          spin_unlock_irqrestore(&desc->lock, flags);
>      }
> -
> -    return 0;
>  }
> 
>  /*
> --- a/xen/drivers/passthrough/vtd/iommu.c
> +++ b/xen/drivers/passthrough/vtd/iommu.c
> @@ -2107,17 +2107,12 @@ static void adjust_irq_affinity(struct a
>      spin_unlock_irqrestore(&desc->lock, flags);
>  }
> 
> -static int cf_check adjust_vtd_irq_affinities(void)
> +static void cf_check adjust_vtd_irq_affinities(void)
>  {
>      struct acpi_drhd_unit *drhd;
> 
> -    if ( !iommu_enabled )
> -        return 0;
> -
>      for_each_drhd_unit ( drhd )
>          adjust_irq_affinity(drhd);
> -
> -    return 0;
>  }
> 
>  static int __must_check init_vtd_hw(bool resume)
> --- a/xen/drivers/passthrough/x86/iommu.c
> +++ b/xen/drivers/passthrough/x86/iommu.c
> @@ -464,7 +464,9 @@ bool arch_iommu_use_permitted(const stru
> 
>  static int __init cf_check adjust_irq_affinities(void)
>  {
> -    return iommu_adjust_irq_affinities();
> +    iommu_adjust_irq_affinities();
> +
> +    return 0;
>  }
>  __initcall(adjust_irq_affinities);
> 
> --- a/xen/include/xen/iommu.h
> +++ b/xen/include/xen/iommu.h
> @@ -267,7 +267,7 @@ struct iommu_ops {
> 
>      int (*setup_hpet_msi)(struct msi_desc *);
> 
> -    int (*adjust_irq_affinities)(void);
> +    void (*adjust_irq_affinities)(void);
>      void (*clear_root_pgtable)(struct domain *d);
>      int (*update_ire_from_msi)(struct msi_desc *msi_desc, struct msi_msg
> *msg);
>  #endif /* CONFIG_X86 */


 


Rackspace

Lists.xenproject.org is hosted with RackSpace, monitoring our
servers 24x7x365 and backed by RackSpace's Fanatical Support®.