aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/watchdog
diff options
context:
space:
mode:
authorXu Wang <gesaint@linux.vnet.ibm.com>2015-03-06 03:26:30 -0500
committerMartin Schwidefsky <schwidefsky@de.ibm.com>2015-03-25 06:49:42 -0400
commitb2527d2009903a06b0076bb89166c72a0f17823b (patch)
treead0359db4ec691b3d237cdb47b65b84d330e90b9 /drivers/watchdog
parent9ec6cb80c8752db70174d3f67d33243fbab05014 (diff)
s390/watchdog: support for KVM hypervisors and delete pr_info messages
This patch extends the diag288 watchdog driver to be able to deal with KVM hypervisors. Only z/VM needs special handling, we can use the same interface as on LPAR. Remove all pr_info output to avoid misconception. Because there is no value in these messages and only the pr_err messages make sense. Signed-off-by: Xu Wang <gesaint@linux.vnet.ibm.com> Reviewed-by: David Hildenbrand <dahi@linux.vnet.ibm.com> Acked-by: Heiko Carstens <heiko.carstens@de.ibm.com> Signed-off-by: Martin Schwidefsky <schwidefsky@de.ibm.com>
Diffstat (limited to 'drivers/watchdog')
-rw-r--r--drivers/watchdog/diag288_wdt.c18
1 files changed, 4 insertions, 14 deletions
diff --git a/drivers/watchdog/diag288_wdt.c b/drivers/watchdog/diag288_wdt.c
index 480cedd41d09..a9a5210143ae 100644
--- a/drivers/watchdog/diag288_wdt.c
+++ b/drivers/watchdog/diag288_wdt.c
@@ -125,9 +125,7 @@ static int wdt_start(struct watchdog_device *dev)
125 ret = __diag288_vm(func, dev->timeout, ebc_cmd, len); 125 ret = __diag288_vm(func, dev->timeout, ebc_cmd, len);
126 WARN_ON(ret != 0); 126 WARN_ON(ret != 0);
127 kfree(ebc_cmd); 127 kfree(ebc_cmd);
128 } 128 } else {
129
130 if (MACHINE_IS_LPAR) {
131 ret = __diag288_lpar(WDT_FUNC_INIT, 129 ret = __diag288_lpar(WDT_FUNC_INIT,
132 dev->timeout, LPARWDT_RESTART); 130 dev->timeout, LPARWDT_RESTART);
133 } 131 }
@@ -136,7 +134,6 @@ static int wdt_start(struct watchdog_device *dev)
136 pr_err("The watchdog cannot be activated\n"); 134 pr_err("The watchdog cannot be activated\n");
137 return ret; 135 return ret;
138 } 136 }
139 pr_info("The watchdog was activated\n");
140 return 0; 137 return 0;
141} 138}
142 139
@@ -145,7 +142,6 @@ static int wdt_stop(struct watchdog_device *dev)
145 int ret; 142 int ret;
146 143
147 ret = __diag288(WDT_FUNC_CANCEL, 0, 0, 0); 144 ret = __diag288(WDT_FUNC_CANCEL, 0, 0, 0);
148 pr_info("The watchdog was deactivated\n");
149 return ret; 145 return ret;
150} 146}
151 147
@@ -177,10 +173,9 @@ static int wdt_ping(struct watchdog_device *dev)
177 ret = __diag288_vm(func, dev->timeout, ebc_cmd, len); 173 ret = __diag288_vm(func, dev->timeout, ebc_cmd, len);
178 WARN_ON(ret != 0); 174 WARN_ON(ret != 0);
179 kfree(ebc_cmd); 175 kfree(ebc_cmd);
180 } 176 } else {
181
182 if (MACHINE_IS_LPAR)
183 ret = __diag288_lpar(WDT_FUNC_CHANGE, dev->timeout, 0); 177 ret = __diag288_lpar(WDT_FUNC_CHANGE, dev->timeout, 0);
178 }
184 179
185 if (ret) 180 if (ret)
186 pr_err("The watchdog timer cannot be started or reset\n"); 181 pr_err("The watchdog timer cannot be started or reset\n");
@@ -273,21 +268,16 @@ static int __init diag288_init(void)
273 watchdog_set_nowayout(&wdt_dev, nowayout_info); 268 watchdog_set_nowayout(&wdt_dev, nowayout_info);
274 269
275 if (MACHINE_IS_VM) { 270 if (MACHINE_IS_VM) {
276 pr_info("The watchdog device driver detected a z/VM environment\n");
277 if (__diag288_vm(WDT_FUNC_INIT, 15, 271 if (__diag288_vm(WDT_FUNC_INIT, 15,
278 ebc_begin, sizeof(ebc_begin)) != 0) { 272 ebc_begin, sizeof(ebc_begin)) != 0) {
279 pr_err("The watchdog cannot be initialized\n"); 273 pr_err("The watchdog cannot be initialized\n");
280 return -EINVAL; 274 return -EINVAL;
281 } 275 }
282 } else if (MACHINE_IS_LPAR) { 276 } else {
283 pr_info("The watchdog device driver detected an LPAR environment\n");
284 if (__diag288_lpar(WDT_FUNC_INIT, 30, LPARWDT_RESTART)) { 277 if (__diag288_lpar(WDT_FUNC_INIT, 30, LPARWDT_RESTART)) {
285 pr_err("The watchdog cannot be initialized\n"); 278 pr_err("The watchdog cannot be initialized\n");
286 return -EINVAL; 279 return -EINVAL;
287 } 280 }
288 } else {
289 pr_err("Linux runs in an environment that does not support the diag288 watchdog\n");
290 return -ENODEV;
291 } 281 }
292 282
293 if (__diag288_lpar(WDT_FUNC_CANCEL, 0, 0)) { 283 if (__diag288_lpar(WDT_FUNC_CANCEL, 0, 0)) {