diff options
Diffstat (limited to 'drivers/acpi')
| -rw-r--r-- | drivers/acpi/acpi_watchdog.c | 15 | 
1 files changed, 12 insertions, 3 deletions
| diff --git a/drivers/acpi/acpi_watchdog.c b/drivers/acpi/acpi_watchdog.c index b5516b04ffc0..6e9ec6e3fe47 100644 --- a/drivers/acpi/acpi_watchdog.c +++ b/drivers/acpi/acpi_watchdog.c @@ -55,12 +55,14 @@ static bool acpi_watchdog_uses_rtc(const struct acpi_table_wdat *wdat)  }  #endif +static bool acpi_no_watchdog; +  static const struct acpi_table_wdat *acpi_watchdog_get_wdat(void)  {  	const struct acpi_table_wdat *wdat = NULL;  	acpi_status status; -	if (acpi_disabled) +	if (acpi_disabled || acpi_no_watchdog)  		return NULL;  	status = acpi_get_table(ACPI_SIG_WDAT, 0, @@ -88,6 +90,14 @@ bool acpi_has_watchdog(void)  }  EXPORT_SYMBOL_GPL(acpi_has_watchdog); +/* ACPI watchdog can be disabled on boot command line */ +static int __init disable_acpi_watchdog(char *str) +{ +	acpi_no_watchdog = true; +	return 1; +} +__setup("acpi_no_watchdog", disable_acpi_watchdog); +  void __init acpi_watchdog_init(void)  {  	const struct acpi_wdat_entry *entries; @@ -126,12 +136,11 @@ void __init acpi_watchdog_init(void)  		gas = &entries[i].register_region;  		res.start = gas->address; +		res.end = res.start + ACPI_ACCESS_BYTE_WIDTH(gas->access_width) - 1;  		if (gas->space_id == ACPI_ADR_SPACE_SYSTEM_MEMORY) {  			res.flags = IORESOURCE_MEM; -			res.end = res.start + ALIGN(gas->access_width, 4) - 1;  		} else if (gas->space_id == ACPI_ADR_SPACE_SYSTEM_IO) {  			res.flags = IORESOURCE_IO; -			res.end = res.start + gas->access_width - 1;  		} else {  			pr_warn("Unsupported address space: %u\n",  				gas->space_id); |