Re: 2.6.3-mm3 hangs on boot x440 (scsi?)

john stultz
2004-02-27T02:25:51Z

On Thu, 2004-02-26 at 15:15, Matthew Wilcox wrote:
> On Thu, Feb 26, 2004 at 03:02:56PM -0800, john stultz wrote:
> > On Thu, 2004-02-26 at 13:26, john stultz wrote:
> > > On Thu, 2004-02-26 at 06:40, Go Taniguchi wrote:
> > > > Hi,
> > > >
> > > > Andrew Morton wrote:
> > > > > john stultz <johnstul@us.ibm.com> wrote:
> > > > >>I went back to 2.6.3-mm1 (as it was a smaller diff) and the problem was
> > > > >>there as well.
> > > >
> > > > Problem patch is expanded-pci-config-space.patch.
> > > > x440 can not enable acpi by dmi_scan.
> > > > expanded-pci-config-space.patch need acpi support.
> > > > So, kernel can not get x440's xAPIC interrupt.
> > >
> > > Wow, thanks for that analysis Go! I'll test it here to confirm.
> >
> > Yep, I've confirmed that backing out the expanded-pci-config-space patch
> > solves it. Thanks again, Go, for hunting that down!
> >
> > Matthew, any ideas why the patch fails if the system has an ACPI
> > blacklist entry?
>
> Hrm. I was just asked to break out some of the ACPI code rearrangement
> from the rest of the patch. Can you try this patch instead of the
> expanded-pci-config-space.patch and tell me whether it continues to fail
> for you?
>
> I don't understand why it should make a difference though. It looks
> to me like the current code will also fail to call the HPET code if the
> bios is blacklisted.

Ok, think I found it!

> Index: arch/i386/kernel/acpi/boot.c
> ===================================================================
> RCS file: /var/cvs/linux-2.6/arch/i386/kernel/acpi/boot.c,v
> retrieving revision 1.10
> diff -u -p -r1.10 boot.c
> --- a/arch/i386/kernel/acpi/boot.c 17 Feb 2004 12:51:46 -0000 1.10
> +++ b/arch/i386/kernel/acpi/boot.c 26 Feb 2004 16:34:12 -0000
> @@ -506,24 +461,17 @@ acpi_boot_init (void)
>
> acpi_lapic = 1;
>
> -#endif /*CONFIG_X86_LOCAL_APIC*/
> +#endif /* CONFIG_X86_LOCAL_APIC */
>
> #if defined(CONFIG_X86_IO_APIC) && defined(CONFIG_ACPI_INTERPRETER)
>
> /*
> * I/O APIC
> - * --------
> */
>
> - /*
> - * ACPI interpreter is required to complete interrupt setup,
> - * so if it is off, don't enumerate the io-apics with ACPI.
> - * If MPS is present, it will handle them,
> - * otherwise the system will stay in PIC mode
> - */
> - if (acpi_disabled || acpi_noirq) {
> + if (acpi_noirq) {
> return 1;
> - }
> + }
>
> /*
> * if "noapic" boot option, don't look for IO-APICs

That chunk shouldn't drop the "if (acpi_disabled ..." bit.
Adding that check back in fixes it for me.

thanks
-john