Linux-ACPI Archive on lore.kernel.org
 help / color / Atom feed
* Forcing non-ACPI watchdog driver
@ 2020-02-05 15:05 Jean Delvare
  2020-02-05 15:24 ` Mika Westerberg
  0 siblings, 1 reply; 9+ messages in thread
From: Jean Delvare @ 2020-02-05 15:05 UTC (permalink / raw)
  To: Rafael J. Wysocki
  Cc: Len Brown, linux-acpi, Wim Van Sebroeck, Guenter Roeck,
	linux-watchdog, Mika Westerberg, Tom Abraham

Hi all,

Is there a way to prevent the ACPI WDAT watchdog interface from being
used and force the use of a native watchdog driver instead?

I have a customer who reports a regression on kernel upgrade. Old
kernel (v4.4) uses iTCO_wdt and watchdog works, new kernel (v4.12) uses
wdat_wdt and watchdog doesn't work (instant reboot when opening the
device). While I'm going to look for fixes to backport, I think it
would be pretty convenient to have a way to just revert to the working
driver until the new driver is fixed somehow. But I can't see any way
to do that at the moment, short of disabling ACPI completely, which is
definitely too extreme to be considered.

Am I missing something?

Thanks,
-- 
Jean Delvare
SUSE L3 Support

^ permalink raw reply	[flat|nested] 9+ messages in thread

* Re: Forcing non-ACPI watchdog driver
  2020-02-05 15:05 Forcing non-ACPI watchdog driver Jean Delvare
@ 2020-02-05 15:24 ` Mika Westerberg
  2020-02-05 16:30   ` Guenter Roeck
  0 siblings, 1 reply; 9+ messages in thread
From: Mika Westerberg @ 2020-02-05 15:24 UTC (permalink / raw)
  To: Jean Delvare
  Cc: Rafael J. Wysocki, Len Brown, linux-acpi, Wim Van Sebroeck,
	Guenter Roeck, linux-watchdog, Tom Abraham

On Wed, Feb 05, 2020 at 04:05:29PM +0100, Jean Delvare wrote:
> Hi all,

Hi,

> Is there a way to prevent the ACPI WDAT watchdog interface from being
> used and force the use of a native watchdog driver instead?
> 
> I have a customer who reports a regression on kernel upgrade. Old
> kernel (v4.4) uses iTCO_wdt and watchdog works, new kernel (v4.12) uses
> wdat_wdt and watchdog doesn't work (instant reboot when opening the
> device). While I'm going to look for fixes to backport, I think it
> would be pretty convenient to have a way to just revert to the working
> driver until the new driver is fixed somehow. But I can't see any way
> to do that at the moment, short of disabling ACPI completely, which is
> definitely too extreme to be considered.
> 
> Am I missing something?

You should be able to revert to iTCO_wdt by simply disabling
CONFIG_WDAT_WDT from .config. Then acpi_has_watchdog() returns false
which means that iTCO_wdt is used instead.

^ permalink raw reply	[flat|nested] 9+ messages in thread

* Re: Forcing non-ACPI watchdog driver
  2020-02-05 15:24 ` Mika Westerberg
@ 2020-02-05 16:30   ` Guenter Roeck
  2020-02-05 16:38     ` Mika Westerberg
  0 siblings, 1 reply; 9+ messages in thread
From: Guenter Roeck @ 2020-02-05 16:30 UTC (permalink / raw)
  To: Mika Westerberg
  Cc: Jean Delvare, Rafael J. Wysocki, Len Brown, linux-acpi,
	Wim Van Sebroeck, linux-watchdog, Tom Abraham

On Wed, Feb 05, 2020 at 05:24:35PM +0200, Mika Westerberg wrote:
> On Wed, Feb 05, 2020 at 04:05:29PM +0100, Jean Delvare wrote:
> > Hi all,
> 
> Hi,
> 
> > Is there a way to prevent the ACPI WDAT watchdog interface from being
> > used and force the use of a native watchdog driver instead?
> > 
> > I have a customer who reports a regression on kernel upgrade. Old
> > kernel (v4.4) uses iTCO_wdt and watchdog works, new kernel (v4.12) uses
> > wdat_wdt and watchdog doesn't work (instant reboot when opening the
> > device). While I'm going to look for fixes to backport, I think it
> > would be pretty convenient to have a way to just revert to the working
> > driver until the new driver is fixed somehow. But I can't see any way
> > to do that at the moment, short of disabling ACPI completely, which is
> > definitely too extreme to be considered.
> > 
> > Am I missing something?
> 
> You should be able to revert to iTCO_wdt by simply disabling
> CONFIG_WDAT_WDT from .config. Then acpi_has_watchdog() returns false
> which means that iTCO_wdt is used instead.

That may not be possible in a generic distribution.

Guenter

^ permalink raw reply	[flat|nested] 9+ messages in thread

* Re: Forcing non-ACPI watchdog driver
  2020-02-05 16:30   ` Guenter Roeck
@ 2020-02-05 16:38     ` Mika Westerberg
  2020-02-06 14:45       ` Jean Delvare
  0 siblings, 1 reply; 9+ messages in thread
From: Mika Westerberg @ 2020-02-05 16:38 UTC (permalink / raw)
  To: Guenter Roeck
  Cc: Jean Delvare, Rafael J. Wysocki, Len Brown, linux-acpi,
	Wim Van Sebroeck, linux-watchdog, Tom Abraham

On Wed, Feb 05, 2020 at 08:30:48AM -0800, Guenter Roeck wrote:
> On Wed, Feb 05, 2020 at 05:24:35PM +0200, Mika Westerberg wrote:
> > On Wed, Feb 05, 2020 at 04:05:29PM +0100, Jean Delvare wrote:
> > > Hi all,
> > 
> > Hi,
> > 
> > > Is there a way to prevent the ACPI WDAT watchdog interface from being
> > > used and force the use of a native watchdog driver instead?
> > > 
> > > I have a customer who reports a regression on kernel upgrade. Old
> > > kernel (v4.4) uses iTCO_wdt and watchdog works, new kernel (v4.12) uses
> > > wdat_wdt and watchdog doesn't work (instant reboot when opening the
> > > device). While I'm going to look for fixes to backport, I think it
> > > would be pretty convenient to have a way to just revert to the working
> > > driver until the new driver is fixed somehow. But I can't see any way
> > > to do that at the moment, short of disabling ACPI completely, which is
> > > definitely too extreme to be considered.
> > > 
> > > Am I missing something?
> > 
> > You should be able to revert to iTCO_wdt by simply disabling
> > CONFIG_WDAT_WDT from .config. Then acpi_has_watchdog() returns false
> > which means that iTCO_wdt is used instead.
> 
> That may not be possible in a generic distribution.

Right, they would need to build their own kernel. Currently there is no
way to do that without changing .config.

^ permalink raw reply	[flat|nested] 9+ messages in thread

* Re: Forcing non-ACPI watchdog driver
  2020-02-05 16:38     ` Mika Westerberg
@ 2020-02-06 14:45       ` Jean Delvare
  2020-02-06 14:56         ` Mika Westerberg
  0 siblings, 1 reply; 9+ messages in thread
From: Jean Delvare @ 2020-02-06 14:45 UTC (permalink / raw)
  To: Mika Westerberg
  Cc: Guenter Roeck, Rafael J. Wysocki, Len Brown, linux-acpi,
	Wim Van Sebroeck, linux-watchdog, Tom Abraham

Hi Mika,

On Wed, 5 Feb 2020 18:38:31 +0200, Mika Westerberg wrote:
> On Wed, Feb 05, 2020 at 08:30:48AM -0800, Guenter Roeck wrote:
> > On Wed, Feb 05, 2020 at 05:24:35PM +0200, Mika Westerberg wrote:  
> > > You should be able to revert to iTCO_wdt by simply disabling
> > > CONFIG_WDAT_WDT from .config. Then acpi_has_watchdog() returns false
> > > which means that iTCO_wdt is used instead.  
> > 
> > That may not be possible in a generic distribution.  
> 
> Right, they would need to build their own kernel. Currently there is no
> way to do that without changing .config.

OK, that's pretty much what I was compl^Wworried about ;-) Would you
consider applying something like the following patch?

From: Jean Delvare <jdelvare@suse.de>
Subject: ACPI / watchdog: Allow disabling WDAT at boot

In case the WDAT interface is broken, give the user the option to
ignore it to let a native driver bind to the watchdog device instead.

Signed-off-by: Jean Delvare <jdelvare@suse.de>
Cc: Guenter Roeck <linux@roeck-us.net>
Cc: Mika Westerberg <mika.westerberg@linux.intel.com>
Cc: Rafael J. Wysocki <rafael.j.wysocki@intel.com>
---
 Documentation/admin-guide/kernel-parameters.txt |    4 ++++
 drivers/acpi/acpi_watchdog.c                    |   12 +++++++++++-
 2 files changed, 15 insertions(+), 1 deletion(-)

--- linux-5.4.orig/drivers/acpi/acpi_watchdog.c	2020-02-06 15:20:27.187333079 +0100
+++ linux-5.4/drivers/acpi/acpi_watchdog.c	2020-02-06 15:30:08.707408406 +0100
@@ -55,12 +55,14 @@ static bool acpi_watchdog_uses_rtc(const
 }
 #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;
--- linux-5.4.orig/Documentation/admin-guide/kernel-parameters.txt	2020-02-06 15:20:27.187333079 +0100
+++ linux-5.4/Documentation/admin-guide/kernel-parameters.txt	2020-02-06 15:31:16.614155680 +0100
@@ -136,6 +136,10 @@
 			dynamic table installation which will install SSDT
 			tables to /sys/firmware/acpi/tables/dynamic.
 
+	acpi_no_watchdog	[HW,ACPI,WDT]
+			Ignore the ACPI-based watchdog interface (WDAT) and let
+			a native driver control the watchdog device instead.
+
 	acpi_rsdp=	[ACPI,EFI,KEXEC]
 			Pass the RSDP address to the kernel, mostly used
 			on machines running EFI runtime service to boot the

Thanks,
-- 
Jean Delvare
SUSE L3 Support

^ permalink raw reply	[flat|nested] 9+ messages in thread

* Re: Forcing non-ACPI watchdog driver
  2020-02-06 14:45       ` Jean Delvare
@ 2020-02-06 14:56         ` Mika Westerberg
  2020-02-06 15:50           ` Rafael J. Wysocki
  0 siblings, 1 reply; 9+ messages in thread
From: Mika Westerberg @ 2020-02-06 14:56 UTC (permalink / raw)
  To: Jean Delvare
  Cc: Guenter Roeck, Rafael J. Wysocki, Len Brown, linux-acpi,
	Wim Van Sebroeck, linux-watchdog, Tom Abraham

On Thu, Feb 06, 2020 at 03:45:32PM +0100, Jean Delvare wrote:
> Hi Mika,
> 
> On Wed, 5 Feb 2020 18:38:31 +0200, Mika Westerberg wrote:
> > On Wed, Feb 05, 2020 at 08:30:48AM -0800, Guenter Roeck wrote:
> > > On Wed, Feb 05, 2020 at 05:24:35PM +0200, Mika Westerberg wrote:  
> > > > You should be able to revert to iTCO_wdt by simply disabling
> > > > CONFIG_WDAT_WDT from .config. Then acpi_has_watchdog() returns false
> > > > which means that iTCO_wdt is used instead.  
> > > 
> > > That may not be possible in a generic distribution.  
> > 
> > Right, they would need to build their own kernel. Currently there is no
> > way to do that without changing .config.
> 
> OK, that's pretty much what I was compl^Wworried about ;-) Would you
> consider applying something like the following patch?

Yes, I think the patch makes sense.

Rafael, I guess you will take this since it is touching ACPI?

> From: Jean Delvare <jdelvare@suse.de>
> Subject: ACPI / watchdog: Allow disabling WDAT at boot
> 
> In case the WDAT interface is broken, give the user the option to
> ignore it to let a native driver bind to the watchdog device instead.
> 
> Signed-off-by: Jean Delvare <jdelvare@suse.de>
> Cc: Guenter Roeck <linux@roeck-us.net>
> Cc: Mika Westerberg <mika.westerberg@linux.intel.com>

Acked-by: Mika Westerberg <mika.westerberg@linux.intel.com>

> Cc: Rafael J. Wysocki <rafael.j.wysocki@intel.com>
> ---
>  Documentation/admin-guide/kernel-parameters.txt |    4 ++++
>  drivers/acpi/acpi_watchdog.c                    |   12 +++++++++++-
>  2 files changed, 15 insertions(+), 1 deletion(-)
> 
> --- linux-5.4.orig/drivers/acpi/acpi_watchdog.c	2020-02-06 15:20:27.187333079 +0100
> +++ linux-5.4/drivers/acpi/acpi_watchdog.c	2020-02-06 15:30:08.707408406 +0100
> @@ -55,12 +55,14 @@ static bool acpi_watchdog_uses_rtc(const
>  }
>  #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;
> --- linux-5.4.orig/Documentation/admin-guide/kernel-parameters.txt	2020-02-06 15:20:27.187333079 +0100
> +++ linux-5.4/Documentation/admin-guide/kernel-parameters.txt	2020-02-06 15:31:16.614155680 +0100
> @@ -136,6 +136,10 @@
>  			dynamic table installation which will install SSDT
>  			tables to /sys/firmware/acpi/tables/dynamic.
>  
> +	acpi_no_watchdog	[HW,ACPI,WDT]
> +			Ignore the ACPI-based watchdog interface (WDAT) and let
> +			a native driver control the watchdog device instead.
> +
>  	acpi_rsdp=	[ACPI,EFI,KEXEC]
>  			Pass the RSDP address to the kernel, mostly used
>  			on machines running EFI runtime service to boot the
> 
> Thanks,
> -- 
> Jean Delvare
> SUSE L3 Support

^ permalink raw reply	[flat|nested] 9+ messages in thread

* Re: Forcing non-ACPI watchdog driver
  2020-02-06 14:56         ` Mika Westerberg
@ 2020-02-06 15:50           ` Rafael J. Wysocki
  2020-02-06 16:00             ` Rafael J. Wysocki
  0 siblings, 1 reply; 9+ messages in thread
From: Rafael J. Wysocki @ 2020-02-06 15:50 UTC (permalink / raw)
  To: Mika Westerberg
  Cc: Jean Delvare, Guenter Roeck, Rafael J. Wysocki, Len Brown,
	ACPI Devel Maling List, Wim Van Sebroeck, linux-watchdog,
	Tom Abraham

On Thu, Feb 6, 2020 at 3:56 PM Mika Westerberg
<mika.westerberg@linux.intel.com> wrote:
>
> On Thu, Feb 06, 2020 at 03:45:32PM +0100, Jean Delvare wrote:
> > Hi Mika,
> >
> > On Wed, 5 Feb 2020 18:38:31 +0200, Mika Westerberg wrote:
> > > On Wed, Feb 05, 2020 at 08:30:48AM -0800, Guenter Roeck wrote:
> > > > On Wed, Feb 05, 2020 at 05:24:35PM +0200, Mika Westerberg wrote:
> > > > > You should be able to revert to iTCO_wdt by simply disabling
> > > > > CONFIG_WDAT_WDT from .config. Then acpi_has_watchdog() returns false
> > > > > which means that iTCO_wdt is used instead.
> > > >
> > > > That may not be possible in a generic distribution.
> > >
> > > Right, they would need to build their own kernel. Currently there is no
> > > way to do that without changing .config.
> >
> > OK, that's pretty much what I was compl^Wworried about ;-) Would you
> > consider applying something like the following patch?
>
> Yes, I think the patch makes sense.
>
> Rafael, I guess you will take this since it is touching ACPI?

Yes, I will.

> > From: Jean Delvare <jdelvare@suse.de>
> > Subject: ACPI / watchdog: Allow disabling WDAT at boot
> >
> > In case the WDAT interface is broken, give the user the option to
> > ignore it to let a native driver bind to the watchdog device instead.
> >
> > Signed-off-by: Jean Delvare <jdelvare@suse.de>
> > Cc: Guenter Roeck <linux@roeck-us.net>
> > Cc: Mika Westerberg <mika.westerberg@linux.intel.com>
>
> Acked-by: Mika Westerberg <mika.westerberg@linux.intel.com>

Thanks!

^ permalink raw reply	[flat|nested] 9+ messages in thread

* Re: Forcing non-ACPI watchdog driver
  2020-02-06 15:50           ` Rafael J. Wysocki
@ 2020-02-06 16:00             ` Rafael J. Wysocki
  2020-02-06 19:14               ` Mika Westerberg
  0 siblings, 1 reply; 9+ messages in thread
From: Rafael J. Wysocki @ 2020-02-06 16:00 UTC (permalink / raw)
  To: Mika Westerberg, Jean Delvare
  Cc: Guenter Roeck, Rafael J. Wysocki, Len Brown,
	ACPI Devel Maling List, Wim Van Sebroeck, linux-watchdog,
	Tom Abraham

On Thu, Feb 6, 2020 at 4:50 PM Rafael J. Wysocki <rafael@kernel.org> wrote:
>
> On Thu, Feb 6, 2020 at 3:56 PM Mika Westerberg
> <mika.westerberg@linux.intel.com> wrote:
> >
> > On Thu, Feb 06, 2020 at 03:45:32PM +0100, Jean Delvare wrote:
> > > Hi Mika,
> > >
> > > On Wed, 5 Feb 2020 18:38:31 +0200, Mika Westerberg wrote:
> > > > On Wed, Feb 05, 2020 at 08:30:48AM -0800, Guenter Roeck wrote:
> > > > > On Wed, Feb 05, 2020 at 05:24:35PM +0200, Mika Westerberg wrote:
> > > > > > You should be able to revert to iTCO_wdt by simply disabling
> > > > > > CONFIG_WDAT_WDT from .config. Then acpi_has_watchdog() returns false
> > > > > > which means that iTCO_wdt is used instead.
> > > > >
> > > > > That may not be possible in a generic distribution.
> > > >
> > > > Right, they would need to build their own kernel. Currently there is no
> > > > way to do that without changing .config.
> > >
> > > OK, that's pretty much what I was compl^Wworried about ;-) Would you
> > > consider applying something like the following patch?
> >
> > Yes, I think the patch makes sense.
> >
> > Rafael, I guess you will take this since it is touching ACPI?
>
> Yes, I will.

So queued up now (with very minor changes in the subject and
changelog), but I will rebase it on top of -rc1 when it is out.

^ permalink raw reply	[flat|nested] 9+ messages in thread

* Re: Forcing non-ACPI watchdog driver
  2020-02-06 16:00             ` Rafael J. Wysocki
@ 2020-02-06 19:14               ` Mika Westerberg
  0 siblings, 0 replies; 9+ messages in thread
From: Mika Westerberg @ 2020-02-06 19:14 UTC (permalink / raw)
  To: Rafael J. Wysocki
  Cc: Jean Delvare, Guenter Roeck, Rafael J. Wysocki, Len Brown,
	ACPI Devel Maling List, Wim Van Sebroeck, linux-watchdog,
	Tom Abraham

On Thu, Feb 06, 2020 at 05:00:43PM +0100, Rafael J. Wysocki wrote:
> So queued up now (with very minor changes in the subject and
> changelog), but I will rebase it on top of -rc1 when it is out.

Thanks!

^ permalink raw reply	[flat|nested] 9+ messages in thread

end of thread, back to index

Thread overview: 9+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2020-02-05 15:05 Forcing non-ACPI watchdog driver Jean Delvare
2020-02-05 15:24 ` Mika Westerberg
2020-02-05 16:30   ` Guenter Roeck
2020-02-05 16:38     ` Mika Westerberg
2020-02-06 14:45       ` Jean Delvare
2020-02-06 14:56         ` Mika Westerberg
2020-02-06 15:50           ` Rafael J. Wysocki
2020-02-06 16:00             ` Rafael J. Wysocki
2020-02-06 19:14               ` Mika Westerberg

Linux-ACPI Archive on lore.kernel.org

Archives are clonable:
	git clone --mirror https://lore.kernel.org/linux-acpi/0 linux-acpi/git/0.git

	# If you have public-inbox 1.1+ installed, you may
	# initialize and index your mirror using the following commands:
	public-inbox-init -V2 linux-acpi linux-acpi/ https://lore.kernel.org/linux-acpi \
		linux-acpi@vger.kernel.org
	public-inbox-index linux-acpi

Example config snippet for mirrors

Newsgroup available over NNTP:
	nntp://nntp.lore.kernel.org/org.kernel.vger.linux-acpi


AGPL code for this site: git clone https://public-inbox.org/public-inbox.git