cx_lowest and CPU usage
Rui Paulo
rpaulo at FreeBSD.org
Sat Feb 16 02:01:26 UTC 2008
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
More information about the freebsd-acpi
mailing list