watchdog: remove -watchdog option

This was deprecated in 6.2 and is ready to go.  It removes quite a bit
of code that handled the registration of watchdog models.

Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
This commit is contained in:
Paolo Bonzini 2022-09-10 13:44:47 +02:00
parent 7089977a24
commit 5433af7697
12 changed files with 7 additions and 143 deletions

View File

@ -81,11 +81,6 @@ the process listing. This is replaced by the new ``password-secret``
option which lets the password be securely provided on the command
line using a ``secret`` object instance.
``-watchdog`` (since 6.2)
'''''''''''''''''''''''''
Use ``-device`` instead.
``-smp`` ("parameter=0" SMP configurations) (since 6.2)
'''''''''''''''''''''''''''''''''''''''''''''''''''''''

View File

@ -403,6 +403,11 @@ Sound card devices should be created using ``-device`` or ``-audio``.
The exception is ``pcspk`` which can be activated using ``-machine
pcspk-audiodev=<name>``.
``-watchdog`` (since 7.2)
'''''''''''''''''''''''''
Use ``-device`` instead.
QEMU Machine Protocol (QMP) commands
------------------------------------

View File

@ -24,11 +24,6 @@
#include "qemu/log.h"
#include "qemu/module.h"
static WatchdogTimerModel model = {
.wdt_name = TYPE_WDT_SBSA,
.wdt_description = "SBSA-compliant generic watchdog device",
};
static const VMStateDescription vmstate_sbsa_gwdt = {
.name = "sbsa-gwdt",
.version_id = 1,
@ -287,7 +282,6 @@ static const TypeInfo wdt_sbsa_gwdt_info = {
static void wdt_sbsa_gwdt_register_types(void)
{
watchdog_add_model(&model);
type_register_static(&wdt_sbsa_gwdt_info);
}

View File

@ -32,49 +32,6 @@
#include "qemu/help_option.h"
static WatchdogAction watchdog_action = WATCHDOG_ACTION_RESET;
static QLIST_HEAD(, WatchdogTimerModel) watchdog_list;
void watchdog_add_model(WatchdogTimerModel *model)
{
QLIST_INSERT_HEAD(&watchdog_list, model, entry);
}
/* Returns:
* 0 = continue
* 1 = exit program with error
* 2 = exit program without error
*/
int select_watchdog(const char *p)
{
WatchdogTimerModel *model;
QemuOpts *opts;
/* -watchdog ? lists available devices and exits cleanly. */
if (is_help_option(p)) {
QLIST_FOREACH(model, &watchdog_list, entry) {
fprintf(stderr, "\t%s\t%s\n",
model->wdt_name, model->wdt_description);
}
return 2;
}
QLIST_FOREACH(model, &watchdog_list, entry) {
if (strcasecmp(model->wdt_name, p) == 0) {
/* add the device */
opts = qemu_opts_create(qemu_find_opts("device"), NULL, 0,
&error_abort);
qemu_opt_set(opts, "driver", p, &error_abort);
return 0;
}
}
fprintf(stderr, "Unknown -watchdog device. Supported devices are:\n");
QLIST_FOREACH(model, &watchdog_list, entry) {
fprintf(stderr, "\t%s\t%s\n",
model->wdt_name, model->wdt_description);
}
return 1;
}
WatchdogAction get_watchdog_action(void)
{

View File

@ -202,11 +202,6 @@ static void aspeed_wdt_write(void *opaque, hwaddr offset, uint64_t data,
return;
}
static WatchdogTimerModel model = {
.wdt_name = TYPE_ASPEED_WDT,
.wdt_description = "Aspeed watchdog device",
};
static const VMStateDescription vmstate_aspeed_wdt = {
.name = "vmstate_aspeed_wdt",
.version_id = 0,
@ -416,7 +411,6 @@ static const TypeInfo aspeed_1030_wdt_info = {
static void wdt_aspeed_register_types(void)
{
watchdog_add_model(&model);
type_register_static(&aspeed_wdt_info);
type_register_static(&aspeed_2400_wdt_info);
type_register_static(&aspeed_2500_wdt_info);

View File

@ -19,11 +19,6 @@
#include "migration/vmstate.h"
#include "qemu/log.h"
static WatchdogTimerModel model = {
.wdt_name = TYPE_WDT_DIAG288,
.wdt_description = "diag288 device for s390x platform",
};
static const VMStateDescription vmstate_diag288 = {
.name = "vmstate_diag288",
.version_id = 0,
@ -138,7 +133,6 @@ static const TypeInfo wdt_diag288_info = {
static void wdt_diag288_register_types(void)
{
watchdog_add_model(&model);
type_register_static(&wdt_diag288_info);
}

View File

@ -457,11 +457,6 @@ static void i6300esb_exit(PCIDevice *dev)
timer_free(d->timer);
}
static WatchdogTimerModel model = {
.wdt_name = "i6300esb",
.wdt_description = "Intel 6300ESB",
};
static void i6300esb_class_init(ObjectClass *klass, void *data)
{
DeviceClass *dc = DEVICE_CLASS(klass);
@ -493,7 +488,6 @@ static const TypeInfo i6300esb_info = {
static void i6300esb_register_types(void)
{
watchdog_add_model(&model);
type_register_static(&i6300esb_info);
}

View File

@ -128,11 +128,6 @@ static void wdt_ib700_reset(DeviceState *dev)
timer_del(s->timer);
}
static WatchdogTimerModel model = {
.wdt_name = "ib700",
.wdt_description = "iBASE 700",
};
static void wdt_ib700_class_init(ObjectClass *klass, void *data)
{
DeviceClass *dc = DEVICE_CLASS(klass);
@ -153,7 +148,6 @@ static const TypeInfo wdt_ib700_info = {
static void wdt_ib700_register_types(void)
{
watchdog_add_model(&model);
type_register_static(&wdt_ib700_info);
}

View File

@ -291,14 +291,8 @@ static const TypeInfo imx2_wdt_info = {
.class_init = imx2_wdt_class_init,
};
static WatchdogTimerModel model = {
.wdt_name = "imx2-watchdog",
.wdt_description = "i.MX2 Watchdog",
};
static void imx2_wdt_register_type(void)
{
watchdog_add_model(&model);
type_register_static(&imx2_wdt_info);
}
type_init(imx2_wdt_register_type)

View File

@ -25,20 +25,8 @@
#include "qemu/queue.h"
#include "qapi/qapi-types-run-state.h"
struct WatchdogTimerModel {
QLIST_ENTRY(WatchdogTimerModel) entry;
/* Short name of the device - used to select it on the command line. */
const char *wdt_name;
/* Longer description (eg. manufacturer and full model number). */
const char *wdt_description;
};
typedef struct WatchdogTimerModel WatchdogTimerModel;
/* in hw/watchdog.c */
int select_watchdog(const char *p);
WatchdogAction get_watchdog_action(void);
void watchdog_add_model(WatchdogTimerModel *model);
void watchdog_perform_action(void);
#endif /* QEMU_WATCHDOG_H */

View File

@ -4330,7 +4330,7 @@ SRST
``-action panic=none``
``-action reboot=shutdown,shutdown=pause``
``-watchdog i6300esb -action watchdog=pause``
``-device i6300esb -action watchdog=pause``
ERST
@ -4448,35 +4448,6 @@ SRST
specifies the snapshot name used to load the initial VM state.
ERST
DEF("watchdog", HAS_ARG, QEMU_OPTION_watchdog, \
"-watchdog model\n" \
" enable virtual hardware watchdog [default=none]\n",
QEMU_ARCH_ALL)
SRST
``-watchdog model``
Create a virtual hardware watchdog device. Once enabled (by a guest
action), the watchdog must be periodically polled by an agent inside
the guest or else the guest will be restarted. Choose a model for
which your guest has drivers.
The model is the model of hardware watchdog to emulate. Use
``-watchdog help`` to list available hardware models. Only one
watchdog can be enabled for a guest.
The following models may be available:
``ib700``
iBASE 700 is a very simple ISA watchdog with a single timer.
``i6300esb``
Intel 6300ESB I/O controller hub is a much more featureful
PCI-based dual-timer watchdog.
``diag288``
A virtual watchdog for s390x backed by the diagnose 288
hypercall (currently KVM only).
ERST
DEF("watchdog-action", HAS_ARG, QEMU_OPTION_watchdog_action, \
"-watchdog-action reset|shutdown|poweroff|inject-nmi|pause|debug|none\n" \
" action when watchdog fires [default=reset]\n",
@ -4498,7 +4469,7 @@ SRST
Examples:
``-watchdog i6300esb -watchdog-action pause``; \ ``-watchdog ib700``
``-device i6300esb -watchdog-action pause``
ERST

View File

@ -53,7 +53,6 @@
#include "hw/isa/isa.h"
#include "hw/scsi/scsi.h"
#include "hw/display/vga.h"
#include "sysemu/watchdog.h"
#include "hw/firmware/smbios.h"
#include "hw/acpi/acpi.h"
#include "hw/xen/xen.h"
@ -181,7 +180,6 @@ static Chardev **serial_hds;
static const char *log_mask;
static const char *log_file;
static bool list_data_dirs;
static const char *watchdog;
static const char *qtest_chrdev;
static const char *qtest_log;
@ -2329,12 +2327,6 @@ static void qemu_process_sugar_options(void)
}
object_register_sugar_prop("memory-backend", "prealloc", "on", false);
}
if (watchdog) {
int i = select_watchdog(watchdog);
if (i > 0)
exit (i == 1 ? 1 : 0);
}
}
/* -action processing */
@ -3107,14 +3099,6 @@ void qemu_init(int argc, char **argv, char **envp)
default_monitor = 0;
}
break;
case QEMU_OPTION_watchdog:
if (watchdog) {
error_report("only one watchdog option may be given");
exit(1);
}
warn_report("-watchdog is deprecated; use -device instead.");
watchdog = optarg;
break;
case QEMU_OPTION_action:
olist = qemu_find_opts("action");
if (!qemu_opts_parse_noisily(olist, optarg, false)) {