|
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] RE: [PATCH for-4.14 v3] x86/svm: do not try to handle recalc NPT faults immediately
> -----Original Message-----
> From: Jan Beulich <jbeulich@xxxxxxxx>
> Sent: 04 June 2020 11:34
> To: paul@xxxxxxx
> Cc: 'Igor Druzhinin' <igor.druzhinin@xxxxxxxxxx>;
> xen-devel@xxxxxxxxxxxxxxxxxxxx;
> andrew.cooper3@xxxxxxxxxx; wl@xxxxxxx; roger.pau@xxxxxxxxxx;
> george.dunlap@xxxxxxxxxx
> Subject: Re: [PATCH for-4.14 v3] x86/svm: do not try to handle recalc NPT
> faults immediately
>
> On 04.06.2020 09:49, Paul Durrant wrote:
> >> -----Original Message-----
> >> From: Igor Druzhinin <igor.druzhinin@xxxxxxxxxx>
> >> Sent: 03 June 2020 23:42
> >> To: xen-devel@xxxxxxxxxxxxxxxxxxxx
> >> Cc: jbeulich@xxxxxxxx; andrew.cooper3@xxxxxxxxxx; wl@xxxxxxx;
> >> roger.pau@xxxxxxxxxx;
> >> george.dunlap@xxxxxxxxxx; paul@xxxxxxx; Igor Druzhinin
> >> <igor.druzhinin@xxxxxxxxxx>
> >> Subject: [PATCH for-4.14 v3] x86/svm: do not try to handle recalc NPT
> >> faults immediately
> >>
> >> A recalculation NPT fault doesn't always require additional handling
> >> in hvm_hap_nested_page_fault(), moreover in general case if there is no
> >> explicit handling done there - the fault is wrongly considered fatal.
> >>
> >> This covers a specific case of migration with vGPU assigned which
> >> uses direct MMIO mappings made by XEN_DOMCTL_memory_mapping hypercall:
> >> at a moment log-dirty is enabled globally, recalculation is requested
> >> for the whole guest memory including those mapped MMIO regions
> >
> > I still think it is odd to put this in the commit comment since, as I
> > said before, Xen ensures that this situation cannot happen at
> > the moment.
>
> Aiui Igor had replaced reference to passed-through devices by reference
> to mere handing of an MMIO range to a guest. Are you saying we suppress
> log-dirty enabling in this case as well? I didn't think we do:
No, but the comment says "migration with vGPU *assigned*" (my emphasis), which
surely means has_arch_pdevs() will be true.
>
> if ( has_arch_pdevs(d) && log_global )
> {
> /*
> * Refuse to turn on global log-dirty mode
> * if the domain is sharing the P2M with the IOMMU.
> */
> return -EINVAL;
> }
>
> Seeing this code I wonder about the non-sharing case: If what the
> comment says was true, the condition would need to change, but I
> think it's the comment which is wrong, and we don't want global
> log-dirty as long as an IOMMU is in use at all for a domain.
I think is the comment that is correct, not the condition. It is only when
using shared EPT that enabling logdirty is clearly an unsafe thing to do. Using
sync-ed IOMMU mappings should be ok.
Paul
|
![]() |
Lists.xenproject.org is hosted with RackSpace, monitoring our |