Skip to contentSkip to conversation

qemu aborts if i add a already registered device from qemu monitor ..

DISCUSSION pradeep 2 participants 2 messages Oct 19, 2010 KVM

lore
Share & tools
lore

pradeep

author
#0 lore raw

Hi

I tried to add a device to guest from upstream qemu monitor using "device_add".
Unknowingly i try to add already registered devices from qemu monitor, my qemu monitor is aborted. I don't see a reason to kill monitor. I think abort() is a bit rough. we need a better way to handle it. If a user try to add a already registered device, qemu should convey this to user saying that, this device already registered and an error message should be fine than aborting qemu.

        QLIST_FOREACH(block, &ram_list.blocks, next) {
        if (!strcmp(block->idstr, new_block->idstr)) {
            fprintf(stderr, "RAMBlock \"%s\" already registered,
        abort!\n",
                    new_block->idstr);
            abort();
        }

If i return some other value in above code, instead of abort(), I
would need change the code for every device, which i dont want to.
Is there a way to check, if device is already enrolled or not in the very beginning of "device_add" call.

Thanks
Pradeep

#1 lore raw
Quoted 4 lines · On Tue, 19 Oct 2010 15:27:37 +0530 pradeep <[email protected]> wrote:

Hi

I tried to add a device to guest from upstream qemu monitor using "device_add".

Are you developing a new device or does it happen with existing ones?

If it's the latter, can you describe steps to reproduce it?

Quoted 27 lines

Unknowingly i try to add already registered devices from qemu monitor, my qemu monitor is aborted. I don't see a reason to kill monitor. I think abort() is a bit rough. we need a better way to handle it. If a user try to add a already registered device, qemu should convey this to user saying that, this device already registered and an error message should be fine than aborting qemu.

        QLIST_FOREACH(block, &ram_list.blocks, next) {
        if (!strcmp(block->idstr, new_block->idstr)) {
            fprintf(stderr, "RAMBlock \"%s\" already registered,
        abort!\n",
                    new_block->idstr);
            abort();
        }

If i return some other value in above code, instead of abort(), I
would need change the code for every device, which i dont want to.
Is there a way to check, if device is already enrolled or not in the very beginning of "device_add" call.

Thanks
Pradeep