diff options
-rw-r--r-- | host/arch/x86/lib/crossystem_arch.c | 3 | ||||
-rw-r--r-- | host/lib/crossystem.c | 3 |
2 files changed, 6 insertions, 0 deletions
diff --git a/host/arch/x86/lib/crossystem_arch.c b/host/arch/x86/lib/crossystem_arch.c index 2fd2f530..1e51cb0b 100644 --- a/host/arch/x86/lib/crossystem_arch.c +++ b/host/arch/x86/lib/crossystem_arch.c @@ -803,6 +803,9 @@ int VbGetArchPropertyInt(const char* name) value = ReadGpio(GPIO_SIGNAL_TYPE_RECOVERY); } else if (!strcasecmp(name,"wpsw_cur")) { value = ReadGpio(GPIO_SIGNAL_TYPE_WP); + /* Use "write-protect at boot" as a fallback value. */ + if (-1 == value) + value = ReadFileBit(ACPI_CHSW_PATH, CHSW_WP_BOOT); if (-1 != value && FwidStartsWith("Mario.")) value = 1 - value; /* Mario reports this backwards */ } else if (!strcasecmp(name,"recoverysw_ec_boot")) { diff --git a/host/lib/crossystem.c b/host/lib/crossystem.c index 33cf332f..50de4cb0 100644 --- a/host/lib/crossystem.c +++ b/host/lib/crossystem.c @@ -428,6 +428,9 @@ int VbGetSystemPropertyInt(const char *name) value = GetVdatInt(VDAT_INT_DEVSW_BOOT); } else if (!strcasecmp(name, "recoverysw_boot")) { value = GetVdatInt(VDAT_INT_RECSW_BOOT); + } else if (!strcasecmp(name, "wpsw_cur")) { + /* Use "write-protect at boot" as a fallback value. */ + value = GetVdatInt(VDAT_INT_HW_WPSW_BOOT); } else if (!strcasecmp(name, "wpsw_boot")) { value = GetVdatInt(VDAT_INT_HW_WPSW_BOOT); } else if (!strcasecmp(name,"vdat_flags")) { |