Re: [PATCH v2 13/15] KVM: s390: Configure the guest's CRYCB

From: David Hildenbrand
Date: Fri Mar 02 2018 - 05:09:00 EST


On 01.03.2018 21:42, Tony Krowiak wrote:
> On 03/01/2018 04:37 AM, David Hildenbrand wrote:
>> On 28.02.2018 21:45, Tony Krowiak wrote:
>>> On 02/28/2018 04:49 AM, David Hildenbrand wrote:
>>>>> +static int vfio_ap_mdev_open(struct mdev_device *mdev)
>>>>> +{
>>>>> + struct ap_matrix_mdev *matrix_mdev = mdev_get_drvdata(mdev);
>>>>> + unsigned long events;
>>>>> + int ret;
>>>>> +
>>>>> + matrix_mdev->group_notifier.notifier_call = vfio_ap_mdev_group_notifier;
>>>>> + events = VFIO_GROUP_NOTIFY_SET_KVM;
>>>>> + ret = vfio_register_notifier(mdev_dev(mdev), VFIO_GROUP_NOTIFY,
>>>>> + &events, &matrix_mdev->group_notifier);
>>>>> +
>>>>> + ret = kvm_ap_configure_matrix(matrix_mdev->kvm,
>>>>> + matrix_mdev->matrix);
>>>>> + if (ret)
>>>>> + return ret;
>>>>> +
>>>>> + ret = kvm_ap_enable_ie_mode(matrix_mdev->kvm);
>>>> Can't this happen while the guest is already running? Or what hinders us
>>>> from doing that?
>>> I'm not sure exactly what you're asking here. Are you asking if the
>>> vfio_ap_mdev_open()
>>> function can be called multiple times while the guest is running? AFAIK
>>> this will be
>>> called only once when the mediated device's file descriptor is opened.
>>> This happens in
>>> QEMU when the -device vfio-ap device is realized.
>> Okay, but from a pure interface point of view, this could happen any
>> time, even while the guest is already running. Patching in the SCB of a
>> running VCPU is evil.
> How can this happen while the guest is running? QEMU opens the fd when the
> device is realized and AFAIK vfio mdev will not allow any other process to
> open it until the guest is terminated. What am I missing?

It can't happen right now (the way QEMU uses it), but the kernel
interface allows it, no?

Anyhow, as discussed this should be handled directly while creating a
VCPU. Then also CPU hotplug is properly covered.


--

Thanks,

David / dhildenb