From bd92d4e6e49f0b7b6bbff84ec32c440e11ad56c2 Mon Sep 17 00:00:00 2001 From: Shawn Wang Date: Fri, 15 Nov 2024 16:55:14 +0800 Subject: [PATCH] anolis: arm_mpam: Rename ddr_cpufreq to yitian710_ddrc_freq to be more accurate ANBZ: #11916 Yitian710's YMPM ACPI table (another version of MPAM table for Yitian710) uses the reserved field of memory locator descriptor to report the DDRC frequency, which is used by Yitian710's implementation-defined MB monitoring feature. This patch just makes the code more accurate and support for more machines in the future. Signed-off-by: Shawn Wang --- drivers/acpi/arm64/mpam.c | 10 +++++++--- drivers/platform/mpam/mpam_devices.c | 17 ++++++++++------- drivers/platform/mpam/mpam_mdev.c | 10 +++++----- 3 files changed, 22 insertions(+), 15 deletions(-) diff --git a/drivers/acpi/arm64/mpam.c b/drivers/acpi/arm64/mpam.c index 5c6782f5a9e6..3c66ec583e0c 100644 --- a/drivers/acpi/arm64/mpam.c +++ b/drivers/acpi/arm64/mpam.c @@ -20,8 +20,7 @@ * the signature of the new MPAM ACPI table is named YMPM. */ #define ACPI_SIG_YMPM "YMPM" - -extern int ddr_cpufreq; +extern int yitian710_ddrc_freq; /* Use OEM info in MPAM ACPI table to distinguish different machine types */ struct acpi_mpam_machine_oem_info { @@ -141,7 +140,12 @@ static int acpi_mpam_parse_resource(struct mpam_msc *msc, return mpam_ris_create(msc, res->ris_index, MPAM_CLASS_CACHE, level, cache_id); case ACPI_MPAM_LOCATION_TYPE_MEMORY: - WRITE_ONCE(ddr_cpufreq, res->locator2); + /* + * YMPM ACPI reports the reserved field of memory locator + * descriptor as YITIAN710's DDRC frequency. + */ + if (mpam_current_machine == MPAM_YITIAN710) + WRITE_ONCE(yitian710_ddrc_freq, res->locator2); return mpam_ris_create(msc, res->ris_index, MPAM_CLASS_MEMORY, 255, res->locator1); default: diff --git a/drivers/platform/mpam/mpam_devices.c b/drivers/platform/mpam/mpam_devices.c index fd1e5e10a1b9..74b1ab32ceef 100644 --- a/drivers/platform/mpam/mpam_devices.c +++ b/drivers/platform/mpam/mpam_devices.c @@ -33,8 +33,8 @@ #include "mpam_internal.h" -int ddr_cpufreq; -EXPORT_SYMBOL_GPL(ddr_cpufreq); +int yitian710_ddrc_freq; +EXPORT_SYMBOL_GPL(yitian710_ddrc_freq); DEFINE_STATIC_KEY_FALSE(mpam_enabled); EXPORT_SYMBOL(mpam_enabled); @@ -952,7 +952,7 @@ static void __ris_impl_msmon_read(void *arg) mb_val = MBWU_GET(val); - mb_val = mb_val * 32 * READ_ONCE(ddr_cpufreq) * 1000000 / cycle; /* B/s */ + mb_val = mb_val * 32 * READ_ONCE(yitian710_ddrc_freq) * 1000000 / cycle; /* B/s */ *(m->val) += mb_val; } @@ -1563,10 +1563,13 @@ static int mpam_dt_parse_resource(struct mpam_msc *msc, struct device_node *np, pr_err("Failed to read memory numa node id\n"); break; } - err = of_property_read_u32(dev_node, "ddr-cpufreq", &ddr_cpufreq); - if (err) { - pr_err("Failed to read memory ddr cpufreq\n"); - break; + if (mpam_current_machine == MPAM_YITIAN710) { + err = of_property_read_u32(dev_node, "ddrc-freq", + &yitian710_ddrc_freq); + if (err) { + pr_err("Failed to read memory ddrc-freq\n"); + break; + } } } else { pr_err("Not a valid device\n"); diff --git a/drivers/platform/mpam/mpam_mdev.c b/drivers/platform/mpam/mpam_mdev.c index d6247b265fff..5d2692147ef9 100644 --- a/drivers/platform/mpam/mpam_mdev.c +++ b/drivers/platform/mpam/mpam_mdev.c @@ -29,7 +29,7 @@ extern struct mutex mpam_list_lock; extern u16 mpam_partid_max; extern spinlock_t partid_max_lock; -extern int ddr_cpufreq; +extern int yitian710_ddrc_freq; #define MPAM_MDEV_NAME "mpam_mdev" #define MPAM_MDEV_CLASS_NAME "mpam_mdev" @@ -710,19 +710,19 @@ vpartid_offset_show(struct device *dev, struct device_attribute *attr, static DEVICE_ATTR_RO(vpartid_offset); static ssize_t -ddr_cpufreq_show(struct device *dev, struct device_attribute *attr, +ddrc_freq_show(struct device *dev, struct device_attribute *attr, char *buf) { - return sprintf(buf, "%d\n", READ_ONCE(ddr_cpufreq)); + return sprintf(buf, "%d\n", READ_ONCE(yitian710_ddrc_freq)); } -static DEVICE_ATTR_RO(ddr_cpufreq); +static DEVICE_ATTR_RO(ddrc_freq); static struct attribute *mpam_mdev_dev_attrs[] = { &dev_attr_partids.attr, &dev_attr_class_type.attr, &dev_attr_domain_id.attr, &dev_attr_vpartid_offset.attr, - &dev_attr_ddr_cpufreq.attr, + &dev_attr_ddrc_freq.attr, NULL, }; -- Gitee