enum linetype { Devices, Array, Mailaddr, Mailfrom, Program, CreateDev,
Homehost, HomeCluster, AutoMode, Policy, PartPolicy, Sysfs,
- MonitorDelay, EncryptionNoVerify, Probing, LTEnd };
+ MonitorDelay, EncryptionNoVerify, Probing, ImsmDisableOrom, LTEnd };
char *keywords[] = {
[Devices] = "devices",
[Array] = "array",
[MonitorDelay] = "monitordelay",
[EncryptionNoVerify] = "ENCRYPTION_NO_VERIFY",
[Probing] = "probing",
+ [ImsmDisableOrom] = "IMSM_DISABLE_OROM",
[LTEnd] = NULL
};
}
}
+static bool imsm_disable_orom;
+void imsm_disable_orom_line(char *line)
+{
+ char *word;
+
+ for (word = dl_next(line); word != line; word = dl_next(word)) {
+ if (strcmp(word, "1") == 0)
+ imsm_disable_orom = true;
+ else if (strcmp(word, "0") == 0)
+ imsm_disable_orom = false;
+ else
+ pr_err("unrecognised value on IMSM_DISABLE_OROM line: %s\n", word);
+ }
+}
+
char auto_yes[] = "yes";
char auto_no[] = "no";
char auto_homehost[] = "homehost";
case Probing:
probing_line(line);
break;
+ case ImsmDisableOrom:
+ imsm_disable_orom_line(line);
+ break;
default:
pr_err("Unknown keyword %s\n", line);
}
return probing_ddf_extended;
}
+bool conf_get_imsm_disable_orom(void)
+{
+ load_conffile();
+ return imsm_disable_orom;
+}
+
struct createinfo *conf_get_create_info(void)
{
load_conffile();
cost of slower probing.
.RE
+.TP
+.B IMSM_DISABLE_OROM
+The
+.B IMSM_DISABLE_OROM
+option controls whether
+.I mdadm
+scans option-ROM (OROM) memory to detect IMSM capabilities.
+By default, when neither EFI nor ACPI capabilities are found,
+.I mdadm
+falls back to scanning option-ROM memory.
+When set to
+.IR 1 ,
+the OROM scan is skipped.
+When set to
+.I 0
+(the default), the scan proceeds normally.
+
+This option is useful on systems with kernel lockdown enabled to avoid log flooding.
+The OROM scan is a legacy method of detecting IMSM capabilities, superseded by EFI variables,
+and can usually be disabled safely on modern UEFI systems.
+
.SH FILES
.SS {CONFFILE}
extern int conf_get_monitor_delay(void);
extern bool conf_get_sata_opal_encryption_no_verify(void);
extern bool conf_get_probing_ddf_extended(void);
+extern bool conf_get_imsm_disable_orom(void);
extern char *conf_line(FILE *file);
extern char *conf_word(FILE *file, int allow_key);
extern void print_quoted(char *str);