Source-Changes archive

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

Re: CVS commit: src/sys/arch/x86/x86



# Joerg Sonnenberger 2008-06-01:
> 
> Module Name:  src
> Committed By: joerg
> Date:         Sun Jun  1 15:33:15 UTC 2008
> 
> Modified Files:
>       src/sys/arch/x86/x86: mpacpi.c
> 
> Log Message:
> When a PCI host bridge description in the DSDT has a missing _BBN or the
> _BBN is 0, check if the _ADR field is also 0. If it is, assume that the
> _BBN really should be 0. Otherwise, try to extract the _BBN from the
> bridge itself using pchb logic and panic only, if that fails as well.
> Reported and tested by Martin Husemann as interrupt issue.

I have no clue about ACPI, but this breaks on my Fujitsu S6410 (amd64):
'_BBN' reads as zero so the code tries to look at '_ADR' and fails
resulting in the "broken _BBN" panic. Booting with ACPI disabled
(from bootloader) hangs the machine hard halfway through configure().

With the hack below, I can boot multiuser and everything except Cardbus
seems to work.

        -- Jachym

Index: sys/arch/x86/x86/mpacpi.c
===================================================================
RCS file: /cvsroot/src/sys/arch/x86/x86/mpacpi.c,v
retrieving revision 1.60
diff -u -r1.60 mpacpi.c
--- sys/arch/x86/x86/mpacpi.c   1 Jun 2008 15:33:15 -0000       1.60
+++ sys/arch/x86/x86/mpacpi.c   2 Jun 2008 16:09:18 -0000
@@ -676,9 +677,13 @@
        /* check whether this is PCI root bridge or not */
        if (acpi_match_hid(devinfo, pciroot_hid)) {
                /* this is PCI root bridge */
+#if 0 /* XXXfreza */
                rv = mpacpi_get_bbn(acpi, handle, &mpr->mpr_bus);
                if (ACPI_FAILURE(rv))
                        panic("mpacpi: PCI root bridge with broken _BBN");
+#else
+               mpr->mpr_bus = 0;
+#endif
 
                if (mp_verbose)
                        printf("mpacpi: found root PCI bus %d at level %u\n",


Home | Main Index | Thread Index | Old Index