From: Anthony Liguori <aliguori@us.ibm.com>
To: Peter Maydell <peter.maydell@linaro.org>,
Paolo Bonzini <pbonzini@redhat.com>
Cc: qemu-devel@nongnu.org, "Andreas Färber" <afaerber@suse.de>,
mst@redhat.com
Subject: Re: [Qemu-devel] [PATCH 00/15] qdev: make reset semantics more clear and consistent, reset qbuses under virtio devices
Date: Thu, 10 Jan 2013 08:14:43 -0600 [thread overview]
Message-ID: <87a9shw2ek.fsf@codemonkey.ws> (raw)
In-Reply-To: <CAFEAcA9PJn1eku4hXp-_LWRju1vOVPs4GejMhkpwLiGy53By_w@mail.gmail.com>
Peter Maydell <peter.maydell@linaro.org> writes:
> On 10 January 2013 12:12, Paolo Bonzini <pbonzini@redhat.com> wrote:
>> Il 10/01/2013 12:59, Peter Maydell ha scritto:
>>>>>>> >>> > It's possible. I'll move the SCSI bus away from qdev reset.
>>>>>>> >>> > Anthony/Michael, can you help doing the same with PCIDevice? And
>>>>>>> >>> > perhaps Peter and Andreas with sysbus?
>>>>> >> What does it even mean to reset a sysbus? Do we do it anywhere?
>>>>> >> (it looks like vl.c does, just as a shortcut so memory mapped devices
>>>>> >> get their reset hooks called?)
>>> So how should it work instead? I kind of feel like all qdev devices should
>>> get their reset hook called on machine reset, regardless of bus [since it's
>>> modelling power cycling the whole system], but would that break
>>> something?
>>
>> It's just an implementation detail. Right now we have a common
>> callback. The idea is to give each bus its own callback. In the case
>> of sysbus it would just call a method; for PCI it would reset some
>> configuration and then call a method; for SCSI there is no need to call
>> a method at all; and so on.
>
> But machine reset shouldn't call bus specific PCI or SCSI reset
> methods -- we've just effectively yanked the power to the VM
> so everything should just reset as if it was freshly constructed.
>
> A bus-specific reset method would be for buses where the bus
> itself has some sort of guest-triggerable reset (by prodding the
> chipset, for instance).
The challenge is how we go from what we have to what we want.
Right now we have DeviceState::reset. This is used both as a soft and
hard reset.
What I would propose is that we:
s/DeviceState::reset/DeviceState::hard_reset/g
Then introduce PCIDevice::soft_reset. We can convert the PCI layer to
call soft_reset() instead of hard_reset.
Over time, it would be great if we could find a way to implement
hard_reset in terms of device destruction/recreation but we're not there
yet.
I think the reset/hard_reset rename can be done via sed mostly.
Would this solve the bug that you're trying to fix Michael/Paolo?
Regards,
Anthony Liguori
>> In addition, navigating the qdev tree should be explicit in the methods.
>> It will not happen anymore via the "magic" qdev_reset_all.
>
> *Something* has to say "call reset for every qdev object in the
> system", surely?
>
> -- PMM
next prev parent reply other threads:[~2013-01-10 14:16 UTC|newest]
Thread overview: 62+ messages / expand[flat|nested] mbox.gz Atom feed top
2012-12-17 16:24 [Qemu-devel] [PATCH 00/15] qdev: make reset semantics more clear and consistent, reset qbuses under virtio devices Paolo Bonzini
2012-12-17 16:24 ` [Qemu-devel] [PATCH 01/15] qdev: do not reset a device until the parent has been initialized Paolo Bonzini
2012-12-17 16:52 ` Michael S. Tsirkin
2012-12-17 16:53 ` Michael S. Tsirkin
2012-12-17 17:06 ` Paolo Bonzini
2012-12-17 21:57 ` Andreas Färber
2012-12-17 16:24 ` [Qemu-devel] [PATCH 02/15] intel-hda: do not reset codecs from intel_hda_reset Paolo Bonzini
2012-12-17 16:24 ` [Qemu-devel] [PATCH 03/15] pci: clean up resetting of IRQs Paolo Bonzini
2012-12-17 16:24 ` [Qemu-devel] [PATCH 04/15] virtio-pci: reset device before PCI layer Paolo Bonzini
2012-12-17 16:24 ` [Qemu-devel] [PATCH 05/15] virtio-s390: add a reset function to virtio-s390 devices Paolo Bonzini
2012-12-17 16:24 ` [Qemu-devel] [PATCH 06/15] qdev: add qbus_reset_all Paolo Bonzini
2012-12-17 16:24 ` [Qemu-devel] [PATCH 07/15] pci: do not export pci_bus_reset Paolo Bonzini
2012-12-17 16:24 ` [Qemu-devel] [PATCH 08/15] lsi: use qbus_reset_all to reset SCSI bus Paolo Bonzini
2012-12-17 16:24 ` [Qemu-devel] [PATCH 09/15] qdev: allow both pre- and post-order vists in qdev walking functions Paolo Bonzini
2012-12-17 16:24 ` [Qemu-devel] [PATCH 10/15] qdev: switch reset to post-order Paolo Bonzini
2012-12-17 16:24 ` [Qemu-devel] [PATCH 11/15] qdev: remove device_reset Paolo Bonzini
2012-12-17 16:24 ` [Qemu-devel] [PATCH 12/15] qdev: document reset semantics Paolo Bonzini
2012-12-17 16:24 ` [Qemu-devel] [PATCH 13/15] virtio-pci: reset all qbuses too when writing to the status field Paolo Bonzini
2012-12-17 16:48 ` Michael S. Tsirkin
2012-12-17 16:54 ` Paolo Bonzini
2012-12-17 17:08 ` Michael S. Tsirkin
2012-12-17 17:09 ` Paolo Bonzini
2012-12-17 16:24 ` [Qemu-devel] [PATCH 14/15] virtio-s390: " Paolo Bonzini
2012-12-17 16:29 ` Alexander Graf
2012-12-17 16:24 ` [Qemu-devel] [PATCH 15/15] virtio-serial: do not perform bus reset by hand Paolo Bonzini
2012-12-17 21:43 ` [Qemu-devel] [PATCH 00/15] qdev: make reset semantics more clear and consistent, reset qbuses under virtio devices Michael S. Tsirkin
2012-12-18 7:27 ` Paolo Bonzini
2012-12-18 8:35 ` Paolo Bonzini
2012-12-18 9:49 ` Michael S. Tsirkin
2012-12-18 11:40 ` Paolo Bonzini
2013-01-07 17:46 ` Michael S. Tsirkin
2013-01-07 19:10 ` Anthony Liguori
2013-01-07 19:57 ` Peter Maydell
2013-01-07 20:20 ` Anthony Liguori
2013-01-07 20:28 ` Peter Maydell
2013-01-07 20:51 ` Anthony Liguori
2013-01-09 9:33 ` Paolo Bonzini
2013-01-09 10:22 ` Michael S. Tsirkin
2013-01-09 10:53 ` Paolo Bonzini
2013-01-09 11:09 ` Michael S. Tsirkin
2013-01-09 11:12 ` Paolo Bonzini
2013-01-09 12:10 ` Michael S. Tsirkin
2013-01-09 17:46 ` Paolo Bonzini
2013-01-09 20:40 ` Anthony Liguori
2013-01-09 21:22 ` Paolo Bonzini
2013-01-09 21:40 ` Michael S. Tsirkin
2013-01-10 8:31 ` Paolo Bonzini
2013-01-10 11:32 ` Michael S. Tsirkin
2013-01-10 11:46 ` Peter Maydell
2013-01-10 11:47 ` Paolo Bonzini
2013-01-10 11:59 ` Peter Maydell
2013-01-10 12:12 ` Paolo Bonzini
2013-01-10 12:31 ` Peter Maydell
2013-01-10 12:45 ` Paolo Bonzini
2013-01-10 13:01 ` Peter Maydell
2013-01-10 13:32 ` Paolo Bonzini
2013-01-10 14:14 ` Anthony Liguori [this message]
2013-01-10 14:38 ` Paolo Bonzini
2013-01-10 15:01 ` Michael S. Tsirkin
2013-01-08 13:58 ` Michael S. Tsirkin
-- strict thread matches above, loose matches on Subject: below --
2013-01-03 2:18 Anthony Liguori
2013-01-02 18:23 ` Anthony Liguori
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=87a9shw2ek.fsf@codemonkey.ws \
--to=aliguori@us.ibm.com \
--cc=afaerber@suse.de \
--cc=mst@redhat.com \
--cc=pbonzini@redhat.com \
--cc=peter.maydell@linaro.org \
--cc=qemu-devel@nongnu.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.