Skip to content

Commit

Permalink
---
Browse files Browse the repository at this point in the history
yaml
---
r: 302722
b: refs/heads/master
c: 95a02e9
h: refs/heads/master
v: v3
  • Loading branch information
Suresh Siddha authored and Joerg Roedel committed May 7, 2012
1 parent d37c215 commit a43b862
Show file tree
Hide file tree
Showing 10 changed files with 149 additions and 146 deletions.
2 changes: 1 addition & 1 deletion [refs]
Original file line number Diff line number Diff line change
@@ -1,2 +1,2 @@
---
refs/heads/master: 263b5e8629c9ce21c9cd4c0e29c097afb1c10ef3
refs/heads/master: 95a02e976c39d63716b8c7c226bc530a2041536f
2 changes: 1 addition & 1 deletion trunk/arch/ia64/include/asm/intr_remapping.h
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
#ifndef __IA64_INTR_REMAPPING_H
#define __IA64_INTR_REMAPPING_H
#define intr_remapping_enabled 0
#define irq_remapping_enabled 0
#endif
94 changes: 48 additions & 46 deletions trunk/arch/x86/include/asm/intr_remapping.h
Original file line number Diff line number Diff line change
Expand Up @@ -28,71 +28,73 @@ struct IO_APIC_route_entry;
struct io_apic_irq_attr;
struct pci_dev;

extern int intr_remapping_enabled;
extern int irq_remapping_enabled;

extern void setup_intr_remapping(void);
extern int intr_remapping_supported(void);
extern int intr_hardware_init(void);
extern int intr_hardware_enable(void);
extern void intr_hardware_disable(void);
extern int intr_hardware_reenable(int);
extern int intr_enable_fault_handling(void);
extern int intr_setup_ioapic_entry(int irq,
struct IO_APIC_route_entry *entry,
unsigned int destination, int vector,
struct io_apic_irq_attr *attr);
extern int intr_set_affinity(struct irq_data *data,
const struct cpumask *mask,
bool force);
extern void intr_free_irq(int irq);
extern void intr_compose_msi_msg(struct pci_dev *pdev,
unsigned int irq, unsigned int dest,
struct msi_msg *msg, u8 hpet_id);
extern int intr_msi_alloc_irq(struct pci_dev *pdev, int irq, int nvec);
extern int intr_msi_setup_irq(struct pci_dev *pdev, unsigned int irq,
int index, int sub_handle);
extern int intr_setup_hpet_msi(unsigned int irq, unsigned int id);
extern void setup_irq_remapping_ops(void);
extern int irq_remapping_supported(void);
extern int irq_remapping_prepare(void);
extern int irq_remapping_enable(void);
extern void irq_remapping_disable(void);
extern int irq_remapping_reenable(int);
extern int irq_remap_enable_fault_handling(void);
extern int setup_ioapic_remapped_entry(int irq,
struct IO_APIC_route_entry *entry,
unsigned int destination,
int vector,
struct io_apic_irq_attr *attr);
extern int set_remapped_irq_affinity(struct irq_data *data,
const struct cpumask *mask,
bool force);
extern void free_remapped_irq(int irq);
extern void compose_remapped_msi_msg(struct pci_dev *pdev,
unsigned int irq, unsigned int dest,
struct msi_msg *msg, u8 hpet_id);
extern int msi_alloc_remapped_irq(struct pci_dev *pdev, int irq, int nvec);
extern int msi_setup_remapped_irq(struct pci_dev *pdev, unsigned int irq,
int index, int sub_handle);
extern int setup_hpet_msi_remapped(unsigned int irq, unsigned int id);

#else /* CONFIG_IRQ_REMAP */

#define intr_remapping_enabled 0
#define irq_remapping_enabled 0

static inline void setup_intr_remapping(void) { }
static inline int intr_remapping_supported(void) { return 0; }
static inline int intr_hardware_init(void) { return -ENODEV; }
static inline int intr_hardware_enable(void) { return -ENODEV; }
static inline void intr_hardware_disable(void) { }
static inline int intr_hardware_reenable(int eim) { return -ENODEV; }
static inline int intr_enable_fault_handling(void) { return -ENODEV; }
static inline int intr_setup_ioapic_entry(int irq,
struct IO_APIC_route_entry *entry,
unsigned int destination, int vector,
struct io_apic_irq_attr *attr)
static inline void setup_irq_remapping_ops(void) { }
static inline int irq_remapping_supported(void) { return 0; }
static inline int irq_remapping_prepare(void) { return -ENODEV; }
static inline int irq_remapping_enable(void) { return -ENODEV; }
static inline void irq_remapping_disable(void) { }
static inline int irq_remapping_reenable(int eim) { return -ENODEV; }
static inline int irq_remap_enable_fault_handling(void) { return -ENODEV; }
static inline int setup_ioapic_remapped_entry(int irq,
struct IO_APIC_route_entry *entry,
unsigned int destination,
int vector,
struct io_apic_irq_attr *attr)
{
return -ENODEV;
}
static inline int intr_set_affinity(struct irq_data *data,
const struct cpumask *mask,
bool force)
static inline int set_remapped_irq_affinity(struct irq_data *data,
const struct cpumask *mask,
bool force)
{
return 0;
}
static inline void intr_free_irq(int irq) { }
static inline void intr_compose_msi_msg(struct pci_dev *pdev,
unsigned int irq, unsigned int dest,
struct msi_msg *msg, u8 hpet_id)
static inline void free_remapped_irq(int irq) { }
static inline void compose_remapped_msi_msg(struct pci_dev *pdev,
unsigned int irq, unsigned int dest,
struct msi_msg *msg, u8 hpet_id)
{
}
static inline int intr_msi_alloc_irq(struct pci_dev *pdev, int irq, int nvec)
static inline int msi_alloc_remapped_irq(struct pci_dev *pdev, int irq, int nvec)
{
return -ENODEV;
}
static inline int intr_msi_setup_irq(struct pci_dev *pdev, unsigned int irq,
int index, int sub_handle)
static inline int msi_setup_remapped_irq(struct pci_dev *pdev, unsigned int irq,
int index, int sub_handle)
{
return -ENODEV;
}
static inline int intr_setup_hpet_msi(unsigned int irq, unsigned int id)
static inline int setup_hpet_msi_remapped(unsigned int irq, unsigned int id)
{
return -ENODEV;
}
Expand Down
22 changes: 11 additions & 11 deletions trunk/arch/x86/kernel/apic/apic.c
Original file line number Diff line number Diff line change
Expand Up @@ -1442,8 +1442,8 @@ void __init bsp_end_local_APIC_setup(void)
* Now that local APIC setup is completed for BP, configure the fault
* handling for interrupt remapping.
*/
if (intr_remapping_enabled)
intr_enable_fault_handling();
if (irq_remapping_enabled)
irq_remap_enable_fault_handling();

}

Expand Down Expand Up @@ -1518,7 +1518,7 @@ void enable_x2apic(void)
int __init enable_IR(void)
{
#ifdef CONFIG_IRQ_REMAP
if (!intr_remapping_supported()) {
if (!irq_remapping_supported()) {
pr_debug("intr-remapping not supported\n");
return -1;
}
Expand All @@ -1529,7 +1529,7 @@ int __init enable_IR(void)
return -1;
}

return intr_hardware_enable();
return irq_remapping_enable();
#endif
return -1;
}
Expand All @@ -1541,9 +1541,9 @@ void __init enable_IR_x2apic(void)
int hardware_init_ret;

/* Make sure irq_remap_ops are initialized */
setup_intr_remapping();
setup_irq_remapping_ops();

hardware_init_ret = intr_hardware_init();
hardware_init_ret = irq_remapping_prepare();
if (hardware_init_ret && !x2apic_supported())
return;

Expand Down Expand Up @@ -2180,8 +2180,8 @@ static int lapic_suspend(void)
local_irq_save(flags);
disable_local_APIC();

if (intr_remapping_enabled)
intr_hardware_disable();
if (irq_remapping_enabled)
irq_remapping_disable();

local_irq_restore(flags);
return 0;
Expand All @@ -2197,7 +2197,7 @@ static void lapic_resume(void)
return;

local_irq_save(flags);
if (intr_remapping_enabled) {
if (irq_remapping_enabled) {
/*
* IO-APIC and PIC have their own resume routines.
* We just mask them here to make sure the interrupt
Expand Down Expand Up @@ -2249,8 +2249,8 @@ static void lapic_resume(void)
apic_write(APIC_ESR, 0);
apic_read(APIC_ESR);

if (intr_remapping_enabled)
intr_hardware_reenable(x2apic_mode);
if (irq_remapping_enabled)
irq_remapping_reenable(x2apic_mode);

local_irq_restore(flags);
}
Expand Down
41 changes: 21 additions & 20 deletions trunk/arch/x86/kernel/apic/io_apic.c
Original file line number Diff line number Diff line change
Expand Up @@ -1381,9 +1381,9 @@ static int setup_ioapic_entry(int irq, struct IO_APIC_route_entry *entry,
unsigned int destination, int vector,
struct io_apic_irq_attr *attr)
{
if (intr_remapping_enabled)
return intr_setup_ioapic_entry(irq, entry, destination,
vector, attr);
if (irq_remapping_enabled)
return setup_ioapic_remapped_entry(irq, entry, destination,
vector, attr);

memset(entry, 0, sizeof(*entry));

Expand Down Expand Up @@ -1540,7 +1540,7 @@ static void __init setup_timer_IRQ0_pin(unsigned int ioapic_idx,
{
struct IO_APIC_route_entry entry;

if (intr_remapping_enabled)
if (irq_remapping_enabled)
return;

memset(&entry, 0, sizeof(entry));
Expand Down Expand Up @@ -1626,7 +1626,7 @@ __apicdebuginit(void) print_IO_APIC(int ioapic_idx)

printk(KERN_DEBUG ".... IRQ redirection table:\n");

if (intr_remapping_enabled) {
if (irq_remapping_enabled) {
printk(KERN_DEBUG " NR Indx Fmt Mask Trig IRR"
" Pol Stat Indx2 Zero Vect:\n");
} else {
Expand All @@ -1635,7 +1635,7 @@ __apicdebuginit(void) print_IO_APIC(int ioapic_idx)
}

for (i = 0; i <= reg_01.bits.entries; i++) {
if (intr_remapping_enabled) {
if (irq_remapping_enabled) {
struct IO_APIC_route_entry entry;
struct IR_IO_APIC_route_entry *ir_entry;

Expand Down Expand Up @@ -2002,7 +2002,7 @@ void disable_IO_APIC(void)
* IOAPIC RTE as well as interrupt-remapping table entry).
* As this gets called during crash dump, keep this simple for now.
*/
if (ioapic_i8259.pin != -1 && !intr_remapping_enabled) {
if (ioapic_i8259.pin != -1 && !irq_remapping_enabled) {
struct IO_APIC_route_entry entry;

memset(&entry, 0, sizeof(entry));
Expand All @@ -2026,7 +2026,7 @@ void disable_IO_APIC(void)
* Use virtual wire A mode when interrupt remapping is enabled.
*/
if (cpu_has_apic || apic_from_smp_config())
disconnect_bsp_APIC(!intr_remapping_enabled &&
disconnect_bsp_APIC(!irq_remapping_enabled &&
ioapic_i8259.pin != -1);
}

Expand Down Expand Up @@ -2586,7 +2586,7 @@ static void irq_remap_modify_chip_defaults(struct irq_chip *chip)
chip->irq_eoi = ir_ack_apic_level;

#ifdef CONFIG_SMP
chip->irq_set_affinity = intr_set_affinity;
chip->irq_set_affinity = set_remapped_irq_affinity;
#endif
}
#endif /* CONFIG_IRQ_REMAP */
Expand Down Expand Up @@ -2799,7 +2799,7 @@ static inline void __init check_timer(void)
* 8259A.
*/
if (pin1 == -1) {
if (intr_remapping_enabled)
if (irq_remapping_enabled)
panic("BIOS bug: timer not connected to IO-APIC");
pin1 = pin2;
apic1 = apic2;
Expand Down Expand Up @@ -2832,7 +2832,7 @@ static inline void __init check_timer(void)
clear_IO_APIC_pin(0, pin1);
goto out;
}
if (intr_remapping_enabled)
if (irq_remapping_enabled)
panic("timer doesn't work through Interrupt-remapped IO-APIC");
local_irq_disable();
clear_IO_APIC_pin(apic1, pin1);
Expand Down Expand Up @@ -3056,7 +3056,7 @@ void destroy_irq(unsigned int irq)
irq_set_status_flags(irq, IRQ_NOREQUEST|IRQ_NOPROBE);

if (irq_remapped(cfg))
intr_free_irq(irq);
free_remapped_irq(irq);
raw_spin_lock_irqsave(&vector_lock, flags);
__clear_irq_vector(irq, cfg);
raw_spin_unlock_irqrestore(&vector_lock, flags);
Expand Down Expand Up @@ -3085,7 +3085,7 @@ static int msi_compose_msg(struct pci_dev *pdev, unsigned int irq,
dest = apic->cpu_mask_to_apicid_and(cfg->domain, apic->target_cpus());

if (irq_remapped(cfg)) {
intr_compose_msi_msg(pdev, irq, dest, msg, hpet_id);
compose_remapped_msi_msg(pdev, irq, dest, msg, hpet_id);
return err;
}

Expand Down Expand Up @@ -3198,21 +3198,22 @@ int native_setup_msi_irqs(struct pci_dev *dev, int nvec, int type)
if (irq == 0)
return -1;
irq_want = irq + 1;
if (!intr_remapping_enabled)
if (!irq_remapping_enabled)
goto no_ir;

if (!sub_handle) {
/*
* allocate the consecutive block of IRTE's
* for 'nvec'
*/
index = intr_msi_alloc_irq(dev, irq, nvec);
index = msi_alloc_remapped_irq(dev, irq, nvec);
if (index < 0) {
ret = index;
goto error;
}
} else {
ret = intr_msi_setup_irq(dev, irq, index, sub_handle);
ret = msi_setup_remapped_irq(dev, irq, index,
sub_handle);
if (ret < 0)
goto error;
}
Expand Down Expand Up @@ -3332,8 +3333,8 @@ int arch_setup_hpet_msi(unsigned int irq, unsigned int id)
struct msi_msg msg;
int ret;

if (intr_remapping_enabled) {
if (!intr_setup_hpet_msi(irq, id))
if (irq_remapping_enabled) {
if (!setup_hpet_msi_remapped(irq, id))
return -1;
}

Expand Down Expand Up @@ -3712,8 +3713,8 @@ void __init setup_ioapic_dest(void)
else
mask = apic->target_cpus();

if (intr_remapping_enabled)
intr_set_affinity(idata, mask, false);
if (irq_remapping_enabled)
set_remapped_irq_affinity(idata, mask, false);
else
ioapic_set_affinity(idata, mask, false);
}
Expand Down
8 changes: 4 additions & 4 deletions trunk/drivers/iommu/dmar.c
Original file line number Diff line number Diff line change
Expand Up @@ -556,7 +556,7 @@ int __init detect_intel_iommu(void)

dmar = (struct acpi_table_dmar *) dmar_tbl;

if (ret && intr_remapping_enabled && cpu_has_x2apic &&
if (ret && irq_remapping_enabled && cpu_has_x2apic &&
dmar->flags & 0x1)
printk(KERN_INFO
"Queued invalidation will be enabled to support x2apic and Intr-remapping.\n");
Expand Down Expand Up @@ -1042,7 +1042,7 @@ static const char *dma_remap_fault_reasons[] =
"non-zero reserved fields in PTE",
};

static const char *intr_remap_fault_reasons[] =
static const char *irq_remap_fault_reasons[] =
{
"Detected reserved fields in the decoded interrupt-remapped request",
"Interrupt index exceeded the interrupt-remapping table size",
Expand All @@ -1058,9 +1058,9 @@ static const char *intr_remap_fault_reasons[] =
const char *dmar_get_fault_reason(u8 fault_reason, int *fault_type)
{
if (fault_reason >= 0x20 && (fault_reason <= 0x20 +
ARRAY_SIZE(intr_remap_fault_reasons))) {
ARRAY_SIZE(irq_remap_fault_reasons))) {
*fault_type = INTR_REMAP;
return intr_remap_fault_reasons[fault_reason - 0x20];
return irq_remap_fault_reasons[fault_reason - 0x20];
} else if (fault_reason < ARRAY_SIZE(dma_remap_fault_reasons)) {
*fault_type = DMA_REMAP;
return dma_remap_fault_reasons[fault_reason];
Expand Down
2 changes: 1 addition & 1 deletion trunk/drivers/iommu/intel-iommu.c
Original file line number Diff line number Diff line change
Expand Up @@ -4083,7 +4083,7 @@ static int intel_iommu_domain_has_cap(struct iommu_domain *domain,
if (cap == IOMMU_CAP_CACHE_COHERENCY)
return dmar_domain->iommu_snooping;
if (cap == IOMMU_CAP_INTR_REMAP)
return intr_remapping_enabled;
return irq_remapping_enabled;

return 0;
}
Expand Down
Loading

0 comments on commit a43b862

Please sign in to comment.