# HG changeset patch
# User Keir Fraser <keir.fraser@xxxxxxxxxx>
# Date 1221040066 -3600
# Node ID 65dc37be0443e856d53e3a1f0c9f8f4a8999b851
# Parent 7f1c71c6d4c8814eb9d9f1f23d493d9edebd1a1e
x86: Remove MSI boot parameter -- now always on.
Signed-off-by: Keir Fraser <keir.fraser@xxxxxxxxxx>
---
xen/arch/x86/io_apic.c | 13 +------
xen/arch/x86/physdev.c | 70 +++++++++++++++---------------------------
xen/include/asm-x86/io_apic.h | 2 -
3 files changed, 27 insertions(+), 58 deletions(-)
diff -r 7f1c71c6d4c8 -r 65dc37be0443 xen/arch/x86/io_apic.c
--- a/xen/arch/x86/io_apic.c Tue Sep 09 17:28:05 2008 +0100
+++ b/xen/arch/x86/io_apic.c Wed Sep 10 10:47:46 2008 +0100
@@ -45,23 +45,14 @@ int (*ioapic_renumber_irq)(int ioapic, i
int (*ioapic_renumber_irq)(int ioapic, int irq);
atomic_t irq_mis_count;
-int msi_enable = 0;
-boolean_param("msi", msi_enable);
-
int domain_irq_to_vector(struct domain *d, int irq)
{
- if ( !msi_enable )
- return irq_to_vector(irq);
- else
- return d->arch.pirq_vector[irq];
+ return d->arch.pirq_vector[irq];
}
int domain_vector_to_irq(struct domain *d, int vector)
{
- if ( !msi_enable )
- return vector_to_irq(vector);
- else
- return d->arch.vector_pirq[vector];
+ return d->arch.vector_pirq[vector];
}
/* Where if anywhere is the i8259 connect in external int mode */
diff -r 7f1c71c6d4c8 -r 65dc37be0443 xen/arch/x86/physdev.c
--- a/xen/arch/x86/physdev.c Tue Sep 09 17:28:05 2008 +0100
+++ b/xen/arch/x86/physdev.c Wed Sep 10 10:47:46 2008 +0100
@@ -136,8 +136,9 @@ done:
/* The pirq should have been unbound before this call. */
static int unmap_domain_pirq(struct domain *d, int pirq)
{
- int ret = 0;
- int vector;
+ unsigned long flags;
+ irq_desc_t *desc;
+ int vector, ret = 0;
if ( d == NULL || pirq < 0 || pirq >= NR_PIRQS )
return -EINVAL;
@@ -154,33 +155,29 @@ static int unmap_domain_pirq(struct doma
gdprintk(XENLOG_G_ERR, "domain %X: pirq %x not mapped still\n",
d->domain_id, pirq);
ret = -EINVAL;
- }
- else
- {
- unsigned long flags;
- irq_desc_t *desc;
-
- desc = &irq_desc[vector];
- spin_lock_irqsave(&desc->lock, flags);
- if ( desc->msi_desc )
- pci_disable_msi(vector);
-
- if ( desc->handler == &pci_msi_type )
- {
- /* MSI is not shared, so should be released already */
- BUG_ON(desc->status & IRQ_GUEST);
- irq_desc[vector].handler = &no_irq_type;
- }
- spin_unlock_irqrestore(&desc->lock, flags);
-
- d->arch.pirq_vector[pirq] = d->arch.vector_pirq[vector] = 0;
- }
+ goto done;
+ }
+
+ desc = &irq_desc[vector];
+ spin_lock_irqsave(&desc->lock, flags);
+ if ( desc->msi_desc )
+ pci_disable_msi(vector);
+
+ if ( desc->handler == &pci_msi_type )
+ {
+ /* MSI is not shared, so should be released already */
+ BUG_ON(desc->status & IRQ_GUEST);
+ irq_desc[vector].handler = &no_irq_type;
+ }
+ spin_unlock_irqrestore(&desc->lock, flags);
+
+ d->arch.pirq_vector[pirq] = d->arch.vector_pirq[vector] = 0;
ret = irq_deny_access(d, pirq);
-
if ( ret )
gdprintk(XENLOG_G_ERR, "deny irq %x access failed\n", pirq);
+ done:
return ret;
}
@@ -189,10 +186,6 @@ static int physdev_map_pirq(struct physd
struct domain *d;
int vector, pirq, ret = 0;
unsigned long flags;
-
- /* if msi_enable is not enabled, map always succeeds */
- if ( !msi_enable )
- return 0;
if ( !IS_PRIV(current->domain) )
return -EPERM;
@@ -303,14 +296,8 @@ static int physdev_unmap_pirq(struct phy
unsigned long flags;
int ret;
- if ( !msi_enable )
- return 0;
-
if ( !IS_PRIV(current->domain) )
return -EPERM;
-
- if ( !unmap )
- return -EINVAL;
if ( unmap->domid == DOMID_SELF )
d = rcu_lock_domain(current->domain);
@@ -318,14 +305,12 @@ static int physdev_unmap_pirq(struct phy
d = rcu_lock_domain_by_id(unmap->domid);
if ( d == NULL )
- {
- rcu_unlock_domain(d);
return -ESRCH;
- }
spin_lock_irqsave(&d->arch.irq_lock, flags);
ret = unmap_domain_pirq(d, unmap->pirq);
spin_unlock_irqrestore(&d->arch.irq_lock, flags);
+
rcu_unlock_domain(d);
return ret;
@@ -452,14 +437,9 @@ ret_t do_physdev_op(int cmd, XEN_GUEST_H
irq_op.vector = assign_irq_vector(irq);
- ret = 0;
-
- if ( msi_enable )
- {
- spin_lock_irqsave(&dom0->arch.irq_lock, flags);
- ret = map_domain_pirq(dom0, irq_op.irq, irq_op.vector, NULL);
- spin_unlock_irqrestore(&dom0->arch.irq_lock, flags);
- }
+ spin_lock_irqsave(&dom0->arch.irq_lock, flags);
+ ret = map_domain_pirq(dom0, irq_op.irq, irq_op.vector, NULL);
+ spin_unlock_irqrestore(&dom0->arch.irq_lock, flags);
if ( copy_to_guest(arg, &irq_op, 1) != 0 )
ret = -EFAULT;
diff -r 7f1c71c6d4c8 -r 65dc37be0443 xen/include/asm-x86/io_apic.h
--- a/xen/include/asm-x86/io_apic.h Tue Sep 09 17:28:05 2008 +0100
+++ b/xen/include/asm-x86/io_apic.h Wed Sep 10 10:47:46 2008 +0100
@@ -162,8 +162,6 @@ static inline void io_apic_modify(unsign
/* 1 if "noapic" boot option passed */
extern int skip_ioapic_setup;
-extern int msi_enable;
-
/*
* If we use the IO-APIC for IRQ routing, disable automatic
* assignment of PCI IRQ's.
_______________________________________________
Xen-changelog mailing list
Xen-changelog@xxxxxxxxxxxxxxxxxxx
http://lists.xensource.com/xen-changelog
|