acpi_pad.c (4b4193256c8d3bc3a5397b5cd9494c2ad386317d) acpi_pad.c (0f39ee8324e75c9d370e84a61323ceb194641a18)
1// SPDX-License-Identifier: GPL-2.0-only
2/*
3 * acpi_pad.c ACPI Processor Aggregator Driver
4 *
5 * Copyright (c) 2009, Intel Corporation.
6 */
7
8#include <linux/kernel.h>

--- 247 unchanged lines hidden (view full) ---

256 put_online_cpus();
257}
258
259static uint32_t acpi_pad_idle_cpus_num(void)
260{
261 return ps_tsk_num;
262}
263
1// SPDX-License-Identifier: GPL-2.0-only
2/*
3 * acpi_pad.c ACPI Processor Aggregator Driver
4 *
5 * Copyright (c) 2009, Intel Corporation.
6 */
7
8#include <linux/kernel.h>

--- 247 unchanged lines hidden (view full) ---

256 put_online_cpus();
257}
258
259static uint32_t acpi_pad_idle_cpus_num(void)
260{
261 return ps_tsk_num;
262}
263
264static ssize_t acpi_pad_rrtime_store(struct device *dev,
264static ssize_t rrtime_store(struct device *dev,
265 struct device_attribute *attr, const char *buf, size_t count)
266{
267 unsigned long num;
268 if (kstrtoul(buf, 0, &num))
269 return -EINVAL;
270 if (num < 1 || num >= 100)
271 return -EINVAL;
272 mutex_lock(&isolated_cpus_lock);
273 round_robin_time = num;
274 mutex_unlock(&isolated_cpus_lock);
275 return count;
276}
277
265 struct device_attribute *attr, const char *buf, size_t count)
266{
267 unsigned long num;
268 if (kstrtoul(buf, 0, &num))
269 return -EINVAL;
270 if (num < 1 || num >= 100)
271 return -EINVAL;
272 mutex_lock(&isolated_cpus_lock);
273 round_robin_time = num;
274 mutex_unlock(&isolated_cpus_lock);
275 return count;
276}
277
278static ssize_t acpi_pad_rrtime_show(struct device *dev,
278static ssize_t rrtime_show(struct device *dev,
279 struct device_attribute *attr, char *buf)
280{
281 return scnprintf(buf, PAGE_SIZE, "%d\n", round_robin_time);
282}
279 struct device_attribute *attr, char *buf)
280{
281 return scnprintf(buf, PAGE_SIZE, "%d\n", round_robin_time);
282}
283static DEVICE_ATTR(rrtime, S_IRUGO|S_IWUSR,
284 acpi_pad_rrtime_show,
285 acpi_pad_rrtime_store);
283static DEVICE_ATTR_RW(rrtime);
286
284
287static ssize_t acpi_pad_idlepct_store(struct device *dev,
285static ssize_t idlepct_store(struct device *dev,
288 struct device_attribute *attr, const char *buf, size_t count)
289{
290 unsigned long num;
291 if (kstrtoul(buf, 0, &num))
292 return -EINVAL;
293 if (num < 1 || num >= 100)
294 return -EINVAL;
295 mutex_lock(&isolated_cpus_lock);
296 idle_pct = num;
297 mutex_unlock(&isolated_cpus_lock);
298 return count;
299}
300
286 struct device_attribute *attr, const char *buf, size_t count)
287{
288 unsigned long num;
289 if (kstrtoul(buf, 0, &num))
290 return -EINVAL;
291 if (num < 1 || num >= 100)
292 return -EINVAL;
293 mutex_lock(&isolated_cpus_lock);
294 idle_pct = num;
295 mutex_unlock(&isolated_cpus_lock);
296 return count;
297}
298
301static ssize_t acpi_pad_idlepct_show(struct device *dev,
299static ssize_t idlepct_show(struct device *dev,
302 struct device_attribute *attr, char *buf)
303{
304 return scnprintf(buf, PAGE_SIZE, "%d\n", idle_pct);
305}
300 struct device_attribute *attr, char *buf)
301{
302 return scnprintf(buf, PAGE_SIZE, "%d\n", idle_pct);
303}
306static DEVICE_ATTR(idlepct, S_IRUGO|S_IWUSR,
307 acpi_pad_idlepct_show,
308 acpi_pad_idlepct_store);
304static DEVICE_ATTR_RW(idlepct);
309
305
310static ssize_t acpi_pad_idlecpus_store(struct device *dev,
306static ssize_t idlecpus_store(struct device *dev,
311 struct device_attribute *attr, const char *buf, size_t count)
312{
313 unsigned long num;
314 if (kstrtoul(buf, 0, &num))
315 return -EINVAL;
316 mutex_lock(&isolated_cpus_lock);
317 acpi_pad_idle_cpus(num);
318 mutex_unlock(&isolated_cpus_lock);
319 return count;
320}
321
307 struct device_attribute *attr, const char *buf, size_t count)
308{
309 unsigned long num;
310 if (kstrtoul(buf, 0, &num))
311 return -EINVAL;
312 mutex_lock(&isolated_cpus_lock);
313 acpi_pad_idle_cpus(num);
314 mutex_unlock(&isolated_cpus_lock);
315 return count;
316}
317
322static ssize_t acpi_pad_idlecpus_show(struct device *dev,
318static ssize_t idlecpus_show(struct device *dev,
323 struct device_attribute *attr, char *buf)
324{
325 return cpumap_print_to_pagebuf(false, buf,
326 to_cpumask(pad_busy_cpus_bits));
327}
328
319 struct device_attribute *attr, char *buf)
320{
321 return cpumap_print_to_pagebuf(false, buf,
322 to_cpumask(pad_busy_cpus_bits));
323}
324
329static DEVICE_ATTR(idlecpus, S_IRUGO|S_IWUSR,
330 acpi_pad_idlecpus_show,
331 acpi_pad_idlecpus_store);
325static DEVICE_ATTR_RW(idlecpus);
332
333static int acpi_pad_add_sysfs(struct acpi_device *device)
334{
335 int result;
336
337 result = device_create_file(&device->dev, &dev_attr_idlecpus);
338 if (result)
339 return -ENODEV;

--- 158 unchanged lines hidden ---
326
327static int acpi_pad_add_sysfs(struct acpi_device *device)
328{
329 int result;
330
331 result = device_create_file(&device->dev, &dev_attr_idlecpus);
332 if (result)
333 return -ENODEV;

--- 158 unchanged lines hidden ---