@@ -133,7 +133,6 @@ static void xen_syscore_resume(void)
gnttab_resume();
- xen_restore_pirqs();
}
/*
@@ -2146,50 +2146,10 @@ void xen_shutdown_pirqs(void)
continue;
shutdown_pirq(irq_get_irq_data(info->irq));
+ irq_state_clr_started(irq_to_desc(info->irq));
}
}
-/*
- * For now, only restore the ACPI SCI pirq.
- */
-void xen_restore_pirqs(void)
-{
-#ifdef CONFIG_ACPI
- int pirq, rc, irq, gsi;
- struct physdev_map_pirq map_irq;
- struct irq_info *info;
-
- list_for_each_entry(info, &xen_irq_list_head, list) {
- if (info->type != IRQT_PIRQ)
- continue;
-
- pirq = info->u.pirq.pirq;
- gsi = info->u.pirq.gsi;
- irq = info->irq;
-
- if (gsi != acpi_gbl_FADT.sci_interrupt)
- continue;
-
- map_irq.domid = DOMID_SELF;
- map_irq.type = MAP_PIRQ_TYPE_GSI;
- map_irq.index = gsi;
- map_irq.pirq = pirq;
-
- rc = HYPERVISOR_physdev_op(PHYSDEVOP_map_pirq, &map_irq);
- if (rc) {
- pr_warn("xen: ACPI SCI interrupt map failed, rc=%d\n",
- rc);
- xen_free_irq(irq);
- continue;
- }
-
- printk(KERN_DEBUG "xen: restored ACPI SCI interrupt\n");
-
- __startup_pirq(irq);
- }
-#endif
-}
-
static struct irq_chip xen_dynamic_chip __read_mostly = {
.name = "xen-dyn",
@@ -811,6 +811,8 @@ extern int irq_set_msi_desc_off(unsigned int irq_base, unsigned int irq_offset,
struct msi_desc *entry);
extern struct irq_data *irq_get_irq_data(unsigned int irq);
+extern void irq_state_clr_started(struct irq_desc *desc);
+
static inline struct irq_chip *irq_get_chip(unsigned int irq)
{
struct irq_data *d = irq_get_irq_data(irq);
@@ -173,11 +173,11 @@ static void irq_state_clr_masked(struct irq_desc *desc)
irqd_clear(&desc->irq_data, IRQD_IRQ_MASKED);
}
-static void irq_state_clr_started(struct irq_desc *desc)
+void irq_state_clr_started(struct irq_desc *desc)
{
irqd_clear(&desc->irq_data, IRQD_IRQ_STARTED);
}
-
+EXPORT_SYMBOL_GPL(irq_state_clr_started);
static void irq_state_set_started(struct irq_desc *desc)
{
irqd_set(&desc->irq_data, IRQD_IRQ_STARTED);