platform/x86/intel/ifs: Refactor image loading code
authorJithu Joseph <jithu.joseph@intel.com>
Thu, 5 Oct 2023 19:51:30 +0000 (12:51 -0700)
committerIlpo Järvinen <ilpo.jarvinen@linux.intel.com>
Fri, 6 Oct 2023 10:05:15 +0000 (13:05 +0300)
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 <jithu.joseph@intel.com>
Reviewed-by: Tony Luck <tony.luck@intel.com>
Reviewed-by: Ilpo Järvinen <ilpo.jarvinen@linux.intel.com>
Tested-by: Pengfei Xu <pengfei.xu@intel.com>
Link: https://lore.kernel.org/r/20231005195137.3117166-3-jithu.joseph@intel.com
Signed-off-by: Ilpo Järvinen <ilpo.jarvinen@linux.intel.com>
drivers/platform/x86/intel/ifs/load.c

index cefd0d886cfd4d61747d6fae9fd8270b2f2e5320..851c97cc6a6b10a41e3377f110bae18bbf82dfc7 100644 (file)
@@ -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;
                }
        }