Lines Matching +full:idle +full:- +full:halt

1 /*-
2 * Copyright (c) 2003-2005 Nate Lawson (SDG)
59 * Support for ACPI Processor devices, including C[1-3] sleep states.
68 uint32_t type; /* C1-3 (C4 and up treated as C3). */
89 int cpu_prev_sleep;/* Last idle sleep duration. */
92 int cpu_non_c2; /* Index of lowest non-C2 state. */
93 int cpu_non_c3; /* Index of lowest non-C3 state. */
100 int cpu_disable_idle; /* Disable entry to idle function */
117 #define CPU_QUIRK_NO_C3 (1<<0) /* C3-type states are not usable. */
260 device_printf(dev, "probe failed to get Processor obj - %s\n", in acpi_cpu_probe()
265 if (obj->Type != ACPI_TYPE_PROCESSOR) { in acpi_cpu_probe()
267 obj->Type); in acpi_cpu_probe()
277 acpi_id = obj->Processor.ProcId; in acpi_cpu_probe()
282 device_printf(dev, "Device object has bad value - %s\n", in acpi_cpu_probe()
330 sc->cpu_dev = dev; in acpi_cpu_attach()
331 sc->cpu_handle = acpi_get_handle(dev); in acpi_cpu_attach()
335 pcpu_data->pc_device = dev; in acpi_cpu_attach()
336 sc->cpu_pcpu = pcpu_data; in acpi_cpu_attach()
343 status = AcpiEvaluateObject(sc->cpu_handle, NULL, NULL, &buf); in acpi_cpu_attach()
345 device_printf(dev, "attach failed to get Processor obj - %s\n", in acpi_cpu_attach()
350 sc->cpu_p_blk = obj->Processor.PblkAddress; in acpi_cpu_attach()
351 sc->cpu_p_blk_len = obj->Processor.PblkLength; in acpi_cpu_attach()
352 sc->cpu_acpi_id = obj->Processor.ProcId; in acpi_cpu_attach()
357 status = acpi_GetInteger(sc->cpu_handle, "_UID", &sc->cpu_acpi_id); in acpi_cpu_attach()
359 device_printf(dev, "Device object has bad value - %s\n", in acpi_cpu_attach()
363 sc->cpu_p_blk = 0; in acpi_cpu_attach()
364 sc->cpu_p_blk_len = 0; in acpi_cpu_attach()
367 device_get_unit(dev), sc->cpu_p_blk, sc->cpu_p_blk_len)); in acpi_cpu_attach()
381 SYSCTL_CHILDREN(acpi_sc->acpi_sysctl_tree), OID_AUTO, "cpu", in acpi_cpu_attach()
399 sc->cpu_features = ACPI_CAP_SMP_SAME | ACPI_CAP_SMP_SAME_C3 | in acpi_cpu_attach()
408 sc->cpu_features |= ACPI_CAP_SMP_C1_NATIVE | ACPI_CAP_SMP_C3_NATIVE; in acpi_cpu_attach()
415 sc->cpu_features |= ACPI_CAP_INTR_CPPC; in acpi_cpu_attach()
422 sc->cpu_features |= features; in acpi_cpu_attach()
429 * Intel Processor Vendor-Specific ACPI Interface Specification. in acpi_cpu_attach()
431 if (sc->cpu_features) { in acpi_cpu_attach()
432 cap_set[1] = sc->cpu_features; in acpi_cpu_attach()
433 status = acpi_EvaluateOSC(sc->cpu_handle, cpu_oscuuid, 1, 2, cap_set, in acpi_cpu_attach()
447 cap_set[2] = sc->cpu_features; in acpi_cpu_attach()
448 AcpiEvaluateObject(sc->cpu_handle, "_PDC", &arglist, NULL); in acpi_cpu_attach()
470 bus_identify_children(sc->cpu_dev); in acpi_cpu_postattach()
474 bus_attach_children(sc->cpu_dev); in acpi_cpu_postattach()
484 /* Queue post cpu-probing task handler */ in acpi_cpu_postattach()
498 CPU_SETOF(sc->cpu_pcpu->pc_cpuid, &cpuset); in disable_idle()
499 sc->cpu_disable_idle = TRUE; in disable_idle()
502 * Ensure that the CPU is not in idle state or in acpi_cpu_idle(). in disable_idle()
505 * is called and executed in such a context with interrupts being re-enabled in disable_idle()
516 if (sc->cpu_cx_count > sc->cpu_non_c3 + 1 && in enable_idle()
519 sc->cpu_disable_idle = FALSE; in enable_idle()
527 return (sc->cpu_disable_idle); in is_idle_disabled()
532 * Disable any entry to the idle function during suspend and re-enable it
566 if (pc->pc_acpi_id == acpi_id) { in acpi_pcpu_get_id()
567 *cpu_id = pc->pc_cpuid; in acpi_pcpu_get_id()
573 * If pc_acpi_id for CPU 0 is not initialized (e.g. a non-APIC in acpi_pcpu_get_id()
578 if (pc->pc_acpi_id == 0xffffffff) in acpi_pcpu_get_id()
579 pc->pc_acpi_id = acpi_id; in acpi_pcpu_get_id()
595 return (&ad->ad_rl); in acpi_cpu_get_rlist()
607 resource_list_init(&ad->ad_rl); in acpi_cpu_add_child()
625 *result = (uintptr_t)sc->cpu_handle; in acpi_cpu_read_ivar()
628 *result = (uintptr_t)sc->cpu_pcpu; in acpi_cpu_read_ivar()
653 * Disable any entry to the idle function. in acpi_cpu_shutdown()
670 /* Use initial sleep value of 1 sec. to start with lowest idle state. */ in acpi_cpu_cx_probe()
671 sc->cpu_prev_sleep = 1000000; in acpi_cpu_cx_probe()
672 sc->cpu_cx_lowest = 0; in acpi_cpu_cx_probe()
673 sc->cpu_cx_lowest_lim = 0; in acpi_cpu_cx_probe()
689 device_printf(sc->cpu_dev, "switching to generic Cx mode\n"); in acpi_cpu_cx_probe()
703 sc->cpu_cx_count = 0; in acpi_cpu_generic_cx_probe()
704 cx_ptr = sc->cpu_cx_states; in acpi_cpu_generic_cx_probe()
706 /* Use initial sleep value of 1 sec. to start with lowest idle state. */ in acpi_cpu_generic_cx_probe()
707 sc->cpu_prev_sleep = 1000000; in acpi_cpu_generic_cx_probe()
710 cx_ptr->type = ACPI_STATE_C1; in acpi_cpu_generic_cx_probe()
711 cx_ptr->trans_lat = 0; in acpi_cpu_generic_cx_probe()
713 sc->cpu_non_c2 = sc->cpu_cx_count; in acpi_cpu_generic_cx_probe()
714 sc->cpu_non_c3 = sc->cpu_cx_count; in acpi_cpu_generic_cx_probe()
715 sc->cpu_cx_count++; in acpi_cpu_generic_cx_probe()
722 * "only" C1-C3 is not a hardship. in acpi_cpu_generic_cx_probe()
724 if (sc->cpu_p_blk_len < 5) in acpi_cpu_generic_cx_probe()
731 gas.Address = sc->cpu_p_blk + 4; in acpi_cpu_generic_cx_probe()
732 cx_ptr->res_rid = 0; in acpi_cpu_generic_cx_probe()
733 acpi_bus_alloc_gas(sc->cpu_dev, &cx_ptr->res_type, &cx_ptr->res_rid, in acpi_cpu_generic_cx_probe()
734 &gas, &cx_ptr->p_lvlx, RF_SHAREABLE); in acpi_cpu_generic_cx_probe()
735 if (cx_ptr->p_lvlx != NULL) { in acpi_cpu_generic_cx_probe()
736 cx_ptr->type = ACPI_STATE_C2; in acpi_cpu_generic_cx_probe()
737 cx_ptr->trans_lat = AcpiGbl_FADT.C2Latency; in acpi_cpu_generic_cx_probe()
739 sc->cpu_non_c3 = sc->cpu_cx_count; in acpi_cpu_generic_cx_probe()
740 sc->cpu_cx_count++; in acpi_cpu_generic_cx_probe()
743 if (sc->cpu_p_blk_len < 6) in acpi_cpu_generic_cx_probe()
748 gas.Address = sc->cpu_p_blk + 5; in acpi_cpu_generic_cx_probe()
749 cx_ptr->res_rid = 1; in acpi_cpu_generic_cx_probe()
750 acpi_bus_alloc_gas(sc->cpu_dev, &cx_ptr->res_type, &cx_ptr->res_rid, in acpi_cpu_generic_cx_probe()
751 &gas, &cx_ptr->p_lvlx, RF_SHAREABLE); in acpi_cpu_generic_cx_probe()
752 if (cx_ptr->p_lvlx != NULL) { in acpi_cpu_generic_cx_probe()
753 cx_ptr->type = ACPI_STATE_C3; in acpi_cpu_generic_cx_probe()
754 cx_ptr->trans_lat = AcpiGbl_FADT.C3Latency; in acpi_cpu_generic_cx_probe()
756 sc->cpu_cx_count++; in acpi_cpu_generic_cx_probe()
766 cx_ptr->do_mwait = true; in acpi_cpu_cx_cst_mwait()
767 cx_ptr->mwait_hint = address & 0xffffffff; in acpi_cpu_cx_cst_mwait()
768 cx_ptr->mwait_hw_coord = (accsize & CST_FFH_MWAIT_HW_COORD) != 0; in acpi_cpu_cx_cst_mwait()
769 cx_ptr->mwait_bm_avoidance = (accsize & CST_FFH_MWAIT_BM_AVOID) != 0; in acpi_cpu_cx_cst_mwait()
777 if (cx_ptr->p_lvlx == NULL) in acpi_cpu_cx_cst_free_plvlx()
779 bus_release_resource(cpu_dev, cx_ptr->res_type, cx_ptr->res_rid, in acpi_cpu_cx_cst_free_plvlx()
780 cx_ptr->p_lvlx); in acpi_cpu_cx_cst_free_plvlx()
781 cx_ptr->p_lvlx = NULL; in acpi_cpu_cx_cst_free_plvlx()
808 status = AcpiEvaluateObject(sc->cpu_handle, "_CST", NULL, &buf); in acpi_cpu_cx_cst()
815 device_printf(sc->cpu_dev, "invalid _CST package\n"); in acpi_cpu_cx_cst()
819 if (count != top->Package.Count - 1) { in acpi_cpu_cx_cst()
820 device_printf(sc->cpu_dev, "invalid _CST state count (%d != %d)\n", in acpi_cpu_cx_cst()
821 count, top->Package.Count - 1); in acpi_cpu_cx_cst()
822 count = top->Package.Count - 1; in acpi_cpu_cx_cst()
825 device_printf(sc->cpu_dev, "_CST has too many states (%d)\n", count); in acpi_cpu_cx_cst()
829 sc->cpu_non_c2 = 0; in acpi_cpu_cx_cst()
830 sc->cpu_non_c3 = 0; in acpi_cpu_cx_cst()
831 sc->cpu_cx_count = 0; in acpi_cpu_cx_cst()
832 cx_ptr = sc->cpu_cx_states; in acpi_cpu_cx_cst()
838 cx_ptr->type = ACPI_STATE_C0; in acpi_cpu_cx_cst()
840 sc->cpu_cx_count++; in acpi_cpu_cx_cst()
844 pkg = &top->Package.Elements[i + 1]; in acpi_cpu_cx_cst()
846 acpi_PkgInt32(pkg, 1, &cx_ptr->type) != 0 || in acpi_cpu_cx_cst()
847 acpi_PkgInt32(pkg, 2, &cx_ptr->trans_lat) != 0 || in acpi_cpu_cx_cst()
848 acpi_PkgInt32(pkg, 3, &cx_ptr->power) != 0) { in acpi_cpu_cx_cst()
849 device_printf(sc->cpu_dev, "skipping invalid Cx state package\n"); in acpi_cpu_cx_cst()
854 switch (cx_ptr->type) { in acpi_cpu_cx_cst()
856 acpi_cpu_cx_cst_free_plvlx(sc->cpu_dev, cx_ptr); in acpi_cpu_cx_cst()
862 /* C1 I/O then Halt */ in acpi_cpu_cx_cst()
863 cx_ptr->res_rid = sc->cpu_cx_count; in acpi_cpu_cx_cst()
864 bus_set_resource(sc->cpu_dev, SYS_RES_IOPORT, in acpi_cpu_cx_cst()
865 cx_ptr->res_rid, address, 1); in acpi_cpu_cx_cst()
866 cx_ptr->p_lvlx = bus_alloc_resource_any(sc->cpu_dev, in acpi_cpu_cx_cst()
867 SYS_RES_IOPORT, &cx_ptr->res_rid, RF_ACTIVE | in acpi_cpu_cx_cst()
869 if (cx_ptr->p_lvlx == NULL) { in acpi_cpu_cx_cst()
870 bus_delete_resource(sc->cpu_dev, SYS_RES_IOPORT, in acpi_cpu_cx_cst()
871 cx_ptr->res_rid); in acpi_cpu_cx_cst()
872 device_printf(sc->cpu_dev, in acpi_cpu_cx_cst()
874 "degrading to C1 Halt", (int)address); in acpi_cpu_cx_cst()
883 if (sc->cpu_cx_states[0].type == ACPI_STATE_C0) { in acpi_cpu_cx_cst()
885 sc->cpu_cx_states[0] = *cx_ptr; in acpi_cpu_cx_cst()
887 sc->cpu_non_c2 = sc->cpu_cx_count; in acpi_cpu_cx_cst()
888 sc->cpu_non_c3 = sc->cpu_cx_count; in acpi_cpu_cx_cst()
890 sc->cpu_cx_count++; in acpi_cpu_cx_cst()
894 sc->cpu_non_c3 = sc->cpu_cx_count; in acpi_cpu_cx_cst()
901 device_get_unit(sc->cpu_dev), i)); in acpi_cpu_cx_cst()
908 acpi_cpu_cx_cst_free_plvlx(sc->cpu_dev, cx_ptr); in acpi_cpu_cx_cst()
918 "acpi_cpu%d: Got C%d/mwait - %d latency\n", in acpi_cpu_cx_cst()
919 device_get_unit(sc->cpu_dev), cx_ptr->type, cx_ptr->trans_lat)); in acpi_cpu_cx_cst()
921 sc->cpu_cx_count++; in acpi_cpu_cx_cst()
925 cx_ptr->res_rid = sc->cpu_cx_count; in acpi_cpu_cx_cst()
926 acpi_PkgGas(sc->cpu_dev, pkg, 0, &cx_ptr->res_type, in acpi_cpu_cx_cst()
927 &cx_ptr->res_rid, &cx_ptr->p_lvlx, RF_SHAREABLE); in acpi_cpu_cx_cst()
928 if (cx_ptr->p_lvlx) { in acpi_cpu_cx_cst()
929 cx_ptr->do_mwait = false; in acpi_cpu_cx_cst()
931 "acpi_cpu%d: Got C%d - %d latency\n", in acpi_cpu_cx_cst()
932 device_get_unit(sc->cpu_dev), cx_ptr->type, in acpi_cpu_cx_cst()
933 cx_ptr->trans_lat)); in acpi_cpu_cx_cst()
935 sc->cpu_cx_count++; in acpi_cpu_cx_cst()
942 cx_ptr = sc->cpu_cx_states; in acpi_cpu_cx_cst()
943 if (cx_ptr->type == ACPI_STATE_C0) { in acpi_cpu_cx_cst()
944 cx_ptr->type = ACPI_STATE_C1; in acpi_cpu_cx_cst()
945 cx_ptr->trans_lat = 0; in acpi_cpu_cx_cst()
985 sc->cpu_cx_count = min(sc->cpu_cx_count, sc->cpu_non_c3 + 1); in acpi_cpu_startup()
987 AcpiInstallNotifyHandler(sc->cpu_handle, ACPI_DEVICE_NOTIFY, in acpi_cpu_startup()
1024 sbuf_new(&sb, sc->cpu_cx_supported, sizeof(sc->cpu_cx_supported), in acpi_cpu_cx_list()
1026 for (i = 0; i < sc->cpu_cx_count; i++) in acpi_cpu_cx_list()
1027 sbuf_printf(&sb, "C%d/%d/%d ", i + 1, sc->cpu_cx_states[i].type, in acpi_cpu_cx_list()
1028 sc->cpu_cx_states[i].trans_lat); in acpi_cpu_cx_list()
1038 SYSCTL_ADD_STRING(&sc->cpu_sysctl_ctx, in acpi_cpu_startup_cx()
1039 SYSCTL_CHILDREN(device_get_sysctl_tree(sc->cpu_dev)), in acpi_cpu_startup_cx()
1041 sc->cpu_cx_supported, 0, in acpi_cpu_startup_cx()
1043 SYSCTL_ADD_PROC(&sc->cpu_sysctl_ctx, in acpi_cpu_startup_cx()
1044 SYSCTL_CHILDREN(device_get_sysctl_tree(sc->cpu_dev)), OID_AUTO, in acpi_cpu_startup_cx()
1048 SYSCTL_ADD_PROC(&sc->cpu_sysctl_ctx, in acpi_cpu_startup_cx()
1049 SYSCTL_CHILDREN(device_get_sysctl_tree(sc->cpu_dev)), OID_AUTO, in acpi_cpu_startup_cx()
1053 SYSCTL_ADD_PROC(&sc->cpu_sysctl_ctx, in acpi_cpu_startup_cx()
1054 SYSCTL_CHILDREN(device_get_sysctl_tree(sc->cpu_dev)), OID_AUTO, in acpi_cpu_startup_cx()
1059 SYSCTL_ADD_PROC(&sc->cpu_sysctl_ctx, in acpi_cpu_startup_cx()
1060 SYSCTL_CHILDREN(device_get_sysctl_tree(sc->cpu_dev)), OID_AUTO, in acpi_cpu_startup_cx()
1075 * Idle the CPU in the lowest state possible. This function is called with
1076 * interrupts disabled. Note that once it re-enables interrupts, a task
1078 * interrupts are re-enabled.
1108 us = sc->cpu_prev_sleep; in acpi_cpu_idle()
1113 i = min(sc->cpu_cx_lowest, sc->cpu_non_c2); in acpi_cpu_idle()
1115 i = min(sc->cpu_cx_lowest, sc->cpu_non_c3); in acpi_cpu_idle()
1117 i = sc->cpu_cx_lowest; in acpi_cpu_idle()
1118 for (; i >= 0; i--) { in acpi_cpu_idle()
1119 if (sc->cpu_cx_states[i].trans_lat * 3 <= us) { in acpi_cpu_idle()
1127 * the bit and use the lowest non-C3 state. Note that the USB in acpi_cpu_idle()
1131 cx_next = &sc->cpu_cx_states[cx_next_idx]; in acpi_cpu_idle()
1133 cx_next_idx > sc->cpu_non_c3 && in acpi_cpu_idle()
1134 (!cx_next->do_mwait || cx_next->mwait_bm_avoidance)) { in acpi_cpu_idle()
1138 cx_next_idx = sc->cpu_non_c3; in acpi_cpu_idle()
1139 cx_next = &sc->cpu_cx_states[cx_next_idx]; in acpi_cpu_idle()
1144 sc->cpu_cx_stats[cx_next_idx]++; in acpi_cpu_idle()
1145 KASSERT(cx_next->type != ACPI_STATE_C0, ("acpi_cpu_idle: C0 sleep")); in acpi_cpu_idle()
1153 if (cx_next->type == ACPI_STATE_C1) { in acpi_cpu_idle()
1155 if (cx_next->p_lvlx != NULL) { in acpi_cpu_idle()
1156 /* C1 I/O then Halt */ in acpi_cpu_idle()
1157 CPU_GET_REG(cx_next->p_lvlx, 1); in acpi_cpu_idle()
1159 if (cx_next->do_mwait) in acpi_cpu_idle()
1160 acpi_cpu_idle_mwait(cx_next->mwait_hint); in acpi_cpu_idle()
1165 if (cx_next->do_mwait) in acpi_cpu_idle()
1167 end_time = ((end_ticks - start_ticks) << 20) / cpu_tickrate(); in acpi_cpu_idle()
1168 if (!cx_next->do_mwait && curthread->td_critnest == 0) in acpi_cpu_idle()
1170 sc->cpu_prev_sleep = (sc->cpu_prev_sleep * 3 + end_time) / 4; in acpi_cpu_idle()
1178 if (cx_next->type == ACPI_STATE_C3) { in acpi_cpu_idle()
1191 if (cx_next->type == ACPI_STATE_C3) { in acpi_cpu_idle()
1198 if (cx_next->do_mwait) { in acpi_cpu_idle()
1199 acpi_cpu_idle_mwait(cx_next->mwait_hint); in acpi_cpu_idle()
1201 CPU_GET_REG(cx_next->p_lvlx, 1); in acpi_cpu_idle()
1204 * to enter the idle state, the first read may be executed before in acpi_cpu_idle()
1211 if (cx_next->type == ACPI_STATE_C3) in acpi_cpu_idle()
1217 if (cx_next->type == ACPI_STATE_C3 && in acpi_cpu_idle()
1222 if (cx_next->type == ACPI_STATE_C3) in acpi_cpu_idle()
1225 end_time = ((end_ticks - start_ticks) << 20) / cpu_tickrate(); in acpi_cpu_idle()
1226 sc->cpu_prev_sleep = (sc->cpu_prev_sleep * 3 + end_time) / 4; in acpi_cpu_idle()
1231 * Re-evaluate the _CST object when we are notified that it changed.
1242 * C-state data for target CPU is going to be in flux while we execute in acpi_cpu_notify()
1259 acpi_UserNotify("PROCESSOR", sc->cpu_handle, notify); in acpi_cpu_notify()
1315 * others have a livelock bug if Type-F DMA is enabled. Linux in acpi_cpu_quirks_piix4()
1320 * See erratum #18 ("C3 Power State/BMIDE and Type-F DMA in acpi_cpu_quirks_piix4()
1326 * Also, BRLD_EN_BM (ACPI_BITREG_BUS_MASTER_RLD in ACPI-speak) in acpi_cpu_quirks_piix4()
1327 * should be set to zero, otherwise it causes C2 to short-sleep. in acpi_cpu_quirks_piix4()
1371 for (i = 0; i < sc->cpu_cx_count; i++) in acpi_cpu_usage_sysctl()
1372 sum += sc->cpu_cx_stats[i]; in acpi_cpu_usage_sysctl()
1373 for (i = 0; i < sc->cpu_cx_count; i++) { in acpi_cpu_usage_sysctl()
1375 whole = (uintmax_t)sc->cpu_cx_stats[i] * 100; in acpi_cpu_usage_sysctl()
1382 sbuf_printf(&sb, "last %dus", sc->cpu_prev_sleep); in acpi_cpu_usage_sysctl()
1401 for (i = 0; i < sc->cpu_cx_count; i++) { in acpi_cpu_usage_counters_sysctl()
1404 sbuf_printf(&sb, "%u", sc->cpu_cx_stats[i]); in acpi_cpu_usage_counters_sysctl()
1422 for (i = 0; i < sc->cpu_cx_count; i++) { in acpi_cpu_method_sysctl()
1423 cx = &sc->cpu_cx_states[i]; in acpi_cpu_method_sysctl()
1427 if (cx->do_mwait) { in acpi_cpu_method_sysctl()
1429 if (cx->mwait_hw_coord) in acpi_cpu_method_sysctl()
1431 if (cx->mwait_bm_avoidance) in acpi_cpu_method_sysctl()
1433 } else if (cx->type == ACPI_STATE_C1) { in acpi_cpu_method_sysctl()
1438 if (cx->type == ACPI_STATE_C1 && cx->p_lvlx != NULL) in acpi_cpu_method_sysctl()
1453 sc->cpu_cx_lowest = min(sc->cpu_cx_lowest_lim, sc->cpu_cx_count - 1); in acpi_cpu_set_cx_lowest()
1455 /* If not disabling, cache the new lowest non-C3 state. */ in acpi_cpu_set_cx_lowest()
1456 sc->cpu_non_c3 = 0; in acpi_cpu_set_cx_lowest()
1457 for (i = sc->cpu_cx_lowest; i >= 0; i--) { in acpi_cpu_set_cx_lowest()
1458 if (sc->cpu_cx_states[i].type < ACPI_STATE_C3) { in acpi_cpu_set_cx_lowest()
1459 sc->cpu_non_c3 = i; in acpi_cpu_set_cx_lowest()
1465 bzero(sc->cpu_cx_stats, sizeof(sc->cpu_cx_stats)); in acpi_cpu_set_cx_lowest()
1477 snprintf(state, sizeof(state), "C%d", sc->cpu_cx_lowest_lim + 1); in acpi_cpu_cx_lowest_sysctl()
1479 if (error != 0 || req->newptr == NULL) in acpi_cpu_cx_lowest_sysctl()
1492 sc->cpu_cx_lowest_lim = val - 1; in acpi_cpu_cx_lowest_sysctl()
1508 if (error != 0 || req->newptr == NULL) in acpi_cpu_global_cx_lowest_sysctl()
1522 cpu_cx_lowest_lim = val - 1; in acpi_cpu_global_cx_lowest_sysctl()
1526 sc->cpu_cx_lowest_lim = cpu_cx_lowest_lim; in acpi_cpu_global_cx_lowest_sysctl()