public inbox for linux-kernel@vger.kernel.org
 help / color / mirror / Atom feed
From: Cornelia Huck <cohuck@redhat.com>
To: Halil Pasic <pasic@linux.ibm.com>
Cc: Harald Freudenberger <freude@linux.ibm.com>,
	Tony Krowiak <akrowiak@linux.vnet.ibm.com>,
	linux-s390@vger.kernel.org, linux-kernel@vger.kernel.org,
	kvm@vger.kernel.org, freude@de.ibm.com, schwidefsky@de.ibm.com,
	heiko.carstens@de.ibm.com, borntraeger@de.ibm.com,
	kwankhede@nvidia.com, bjsdjshi@linux.vnet.ibm.com,
	pbonzini@redhat.com, alex.williamson@redhat.com,
	pmorel@linux.vnet.ibm.com, alifm@linux.vnet.ibm.com,
	mjrosato@linux.vnet.ibm.com, jjherne@linux.vnet.ibm.com,
	thuth@redhat.com, pasic@linux.vnet.ibm.com, berrange@redhat.com,
	fiuczy@linux.vnet.ibm.com, buendgen@de.ibm.com,
	Tony Krowiak <akrowiak@linux.ibm.com>
Subject: Re: [PATCH v6 21/21] s390: doc: detailed specifications for AP virtualization
Date: Tue, 3 Jul 2018 13:52:05 +0200	[thread overview]
Message-ID: <20180703135205.2ebb107f.cohuck@redhat.com> (raw)
In-Reply-To: <13998e79-9bae-5c55-b83d-85e6db8d3b99@linux.ibm.com>

On Tue, 3 Jul 2018 11:22:10 +0200
Halil Pasic <pasic@linux.ibm.com> wrote:

> On 07/03/2018 09:46 AM, Harald Freudenberger wrote:
> > On 02.07.2018 18:28, Halil Pasic wrote:  
> >>
> >>
> >> On 06/29/2018 11:11 PM, Tony Krowiak wrote:  
> >>> This patch provides documentation describing the AP architecture and
> >>> design concepts behind the virtualization of AP devices. It also
> >>> includes an example of how to configure AP devices for exclusive
> >>> use of KVM guests.
> >>>
> >>> Signed-off-by: Tony Krowiak <akrowiak@linux.ibm.com>
> >>> ---  
> >> [..]  
> >>> +
> >>> +Reserve APQNs for exclusive use of KVM guests
> >>> +---------------------------------------------
> >>> +The following block diagram illustrates the mechanism by which APQNs are
> >>> +reserved:
> >>> +
> >>> +                              +------------------+
> >>> +                 remove       |                  |   unbind
> >>> +         +------------------->+ cex4queue driver +<-----------+
> >>> +         |                    |                  |            |
> >>> +         |                    +------------------+            |
> >>> +         |                                                    |
> >>> +         |                                                    |
> >>> +         |                                                    |
> >>> ++--------+---------+ register +------------------+      +-----+------+
> >>> +|                  +<---------+                  | bind |            |
> >>> +|      ap_bus      |          |  vfio_ap driver  +<-----+    admin   |
> >>> +|                  +--------->+                  |      |            |
> >>> ++------------------+  probe   +---+--------+-----+      +------------+
> >>> +                                  |        |
> >>> +                           create |        | store APQN
> >>> +                                  |        |
> >>> +                                  v        v
> >>> +                              +---+--------+-----+
> >>> +                              |                  |
> >>> +                              |  matrix device   |
> >>> +                              |                  |
> >>> +                              +------------------+
> >>> +
> >>> +The process for reserving an AP queue for use by a KVM guest is:
> >>> +
> >>> +* The vfio-ap driver during its initialization will perform the following:
> >>> +  * Create the 'vfio_ap' root device - /sys/devices/vfio_ap
> >>> +  * Create the 'matrix' device in the 'vfio_ap' root
> >>> +  * Register the matrix device with the device core
> >>> +* Register with the ap_bus for AP queue devices of type 10 devices (CEX4 and
> >>> +  newer) and to provide the vfio_ap driver's probe and remove callback
> >>> +  interfaces. The reason why older devices are not supported is because there
> >>> +  are no systems available on which to test.
> >>> +* The admin unbinds queue cc.qqqq from the cex4queue device driver. This results
> >>> +  in the ap_bus calling the the device driver's remove interface which
> >>> +  unbinds the cc.qqqq queue device from the driver.  
> >>
> >> What if the queue cc.qqqq is already in use? AFAIU unbind is almost as radical as
> >> pulling a cable. What is the proper procedure an admin should follow before doing
> >> the unbind?  
> > What do you mean on this level with 'in use'? A unbind destroys the association
> > between device and driver. There is no awareness of 'in use' or 'not in use' on this
> > level. This is a hard unbind.  
> >>  
> 
> 
> Let me try to invoke the DASD analogy. If one for some reason wants to detach
> a DASD the procedure to follow seems to be (see
> https://www.ibm.com/support/knowledgecenter/en/linuxonibm/com.ibm.linux.z.lgdd/lgdd_t_dasd_online.html)
> the following:
> 1) Unmount.
> 2) Offline possibly using safe_offline.
> 3) Detach.
> 
> Detaching a disk that is currently doing I/O asks for trouble, so the admin is encouraged
> to make sure there is no pending I/O.

I don't think we can use dasd (block devices) as a good analogy for
every kind of device (for starters, consider network devices).

> In case of AP you can interpret my 'in use' as the queue is not empty. In my understanding
> unbind is supposed to be hard (I used the word radical). That's why I compared it to pulling
> a cable. So that's why I ask is there stuff the admin is supposed to do before doing the
> unbind.

Are you asking for a kind of 'quiescing' operation? I would hope that
the crypto drivers already can deal with that via flushing the queue,
not allowing new requests, or whatever. This is not the block device
case.

Anyway, this is an administrative issue. If you don't have a clear
concept which devices are for host usage and which for guest usage, you
already have problems.

Speaking of administrative issues, is there libvirt support for vfio-ap
under development? It would be helpful to validate the approach.

  reply	other threads:[~2018-07-03 11:52 UTC|newest]

Thread overview: 79+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2018-06-29 21:11 [PATCH v6 00/21] s390: vfio-ap: guest dedicated crypto adapters Tony Krowiak
2018-06-29 21:11 ` [PATCH v6 01/21] s390/zcrypt: Add ZAPQ inline function Tony Krowiak
2018-06-29 21:11 ` [PATCH v6 02/21] s390/zcrypt: Review inline assembler constraints Tony Krowiak
2018-06-29 21:11 ` [PATCH v6 03/21] s390/zcrypt: Show load of cards and queues in sysfs Tony Krowiak
2018-06-29 21:11 ` [PATCH v6 04/21] s390/zcrypt: Integrate ap_asm.h into include/asm/ap.h Tony Krowiak
2018-06-29 21:11 ` [PATCH v6 05/21] KVM: s390: CPU model support for AP virtualization Tony Krowiak
2018-07-02 14:38   ` Christian Borntraeger
2018-07-02 15:37     ` Tony Krowiak
2018-07-02 15:41       ` Cornelia Huck
2018-07-02 15:54         ` Tony Krowiak
2018-07-02 16:11           ` Cornelia Huck
2018-07-02 16:20             ` Halil Pasic
2018-07-02 16:28               ` Cornelia Huck
2018-07-03 14:44                 ` Tony Krowiak
2018-07-02 16:04       ` Halil Pasic
2018-07-02 15:56   ` Tony Krowiak
2018-06-29 21:11 ` [PATCH v6 06/21] KVM: s390: refactor crypto initialization Tony Krowiak
2018-06-29 21:11 ` [PATCH v6 07/21] s390: vfio-ap: base implementation of VFIO AP device driver Tony Krowiak
2018-07-02 13:53   ` Halil Pasic
2018-07-02 15:39     ` Tony Krowiak
2018-06-29 21:11 ` [PATCH v6 08/21] s390: vfio-ap: register matrix device with VFIO mdev framework Tony Krowiak
2018-07-09 14:17   ` Pierre Morel
2018-07-10  7:03     ` Harald Freudenberger
2018-07-12  7:32       ` Tony Krowiak
2018-07-09 15:44   ` Pierre Morel
2018-06-29 21:11 ` [PATCH v6 09/21] s390: vfio-ap: structure for storing mdev matrix Tony Krowiak
2018-07-06 14:26   ` Halil Pasic
2018-07-12 14:34     ` Tony Krowiak
2018-06-29 21:11 ` [PATCH v6 10/21] s390: vfio-ap: sysfs interfaces to configure adapters Tony Krowiak
2018-07-09 12:11   ` Pierre Morel
2018-07-13 12:20     ` Tony Krowiak
2018-06-29 21:11 ` [PATCH v6 11/21] s390: vfio-ap: sysfs interfaces to configure domains Tony Krowiak
2018-07-09 12:13   ` Pierre Morel
2018-06-29 21:11 ` [PATCH v6 12/21] s390: vfio-ap: sysfs interfaces to configure control domains Tony Krowiak
2018-06-29 21:11 ` [PATCH v6 13/21] s390: vfio-ap: sysfs interface to view matrix mdev matrix Tony Krowiak
2018-07-09 12:20   ` Pierre Morel
2018-07-09 14:38     ` Pierre Morel
2018-07-13 12:24       ` Tony Krowiak
2018-07-13 16:38         ` Halil Pasic
2018-06-29 21:11 ` [PATCH v6 14/21] s390: vfio-ap: implement mediated device open callback Tony Krowiak
2018-07-12 12:47   ` Halil Pasic
2018-07-12 16:03     ` Tony Krowiak
2018-07-13 10:48       ` Halil Pasic
2018-06-29 21:11 ` [PATCH v6 15/21] s390: vfio-ap: configure the guest's AP matrix Tony Krowiak
2018-07-11 23:22   ` Halil Pasic
2018-07-12 14:36     ` Tony Krowiak
2018-07-12 13:28   ` Halil Pasic
2018-07-12 14:37     ` Tony Krowiak
2018-06-29 21:11 ` [PATCH v6 16/21] s390: vfio-ap: sysfs interface to view guest matrix Tony Krowiak
2018-06-29 21:11 ` [PATCH v6 17/21] s390: vfio-ap: implement VFIO_DEVICE_GET_INFO ioctl Tony Krowiak
2018-06-29 21:11 ` [PATCH v6 18/21] s390: vfio-ap: zeroize the AP queues Tony Krowiak
2018-06-29 21:11 ` [PATCH v6 19/21] s390: vfio-ap: implement VFIO_DEVICE_RESET ioctl Tony Krowiak
2018-06-29 21:11 ` [PATCH v6 20/21] KVM: s390: Handling of Cypto control block in VSIE Tony Krowiak
2018-06-29 21:11 ` [PATCH v6 21/21] s390: doc: detailed specifications for AP virtualization Tony Krowiak
2018-07-02 16:28   ` Halil Pasic
2018-07-03  7:46     ` Harald Freudenberger
2018-07-03  9:22       ` Halil Pasic
2018-07-03 11:52         ` Cornelia Huck [this message]
2018-07-03 12:20           ` Halil Pasic
2018-07-03 13:25             ` Cornelia Huck
2018-07-03 13:58               ` Halil Pasic
2018-07-03 14:30                 ` Cornelia Huck
2018-07-03 15:25                   ` Tony Krowiak
2018-07-03 16:14                   ` Halil Pasic
2018-07-03 15:20               ` Tony Krowiak
2018-07-03 15:17             ` Tony Krowiak
2018-07-03 15:00           ` Tony Krowiak
2018-07-03 14:56       ` Tony Krowiak
2018-07-04  8:31         ` Harald Freudenberger
2018-07-02 23:10   ` Halil Pasic
2018-07-03 16:36     ` Tony Krowiak
2018-07-04 16:31       ` Boris Fiuczynski
2018-07-05 13:29         ` Tony Krowiak
2018-07-09  9:21     ` Pierre Morel
2018-07-09 15:50       ` Halil Pasic
2018-07-10  8:49         ` Pierre Morel
2018-07-12  7:26       ` Tony Krowiak
2018-07-03  8:10   ` Harald Freudenberger
2018-07-09  9:02     ` Pierre Morel

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=20180703135205.2ebb107f.cohuck@redhat.com \
    --to=cohuck@redhat.com \
    --cc=akrowiak@linux.ibm.com \
    --cc=akrowiak@linux.vnet.ibm.com \
    --cc=alex.williamson@redhat.com \
    --cc=alifm@linux.vnet.ibm.com \
    --cc=berrange@redhat.com \
    --cc=bjsdjshi@linux.vnet.ibm.com \
    --cc=borntraeger@de.ibm.com \
    --cc=buendgen@de.ibm.com \
    --cc=fiuczy@linux.vnet.ibm.com \
    --cc=freude@de.ibm.com \
    --cc=freude@linux.ibm.com \
    --cc=heiko.carstens@de.ibm.com \
    --cc=jjherne@linux.vnet.ibm.com \
    --cc=kvm@vger.kernel.org \
    --cc=kwankhede@nvidia.com \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-s390@vger.kernel.org \
    --cc=mjrosato@linux.vnet.ibm.com \
    --cc=pasic@linux.ibm.com \
    --cc=pasic@linux.vnet.ibm.com \
    --cc=pbonzini@redhat.com \
    --cc=pmorel@linux.vnet.ibm.com \
    --cc=schwidefsky@de.ibm.com \
    --cc=thuth@redhat.com \
    /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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox