aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/xen/events.c
diff options
context:
space:
mode:
authorThomas Gleixner <tglx@linutronix.de>2011-02-05 15:08:54 -0500
committerKonrad Rzeszutek Wilk <konrad.wilk@oracle.com>2011-03-03 12:00:29 -0500
commitc9e265e030537167c94cbed190826f02e3887f4d (patch)
tree232450d4fb3c5d540ca701362d9127b05ea19518 /drivers/xen/events.c
parent149f256f8ca690c28dd8aa9fb8bcdaf2e93b1e1c (diff)
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: Thomas Gleixner <tglx@linutronix.de> Acked-by: Ian Campbell <ian.campbell@citrix.com> Signed-off-by: Konrad Rzeszutek Wilk <konrad.wilk@oracle.com>
Diffstat (limited to 'drivers/xen/events.c')
-rw-r--r--drivers/xen/events.c95
1 files changed, 51 insertions, 44 deletions
diff --git a/drivers/xen/events.c b/drivers/xen/events.c
index c8826b5142c4..cf1712fb1c46 100644
--- a/drivers/xen/events.c
+++ b/drivers/xen/events.c
@@ -277,7 +277,7 @@ static void bind_evtchn_to_cpu(unsigned int chn, unsigned int cpu)
277 277
278 BUG_ON(irq == -1); 278 BUG_ON(irq == -1);
279#ifdef CONFIG_SMP 279#ifdef CONFIG_SMP
280 cpumask_copy(irq_to_desc(irq)->affinity, cpumask_of(cpu)); 280 cpumask_copy(irq_to_desc(irq)->irq_data.affinity, cpumask_of(cpu));
281#endif 281#endif
282 282
283 clear_bit(chn, cpu_evtchn_mask(cpu_from_irq(irq))); 283 clear_bit(chn, cpu_evtchn_mask(cpu_from_irq(irq)));
@@ -294,7 +294,7 @@ static void init_evtchn_cpu_bindings(void)
294 294
295 /* By default all event channels notify CPU#0. */ 295 /* By default all event channels notify CPU#0. */
296 for_each_irq_desc(i, desc) { 296 for_each_irq_desc(i, desc) {
297 cpumask_copy(desc->affinity, cpumask_of(0)); 297 cpumask_copy(desc->irq_data.affinity, cpumask_of(0));
298 } 298 }
299#endif 299#endif
300 300
@@ -474,7 +474,7 @@ static bool probing_irq(int irq)
474 return desc && desc->action == NULL; 474 return desc && desc->action == NULL;
475} 475}
476 476
477static unsigned int startup_pirq(unsigned int irq) 477static unsigned int __startup_pirq(unsigned int irq)
478{ 478{
479 struct evtchn_bind_pirq bind_pirq; 479 struct evtchn_bind_pirq bind_pirq;
480 struct irq_info *info = info_for_irq(irq); 480 struct irq_info *info = info_for_irq(irq);
@@ -512,9 +512,15 @@ out:
512 return 0; 512 return 0;
513} 513}
514 514
515static void shutdown_pirq(unsigned int irq) 515static unsigned int startup_pirq(struct irq_data *data)
516{
517 return __startup_pirq(data->irq);
518}
519
520static void shutdown_pirq(struct irq_data *data)
516{ 521{
517 struct evtchn_close close; 522 struct evtchn_close close;
523 unsigned int irq = data->irq;
518 struct irq_info *info = info_for_irq(irq); 524 struct irq_info *info = info_for_irq(irq);
519 int evtchn = evtchn_from_irq(irq); 525 int evtchn = evtchn_from_irq(irq);
520 526
@@ -534,20 +540,20 @@ static void shutdown_pirq(unsigned int irq)
534 info->evtchn = 0; 540 info->evtchn = 0;
535} 541}
536 542
537static void enable_pirq(unsigned int irq) 543static void enable_pirq(struct irq_data *data)
538{ 544{
539 startup_pirq(irq); 545 startup_pirq(data);
540} 546}
541 547
542static void disable_pirq(unsigned int irq) 548static void disable_pirq(struct irq_data *data)
543{ 549{
544} 550}
545 551
546static void ack_pirq(unsigned int irq) 552static void ack_pirq(struct irq_data *data)
547{ 553{
548 int evtchn = evtchn_from_irq(irq); 554 int evtchn = evtchn_from_irq(data->irq);
549 555
550 move_native_irq(irq); 556 irq_move_irq(data);
551 557
552 if (VALID_EVTCHN(evtchn)) { 558 if (VALID_EVTCHN(evtchn)) {
553 mask_evtchn(evtchn); 559 mask_evtchn(evtchn);
@@ -1215,11 +1221,12 @@ static int rebind_irq_to_cpu(unsigned irq, unsigned tcpu)
1215 return 0; 1221 return 0;
1216} 1222}
1217 1223
1218static int set_affinity_irq(unsigned irq, const struct cpumask *dest) 1224static int set_affinity_irq(struct irq_data *data, const struct cpumask *dest,
1225 bool force)
1219{ 1226{
1220 unsigned tcpu = cpumask_first(dest); 1227 unsigned tcpu = cpumask_first(dest);
1221 1228
1222 return rebind_irq_to_cpu(irq, tcpu); 1229 return rebind_irq_to_cpu(data->irq, tcpu);
1223} 1230}
1224 1231
1225int resend_irq_on_evtchn(unsigned int irq) 1232int resend_irq_on_evtchn(unsigned int irq)
@@ -1238,35 +1245,35 @@ int resend_irq_on_evtchn(unsigned int irq)
1238 return 1; 1245 return 1;
1239} 1246}
1240 1247
1241static void enable_dynirq(unsigned int irq) 1248static void enable_dynirq(struct irq_data *data)
1242{ 1249{
1243 int evtchn = evtchn_from_irq(irq); 1250 int evtchn = evtchn_from_irq(data->irq);
1244 1251
1245 if (VALID_EVTCHN(evtchn)) 1252 if (VALID_EVTCHN(evtchn))
1246 unmask_evtchn(evtchn); 1253 unmask_evtchn(evtchn);
1247} 1254}
1248 1255
1249static void disable_dynirq(unsigned int irq) 1256static void disable_dynirq(struct irq_data *data)
1250{ 1257{
1251 int evtchn = evtchn_from_irq(irq); 1258 int evtchn = evtchn_from_irq(data->irq);
1252 1259
1253 if (VALID_EVTCHN(evtchn)) 1260 if (VALID_EVTCHN(evtchn))
1254 mask_evtchn(evtchn); 1261 mask_evtchn(evtchn);
1255} 1262}
1256 1263
1257static void ack_dynirq(unsigned int irq) 1264static void ack_dynirq(struct irq_data *data)
1258{ 1265{
1259 int evtchn = evtchn_from_irq(irq); 1266 int evtchn = evtchn_from_irq(data->irq);
1260 1267
1261 move_masked_irq(irq); 1268 move_masked_irq(data->irq);
1262 1269
1263 if (VALID_EVTCHN(evtchn)) 1270 if (VALID_EVTCHN(evtchn))
1264 unmask_evtchn(evtchn); 1271 unmask_evtchn(evtchn);
1265} 1272}
1266 1273
1267static int retrigger_dynirq(unsigned int irq) 1274static int retrigger_dynirq(struct irq_data *data)
1268{ 1275{
1269 int evtchn = evtchn_from_irq(irq); 1276 int evtchn = evtchn_from_irq(data->irq);
1270 struct shared_info *sh = HYPERVISOR_shared_info; 1277 struct shared_info *sh = HYPERVISOR_shared_info;
1271 int ret = 0; 1278 int ret = 0;
1272 1279
@@ -1315,7 +1322,7 @@ static void restore_cpu_pirqs(void)
1315 1322
1316 printk(KERN_DEBUG "xen: --> irq=%d, pirq=%d\n", irq, map_irq.pirq); 1323 printk(KERN_DEBUG "xen: --> irq=%d, pirq=%d\n", irq, map_irq.pirq);
1317 1324
1318 startup_pirq(irq); 1325 __startup_pirq(irq);
1319 } 1326 }
1320} 1327}
1321 1328
@@ -1467,44 +1474,44 @@ void xen_irq_resume(void)
1467} 1474}
1468 1475
1469static struct irq_chip xen_dynamic_chip __read_mostly = { 1476static struct irq_chip xen_dynamic_chip __read_mostly = {
1470 .name = "xen-dyn", 1477 .name = "xen-dyn",
1471 1478
1472 .disable = disable_dynirq, 1479 .irq_disable = disable_dynirq,
1473 .mask = disable_dynirq, 1480 .irq_mask = disable_dynirq,
1474 .unmask = enable_dynirq, 1481 .irq_unmask = enable_dynirq,
1475 1482
1476 .eoi = ack_dynirq, 1483 .irq_eoi = ack_dynirq,
1477 .set_affinity = set_affinity_irq, 1484 .irq_set_affinity = set_affinity_irq,
1478 .retrigger = retrigger_dynirq, 1485 .irq_retrigger = retrigger_dynirq,
1479}; 1486};
1480 1487
1481static struct irq_chip xen_pirq_chip __read_mostly = { 1488static struct irq_chip xen_pirq_chip __read_mostly = {
1482 .name = "xen-pirq", 1489 .name = "xen-pirq",
1483 1490
1484 .startup = startup_pirq, 1491 .irq_startup = startup_pirq,
1485 .shutdown = shutdown_pirq, 1492 .irq_shutdown = shutdown_pirq,
1486 1493
1487 .enable = enable_pirq, 1494 .irq_enable = enable_pirq,
1488 .unmask = enable_pirq, 1495 .irq_unmask = enable_pirq,
1489 1496
1490 .disable = disable_pirq, 1497 .irq_disable = disable_pirq,
1491 .mask = disable_pirq, 1498 .irq_mask = disable_pirq,
1492 1499
1493 .ack = ack_pirq, 1500 .irq_ack = ack_pirq,
1494 1501
1495 .set_affinity = set_affinity_irq, 1502 .irq_set_affinity = set_affinity_irq,
1496 1503
1497 .retrigger = retrigger_dynirq, 1504 .irq_retrigger = retrigger_dynirq,
1498}; 1505};
1499 1506
1500static struct irq_chip xen_percpu_chip __read_mostly = { 1507static struct irq_chip xen_percpu_chip __read_mostly = {
1501 .name = "xen-percpu", 1508 .name = "xen-percpu",
1502 1509
1503 .disable = disable_dynirq, 1510 .irq_disable = disable_dynirq,
1504 .mask = disable_dynirq, 1511 .irq_mask = disable_dynirq,
1505 .unmask = enable_dynirq, 1512 .irq_unmask = enable_dynirq,
1506 1513
1507 .ack = ack_dynirq, 1514 .irq_ack = ack_dynirq,
1508}; 1515};
1509 1516
1510int xen_set_callback_via(uint64_t via) 1517int xen_set_callback_via(uint64_t via)