Merge branch irq/plic-masking into irq/irqchip-next
authorMarc Zyngier <maz@kernel.org>
Sun, 10 Jul 2022 08:51:20 +0000 (09:51 +0100)
committerMarc Zyngier <maz@kernel.org>
Sun, 10 Jul 2022 08:51:20 +0000 (09:51 +0100)
* irq/plic-masking:
  : .
  : SiFive PLIC optimisations from Samuel Holland:
  :
  : "This series removes the spinlocks and cpumask operations from the PLIC
  : driver's hot path. As far as I know, using the priority to mask
  : interrupts is an intended usage and will work on all existing
  : implementations. [...]"
  : .
  irqchip/sifive-plic: Separate the enable and mask operations
  irqchip/sifive-plic: Make better use of the effective affinity mask
  PCI: hv: Take a const cpumask in hv_compose_msi_req_get_cpu()
  genirq: Provide an IRQ affinity mask in non-SMP configs
  genirq: Return a const cpumask from irq_data_get_affinity_mask
  genirq: Add and use an irq_data_update_affinity helper
  genirq: Refactor accessors to use irq_data_get_affinity_mask
  genirq: Drop redundant irq_init_effective_affinity
  genirq: GENERIC_IRQ_EFFECTIVE_AFF_MASK depends on SMP
  genirq: GENERIC_IRQ_IPI depends on SMP
  irqchip/mips-gic: Only register IPI domain when SMP is enabled

Signed-off-by: Marc Zyngier <maz@kernel.org>
1  2 
kernel/irq/chip.c

diff --combined kernel/irq/chip.c
@@@ -188,7 -188,8 +188,8 @@@ enum 
  
  #ifdef CONFIG_SMP
  static int
- __irq_startup_managed(struct irq_desc *desc, struct cpumask *aff, bool force)
+ __irq_startup_managed(struct irq_desc *desc, const struct cpumask *aff,
+                     bool force)
  {
        struct irq_data *d = irq_desc_get_irq_data(desc);
  
  }
  #else
  static __always_inline int
- __irq_startup_managed(struct irq_desc *desc, struct cpumask *aff, bool force)
+ __irq_startup_managed(struct irq_desc *desc, const struct cpumask *aff,
+                     bool force)
  {
        return IRQ_STARTUP_NORMAL;
  }
@@@ -252,7 -254,7 +254,7 @@@ static int __irq_startup(struct irq_des
  int irq_startup(struct irq_desc *desc, bool resend, bool force)
  {
        struct irq_data *d = irq_desc_get_irq_data(desc);
-       struct cpumask *aff = irq_data_get_affinity_mask(d);
+       const struct cpumask *aff = irq_data_get_affinity_mask(d);
        int ret = 0;
  
        desc->depth = 0;
@@@ -1516,8 -1518,7 +1518,8 @@@ int irq_chip_request_resources_parent(s
        if (data->chip->irq_request_resources)
                return data->chip->irq_request_resources(data);
  
 -      return -ENOSYS;
 +      /* no error on missing optional irq_chip::irq_request_resources */
 +      return 0;
  }
  EXPORT_SYMBOL_GPL(irq_chip_request_resources_parent);