diff options
author | Linus Torvalds <torvalds@linux-foundation.org> | 2021-04-26 15:03:23 -0700 |
---|---|---|
committer | Linus Torvalds <torvalds@linux-foundation.org> | 2021-04-26 15:03:23 -0700 |
commit | d8f9176b4ece17e831306072678cd9ae49688cf5 (patch) | |
tree | b91e5f4e8036bba02622c3ecffa62c684d929556 /drivers/acpi/cppc_acpi.c | |
parent | 47080f2286110c371b9cf75ac7b34a6f2f1cf4ba (diff) | |
parent | b6237f61fc9ca79b8771a4fa412d2c630c9f8d2b (diff) |
Merge tag 'acpi-5.13-rc1' of git://git.kernel.org/pub/scm/linux/kernel/git/rafael/linux-pm
Pull ACPI updates from Rafael Wysocki:
"These update the ACPICA code in the kernel to the most recent upstream
revision including (but not limited to) new material introduced in the
6.4 version of the spec, update message printing in the ACPI-related
code, address a few issues and clean up code in a number of places.
Specifics:
- Update ACPICA code in the kernel to upstream revision 20210331
including the following changes:
* Add parsing for IVRS IVHD 40h and device entry F0h (Alexander
Monakov).
* Add new CEDT table for CXL 2.0 and iASL support for it (Ben
Widawsky, Bob Moore).
* NFIT: add Location Cookie field (Bob Moore).
* HMAT: add new fields/flags (Bob Moore).
* Add new flags in SRAT (Bob Moore).
* PMTT: add new fields/structures (Bob Moore).
* Add CSI2Bus resource template (Bob Moore).
* iASL: Decode subtable type field for VIOT (Bob Moore).
* Fix various typos and spelling mistakes (Colin Ian King).
* Add new predefined objects _BPC, _BPS, and _BPT (Erik Kaneda).
* Add USB4 capabilities UUID (Erik Kaneda).
* Add CXL ACPI device ID and _CBR object (Erik Kaneda).
* MADT: add Multiprocessor Wakeup Structure (Erik Kaneda).
* PCCT: add support for subtable type 5 (Erik Kaneda).
* PPTT: add new version of subtable type 1 (Erik Kaneda).
* Add SDEV secure access components (Erik Kaneda).
* Add support for PHAT table (Erik Kaneda).
* iASL: Add definitions for the VIOT table (Jean-Philippe
Brucker).
* acpisrc: Add missing conversion for VIOT support (Jean-Philippe
Brucker).
* IORT: Updates for revision E.b (Shameer Kolothum).
- Rearrange message printing in ACPI-related code to avoid using the
ACPICA's internal message printing macros outside ACPICA and do
some related code cleanups (Rafael Wysocki).
- Modify the device enumeration code to turn off all of the unused
ACPI power resources at the end (Rafael Wysocki).
- Change the ACPI power resources handling code to turn off unused
ACPI power resources without checking their status which should not
be necessary by the spec (Rafael Wysocki).
- Add empty stubs for CPPC-related functions to be used when
CONFIG_ACPI_CPPC_LIB is not set (Rafael Wysocki).
- Simplify device enumeration code (Rafael Wysocki).
- Change device enumeration code to use match_string() for string
matching (Andy Shevchenko).
- Modify irqresource_disabled() to retain the resouce flags that have
been set already (Angela Czubak).
- Add native backlight whitelist entry for GA401/GA502/GA503 (Luke
Jones).
- Modify the ACPI backlight driver to let the native backlight
handling take over on hardware-reduced systems (Hans de Goede).
- Introduce acpi_dev_get() and switch over the ACPI core code to
using it (Andy Shevchenko).
- Use kobj_attribute as callback argument instead of a local struct
type in the CPPC linrary code (Nathan Chancellor).
- Drop unneeded initializatio of a static variable from the ACPI
processor driver (Tian Tao).
- Drop unnecessary local variable assignment from the ACPI APEI code
(Colin Ian King).
- Document for_each_acpi_dev_match() macro (Andy Shevchenko).
- Address assorted coding style issues in multiple places (Xiaofei
Tan).
- Capitalize TLAs in a few comments (Andy Shevchenko).
- Correct assorted typos in comments (Tom Saeger)"
* tag 'acpi-5.13-rc1' of git://git.kernel.org/pub/scm/linux/kernel/git/rafael/linux-pm: (68 commits)
ACPI: video: use native backlight for GA401/GA502/GA503
ACPI: APEI: remove redundant assignment to variable rc
ACPI: utils: Capitalize abbreviations in the comments
ACPI: utils: Document for_each_acpi_dev_match() macro
ACPI: bus: Introduce acpi_dev_get() and reuse it in ACPI code
ACPI: scan: Utilize match_string() API
resource: Prevent irqresource_disabled() from erasing flags
ACPI: CPPC: Replace cppc_attr with kobj_attribute
ACPI: scan: Call acpi_get_object_info() from acpi_set_pnp_ids()
ACPI: scan: Drop sta argument from acpi_init_device_object()
ACPI: scan: Drop sta argument from acpi_add_single_object()
ACPI: scan: Rearrange checks in acpi_bus_check_add()
ACPI: scan: Fold acpi_bus_type_and_status() into its caller
ACPI: video: Check LCD flag on ACPI-reduced-hardware devices
ACPI: utils: Add acpi_reduced_hardware() helper
ACPI: dock: fix some coding style issues
ACPI: sysfs: fix some coding style issues
ACPI: PM: add a missed blank line after declarations
ACPI: custom_method: fix a coding style issue
ACPI: CPPC: fix some coding style issues
...
Diffstat (limited to 'drivers/acpi/cppc_acpi.c')
-rw-r--r-- | drivers/acpi/cppc_acpi.c | 96 |
1 files changed, 44 insertions, 52 deletions
diff --git a/drivers/acpi/cppc_acpi.c b/drivers/acpi/cppc_acpi.c index 69057fcd2c04..a4d4eebba1da 100644 --- a/drivers/acpi/cppc_acpi.c +++ b/drivers/acpi/cppc_acpi.c @@ -33,7 +33,6 @@ #define pr_fmt(fmt) "ACPI CPPC: " fmt -#include <linux/cpufreq.h> #include <linux/delay.h> #include <linux/iopoll.h> #include <linux/ktime.h> @@ -101,14 +100,14 @@ static DEFINE_PER_CPU(struct cpc_desc *, cpc_desc_ptr); (cpc)->cpc_entry.reg.space_id == \ ACPI_ADR_SPACE_PLATFORM_COMM) -/* Evalutes to True if reg is a NULL register descriptor */ +/* Evaluates to True if reg is a NULL register descriptor */ #define IS_NULL_REG(reg) ((reg)->space_id == ACPI_ADR_SPACE_SYSTEM_MEMORY && \ (reg)->address == 0 && \ (reg)->bit_width == 0 && \ (reg)->bit_offset == 0 && \ (reg)->access_width == 0) -/* Evalutes to True if an optional cpc field is supported */ +/* Evaluates to True if an optional cpc field is supported */ #define CPC_SUPPORTED(cpc) ((cpc)->type == ACPI_TYPE_INTEGER ? \ !!(cpc)->cpc_entry.int_value : \ !IS_NULL_REG(&(cpc)->cpc_entry.reg)) @@ -119,23 +118,15 @@ static DEFINE_PER_CPU(struct cpc_desc *, cpc_desc_ptr); */ #define NUM_RETRIES 500ULL -struct cppc_attr { - struct attribute attr; - ssize_t (*show)(struct kobject *kobj, - struct attribute *attr, char *buf); - ssize_t (*store)(struct kobject *kobj, - struct attribute *attr, const char *c, ssize_t count); -}; - #define define_one_cppc_ro(_name) \ -static struct cppc_attr _name = \ +static struct kobj_attribute _name = \ __ATTR(_name, 0444, show_##_name, NULL) #define to_cpc_desc(a) container_of(a, struct cpc_desc, kobj) #define show_cppc_data(access_fn, struct_name, member_name) \ static ssize_t show_##member_name(struct kobject *kobj, \ - struct attribute *attr, char *buf) \ + struct kobj_attribute *attr, char *buf) \ { \ struct cpc_desc *cpc_ptr = to_cpc_desc(kobj); \ struct struct_name st_name = {0}; \ @@ -161,7 +152,7 @@ show_cppc_data(cppc_get_perf_ctrs, cppc_perf_fb_ctrs, reference_perf); show_cppc_data(cppc_get_perf_ctrs, cppc_perf_fb_ctrs, wraparound_time); static ssize_t show_feedback_ctrs(struct kobject *kobj, - struct attribute *attr, char *buf) + struct kobj_attribute *attr, char *buf) { struct cpc_desc *cpc_ptr = to_cpc_desc(kobj); struct cppc_perf_fb_ctrs fb_ctrs = {0}; @@ -327,6 +318,7 @@ end: if (unlikely(ret)) { for_each_possible_cpu(i) { struct cpc_desc *desc = per_cpu(cpc_desc_ptr, i); + if (!desc) continue; @@ -778,7 +770,7 @@ int acpi_cppc_processor_probe(struct acpi_processor *pr) cpc_ptr->cpc_regs[i-2].type = ACPI_TYPE_BUFFER; memcpy(&cpc_ptr->cpc_regs[i-2].cpc_entry.reg, gas_t, sizeof(*gas_t)); } else { - pr_debug("Err in entry:%d in CPC table of CPU:%d \n", i, pr->id); + pr_debug("Err in entry:%d in CPC table of CPU:%d\n", i, pr->id); goto out_free; } } @@ -868,7 +860,7 @@ void acpi_cppc_processor_exit(struct acpi_processor *pr) void __iomem *addr; int pcc_ss_id = per_cpu(cpu_pcc_subspace_idx, pr->id); - if (pcc_ss_id >=0 && pcc_data[pcc_ss_id]) { + if (pcc_ss_id >= 0 && pcc_data[pcc_ss_id]) { if (pcc_data[pcc_ss_id]->pcc_channel_acquired) { pcc_data[pcc_ss_id]->refcount--; if (!pcc_data[pcc_ss_id]->refcount) { @@ -955,22 +947,22 @@ static int cpc_read(int cpu, struct cpc_register_resource *reg_res, u64 *val) val, reg->bit_width); switch (reg->bit_width) { - case 8: - *val = readb_relaxed(vaddr); - break; - case 16: - *val = readw_relaxed(vaddr); - break; - case 32: - *val = readl_relaxed(vaddr); - break; - case 64: - *val = readq_relaxed(vaddr); - break; - default: - pr_debug("Error: Cannot read %u bit width from PCC for ss: %d\n", - reg->bit_width, pcc_ss_id); - ret_val = -EFAULT; + case 8: + *val = readb_relaxed(vaddr); + break; + case 16: + *val = readw_relaxed(vaddr); + break; + case 32: + *val = readl_relaxed(vaddr); + break; + case 64: + *val = readq_relaxed(vaddr); + break; + default: + pr_debug("Error: Cannot read %u bit width from PCC for ss: %d\n", + reg->bit_width, pcc_ss_id); + ret_val = -EFAULT; } return ret_val; @@ -994,23 +986,23 @@ static int cpc_write(int cpu, struct cpc_register_resource *reg_res, u64 val) val, reg->bit_width); switch (reg->bit_width) { - case 8: - writeb_relaxed(val, vaddr); - break; - case 16: - writew_relaxed(val, vaddr); - break; - case 32: - writel_relaxed(val, vaddr); - break; - case 64: - writeq_relaxed(val, vaddr); - break; - default: - pr_debug("Error: Cannot write %u bit width to PCC for ss: %d\n", - reg->bit_width, pcc_ss_id); - ret_val = -EFAULT; - break; + case 8: + writeb_relaxed(val, vaddr); + break; + case 16: + writew_relaxed(val, vaddr); + break; + case 32: + writel_relaxed(val, vaddr); + break; + case 64: + writeq_relaxed(val, vaddr); + break; + default: + pr_debug("Error: Cannot write %u bit width to PCC for ss: %d\n", + reg->bit_width, pcc_ss_id); + ret_val = -EFAULT; + break; } return ret_val; @@ -1330,7 +1322,7 @@ int cppc_set_perf(int cpu, struct cppc_perf_ctrls *perf_ctrls) * is still with OSPM. * pending_pcc_write_cmd can also be cleared by a different CPU, if * there was a pcc CMD_READ waiting on down_write and it steals the lock - * before the pcc CMD_WRITE is completed. pcc_send_cmd checks for this + * before the pcc CMD_WRITE is completed. send_pcc_cmd checks for this * case during a CMD_READ and if there are pending writes it delivers * the write command before servicing the read command */ @@ -1355,8 +1347,8 @@ EXPORT_SYMBOL_GPL(cppc_set_perf); /** * cppc_get_transition_latency - returns frequency transition latency in ns * - * ACPI CPPC does not explicitly specifiy how a platform can specify the - * transition latency for perfromance change requests. The closest we have + * ACPI CPPC does not explicitly specify how a platform can specify the + * transition latency for performance change requests. The closest we have * is the timing information from the PCCT tables which provides the info * on the number and frequency of PCC commands the platform can handle. */ |