[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [Xen-devel] Re: XEN 4.0.1: BUG: IO-APIC + timer doesn't work!
>>> On 09.09.10 at 02:00, Markus Schuster <ml@xxxxxxxxxxxxxxxxxxxx> wrote: > I think the relevant difference is: > XEN 3.4.3: > (XEN) ..MP-BIOS bug: 8254 timer not connected to IO-APIC > (XEN) ...trying to set up timer (IRQ0) through the 8259A ... failed. > (XEN) ...trying to set up timer as Virtual Wire IRQ... failed. > (XEN) ...trying to set up timer as ExtINT IRQ... works. > > XEN 4.0.1: > (XEN) ..MP-BIOS bug: 8254 timer not connected to IO-APIC > (XEN) ...trying to set up timer (IRQ0) through the 8259A ... failed. > (XEN) ...trying to set up timer as Virtual Wire IRQ... failed. > (XEN) ...trying to set up timer as ExtINT IRQ... failed :(. > > Please have a look in the attached files for details. Could you try below patch (with "acpi_skip_timer_override" removed again)? Jan --- a/xen/arch/x86/i8259.c +++ b/xen/arch/x86/i8259.c @@ -367,6 +367,13 @@ void __devinit init_8259A(int auto_eoi) spin_unlock_irqrestore(&i8259A_lock, flags); } +void __init make_8259A_irq(unsigned int irq) +{ +printk("IRQ%u -> 8259A\n", irq);//temp + io_apic_irqs &= ~(1 << irq); + irq_to_desc(irq)->handler = &i8259A_irq_type; +} + static struct irqaction __read_mostly cascade = { no_action, "cascade", NULL}; void __init init_IRQ(void) --- a/xen/arch/x86/io_apic.c +++ b/xen/arch/x86/io_apic.c @@ -38,9 +38,6 @@ #include <io_ports.h> #include <public/physdev.h> -/* Different to Linux: our implementation can be simpler. */ -#define make_8259A_irq(irq) (io_apic_irqs &= ~(1<<(irq))) - int (*ioapic_renumber_irq)(int ioapic, int irq); atomic_t irq_mis_count; @@ -1929,7 +1926,6 @@ static inline void check_timer(void) irq_desc[0].depth = 0; irq_desc[0].status &= ~IRQ_DISABLED; - irq_desc[0].handler = &ioapic_edge_type; /* * Subtle, code in do_timer_interrupt() expects an AEOI --- a/xen/include/asm-x86/irq.h +++ b/xen/include/asm-x86/irq.h @@ -91,6 +91,7 @@ int i8259A_irq_pending(unsigned int irq) void mask_8259A(void); void unmask_8259A(void); void init_8259A(int aeoi); +void make_8259A_irq(unsigned int irq); int i8259A_suspend(void); int i8259A_resume(void); _______________________________________________ Xen-devel mailing list Xen-devel@xxxxxxxxxxxxxxxxxxx http://lists.xensource.com/xen-devel
|
Lists.xenproject.org is hosted with RackSpace, monitoring our |