Commit c9e265e0 authored by Thomas Gleixner's avatar Thomas Gleixner Committed by Konrad Rzeszutek Wilk

xen: Switch to new irq_chip functions

Convert Xen to the new irq_chip functions. Brings us closer to enable
CONFIG_GENERIC_HARDIRQS_NO_DEPRECATED
Signed-off-by: default avatarThomas Gleixner <tglx@linutronix.de>
Acked-by: default avatarIan Campbell <ian.campbell@citrix.com>
Signed-off-by: default avatarKonrad Rzeszutek Wilk <konrad.wilk@oracle.com>
parent 149f256f
...@@ -277,7 +277,7 @@ static void bind_evtchn_to_cpu(unsigned int chn, unsigned int cpu) ...@@ -277,7 +277,7 @@ static void bind_evtchn_to_cpu(unsigned int chn, unsigned int cpu)
BUG_ON(irq == -1); BUG_ON(irq == -1);
#ifdef CONFIG_SMP #ifdef CONFIG_SMP
cpumask_copy(irq_to_desc(irq)->affinity, cpumask_of(cpu)); cpumask_copy(irq_to_desc(irq)->irq_data.affinity, cpumask_of(cpu));
#endif #endif
clear_bit(chn, cpu_evtchn_mask(cpu_from_irq(irq))); clear_bit(chn, cpu_evtchn_mask(cpu_from_irq(irq)));
...@@ -294,7 +294,7 @@ static void init_evtchn_cpu_bindings(void) ...@@ -294,7 +294,7 @@ static void init_evtchn_cpu_bindings(void)
/* By default all event channels notify CPU#0. */ /* By default all event channels notify CPU#0. */
for_each_irq_desc(i, desc) { for_each_irq_desc(i, desc) {
cpumask_copy(desc->affinity, cpumask_of(0)); cpumask_copy(desc->irq_data.affinity, cpumask_of(0));
} }
#endif #endif
...@@ -474,7 +474,7 @@ static bool probing_irq(int irq) ...@@ -474,7 +474,7 @@ static bool probing_irq(int irq)
return desc && desc->action == NULL; return desc && desc->action == NULL;
} }
static unsigned int startup_pirq(unsigned int irq) static unsigned int __startup_pirq(unsigned int irq)
{ {
struct evtchn_bind_pirq bind_pirq; struct evtchn_bind_pirq bind_pirq;
struct irq_info *info = info_for_irq(irq); struct irq_info *info = info_for_irq(irq);
...@@ -512,9 +512,15 @@ static unsigned int startup_pirq(unsigned int irq) ...@@ -512,9 +512,15 @@ static unsigned int startup_pirq(unsigned int irq)
return 0; return 0;
} }
static void shutdown_pirq(unsigned int irq) static unsigned int startup_pirq(struct irq_data *data)
{
return __startup_pirq(data->irq);
}
static void shutdown_pirq(struct irq_data *data)
{ {
struct evtchn_close close; struct evtchn_close close;
unsigned int irq = data->irq;
struct irq_info *info = info_for_irq(irq); struct irq_info *info = info_for_irq(irq);
int evtchn = evtchn_from_irq(irq); int evtchn = evtchn_from_irq(irq);
...@@ -534,20 +540,20 @@ static void shutdown_pirq(unsigned int irq) ...@@ -534,20 +540,20 @@ static void shutdown_pirq(unsigned int irq)
info->evtchn = 0; info->evtchn = 0;
} }
static void enable_pirq(unsigned int irq) static void enable_pirq(struct irq_data *data)
{ {
startup_pirq(irq); startup_pirq(data);
} }
static void disable_pirq(unsigned int irq) static void disable_pirq(struct irq_data *data)
{ {
} }
static void ack_pirq(unsigned int irq) static void ack_pirq(struct irq_data *data)
{ {
int evtchn = evtchn_from_irq(irq); int evtchn = evtchn_from_irq(data->irq);
move_native_irq(irq); irq_move_irq(data);
if (VALID_EVTCHN(evtchn)) { if (VALID_EVTCHN(evtchn)) {
mask_evtchn(evtchn); mask_evtchn(evtchn);
...@@ -1215,11 +1221,12 @@ static int rebind_irq_to_cpu(unsigned irq, unsigned tcpu) ...@@ -1215,11 +1221,12 @@ static int rebind_irq_to_cpu(unsigned irq, unsigned tcpu)
return 0; return 0;
} }
static int set_affinity_irq(unsigned irq, const struct cpumask *dest) static int set_affinity_irq(struct irq_data *data, const struct cpumask *dest,
bool force)
{ {
unsigned tcpu = cpumask_first(dest); unsigned tcpu = cpumask_first(dest);
return rebind_irq_to_cpu(irq, tcpu); return rebind_irq_to_cpu(data->irq, tcpu);
} }
int resend_irq_on_evtchn(unsigned int irq) int resend_irq_on_evtchn(unsigned int irq)
...@@ -1238,35 +1245,35 @@ int resend_irq_on_evtchn(unsigned int irq) ...@@ -1238,35 +1245,35 @@ int resend_irq_on_evtchn(unsigned int irq)
return 1; return 1;
} }
static void enable_dynirq(unsigned int irq) static void enable_dynirq(struct irq_data *data)
{ {
int evtchn = evtchn_from_irq(irq); int evtchn = evtchn_from_irq(data->irq);
if (VALID_EVTCHN(evtchn)) if (VALID_EVTCHN(evtchn))
unmask_evtchn(evtchn); unmask_evtchn(evtchn);
} }
static void disable_dynirq(unsigned int irq) static void disable_dynirq(struct irq_data *data)
{ {
int evtchn = evtchn_from_irq(irq); int evtchn = evtchn_from_irq(data->irq);
if (VALID_EVTCHN(evtchn)) if (VALID_EVTCHN(evtchn))
mask_evtchn(evtchn); mask_evtchn(evtchn);
} }
static void ack_dynirq(unsigned int irq) static void ack_dynirq(struct irq_data *data)
{ {
int evtchn = evtchn_from_irq(irq); int evtchn = evtchn_from_irq(data->irq);
move_masked_irq(irq); move_masked_irq(data->irq);
if (VALID_EVTCHN(evtchn)) if (VALID_EVTCHN(evtchn))
unmask_evtchn(evtchn); unmask_evtchn(evtchn);
} }
static int retrigger_dynirq(unsigned int irq) static int retrigger_dynirq(struct irq_data *data)
{ {
int evtchn = evtchn_from_irq(irq); int evtchn = evtchn_from_irq(data->irq);
struct shared_info *sh = HYPERVISOR_shared_info; struct shared_info *sh = HYPERVISOR_shared_info;
int ret = 0; int ret = 0;
...@@ -1315,7 +1322,7 @@ static void restore_cpu_pirqs(void) ...@@ -1315,7 +1322,7 @@ static void restore_cpu_pirqs(void)
printk(KERN_DEBUG "xen: --> irq=%d, pirq=%d\n", irq, map_irq.pirq); printk(KERN_DEBUG "xen: --> irq=%d, pirq=%d\n", irq, map_irq.pirq);
startup_pirq(irq); __startup_pirq(irq);
} }
} }
...@@ -1469,42 +1476,42 @@ void xen_irq_resume(void) ...@@ -1469,42 +1476,42 @@ void xen_irq_resume(void)
static struct irq_chip xen_dynamic_chip __read_mostly = { static struct irq_chip xen_dynamic_chip __read_mostly = {
.name = "xen-dyn", .name = "xen-dyn",
.disable = disable_dynirq, .irq_disable = disable_dynirq,
.mask = disable_dynirq, .irq_mask = disable_dynirq,
.unmask = enable_dynirq, .irq_unmask = enable_dynirq,
.eoi = ack_dynirq, .irq_eoi = ack_dynirq,
.set_affinity = set_affinity_irq, .irq_set_affinity = set_affinity_irq,
.retrigger = retrigger_dynirq, .irq_retrigger = retrigger_dynirq,
}; };
static struct irq_chip xen_pirq_chip __read_mostly = { static struct irq_chip xen_pirq_chip __read_mostly = {
.name = "xen-pirq", .name = "xen-pirq",
.startup = startup_pirq, .irq_startup = startup_pirq,
.shutdown = shutdown_pirq, .irq_shutdown = shutdown_pirq,
.enable = enable_pirq, .irq_enable = enable_pirq,
.unmask = enable_pirq, .irq_unmask = enable_pirq,
.disable = disable_pirq, .irq_disable = disable_pirq,
.mask = disable_pirq, .irq_mask = disable_pirq,
.ack = ack_pirq, .irq_ack = ack_pirq,
.set_affinity = set_affinity_irq, .irq_set_affinity = set_affinity_irq,
.retrigger = retrigger_dynirq, .irq_retrigger = retrigger_dynirq,
}; };
static struct irq_chip xen_percpu_chip __read_mostly = { static struct irq_chip xen_percpu_chip __read_mostly = {
.name = "xen-percpu", .name = "xen-percpu",
.disable = disable_dynirq, .irq_disable = disable_dynirq,
.mask = disable_dynirq, .irq_mask = disable_dynirq,
.unmask = enable_dynirq, .irq_unmask = enable_dynirq,
.ack = ack_dynirq, .irq_ack = ack_dynirq,
}; };
int xen_set_callback_via(uint64_t via) int xen_set_callback_via(uint64_t via)
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment