Re: [PATCH v5 4/7] s390: ap: setup relation betwen KVM and mediated device

From: Halil Pasic
Date: Tue Mar 19 2019 - 11:27:26 EST

On Tue, 19 Mar 2019 15:47:05 +0100
Pierre Morel <pmorel@xxxxxxxxxxxxx> wrote:

> >>>>> ÂÂÂÂÂÂ if (matrix_mdev->kvm)
> >>>>> ÂÂÂÂÂÂÂÂÂÂ kvm_arch_crypto_clear_masks(matrix_mdev->kvm);
> >>>>
> >>>> This still conditional?
> >>>
> >>> Yes, nothing to clear if there is no KVM.
> >>>
> >>
> >> Since we have ensured the open only works if there is a KVM at that
> >> point in time, and we have taken a reference to KVM, I would expect
> >> KVM can not go away before we give up our reference.
> >
> > Right.
> Right but based on the assumption we do a kvm_get_kvm() during open.
> But now we will do it inside the notifier, so the logic is to do a
> kvm_put_kvm in the notifier too.
> This is important because userland will ask us to release the KVM/VFIO
> link through this notifier.
> So I will have to rework this part where KVM==NULL in the notifier too.
> Regards,
> Pierre

I think it can be done both ways. If you ensure KVM != NULL if the open
succeeds and take the reference in the notifier. I suppose if open()
fails release() won't be called. But the logic/code in open() would get
quite ugly because the callback could be called assync so that it
overlaps with the rest of open().

Not failing open() in case of no KVM is there yet is in my opinion
cleaner anyway.