[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [Qemu-devel] [PATCH 0/2] virtio: reset all qbuses too when writing t
From: |
Paolo Bonzini |
Subject: |
Re: [Qemu-devel] [PATCH 0/2] virtio: reset all qbuses too when writing to the status field |
Date: |
Mon, 17 Dec 2012 17:14:44 +0100 |
User-agent: |
Mozilla/5.0 (X11; Linux x86_64; rv:17.0) Gecko/17.0 Thunderbird/17.0 |
Il 17/12/2012 17:01, Michael S. Tsirkin ha scritto:
> On Mon, Dec 17, 2012 at 04:37:36PM +0100, Paolo Bonzini wrote:
>> Il 17/12/2012 16:24, Michael S. Tsirkin ha scritto:
>>> On Mon, Dec 17, 2012 at 04:14:00PM +0100, Paolo Bonzini wrote:
>>>> Il 17/12/2012 11:40, Michael S. Tsirkin ha scritto:
>>>>> How about the following? Then we can put reset
>>>>> in generic code where it belongs.
>>>>> It's untested - really kind of pseudo code - and
>>>>> s390 is still to be updated.
>>>>>
>>>>> Posting to see what does everyone thinks.
>>>>
>>>> I'm not (yet) sure how that helps my problem,
>>>
>>> It makes it possible for virtio.c to get at the
>>> device state through the binding pointer.
>>> So you will be able to qdev_reset_all from virtio.c
>>> where it belongs, instead of duplicating code
>>> in all bindings.
>>
>> Yes, but where does it belong? Do you want to move handling of the
>> status register (and others) to hw/virtio.c?
>
> I thought we can have some kind of generic function that all
> transports can call. It would call qdev_reset_all internally,
> and we would invoke it from all transports.
>
>> Also, you're proposing that I do qdev_reset_all(vdev->binding_opaque)
>> but that would be a layering violation. Generic virtio code should not
>> be able to reset the transport-specific setup (e.g. MSIs).
>
> Bus reset looks like this:
>
> qdev -> pci -> virtio pci reset -> virtio reset
>
> status reset looks like this:
>
> virtio pci reset -> virtio reset
>
> You original patch was basically calling back to
> qdev from virtio pci (bypassing pci).
Because it is actually correct to not involve PCI. This is not
bypassing: PCI is above in the qdev tree, and never learns about a reset
that is triggered by a register write. So, a device can ask qdev and be
reset, but it device cannot ask its parent to do a bus reset of itself.
That would be like doing an FLR when writing zero to status. Wrong,
and a layering violation.
> If that is OK and not a layering violation,
> why calling from virtio back to virtio pci not OK?
Because I'm calling qdev_reset_all on the same device that received the
reset. I'm not calling qdev_reset_all on a parent device. Calling
qdev_reset_all(vdev->binding_opaque) is equivalent calling it on a
parent device.
Still, the extra typesafety of your patch is good to have.
Paolo
> How do you think reset should be layered?
>
>
>>>> but it is definitely a
>>>> step in the right direction!
>>>>
>>>> Paolo
- Re: [Qemu-devel] [PATCH 0/2] virtio: reset all qbuses too when writing to the status field, (continued)
- Message not available
- Message not available
- Re: [Qemu-devel] [PATCH 0/2] virtio: reset all qbuses too when writing to the status field, Paolo Bonzini, 2012/12/13
- Re: [Qemu-devel] [PATCH 0/2] virtio: reset all qbuses too when writing to the status field, Michael S. Tsirkin, 2012/12/16
- Re: [Qemu-devel] [PATCH 0/2] virtio: reset all qbuses too when writing to the status field, Paolo Bonzini, 2012/12/16
- Re: [Qemu-devel] [PATCH 0/2] virtio: reset all qbuses too when writing to the status field, Michael S. Tsirkin, 2012/12/16
- Re: [Qemu-devel] [PATCH 0/2] virtio: reset all qbuses too when writing to the status field, Paolo Bonzini, 2012/12/17
- Re: [Qemu-devel] [PATCH 0/2] virtio: reset all qbuses too when writing to the status field, Michael S. Tsirkin, 2012/12/17
- Re: [Qemu-devel] [PATCH 0/2] virtio: reset all qbuses too when writing to the status field, Paolo Bonzini, 2012/12/17
- Re: [Qemu-devel] [PATCH 0/2] virtio: reset all qbuses too when writing to the status field, Michael S. Tsirkin, 2012/12/17
- Re: [Qemu-devel] [PATCH 0/2] virtio: reset all qbuses too when writing to the status field, Paolo Bonzini, 2012/12/17
- Re: [Qemu-devel] [PATCH 0/2] virtio: reset all qbuses too when writing to the status field, Michael S. Tsirkin, 2012/12/17
- Re: [Qemu-devel] [PATCH 0/2] virtio: reset all qbuses too when writing to the status field,
Paolo Bonzini <=