Re: [Xen-devel] [PATCH v8 1/5] x86/ioreq server: Release the p2m lock after mmio is handled.
On 3/21/2017 9:18 AM, Yu Zhang wrote: On 3/21/2017 1:03 AM, Jan Beulich wrote: On 18.03.17 at 11:53,wrote: --- a/xen/arch/x86/hvm/hvm.c +++ b/xen/arch/x86/hvm/hvm.c @@ -1870,18 +1870,14 @@ int hvm_hap_nested_page_fault(paddr_t gpa, unsigned long gla, (npfec.write_access && (p2m_is_discard_write(p2mt) || (p2mt == p2m_ioreq_server))) ) { -__put_gfn(p2m, gfn); -if ( ap2m_active ) -__put_gfn(hostp2m, gfn); - rc = 0; if ( unlikely(is_pvh_domain(currd)) ) -goto out; +goto out_put_gfn; Did you forget to re-base onto staging before you've sent this? is_pvh_domain() was gone before your submission already. When re-basing, feel free to also drop the dead "rc = 0;" line. Oops... I did a rebase days ago, but did not send the patch directly. There were some XenGT test performed based on these patch. Sorry, I should have a check. Will resend the patch. :) BTW, since there's another change - "drop the rc = 0", I'd like to send the new patchset with a new version nubmer. :-) Yu ___ Xen-devel mailing list Xen-devel@lists.xen.org https://lists.xen.org/xen-devel ___ Xen-devel mailing list Xen-devel@lists.xen.org https://lists.xen.org/xen-devel
Re: [Xen-devel] [PATCH v8 1/5] x86/ioreq server: Release the p2m lock after mmio is handled.
On 3/21/2017 1:03 AM, Jan Beulich wrote: On 18.03.17 at 11:53,wrote: --- a/xen/arch/x86/hvm/hvm.c +++ b/xen/arch/x86/hvm/hvm.c @@ -1870,18 +1870,14 @@ int hvm_hap_nested_page_fault(paddr_t gpa, unsigned long gla, (npfec.write_access && (p2m_is_discard_write(p2mt) || (p2mt == p2m_ioreq_server))) ) { -__put_gfn(p2m, gfn); -if ( ap2m_active ) -__put_gfn(hostp2m, gfn); - rc = 0; if ( unlikely(is_pvh_domain(currd)) ) -goto out; +goto out_put_gfn; Did you forget to re-base onto staging before you've sent this? is_pvh_domain() was gone before your submission already. When re-basing, feel free to also drop the dead "rc = 0;" line. Oops... I did a rebase days ago, but did not send the patch directly. There were some XenGT test performed based on these patch. Sorry, I should have a check. Will resend the patch. :) B.R. Yu Jan ___ Xen-devel mailing list Xen-devel@lists.xen.org https://lists.xen.org/xen-devel
Re: [Xen-devel] [PATCH v8 1/5] x86/ioreq server: Release the p2m lock after mmio is handled.
>>> On 18.03.17 at 11:53,wrote: > --- a/xen/arch/x86/hvm/hvm.c > +++ b/xen/arch/x86/hvm/hvm.c > @@ -1870,18 +1870,14 @@ int hvm_hap_nested_page_fault(paddr_t gpa, unsigned > long gla, > (npfec.write_access && >(p2m_is_discard_write(p2mt) || (p2mt == p2m_ioreq_server))) ) > { > -__put_gfn(p2m, gfn); > -if ( ap2m_active ) > -__put_gfn(hostp2m, gfn); > - > rc = 0; > if ( unlikely(is_pvh_domain(currd)) ) > -goto out; > +goto out_put_gfn; Did you forget to re-base onto staging before you've sent this? is_pvh_domain() was gone before your submission already. When re-basing, feel free to also drop the dead "rc = 0;" line. Jan ___ Xen-devel mailing list Xen-devel@lists.xen.org https://lists.xen.org/xen-devel
[Xen-devel] [PATCH v8 1/5] x86/ioreq server: Release the p2m lock after mmio is handled.
Routine hvmemul_do_io() may need to peek the p2m type of a gfn to select the ioreq server. For example, operations on gfns with p2m_ioreq_server type will be delivered to a corresponding ioreq server, and this requires that the p2m type not be switched back to p2m_ram_rw during the emulation process. To avoid this race condition, we delay the release of p2m lock in hvm_hap_nested_page_fault() until mmio is handled. Note: previously in hvm_hap_nested_page_fault(), put_gfn() was moved before the handling of mmio, due to a deadlock risk between the p2m lock and the event lock(in commit 77b8dfe). Later, a per-event channel lock was introduced in commit de6acb7, to send events. So we do not need to worry about the deadlock issue. Signed-off-by: Yu ZhangReviewed-by: Jan Beulich --- Cc: Paul Durrant Cc: Jan Beulich Cc: Andrew Cooper --- xen/arch/x86/hvm/hvm.c | 8 ++-- 1 file changed, 2 insertions(+), 6 deletions(-) diff --git a/xen/arch/x86/hvm/hvm.c b/xen/arch/x86/hvm/hvm.c index ccfae4f..a9db7f7 100644 --- a/xen/arch/x86/hvm/hvm.c +++ b/xen/arch/x86/hvm/hvm.c @@ -1870,18 +1870,14 @@ int hvm_hap_nested_page_fault(paddr_t gpa, unsigned long gla, (npfec.write_access && (p2m_is_discard_write(p2mt) || (p2mt == p2m_ioreq_server))) ) { -__put_gfn(p2m, gfn); -if ( ap2m_active ) -__put_gfn(hostp2m, gfn); - rc = 0; if ( unlikely(is_pvh_domain(currd)) ) -goto out; +goto out_put_gfn; if ( !handle_mmio_with_translation(gla, gpa >> PAGE_SHIFT, npfec) ) hvm_inject_hw_exception(TRAP_gp_fault, 0); rc = 1; -goto out; +goto out_put_gfn; } /* Check if the page has been paged out */ -- 1.9.1 ___ Xen-devel mailing list Xen-devel@lists.xen.org https://lists.xen.org/xen-devel