On Jun 19 08:49:26, jor...@peereboom.us wrote: > Can you try this patch to see if it helps on your HP systems? > > ? acpipci.diff > ? acpitz.c.fix > ? condref > ? msg > ? passive.diff > ? tzdiff > ? xdiff > Index: dsdt.c > =================================================================== > RCS file: /cvs/src/sys/dev/acpi/dsdt.c,v > retrieving revision 1.157 > diff -u -p -u -p -b -r1.157 dsdt.c > --- dsdt.c 5 Dec 2009 02:38:11 -0000 1.157 > +++ dsdt.c 19 Jun 2010 03:10:08 -0000 > @@ -699,6 +699,11 @@ aml_delchildren(struct aml_node *node) > > aml_delchildren(onode); > > + if (onode->value && onode->value->refcnt > 1) { > + printf("MULTI: %s\n", aml_nodename(onode)); > + onode->value->node = NULL; > + } > + > /* Decrease reference count */ > aml_xdelref(&onode->value, ""); > > @@ -976,6 +981,9 @@ aml_copyvalue(struct aml_value *lhs, str > break; > case AML_OBJTYPE_OBJREF: > lhs->v_objref = rhs->v_objref; > + aml_xaddref(lhs->v_objref.ref, ""); > + printf("copy objref: %x %s\n", lhs->v_objref.type, > + aml_nodename(lhs->v_objref.ref->node)); > break; > default: > printf("copyvalue: %x", rhs->type); > @@ -3626,11 +3634,11 @@ aml_xparse(struct aml_scope *scope, int > /* CondRef: rr => I */ > ival = 0; > if (opargs[0]->node != NULL) { > - aml_freevalue(opargs[1]); > - > /* Create Object Reference */ > - _aml_setvalue(opargs[1], AML_OBJTYPE_OBJREF, opcode, > opargs[0]); > - aml_xaddref(opargs[1], "CondRef"); > + opargs[2] = aml_allocvalue(AML_OBJTYPE_OBJREF, opcode, > + opargs[0]); > + aml_xaddref(opargs[0], "CondRef"); > + aml_xstore(scope, opargs[1], 0, opargs[2]); > > /* Mark that we found it */ > ival = -1;
This makes GENERIC.MP boot and run fine on my HP8530w. (Previously, I had to 'disable acpi' or at least 'disable acpiec' to boot.) I am running 'apmd -A'; the processor frequency scales as it should, battery life, AC status etc are reported correctly. Plugging the AC in and out makes the screen brighten and dim, respectively. None of 'apm -S', 'apm -z' or 'zzz' does nothing though. > > > > On 01/24/10 02:00, Zoran IvaniD wrote: > >> On Fri, Jan 22, 2010 at 02:04:23PM +0100, Jan Stary wrote: > >> <snip> > >>> correctly (?) recognizes the SpeedStep frequencies: > >>> > >>> cpu0: Enhanced SpeedStep 2528 MHz: speeds: 2534, 2533, 1600, 800 MHz > >>> > >>> The kernel without ACPI does not: > >>> > >>> cpu0: unknown Enhanced SpeedStep CPU, msr 0x0617492506004925 > >>> cpu0: using only highest and lowest power states > >>> cpu0: Enhanced SpeedStep 2528 MHz: speeds: 19467, 1600 MHz > >>> > >> <snip> > >>> mtrr: Pentium Pro MTRR support > >>> "RICOH, Bay8Controller" (manufacturer 0x0, product 0x0) at pcmcia0 > >>> function 0 not configured > >>> copyvalue: efff0021Store to default type! efff0021 > >>> > >>> 5c12 Called: \\_SB_.PCI0.LPCB.EC0_.RPPC > >>> local0: 0xd2c14d04 cnt:01 stk:60 integer: 2 > >>> local1: 0xd2c1d3c4 cnt:01 stk:61 integer: 0 > >>> local2: 0xd2c34384 cnt:02 stk:62 objref: 0xd2c20044 index:0 > >>> opcode:CondRef > >>> uvm_fault(0xd08ad720, 0xefffe000, 0, 1) -> d > >>> kernel: page fault trap, code=0 > >>> Stopped at aml_nodename+0x1b: pushl 0(%ebx) > >>> ddb{0}> rebooting... > >>> > >>> > >> > >> Hi! > >> > >> This looks same as problem on my hp 6930p. According to Jordan it's some > >> reference counting bug somewhere. This makes it boot... > >> > >> > >> Index: dsdt.c > >> =================================================================== > >> RCS file: /cvs/src/sys/dev/acpi/dsdt.c,v > >> retrieving revision 1.157 > >> diff -u -p -r1.157 dsdt.c > >> --- dsdt.c 5 Dec 2009 02:38:11 -0000 1.157 > >> +++ dsdt.c 23 Jan 2010 23:49:46 -0000 > >> @@ -3629,7 +3629,7 @@ aml_xparse(struct aml_scope *scope, int > >> aml_freevalue(opargs[1]); > >> > >> /* Create Object Reference */ > >> - _aml_setvalue(opargs[1], AML_OBJTYPE_OBJREF, opcode, > >> opargs[0]); > >> + _aml_setvalue(opargs[1], AML_OBJTYPE_INTEGER, > >> 0xDEADBEEF, > >> opargs[0]); > >> aml_xaddref(opargs[1], "CondRef"); > >> > >> /* Mark that we found it */ > >> > >> > > > > Looks like the same problem I have on my hp 6730b. The diff makes it > > boot, but if I plug or unplug the ac I get the panic below and the only > > way to leave ddb is hard reboot. > > > > Disabled acpiec makes it boot too and I've not seen any crashes yet. > > acpidump -o output in a tar is attached. > > > > > > panic: config_detach: forced detach of bge0 failed (45) > > Stopped at Debugger+0x5: leave > > RUN AT LEAST 'trace' AND 'ps' AND INCLUDE OUTPUT WHEN REPORTING THIS > > PANIC! > > IF RUNNING SMP, USE 'mach ddbcpu <#>' AND 'trace' ON OTHER PROCESSORS, > > TOO. > > DO NOT EVEN BOTHER REPORTING THIS WITHOUT INCLUDING THAT INFORMATION! > > ddb{1}> trace > > Debugger() at Debugger+0x5 > > panic() at panic+0x122 > > config_detach() at config_detach+0x27f > > config_detach_children() at config_detach_children+0x45 > > pci_detach_devices() at pci_detach_devices+0x19 > > ppb_hotplug_remove() at ppb_hotplug_remove+0x25 > > workq_thread() at workq_thread+0x33 > > end trace frame: 0x0, count: -7 > > ddb{1}> ps > > PID PPID PGRP UID S FLAGS WAIT COMMAND > > 3471 1 3471 0 3 0x2040180 select sendmail > > 2064 1 2064 0 3 0x2004082 ttyin getty > > 18842 1 18842 0 3 0x2004082 ttyin getty > > 15817 1 15817 0 3 0x2004082 ttyin getty > > 27825 1 27825 0 3 0x2004082 ttyin getty > > 19379 1 19379 0 3 0x2004082 ttyin getty > > 6143 1 6143 0 3 0x2004082 ttyin getty > > 12058 1 12058 0 3 0x2000080 select cron > > 26732 1 26732 0 3 0x2000180 select inetd > > 27189 1 27189 0 3 0x2000080 select sshd > > 168 25640 25640 74 3 0x2000180 bpf pflogd > > 25640 1 25640 0 3 0x2000080 netio pflogd > > 4164 11186 11186 73 3 0x2000180 poll syslogd > > 11186 1 11186 0 3 0x2000088 netio syslogd > > 30145 1 30145 77 3 0x2000180 poll dhclient > > 14937 1 5441 0 3 0x2000082 poll dhclient > > 21 0 0 0 3 0x2100200 bored crypto > > 20 0 0 0 3 0x2100200 aiodoned aiodoned > > 19 0 0 0 3 0x2100200 syncer update > > 18 0 0 0 3 0x2100200 cleaner cleaner > > 17 0 0 0 3 0x100200 reaper reaper > > 16 0 0 0 3 0x2100200 pgdaemon pagedaemon > > 15 0 0 0 3 0x2100200 pftm pfpurge > > 14 0 0 0 3 0x2100200 usbevt usb7 > > 13 0 0 0 3 0x2100200 usbevt usb6 > > 12 0 0 0 3 0x2100200 usbevt usb5 > > 11 0 0 0 3 0x2100200 usbevt usb4 > > 10 0 0 0 3 0x2100200 usbevt usb3 > > 9 0 0 0 3 0x2100200 usbevt usb2 > > 8 0 0 0 3 0x2100200 usbevt usb1 > > 7 0 0 0 3 0x2100200 usbtsk usbtask > > 6 0 0 0 3 0x2100200 usbevt usb0 > > 5 0 0 0 7 0x2100200 acpi0 > > 4 0 0 0 3 0x40100200 idle1 > > * 3 0 0 0 7 0x2100200 syswq > > 2 0 0 0 3 0x40100200 idle0 > > 1 0 1 0 3 0x2004080 wait init > > 0 -1 0 0 3 0x2080200 scheduler swapper > > ddb{1}> boot reboot > > bge0: PHY read timed out > > bge0: PHY read timed out > > bge0: PHY read timed out > > bge0: PHY read timed out > > bge0: PHY read timed out > > bge0: PHY read timed out > > bge0: PHY read timed out > > bge0: PHY read timed out > > bge0: PHY read timed out > > bge0: PHY read timed out > > bge0: PHY read timed out > > bge0: PHY read timed out > > bge0: PHY read timed out > > bge0: PHY read timed out > > bge0: PHY read timed out > > bge0: PHY read timed out > > bge0: PHY read timed out > > bge0: PHY read timed out