Hi avg. On Sun, 12 Sep 2010 12:36:06 +0300 Andriy Gapon <avg_at_icyb.net.ua> wrote: > > - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - > > --- sys/dev/acpica/acpi_cpu.c.orig 2010-09-12 01:31:38.144243000 +0900 > > +++ sys/dev/acpica/acpi_cpu.c 2010-09-12 18:06:14.651938193 +0900 > > _at__at_ -597,7 +597,7 _at__at_ : > > gas.BitWidth = 8; > > - if (AcpiGbl_FADT.C2Latency <= 100) { > > + if (AcpiGbl_FADT.C2Latency <= 1000) { > > gas.Address = sc->cpu_p_blk + 4; > > acpi_bus_alloc_gas(sc->cpu_dev, &cx_ptr->res_type, &sc->cpu_rid, : > > /* Validate and allocate resources for C3 (P_LVL3). */ > > - if (AcpiGbl_FADT.C3Latency <= 1000 && !(cpu_quirks & CPU_QUIRK_NO_C3)) { > > + if (AcpiGbl_FADT.C3Latency <= 10000 && !(cpu_quirks & CPU_QUIRK_NO_C3)) { > > gas.Address = sc->cpu_p_blk + 5; > > acpi_bus_alloc_gas(sc->cpu_dev, &cx_ptr->res_type, &sc->cpu_rid, &gas, : > The above changes are incorrect. > > _at__at_ -690,7 +690,7 _at__at_ : > > case ACPI_STATE_C2: > > - if (cx_ptr->trans_lat > 100) { > > + if (cx_ptr->trans_lat > 1000) { > > ACPI_DEBUG_PRINT((ACPI_DB_INFO, : > > default: > > - if (cx_ptr->trans_lat > 1000 || > > + if (cx_ptr->trans_lat > 10000 || > > (cpu_quirks & CPU_QUIRK_NO_C3) != 0) { : > You should simply remove the check instead of bumping the threshold. I re-tried to test following patch. - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - --- sys/dev/acpica/acpi_cpu.c.orig 2010-09-12 01:31:38.144243000 +0900 +++ sys/dev/acpica/acpi_cpu.c 2010-09-12 18:47:56.057309965 +0900 _at__at_ -690,19 +690,13 _at__at_ sc->cpu_cx_count++; continue; case ACPI_STATE_C2: - if (cx_ptr->trans_lat > 100) { - ACPI_DEBUG_PRINT((ACPI_DB_INFO, - "acpi_cpu%d: C2[%d] not available.\n", - device_get_unit(sc->cpu_dev), i)); - continue; - } - sc->cpu_non_c3 = i; - break; + ACPI_DEBUG_PRINT((ACPI_DB_INFO, + "acpi_cpu%d: C2[%d] not available.\n", + device_get_unit(sc->cpu_dev), i)); + continue; case ACPI_STATE_C3: default: - if (cx_ptr->trans_lat > 1000 || - (cpu_quirks & CPU_QUIRK_NO_C3) != 0) { - + if (cpu_quirks & CPU_QUIRK_NO_C3) { ACPI_DEBUG_PRINT((ACPI_DB_INFO, "acpi_cpu%d: C3[%d] not available.\n", device_get_unit(sc->cpu_dev), i)); _at__at_ -731,6 +725,9 _at__at_ cx_ptr++; sc->cpu_cx_count++; } +else { +device_printf(sc->cpu_dev, "cx_ptr->p_lvlx IS NULL.\n"); +} } AcpiOsFree(buf.Pointer); - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - But not works:-(. Please see also attached dmesg.txt. > > But cx_lowest is not changed: > Why do you expect it to be changed? Sorry, I forgot about *_cx_lowest="LOW" in /etc/rc.conf. I wrote following setting to /etc/rc.conf. - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - performance_cx_lowest="LOW" economy_cx_lowest="LOW" - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Thank you. -- Norikatsu Shigemura <nork_at_FreeBSD.org>
This archive was generated by hypermail 2.4.0 : Wed May 19 2021 - 11:40:07 UTC