[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [Qemu-devel] [PATCH 2/3] Add command line options for TPM interface
From: |
Blue Swirl |
Subject: |
Re: [Qemu-devel] [PATCH 2/3] Add command line options for TPM interface |
Date: |
Wed, 25 Aug 2010 19:15:08 +0000 |
On Wed, Aug 25, 2010 at 4:33 PM, Andreas Niederl
<address@hidden> wrote:
> Signed-off-by: Andreas Niederl <address@hidden>
> ---
> hw/pc.h | 5 +++++
> qemu-config.c | 12 ++++++++++++
> qemu-config.h | 1 +
> qemu-options.hx | 6 ++++++
> vl.c | 25 +++++++++++++++++++++++++
> 5 files changed, 49 insertions(+), 0 deletions(-)
>
> diff --git a/hw/pc.h b/hw/pc.h
> index 63b0249..d95020c 100644
> --- a/hw/pc.h
> +++ b/hw/pc.h
> @@ -176,4 +176,9 @@ void isa_ne2000_init(int base, int irq, NICInfo *nd);
>
> int e820_add_entry(uint64_t, uint64_t, uint32_t);
>
> +#ifdef CONFIG_TPM
> +/* tpm.c */
> +extern int tpm_init(QemuOpts *opts);
'extern' is not needed for functions.
> +#endif
> +
> #endif
> diff --git a/qemu-config.c b/qemu-config.c
> index 3abe655..aedca13 100644
> --- a/qemu-config.c
> +++ b/qemu-config.c
> @@ -336,6 +336,18 @@ static QemuOptsList qemu_cpudef_opts = {
> },
> };
>
> +QemuOptsList qemu_tpm_opts = {
> + .name = "tpm",
> + .head = QTAILQ_HEAD_INITIALIZER(qemu_tpm_opts.head),
> + .desc = {
> + {
> + .name = "dev",
> + .type = QEMU_OPT_STRING,
> + },
> + { /*End of list */ }
> + },
> +};
> +
> static QemuOptsList *vm_config_groups[32] = {
> &qemu_drive_opts,
> &qemu_chardev_opts,
> diff --git a/qemu-config.h b/qemu-config.h
> index 533a049..492a35d 100644
> --- a/qemu-config.h
> +++ b/qemu-config.h
> @@ -3,6 +3,7 @@
>
> extern QemuOptsList qemu_fsdev_opts;
> extern QemuOptsList qemu_virtfs_opts;
> +extern QemuOptsList qemu_tpm_opts;
>
> QemuOptsList *qemu_find_opts(const char *group);
> void qemu_add_opts(QemuOptsList *list);
> diff --git a/qemu-options.hx b/qemu-options.hx
> index 453f129..771990b 100644
> --- a/qemu-options.hx
> +++ b/qemu-options.hx
> @@ -2230,6 +2230,12 @@ Normally QEMU loads a configuration file from
> @var{sysconfdir}/qemu.conf and
> address@hidden/address@hidden on startup. The @code{-nodefconfig}
> option will prevent QEMU from loading these configuration files at startup.
> ETEXI
> +#ifdef CONFIG_TPM
> +DEF("tpm", HAS_ARG, QEMU_OPTION_tpm,
> + "-tpm dev=<device>\n"
> + " enable TPM support and forward commands to the given
> TPM device file\n",
> + QEMU_ARCH_I386)
> +#endif
>
> HXCOMM This is the last statement. Insert new options before this line!
> STEXI
> diff --git a/vl.c b/vl.c
> index 91d1684..fe35f49 100644
> --- a/vl.c
> +++ b/vl.c
> @@ -1541,6 +1541,16 @@ static int fsdev_init_func(QemuOpts *opts, void
> *opaque)
> }
> #endif
>
> +#ifdef CONFIG_TPM
> +static int tpm_init_func(QemuOpts *opts, void *opaque)
> +{
> + if (tpm_init(opts) != 0) {
> + return 1;
> + }
> + return 0;
> +}
> +#endif
> +
> static int mon_init_func(QemuOpts *opts, void *opaque)
> {
> CharDriverState *chr;
> @@ -1860,6 +1870,10 @@ int main(int argc, char **argv, char **envp)
> qemu_add_opts(&qemu_virtfs_opts);
> #endif
>
> +#ifdef CONFIG_TPM
> + qemu_add_opts(&qemu_tpm_opts);
> +#endif
> +
> /* first pass of option parsing */
> optind = 1;
> while (optind < argc) {
> @@ -2360,6 +2374,12 @@ int main(int argc, char **argv, char **envp)
> qemu_free(arg_9p);
> break;
> }
> + case QEMU_OPTION_tpm:
> + opts = qemu_opts_parse(&qemu_tpm_opts, optarg, 0);
> + if (!opts) {
> + exit(1);
> + }
> + break;
> case QEMU_OPTION_serial:
> add_device_config(DEV_SERIAL, optarg);
> default_serial = 0;
> @@ -2713,6 +2733,11 @@ int main(int argc, char **argv, char **envp)
> exit(1);
> }
> #endif
> +#ifdef CONFIG_TPM
> + if (qemu_opts_foreach(&qemu_tpm_opts, tpm_init_func, NULL, 1) != 0) {
> + exit(1);
> + }
> +#endif
>
> os_daemonize();
>
> --
> 1.7.2.2
>
>
>