Re: [Xen-devel] [PATCH v2 for-next v2 6/8] x86/mm: move two PV hypercalls from x86_64/mm.c to pv/mm.c

2017-04-21 Thread Jan Beulich
>>> On 21.04.17 at 12:37,  wrote:
> On Wed, Apr 19, 2017 at 09:33:28AM -0600, Jan Beulich wrote:
>> >>> On 03.04.17 at 13:22,  wrote:
>> > --- a/xen/arch/x86/pv/mm.c
>> > +++ b/xen/arch/x86/pv/mm.c
>> > @@ -4106,6 +4106,74 @@ int mmio_ro_do_page_fault(struct vcpu *v, unsigned 
>> > long addr,
>> 
>> Considering this file is still 4k lines, I'd prefer if stuff not obviously
>> belonging here could be placed elsewhere.
> 
> Looking back to previous patch's commit message, I can split this file
> into more files: two or three for emulation code, one for grant table
> code, one or two for hypercalls.
> 
> Would that be ok for you?

Oh, yes, certainly, provided you don't need to make overly many
static functions non-static.

> If yes, do you have preferences for file names?

Well, no, not really (short of saying "use sensible ones"). If there are
counterparts elsewhere in the tree, naming them the same would of
course be nice (like grant_table.c, despite me disliking the underscore).

Jan


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


Re: [Xen-devel] [PATCH v2 for-next v2 6/8] x86/mm: move two PV hypercalls from x86_64/mm.c to pv/mm.c

2017-04-21 Thread Wei Liu
On Wed, Apr 19, 2017 at 09:33:28AM -0600, Jan Beulich wrote:
> >>> On 03.04.17 at 13:22,  wrote:
> > --- a/xen/arch/x86/pv/mm.c
> > +++ b/xen/arch/x86/pv/mm.c
> > @@ -4106,6 +4106,74 @@ int mmio_ro_do_page_fault(struct vcpu *v, unsigned 
> > long addr,
> 
> Considering this file is still 4k lines, I'd prefer if stuff not obviously
> belonging here could be placed elsewhere.
> 

Looking back to previous patch's commit message, I can split this file
into more files: two or three for emulation code, one for grant table
code, one or two for hypercalls.

Would that be ok for you? If yes, do you have preferences for file
names?

Wei.

> Jan
> 

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


Re: [Xen-devel] [PATCH v2 for-next v2 6/8] x86/mm: move two PV hypercalls from x86_64/mm.c to pv/mm.c

2017-04-19 Thread Jan Beulich
>>> On 03.04.17 at 13:22,  wrote:
> --- a/xen/arch/x86/pv/mm.c
> +++ b/xen/arch/x86/pv/mm.c
> @@ -4106,6 +4106,74 @@ int mmio_ro_do_page_fault(struct vcpu *v, unsigned 
> long addr,

Considering this file is still 4k lines, I'd prefer if stuff not obviously
belonging here could be placed elsewhere.

Jan


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


[Xen-devel] [PATCH v2 for-next v2 6/8] x86/mm: move two PV hypercalls from x86_64/mm.c to pv/mm.c

2017-04-03 Thread Wei Liu
No functional change.

Signed-off-by: Wei Liu 
---
 xen/arch/x86/pv/mm.c | 68 ++
 xen/arch/x86/x86_64/mm.c | 70 
 2 files changed, 68 insertions(+), 70 deletions(-)

diff --git a/xen/arch/x86/pv/mm.c b/xen/arch/x86/pv/mm.c
index b5277b5d28..48d3fe184b 100644
--- a/xen/arch/x86/pv/mm.c
+++ b/xen/arch/x86/pv/mm.c
@@ -4106,6 +4106,74 @@ int mmio_ro_do_page_fault(struct vcpu *v, unsigned long 
addr,
 return 0;
 }
 
+long do_stack_switch(unsigned long ss, unsigned long esp)
+{
+fixup_guest_stack_selector(current->domain, ss);
+current->arch.pv_vcpu.kernel_ss = ss;
+current->arch.pv_vcpu.kernel_sp = esp;
+return 0;
+}
+
+long do_set_segment_base(unsigned int which, unsigned long base)
+{
+struct vcpu *v = current;
+long ret = 0;
+
+if ( is_pv_32bit_vcpu(v) )
+return -ENOSYS; /* x86/64 only. */
+
+switch ( which )
+{
+case SEGBASE_FS:
+if ( is_canonical_address(base) )
+{
+wrfsbase(base);
+v->arch.pv_vcpu.fs_base = base;
+}
+else
+ret = -EINVAL;
+break;
+
+case SEGBASE_GS_USER:
+if ( is_canonical_address(base) )
+{
+wrmsrl(MSR_SHADOW_GS_BASE, base);
+v->arch.pv_vcpu.gs_base_user = base;
+}
+else
+ret = -EINVAL;
+break;
+
+case SEGBASE_GS_KERNEL:
+if ( is_canonical_address(base) )
+{
+wrgsbase(base);
+v->arch.pv_vcpu.gs_base_kernel = base;
+}
+else
+ret = -EINVAL;
+break;
+
+case SEGBASE_GS_USER_SEL:
+__asm__ __volatile__ (
+" swapgs  \n"
+"1:   movl %k0,%%gs   \n"
+""safe_swapgs"\n"
+".section .fixup,\"ax\"   \n"
+"2:   xorl %k0,%k0\n"
+" jmp  1b \n"
+".previous\n"
+_ASM_EXTABLE(1b, 2b)
+: : "r" (base&0x) );
+break;
+
+default:
+ret = -EINVAL;
+break;
+}
+
+return ret;
+}
 
 /*
  * Local variables:
diff --git a/xen/arch/x86/x86_64/mm.c b/xen/arch/x86/x86_64/mm.c
index 34f3250fd7..19a14e8829 100644
--- a/xen/arch/x86/x86_64/mm.c
+++ b/xen/arch/x86/x86_64/mm.c
@@ -1018,76 +1018,6 @@ long subarch_memory_op(unsigned long cmd, 
XEN_GUEST_HANDLE_PARAM(void) arg)
 return rc;
 }
 
-long do_stack_switch(unsigned long ss, unsigned long esp)
-{
-fixup_guest_stack_selector(current->domain, ss);
-current->arch.pv_vcpu.kernel_ss = ss;
-current->arch.pv_vcpu.kernel_sp = esp;
-return 0;
-}
-
-long do_set_segment_base(unsigned int which, unsigned long base)
-{
-struct vcpu *v = current;
-long ret = 0;
-
-if ( is_pv_32bit_vcpu(v) )
-return -ENOSYS; /* x86/64 only. */
-
-switch ( which )
-{
-case SEGBASE_FS:
-if ( is_canonical_address(base) )
-{
-wrfsbase(base);
-v->arch.pv_vcpu.fs_base = base;
-}
-else
-ret = -EINVAL;
-break;
-
-case SEGBASE_GS_USER:
-if ( is_canonical_address(base) )
-{
-wrmsrl(MSR_SHADOW_GS_BASE, base);
-v->arch.pv_vcpu.gs_base_user = base;
-}
-else
-ret = -EINVAL;
-break;
-
-case SEGBASE_GS_KERNEL:
-if ( is_canonical_address(base) )
-{
-wrgsbase(base);
-v->arch.pv_vcpu.gs_base_kernel = base;
-}
-else
-ret = -EINVAL;
-break;
-
-case SEGBASE_GS_USER_SEL:
-__asm__ __volatile__ (
-" swapgs  \n"
-"1:   movl %k0,%%gs   \n"
-""safe_swapgs"\n"
-".section .fixup,\"ax\"   \n"
-"2:   xorl %k0,%k0\n"
-" jmp  1b \n"
-".previous\n"
-_ASM_EXTABLE(1b, 2b)
-: : "r" (base&0x) );
-break;
-
-default:
-ret = -EINVAL;
-break;
-}
-
-return ret;
-}
-
-
 /* Returns TRUE if given descriptor is valid for GDT or LDT. */
 int check_descriptor(const struct domain *dom, struct desc_struct *d)
 {
-- 
2.11.0


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