Re: [Xen-devel] [PATCH v6 7/9] x86/mm: provide put_page_type_ptpg{, _preemptible}

2018-03-13 Thread Jan Beulich
>>> On 13.02.18 at 21:04,  wrote:
> @@ -2736,8 +2744,8 @@ int put_old_guest_table(struct vcpu *v)
>  if ( !v->arch.old_guest_table )
>  return 0;
>  
> -switch ( rc = _put_page_type(v->arch.old_guest_table, true,
> - v->arch.old_guest_ptpg) )
> +switch ( rc = put_page_type_ptpg_preemptible(v->arch.old_guest_table,
> + v->arch.old_guest_ptpg) )

Having looked briefly at patch 8, it looks like this - PV only
afaict - function is the only thing not being moved there, and
hence the only reason to have the helpers you introduce here.
Part of your problem is that a fair part of e.g. _put_page_type()
is PV-only, and hence would perhaps want moving or #ifdef-ing.

Jan


___
Xen-devel mailing list
Xen-devel@lists.xenproject.org
https://lists.xenproject.org/mailman/listinfo/xen-devel

Re: [Xen-devel] [PATCH v6 7/9] x86/mm: provide put_page_type_ptpg{, _preemptible}

2018-03-13 Thread Jan Beulich
>>> On 13.02.18 at 21:04,  wrote:
> And replace open-coded _put_page_type where the parent table parameter
> is not null.
> 
> This is in preparation for code movement in which various
> put_page_from_lNe will be moved to pv/mm.c.

I dislike both the proliferation of new functions here and, as
indicated before, them being non-static when they're used in
just a single source file. By this point in the series I have to
admit I'm not convinced of the direction all this is taking.

Jan


___
Xen-devel mailing list
Xen-devel@lists.xenproject.org
https://lists.xenproject.org/mailman/listinfo/xen-devel

[Xen-devel] [PATCH v6 7/9] x86/mm: provide put_page_type_ptpg{, _preemptible}

2018-02-13 Thread Wei Liu
And replace open-coded _put_page_type where the parent table parameter
is not null.

This is in preparation for code movement in which various
put_page_from_lNe will be moved to pv/mm.c.

Signed-off-by: Wei Liu 
---
 xen/arch/x86/mm.c| 28 ++--
 xen/include/asm-x86/mm.h |  2 ++
 2 files changed, 20 insertions(+), 10 deletions(-)

diff --git a/xen/arch/x86/mm.c b/xen/arch/x86/mm.c
index db6b703c56..e004350e83 100644
--- a/xen/arch/x86/mm.c
+++ b/xen/arch/x86/mm.c
@@ -1137,9 +1137,6 @@ get_page_from_l4e(
 return rc;
 }
 
-static int _put_page_type(struct page_info *page, bool preemptible,
-  struct page_info *ptpg);
-
 void put_page_from_l1e(l1_pgentry_t l1e, struct domain *l1e_owner)
 {
 unsigned long pfn = l1e_get_pfn(l1e);
@@ -1223,7 +1220,7 @@ static int put_page_from_l2e(l2_pgentry_t l2e, unsigned 
long pfn)
 else
 {
 struct page_info *pg = l2e_get_page(l2e);
-int rc = _put_page_type(pg, false, mfn_to_page(_mfn(pfn)));
+int rc = put_page_type_ptpg(pg, mfn_to_page(_mfn(pfn)));
 
 ASSERT(!rc);
 put_page(pg);
@@ -1259,7 +1256,7 @@ static int put_page_from_l3e(l3_pgentry_t l3e, unsigned 
long pfn,
 if ( unlikely(partial > 0) )
 {
 ASSERT(!defer);
-return _put_page_type(pg, true, mfn_to_page(_mfn(pfn)));
+return put_page_type_ptpg_preemptible(pg, mfn_to_page(_mfn(pfn)));
 }
 
 if ( defer )
@@ -1269,7 +1266,7 @@ static int put_page_from_l3e(l3_pgentry_t l3e, unsigned 
long pfn,
 return 0;
 }
 
-rc = _put_page_type(pg, true, mfn_to_page(_mfn(pfn)));
+rc = put_page_type_ptpg_preemptible(pg, mfn_to_page(_mfn(pfn)));
 if ( likely(!rc) )
 put_page(pg);
 
@@ -1289,7 +1286,7 @@ static int put_page_from_l4e(l4_pgentry_t l4e, unsigned 
long pfn,
 if ( unlikely(partial > 0) )
 {
 ASSERT(!defer);
-return _put_page_type(pg, true, mfn_to_page(_mfn(pfn)));
+return put_page_type_ptpg_preemptible(pg, mfn_to_page(_mfn(pfn)));
 }
 
 if ( defer )
@@ -1299,7 +1296,7 @@ static int put_page_from_l4e(l4_pgentry_t l4e, unsigned 
long pfn,
 return 0;
 }
 
-rc = _put_page_type(pg, true, mfn_to_page(_mfn(pfn)));
+rc = put_page_type_ptpg_preemptible(pg, mfn_to_page(_mfn(pfn)));
 if ( likely(!rc) )
 put_page(pg);
 }
@@ -2722,6 +2719,17 @@ int put_page_type_preemptible(struct page_info *page)
 return _put_page_type(page, true, NULL);
 }
 
+int put_page_type_ptpg_preemptible(struct page_info *page,
+   struct page_info *ptpg)
+{
+return _put_page_type(page, true, ptpg);
+}
+
+int put_page_type_ptpg(struct page_info *page, struct page_info *ptpg)
+{
+return _put_page_type(page, false, ptpg);
+}
+
 int get_page_type_preemptible(struct page_info *page, unsigned long type)
 {
 ASSERT(!current->arch.old_guest_table);
@@ -2736,8 +2744,8 @@ int put_old_guest_table(struct vcpu *v)
 if ( !v->arch.old_guest_table )
 return 0;
 
-switch ( rc = _put_page_type(v->arch.old_guest_table, true,
- v->arch.old_guest_ptpg) )
+switch ( rc = put_page_type_ptpg_preemptible(v->arch.old_guest_table,
+ v->arch.old_guest_ptpg) )
 {
 case -EINTR:
 case -ERESTART:
diff --git a/xen/include/asm-x86/mm.h b/xen/include/asm-x86/mm.h
index f6399f531b..9f30b37d29 100644
--- a/xen/include/asm-x86/mm.h
+++ b/xen/include/asm-x86/mm.h
@@ -371,8 +371,10 @@ int page_lock(struct page_info *page);
 void page_unlock(struct page_info *page);
 
 void put_page_type(struct page_info *page);
+int  put_page_type_ptpg(struct page_info *page, struct page_info *ptpg);
 int  get_page_type(struct page_info *page, unsigned long type);
 int  put_page_type_preemptible(struct page_info *page);
+int  put_page_type_ptpg_preemptible(struct page_info *page, struct page_info 
*ptpg);
 int  get_page_type_preemptible(struct page_info *page, unsigned long type);
 int  put_old_guest_table(struct vcpu *);
 int  get_page_from_l1e(
-- 
2.11.0


___
Xen-devel mailing list
Xen-devel@lists.xenproject.org
https://lists.xenproject.org/mailman/listinfo/xen-devel