-current of course.

On Wed, Jan 16, 2008 at 11:25:04PM +0200, NetOne - Doichin Dokov wrote:
> Is this for -current only, or you need testing on 4.2 too?
>
> Marco Peereboom ????????????:
>> Please test this on all acpi capable machines and send me a dmesg if you
>> see this in the dmesg: store from field!!
>>
>> If you see this panic or something similar:
>> acpi0: tables DSDT FACP SLIC HPET APIC MCFG TCPA SSDT SSDT SSDT SSDT
>> SSDT
>> wrong setbufint type
>>
>> 2ca8 Called: \\_SB_.C003.C098.C155
>>    arg0: 0xd17b7910 cnt:01 stk:00 objref: 0xd176d484 index:ffffffff
>>   [\\_SB_.C06A] 0xd176d484 cnt:02 stk:00 field: bitpos=02e0 bitlen=00a0
>> ref1:d176c904 ref2:0 [Field]
>>   [\\_SB_.C043] 0xd176c904 cnt:32 stk:00 opregion: 00,3f7e7dc0,140
>>    arg1: 0xd17b793c cnt:01 stk:00 objref: 0xd1756410 index:ffffffff
>>   0xd1756410 cnt:00 stk:60 integer: 0
>>    local0: 0xd1756a10 cnt:00 stk:60 integer: 0
>> 2c7d Called: \\_SB_.C003.C098._INI
>>    local0: 0xd1756410 cnt:00 stk:60 integer: 0
>> panic: aml_die aml_setbufint:983 
>> please try this diff:
>> Index: dsdt.c
>> ===================================================================
>> RCS file: /cvs/src/sys/dev/acpi/dsdt.c,v
>> retrieving revision 1.106
>> diff -u -p -r1.106 dsdt.c
>> --- dsdt.c   2 Dec 2007 22:24:54 -0000       1.106
>> +++ dsdt.c   16 Jan 2008 20:20:27 -0000
>> @@ -980,9 +980,10 @@ void
>>  aml_setbufint(struct aml_value *dst, int bitpos, int bitlen,
>>      struct aml_value *src)
>>  {
>> -    if (src->type != AML_OBJTYPE_BUFFER)
>> +    if (src->type != AML_OBJTYPE_BUFFER) {
>> +            aml_showvalue(src, 0);
>>              aml_die("wrong setbufint type %d\n", src->type);
>> -
>> +    }
>>  #if 1
>>      /* Return buffer type */
>>      _aml_setvalue(dst, AML_OBJTYPE_BUFFER, (bitlen+7)>>3, NULL);
>> @@ -1633,10 +1634,17 @@ aml_setvalue(struct aml_scope *scope, st
>>      struct aml_value tmpint;
>>      /* Use integer as result */
>> +    memset(&tmpint, 0, sizeof(tmpint));
>>      if (rhs == NULL) {
>> -            memset(&tmpint, 0, sizeof(tmpint));
>>              rhs = _aml_setvalue(&tmpint, AML_OBJTYPE_INTEGER, ival, NULL);
>>      }
>> +    else if (rhs->type == AML_OBJTYPE_BUFFERFIELD ||
>> +             rhs->type == AML_OBJTYPE_FIELDUNIT)
>> +    {
>> +            printf("store from field!!\n");
>> +            aml_fieldio(scope, rhs, &tmpint, ACPI_IOREAD);
>> +            rhs = &tmpint;
>> +    }
>>      if (!is_local(scope, lhs))
>>              lhs = aml_dereftarget(scope, lhs);
>> @@ -1725,6 +1733,7 @@ aml_setvalue(struct aml_scope *scope, st
>>              dnprintf(10, "setvalue.unknown: %x", lhs->type);
>>              break;
>>      }
>> +    aml_freevalue(&tmpint);
>>  }
>>   /* Allocate dynamic AML value

Reply via email to