Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux

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>

authored by

David E. Box and committed by
Ilpo Järvinen
10f32796 e4436e98

+27 -3
+24 -2
drivers/platform/x86/intel/vsec.c
··· 66 66 case VSEC_ID_TPMI: 67 67 return "tpmi"; 68 68 69 + case VSEC_ID_DISCOVERY: 70 + return "discovery"; 71 + 69 72 default: 70 73 return NULL; 71 74 } ··· 87 84 return !!(caps & VSEC_CAP_SDSI); 88 85 case VSEC_ID_TPMI: 89 86 return !!(caps & VSEC_CAP_TPMI); 87 + case VSEC_ID_DISCOVERY: 88 + return !!(caps & VSEC_CAP_DISCOVERY); 90 89 default: 91 90 return false; 92 91 } ··· 143 138 return IS_ENABLED(CONFIG_INTEL_SDSI); 144 139 case VSEC_CAP_TPMI: 145 140 return IS_ENABLED(CONFIG_INTEL_TPMI); 141 + case VSEC_CAP_DISCOVERY: 142 + return IS_ENABLED(CONFIG_INTEL_PMT_DISCOVERY); 146 143 default: 147 144 return false; 148 145 } ··· 398 391 break; 399 392 case VSEC_ID_TPMI: 400 393 *cap_id = ilog2(VSEC_CAP_TPMI); 394 + break; 395 + case VSEC_ID_DISCOVERY: 396 + *cap_id = ilog2(VSEC_CAP_DISCOVERY); 401 397 break; 402 398 default: 403 399 return -EINVAL; ··· 691 681 .caps = VSEC_CAP_TELEMETRY, 692 682 }; 693 683 684 + static const struct vsec_feature_dependency oobmsm_deps[] = { 685 + { 686 + .feature = VSEC_CAP_TELEMETRY, 687 + .supplier_bitmap = VSEC_CAP_DISCOVERY, 688 + }, 689 + }; 690 + 694 691 /* OOBMSM info */ 695 692 static const struct intel_vsec_platform_info oobmsm_info = { 696 - .caps = VSEC_CAP_TELEMETRY | VSEC_CAP_SDSI | VSEC_CAP_TPMI, 693 + .caps = VSEC_CAP_TELEMETRY | VSEC_CAP_SDSI | VSEC_CAP_TPMI | 694 + VSEC_CAP_DISCOVERY, 695 + .deps = oobmsm_deps, 696 + .num_deps = ARRAY_SIZE(oobmsm_deps), 697 697 }; 698 698 699 699 /* DMR OOBMSM info */ 700 700 static const struct intel_vsec_platform_info dmr_oobmsm_info = { 701 - .caps = VSEC_CAP_TELEMETRY | VSEC_CAP_TPMI, 701 + .caps = VSEC_CAP_TELEMETRY | VSEC_CAP_TPMI | VSEC_CAP_DISCOVERY, 702 + .deps = oobmsm_deps, 703 + .num_deps = ARRAY_SIZE(oobmsm_deps), 702 704 }; 703 705 704 706 /* TGL info */
+3 -1
include/linux/intel_vsec.h
··· 16 16 #define VSEC_CAP_CRASHLOG BIT(3) 17 17 #define VSEC_CAP_SDSI BIT(4) 18 18 #define VSEC_CAP_TPMI BIT(5) 19 - #define VSEC_FEATURE_COUNT 6 19 + #define VSEC_CAP_DISCOVERY BIT(6) 20 + #define VSEC_FEATURE_COUNT 7 20 21 21 22 /* Intel DVSEC offsets */ 22 23 #define INTEL_DVSEC_ENTRIES 0xA ··· 34 33 VSEC_ID_TELEMETRY = 2, 35 34 VSEC_ID_WATCHER = 3, 36 35 VSEC_ID_CRASHLOG = 4, 36 + VSEC_ID_DISCOVERY = 12, 37 37 VSEC_ID_SDSI = 65, 38 38 VSEC_ID_TPMI = 66, 39 39 };