Mailing List Archive

[PATCH 2 of 2] [v3] xen/x86: Add FS and GS base to HVM VCPU context
Add FS and GS base to the HVM VCPU context returned by xc_vcpu_getcontext()

Signed-off-by: Aravindh Puthiyaparambil <aravindh@virtuata.com>

diff -r be41f3b599d9 -r 1f39b9fe704f xen/arch/x86/domctl.c
--- a/xen/arch/x86/domctl.c Wed Apr 25 11:35:29 2012 -0700
+++ b/xen/arch/x86/domctl.c Wed Apr 25 11:35:43 2012 -0700
@@ -1590,8 +1590,23 @@ void arch_get_info_guest(struct vcpu *v,
c.nat->user_regs.es = sreg.sel;
hvm_get_segment_register(v, x86_seg_fs, &sreg);
c.nat->user_regs.fs = sreg.sel;
+#ifdef __x86_64__
+ c.nat->fs_base = sreg.base;
+#endif
hvm_get_segment_register(v, x86_seg_gs, &sreg);
c.nat->user_regs.gs = sreg.sel;
+#ifdef __x86_64__
+ if ( ring_0(&c.nat->user_regs) )
+ {
+ c.nat->gs_base_kernel = sreg.base;
+ c.nat->gs_base_user = hvm_get_shadow_gs_base(v);
+ }
+ else
+ {
+ c.nat->gs_base_user = sreg.base;
+ c.nat->gs_base_kernel = hvm_get_shadow_gs_base(v);
+ }
+#endif
}
else
{

_______________________________________________
Xen-devel mailing list
Xen-devel@lists.xen.org
http://lists.xen.org/xen-devel
Re: [PATCH 2 of 2] [v3] xen/x86: Add FS and GS base to HVM VCPU context [ In reply to ]
>>> On 25.04.12 at 20:38, Aravindh Puthiyaparambil <aravindh@virtuata.com> wrote:
> Add FS and GS base to the HVM VCPU context returned by xc_vcpu_getcontext()

Given that we're in feature freeze right now - is this actually fixing some
shortcoming somewhere? Otherwise it may need to wait until 4.2 is out.

Jan

> Signed-off-by: Aravindh Puthiyaparambil <aravindh@virtuata.com>
>
> diff -r be41f3b599d9 -r 1f39b9fe704f xen/arch/x86/domctl.c
> --- a/xen/arch/x86/domctl.c Wed Apr 25 11:35:29 2012 -0700
> +++ b/xen/arch/x86/domctl.c Wed Apr 25 11:35:43 2012 -0700
> @@ -1590,8 +1590,23 @@ void arch_get_info_guest(struct vcpu *v,
> c.nat->user_regs.es = sreg.sel;
> hvm_get_segment_register(v, x86_seg_fs, &sreg);
> c.nat->user_regs.fs = sreg.sel;
> +#ifdef __x86_64__
> + c.nat->fs_base = sreg.base;
> +#endif
> hvm_get_segment_register(v, x86_seg_gs, &sreg);
> c.nat->user_regs.gs = sreg.sel;
> +#ifdef __x86_64__
> + if ( ring_0(&c.nat->user_regs) )
> + {
> + c.nat->gs_base_kernel = sreg.base;
> + c.nat->gs_base_user = hvm_get_shadow_gs_base(v);
> + }
> + else
> + {
> + c.nat->gs_base_user = sreg.base;
> + c.nat->gs_base_kernel = hvm_get_shadow_gs_base(v);
> + }
> +#endif
> }
> else
> {




_______________________________________________
Xen-devel mailing list
Xen-devel@lists.xen.org
http://lists.xen.org/xen-devel
Re: [PATCH 2 of 2] [v3] xen/x86: Add FS and GS base to HVM VCPU context [ In reply to ]
On 27/04/2012 13:49, "Jan Beulich" <JBeulich@suse.com> wrote:

>>>> On 25.04.12 at 20:38, Aravindh Puthiyaparambil <aravindh@virtuata.com>
>>>> wrote:
>> Add FS and GS base to the HVM VCPU context returned by xc_vcpu_getcontext()
>
> Given that we're in feature freeze right now - is this actually fixing some
> shortcoming somewhere? Otherwise it may need to wait until 4.2 is out.

I think we can make a judgement call on this one that it is obviously safe
to check it in. Even if the patch is buggy, it's only filling in data fields
with garbage, which were uninitialised garbage in the first place.

-- Keir

> Jan
>
>> Signed-off-by: Aravindh Puthiyaparambil <aravindh@virtuata.com>
>>
>> diff -r be41f3b599d9 -r 1f39b9fe704f xen/arch/x86/domctl.c
>> --- a/xen/arch/x86/domctl.c Wed Apr 25 11:35:29 2012 -0700
>> +++ b/xen/arch/x86/domctl.c Wed Apr 25 11:35:43 2012 -0700
>> @@ -1590,8 +1590,23 @@ void arch_get_info_guest(struct vcpu *v,
>> c.nat->user_regs.es = sreg.sel;
>> hvm_get_segment_register(v, x86_seg_fs, &sreg);
>> c.nat->user_regs.fs = sreg.sel;
>> +#ifdef __x86_64__
>> + c.nat->fs_base = sreg.base;
>> +#endif
>> hvm_get_segment_register(v, x86_seg_gs, &sreg);
>> c.nat->user_regs.gs = sreg.sel;
>> +#ifdef __x86_64__
>> + if ( ring_0(&c.nat->user_regs) )
>> + {
>> + c.nat->gs_base_kernel = sreg.base;
>> + c.nat->gs_base_user = hvm_get_shadow_gs_base(v);
>> + }
>> + else
>> + {
>> + c.nat->gs_base_user = sreg.base;
>> + c.nat->gs_base_kernel = hvm_get_shadow_gs_base(v);
>> + }
>> +#endif
>> }
>> else
>> {
>
>
>



_______________________________________________
Xen-devel mailing list
Xen-devel@lists.xen.org
http://lists.xen.org/xen-devel
Re: [PATCH 2 of 2] [v3] xen/x86: Add FS and GS base to HVM VCPU context [ In reply to ]
On Apr 27, 2012 8:02 AM, "Keir Fraser" <keir@xen.org> wrote:
>
> On 27/04/2012 13:49, "Jan Beulich" <JBeulich@suse.com> wrote:
>
> >>>> On 25.04.12 at 20:38, Aravindh Puthiyaparambil <aravindh@virtuata.com
>
> >>>> wrote:
> >> Add FS and GS base to the HVM VCPU context returned by
xc_vcpu_getcontext()
> >
> > Given that we're in feature freeze right now - is this actually fixing
some
> > shortcoming somewhere? Otherwise it may need to wait until 4.2 is out.
>
> I think we can make a judgement call on this one that it is obviously safe
> to check it in. Even if the patch is buggy, it's only filling in data
fields
> with garbage, which were uninitialised garbage in the first place.
>

It will be helpful if this can make it into 4.2. It does provide useful
info for Windows guests.

Thanks,
Aravindh

> -- Keir
>
> > Jan
> >
> >> Signed-off-by: Aravindh Puthiyaparambil <aravindh@virtuata.com>
> >>
> >> diff -r be41f3b599d9 -r 1f39b9fe704f xen/arch/x86/domctl.c
> >> --- a/xen/arch/x86/domctl.c Wed Apr 25 11:35:29 2012 -0700
> >> +++ b/xen/arch/x86/domctl.c Wed Apr 25 11:35:43 2012 -0700
> >> @@ -1590,8 +1590,23 @@ void arch_get_info_guest(struct vcpu *v,
> >> c.nat->user_regs.es = sreg.sel;
> >> hvm_get_segment_register(v, x86_seg_fs, &sreg);
> >> c.nat->user_regs.fs = sreg.sel;
> >> +#ifdef __x86_64__
> >> + c.nat->fs_base = sreg.base;
> >> +#endif
> >> hvm_get_segment_register(v, x86_seg_gs, &sreg);
> >> c.nat->user_regs.gs = sreg.sel;
> >> +#ifdef __x86_64__
> >> + if ( ring_0(&c.nat->user_regs) )
> >> + {
> >> + c.nat->gs_base_kernel = sreg.base;
> >> + c.nat->gs_base_user = hvm_get_shadow_gs_base(v);
> >> + }
> >> + else
> >> + {
> >> + c.nat->gs_base_user = sreg.base;
> >> + c.nat->gs_base_kernel = hvm_get_shadow_gs_base(v);
> >> + }
> >> +#endif
> >> }
> >> else
> >> {
> >
> >
> >
>
>