powerpc: Move the use of irq_domain_add_nomap() behind a config option

Only a handful of old PPC systems are still using the old 'nomap'
variant of the irqdomain library. Move the associated definitions
behind a configuration option, which will allow us to make some
more radical changes.

Signed-off-by: Marc Zyngier <maz@kernel.org>
This commit is contained in:
Marc Zyngier 2021-04-04 13:06:39 +01:00
parent 1da027362a
commit e37af8011a
7 changed files with 17 additions and 2 deletions

View File

@ -35,6 +35,7 @@ config PPC_IBM_CELL_BLADE
config AXON_MSI config AXON_MSI
bool bool
depends on PPC_IBM_CELL_BLADE && PCI_MSI depends on PPC_IBM_CELL_BLADE && PCI_MSI
select IRQ_DOMAIN_NOMAP
default y default y
menu "Cell Broadband Engine options" menu "Cell Broadband Engine options"

View File

@ -24,6 +24,7 @@ config PPC_PMAC32_PSURGE
bool "Support for powersurge upgrade cards" if EXPERT bool "Support for powersurge upgrade cards" if EXPERT
depends on SMP && PPC32 && PPC_PMAC depends on SMP && PPC32 && PPC_PMAC
select PPC_SMP_MUXED_IPI select PPC_SMP_MUXED_IPI
select IRQ_DOMAIN_NOMAP
default y default y
help help
The powersurge cpu boards can be used in the generation The powersurge cpu boards can be used in the generation

View File

@ -7,6 +7,7 @@ config PPC_PS3
select USB_OHCI_BIG_ENDIAN_MMIO select USB_OHCI_BIG_ENDIAN_MMIO
select USB_EHCI_BIG_ENDIAN_MMIO select USB_EHCI_BIG_ENDIAN_MMIO
select HAVE_PCI select HAVE_PCI
select IRQ_DOMAIN_NOMAP
help help
This option enables support for the Sony PS3 game console This option enables support for the Sony PS3 game console
and other platforms using the PS3 hypervisor. Enabling this and other platforms using the PS3 hypervisor. Enabling this

View File

@ -3,6 +3,7 @@ config PPC_XIVE
bool bool
select PPC_SMP_MUXED_IPI select PPC_SMP_MUXED_IPI
select HARDIRQS_SW_RESEND select HARDIRQS_SW_RESEND
select IRQ_DOMAIN_NOMAP
config PPC_XIVE_NATIVE config PPC_XIVE_NATIVE
bool bool

View File

@ -345,6 +345,8 @@ static inline struct irq_domain *irq_domain_add_linear(struct device_node *of_no
{ {
return __irq_domain_add(of_node_to_fwnode(of_node), size, size, 0, ops, host_data); return __irq_domain_add(of_node_to_fwnode(of_node), size, size, 0, ops, host_data);
} }
#ifdef CONFIG_IRQ_DOMAIN_NOMAP
static inline struct irq_domain *irq_domain_add_nomap(struct device_node *of_node, static inline struct irq_domain *irq_domain_add_nomap(struct device_node *of_node,
unsigned int max_irq, unsigned int max_irq,
const struct irq_domain_ops *ops, const struct irq_domain_ops *ops,
@ -352,6 +354,10 @@ static inline struct irq_domain *irq_domain_add_nomap(struct device_node *of_nod
{ {
return __irq_domain_add(of_node_to_fwnode(of_node), 0, max_irq, max_irq, ops, host_data); return __irq_domain_add(of_node_to_fwnode(of_node), 0, max_irq, max_irq, ops, host_data);
} }
extern unsigned int irq_create_direct_mapping(struct irq_domain *host);
#endif
static inline struct irq_domain *irq_domain_add_tree(struct device_node *of_node, static inline struct irq_domain *irq_domain_add_tree(struct device_node *of_node,
const struct irq_domain_ops *ops, const struct irq_domain_ops *ops,
void *host_data) void *host_data)
@ -408,8 +414,6 @@ static inline unsigned int irq_linear_revmap(struct irq_domain *domain,
return irq_find_mapping(domain, hwirq); return irq_find_mapping(domain, hwirq);
} }
extern unsigned int irq_create_direct_mapping(struct irq_domain *host);
extern const struct irq_domain_ops irq_domain_simple_ops; extern const struct irq_domain_ops irq_domain_simple_ops;
/* stock xlate functions */ /* stock xlate functions */

View File

@ -70,6 +70,11 @@ config IRQ_DOMAIN_HIERARCHY
bool bool
select IRQ_DOMAIN select IRQ_DOMAIN
# Support for obsolete non-mapping irq domains
config IRQ_DOMAIN_NOMAP
bool
select IRQ_DOMAIN
# Support for hierarchical fasteoi+edge and fasteoi+level handlers # Support for hierarchical fasteoi+edge and fasteoi+level handlers
config IRQ_FASTEOI_HIERARCHY_HANDLERS config IRQ_FASTEOI_HIERARCHY_HANDLERS
bool bool

View File

@ -604,6 +604,7 @@ void irq_domain_associate_many(struct irq_domain *domain, unsigned int irq_base,
} }
EXPORT_SYMBOL_GPL(irq_domain_associate_many); EXPORT_SYMBOL_GPL(irq_domain_associate_many);
#ifdef CONFIG_IRQ_DOMAIN_NOMAP
/** /**
* irq_create_direct_mapping() - Allocate an irq for direct mapping * irq_create_direct_mapping() - Allocate an irq for direct mapping
* @domain: domain to allocate the irq for or NULL for default domain * @domain: domain to allocate the irq for or NULL for default domain
@ -644,6 +645,7 @@ unsigned int irq_create_direct_mapping(struct irq_domain *domain)
return virq; return virq;
} }
EXPORT_SYMBOL_GPL(irq_create_direct_mapping); EXPORT_SYMBOL_GPL(irq_create_direct_mapping);
#endif
/** /**
* irq_create_mapping_affinity() - Map a hardware interrupt into linux irq space * irq_create_mapping_affinity() - Map a hardware interrupt into linux irq space