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:
parent
7089977a24
commit
5433af7697
@ -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)
|
||||
'''''''''''''''''''''''''''''''''''''''''''''''''''''''
|
||||
|
||||
|
@ -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
|
||||
------------------------------------
|
||||
|
@ -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);
|
||||
}
|
||||
|
||||
|
@ -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)
|
||||
{
|
||||
|
@ -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);
|
||||
|
@ -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);
|
||||
}
|
||||
|
||||
|
@ -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);
|
||||
}
|
||||
|
||||
|
@ -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);
|
||||
}
|
||||
|
||||
|
@ -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)
|
||||
|
@ -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 */
|
||||
|
@ -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
|
||||
|
||||
|
16
softmmu/vl.c
16
softmmu/vl.c
@ -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)) {
|
||||
|
Loading…
Reference in New Issue
Block a user