Skip site navigation (1)Skip section navigation (2)
Date:      Tue, 3 Jan 2006 15:19:37 -0500
From:      John Baldwin <jhb@freebsd.org>
To:        freebsd-acpi@freebsd.org, Anders Nordby <anders@freebsd.org>
Subject:   Re: i386/89545: Compaq DL 360 ACPI boot problem
Message-ID:  <200601031519.38226.jhb@freebsd.org>
In-Reply-To: <200601031950.k03Jo5GV052249@freefall.freebsd.org>
References:  <200601031950.k03Jo5GV052249@freefall.freebsd.org>

next in thread | previous in thread | raw e-mail | index | archive | help
On Tuesday 03 January 2006 02:50 pm, Anders Nordby wrote:
> The following reply was made to PR i386/89545; it has been noted by GNATS.
>
> From: Anders Nordby <anders@FreeBSD.org>
> To: John Baldwin <jhb@freebsd.org>
> Cc: freebsd-acpi@freebsd.org, bug-followup@freebsd.org, uralmetal@gmail.com
> Subject: Re: i386/89545: Compaq DL 360 ACPI boot problem
> Date: Tue, 3 Jan 2006 20:47:01 +0100
>
>  --oyUTqETQ0mS9luUI
>  Content-Type: text/plain; charset=us-ascii
>  Content-Disposition: inline
>
>  Hi,
>
>  On Tue, Jan 03, 2006 at 09:24:43AM -0500, John Baldwin wrote:
>  > Ok, looks like it is ACPI_SERIAL_BEGIN() it is hanging on.  Also, the
>  > reason you don't see the pritnf's in 6-stable is the devices are now
>  > marked quiet so they don't show up in dmesg by default anymore.  The
>  > problem is I must have forgotten to release the pci_link lock somewhere.
>  >  If you had INVARIANTS on it should have panic'd in sx_xlock.  As it is,
>  > I think this patch will fix the hangs on both 6.x and 7.0:
>  >
>  > Index: acpi_pci_link.c
>  > ===================================================================
>  > RCS file: /usr/cvs/src/sys/dev/acpica/acpi_pci_link.c,v
>  > retrieving revision 1.51
>  > diff -u -r1.51 acpi_pci_link.c
>  > --- acpi_pci_link.c     5 Dec 2005 19:50:00 -0000       1.51
>  > +++ acpi_pci_link.c     3 Jan 2006 14:24:23 -0000
>  > @@ -449,8 +449,10 @@
>  >                 }
>  >         }
>  >         sc->pl_num_links = creq.count;
>  > -       if (creq.count == 0)
>  > +       if (creq.count == 0) {
>  > +               ACPI_SERIAL_END(pci_link);
>  >                 return (0);
>  > +       }
>  >         sc->pl_links = malloc(sizeof(struct link) * sc->pl_num_links,
>  >             M_PCI_LINK, M_WAITOK | M_ZERO);
>
>  I applied the patch on the same RELENG_6 installation I upgraded to the
>  other day, which also has the printf patch. Using what you suggest above,
>  I get further. But now I get a panic. Log attached.

Ok, so this part is good.

>  Cheers,
>
>  --
>  Anders.
>
>  --oyUTqETQ0mS9luUI
>  Content-Type: text/plain; charset=us-ascii
>  Content-Disposition: attachment; filename="anderstest.log"
>
>  Copyright (c) 1992-2005 The FreeBSD Project.
>  Copyright (c) 1979, 1980, 1983, 1986, 1988, 1989, 1991, 1992, 1993, 1994
>  	The Regents of the University of California. All rights reserved.
>  FreeBSD 6.0-STABLE #0: Sat Dec 31 02:04:34 UTC 2005
>      root@anderstest:/usr/obj/usr/src/sys/SMP
>  Timecounter "i8254" frequency 1193182 Hz quality 0
>  CPU: Intel(R) Pentium(R) III CPU family      1133MHz (1130.46-MHz
> 686-class CPU) Origin = "GenuineIntel"  Id = 0x6b1  Stepping = 1
>   
> Features=0x383f9ff<FPU,VME,DE,PSE,TSC,MSR,PAE,MCE,CX8,SEP,MTRR,PGE,MCA,CMOV
>,PAT,PSE36,MMX,FXSR,SSE> real memory  = 671072256 (639 MB)
>  avail memory = 647356416 (617 MB)
>  npx0: [FAST]
>  npx0: <math processor> on motherboard
>  npx0: INT 16 interface
>  acpi0: <COMPAQ MICRO> on motherboard
>  acpi0: Power Button (fixed)
>  unknown: I/O range not supported
>  attach started
>  pci_link0: calling _CRS
>  pci_link0: _CRS returned AE_OK
>  pci_link0: num_links = 0
>  attach started
>  pci_link1: calling _CRS
>  pci_link1: _CRS returned AE_OK
>  pci_link1: num_links = 1
>  pci_link1: 1 links initialized after child links
>  pci_link1: calling _CRS again
>  pci_link1: _CRS returned AE_OK
>  pci_link1: calling _PRS again
>  pci_link1: _PRS returned AE_OK
>  attach started
>  pci_link2: calling _CRS
>  pci_link2: _CRS returned AE_OK
>  pci_link2: num_links = 1
>  pci_link2: 1 links initialized after child links
>  pci_link2: calling _CRS again
>  pci_link2: _CRS returned AE_OK
>  pci_link2: calling _PRS again
>  pci_link2: _PRS returned AE_OK
>  attach started
>  pci_link3: calling _CRS
>  pci_link3: _CRS returned AE_OK
>  pci_link3: num_links = 1
>  pci_link3: 1 links initialized after child links
>  pci_link3: calling _CRS again
>  pci_link3: _CRS returned AE_OK
>  pci_link3: calling _PRS again
>  pci_link3: _PRS returned AE_OK
>  attach started
>  pci_link4: calling _CRS
>  pci_link4: _CRS returned AE_OK
>  pci_link4: num_links = 1
>  pci_link4: 1 links initialized after child links
>  pci_link4: calling _CRS again
>  pci_link4: _CRS returned AE_OK
>  pci_link4: calling _PRS again
>  pci_link4: _PRS returned AE_OK
>  attach started
>  pci_link5: calling _CRS
>  pci_link5: _CRS returned AE_OK
>  pci_link5: num_links = 1
>  pci_link5: 1 links initialized after child links
>  pci_link5: calling _CRS again
>  pci_link5: _CRS returned AE_OK
>  pci_link5: calling _PRS again
>  pci_link5: _PRS returned AE_OK
>  attach started
>  pci_link6: calling _CRS
>  pci_link6: _CRS returned AE_OK
>  pci_link6: num_links = 1
>  pci_link6: 1 links initialized after child links
>  pci_link6: calling _CRS again
>  pci_link6: _CRS returned AE_OK
>  pci_link6: calling _PRS again
>  pci_link6: _PRS returned AE_OK
>  attach started
>  pci_link7: calling _CRS
>  pci_link7: _CRS returned AE_OK
>  pci_link7: num_links = 1
>  pci_link7: 1 links initialized after child links
>  pci_link7: calling _CRS again
>  pci_link7: _CRS returned AE_OK
>  pci_link7: calling _PRS again
>  pci_link7: _PRS returned AE_OK
>  attach started
>  pci_link8: calling _CRS
>  pci_link8: _CRS returned AE_OK
>  pci_link8: num_links = 1
>  pci_link8: 1 links initialized after child links
>  pci_link8: calling _CRS again
>  pci_link8: _CRS returned AE_OK
>  pci_link8: calling _PRS again
>  pci_link8: _PRS returned AE_OK
>  attach started
>  pci_link9: calling _CRS
>  pci_link9: _CRS returned AE_OK
>  pci_link9: num_links = 1
>  pci_link9: 1 links initialized after child links
>  pci_link9: calling _CRS again
>  pci_link9: _CRS returned AE_OK
>  pci_link9: calling _PRS again
>  pci_link9: _PRS returned AE_OK
>  Timecounter "ACPI-safe" frequency 3579545 Hz quality 1000
>  acpi_timer0: <24-bit timer at 3.579545MHz> port 0x240-0x243 on acpi0
>  cpu0: <ACPI CPU> on acpi0
>  pcib0: <ACPI Host-PCI bridge> on acpi0
>  pci_link6: BIOS IRQ 3 for 0.1.INTA is invalid
>  panic: acpi_pci_link_add_reference: apparently invalid index 0
>  cpuid = 0
>  Uptime: 1s
>  Automatic reboot in 15 seconds - press a key on the console to abort
>  Rebooting...

Your BIOS is busted.  It's trying to route an interrupt via the FAKE link 
device that doesn't have any interrupts available.  Can you post your ASL 
somewhere?

-- 
John Baldwin <jhb@FreeBSD.org>  <><  http://www.FreeBSD.org/~jhb/
"Power Users Use the Power to Serve"  =  http://www.FreeBSD.org



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?200601031519.38226.jhb>