};
 MODULE_DEVICE_TABLE(x86cpu, ifs_cpu_ids);
 
+ATTRIBUTE_GROUPS(plat_ifs);
+
 bool *ifs_pkg_auth;
 
 static const struct ifs_test_caps scan_test = {
        .test_caps = &scan_test,
        .misc = {
                .name = "intel_ifs_0",
-               .nodename = "intel_ifs/0",
                .minor = MISC_DYNAMIC_MINOR,
+               .groups = plat_ifs_groups,
        },
 };
 
        if (rdmsrl_safe(MSR_INTEGRITY_CAPS, &msrval))
                return -ENODEV;
 
-       ifs_device.misc.groups = ifs_get_groups();
-
        if (!(msrval & BIT(ifs_device.test_caps->integrity_cap_bit)))
                return -ENODEV;
 
 
 extern bool *ifs_pkg_auth;
 int ifs_load_firmware(struct device *dev);
 int do_core_test(int cpu, struct device *dev);
-const struct attribute_group **ifs_get_groups(void);
+extern struct attribute *plat_ifs_attrs[];
 
 #endif
 
 static DEVICE_ATTR_RO(image_version);
 
 /* global scan sysfs attributes */
-static struct attribute *plat_ifs_attrs[] = {
+struct attribute *plat_ifs_attrs[] = {
        &dev_attr_details.attr,
        &dev_attr_status.attr,
        &dev_attr_run_test.attr,
        &dev_attr_image_version.attr,
        NULL
 };
-
-ATTRIBUTE_GROUPS(plat_ifs);
-
-const struct attribute_group **ifs_get_groups(void)
-{
-       return plat_ifs_groups;
-}