qemu-s390x
[Top][All Lists]
Advanced

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

Re: [qemu-s390x] [PATCH v2] s390x/vfio-ap: Implement hot plug/unplug of


From: Cornelia Huck
Subject: Re: [qemu-s390x] [PATCH v2] s390x/vfio-ap: Implement hot plug/unplug of vfio-ap device
Date: Wed, 30 Jan 2019 11:56:38 +0100

On Mon, 28 Jan 2019 15:28:37 -0500
Tony Krowiak <address@hidden> wrote:

> Introduces hot plug/unplug support for the vfio-ap device. Note that only one
> vfio-ap device can be attached to the ap-bus, so a vfio-ap device can only be
> hot plugged if the '-device vfio-ap,sysfsdev=$path_to_mdev' option is not
> specified on the QEMU command line.
> 
> Please note that a hot plug handler is not necessary for the vfio-ap device
> because the AP matrix configuration for the guest is performed by the
> kernel device driver when the vfio-ap device is realized. The vfio-ap device
> represents a VFIO mediated device created in the host sysfs for use by a 
> guest.
> The mdev device is configured with an AP matrix (i.e., adapters and domains) 
> via
> its sysfs attribute interfaces prior to starting the guest or plugging a 
> vfio-ap
> device in. When the device is realized, a file descriptor is opened on the 
> mdev
> device which results in a callback to the vfio_ap kernel device driver. The
> device driver then configures the AP matrix in the guest's SIE state 
> description
> from the AP matrix assigned via the mdev device's sysfs interfaces. The AP
> devices will be created for the guest when the AP bus running on the guest
> subsequently performs its periodic scan for AP devices.
> 
> The qdev_simple_device_unplug_cb() callback function is used for the same
> reaons; namely, the vfio_ap kernel device driver will perform the AP resource
> de-configuration for the guest when the vfio-ap device is unplugged. When the
> vfio-ap device is unrealized, the mdev device file descriptor is closed which
> results in a callback to the vfio_ap kernel device driver. The device driver
> then clears the AP matrix configuration in the guest's SIE state description
> and resets all of the affected queues. The AP devices created for the guest
> will be removed when the AP bus running on the guest subsequently performs
> its periodic scan and finds there are no longer any AP resources assigned to 
> the
> guest.

Code looks sane, I just have some comments for the documentation.

> 
> Signed-off-by: Tony Krowiak <address@hidden>
> Reviewed-by: Pierre Morel<address@hidden>
> Reviewed-by: David Hildenbrand <address@hidden>
> Reviewed-by: Halil Pasic <address@hidden>
> Tested-by: Pierre Morel<address@hidden>
> ---
>  docs/vfio-ap.txt     | 58 
> +++++++++++++++++++++++++++++++++++++++++++++++-----
>  hw/s390x/ap-bridge.c | 12 ++++++++++-
>  hw/vfio/ap.c         |  2 +-
>  3 files changed, 65 insertions(+), 7 deletions(-)
> 
> diff --git a/docs/vfio-ap.txt b/docs/vfio-ap.txt
> index 12339684cd52..fae40f218620 100644
> --- a/docs/vfio-ap.txt
> +++ b/docs/vfio-ap.txt
> @@ -440,8 +440,7 @@ unassign_control_domain
>     'unassign_domain' file. This may be done multiple times to unassign more 
> than
>     one control domain.
>  
> -Notes: Hot plug/unplug is not currently supported for mediated AP matrix
> -devices, so no changes to the AP matrix will be allowed while a guest using
> +Notes: No changes to the AP matrix will be allowed while a guest using
>  the mediated matrix device is running. Attempts to assign an adapter,
>  domain or control domain will be rejected and an error (EBUSY) returned.
>  
> @@ -562,6 +561,51 @@ facilities:
>                       for guest usage, no AP devices can be made accessible 
> to a
>                       guest started without APFT installed.
>  
> +Hot plug a vfio-ap device into a running guest:
> +==============================================
> +Only one vfio-ap device can be attached to the guest's ap-bus, so a vfio-ap

s/guest/virtual machine/ ?

It's about QEMU's bus layout, not about what the guest sees in the end
(and it confused me for a moment ;) Or do others have a better
suggestion for the wording?

> +device can be hot plugged if and only if the 
> +'-device vfio-ap,sysfsdev=$path-to-mdev' option was NOT specified on the QEMU
> +command line when the guest was started.

Hm... "if and only if no vfio-ap device is attached to the bus already,
either via the QEMU command line or via a prior hotplug action" ?

> +
> +To hot plug a vfio-ap device, use the QEMU device_add command:
> +
> +    (qemu) device_add vfio-ap,sysfsdev="$path-to-mdev"
> +
> +    Where the '$path-to-mdev' value specifies the absolute path to a mediated
> +    device configured with an AP matrix identifying the AP resources assigned
> +    to the guest.
> +
> +The AP devices will be created in the /sys/bus/ap/devices directory on the

"Note that on Linux guests, the AP devices will be created..."

> +guest when the AP bus subsequently performs its periodic scan, so there may 
> be
> +a short delay before the AP devices are accessible on the guest.
> +
> +The command will fail if:
> +
> +* The KVM guest was started with the '-device vfio-ap,sysfs=$path-to-mdev'
> +  QEMU command line option.

"A vfio-ap device has already been attached to the virtual machine
via..." (see above)

> +
> +* The CPU model features for controlling guest access to AP facilities are 
> not
> +  enabled (see 'CPU model features' subsection in the previous section).
> +
> +Hot unplug a vfio-ap device from a running guest:
> +================================================
> +A vfio-ap device can be unplugged from a running KVM guest if the
> +'-device vfio-ap,sysfsdev=$path-to-mdev' option was specified on the QEMU
> +command line when the guest was started.

Can't you unplug as well if the vfio-ap device had been hotplugged?

> +
> +To hot unplug a vfio-ap device, use the QEMU device_del command:
> +
> +    (qemu) device_del vfio-ap,sysfsdev="$path-to-mdev"
> +
> +The AP devices will be removed from the /sys/bus/ap/devices directory on the

"On a Linux guest, the AP devices will be..."

> +guest when the AP bus subsequently performs its periodic scan, so there may 
> be
> +a short delay before the AP devices are no longer accessible by the guest.
> +
> +The command will fail if the $path-to-mdev specified on the device_del 
> command
> +does not match the value specified on the '-device 
> vfio-ap,sysfs=$path-to-mdev'
> +QEMU command line used to start the guest.

Same comment, doesn't that also apply to hotplugged devices?

> +
>  Example: Configure AP Matrixes for Three Linux Guests:
>  =====================================================
>  Let's now provide an example to illustrate how KVM guests may be given
> @@ -819,7 +863,11 @@ Limitations
>    assigned lest the host be given access to the private data of the AP queue
>    device, such as a private key configured specifically for the guest.
>  
> -* Dynamically modifying the AP matrix for a running guest (which would 
> amount to
> -  hot(un)plug of AP devices for the guest) is currently not supported
> +* Dynamically assigning AP resources to or unassigning AP resources from a
> +  mediated matrix device - see 'Configuring an AP matrix for a linux guest'
> +  section above - while a running guest is using it is currently not 
> supported.
>  
> -* Live guest migration is not supported for guests using AP devices.
> +* Live guest migration is not supported for guests using AP devices. If a 
> guest
> +  is using AP devices, the vfio-ap device configured for the guest must be
> +  unplugged before migrating the guest (see 'Hot unplug a vfio-ap device 
> from a
> +  running guest' section above.



reply via email to

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