Skip site navigation (1)Skip section navigation (2)
Date:      Sat, 16 Feb 2008 02:01:20 +0000
From:      Rui Paulo <rpaulo@FreeBSD.org>
To:        Nate Lawson <nate@root.org>
Cc:        freebsd-acpi@freebsd.org, Andriy Gapon <avg@icyb.net.ua>
Subject:   Re: cx_lowest and CPU usage
Message-ID:  <F54D3582-7FD2-4013-A22A-FAA196525E4C@FreeBSD.org>
In-Reply-To: <47B62044.50808@root.org>
References:  <479F0ED4.9030709@icyb.net.ua> <479F62D9.6080703@root.org> <47A34360.2030105@icyb.net.ua> <47B0BF20.6020906@icyb.net.ua> <47B3214D.2050507@icyb.net.ua> <47B40529.1040400@icyb.net.ua> <47B62044.50808@root.org>

next in thread | previous in thread | raw e-mail | index | archive | help

On Feb 15, 2008, at 11:29 PM, Nate Lawson wrote:

>
>
> Andriy Gapon wrote:
>> on 13/02/2008 18:56 Andriy Gapon said the following:
>>> on 11/02/2008 23:33 Andriy Gapon said the following:
>>>> Hmm, it seems that the quirk is only honored if you actually try  
>>>> to use
>>>> C3 state, but it doesn't exclude the state from the available  
>>>> states.
>>>> This is OK, but seems to be a little bit non-user-friendly.
>>>>
>>>
>>> It seems that the following code in acpi_cpu_generic_cx_probe()  
>>> should
>>> have a check for the quirk (for C3 to not be present in the  
>>> available
>>> states):
>>>
>>> /* Validate and allocate resources for C3 (P_LVL3). */
>>> if (AcpiGbl_FADT->Plvl3Lat <= 1000) {
>>>    gas.Address = sc->cpu_p_blk + 5;
>>>    acpi_bus_alloc_gas(sc->cpu_dev, &cx_ptr->res_type, &sc- 
>>> >cpu_rid, &gas,
>>>        &cx_ptr->p_lvlx, RF_SHAREABLE);
>>>    if (cx_ptr->p_lvlx != NULL) {
>>>        sc->cpu_rid++;
>>>        cx_ptr->type = ACPI_STATE_C3;
>>>        cx_ptr->trans_lat = AcpiGbl_FADT->Plvl3Lat;
>>>        cx_ptr++;
>>>        sc->cpu_cx_count++;
>>>    }
>>> }
>>>
>>> I will test this hypothesis tonight.
>>> It is definite that my system goes through this routine, because  
>>> DSDT
>>> doesn't have _CST defined.
>>>
>>>
>> The following patch did help to eliminate C3 from cx_supported.
>> Sorry, the patch is a copy/paste, tabs lost, but the change is tiny.
>> @@ -590,7 +595,7 @@
>>        return;
>>     /* Validate and allocate resources for C3 (P_LVL3). */
>> -    if (AcpiGbl_FADT.C3Latency <= 1000) {
>> +    if (AcpiGbl_FADT.C3Latency <= 1000 && (cpu_quirks &
>> CPU_QUIRK_NO_C3) == 0) {
>>        gas.Address = sc->cpu_p_blk + 5;
>>        acpi_bus_alloc_gas(sc->cpu_dev, &cx_ptr->res_type, &sc- 
>> >cpu_rid,
>> &gas,
>>            &cx_ptr->p_lvlx, RF_SHAREABLE);
>
> I've reviewed it, this patch is correct.


I committed it. Thanks Andriy.

Regards.
--
Rui Paulo




Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?F54D3582-7FD2-4013-A22A-FAA196525E4C>