]> git.ipfire.org Git - thirdparty/kernel/linux.git/commitdiff
platform/x86/intel/pmt: Add pre/post decode hooks around header parsing
authorDavid E. Box <david.e.box@linux.intel.com>
Fri, 12 Jun 2026 21:01:42 +0000 (14:01 -0700)
committerIlpo Järvinen <ilpo.jarvinen@linux.intel.com>
Sun, 14 Jun 2026 23:12:52 +0000 (02:12 +0300)
Add optional pre- and post-decode callbacks to the PMT class so namespaces
can perform setup and cleanup steps around header parsing.

  - Add pmt_pre_decode() and pmt_post_decode() to struct
    intel_pmt_namespace.
  - Update intel_pmt_dev_create() to invoke, in order:
      pre → header_decode() → post.
  - Keep the existing pmt_header_decode() callback unchanged.

No functional changes. This adds flexibility for upcoming decoders while
preserving current behavior.

Signed-off-by: David E. Box <david.e.box@linux.intel.com>
Reviewed-by: Ilpo Järvinen <ilpo.jarvinen@linux.intel.com>
Link: https://patch.msgid.link/b178a341601ca694db99c3b738fe4ed9e0c2bede.1781294741.git.david.e.box@linux.intel.com
Signed-off-by: Ilpo Järvinen <ilpo.jarvinen@linux.intel.com>
drivers/platform/x86/intel/pmt/class.c
drivers/platform/x86/intel/pmt/class.h

index b4c9964df8077ee7448976ea2f77a55167393d9d..9b315334a69ba576517e2ebcbabda2fba2afae23 100644 (file)
@@ -381,10 +381,22 @@ int intel_pmt_dev_create(struct intel_pmt_entry *entry, struct intel_pmt_namespa
        if (IS_ERR(entry->disc_table))
                return PTR_ERR(entry->disc_table);
 
+       if (ns->pmt_pre_decode) {
+               ret = ns->pmt_pre_decode(intel_vsec_dev, entry);
+               if (ret)
+                       return ret;
+       }
+
        ret = ns->pmt_header_decode(entry, dev);
        if (ret)
                return ret;
 
+       if (ns->pmt_post_decode) {
+               ret = ns->pmt_post_decode(intel_vsec_dev, entry);
+               if (ret)
+                       return ret;
+       }
+
        ret = intel_pmt_populate_entry(entry, intel_vsec_dev, disc_res);
        if (ret)
                return ret;
index 1ae56a5baad23dc4606ed76c1a73adc90ee14a38..ff39014b208cc89eb85388c5cdbe0cd704e6ab58 100644 (file)
@@ -62,6 +62,10 @@ struct intel_pmt_namespace {
        struct xarray *xa;
        int (*pmt_header_decode)(struct intel_pmt_entry *entry,
                                 struct device *dev);
+       int (*pmt_pre_decode)(struct intel_vsec_device *ivdev,
+                             struct intel_pmt_entry *entry);
+       int (*pmt_post_decode)(struct intel_vsec_device *ivdev,
+                              struct intel_pmt_entry *entry);
        int (*pmt_add_endpoint)(struct intel_vsec_device *ivdev,
                                struct intel_pmt_entry *entry);
 };