The size in pages of trace buffer should be t_info->tbuf_size rather than t_info pages. Signed-off-by: Yu Zhiguo <yuzg@cn.fujitsu.com> diff --git a/tools/libxc/xc_tbuf.c b/tools/libxc/xc_tbuf.c --- a/tools/libxc/xc_tbuf.c +++ b/tools/libxc/xc_tbuf.c @@ -15,6 +15,7 @@ */ #include "xc_private.h" +#include <xen/trace.h> static int tbuf_enable(int xc_handle, int enable) { @@ -44,6 +45,7 @@ int xc_tbuf_get_size(int xc_handle, unsigned long *size) { + struct t_info *t_info; int rc; DECLARE_SYSCTL; @@ -52,9 +54,19 @@ sysctl.u.tbuf_op.cmd = XEN_SYSCTL_TBUFOP_get_info; rc = xc_sysctl(xc_handle, &sysctl); - if (rc == 0) - *size = sysctl.u.tbuf_op.size; - return rc; + if ( rc != 0 ) + return rc; + + t_info = xc_map_foreign_range(xc_handle, DOMID_XEN, + sysctl.u.tbuf_op.size, PROT_READ | PROT_WRITE, + sysctl.u.tbuf_op.buffer_mfn); + + if ( t_info == NULL || t_info->tbuf_size == 0 ) + return -1; + + *size = t_info->tbuf_size; + + return 0; } int xc_tbuf_enable(int xc_handle, unsigned long pages, unsigned long *mfn, _______________________________________________ Xen-devel mailing list Xen-devel@lists.xensource.com http://lists.xensource.com/xen-devel
When did this change, and who changed it? It would be good to collect an appropriate Ack, e.g., from George Dunlap, if it was his xentrace changes. I can''t take un-acked patches from non-maintainers on stuff I don''t have good knowledge of myself, this late in the release cycle. -- Keir On 09/02/2010 10:57, "Yu Zhiguo" <yuzg@cn.fujitsu.com> wrote:> The size in pages of trace buffer should be t_info->tbuf_size > rather than t_info pages. > > Signed-off-by: Yu Zhiguo <yuzg@cn.fujitsu.com> > > diff --git a/tools/libxc/xc_tbuf.c b/tools/libxc/xc_tbuf.c > --- a/tools/libxc/xc_tbuf.c > +++ b/tools/libxc/xc_tbuf.c > @@ -15,6 +15,7 @@ > */ > > #include "xc_private.h" > +#include <xen/trace.h> > > static int tbuf_enable(int xc_handle, int enable) > { > @@ -44,6 +45,7 @@ > > int xc_tbuf_get_size(int xc_handle, unsigned long *size) > { > + struct t_info *t_info; > int rc; > DECLARE_SYSCTL; > > @@ -52,9 +54,19 @@ > sysctl.u.tbuf_op.cmd = XEN_SYSCTL_TBUFOP_get_info; > > rc = xc_sysctl(xc_handle, &sysctl); > - if (rc == 0) > - *size = sysctl.u.tbuf_op.size; > - return rc; > + if ( rc != 0 ) > + return rc; > + > + t_info = xc_map_foreign_range(xc_handle, DOMID_XEN, > + sysctl.u.tbuf_op.size, PROT_READ | PROT_WRITE, > + sysctl.u.tbuf_op.buffer_mfn); > + > + if ( t_info == NULL || t_info->tbuf_size == 0 ) > + return -1; > + > + *size = t_info->tbuf_size; > + > + return 0; > } > > int xc_tbuf_enable(int xc_handle, unsigned long pages, unsigned long *mfn, >_______________________________________________ Xen-devel mailing list Xen-devel@lists.xensource.com http://lists.xensource.com/xen-devel
Hi keir and George, Keir Fraser wrote:> When did this change, and who changed it? It would be good to collect an > appropriate Ack, e.g., from George Dunlap, if it was his xentrace changes. >I found this bug when I try ''xentrace_setsize''. The default ''current tbuf size'' should be 0x14 but 0x2 outputted. xc_tbuf_set_size() sets the tbuf size, it''s ok. But xc_tbuf_get_size() tries to get the size of t_info pages. Could George have a look at this problem? Regards, Yu> I can''t take un-acked patches from non-maintainers on stuff I don''t have > good knowledge of myself, this late in the release cycle. > > -- Keir > > On 09/02/2010 10:57, "Yu Zhiguo" <yuzg@cn.fujitsu.com> wrote: > >> The size in pages of trace buffer should be t_info->tbuf_size >> rather than t_info pages. >> >> Signed-off-by: Yu Zhiguo <yuzg@cn.fujitsu.com> >> >> diff --git a/tools/libxc/xc_tbuf.c b/tools/libxc/xc_tbuf.c >> --- a/tools/libxc/xc_tbuf.c >> +++ b/tools/libxc/xc_tbuf.c >> @@ -15,6 +15,7 @@ >> */ >> >> #include "xc_private.h" >> +#include <xen/trace.h> >> >> static int tbuf_enable(int xc_handle, int enable) >> { >> @@ -44,6 +45,7 @@ >> >> int xc_tbuf_get_size(int xc_handle, unsigned long *size) >> { >> + struct t_info *t_info; >> int rc; >> DECLARE_SYSCTL; >> >> @@ -52,9 +54,19 @@ >> sysctl.u.tbuf_op.cmd = XEN_SYSCTL_TBUFOP_get_info; >> >> rc = xc_sysctl(xc_handle, &sysctl); >> - if (rc == 0) >> - *size = sysctl.u.tbuf_op.size; >> - return rc; >> + if ( rc != 0 ) >> + return rc; >> + >> + t_info = xc_map_foreign_range(xc_handle, DOMID_XEN, >> + sysctl.u.tbuf_op.size, PROT_READ | PROT_WRITE, >> + sysctl.u.tbuf_op.buffer_mfn); >> + >> + if ( t_info == NULL || t_info->tbuf_size == 0 ) >> + return -1; >> + >> + *size = t_info->tbuf_size; >> + >> + return 0; >> } >> >> int xc_tbuf_enable(int xc_handle, unsigned long pages, unsigned long *mfn, >> > > > > >_______________________________________________ Xen-devel mailing list Xen-devel@lists.xensource.com http://lists.xensource.com/xen-devel
(Replying to the whole list) This is changing a function that is only used in one place in the Xen source tree; the change makes sense. Acked-by: George Dunlap <george.dunlap@eu.citrix.com> On Tue, Feb 9, 2010 at 10:57 AM, Yu Zhiguo <yuzg@cn.fujitsu.com> wrote:> The size in pages of trace buffer should be t_info->tbuf_size > rather than t_info pages. > > Signed-off-by: Yu Zhiguo <yuzg@cn.fujitsu.com> > > diff --git a/tools/libxc/xc_tbuf.c b/tools/libxc/xc_tbuf.c > --- a/tools/libxc/xc_tbuf.c > +++ b/tools/libxc/xc_tbuf.c > @@ -15,6 +15,7 @@ > */ > > #include "xc_private.h" > +#include <xen/trace.h> > > static int tbuf_enable(int xc_handle, int enable) > { > @@ -44,6 +45,7 @@ > > int xc_tbuf_get_size(int xc_handle, unsigned long *size) > { > + struct t_info *t_info; > int rc; > DECLARE_SYSCTL; > > @@ -52,9 +54,19 @@ > sysctl.u.tbuf_op.cmd = XEN_SYSCTL_TBUFOP_get_info; > > rc = xc_sysctl(xc_handle, &sysctl); > - if (rc == 0) > - *size = sysctl.u.tbuf_op.size; > - return rc; > + if ( rc != 0 ) > + return rc; > + > + t_info = xc_map_foreign_range(xc_handle, DOMID_XEN, > + sysctl.u.tbuf_op.size, PROT_READ | PROT_WRITE, > + sysctl.u.tbuf_op.buffer_mfn); > + > + if ( t_info == NULL || t_info->tbuf_size == 0 ) > + return -1; > + > + *size = t_info->tbuf_size; > + > + return 0; > } > > int xc_tbuf_enable(int xc_handle, unsigned long pages, unsigned long *mfn, > > > _______________________________________________ > Xen-devel mailing list > Xen-devel@lists.xensource.com > http://lists.xensource.com/xen-devel >_______________________________________________ Xen-devel mailing list Xen-devel@lists.xensource.com http://lists.xensource.com/xen-devel