diff options
| author | Sascha Silbe <silbe@linux.vnet.ibm.com> | 2016-01-29 15:51:45 +0100 |
|---|---|---|
| committer | Cornelia Huck <cornelia.huck@de.ibm.com> | 2016-03-01 12:15:28 +0100 |
| commit | fe345a3d5d7ed4bc2965c65542832b1fa785ae9d (patch) | |
| tree | 268159547f42960943a4fcc7affa0433f434ab90 /scripts/qapi-visit.py | |
| parent | 8777f6abdbf7017b7aea38dcee2f389f61925ed8 (diff) | |
| download | focaccia-qemu-fe345a3d5d7ed4bc2965c65542832b1fa785ae9d.tar.gz focaccia-qemu-fe345a3d5d7ed4bc2965c65542832b1fa785ae9d.zip | |
watchdog/diag288: avoid race condition on expired watchdog
When configured to inject an NMI, watchdog_perform_action() may cause the BQL to be temporarily relinquished (inject_nmi() → ... → s390_nmi() → s390_cpu_restart() → run_on_cpu()). When the guest issues diag 288 again in response to the NMI, the diag 288 operation will race against wdt_diag288_reset(). Depending on scheduler behaviour, wdt_diag288_reset() may be run after the guest issued a diag 288 Init. As a result, we will cancel the timer the guest just set up. The effect observed by the guest is that a second expiry does not trigger the watchdog action and diag 288 Change operations fail. Fix this by resetting the timer _before_ invoking the action. Signed-off-by: Sascha Silbe <silbe@linux.vnet.ibm.com> Acked-by: David Hildenbrand <dahi@linux.vnet.ibm.com> Signed-off-by: Cornelia Huck <cornelia.huck@de.ibm.com>
Diffstat (limited to 'scripts/qapi-visit.py')
0 files changed, 0 insertions, 0 deletions