From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from [140.186.70.92] (port=43604 helo=eggs.gnu.org) by lists.gnu.org with esmtp (Exim 4.43) id 1OoLRb-0006Un-8i for qemu-devel@nongnu.org; Wed, 25 Aug 2010 15:15:33 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.69) (envelope-from ) id 1OoLRZ-0006AR-D0 for qemu-devel@nongnu.org; Wed, 25 Aug 2010 15:15:30 -0400 Received: from mail-qy0-f180.google.com ([209.85.216.180]:41690) by eggs.gnu.org with esmtp (Exim 4.69) (envelope-from ) id 1OoLRZ-0006AF-9w for qemu-devel@nongnu.org; Wed, 25 Aug 2010 15:15:29 -0400 Received: by qyk31 with SMTP id 31so928858qyk.4 for ; Wed, 25 Aug 2010 12:15:28 -0700 (PDT) MIME-Version: 1.0 In-Reply-To: <1282753982-1761-2-git-send-email-andreas.niederl@iaik.tugraz.at> References: <1282753982-1761-1-git-send-email-andreas.niederl@iaik.tugraz.at> <1282753982-1761-2-git-send-email-andreas.niederl@iaik.tugraz.at> From: Blue Swirl Date: Wed, 25 Aug 2010 19:15:08 +0000 Message-ID: Subject: Re: [Qemu-devel] [PATCH 2/3] Add command line options for TPM interface Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: quoted-printable List-Id: qemu-devel.nongnu.org List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: Andreas Niederl Cc: qemu-devel@nongnu.org On Wed, Aug 25, 2010 at 4:33 PM, Andreas Niederl wrote: > Signed-off-by: Andreas Niederl > --- > =C2=A0hw/pc.h =C2=A0 =C2=A0 =C2=A0 =C2=A0 | =C2=A0 =C2=A05 +++++ > =C2=A0qemu-config.c =C2=A0 | =C2=A0 12 ++++++++++++ > =C2=A0qemu-config.h =C2=A0 | =C2=A0 =C2=A01 + > =C2=A0qemu-options.hx | =C2=A0 =C2=A06 ++++++ > =C2=A0vl.c =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0| =C2=A0 25 +++++++++= ++++++++++++++++ > =C2=A05 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); > > =C2=A0int 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 > + > =C2=A0#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 =3D { > =C2=A0 =C2=A0 }, > =C2=A0}; > > +QemuOptsList qemu_tpm_opts =3D { > + =C2=A0 =C2=A0.name =3D "tpm", > + =C2=A0 =C2=A0.head =3D QTAILQ_HEAD_INITIALIZER(qemu_tpm_opts.head), > + =C2=A0 =C2=A0.desc =3D { > + =C2=A0 =C2=A0 =C2=A0 =C2=A0{ > + =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0.name =3D "dev", > + =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0.type =3D QEMU_OPT_STRING, > + =C2=A0 =C2=A0 =C2=A0 =C2=A0}, > + =C2=A0 =C2=A0 =C2=A0 =C2=A0{ /*End of list */ } > + =C2=A0 =C2=A0}, > +}; > + > =C2=A0static QemuOptsList *vm_config_groups[32] =3D { > =C2=A0 =C2=A0 &qemu_drive_opts, > =C2=A0 =C2=A0 &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 @@ > > =C2=A0extern QemuOptsList qemu_fsdev_opts; > =C2=A0extern QemuOptsList qemu_virtfs_opts; > +extern QemuOptsList qemu_tpm_opts; > > =C2=A0QemuOptsList *qemu_find_opts(const char *group); > =C2=A0void 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 > =C2=A0@var{sysconfdir}/target-@var{ARCH}.conf on startup. =C2=A0The @code= {-nodefconfig} > =C2=A0option will prevent QEMU from loading these configuration files at = startup. > =C2=A0ETEXI > +#ifdef CONFIG_TPM > +DEF("tpm", HAS_ARG, QEMU_OPTION_tpm, > + =C2=A0 =C2=A0"-tpm dev=3D\n" > + =C2=A0 =C2=A0" =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0e= nable TPM support and forward commands to the given TPM device file\n", > + =C2=A0 =C2=A0QEMU_ARCH_I386) > +#endif > > =C2=A0HXCOMM This is the last statement. Insert new options before this l= ine! > =C2=A0STEXI > 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 *o= paque) > =C2=A0} > =C2=A0#endif > > +#ifdef CONFIG_TPM > +static int tpm_init_func(QemuOpts *opts, void *opaque) > +{ > + =C2=A0 =C2=A0if (tpm_init(opts) !=3D 0) { > + =C2=A0 =C2=A0 =C2=A0 =C2=A0return 1; > + =C2=A0 =C2=A0} > + =C2=A0 =C2=A0return 0; > +} > +#endif > + > =C2=A0static int mon_init_func(QemuOpts *opts, void *opaque) > =C2=A0{ > =C2=A0 =C2=A0 CharDriverState *chr; > @@ -1860,6 +1870,10 @@ int main(int argc, char **argv, char **envp) > =C2=A0 =C2=A0 qemu_add_opts(&qemu_virtfs_opts); > =C2=A0#endif > > +#ifdef CONFIG_TPM > + =C2=A0 =C2=A0qemu_add_opts(&qemu_tpm_opts); > +#endif > + > =C2=A0 =C2=A0 /* first pass of option parsing */ > =C2=A0 =C2=A0 optind =3D 1; > =C2=A0 =C2=A0 while (optind < argc) { > @@ -2360,6 +2374,12 @@ int main(int argc, char **argv, char **envp) > =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 qemu_free(arg_9p)= ; > =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 break; > =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 } > + =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0case QEMU_OPTION_tpm: > + =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0opts =3D qemu_op= ts_parse(&qemu_tpm_opts, optarg, 0); > + =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0if (!opts) { > + =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0ex= it(1); > + =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0} > + =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0break; > =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 case QEMU_OPTION_serial: > =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 add_device_config= (DEV_SERIAL, optarg); > =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 default_serial = =3D 0; > @@ -2713,6 +2733,11 @@ int main(int argc, char **argv, char **envp) > =C2=A0 =C2=A0 =C2=A0 =C2=A0 exit(1); > =C2=A0 =C2=A0 } > =C2=A0#endif > +#ifdef CONFIG_TPM > + =C2=A0 =C2=A0if (qemu_opts_foreach(&qemu_tpm_opts, tpm_init_func, NULL,= 1) !=3D 0) { > + =C2=A0 =C2=A0 =C2=A0 =C2=A0exit(1); > + =C2=A0 =C2=A0} > +#endif > > =C2=A0 =C2=A0 os_daemonize(); > > -- > 1.7.2.2 > > >