|
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] Re: [Xen-devel] Re: Continuing problems booting
Jeremy Fitzhardinge wrote: > Gerd Hoffmann wrote: >> Ok. So the old code should be fine and we just need the additional loop >> to handle the ioapic-less case. Will send updated patches tomorrow. >> > > OK. I already applied them as-is just to check nothing breaks. I'll > replace them when you repost. Here we go. Fixed ioapic loop as discussed, also updated names to be more descriptive, looks like this now: [root@xeni ~]# grep pirq /proc/interrupts 1: 2 0 0 0 xen-pirq-ioapic-edge i8042 3: 3 0 0 0 xen-pirq-ioapic-edge 4: 3 0 0 0 xen-pirq-ioapic-edge 7: 0 0 0 0 xen-pirq-ioapic-edge parport0 8: 1 0 0 0 xen-pirq-ioapic-edge rtc0 9: 0 0 0 0 xen-pirq-ioapic-level acpi 12: 4 0 0 0 xen-pirq-ioapic-edge i8042 16: 0 0 0 0 xen-pirq-ioapic-level uhci_hcd:usb3, uhci_hcd:usb8 18: 0 0 0 0 xen-pirq-ioapic-level uhci_hcd:usb5 19: 5288 0 0 0 xen-pirq-ioapic-level ehci_hcd:usb1, uhci_hcd:usb7, ahci 20: 524 0 0 0 xen-pirq-ioapic-level eth0 21: 0 0 0 0 xen-pirq-ioapic-level uhci_hcd:usb4 22: 242 0 0 0 xen-pirq-ioapic-level HDA Intel 23: 0 0 0 0 xen-pirq-ioapic-level ehci_hcd:usb2, uhci_hcd:usb6 [root@zen ~]# grep pirq /proc/interrupts 1: 8 xen-pirq-xt-pic i8042 3: 5 xen-pirq-xt-pic 4: 1 xen-pirq-xt-pic 5: 0 xen-pirq-xt-pic Intel 440MX, Intel 440MX Modem 6: 1 xen-pirq-xt-pic 7: 1 xen-pirq-xt-pic 8: 1 xen-pirq-xt-pic rtc0 10: 200002 xen-pirq-xt-pic yenta, firewire_ohci 11: 196 xen-pirq-xt-pic uhci_hcd:usb1, eth0 12: 107 xen-pirq-xt-pic i8042 14: 2840 xen-pirq-xt-pic ata_piix 15: 0 xen-pirq-xt-pic ata_piix cheers, Gerd From 1d7cf28e81e5ed2f7649186ab7a040aaa57a9b40 Mon Sep 17 00:00:00 2001
From: Gerd Hoffmann <kraxel@xxxxxxxxxxxxxxxxxxxx>
Date: Mon, 9 Mar 2009 14:23:56 +0100
Subject: [PATCH 1/2] xen: set pirq name to something useful.
Signed-off-by: Gerd Hoffmann <kraxel@xxxxxxxxxxxxxxxxxxxx>
---
arch/x86/xen/pci.c | 3 ++-
drivers/xen/events.c | 4 ++--
include/xen/events.h | 2 +-
3 files changed, 5 insertions(+), 4 deletions(-)
diff --git a/arch/x86/xen/pci.c b/arch/x86/xen/pci.c
index 502ff5f..fb3ada9 100644
--- a/arch/x86/xen/pci.c
+++ b/arch/x86/xen/pci.c
@@ -48,7 +48,8 @@ int xen_register_gsi(u32 gsi, int triggering, int polarity)
printk(KERN_DEBUG "xen: registering gsi %u triggering %d polarity %d\n",
gsi, triggering, polarity);
- irq = xen_allocate_pirq(gsi);
+ irq = xen_allocate_pirq(gsi, (triggering == ACPI_EDGE_SENSITIVE)
+ ? "ioapic-edge" : "ioapic-level");
printk(KERN_DEBUG "xen: --> irq=%d\n", irq);
diff --git a/drivers/xen/events.c b/drivers/xen/events.c
index 6098fca..3888e2c 100644
--- a/drivers/xen/events.c
+++ b/drivers/xen/events.c
@@ -533,7 +533,7 @@ static int find_irq_by_gsi(unsigned gsi)
* event channel until the irq actually started up. Return an
* existing irq if we've already got one for the gsi.
*/
-int xen_allocate_pirq(unsigned gsi)
+int xen_allocate_pirq(unsigned gsi, char *name)
{
int irq;
struct physdev_irq irq_op;
@@ -555,7 +555,7 @@ int xen_allocate_pirq(unsigned gsi)
irq = find_unbound_irq();
set_irq_chip_and_handler_name(irq, &xen_pirq_chip,
- handle_level_irq, "pirq");
+ handle_level_irq, name);
irq_op.irq = irq;
if (HYPERVISOR_physdev_op(PHYSDEVOP_alloc_irq_vector, &irq_op)) {
diff --git a/include/xen/events.h b/include/xen/events.h
index 2cdb0de..0814763 100644
--- a/include/xen/events.h
+++ b/include/xen/events.h
@@ -67,7 +67,7 @@ unsigned irq_from_evtchn(unsigned int evtchn);
/* Allocate an irq for a physical interrupt, given a gsi. "Legacy"
GSIs are identity mapped; others are dynamically allocated as
usual. */
-int xen_allocate_pirq(unsigned gsi);
+int xen_allocate_pirq(unsigned gsi, char *name);
/* Return vector allocated to pirq */
int xen_vector_from_irq(unsigned pirq);
--
1.6.1.3
From 0aea878c27395a3c61843816f4dfab8486a0c804 Mon Sep 17 00:00:00 2001
From: Gerd Hoffmann <kraxel@xxxxxxxxxxxxxxxxxxxx>
Date: Tue, 10 Mar 2009 10:12:30 +0100
Subject: [PATCH 2/2] xen: fix legacy irq setup, make ioapic-less machines work.
Signed-off-by: Gerd Hoffmann <kraxel@xxxxxxxxxxxxxxxxxxxx>
---
arch/x86/xen/pci.c | 6 ++++++
1 files changed, 6 insertions(+), 0 deletions(-)
diff --git a/arch/x86/xen/pci.c b/arch/x86/xen/pci.c
index fb3ada9..69b475b 100644
--- a/arch/x86/xen/pci.c
+++ b/arch/x86/xen/pci.c
@@ -65,6 +65,12 @@ void __init xen_setup_pirqs(void)
{
int irq;
+ if (0 == nr_ioapics) {
+ for (irq=0; irq < NR_IRQS_LEGACY; irq++)
+ xen_allocate_pirq(irq, "xt-pic");
+ return;
+ }
+
/* Pre-allocate legacy irqs */
for (irq=0; irq < NR_IRQS_LEGACY; irq++) {
int trigger, polarity;
--
1.6.1.3
_______________________________________________ Xen-devel mailing list Xen-devel@xxxxxxxxxxxxxxxxxxx http://lists.xensource.com/xen-devel
|
![]() |
Lists.xenproject.org is hosted with RackSpace, monitoring our |