qemu-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [Qemu-devel] [PATCH] qdev: Reset hotplugged devices


From: Avi Kivity
Subject: Re: [Qemu-devel] [PATCH] qdev: Reset hotplugged devices
Date: Mon, 23 Aug 2010 15:00:28 +0300
User-agent: Mozilla/5.0 (X11; U; Linux x86_64; en-US; rv:1.9.2.7) Gecko/20100720 Fedora/3.1.1-1.fc13 Lightning/1.0b2pre Thunderbird/3.1.1

 On 08/20/2010 12:00 PM, Markus Armbruster wrote:
Alex Williamson<address@hidden>  writes:

Several devices rely on their reset() function being called to
initialize device state, e1000 and rtl8139 in particular.  When
the device is hot added, the reset doesn't occur, often leaving
the device in an unusable state.  Adding a call to reset() after
init() for hotplugged devices puts the device in the expected
state for the guest.

Signed-off-by: Alex Williamson<address@hidden>
---

  0.13 candidate?

  hw/qdev.c |    3 +++
  1 files changed, 3 insertions(+), 0 deletions(-)

diff --git a/hw/qdev.c b/hw/qdev.c
index e99c73f..b156272 100644
--- a/hw/qdev.c
+++ b/hw/qdev.c
@@ -278,6 +278,9 @@ int qdev_init(DeviceState *dev)
          qdev_free(dev);
          return rc;
      }
+    if (dev->hotplugged) {
+        qdev_reset(dev);
+    }
      qemu_register_reset(qdev_reset, dev);
      if (dev->info->vmsd) {
          vmstate_register_with_alias_id(dev, -1, dev->info->vmsd, dev,
qdev_reset() isn't necessary when !dev->hotplugged, because then
qemu_system_reset() will run shortly, which will call qdev_reset().
Correct?

Off-topic, but what's the reason for dev->hotplugged's existence? A device is either plugged or not, it is either hotpluggable or not, but is there a way to tell, from looking at a plugged device, whether it has been hotplugged in the past?

AFAICT it is redundant state and should be removed.

--
error compiling committee.c: too many arguments to function




reply via email to

[Prev in Thread] Current Thread [Next in Thread]