powerpc: Convert irq_domain_add_legacy_isa use to irq_domain_add_legacy
irq_domain_add_legacy_isa is a pain. It only exists for the benefit of two PPC-specific drivers, and creates an ugly dependency between asm/irq.h and linux/irqdomain.h Instead, let's convert these two drivers to irq_domain_add_legacy(), stop using NUM_ISA_INTERRUPTS by directly setting NR_IRQS_LEGACY. The dependency cannot be broken yet as there is a lot of PPC-related code that depends on it, but that's the first step towards it. A followup patch will remove irq_domain_add_legacy_isa. Signed-off-by: Marc Zyngier <maz@kernel.org>
This commit is contained in:
Родитель
5951be4c9c
Коммит
7c576f4d3c
|
@ -23,8 +23,8 @@ extern atomic_t ppc_n_lost_interrupts;
|
||||||
/* Total number of virq in the platform */
|
/* Total number of virq in the platform */
|
||||||
#define NR_IRQS CONFIG_NR_IRQS
|
#define NR_IRQS CONFIG_NR_IRQS
|
||||||
|
|
||||||
/* Same thing, used by the generic IRQ code */
|
/* Number of irqs reserved for a legacy isa controller */
|
||||||
#define NR_IRQS_LEGACY NUM_ISA_INTERRUPTS
|
#define NR_IRQS_LEGACY 16
|
||||||
|
|
||||||
extern irq_hw_number_t virq_to_hw(unsigned int virq);
|
extern irq_hw_number_t virq_to_hw(unsigned int virq);
|
||||||
|
|
||||||
|
|
|
@ -46,7 +46,7 @@
|
||||||
* implementation equates HV plug value to Linux virq value, constrains each
|
* implementation equates HV plug value to Linux virq value, constrains each
|
||||||
* interrupt to have a system wide unique plug number, and limits the range
|
* interrupt to have a system wide unique plug number, and limits the range
|
||||||
* of the plug values to map into the first dword of the bitmaps. This
|
* of the plug values to map into the first dword of the bitmaps. This
|
||||||
* gives a usable range of plug values of {NUM_ISA_INTERRUPTS..63}. Note
|
* gives a usable range of plug values of {NR_IRQS_LEGACY..63}. Note
|
||||||
* that there is no constraint on how many in this set an individual thread
|
* that there is no constraint on how many in this set an individual thread
|
||||||
* can acquire.
|
* can acquire.
|
||||||
*
|
*
|
||||||
|
@ -722,7 +722,7 @@ static unsigned int ps3_get_irq(void)
|
||||||
}
|
}
|
||||||
|
|
||||||
#if defined(DEBUG)
|
#if defined(DEBUG)
|
||||||
if (unlikely(plug < NUM_ISA_INTERRUPTS || plug > PS3_PLUG_MAX)) {
|
if (unlikely(plug < NR_IRQS_LEGACY || plug > PS3_PLUG_MAX)) {
|
||||||
dump_bmp(&per_cpu(ps3_private, 0));
|
dump_bmp(&per_cpu(ps3_private, 0));
|
||||||
dump_bmp(&per_cpu(ps3_private, 1));
|
dump_bmp(&per_cpu(ps3_private, 1));
|
||||||
BUG();
|
BUG();
|
||||||
|
|
|
@ -260,7 +260,8 @@ void i8259_init(struct device_node *node, unsigned long intack_addr)
|
||||||
raw_spin_unlock_irqrestore(&i8259_lock, flags);
|
raw_spin_unlock_irqrestore(&i8259_lock, flags);
|
||||||
|
|
||||||
/* create a legacy host */
|
/* create a legacy host */
|
||||||
i8259_host = irq_domain_add_legacy_isa(node, &i8259_host_ops, NULL);
|
i8259_host = irq_domain_add_legacy(node, NR_IRQS_LEGACY, 0, 0,
|
||||||
|
&i8259_host_ops, NULL);
|
||||||
if (i8259_host == NULL) {
|
if (i8259_host == NULL) {
|
||||||
printk(KERN_ERR "i8259: failed to allocate irq host !\n");
|
printk(KERN_ERR "i8259: failed to allocate irq host !\n");
|
||||||
return;
|
return;
|
||||||
|
|
|
@ -602,7 +602,7 @@ static void __init mpic_scan_ht_pics(struct mpic *mpic)
|
||||||
/* Find an mpic associated with a given linux interrupt */
|
/* Find an mpic associated with a given linux interrupt */
|
||||||
static struct mpic *mpic_find(unsigned int irq)
|
static struct mpic *mpic_find(unsigned int irq)
|
||||||
{
|
{
|
||||||
if (irq < NUM_ISA_INTERRUPTS)
|
if (irq < NR_IRQS_LEGACY)
|
||||||
return NULL;
|
return NULL;
|
||||||
|
|
||||||
return irq_get_chip_data(irq);
|
return irq_get_chip_data(irq);
|
||||||
|
|
|
@ -404,7 +404,8 @@ void __init tsi108_pci_int_init(struct device_node *node)
|
||||||
{
|
{
|
||||||
DBG("Tsi108_pci_int_init: initializing PCI interrupts\n");
|
DBG("Tsi108_pci_int_init: initializing PCI interrupts\n");
|
||||||
|
|
||||||
pci_irq_host = irq_domain_add_legacy_isa(node, &pci_irq_domain_ops, NULL);
|
pci_irq_host = irq_domain_add_legacy(node, NR_IRQS_LEGACY, 0, 0,
|
||||||
|
&pci_irq_domain_ops, NULL);
|
||||||
if (pci_irq_host == NULL) {
|
if (pci_irq_host == NULL) {
|
||||||
printk(KERN_ERR "pci_irq_host: failed to allocate irq domain!\n");
|
printk(KERN_ERR "pci_irq_host: failed to allocate irq domain!\n");
|
||||||
return;
|
return;
|
||||||
|
|
|
@ -201,7 +201,7 @@ void xics_migrate_irqs_away(void)
|
||||||
struct ics *ics;
|
struct ics *ics;
|
||||||
|
|
||||||
/* We can't set affinity on ISA interrupts */
|
/* We can't set affinity on ISA interrupts */
|
||||||
if (virq < NUM_ISA_INTERRUPTS)
|
if (virq < NR_IRQS_LEGACY)
|
||||||
continue;
|
continue;
|
||||||
/* We only need to migrate enabled IRQS */
|
/* We only need to migrate enabled IRQS */
|
||||||
if (!desc->action)
|
if (!desc->action)
|
||||||
|
|
Загрузка…
Ссылка в новой задаче