The concept is X86 specific.
AFAICT the generic concept here is the number of static physical IRQs
which the current hardware has, so call this nr_static_irqs.
Also using "defined NR_IRQS" as a standin for x86 might have made
sense at one point but its just cleaner to push the necessary
definitions into asm/irq.h.
Signed-off-by: Ian Campbell <ian.campbell@citrix.com>
Acked-by: Keir Fraser <keir@xen.org>
Acked-by: Jan Beulich <jbeulich@suse.com>
Committed-by: Ian Campbell <ian.campbell@citrix.com>
.globl x; \
x: mov pc, lr
-/* PIRQ support */
-DUMMY(nr_irqs_gsi);
atomic_inc(&d->pause_count);
if ( domid )
- d->nr_pirqs = nr_irqs_gsi + extra_domU_irqs;
+ d->nr_pirqs = nr_static_irqs + extra_domU_irqs;
else
- d->nr_pirqs = nr_irqs_gsi + extra_dom0_irqs;
+ d->nr_pirqs = nr_static_irqs + extra_dom0_irqs;
if ( d->nr_pirqs > nr_irqs )
d->nr_pirqs = nr_irqs;
#define NR_IRQS 1024
#define nr_irqs NR_IRQS
+#define nr_irqs NR_IRQS
+#define nr_static_irqs NR_IRQS
+
struct irq_desc;
struct irq_desc *__irq_to_desc(int irq);
#include <irq_vectors.h>
#include <asm/percpu.h>
+extern unsigned int nr_irqs_gsi;
+extern unsigned int nr_irqs;
+#define nr_static_irqs nr_irqs_gsi
+
#define IO_APIC_IRQ(irq) (platform_legacy_irq(irq) ? \
(1 << (irq)) & io_apic_irqs : \
(irq) < nr_irqs_gsi)
#include <asm/irq.h>
-#ifdef NR_IRQS
-# define nr_irqs NR_IRQS
-# define nr_irqs_gsi NR_IRQS
-#else
-extern unsigned int nr_irqs_gsi;
-extern unsigned int nr_irqs;
-#endif
-
struct msi_desc;
/*
* This is the "IRQ descriptor", which contains various information
struct irq_desc *desc = irq_to_desc(irq);
if ( irq >= nr_irqs || irq < 0 )
return -EINVAL;
- if ( irq < nr_irqs_gsi ) {
+ if ( irq < nr_static_irqs ) {
if (ad) {
AVC_AUDIT_DATA_INIT(ad, IRQ);
ad->irq = irq;
if ( rc )
return rc;
- if ( irq >= nr_irqs_gsi && msi ) {
+ if ( irq >= nr_static_irqs && msi ) {
u32 machine_bdf = (msi->seg << 16) | (msi->bus << 8) | msi->devfn;
AVC_AUDIT_DATA_INIT(&ad, DEV);
ad.device = machine_bdf;