• Home
  • Raw
  • Download

Lines Matching +full:exit +full:- +full:latency

1 // SPDX-License-Identifier: GPL-2.0
3 * cpuidle-pseries - idle state cpuidle driver.
78 * were soft-disabled in check_and_cede_processor()
92 * "ibm,get-systems-parameter" RTAS call with the token
98 * table with all the parameters to ibm,get-system-parameters.
99 * CEDE_LATENCY_TOKEN corresponds to the token value for Cede Latency
105 * If the platform supports the cede latency settings information system
109 * a. The first byte is the length “N” of each cede latency setting record minus
112 * b. For each supported cede latency setting a cede latency setting record
115 * -----------------------------
118 * -----------------------------
119 * | Cede Latency | 1 Byte |
121 * -----------------------------
123 * | latency in | 8 Bytes |
124 * | tb-ticks | |
125 * -----------------------------
129 * -----------------------------
131 * This version has cede latency record size = 10.
137 * ibm,get-systems-parameter RTAS call when made with
141 * call. The data is in big-endian.
172 ret = rtas_call(rtas_token("ibm,get-system-parameter"), 3, 1, in parse_cede_parameters()
183 xcede_record_size = payload->record_size + 1; in parse_cede_parameters()
186 pr_err("xcede: Expected record-size %lu. Observed size %u.\n", in parse_cede_parameters()
188 return -EINVAL; in parse_cede_parameters()
198 total_xcede_records_size = payload_size - 2; in parse_cede_parameters()
202 struct xcede_latency_record *record = &payload->records[i]; in parse_cede_parameters()
203 u64 latency_ticks = be64_to_cpu(record->latency_ticks); in parse_cede_parameters()
204 u8 wake_on_irqs = record->wake_on_irqs; in parse_cede_parameters()
205 u8 hint = record->hint; in parse_cede_parameters()
207 pr_info("xcede: Record %d : hint = %u, latency = 0x%llx tb ticks, Wake-on-irq = %u\n", in parse_cede_parameters()
224 get_lppaca()->donate_dedicated_cpu = 1; in dedicated_cede_loop()
225 old_latency_hint = get_lppaca()->cede_latency_hint; in dedicated_cede_loop()
226 get_lppaca()->cede_latency_hint = cede_latency_hint[index]; in dedicated_cede_loop()
232 get_lppaca()->donate_dedicated_cpu = 0; in dedicated_cede_loop()
233 get_lppaca()->cede_latency_hint = old_latency_hint; in dedicated_cede_loop()
330 drv->state_count = 0; in pseries_cpuidle_driver_init()
337 drv->states[drv->state_count] = /* structure copy */ in pseries_cpuidle_driver_init()
340 drv->state_count += 1; in pseries_cpuidle_driver_init()
352 min_latency_us = dedicated_states[1].exit_latency; // CEDE latency in fixup_cede0_latency()
362 struct xcede_latency_record *record = &payload->records[i]; in fixup_cede0_latency()
363 u64 latency_tb = be64_to_cpu(record->latency_ticks); in fixup_cede0_latency()
367 pr_warn("cpuidle: xcede record %d has an unrealistic latency of 0us.\n", i); in fixup_cede0_latency()
374 * By default, we assume that CEDE(0) has exit latency 10us, in fixup_cede0_latency()
377 * However, if the wakeup latency of an Extended CEDE state is in fixup_cede0_latency()
381 * Perform the fix-up. in fixup_cede0_latency()
385 * We set a minimum of 1us wakeup latency for cede0 to in fixup_cede0_latency()
391 cede0_latency = min_latency_us - 1; in fixup_cede0_latency()
395 pr_info("cpuidle: Fixed up CEDE exit latency to %llu us\n", in fixup_cede0_latency()
409 return -ENODEV; in pseries_idle_probe()
418 if (lppaca_shared_proc(local_paca->lppaca_ptr)) { in pseries_idle_probe()
423 * Use firmware provided latency values in pseries_idle_probe()
431 * provided latency values. On such platforms, in pseries_idle_probe()
441 return -ENODEV; in pseries_idle_probe()