On Tue, Apr 26, 2022 at 06:36:46PM +0200, Greg KH wrote: > On Tue, Apr 26, 2022 at 09:12:37AM -0700, Luck, Tony wrote: > > If it really is too much now, I can rip it out from this submission > > and add it back when the second test is ready for public view. > > Please do, thanks. Hmmm ... maybe there were more bits than I thought. 1 file changed, 19 insertions(+), 36 deletions(-) core.c is now down to just 80 lines ... so that was a significant fraction of the file. Net change below (I'll thread it back into the patch series before reposting). Any other comments on the series? -Tony diff --git a/drivers/platform/x86/intel/ifs/core.c b/drivers/platform/x86/intel/ifs/core.c index 317ed3225307..489b77645b5e 100644 --- a/drivers/platform/x86/intel/ifs/core.c +++ b/drivers/platform/x86/intel/ifs/core.c @@ -9,10 +9,6 @@ #include "ifs.h" -enum test_types { - IFS_SAF, -}; - #define X86_MATCH(model) \ X86_MATCH_VENDOR_FAM_MODEL_FEATURE(INTEL, 6, \ INTEL_FAM6_##model, X86_FEATURE_CORE_CAPABILITIES, NULL) @@ -23,27 +19,21 @@ static const struct x86_cpu_id ifs_cpu_ids[] __initconst = { }; MODULE_DEVICE_TABLE(x86cpu, ifs_cpu_ids); -static struct ifs_device ifs_devices[] = { - [IFS_SAF] = { - .data = { - .integrity_cap_bit = MSR_INTEGRITY_CAPS_PERIODIC_BIST_BIT, - }, - .misc = { - .name = "intel_ifs_0", - .nodename = "intel_ifs/0", - .minor = MISC_DYNAMIC_MINOR, - }, +static struct ifs_device ifs_device = { + .data = { + .integrity_cap_bit = MSR_INTEGRITY_CAPS_PERIODIC_BIST_BIT, + }, + .misc = { + .name = "intel_ifs_0", + .nodename = "intel_ifs/0", + .minor = MISC_DYNAMIC_MINOR, }, }; -#define IFS_NUMTESTS ARRAY_SIZE(ifs_devices) - static int __init ifs_init(void) { const struct x86_cpu_id *m; - int ndevices = 0; u64 msrval; - int i; m = x86_match_cpu(ifs_cpu_ids); if (!m) @@ -61,32 +51,25 @@ static int __init ifs_init(void) if (ifs_setup_wq()) return -ENOMEM; - for (i = 0; i < IFS_NUMTESTS; i++) { - if (!(msrval & BIT(ifs_devices[i].data.integrity_cap_bit))) - continue; - - ifs_devices[i].misc.groups = ifs_get_groups(); - if (!misc_register(&ifs_devices[i].misc)) { - ndevices++; - down(&ifs_sem); - ifs_load_firmware(ifs_devices[i].misc.this_device); - up(&ifs_sem); - } - } + ifs_device.misc.groups = ifs_get_groups(); - if (!ndevices) + if ((msrval & BIT(ifs_device.data.integrity_cap_bit)) && + !misc_register(&ifs_device.misc)) { + down(&ifs_sem); + ifs_load_firmware(ifs_device.misc.this_device); + up(&ifs_sem); + } else { ifs_destroy_wq(); + return -ENODEV; + } - return ndevices ? 0 : -ENODEV; + return 0; } static void __exit ifs_exit(void) { - int i; - for (i = 0; i < IFS_NUMTESTS; i++) - if (ifs_devices[i].misc.this_device) - misc_deregister(&ifs_devices[i].misc); + misc_deregister(&ifs_device.misc); ifs_destroy_wq(); } -- 2.35.1