All of lore.kernel.org
 help / color / mirror / Atom feed
From: Christoph Egger <Christoph.Egger@amd.com>
To: xen-devel@lists.xensource.com
Cc: Ian Campbell <Ian.Campbell@citrix.com>,
	Keir Fraser <Keir.Fraser@eu.citrix.com>
Subject: Re: Allow tools to see the hypervisor command line.
Date: Wed, 17 Jun 2009 17:42:13 +0200	[thread overview]
Message-ID: <200906171742.13899.Christoph.Egger@amd.com> (raw)
In-Reply-To: <1245252745.5862.145.camel@zakaz.uk.xensource.com>

On Wednesday 17 June 2009 17:32:25 Ian Campbell wrote:
> This is useful from tools in the same way /proc/cmdline is useful for
> the domain 0 kernel.

On NetBSD Dom0, this is sysctl machdep.booted_kernel.
Current implementation doesn't work properly, since Xen throws away
the first argument at startup.
Is it possible to not kill it ?

Christoph


>
> Signed-off-by: Ian Campbell <ian.campbell@citrix.com>
>
> diff -r 2e802c0a5c08 -r b7c94d5e638f tools/python/xen/lowlevel/xc/xc.c
> --- a/tools/python/xen/lowlevel/xc/xc.c	Wed Jun 17 15:32:27 2009 +0100
> +++ b/tools/python/xen/lowlevel/xc/xc.c	Wed Jun 17 16:31:38 2009 +0100
> @@ -1132,6 +1132,7 @@
>      xen_changeset_info_t xen_chgset;
>      xen_capabilities_info_t xen_caps;
>      xen_platform_parameters_t p_parms;
> +    xen_commandline_t xen_commandline;
>      long xen_version;
>      long xen_pagesize;
>      char str[128];
> @@ -1153,13 +1154,16 @@
>      if ( xc_version(self->xc_handle, XENVER_platform_parameters, &p_parms)
> != 0 ) return pyxc_error_to_exception();
>
> +    if ( xc_version(self->xc_handle, XENVER_commandline, &xen_commandline)
> != 0 ) +        return pyxc_error_to_exception();
> +
>      snprintf(str, sizeof(str), "virt_start=0x%lx", p_parms.virt_start);
>
>      xen_pagesize = xc_version(self->xc_handle, XENVER_pagesize, NULL);
>      if (xen_pagesize < 0 )
>          return pyxc_error_to_exception();
>
> -    return Py_BuildValue("{s:i,s:i,s:s,s:s,s:i,s:s,s:s,s:s,s:s,s:s,s:s}",
> +    return
> Py_BuildValue("{s:i,s:i,s:s,s:s,s:i,s:s,s:s,s:s,s:s,s:s,s:s,s:s}",
> "xen_major", xen_version >> 16,
>                           "xen_minor", (xen_version & 0xffff),
>                           "xen_extra", xen_extra,
> @@ -1167,6 +1171,7 @@
>                           "xen_pagesize", xen_pagesize,
>                           "platform_params", str,
>                           "xen_changeset", xen_chgset,
> +                         "xen_commandline", xen_commandline,
>                           "cc_compiler", xen_cc.compiler,
>                           "cc_compile_by", xen_cc.compile_by,
>                           "cc_compile_domain", xen_cc.compile_domain,
> diff -r 2e802c0a5c08 -r b7c94d5e638f tools/python/xen/xend/XendNode.py
> --- a/tools/python/xen/xend/XendNode.py	Wed Jun 17 15:32:27 2009 +0100
> +++ b/tools/python/xen/xend/XendNode.py	Wed Jun 17 16:31:38 2009 +0100
> @@ -91,6 +91,7 @@
>          # is directly exposed via XenAPI
>          self.other_config["xen_pagesize"] =
> self.xeninfo_dict()["xen_pagesize"] self.other_config["platform_params"] =
> self.xeninfo_dict()["platform_params"] +       
> self.other_config["xen_commandline"] =
> self.xeninfo_dict()["xen_commandline"]
>
>          # load CPU UUIDs
>          saved_cpus = self.state_store.load_state('cpu')
> @@ -612,7 +613,8 @@
>              "cc_compile_by":     xeninfo_dict["cc_compile_by"],
>              "cc_compile_domain": xeninfo_dict["cc_compile_domain"],
>              "cc_compile_date":   xeninfo_dict["cc_compile_date"],
> -            "xen_changeset":     xeninfo_dict["xen_changeset"]
> +            "xen_changeset":     xeninfo_dict["xen_changeset"],
> +            "xen_commandline":   xeninfo_dict["xen_commandline"]
>              })
>
>          return info
> @@ -888,6 +890,7 @@
>                        'xen_pagesize',
>                        'platform_params',
>                        'xen_changeset',
> +                      'xen_commandline',
>                        'cc_compiler',
>                        'cc_compile_by',
>                        'cc_compile_domain',
> diff -r 2e802c0a5c08 -r b7c94d5e638f tools/python/xen/xm/main.py
> --- a/tools/python/xen/xm/main.py	Wed Jun 17 15:32:27 2009 +0100
> +++ b/tools/python/xen/xm/main.py	Wed Jun 17 16:31:38 2009 +0100
> @@ -1757,6 +1757,7 @@
>              "xen_scheduler":     getVal(["sched_policy"]),
>              "xen_pagesize":      getVal(["other_config", "xen_pagesize"]),
>              "platform_params":   getVal(["other_config",
> "platform_params"]), +            "xen_commandline":  
> getVal(["other_config", "xen_commandline"]), "xen_changeset":    
> getVal(["software_version", "xen_changeset"]), "cc_compiler":      
> getVal(["software_version", "cc_compiler"]), "cc_compile_by":    
> getVal(["software_version", "cc_compile_by"]), diff -r 2e802c0a5c08 -r
> b7c94d5e638f xen/common/compat/kernel.c
> --- a/xen/common/compat/kernel.c	Wed Jun 17 15:32:27 2009 +0100
> +++ b/xen/common/compat/kernel.c	Wed Jun 17 16:31:38 2009 +0100
> @@ -14,6 +14,8 @@
>  #include <compat/xen.h>
>  #include <compat/nmi.h>
>  #include <compat/version.h>
> +
> +extern xen_commandline_t saved_cmdline;
>
>  #define xen_extraversion compat_extraversion
>  #define xen_extraversion_t compat_extraversion_t
> diff -r 2e802c0a5c08 -r b7c94d5e638f xen/common/kernel.c
> --- a/xen/common/kernel.c	Wed Jun 17 15:32:27 2009 +0100
> +++ b/xen/common/kernel.c	Wed Jun 17 16:31:38 2009 +0100
> @@ -24,12 +24,16 @@
>
>  int tainted;
>
> +xen_commandline_t saved_cmdline;
> +
>  void cmdline_parse(char *cmdline)
>  {
>      char opt[100], *optval, *optkey, *q;
>      const char *p = cmdline;
>      struct kernel_param *param;
>      int bool_assert;
> +
> +    safe_strcpy(saved_cmdline, cmdline);
>
>      if ( p == NULL )
>          return;
> @@ -246,7 +250,14 @@
>                             ARRAY_SIZE(current->domain->handle)) )
>              return -EFAULT;
>          return 0;
> -    }
> +    }
> +
> +    case XENVER_commandline:
> +    {
> +        if ( copy_to_guest(arg, saved_cmdline, ARRAY_SIZE(saved_cmdline))
> ) +            return -EFAULT;
> +        return 0;
> +    }
>      }
>
>      return -ENOSYS;
> diff -r 2e802c0a5c08 -r b7c94d5e638f xen/include/public/version.h
> --- a/xen/include/public/version.h	Wed Jun 17 15:32:27 2009 +0100
> +++ b/xen/include/public/version.h	Wed Jun 17 16:31:38 2009 +0100
> @@ -78,6 +78,9 @@
>  /* arg == xen_domain_handle_t. */
>  #define XENVER_guest_handle 8
>
> +#define XENVER_commandline 9
> +typedef char xen_commandline_t[1024];
> +
>  #endif /* __XEN_PUBLIC_VERSION_H__ */
>
>  /*
>
>
>
>
> _______________________________________________
> Xen-devel mailing list
> Xen-devel@lists.xensource.com
> http://lists.xensource.com/xen-devel



-- 
---to satisfy European Law for business letters:
Advanced Micro Devices GmbH
Karl-Hammerschmidt-Str. 34, 85609 Dornach b. Muenchen
Geschaeftsfuehrer: Thomas M. McCoy, Giuliano Meroni
Sitz: Dornach, Gemeinde Aschheim, Landkreis Muenchen
Registergericht Muenchen, HRB Nr. 43632

  reply	other threads:[~2009-06-17 15:42 UTC|newest]

Thread overview: 4+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2009-06-17 15:32 Allow tools to see the hypervisor command line Ian Campbell
2009-06-17 15:42 ` Christoph Egger [this message]
2009-06-17 15:49   ` Ian Campbell
2009-06-17 16:08     ` Christoph Egger

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=200906171742.13899.Christoph.Egger@amd.com \
    --to=christoph.egger@amd.com \
    --cc=Ian.Campbell@citrix.com \
    --cc=Keir.Fraser@eu.citrix.com \
    --cc=xen-devel@lists.xensource.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.