WARNING - OLD ARCHIVES

This is an archived copy of the Xen.org mailing list, which we have preserved to ensure that existing links to archives are not broken. The live archive, which contains the latest emails, can be found at http://lists.xen.org/
   
 
 
Xen 
 
Home Products Support Community News
 
   
 

xen-devel

[Xen-devel] Re: [Crash-utility] xencrash fixes for xen-3.3.0

To: "Discussion list for crash utility usage, maintenance and development" <crash-utility@xxxxxxxxxx>
Subject: [Xen-devel] Re: [Crash-utility] xencrash fixes for xen-3.3.0
From: Itsuro ODA <oda@xxxxxxxxxxxxx>
Date: Wed, 08 Oct 2008 07:33:50 +0900
Cc: xen-devel@xxxxxxxxxxxxxxxxxxx
Delivery-date: Tue, 07 Oct 2008 15:32:13 -0700
Envelope-to: www-data@xxxxxxxxxxxxxxxxxxx
In-reply-to: <48EB6679.8070406@xxxxxxxxxx>
List-help: <mailto:xen-devel-request@lists.xensource.com?subject=help>
List-id: Xen developer discussion <xen-devel.lists.xensource.com>
List-post: <mailto:xen-devel@lists.xensource.com>
List-subscribe: <http://lists.xensource.com/mailman/listinfo/xen-devel>, <mailto:xen-devel-request@lists.xensource.com?subject=subscribe>
List-unsubscribe: <http://lists.xensource.com/mailman/listinfo/xen-devel>, <mailto:xen-devel-request@lists.xensource.com?subject=unsubscribe>
References: <20081007100210.21F2.ODA@xxxxxxxxxxxxx> <48EB6679.8070406@xxxxxxxxxx>
Sender: xen-devel-bounces@xxxxxxxxxxxxxxxxxxx
Hi,

It is a good question.
I checked about i386. __per_cpu_data_end - __per_cpu_start is smaller
than 4K, but PERCPU_SHIFT is 13 (it is common both x86_32 and x86_64).
Oops.

I will consider more.

Thanks
Itsuro Oda

On Tue, 07 Oct 2008 09:39:05 -0400
Dave Anderson <anderson@xxxxxxxxxx> wrote:

> Itsuro ODA wrote:
> > Hi,
> > 
> > This patch is for xen hypervisor analysis function of the
> > crash command to apply to the xen-3.3.0 (the newest version of xen).
> > 
> > * PERCPU_SHIFT becomes 13 (from 12) in the xen-3.3.0.
> >   This value is calculated from "__per_cpu_start" and "__per_cpu_data_end".
> > * "jiffies" does not exist in the xen-3.3.0.
> >   It was used to show the uptime. I found there is no altanernative
> >   (i.e. the xen hypervisor does not have the uptime.).
> >   Then if "jiffies" does not exist, "--:--:--" is showed as UPTIME in
> >   the sys command.
> >   (Is it better to eliminate the whole UPTIME line ?)
> >   --- example ---
> >   crash> sys
> >      KERNEL: xen-syms
> >    DUMPFILE: vmcore
> >        CPUS: 4
> >     DOMAINS: 5
> >      UPTIME: --:--:--
> >     MACHINE: Intel(R) Core(TM)2 Quad  CPU   Q9450  @ 2.66GHz  (2660 Mhz)
> >      MEMORY: 2 GB
> >   ----------------
> > 
> > This patch is for crash-4.0-7.2.
> > 
> > Thanks
> > Itsuro Oda
> 
> The patch looks OK.  But just for sanity's sake, is it guaranteed that
> the per_cpu data section will be greater than 4k on both architectures?
> Or could there be some combination of xen CONFIG options that could
> reduce the i386 per_cpu data section contents to less than 4K even though
> PERCPU_SHIFT is 13?
> 
> Dave
> 
> > 
> > ---
> > --- xen_hyper_defs.h.org        2008-10-06 13:45:39.000000000 +0900
> > +++ xen_hyper_defs.h    2008-10-06 13:44:44.000000000 +0900
> > @@ -134,9 +134,8 @@
> >  #endif
> > 
> >  #if defined(X86) || defined(X86_64)
> > -#define XEN_HYPER_PERCPU_SHIFT 12
> >  #define xen_hyper_per_cpu(var, cpu)  \
> > -       ((ulong)(var) + (((ulong)(cpu))<<XEN_HYPER_PERCPU_SHIFT))
> > +       ((ulong)(var) + (((ulong)(cpu))<<xht->percpu_shift))
> >  #elif defined(IA64)
> >  #define xen_hyper_per_cpu(var, cpu)  \
> >         ((xht->flags & XEN_HYPER_SMP) ? \
> > @@ -404,6 +403,7 @@
> >         ulong *cpumask;
> >         uint *cpu_idxs;
> >         ulong *__per_cpu_offset;
> > +       int percpu_shift;
> >  };
> > 
> >  struct xen_hyper_dumpinfo_context {
> > --- xen_hyper.c.org     2008-10-06 13:41:14.000000000 +0900
> > +++ xen_hyper.c 2008-10-06 14:15:03.000000000 +0900
> > @@ -71,6 +71,8 @@
> >  #endif
> > 
> >  #if defined(X86) || defined(X86_64)
> > +       xht->percpu_shift =
> > +           (symbol_value("__per_cpu_data_end") - 
> > symbol_value("__per_cpu_start") > 4096) ? 13: 12;
> >         member_offset = MEMBER_OFFSET("cpuinfo_x86", "x86_model_id");
> >         buf = GETBUF(XEN_HYPER_SIZE(cpuinfo_x86));
> >         if (xen_hyper_test_pcpu_id(XEN_HYPER_CRASHING_CPU())) {
> > @@ -1746,9 +1748,11 @@
> >                         tmp2 = (ulong)jiffies_64;
> >                         jiffies_64 = (ulonglong)(tmp2 - tmp1);
> >                 }
> > -       } else {
> > +       } else if (symbol_exists("jiffies")) {
> >                 get_symbol_data("jiffies", sizeof(long), &jiffies);
> >                 jiffies_64 = (ulonglong)jiffies;
> > +       } else {
> > +               jiffies_64 = 0; /* hypervisor does not have uptime */
> >         }
> > 
> >         return jiffies_64;
> > --- xen_hyper_command.c.org     2008-10-07 08:05:37.000000000 +0900
> > +++ xen_hyper_command.c 2008-10-07 08:24:29.000000000 +0900
> > @@ -1022,7 +1022,8 @@
> >                 (buf1, "%d\n", XEN_HYPER_NR_DOMAINS()));
> >         /* !!!Display a date here if it can be found. */
> >         XEN_HYPER_PRI(fp, len, "UPTIME: ", buf1, flag,
> > -               (buf1, "%s\n", convert_time(xen_hyper_get_uptime_hyper(), 
> > buf2)));
> > +               (buf1, "%s\n", (xen_hyper_get_uptime_hyper() ?
> > +                convert_time(xen_hyper_get_uptime_hyper(), buf2) : 
> > "--:--:--")));
> >         /* !!!Display a version here if it can be found. */
> >         XEN_HYPER_PRI_CONST(fp, len, "MACHINE: ", flag);
> >         if (strlen(uts->machine)) {
> > ---
> 
> 
> 
> 
> --
> Crash-utility mailing list
> Crash-utility@xxxxxxxxxx
> https://www.redhat.com/mailman/listinfo/crash-utility

-- 
Itsuro ODA <oda@xxxxxxxxxxxxx>


_______________________________________________
Xen-devel mailing list
Xen-devel@xxxxxxxxxxxxxxxxxxx
http://lists.xensource.com/xen-devel