cvs commit: src/sys/dev/acpica acpi_perf.c
Nate Lawson
nate at root.org
Sun Mar 27 22:50:00 PST 2005
Vladimir Grebenschikov wrote:
> В вс, 27/03/2005 в 14:46 -0800, Nate Lawson пишет:
>
>>Vladimir Grebenschikov wrote:
>>
>>>В вс, 20/03/2005 в 03:51 +0000, Nate Lawson пишет:
>>>
>>>
>>>>njl 2005-03-20 03:51:18 UTC
>>>>
>>>>FreeBSD src repository
>>>>
>>>>Modified files:
>>>> sys/dev/acpica acpi_perf.c
>>>>Log:
>>>>Attach acpi_perf early. Especially when it is being used to provide info
>>>>to other devices, it needs to be attached first. (Multi-pass newbus
>>>>probes would be a better solution.)
>>>>
>>>>Revision Changes Path
>>>>1.16 +6 -1 src/sys/dev/acpica/acpi_perf.c
>>>
>>>
>>>I guess this patch makes panic on my notebook:
>>>
>>>cpu0: <ACPI CPU (2 Cx states)> on acpi0
>>>acpi_perf0: <ACPI CPU Frequency Control> on cpu0
>>>acpi_perf0: failed in PERF_STATUS attach
>>>device_attach: acpi_perf0 attach returned 6
>>>panic: resource_list_add: resource entry is busy
>>
>>I believe the patch I just committed fully cleans up resources for the
>>error case correctly. This should fix your panic. The other question
>>is why your status register fails to attach but the control register
>>succeeds. Can you send me your acpidump:
>
>
> Thank you, will try fresh kernel later today.
>
>
> Attached
>
>
> Method (_PCT, 0, NotSerialized)
> {
> If (LEqual (And (PDC0, One), One))
> {
> ...
> }
> Else
> {
> Return (Package (0x02)
> {
> ResourceTemplate ()
> {
> Register (SystemIO, 0x10, 0x00, 0x00000000000000B2)
> },
>
> ResourceTemplate ()
> {
> Register (SystemIO, 0x08, 0x00, 0x00000000000000B3)
> }
> })
> }
> }
I've moved this to the acpi@ list now...
Are you sure there isn't a BIOS update for your system available? It
appears this is a Dell since a number of them have the same problem.
The issue is that the control and status registers overlap. To fix,
change this line:
Register (SystemIO, 0x10, 0x00, 0x00000000000000B2)
to this:
Register (SystemIO, 0x08, 0x00, 0x00000000000000B2)
Then, recompile your asl as described in the handbook and load it at
boot. I'll try to figure out a way to work around this but it looks
difficult to detect since 16 bits is a valid register width. I seem to
remember imp@ had a means for detecting that a resource alloc failed due
to an overlapping register and then split the previous resource (since
this driver owns both). I'll ask.
--
Nate
More information about the cvs-src
mailing list