platform/x86/intel/vsec: Add new Discovery feature

Add the PCIe VSEC ID for new Intel Platform Monitoring Technology
Capability Discovery feature. Discovery provides detailed information for
the various Intel VSEC features. Also make the driver a supplier for
TPMI and Telemetry drivers which will use the information.

Signed-off-by: David E. Box <david.e.box@linux.intel.com>
Link: https://lore.kernel.org/r/20250703022832.1302928-8-david.e.box@linux.intel.com
Reviewed-by: Ilpo Järvinen <ilpo.jarvinen@linux.intel.com>
Signed-off-by: Ilpo Järvinen <ilpo.jarvinen@linux.intel.com>
This commit is contained in:
David E. Box 2025-07-02 19:28:22 -07:00 committed by Ilpo Järvinen
parent e4436e9867
commit 10f32796e8
No known key found for this signature in database
GPG Key ID: 59AC4F6153E5CE31
2 changed files with 27 additions and 3 deletions

View File

@ -66,6 +66,9 @@ static const char *intel_vsec_name(enum intel_vsec_id id)
case VSEC_ID_TPMI:
return "tpmi";
case VSEC_ID_DISCOVERY:
return "discovery";
default:
return NULL;
}
@ -84,6 +87,8 @@ static bool intel_vsec_supported(u16 id, unsigned long caps)
return !!(caps & VSEC_CAP_SDSI);
case VSEC_ID_TPMI:
return !!(caps & VSEC_CAP_TPMI);
case VSEC_ID_DISCOVERY:
return !!(caps & VSEC_CAP_DISCOVERY);
default:
return false;
}
@ -138,6 +143,8 @@ static bool vsec_driver_present(int cap_id)
return IS_ENABLED(CONFIG_INTEL_SDSI);
case VSEC_CAP_TPMI:
return IS_ENABLED(CONFIG_INTEL_TPMI);
case VSEC_CAP_DISCOVERY:
return IS_ENABLED(CONFIG_INTEL_PMT_DISCOVERY);
default:
return false;
}
@ -392,6 +399,9 @@ static int get_cap_id(u32 header_id, unsigned long *cap_id)
case VSEC_ID_TPMI:
*cap_id = ilog2(VSEC_CAP_TPMI);
break;
case VSEC_ID_DISCOVERY:
*cap_id = ilog2(VSEC_CAP_DISCOVERY);
break;
default:
return -EINVAL;
}
@ -681,14 +691,26 @@ static const struct intel_vsec_platform_info mtl_info = {
.caps = VSEC_CAP_TELEMETRY,
};
static const struct vsec_feature_dependency oobmsm_deps[] = {
{
.feature = VSEC_CAP_TELEMETRY,
.supplier_bitmap = VSEC_CAP_DISCOVERY,
},
};
/* OOBMSM info */
static const struct intel_vsec_platform_info oobmsm_info = {
.caps = VSEC_CAP_TELEMETRY | VSEC_CAP_SDSI | VSEC_CAP_TPMI,
.caps = VSEC_CAP_TELEMETRY | VSEC_CAP_SDSI | VSEC_CAP_TPMI |
VSEC_CAP_DISCOVERY,
.deps = oobmsm_deps,
.num_deps = ARRAY_SIZE(oobmsm_deps),
};
/* DMR OOBMSM info */
static const struct intel_vsec_platform_info dmr_oobmsm_info = {
.caps = VSEC_CAP_TELEMETRY | VSEC_CAP_TPMI,
.caps = VSEC_CAP_TELEMETRY | VSEC_CAP_TPMI | VSEC_CAP_DISCOVERY,
.deps = oobmsm_deps,
.num_deps = ARRAY_SIZE(oobmsm_deps),
};
/* TGL info */

View File

@ -16,7 +16,8 @@
#define VSEC_CAP_CRASHLOG BIT(3)
#define VSEC_CAP_SDSI BIT(4)
#define VSEC_CAP_TPMI BIT(5)
#define VSEC_FEATURE_COUNT 6
#define VSEC_CAP_DISCOVERY BIT(6)
#define VSEC_FEATURE_COUNT 7
/* Intel DVSEC offsets */
#define INTEL_DVSEC_ENTRIES 0xA
@ -33,6 +34,7 @@ enum intel_vsec_id {
VSEC_ID_TELEMETRY = 2,
VSEC_ID_WATCHER = 3,
VSEC_ID_CRASHLOG = 4,
VSEC_ID_DISCOVERY = 12,
VSEC_ID_SDSI = 65,
VSEC_ID_TPMI = 66,
};