lkml.org 
[lkml]   [2010]   [Jun]   [21]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    SubjectRe: 2.6.35-rc3 regression: IBM Maia system is unbootable [ACPI related?]
    From
    Date
    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@HansenPartnership.com> 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"));



    \
     
     \ /
      Last update: 2010-06-21 19:29    [W:0.028 / U:3.320 seconds]
    ©2003-2016 Jasper Spaans. hosted at Digital OceanAdvertise on this site