2024-02-20 05:45:39

by Armin Wolf

[permalink] [raw]
Subject: [PATCH 1/3] platform/x86/amd/pmf: Add missing __iomem attribute to policy_base

The value of policy_base is the return value of a devm_ioremap call,
which returns a __iomem pointer instead of an regular pointer.
Add the missing __iomem attribute.

Compile-tested only.

Signed-off-by: Armin Wolf <[email protected]>
---
drivers/platform/x86/amd/pmf/pmf.h | 2 +-
drivers/platform/x86/amd/pmf/tee-if.c | 2 +-
2 files changed, 2 insertions(+), 2 deletions(-)

diff --git a/drivers/platform/x86/amd/pmf/pmf.h b/drivers/platform/x86/amd/pmf/pmf.h
index 16999c5b334f..bcf777a5659a 100644
--- a/drivers/platform/x86/amd/pmf/pmf.h
+++ b/drivers/platform/x86/amd/pmf/pmf.h
@@ -229,7 +229,7 @@ struct amd_pmf_dev {
struct delayed_work pb_work;
struct pmf_action_table *prev_data;
u64 policy_addr;
- void *policy_base;
+ void __iomem *policy_base;
bool smart_pc_enabled;
};

diff --git a/drivers/platform/x86/amd/pmf/tee-if.c b/drivers/platform/x86/amd/pmf/tee-if.c
index f8c0177afb0d..16973bebf55f 100644
--- a/drivers/platform/x86/amd/pmf/tee-if.c
+++ b/drivers/platform/x86/amd/pmf/tee-if.c
@@ -346,7 +346,7 @@ static int amd_pmf_get_bios_buffer(struct amd_pmf_dev *dev)
if (!dev->policy_base)
return -ENOMEM;

- memcpy(dev->policy_buf, dev->policy_base, dev->policy_sz);
+ memcpy_fromio(dev->policy_buf, dev->policy_base, dev->policy_sz);

amd_pmf_hex_dump_pb(dev);
if (pb_side_load)
--
2.39.2



2024-02-20 05:45:56

by Armin Wolf

[permalink] [raw]
Subject: [PATCH 2/3] platform/x86/amd/pmf: Do not use readl() for policy buffer access

The policy buffer is allocated using normal memory allocation
functions, so readl() should not be used on it.
Use get_unaligned_le32() instead.

Compile-tested only.

Signed-off-by: Armin Wolf <[email protected]>
---
drivers/platform/x86/amd/pmf/tee-if.c | 5 +++--
1 file changed, 3 insertions(+), 2 deletions(-)

diff --git a/drivers/platform/x86/amd/pmf/tee-if.c b/drivers/platform/x86/amd/pmf/tee-if.c
index 16973bebf55f..3220b6580270 100644
--- a/drivers/platform/x86/amd/pmf/tee-if.c
+++ b/drivers/platform/x86/amd/pmf/tee-if.c
@@ -11,6 +11,7 @@
#include <linux/debugfs.h>
#include <linux/tee_drv.h>
#include <linux/uuid.h>
+#include <asm/unaligned.h>
#include "pmf.h"

#define MAX_TEE_PARAM 4
@@ -249,8 +250,8 @@ static int amd_pmf_start_policy_engine(struct amd_pmf_dev *dev)
u32 cookie, length;
int res;

- cookie = readl(dev->policy_buf + POLICY_COOKIE_OFFSET);
- length = readl(dev->policy_buf + POLICY_COOKIE_LEN);
+ cookie = get_unaligned_le32(dev->policy_buf + POLICY_COOKIE_OFFSET);
+ length = get_unaligned_le32(dev->policy_buf + POLICY_COOKIE_LEN);

if (cookie != POLICY_SIGN_COOKIE || !length)
return -EINVAL;
--
2.39.2


2024-02-20 05:45:56

by Armin Wolf

[permalink] [raw]
Subject: [PATCH 3/3] platform/x86: intel_scu_ipcutil: Make scu static

The variable is only used internally and has no external users,
so it should me made static.

Compile-tested only.

Fixes: 663cc18861a0 ("platform/x86: intel_scu_ipcutil: Convert to use new SCU IPC API")
Signed-off-by: Armin Wolf <[email protected]>
---
drivers/platform/x86/intel_scu_ipcutil.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/drivers/platform/x86/intel_scu_ipcutil.c b/drivers/platform/x86/intel_scu_ipcutil.c
index b7c10c15a3d6..7d87cbd4b9c6 100644
--- a/drivers/platform/x86/intel_scu_ipcutil.c
+++ b/drivers/platform/x86/intel_scu_ipcutil.c
@@ -22,7 +22,7 @@

static int major;

-struct intel_scu_ipc_dev *scu;
+static struct intel_scu_ipc_dev *scu;
static DEFINE_MUTEX(scu_lock);

/* IOCTL commands */
--
2.39.2


Subject: Re: [PATCH 3/3] platform/x86: intel_scu_ipcutil: Make scu static


On 2/19/24 9:45 PM, Armin Wolf wrote:
> The variable is only used internally and has no external users,
> so it should me made static.
>
> Compile-tested only.
>
> Fixes: 663cc18861a0 ("platform/x86: intel_scu_ipcutil: Convert to use new SCU IPC API")
> Signed-off-by: Armin Wolf <[email protected]>
> ---


Since it is not a bug fix, I am not sure whether it makes sense to add Fixes: tag.

But the change wise, it is fine.

Reviewed-by: Kuppuswamy Sathyanarayanan <[email protected]>


> drivers/platform/x86/intel_scu_ipcutil.c | 2 +-
> 1 file changed, 1 insertion(+), 1 deletion(-)
>
> diff --git a/drivers/platform/x86/intel_scu_ipcutil.c b/drivers/platform/x86/intel_scu_ipcutil.c
> index b7c10c15a3d6..7d87cbd4b9c6 100644
> --- a/drivers/platform/x86/intel_scu_ipcutil.c
> +++ b/drivers/platform/x86/intel_scu_ipcutil.c
> @@ -22,7 +22,7 @@
>
> static int major;
>
> -struct intel_scu_ipc_dev *scu;
> +static struct intel_scu_ipc_dev *scu;
> static DEFINE_MUTEX(scu_lock);
>
> /* IOCTL commands */
> --
> 2.39.2
>
>
--
Sathyanarayanan Kuppuswamy
Linux Kernel Developer