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>