Yoshiaki Tamura
2008-Sep-11 10:44 UTC
[Xen-devel] [PATCH] Fix arguments passed to SHADOW_PRINTK
Hi.
When I compiled xen-3.3-testing with DEBUG_TRACE_DUMP in xen/include/xen/lib.h
turned on, I got some errors at SHADOW_PRINTK.
The following patch will fix the arguments passed to SHADOW_PRINTK in
xen/arch/x86/mm/shadow/common.c and xen/arch/x86/mm/shadow/multi.c.
Although I haven''t tested, it is the same for xen-unstable.hg
Thanks,
Yoshi
Signed-off-by: Yoshi Tamura <tamura.yoshiaki@lab.ntt.co.jp>
diff -r bfd1157dd315 xen/arch/x86/mm/shadow/common.c
--- a/xen/arch/x86/mm/shadow/common.c Thu Sep 11 08:06:48 2008 +0900
+++ b/xen/arch/x86/mm/shadow/common.c Thu Sep 11 09:25:28 2008 +0900
@@ -701,7 +701,8 @@ static void _sh_resync(struct vcpu *v, m
ASSERT(!sh_page_has_multiple_shadows(mfn_to_page(gmfn)));
SHADOW_PRINTK("d=%d, v=%d, gmfn=%05lx, va=%lx\n",
- v->domain->domain_id, v->vcpu_id, mfn_x(gmfn), va);
+ v->domain->domain_id, v->vcpu_id, mfn_x(gmfn),
+ sh_map_domain_page(gmfn));
/* Need to pull write access so the page *stays* in sync. */
if ( oos_remove_write_access(v, gmfn, fixup) )
@@ -953,7 +954,8 @@ int sh_unsync(struct vcpu *v, mfn_t gmfn
ASSERT(shadow_locked_by_me(v->domain));
SHADOW_PRINTK("d=%d, v=%d, gmfn=%05lx va %lx\n",
- v->domain->domain_id, v->vcpu_id, mfn_x(gmfn), va);
+ v->domain->domain_id, v->vcpu_id, mfn_x(gmfn),
+ sh_map_domain_page(gmfn));
pg = mfn_to_page(gmfn);
diff -r bfd1157dd315 xen/arch/x86/mm/shadow/multi.c
--- a/xen/arch/x86/mm/shadow/multi.c Thu Sep 11 08:06:48 2008 +0900
+++ b/xen/arch/x86/mm/shadow/multi.c Thu Sep 11 09:49:09 2008 +0900
@@ -3041,9 +3041,14 @@ static int sh_page_fault(struct vcpu *v,
int fast_emul = 0;
#endif
+#ifdef __x86_64__
SHADOW_PRINTK("d:v=%u:%u va=%#lx err=%u, rip=%lx\n",
v->domain->domain_id, v->vcpu_id, va,
regs->error_code,
regs->rip);
+#elif defined(__i386__)
+ SHADOW_PRINTK("d:v=%u:%u va=%#lx err=%u\n",
+ v->domain->domain_id, v->vcpu_id, va,
regs->error_code);
+#endif /* __i386__ */
perfc_incr(shadow_fault);
--
TAMURA, Yoshiaki
NTT Cyber Space Labs
OSS Computing Project
Kernel Group
E-mail: tamura.yoshiaki@lab.ntt.co.jp
TEL: +81-46-859-2771
FAX: +81-46-855-1152
Address: 1-1 Hikarinooka, Yokosuka
Kanagawa 239-0847 JAPAN
_______________________________________________
Xen-devel mailing list
Xen-devel@lists.xensource.com
http://lists.xensource.com/xen-devel
Gianluca Guida
2008-Sep-11 10:49 UTC
Re: [Xen-devel] [PATCH] Fix arguments passed to SHADOW_PRINTK
Hi, Yoshiaki Tamura wrote:> Hi. > > When I compiled xen-3.3-testing with DEBUG_TRACE_DUMP in xen/include/xen/lib.h > turned on, I got some errors at SHADOW_PRINTK. > The following patch will fix the arguments passed to SHADOW_PRINTK in > xen/arch/x86/mm/shadow/common.c and xen/arch/x86/mm/shadow/multi.c.My fault, the va argument was removed with recent changes in the OOS code and it is unneeded now.> SHADOW_PRINTK("d=%d, v=%d, gmfn=%05lx, va=%lx\n", > - v->domain->domain_id, v->vcpu_id, mfn_x(gmfn), va); > + v->domain->domain_id, v->vcpu_id, mfn_x(gmfn), > + sh_map_domain_page(gmfn)); > > /* Need to pull write access so the page *stays* in sync. */ > if ( oos_remove_write_access(v, gmfn, fixup) ) > @@ -953,7 +954,8 @@ int sh_unsync(struct vcpu *v, mfn_t gmfn > ASSERT(shadow_locked_by_me(v->domain)); > > SHADOW_PRINTK("d=%d, v=%d, gmfn=%05lx va %lx\n", > - v->domain->domain_id, v->vcpu_id, mfn_x(gmfn), va); > + v->domain->domain_id, v->vcpu_id, mfn_x(gmfn), > + sh_map_domain_page(gmfn));These will likely break Xen in 32 bit, since you should unmap the gmfn in those architecture. As I said, the va argument is unneeded now, so you should remove it. Thanks, Gianluca _______________________________________________ Xen-devel mailing list Xen-devel@lists.xensource.com http://lists.xensource.com/xen-devel
Keir Fraser
2008-Sep-11 11:00 UTC
Re: [Xen-devel] [PATCH] Fix arguments passed to SHADOW_PRINTK
On 11/9/08 11:44, "Yoshiaki Tamura" <tamura.yoshiaki@lab.ntt.co.jp> wrote:> When I compiled xen-3.3-testing with DEBUG_TRACE_DUMP in xen/include/xen/lib.h > turned on, I got some errors at SHADOW_PRINTK. > The following patch will fix the arguments passed to SHADOW_PRINTK in > xen/arch/x86/mm/shadow/common.c and xen/arch/x86/mm/shadow/multi.c. > > Although I haven''t tested, it is the same for xen-unstable.hgFirst chunks of patch: If there is no longer a va to print, then don''t manufacture one to print; just remove it entirely from the printk. Apart from anything else, using sh_map_domain_page() without sh_unmap_domain_page() will leak mappings. And the va printed will not be useful anyway. Final chunk of patch: print regs->eip? That should work on both x86_64 and i386. Please fix and re-send. Thanks, Keir _______________________________________________ Xen-devel mailing list Xen-devel@lists.xensource.com http://lists.xensource.com/xen-devel
Yoshiaki Tamura
2008-Sep-11 11:24 UTC
Re: [Xen-devel] [PATCH] Fix arguments passed to SHADOW_PRINTK
Keir and Gianluca, Keir Fraser wrote:> On 11/9/08 11:44, "Yoshiaki Tamura" <tamura.yoshiaki@lab.ntt.co.jp> wrote: > >> When I compiled xen-3.3-testing with DEBUG_TRACE_DUMP in xen/include/xen/lib.h >> turned on, I got some errors at SHADOW_PRINTK. >> The following patch will fix the arguments passed to SHADOW_PRINTK in >> xen/arch/x86/mm/shadow/common.c and xen/arch/x86/mm/shadow/multi.c. >> >> Although I haven''t tested, it is the same for xen-unstable.hg > > First chunks of patch: If there is no longer a va to print, then don''t > manufacture one to print; just remove it entirely from the printk. Apart > from anything else, using sh_map_domain_page() without > sh_unmap_domain_page() will leak mappings. And the va printed will not be > useful anyway.Sorry, that was my mistake.> Final chunk of patch: print regs->eip? That should work on both x86_64 and > i386.When I compiled xen-3.3-testing with DEBUG_TRACE_DUMP turned on, I got the following errors. Would you please tell me how to work around? multi.c: In function ''sh_page_fault__guest_2'': multi.c:3045: error: ''struct cpu_user_regs'' has no member named ''rip'' multi.c: In function ''sh_page_fault__guest_3'': multi.c:3045: error: ''struct cpu_user_regs'' has no member named ''rip'' make[6]: *** [guest_3.o] Error 1 make[6]: *** Waiting for unfinished jobs.... make[6]: *** [guest_2.o] Error 1 make[5]: *** [shadow/built_in.o] Error 2 make[4]: *** [mm/built_in.o] Error 2 make[3]: *** [/home/tamura/Developer/kemari-v1-devel.hg/xen/arch/x86/built_in.o] Error 2 make[3]: *** Waiting for unfinished jobs.... make[2]: *** [/home/tamura/Developer/kemari-v1-devel.hg/xen/xen] Error 2 make[1]: *** [install] Error 2 make: *** [install-xen] Error 2> > Please fix and re-send. > > Thanks, > Keir > > > > _______________________________________________ > Xen-devel mailing list > Xen-devel@lists.xensource.com > http://lists.xensource.com/xen-devel > > >-- TAMURA, Yoshiaki NTT Cyber Space Labs OSS Computing Project Kernel Group E-mail: tamura.yoshiaki@lab.ntt.co.jp TEL: +81-46-859-2771 FAX: +81-46-855-1152 Address: 1-1 Hikarinooka, Yokosuka Kanagawa 239-0847 JAPAN _______________________________________________ Xen-devel mailing list Xen-devel@lists.xensource.com http://lists.xensource.com/xen-devel
Gianluca Guida
2008-Sep-11 11:42 UTC
Re: [Xen-devel] [PATCH] Fix arguments passed to SHADOW_PRINTK
Yoshiaki Tamura wrote:> Keir and Gianluca, > > When I compiled xen-3.3-testing with DEBUG_TRACE_DUMP turned on, > I got the following errors. Would you please tell me how to work around? > > multi.c: In function ''sh_page_fault__guest_2'': > multi.c:3045: error: ''struct cpu_user_regs'' has no member named ''rip''Using regs->eip should work both on 32 and 64 bit. Thanks, Gianluca _______________________________________________ Xen-devel mailing list Xen-devel@lists.xensource.com http://lists.xensource.com/xen-devel
Yoshiaki Tamura
2008-Sep-11 11:56 UTC
Re: [Xen-devel] [PATCH] Fix arguments passed to SHADOW_PRINTK
Gianluca,
Thanks for your comment.
The following is the fixed patch.
Thanks,
Yoshi
Signed-off-by: Yoshi Tamura <tamura.yoshiaki@lab.ntt.co.jp>
diff -r bfd1157dd315 xen/arch/x86/mm/shadow/common.c
--- a/xen/arch/x86/mm/shadow/common.c Thu Sep 11 08:06:48 2008 +0900
+++ b/xen/arch/x86/mm/shadow/common.c Thu Sep 11 11:42:40 2008 +0900
@@ -700,8 +700,8 @@ static void _sh_resync(struct vcpu *v, m
& ~SHF_L1_ANY));
ASSERT(!sh_page_has_multiple_shadows(mfn_to_page(gmfn)));
- SHADOW_PRINTK("d=%d, v=%d, gmfn=%05lx, va=%lx\n",
- v->domain->domain_id, v->vcpu_id, mfn_x(gmfn), va);
+ SHADOW_PRINTK("d=%d, v=%d, gmfn=%05lx\n",
+ v->domain->domain_id, v->vcpu_id, mfn_x(gmfn));
/* Need to pull write access so the page *stays* in sync. */
if ( oos_remove_write_access(v, gmfn, fixup) )
@@ -952,8 +952,8 @@ int sh_unsync(struct vcpu *v, mfn_t gmfn
ASSERT(shadow_locked_by_me(v->domain));
- SHADOW_PRINTK("d=%d, v=%d, gmfn=%05lx va %lx\n",
- v->domain->domain_id, v->vcpu_id, mfn_x(gmfn), va);
+ SHADOW_PRINTK("d=%d, v=%d, gmfn=%05lx\n",
+ v->domain->domain_id, v->vcpu_id, mfn_x(gmfn));
pg = mfn_to_page(gmfn);
diff -r bfd1157dd315 xen/arch/x86/mm/shadow/multi.c
--- a/xen/arch/x86/mm/shadow/multi.c Thu Sep 11 08:06:48 2008 +0900
+++ b/xen/arch/x86/mm/shadow/multi.c Thu Sep 11 11:46:48 2008 +0900
@@ -3041,9 +3041,9 @@ static int sh_page_fault(struct vcpu *v,
int fast_emul = 0;
#endif
- SHADOW_PRINTK("d:v=%u:%u va=%#lx err=%u, rip=%lx\n",
+ SHADOW_PRINTK("d:v=%u:%u va=%#lx err=%u, eip=%lx\n",
v->domain->domain_id, v->vcpu_id, va,
regs->error_code,
- regs->rip);
+ regs->eip);
perfc_incr(shadow_fault);
Gianluca Guida wrote:>
>
> Yoshiaki Tamura wrote:
>> Keir and Gianluca,
>>
>> When I compiled xen-3.3-testing with DEBUG_TRACE_DUMP turned on,
>> I got the following errors. Would you please tell me how to work
around?
>>
>> multi.c: In function ''sh_page_fault__guest_2'':
>> multi.c:3045: error: ''struct cpu_user_regs'' has no
member named ''rip''
>
> Using regs->eip should work both on 32 and 64 bit.
>
> Thanks,
> Gianluca
>
>
> _______________________________________________
> Xen-devel mailing list
> Xen-devel@lists.xensource.com
> http://lists.xensource.com/xen-devel
>
>
>
--
TAMURA, Yoshiaki
NTT Cyber Space Labs
OSS Computing Project
Kernel Group
E-mail: tamura.yoshiaki@lab.ntt.co.jp
TEL: +81-46-859-2771
FAX: +81-46-855-1152
Address: 1-1 Hikarinooka, Yokosuka
Kanagawa 239-0847 JAPAN
_______________________________________________
Xen-devel mailing list
Xen-devel@lists.xensource.com
http://lists.xensource.com/xen-devel