From: Konrad Rzeszutek Wilk <konrad.wilk@oracle.com>
To: ktckd <ktckd9@gmail.com>
Cc: Jeremy Fitzhardinge <jeremy@goop.org>, xen-devel@lists.xensource.com
Subject: Re: Fwd: Xen4.0/FC8/Linux-2.6.31.13 hang on boot - global_irq != irq for INT_SRC_OVR
Date: Tue, 13 Jul 2010 11:06:24 -0400 [thread overview]
Message-ID: <20100713150624.GA5405@phenom.dumpdata.com> (raw)
In-Reply-To: <AANLkTimrkcGIpe1Hzy0BkbBFAoENgLkFwAcTsUkE4m5q@mail.gmail.com>
On Wed, Jul 07, 2010 at 11:59:58AM -0500, ktckd wrote:
> Attaching the serial with the grub options mentioned below. Do let me know
> if you need any other information.
>
> I was using 2.6.18.8 when I tried xen 3.4.0
OK, that is an ancient Dom0. You can try to re-use this Dom0 (2.6.31.x) with that
Xen 3.4.0 and see if it works.. but
> BUG: unable to handle kernel NULL pointer dereference at (null)
> IP: [<ffffffff8102f6cf>] add_pin_to_irq_node+0x24/0xaf
> PGD 0
> Oops: 0000 [#1] SMP
> last sysfs file:
> CPU 0
> Modules linked in:
> Pid: 1, comm: swapper Not tainted 2.6.31.13-xen #1 HP EliteBook 8740w
> RIP: e030:[<ffffffff8102f6cf>] [<ffffffff8102f6cf>] add_pin_to_irq_node+0x24/0xaf
> RSP: e02b:ffff88016d4b1d90 EFLAGS: 00010246
> RAX: 0000000000000000 RBX: 0000000000000009 RCX: 0000000000000009
> RDX: 0000000000000000 RSI: 0000000000000000 RDI: 0000000000000000
> RBP: 0000000000000000 R08: 0000000000000001 R09: 0000000000000001
> R10: 000000000000000f R11: 0000000000000002 R12: 0000000000000009
> R13: 0000000000000000 R14: 0000000000000000 R15: 0000000000000009
> FS: 0000000000000000(0000) GS:ffffc90000000000(0000) knlGS:0000000000000000
> CS: e033 DS: 0000 ES: 0000 CR0: 000000008005003b
> CR2: 0000000000000000 CR3: 0000000001001000 CR4: 0000000000002660
> DR0: 0000000000000000 DR1: 0000000000000000 DR2: 0000000000000000
> DR3: 0000000000000000 DR6: 00000000ffff0ff0 DR7: 0000000000000400
> Process swapper (pid: 1, threadinfo ffff88016d4b0000, task ffff88016d4a8000)
> Stack:
> ffff88016d688f50 ffffffff811699c1 0000000060629933 0000000000000009
> <0> 0000000000000000 0000000000000001 ffffffff8156b900 ffffffff81030e36
> <0> ffffffffffffffff 0000000000000049 0000000060629933 0000000000000009
> Call Trace:
> [<ffffffff811699c1>] ? internal_create_group+0xf4/0x174
> [<ffffffff81030e36>] ? setup_IO_APIC_irq_extra+0xcd/0x153
> [<ffffffff8121c4ba>] ? acpi_ev_sci_xrupt_handler+0x0/0x4a
> [<ffffffff8102a863>] ? acpi_gsi_to_irq+0x24/0x40
> [<ffffffff8120aa37>] ? acpi_os_install_interrupt_handler+0x36/0xbd
> [<ffffffff81694658>] ? acpi_init+0x0/0x27f
> [<ffffffff8121b89e>] ? acpi_ev_install_xrupt_handlers+0x1a/0x79
> [<ffffffff81694658>] ? acpi_init+0x0/0x27f
> [<ffffffff816946d8>] ? acpi_init+0x80/0x27f
> [<ffffffff81694658>] ? acpi_init+0x0/0x27f
.. looking at this stack trace and the source code and the serial output
(thank you very much), this caught my eye:
ACPI: INT_SRC_OVR (bus 0 bus_irq 0 global_irq 2 dfl dfl)
ACPI: INT_SRC_OVR (bus 0 bus_irq 9 global_irq 9 high level)
ACPI: IRQ0 used by override.
ACPI: IRQ2 used by override.
ACPI: IRQ9 used by override.
[ which looks to me that pin 0 and pin 2 of the IOAPIC are routed to the
same spot ]
and:
xen: registering gsi 0 triggering 1 polarity 0
xen: --> irq=0
xen_set_ioapic_routing: irq 0 gsi 0 vector 0 ioapic 0 pin 0 triggering 0
polarity 0
xen: registering gsi 1 triggering 1 polarity 0
xen: --> irq=1
xen_set_ioapic_routing: irq 1 gsi 1 vector 1 ioapic 0 pin 1 triggering 0
polarity 0
xen: registering gsi 3 triggering 1 polarity 0
xen: --> irq=3
The lack of IRQ 2 is the worrying part. The reason for that is b/c the
bus_irq (0) != for GSI IRQ 2 (2) so we end up in acpi_get_override_irq
going over the 16 IRQs and return -1. Hence xen_setup_pirqs fails to setup
an IRQ handler for IRQ 2.
Which would explain why the 'add_pin_to_irq_node' would fail. In one part
it tries to do "entry = cfg->irq_2_pin;" which would throw a NULL
pointer exception as 'cfg' for IRQ 2 has not been defined.
This is all just a speculation. But we can try testing this out with
this hack patch:
NOTE: You might need to change the polarity to zero instead of 1.
diff --git a/arch/x86/xen/pci.c b/arch/x86/xen/pci.c
index 1af81dd..1d3cc7f 100644
--- a/arch/x86/xen/pci.c
+++ b/arch/x86/xen/pci.c
@@ -77,6 +77,7 @@ int xen_register_gsi(u32 gsi, int triggering, int polarity)
void __init xen_setup_pirqs(void)
{
int irq;
+ int rc;
if (0 == nr_ioapics) {
for (irq = 0; irq < NR_IRQS_LEGACY; irq++)
@@ -88,9 +89,15 @@ void __init xen_setup_pirqs(void)
for (irq = 0; irq < NR_IRQS_LEGACY; irq++) {
int trigger, polarity;
- if (acpi_get_override_irq(irq, &trigger, &polarity) == -1)
- continue;
+ rc = acpi_get_override_irq(irq, &trigger, &polarity);
+ if (rc == -1) {
+ printk(KERN_INFO "%s: IRQ: %d bus_irq != global_irq!\n", __FUNCTION__, irq);
+ if (irq != 2)
+ continue;
+ trigger = 1; /* level */
+ polarity = 1; /* low, not sure if should be high? */
+ }
xen_register_gsi(irq,
trigger ? ACPI_LEVEL_SENSITIVE : ACPI_EDGE_SENSITIVE,
polarity ? ACPI_ACTIVE_LOW : ACPI_ACTIVE_HIGH);
next prev parent reply other threads:[~2010-07-13 15:06 UTC|newest]
Thread overview: 8+ messages / expand[flat|nested] mbox.gz Atom feed top
[not found] <AANLkTim33Hbar2x0ey8R3hyQ97esu_C6ll7GuYQIb8i_@mail.gmail.com>
2010-07-02 15:19 ` Fwd: Xen4.0/FC8/Linux-2.6.31.13 hang on boot ktckd
2010-07-06 14:15 ` Konrad Rzeszutek Wilk
2010-07-07 16:59 ` ktckd
2010-07-13 15:06 ` Konrad Rzeszutek Wilk [this message]
2010-07-13 18:22 ` ktckd
2010-07-13 20:06 ` Konrad Rzeszutek Wilk
2010-07-14 20:47 ` ktckd
2010-07-15 13:31 ` Konrad Rzeszutek Wilk
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20100713150624.GA5405@phenom.dumpdata.com \
--to=konrad.wilk@oracle.com \
--cc=jeremy@goop.org \
--cc=ktckd9@gmail.com \
--cc=xen-devel@lists.xensource.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.