diff --git a/bootdevice.c b/bootdevice.c index f5399df4b7..7167fbcfe6 100644 --- a/bootdevice.c +++ b/bootdevice.c @@ -51,6 +51,26 @@ void check_boot_index(int32_t bootindex, Error **errp) } } +void del_boot_device_path(DeviceState *dev, const char *suffix) +{ + FWBootEntry *i; + + if (dev == NULL) { + return; + } + + QTAILQ_FOREACH(i, &fw_boot_order, link) { + if ((!suffix || !g_strcmp0(i->suffix, suffix)) && + i->dev == dev) { + QTAILQ_REMOVE(&fw_boot_order, i, link); + g_free(i->suffix); + g_free(i); + + break; + } + } +} + void add_boot_device_path(int32_t bootindex, DeviceState *dev, const char *suffix) { diff --git a/include/sysemu/sysemu.h b/include/sysemu/sysemu.h index 72463de56c..b3489be7ca 100644 --- a/include/sysemu/sysemu.h +++ b/include/sysemu/sysemu.h @@ -214,6 +214,7 @@ char *get_boot_devices_list(size_t *size, bool ignore_suffixes); DeviceState *get_boot_device(uint32_t position); void check_boot_index(int32_t bootindex, Error **errp); +void del_boot_device_path(DeviceState *dev, const char *suffix); QemuOpts *qemu_get_machine_opts(void);