Message ID | 20110831143618.872204992@linux.vnet.ibm.com |
---|---|
State | New |
Headers | show |
On Wed, Aug 31, 2011 at 10:35:55AM -0400, Stefan Berger wrote: > The TPM interface (tpm_tis) needs to be explicitly enabled via > ./configure --enable-tpm. This patch also restricts the building of the > TPM support to i386 and x86_64 targets since only there it is currently > supported. This prevents that one will end up with support for a frontend > but no available backend. This can happen anyway - just don't load the tpms driver :) Presumably if libtpms exists on the system, we should assume it's there for a reason. configure should test that IMO and not limit architectures artificially. > > v3: > - fixed and moved hunks in Makefile.target into right place > > Signed-off-by: Stefan Berger <stefanb@linux.vnet.ibm.com> > Index:qemu/Makefile.target > =================================================================== > --- > Makefile.target | 1 + > configure | 20 ++++++++++++++++++++ > 2 files changed, 21 insertions(+) > > Index: qemu-git/Makefile.target > =================================================================== > --- qemu-git.orig/Makefile.target > +++ qemu-git/Makefile.target > @@ -233,6 +233,7 @@ obj-i386-y += debugcon.o multiboot.o > obj-i386-y += pc_piix.o > obj-i386-$(CONFIG_KVM) += kvmclock.o > obj-i386-$(CONFIG_SPICE) += qxl.o qxl-logger.o qxl-render.o > +obj-i386-$(CONFIG_TPM) += tpm_tis.o > > # shared objects > obj-ppc-y = ppc.o > Index: qemu-git/configure > =================================================================== > --- qemu-git.orig/configure > +++ qemu-git/configure > @@ -183,6 +183,7 @@ usb_redir="" > opengl="" > zlib="yes" > guest_agent="yes" > +tpm="no" > > # parse CC options first > for opt do > @@ -765,6 +766,8 @@ for opt do > ;; > --disable-guest-agent) guest_agent="no" > ;; > + --enable-tpm) tpm="yes" > + ;; > *) echo "ERROR: unknown option $opt"; show_help="yes" > ;; > esac > @@ -1044,6 +1047,7 @@ echo " --disable-usb-redir disable > echo " --enable-usb-redir enable usb network redirection support" > echo " --disable-guest-agent disable building of the QEMU Guest Agent" > echo " --enable-guest-agent enable building of the QEMU Guest Agent" > +echo " --enable-tpm enable an emulated TPM" > echo "" > echo "NOTE: The object files are built at the place where configure is launched" > exit 1 > @@ -2731,6 +2735,7 @@ echo "nss used $smartcard_nss" > echo "usb net redir $usb_redir" > echo "OpenGL support $opengl" > echo "build guest agent $guest_agent" > +echo "TPM support $tpm" > > if test "$sdl_too_old" = "yes"; then > echo "-> Your SDL version is too old - please upgrade to have SDL support" > @@ -3555,6 +3560,21 @@ if test "$gprof" = "yes" ; then > fi > fi > > +if test "$tpm" = "yes"; then > + has_tpm=0 > + if test "$target_softmmu" = "yes" ; then > + case "$TARGET_BASE_ARCH" in > + i386) > + has_tpm=1 > + ;; > + esac > + fi > + > + if test "$has_tpm" = "1"; then > + echo "CONFIG_TPM=y" >> $config_host_mak > + fi > +fi > + > linker_script="-Wl,-T../config-host.ld -Wl,-T,\$(SRC_PATH)/\$(ARCH).ld" > if test "$target_linux_user" = "yes" -o "$target_bsd_user" = "yes" ; then > case "$ARCH" in >
On 09/01/2011 01:23 PM, Michael S. Tsirkin wrote: > On Wed, Aug 31, 2011 at 10:35:55AM -0400, Stefan Berger wrote: >> The TPM interface (tpm_tis) needs to be explicitly enabled via >> ./configure --enable-tpm. This patch also restricts the building of the >> TPM support to i386 and x86_64 targets since only there it is currently >> supported. This prevents that one will end up with support for a frontend >> but no available backend. > This can happen anyway - just don't load the tpms driver :) > Presumably if libtpms exists on the system, we should > assume it's there for a reason. configure should test > that IMO and not limit architectures artificially. Well, what above means is that one a ppc machine you can still build a qemu-system-x86_64 with tpm 'builtin' (libtpms) support if libtpms is found on the system. However, I am not building the arm, ppc, mips etc. emulators with TPM support simply because I only have code in hw/pc.c enabling a x86_64/i386 pc with a TPM. If someone wants to extend and test those other machines then this restriction would have to be opened up to those targets that they extended. Stefan >> v3: >> - fixed and moved hunks in Makefile.target into right place >> >> Signed-off-by: Stefan Berger<stefanb@linux.vnet.ibm.com> >> Index:qemu/Makefile.target >> =================================================================== >> --- >> Makefile.target | 1 + >> configure | 20 ++++++++++++++++++++ >> 2 files changed, 21 insertions(+) >> >> Index: qemu-git/Makefile.target >> =================================================================== >> --- qemu-git.orig/Makefile.target >> +++ qemu-git/Makefile.target >> @@ -233,6 +233,7 @@ obj-i386-y += debugcon.o multiboot.o >> obj-i386-y += pc_piix.o >> obj-i386-$(CONFIG_KVM) += kvmclock.o >> obj-i386-$(CONFIG_SPICE) += qxl.o qxl-logger.o qxl-render.o >> +obj-i386-$(CONFIG_TPM) += tpm_tis.o >> >> # shared objects >> obj-ppc-y = ppc.o >> Index: qemu-git/configure >> =================================================================== >> --- qemu-git.orig/configure >> +++ qemu-git/configure >> @@ -183,6 +183,7 @@ usb_redir="" >> opengl="" >> zlib="yes" >> guest_agent="yes" >> +tpm="no" >> >> # parse CC options first >> for opt do >> @@ -765,6 +766,8 @@ for opt do >> ;; >> --disable-guest-agent) guest_agent="no" >> ;; >> + --enable-tpm) tpm="yes" >> + ;; >> *) echo "ERROR: unknown option $opt"; show_help="yes" >> ;; >> esac >> @@ -1044,6 +1047,7 @@ echo " --disable-usb-redir disable >> echo " --enable-usb-redir enable usb network redirection support" >> echo " --disable-guest-agent disable building of the QEMU Guest Agent" >> echo " --enable-guest-agent enable building of the QEMU Guest Agent" >> +echo " --enable-tpm enable an emulated TPM" >> echo "" >> echo "NOTE: The object files are built at the place where configure is launched" >> exit 1 >> @@ -2731,6 +2735,7 @@ echo "nss used $smartcard_nss" >> echo "usb net redir $usb_redir" >> echo "OpenGL support $opengl" >> echo "build guest agent $guest_agent" >> +echo "TPM support $tpm" >> >> if test "$sdl_too_old" = "yes"; then >> echo "-> Your SDL version is too old - please upgrade to have SDL support" >> @@ -3555,6 +3560,21 @@ if test "$gprof" = "yes" ; then >> fi >> fi >> >> +if test "$tpm" = "yes"; then >> + has_tpm=0 >> + if test "$target_softmmu" = "yes" ; then >> + case "$TARGET_BASE_ARCH" in >> + i386) >> + has_tpm=1 >> + ;; >> + esac >> + fi >> + >> + if test "$has_tpm" = "1"; then >> + echo "CONFIG_TPM=y">> $config_host_mak >> + fi >> +fi >> + >> linker_script="-Wl,-T../config-host.ld -Wl,-T,\$(SRC_PATH)/\$(ARCH).ld" >> if test "$target_linux_user" = "yes" -o "$target_bsd_user" = "yes" ; then >> case "$ARCH" in >>
=================================================================== --- Makefile.target | 1 + configure | 20 ++++++++++++++++++++ 2 files changed, 21 insertions(+) Index: qemu-git/Makefile.target =================================================================== --- qemu-git.orig/Makefile.target +++ qemu-git/Makefile.target @@ -233,6 +233,7 @@ obj-i386-y += debugcon.o multiboot.o obj-i386-y += pc_piix.o obj-i386-$(CONFIG_KVM) += kvmclock.o obj-i386-$(CONFIG_SPICE) += qxl.o qxl-logger.o qxl-render.o +obj-i386-$(CONFIG_TPM) += tpm_tis.o # shared objects obj-ppc-y = ppc.o Index: qemu-git/configure =================================================================== --- qemu-git.orig/configure +++ qemu-git/configure @@ -183,6 +183,7 @@ usb_redir="" opengl="" zlib="yes" guest_agent="yes" +tpm="no" # parse CC options first for opt do @@ -765,6 +766,8 @@ for opt do ;; --disable-guest-agent) guest_agent="no" ;; + --enable-tpm) tpm="yes" + ;; *) echo "ERROR: unknown option $opt"; show_help="yes" ;; esac @@ -1044,6 +1047,7 @@ echo " --disable-usb-redir disable echo " --enable-usb-redir enable usb network redirection support" echo " --disable-guest-agent disable building of the QEMU Guest Agent" echo " --enable-guest-agent enable building of the QEMU Guest Agent" +echo " --enable-tpm enable an emulated TPM" echo "" echo "NOTE: The object files are built at the place where configure is launched" exit 1 @@ -2731,6 +2735,7 @@ echo "nss used $smartcard_nss" echo "usb net redir $usb_redir" echo "OpenGL support $opengl" echo "build guest agent $guest_agent" +echo "TPM support $tpm" if test "$sdl_too_old" = "yes"; then echo "-> Your SDL version is too old - please upgrade to have SDL support" @@ -3555,6 +3560,21 @@ if test "$gprof" = "yes" ; then fi fi +if test "$tpm" = "yes"; then + has_tpm=0 + if test "$target_softmmu" = "yes" ; then + case "$TARGET_BASE_ARCH" in + i386) + has_tpm=1 + ;; + esac + fi + + if test "$has_tpm" = "1"; then + echo "CONFIG_TPM=y" >> $config_host_mak + fi +fi + linker_script="-Wl,-T../config-host.ld -Wl,-T,\$(SRC_PATH)/\$(ARCH).ld" if test "$target_linux_user" = "yes" -o "$target_bsd_user" = "yes" ; then case "$ARCH" in
The TPM interface (tpm_tis) needs to be explicitly enabled via ./configure --enable-tpm. This patch also restricts the building of the TPM support to i386 and x86_64 targets since only there it is currently supported. This prevents that one will end up with support for a frontend but no available backend. v3: - fixed and moved hunks in Makefile.target into right place Signed-off-by: Stefan Berger <stefanb@linux.vnet.ibm.com> Index:qemu/Makefile.target