ssize_t (*format)(char *buf, size_t bufsize);
        int (*max_size)(u64 *max_size);
        const struct attribute **config_attrs;
+
+       // NULL-terminated array of fixed variable names
+       // Only used if get_next() isn't provided
+       const char * const *var_names;
 };
 
 #ifdef CONFIG_PPC_SECURE_BOOT
 
        return 0;
 }
 
-static int secvar_sysfs_load(void)
+static int add_var(const char *name)
 {
        struct kobject *kobj;
+       int rc;
+
+       kobj = kzalloc(sizeof(*kobj), GFP_KERNEL);
+       if (!kobj)
+               return -ENOMEM;
+
+       kobject_init(kobj, &secvar_ktype);
+
+       rc = kobject_add(kobj, &secvar_kset->kobj, "%s", name);
+       if (rc) {
+               pr_warn("kobject_add error %d for attribute: %s\n", rc,
+                       name);
+               kobject_put(kobj);
+               return rc;
+       }
+
+       kobject_uevent(kobj, KOBJ_ADD);
+       return 0;
+}
+
+static int secvar_sysfs_load(void)
+{
        u64 namesize = 0;
        char *name;
        int rc;
                        break;
                }
 
-               kobj = kzalloc(sizeof(*kobj), GFP_KERNEL);
-               if (!kobj) {
-                       rc = -ENOMEM;
-                       break;
-               }
-
-               kobject_init(kobj, &secvar_ktype);
-
-               rc = kobject_add(kobj, &secvar_kset->kobj, "%s", name);
-               if (rc) {
-                       pr_warn("kobject_add error %d for attribute: %s\n", rc,
-                               name);
-                       kobject_put(kobj);
-                       kobj = NULL;
-               }
-
-               if (kobj)
-                       kobject_uevent(kobj, KOBJ_ADD);
-
+               rc = add_var(name);
        } while (!rc);
 
        kfree(name);
        return rc;
 }
 
+static int secvar_sysfs_load_static(void)
+{
+       const char * const *name_ptr = secvar_ops->var_names;
+       int rc;
+
+       while (*name_ptr) {
+               rc = add_var(*name_ptr);
+               if (rc)
+                       return rc;
+               name_ptr++;
+       }
+
+       return 0;
+}
+
 static int secvar_sysfs_init(void)
 {
        int rc;
                goto err;
        }
 
-       secvar_sysfs_load();
+       if (secvar_ops->get_next)
+               rc = secvar_sysfs_load();
+       else
+               rc = secvar_sysfs_load_static();
+
+       if (rc) {
+               pr_err("Failed to create variable attributes\n");
+               goto err;
+       }
 
        return 0;
 err: