Re: 2.6.35-rc3 regression: IBM Maia system is unbootable [ACPI related?]

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On Mon, 2010-06-21 at 11:54 -0500, James Bottomley wrote:
> On Mon, 2010-06-21 at 11:33 -0500, James Bottomley wrote:
> > On Mon, 2010-06-21 at 18:18 +0200, Andi Kleen wrote:
> > > James Bottomley <James.Bottomley@xxxxxxxxxxxxxxxxxxxxx> writes:
> > > 
> > > > The system in question has a set of root bridges, with the CD rom (which
> > > > is seen) being on bus 0 and the SCSI controller, which doesn't show up
> > > > being on bus 1 (with several other things on busses > 1).
> > > >
> > > > The system uses ACPI to detect the multiple bridges, so it seems that
> > > > this failure in 2.6.35-rc3:
> > > >
> > > > ACPI: Core revision 20100428
> > > > ACPI Error: Hardware did not enter ACPI mode (20100428/evxfevnt-103)
> > > > ACPI Warning: AcpiEnable failed (20100428/utxface-147)
> > > > ACPI: Unable to enable ACPI
> > > 
> > > That probably causes all the other problems. Without ACPI enabled
> > > modern systems generally do not work.
> > > 
> > > Just guessing, but maybe try to revert
> > > 
> > > b430acbd7c4b919886fa7fd92eeb7a695f1940d3
> > > 
> > > That was the last change in this area.
> > 
> > I can confirm that reverting this over a vanilla 2.6.35-rc3 fixes my
> > boot problem.
> 
> Andi asked for the timings with the commit reverted, so here they are
> (from ACPI version print to PCI root busses found):
> 
> [    0.084086] ACPI: Core revision 20100428
> [    0.119779] Setting APIC routing to physical flat
> [    0.124259] ..TIMER: vector=0x30 apic1=0 pin1=2 apic2=-1 pin2=-1
> [    0.128000] ..MP-BIOS bug: 8254 timer not connected to IO-APIC
> [    0.128000] ...trying to set up timer (IRQ0) through the 8259A ...
> [    0.128000] ..... (found apic 0 pin 2) ...
> [    0.128000] ....... failed.
> [    0.128000] ...trying to set up timer as Virtual Wire IRQ...
> [    0.169681] ..... works.
> [    0.172005] CPU0: Intel(R) Xeon(TM) MP CPU 3.16GHz stepping 01
> [    0.188000] lockdep: fixing up alternatives.
> [    0.188133] Booting Node   0, Processors  #1 Ok.
> [    0.288089] Brought up 2 CPUs
> [    0.292006] Total of 2 processors activated (12676.86 BogoMIPS).
> [    0.300923] khelper used greatest stack depth: 5864 bytes left
> [    0.305017] khelper used greatest stack depth: 5176 bytes left
> [    0.325510] NET: Registered protocol family 16
> [    0.341322] ACPI: bus type pci registered
> [    0.344474] PCI: Using configuration type 1 for base access
> [    0.359165] bio: create slab <bio-0> at 0
> [    0.478153] ACPI: Interpreter enabled
> [    0.488006] ACPI: (supports S0 S5)
> [    0.497875] ACPI: Using IOAPIC for interrupt routing
> [    0.548145] ACPI: No dock devices found.
> [    0.552176] PCI: Ignoring host bridge windows from ACPI; if necessary, use "pci=use_crs" and report a bug
> [    0.556263] ACPI: PCI Root Bridge [VP00] (domain 0000 [bus 00])
> [    0.568051] ACPI: PCI Root Bridge [VP01] (domain 0000 [bus 01])
> [    0.576336] ACPI: PCI Root Bridge [VP02] (domain 0000 [bus 02-03])
> [    0.596889] ACPI: PCI Root Bridge [VP03] (domain 0000 [bus 04-05])
> [    0.605222] ACPI: PCI Root Bridge [VP04] (domain 0000 [bus 06-07])
> [    0.613530] ACPI: PCI Root Bridge [VP05] (domain 0000 [bus 08-09])
> [    0.617658] ACPI: PCI Root Bridge [VP06] (domain 0000 [bus 0a-0b])
> [    0.621672] ACPI: PCI Root Bridge [VP07] (domain 0000 [bus 0c-0d])
> [    0.625948] HEST: Table is not found!

Another update: It's clear the problem is the new expectation that the
hardware sets ACPI mode instantly.  I applied the following patch on my
system to see how long it actually takes.  I see a single loop:

[    0.084087] ACPI: Core revision 20100428
[    0.119720] ACPI Error: Hardware did not enter ACPI mode, retry = 0 (20100428/evxfevnt-104)
[    0.128240] Setting APIC routing to physical flat

So it needs a delay of about 1ms (or one retry).

James

---
diff --git a/drivers/acpi/acpica/evxfevnt.c b/drivers/acpi/acpica/evxfevnt.c
index d5a5efc..bace473 100644
--- a/drivers/acpi/acpica/evxfevnt.c
+++ b/drivers/acpi/acpica/evxfevnt.c
@@ -70,6 +70,7 @@ acpi_ev_get_gpe_device(struct acpi_gpe_xrupt_info *gpe_xrupt_info,
 acpi_status acpi_enable(void)
 {
 	acpi_status status;
+	int retry = 0;
 
 	ACPI_FUNCTION_TRACE(acpi_enable);
 
@@ -98,6 +99,11 @@ acpi_status acpi_enable(void)
 
 	/* Sanity check that transition succeeded */
 
+	while (acpi_hw_get_mode() != ACPI_SYS_MODE_ACPI && retry < 3000) {
+		ACPI_ERROR((AE_INFO,
+			    "Hardware did not enter ACPI mode, retry = %d", retry++));
+		acpi_os_stall(1000);
+	}
 	if (acpi_hw_get_mode() != ACPI_SYS_MODE_ACPI) {
 		ACPI_ERROR((AE_INFO,
 			    "Hardware did not enter ACPI mode"));


--
To unsubscribe from this list: send the line "unsubscribe linux-acpi" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html


[Index of Archives]     [Linux IBM ACPI]     [Linux Power Management]     [Linux Kernel]     [Linux Laptop]     [Kernel Newbies]     [Share Photos]     [Security]     [Netfilter]     [Bugtraq]     [Yosemite News]     [MIPS Linux]     [ARM Linux]     [Linux Security]     [Linux RAID]     [Samba]     [Video 4 Linux]     [Device Mapper]     [Linux Resources]

  Powered by Linux