SPECS/linux/linux-4.9-watchdog-Disable-watchdog-on-virtual-machines.patch
a217ee0e
 From: Dave Jones <davej@redhat.com>
 Date: Tue, 24 Jun 2014 08:43:34 -0400
 Subject: [PATCH] watchdog: Disable watchdog on virtual machines.
 
 For various reasons, VMs seem to trigger the soft lockup detector a lot,
 in cases where it's just not possible for a lockup to occur.
 (Example: https://bugzilla.redhat.com/show_bug.cgi?id=971139)
 
 In some cases it seems that the host just never scheduled the app running
 the VM for a very long time (Could be the host was under heavy load).
 
 Just disable the detector on VMs.
 
 Bugzilla: 971139
 Upstream-status: Fedora mustard for now
 
 Signed-off-by: Dave Jones <davej@redhat.com>
 ---
  kernel/watchdog.c | 29 +++++++++++++++++++++++++++++
  1 file changed, 29 insertions(+)
 
 diff --git a/kernel/watchdog.c b/kernel/watchdog.c
 index a6ffa43f2993..b378b762844a 100644
 --- a/kernel/watchdog.c
 +++ b/kernel/watchdog.c
fc081194
 @@ -21,6 +21,7 @@
a217ee0e
  #include <linux/sched/rt.h>
  #include <linux/tick.h>
fc081194
  #include <linux/workqueue.h>
a217ee0e
 +#include <linux/dmi.h>
  
  #include <asm/irq_regs.h>
  #include <linux/kvm_para.h>
b9ea416b
 @@ -185,6 +186,32 @@ static int __init softlockup_all_cpu_backtrace_setup(char *str)
a217ee0e
  __setup("hardlockup_all_cpu_backtrace=", hardlockup_all_cpu_backtrace_setup);
  #endif
  
 +static int disable_watchdog(const struct dmi_system_id *d)
 +{
 +	printk(KERN_INFO "watchdog: disabled (inside virtual machine)\n");
 +	watchdog_user_enabled = 0;
 +	return 0;
 +}
 +
 +static const struct dmi_system_id watchdog_virt_dmi_table[] = {
 +	{
 +		.callback = disable_watchdog,
 +		.ident = "VMware",
 +		.matches = {
 +			DMI_MATCH(DMI_SYS_VENDOR, "VMware, Inc."),
 +		},
 +	},
 +	{
 +		.callback = disable_watchdog,
 +		.ident = "Bochs",
 +		.matches = {
 +			DMI_MATCH(DMI_SYS_VENDOR, "Bochs"),
 +		},
 +	},
 +	{}
 +};
 +
 +
  /*
   * Hard-lockup warnings should be triggered after just a few seconds. Soft-
   * lockups can have false positives under extreme conditions. So we generally
b9ea416b
 @@ -1037,6 +1064,8 @@ int proc_watchdog_cpumask(struct ctl_table *table, int write,
a217ee0e
  
  void __init lockup_detector_init(void)
  {
 +	dmi_check_system(watchdog_virt_dmi_table);
 +
  	set_sample_period();
  
  #ifdef CONFIG_NO_HZ_FULL