IFS image loading flow is slightly different for newer IFS generations.
In preparation for adding support for newer IFS generations, refactor
portions of existing image loading code for reuse.
Signed-off-by: Jithu Joseph <[email protected]>
Reviewed-by: Tony Luck <[email protected]>
Tested-by: Pengfei Xu <[email protected]>
---
drivers/platform/x86/intel/ifs/load.c | 31 ++++++++++++++++-----------
1 file changed, 19 insertions(+), 12 deletions(-)
diff --git a/drivers/platform/x86/intel/ifs/load.c b/drivers/platform/x86/intel/ifs/load.c
index cefd0d886cfd..851c97cc6a6b 100644
--- a/drivers/platform/x86/intel/ifs/load.c
+++ b/drivers/platform/x86/intel/ifs/load.c
@@ -80,6 +80,23 @@ static struct metadata_header *find_meta_data(void *ucode, unsigned int meta_typ
return NULL;
}
+static void hashcopy_err_message(struct device *dev, u32 err_code)
+{
+ if (err_code >= ARRAY_SIZE(scan_hash_status))
+ dev_err(dev, "invalid error code 0x%x for hash copy\n", err_code);
+ else
+ dev_err(dev, "Hash copy error : %s\n", scan_hash_status[err_code]);
+}
+
+static void auth_err_message(struct device *dev, u32 err_code)
+{
+ if (err_code >= ARRAY_SIZE(scan_authentication_status))
+ dev_err(dev, "invalid error code 0x%x for authentication\n", err_code);
+ else
+ dev_err(dev, "Chunk authentication error : %s\n",
+ scan_authentication_status[err_code]);
+}
+
/*
* To copy scan hashes and authenticate test chunks, the initiating cpu must point
* to the EDX:EAX to the test image in linear address.
@@ -109,11 +126,7 @@ static void copy_hashes_authenticate_chunks(struct work_struct *work)
if (!hashes_status.valid) {
ifsd->loading_error = true;
- if (err_code >= ARRAY_SIZE(scan_hash_status)) {
- dev_err(dev, "invalid error code 0x%x for hash copy\n", err_code);
- goto done;
- }
- dev_err(dev, "Hash copy error : %s", scan_hash_status[err_code]);
+ hashcopy_err_message(dev, err_code);
goto done;
}
@@ -133,13 +146,7 @@ static void copy_hashes_authenticate_chunks(struct work_struct *work)
if (err_code) {
ifsd->loading_error = true;
- if (err_code >= ARRAY_SIZE(scan_authentication_status)) {
- dev_err(dev,
- "invalid error code 0x%x for authentication\n", err_code);
- goto done;
- }
- dev_err(dev, "Chunk authentication error %s\n",
- scan_authentication_status[err_code]);
+ auth_err_message(dev, err_code);
goto done;
}
}
--
2.25.1
On Fri, 22 Sep 2023, Jithu Joseph wrote:
> IFS image loading flow is slightly different for newer IFS generations.
>
> In preparation for adding support for newer IFS generations, refactor
> portions of existing image loading code for reuse.
>
> Signed-off-by: Jithu Joseph <[email protected]>
> Reviewed-by: Tony Luck <[email protected]>
> Tested-by: Pengfei Xu <[email protected]>
> ---
> drivers/platform/x86/intel/ifs/load.c | 31 ++++++++++++++++-----------
> 1 file changed, 19 insertions(+), 12 deletions(-)
>
> diff --git a/drivers/platform/x86/intel/ifs/load.c b/drivers/platform/x86/intel/ifs/load.c
> index cefd0d886cfd..851c97cc6a6b 100644
> --- a/drivers/platform/x86/intel/ifs/load.c
> +++ b/drivers/platform/x86/intel/ifs/load.c
> @@ -80,6 +80,23 @@ static struct metadata_header *find_meta_data(void *ucode, unsigned int meta_typ
> return NULL;
> }
>
> +static void hashcopy_err_message(struct device *dev, u32 err_code)
> +{
> + if (err_code >= ARRAY_SIZE(scan_hash_status))
> + dev_err(dev, "invalid error code 0x%x for hash copy\n", err_code);
> + else
> + dev_err(dev, "Hash copy error : %s\n", scan_hash_status[err_code]);
> +}
> +
> +static void auth_err_message(struct device *dev, u32 err_code)
> +{
> + if (err_code >= ARRAY_SIZE(scan_authentication_status))
> + dev_err(dev, "invalid error code 0x%x for authentication\n", err_code);
> + else
> + dev_err(dev, "Chunk authentication error : %s\n",
> + scan_authentication_status[err_code]);
> +}
> +
> /*
> * To copy scan hashes and authenticate test chunks, the initiating cpu must point
> * to the EDX:EAX to the test image in linear address.
> @@ -109,11 +126,7 @@ static void copy_hashes_authenticate_chunks(struct work_struct *work)
>
> if (!hashes_status.valid) {
> ifsd->loading_error = true;
> - if (err_code >= ARRAY_SIZE(scan_hash_status)) {
> - dev_err(dev, "invalid error code 0x%x for hash copy\n", err_code);
> - goto done;
> - }
> - dev_err(dev, "Hash copy error : %s", scan_hash_status[err_code]);
> + hashcopy_err_message(dev, err_code);
> goto done;
> }
>
> @@ -133,13 +146,7 @@ static void copy_hashes_authenticate_chunks(struct work_struct *work)
>
> if (err_code) {
> ifsd->loading_error = true;
> - if (err_code >= ARRAY_SIZE(scan_authentication_status)) {
> - dev_err(dev,
> - "invalid error code 0x%x for authentication\n", err_code);
> - goto done;
> - }
> - dev_err(dev, "Chunk authentication error %s\n",
> - scan_authentication_status[err_code]);
> + auth_err_message(dev, err_code);
> goto done;
> }
> }
>
Reviewed-by: Ilpo J?rvinen <[email protected]>
--
i.