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