ARM64: cpufreq_sched: implement event CPUFREQ_GOV_LIMIT for governor
[firefly-linux-kernel-4.4.55.git] / drivers / irqchip / irq-metag.c
index 8e94d7a3b20d277d127adf15441ea0b53879c606..a5f053bd2f443301a3bf62a9c30c523cded309cd 100644 (file)
@@ -201,7 +201,7 @@ static int metag_internal_irq_set_affinity(struct irq_data *data,
         * one cpu (the interrupt code doesn't support it), so we just
         * pick the first cpu we find in 'cpumask'.
         */
-       cpu = cpumask_any(cpumask);
+       cpu = cpumask_any_and(cpumask, cpu_online_mask);
        thread = cpu_2_hwthread_id[cpu];
 
        metag_out32(TBI_TRIG_VEC(TBID_SIGNUM_TR1(thread)),
@@ -220,7 +220,7 @@ static int metag_internal_irq_set_affinity(struct irq_data *data,
  *     occurred. It is this function's job to demux this irq and
  *     figure out exactly which trigger needs servicing.
  */
-static void metag_internal_irq_demux(unsigned int irq, struct irq_desc *desc)
+static void metag_internal_irq_demux(struct irq_desc *desc)
 {
        struct metag_internal_irq_priv *priv = irq_desc_get_handler_data(desc);
        irq_hw_number_t hw;
@@ -286,8 +286,7 @@ static void metag_internal_irq_init_cpu(struct metag_internal_irq_priv *priv,
        int irq = tbisig_map(signum);
 
        /* Register the multiplexed IRQ handler */
-       irq_set_handler_data(irq, priv);
-       irq_set_chained_handler(irq, metag_internal_irq_demux);
+       irq_set_chained_handler_and_data(irq, metag_internal_irq_demux, priv);
        irq_set_irq_type(irq, IRQ_TYPE_LEVEL_LOW);
 }