|
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] Re: [Xen-devel] pvops acpi and xen 4 issues
On 03/10/2010 11:44 AM, M. Nunberg wrote: On Mon, 2010-03-08 at 15:02 -0500, Konrad Rzeszutek Wilk wrote:make sure it was indeed being called. I think this might have something to do with what Jeremy mentioned about my SCI being on 9 and not 20, but honestly, I haven't a clue. I have the full log if you need more.I am attaching a debug patch that will help in troubleshooting this and potentially fix this. Couple of things: 1). Turn the Enable ACPI SCI in the BIOS to Enable. 2). Compile your Linux kernel with the attached patch and these two options: CONFIG_ACPI_DEBUG=y CONFIG_ACPI_DEBUG_FUNC_TRACE=y Do use your old .config that was triggering the failure in the first case. 3). Edit your kernel line to have: debug initcall_debug acpi.debug_level=0xffffffff acpi.debug_layer=0x2 xen_sci=fun 4). Boot your kernel. You should see something like this: ... snip.. [ 0.000000] acpi_sci_ioapic_setup: 0 -> 9 (3, 1)acpi_sci_ioapic_setup: 0 -> 20 (3, 3)... [ 1.483956] xen_setup_pirqs: FADT.SCI: 9 ACPI.SCI:9. Using 9 IRQ, [ 1.490025] xen_setup_pirqs: SCI override: trigger: level->level, polarity: high->high [ 1.497824] xen: registering gsi 9 triggering 0 polarity 0 [ 1.503282] xen_allocate_pirq: returning irq 9 for gsi 9 [ 1.508572] xen: --> irq=9NR_IRQS:4352 nr_irqs:4096 xen: registering gsi 0 triggering 1 polarity 0 xen: --> irq=0 Already setup the GSI :0 xen: registering gsi 1 triggering 1 polarity 0 xen: --> irq=1 Already setup the GSI :1 xen: registering gsi 2 triggering 1 polarity 0 xen: --> irq=2 Already setup the GSI :2 xen: registering gsi 3 triggering 1 polarity 0 xen: --> irq=3 Already setup the GSI :3 xen: registering gsi 4 triggering 1 polarity 0 xen: --> irq=4 Already setup the GSI :4 xen: registering gsi 5 triggering 1 polarity 0 xen: --> irq=5 Already setup the GSI :5 xen: registering gsi 6 triggering 1 polarity 0 xen: --> irq=6 Already setup the GSI :6 xen: registering gsi 7 triggering 1 polarity 0 xen: --> irq=7 Already setup the GSI :7 xen: registering gsi 8 triggering 1 polarity 0 xen: --> irq=8 Already setup the GSI :8 xen: registering gsi 9 triggering 1 polarity 0 xen: --> irq=9 Already setup the GSI :9 xen: registering gsi 10 triggering 1 polarity 0 xen: --> irq=10 Already setup the GSI :10 xen: registering gsi 11 triggering 1 polarity 0 xen: --> irq=11 Already setup the GSI :11 xen: registering gsi 12 triggering 1 polarity 0 xen: --> irq=12 Already setup the GSI :12 xen: registering gsi 13 triggering 1 polarity 0 xen: --> irq=13 Already setup the GSI :13 xen: registering gsi 14 triggering 1 polarity 0 xen: --> irq=14 Already setup the GSI :14 xen: registering gsi 15 triggering 1 polarity 0 xen: --> irq=15 Already setup the GSI :15 xen_setup_pirqs: FADT.SCI: 9 ACPI.SCI:20. Using IRQ 20. xen_setup_pirqs: acpi_get_override_irq fails for 20. xen_setup_pirqs: SCI override: trigger: level->edge, polarity: high->low xen: registering gsi 20 triggering 0 polarity 1 alloc irq_desc for 20 on node 0 alloc kstat_irqs on node 0 xen: --> irq=20 (XEN) IOAPIC[0]: Set PCI routing entry (8-20 -> 0x98 -> IRQ 20 Mode:1 Active:1) Console: colour VGA+ 80x25 ....[ 1.511254] Already setup the GSI :9And as you predicted, this line did not show up for 20.. and then later: [ 3.058890] ACPI: Core revision 20090903 [ 3.084701] acpi_early_init: FADT.SCI = 9s/9/20, again.. and then lots of ACPI debug stuff.In the log.Thought in your case, the IRQ that should show up is 20 and the 'Already setup the GSI :20' might not show up. Please e-mail the full serial log (even if it does work). Could you try this patch? (Already committed to xen/next, as it works for me.)
Thanks,
J
From 06ab9af4e7beaf2bcafae4e390b4a51908dfd29e Mon Sep 17 00:00:00 2001
From: Jeremy Fitzhardinge<jeremy.fitzhardinge@xxxxxxxxxx>
Date: Wed, 10 Mar 2010 15:44:21 -0800
Subject: [PATCH] Merge branch 'xen/dom0/apic-next' into xen/next
* xen/dom0/apic-next:
xen: parse MADT to get information to set up ACPI SCI
: abulafia:pts/0; git show d02659fd69312e5ff9890c1c7ca2bea9a782ad57
From d02659fd69312e5ff9890c1c7ca2bea9a782ad57 Mon Sep 17 00:00:00 2001
From: Jeremy Fitzhardinge<jeremy.fitzhardinge@xxxxxxxxxx>
Date: Wed, 10 Mar 2010 13:07:15 -0800
Subject: [PATCH] xen: parse MADT to get information to set up ACPI SCI
If the SCI is not in its traditional place of irq 9/gsi 9, then we
need to set it up properly.
Signed-off-by: Jeremy Fitzhardinge<jeremy.fitzhardinge@xxxxxxxxxx>
diff --git a/arch/x86/xen/pci.c b/arch/x86/xen/pci.c
index f999ad8..a2accf4 100644
--- a/arch/x86/xen/pci.c
+++ b/arch/x86/xen/pci.c
@@ -70,6 +70,97 @@ int xen_register_gsi(u32 gsi, int triggering, int polarity)
return irq;
}
+#ifdef CONFIG_ACPI
+#define BAD_MADT_ENTRY(entry, end) ( \
+ (!entry) || (unsigned long)entry + sizeof(*entry)> end || \
+ ((struct acpi_subtable_header *)entry)->length< sizeof(*entry))
+
+
+static int __init
+xen_acpi_parse_int_src_ovr(struct acpi_subtable_header * header,
+ const unsigned long end)
+{
+ struct acpi_madt_interrupt_override *intsrc = NULL;
+
+ intsrc = (struct acpi_madt_interrupt_override *)header;
+
+ if (BAD_MADT_ENTRY(intsrc, end))
+ return -EINVAL;
+
+ acpi_table_print_madt_entry(header);
+
+ if (intsrc->source_irq == acpi_gbl_FADT.sci_interrupt) {
+ int gsi;
+ int trigger, polarity;
+
+ trigger = intsrc->inti_flags& ACPI_MADT_TRIGGER_MASK;
+ polarity = intsrc->inti_flags& ACPI_MADT_POLARITY_MASK;
+
+ /* Command-line over-ride via acpi_sci= */
+ if (acpi_sci_flags& ACPI_MADT_TRIGGER_MASK)
+ trigger = acpi_sci_flags& ACPI_MADT_TRIGGER_MASK;
+
+ if (acpi_sci_flags& ACPI_MADT_POLARITY_MASK)
+ polarity = acpi_sci_flags& ACPI_MADT_POLARITY_MASK;
+
+ printk("xen: sci override: source_irq=%d global_irq=%d trigger=%x
polarity=%x\n",
+ intsrc->source_irq, intsrc->global_irq,
+ trigger, polarity);
+
+ switch (polarity) {
+ case ACPI_MADT_POLARITY_CONFORMS:
+ case ACPI_MADT_POLARITY_ACTIVE_LOW:
+ polarity = ACPI_ACTIVE_LOW;
+ break;
+
+ case ACPI_MADT_POLARITY_ACTIVE_HIGH:
+ polarity = ACPI_ACTIVE_HIGH;
+ break;
+
+ default:
+ return 0;
+ }
+
+ switch (trigger) {
+ case ACPI_MADT_TRIGGER_CONFORMS:
+ case ACPI_MADT_TRIGGER_LEVEL:
+ trigger = ACPI_LEVEL_SENSITIVE;
+ break;
+
+ case ACPI_MADT_TRIGGER_EDGE:
+ trigger = ACPI_EDGE_SENSITIVE;
+ break;
+
+ default:
+ return 0;
+ }
+
+ gsi = xen_register_gsi(intsrc->global_irq,
+ trigger, polarity);
+ /*
+ * stash over-ride to indicate we've been here
+ * and for later update of acpi_gbl_FADT
+ */
+ acpi_sci_override_gsi = gsi;
+
+ printk("xen: acpi sci %d\n", gsi);
+ }
+
+ return 0;
+}
+
+static __init void xen_setup_acpi_sci(void)
+{
+ acpi_table_parse_madt(ACPI_MADT_TYPE_INTERRUPT_OVERRIDE,
+ xen_acpi_parse_int_src_ovr,
+ nr_irqs);
+}
+#else
+static __init void xen_setup_acpi_sci(void)
+{
+}
+#endif
+
void __init xen_setup_pirqs(void)
{
int irq;
@@ -91,6 +182,8 @@ void __init xen_setup_pirqs(void)
trigger ? ACPI_LEVEL_SENSITIVE : ACPI_EDGE_SENSITIVE,
polarity ? ACPI_ACTIVE_LOW : ACPI_ACTIVE_HIGH);
}
+
+ xen_setup_acpi_sci();
}
#ifdef CONFIG_PCI_MSI
_______________________________________________
Xen-devel mailing list
Xen-devel@xxxxxxxxxxxxxxxxxxx
http://lists.xensource.com/xen-devel
|
![]() |
Lists.xenproject.org is hosted with RackSpace, monitoring our |