From d2b186f96d19c1f8a6b7e528ff32c24096d5b204 Mon Sep 17 00:00:00 2001 From: Gonglei Date: Tue, 7 Oct 2014 16:00:35 +0800 Subject: [PATCH] ide: add calling add_boot_device_patch in bootindex setter function On this way, we can assure the new bootindex take effect during vm rebooting. Meanwhile set the initial value of bootindex to -1. Because ide devcies's unit property maybe do not initialize when set_bootindex function is called, so that we don't know its suffix. So we have to save the call add_boot_device_path() on ide realize/init function. When we want to change bootindex during vm rebooting, we can call it in setter function. Signed-off-by: Gonglei Reviewed-by: Gerd Hoffmann Signed-off-by: Gerd Hoffmann --- hw/ide/qdev.c | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/hw/ide/qdev.c b/hw/ide/qdev.c index 7e6902073e..9814ef0d24 100644 --- a/hw/ide/qdev.c +++ b/hw/ide/qdev.c @@ -219,6 +219,10 @@ static void ide_dev_set_bootindex(Object *obj, Visitor *v, void *opaque, /* change bootindex to a new one */ d->conf.bootindex = boot_index; + if (d->unit != -1) { + add_boot_device_path(d->conf.bootindex, &d->qdev, + d->unit ? "/disk@1" : "/disk@0"); + } out: if (local_err) { error_propagate(errp, local_err); @@ -230,6 +234,7 @@ static void ide_dev_instance_init(Object *obj) object_property_add(obj, "bootindex", "int32", ide_dev_get_bootindex, ide_dev_set_bootindex, NULL, NULL, NULL); + object_property_set_int(obj, -1, "bootindex", NULL); } static int ide_hd_initfn(IDEDevice *dev) -- 2.11.4.GIT