On ChromiumOS devices, the ecc_size is set to 0 (check dmesg | grep ecc to see `ecc: 0`): this disables ECC for ramoops region, even when ramoops.ecc=1 is given to kernel command line parameter.
This patch introduces ecc_size module parameter to provide an method to turn on ECC for ramoops and set different values of ecc_size per devices. Signed-off-by: Naoya Tezuka <[email protected]> --- drivers/platform/chrome/chromeos_pstore.c | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/drivers/platform/chrome/chromeos_pstore.c b/drivers/platform/chrome/chromeos_pstore.c index f37c0ef4af1f..255818f24c2e 100644 --- a/drivers/platform/chrome/chromeos_pstore.c +++ b/drivers/platform/chrome/chromeos_pstore.c @@ -9,6 +9,10 @@ #include <linux/platform_device.h> #include <linux/pstore_ram.h> +static int ecc_size; +module_param(ecc_size, int, 0444); +MODULE_PARM_DESC(ecc_size, "ECC parity data size in bytes. A positive value enables ECC for the ramoops region."); + static const struct dmi_system_id chromeos_pstore_dmi_table[] __initconst = { { /* @@ -115,8 +119,12 @@ static inline bool chromeos_check_acpi(void) { return false; } static int __init chromeos_pstore_init(void) { + bool acpi_dev_found; + if (ecc_size > 0) + chromeos_ramoops_data.ecc_info.ecc_size = ecc_size; + /* First check ACPI for non-hardcoded values from firmware. */ acpi_dev_found = chromeos_check_acpi(); -- 2.50.0.rc0.604.gd4ff7b7c86-goog
