Revert "ACPI: CPPC: Use access_width over bit_width for system memory accesses"
This reverts commit 4949affd5288b867cdf115f5b08d6166b2027f87 which is commit 2f4a4d63a193be6fd530d180bb13c3592052904c upstream. It breaks AmpereOne systems and should not have been added to the stable tree just yet. Link: https://lore.kernel.org/r/97d25ef7-dee9-4cc5-842a-273f565869b3@linux.microsoft.com Reported-by: Easwar Hariharan <eahariha@linux.microsoft.com> Cc: Jarred White <jarredwhite@linux.microsoft.com> Cc: Rafael J. Wysocki <rafael.j.wysocki@intel.com> Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
This commit is contained in:
parent
1793e6b2da
commit
b54c463294
@ -161,13 +161,6 @@ show_cppc_data(cppc_get_perf_caps, cppc_perf_caps, nominal_freq);
|
||||
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);
|
||||
|
||||
/* Check for valid access_width, otherwise, fallback to using bit_width */
|
||||
#define GET_BIT_WIDTH(reg) ((reg)->access_width ? (8 << ((reg)->access_width - 1)) : (reg)->bit_width)
|
||||
|
||||
/* Shift and apply the mask for CPC reads/writes */
|
||||
#define MASK_VAL(reg, val) ((val) >> ((reg)->bit_offset & \
|
||||
GENMASK(((reg)->bit_width), 0)))
|
||||
|
||||
static ssize_t show_feedback_ctrs(struct kobject *kobj,
|
||||
struct kobj_attribute *attr, char *buf)
|
||||
{
|
||||
@ -769,10 +762,8 @@ int acpi_cppc_processor_probe(struct acpi_processor *pr)
|
||||
} else if (gas_t->space_id == ACPI_ADR_SPACE_SYSTEM_MEMORY) {
|
||||
if (gas_t->address) {
|
||||
void __iomem *addr;
|
||||
size_t access_width;
|
||||
|
||||
access_width = GET_BIT_WIDTH(gas_t) / 8;
|
||||
addr = ioremap(gas_t->address, access_width);
|
||||
addr = ioremap(gas_t->address, gas_t->bit_width/8);
|
||||
if (!addr)
|
||||
goto out_free;
|
||||
cpc_ptr->cpc_regs[i-2].sys_mem_vaddr = addr;
|
||||
@ -945,7 +936,6 @@ static int cpc_read(int cpu, struct cpc_register_resource *reg_res, u64 *val)
|
||||
{
|
||||
int ret_val = 0;
|
||||
void __iomem *vaddr = NULL;
|
||||
int size;
|
||||
int pcc_ss_id = per_cpu(cpu_pcc_subspace_idx, cpu);
|
||||
struct cpc_reg *reg = ®_res->cpc_entry.reg;
|
||||
|
||||
@ -965,9 +955,7 @@ static int cpc_read(int cpu, struct cpc_register_resource *reg_res, u64 *val)
|
||||
return acpi_os_read_memory((acpi_physical_address)reg->address,
|
||||
val, reg->bit_width);
|
||||
|
||||
size = GET_BIT_WIDTH(reg);
|
||||
|
||||
switch (size) {
|
||||
switch (reg->bit_width) {
|
||||
case 8:
|
||||
*val = readb_relaxed(vaddr);
|
||||
break;
|
||||
@ -986,16 +974,12 @@ static int cpc_read(int cpu, struct cpc_register_resource *reg_res, u64 *val)
|
||||
ret_val = -EFAULT;
|
||||
}
|
||||
|
||||
if (reg->space_id == ACPI_ADR_SPACE_SYSTEM_MEMORY)
|
||||
*val = MASK_VAL(reg, *val);
|
||||
|
||||
return ret_val;
|
||||
}
|
||||
|
||||
static int cpc_write(int cpu, struct cpc_register_resource *reg_res, u64 val)
|
||||
{
|
||||
int ret_val = 0;
|
||||
int size;
|
||||
void __iomem *vaddr = NULL;
|
||||
int pcc_ss_id = per_cpu(cpu_pcc_subspace_idx, cpu);
|
||||
struct cpc_reg *reg = ®_res->cpc_entry.reg;
|
||||
@ -1010,12 +994,7 @@ static int cpc_write(int cpu, struct cpc_register_resource *reg_res, u64 val)
|
||||
return acpi_os_write_memory((acpi_physical_address)reg->address,
|
||||
val, reg->bit_width);
|
||||
|
||||
size = GET_BIT_WIDTH(reg);
|
||||
|
||||
if (reg->space_id == ACPI_ADR_SPACE_SYSTEM_MEMORY)
|
||||
val = MASK_VAL(reg, val);
|
||||
|
||||
switch (size) {
|
||||
switch (reg->bit_width) {
|
||||
case 8:
|
||||
writeb_relaxed(val, vaddr);
|
||||
break;
|
||||
|
Loading…
x
Reference in New Issue
Block a user