[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

 


Rackspace

Lists.xenproject.org is hosted with RackSpace, monitoring our
servers 24x7x365 and backed by RackSpace's Fanatical Support®.