All of lore.kernel.org
 help / color / mirror / Atom feed
From: Anthony Liguori <aliguori@us.ibm.com>
To: Peter Maydell <peter.maydell@linaro.org>
Cc: Paolo Bonzini <pbonzini@redhat.com>,
	qemu-devel@nongnu.org, mst@redhat.com
Subject: Re: [Qemu-devel] [PATCH 00/15] qdev: make reset semantics more clear and consistent, reset qbuses under virtio devices
Date: Mon, 07 Jan 2013 14:20:35 -0600	[thread overview]
Message-ID: <87mwwkg2y4.fsf@codemonkey.ws> (raw)
In-Reply-To: <CAFEAcA_zgZFTdbAQhJ5Rq4twHKpAPqtLrNszNWs4SvoCiVsiog@mail.gmail.com>

Peter Maydell <peter.maydell@linaro.org> writes:

> On 7 January 2013 19:10, Anthony Liguori <aliguori@us.ibm.com> wrote:
>> Paolo Bonzini <pbonzini@redhat.com> writes:
>>> 1) device-level reset is the kind of reset that you get with a register
>>> write on the device.  It will clear interrupts and DMAs among other things,
>>> but not any bus-level state, for example it will not clear PCI BARs and
>>> other configuration space data.  It is done with qdev_reset_all.
>
> This isn't really right -- often writing the register on the device will
> reset some things but not the whole device state the way a qdev
> reset does. qdev reset (to the extent it's modelling anything) is more
> like yanking power to the device and reapplying it.
>
>>> 2) bus-level reset is the kind of reset that you get with a register
>>> write on the device that exports the bus (including triggering a device-level
>>> reset on the device that exports the bus).  It will do a device-level
>>> reset on the child, but also clear bus-level state such as PCI BARs and
>>> other configuration space data.  It can be triggered for all devices
>>> on a bus with qbus_reset_all.  There is still no API for a bus-level
>>> reset of a single device (like PCI FLR), this can be added later.
>
> This doesn't sound very plausible: when would you do a bus level
> reset anyway?
>
>> I don't really understand this dual abstraction.  I suspect it's
>> overgeneralizing something that's the result of poor modeling.
>
> Agreed.
>
>> What I'm missing with this series is what problem are we trying to
>> solve?  I don't think we model reset correctly today because I don't
>> think there's a single notion of reset.
>
> Also agreed.
>
>> I think reset really ought to just be a bus level concept with
>> individual implementations for each bus.
>
> I'm not sure I really agree here, especially since QOM/qdev are
> moving away from the idea that there is a single bus tree and every
> device is on a single bus.

I don't mean a BusState level concept, I mean a PCIBus concept.

There is clearly such a thing as a PCI bus reset.  In fact, there are
multiple types of PCI bus resets.  There should be a PCIBus method that
calls out to PCIDevices on the bus.

But that isn't something that should be fitted into generalized to a
BusState::reset method.

> It's quite common for a bus to include a
> reset signal but not all device reset is handled by a signal on a bus.

Agreed.

>
> If we want to model reset properly we should model actual reset
> lines (and/or power-cycling). If we don't care we can continue with
> whatever fudge we like :-)

Yes, and that's basically what qemu_system_reset() is.  Of course, we
model it like everything is directly connected to a single power source
which is true 99% of the time.  That's why we've gotten away with it for
so long.

Regards,

Anthony Liguori

> -- PMM

  reply	other threads:[~2013-01-07 20:20 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 [this message]
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
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=87mwwkg2y4.fsf@codemonkey.ws \
    --to=aliguori@us.ibm.com \
    --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.