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

Reply via email to