qemu-devel
[Top][All Lists]
Advanced

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

Re: [Qemu-devel] [PATCH v2 1/1] KVM s390 pci infrastructure modelling


From: Hong Bo Li
Subject: Re: [Qemu-devel] [PATCH v2 1/1] KVM s390 pci infrastructure modelling
Date: Mon, 06 Jul 2015 10:06:50 +0800
User-agent: Mozilla/5.0 (Windows NT 6.1; WOW64; rv:31.0) Gecko/20100101 Thunderbird/31.7.0



On 7/5/2015 2:25, Michael S. Tsirkin wrote:
On Fri, Jul 03, 2015 at 07:09:59PM +0800, Hong Bo Li wrote:
But I would like to note that pci device drivers require driver handshake
before device goes away.
IIUC s390 hotplug is immediate, which is a problem.
Maybe doing the change will help make sure device removal is acked
by guest before it happens?

I did some prototype today. If define zpci first, the progress of unplug
will get complicated.
The point is that you don't have to remove the zpci device at all.
Remove pci device from zpci.

I think the complication you refer to is the guest ack of
the removal, isn't it?
It's complicated, but it has a chance to actually work with
pci device drivers.

This, as opposed to just removing the device whenever host
tells us to.

This patch supports the ack in this way:
After unplugging, the guest will do some cleanup work and disable the zpci 
device.
The "is_unplugged" flag in this patch is used to do this ack. Only after the 
device
be disabled, we can remove the zpci device from list and do unparent.

The complication I mean is:
1. If we define zpci first, the user can unplug a s390 pci device in two ways:
    a) unplug the vfio pci device first, unplug the zpci device second.
        If the user only tell us to unplug the vfio pci, after the ack, we will
        still need to wait for the unplug zpci cmd from user,  before that,
        we have to maintain a useless zpci in list.

    b) Unplug the zpci device directly. This will cause the unplugging of vfio 
pci
        automatically. Then on s390, we have a different unplug cmd comparing to
        other platform.

2. If we define vfio pci first,  the user can unplug a s390 pci device in two 
ways:
    a) Unplug the zpci first, unplug the vfio pci device second.
       We don't need to maintain the extra s390 zpci structure, after ack, we 
can
        remove the zpci from list and do unparent.
    b) Unplug the vfio pci directly. This will cause the unplugging of zpci
       automatically.  Then on s390, we have a same unplug cmd comparing to
       other platform.

The ack of these two methods are the same.


So I prefer defining vfio pci first.
And it looks like the vfio pci is the basic device, if we want this
vfio pci to work on s390, we have to define a zpci device to give some
additional information to it.
if vfio connects to the bus internal to zpci, it can get
things from the bus in a natural way.

If zpci is connected to vfio, it becomes much messier.


For these two ways, the vfio pci both connect to the s390 pci root bus.
And zpci devices connect to the s390-pci-fac-bus, there is no difference.





reply via email to

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