From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from mailman by lists.gnu.org with tmda-scanned (Exim 4.43) id 1J2CYH-0005lg-MA for qemu-devel@nongnu.org; Tue, 11 Dec 2007 16:22:05 -0500 Received: from exim by lists.gnu.org with spam-scanned (Exim 4.43) id 1J2CYF-0005id-Lo for qemu-devel@nongnu.org; Tue, 11 Dec 2007 16:22:04 -0500 Received: from [199.232.76.173] (helo=monty-python.gnu.org) by lists.gnu.org with esmtp (Exim 4.43) id 1J2CYE-0005i6-W2 for qemu-devel@nongnu.org; Tue, 11 Dec 2007 16:22:03 -0500 Received: from nf-out-0910.google.com ([64.233.182.187]) by monty-python.gnu.org with esmtp (Exim 4.60) (envelope-from ) id 1J2CYD-0007zv-PG for qemu-devel@nongnu.org; Tue, 11 Dec 2007 16:22:02 -0500 Received: by nf-out-0910.google.com with SMTP id 30so1628321nfu for ; Tue, 11 Dec 2007 13:21:56 -0800 (PST) Message-ID: <5b31733c0712111321j5640c446vebfedea0d3fe7531@mail.gmail.com> Date: Tue, 11 Dec 2007 22:21:56 +0100 From: "Filip Navara" Sender: filip.navara@gmail.com Subject: Re: [Qemu-devel] [PATCH 2 of 3] Optionally link against libuuid if present In-Reply-To: <115f40a4994be1d5b44e.1197403732@localhost.localdomain> MIME-Version: 1.0 Content-Type: multipart/mixed; boundary="----=_Part_1000_24845095.1197408116684" References: <115f40a4994be1d5b44e.1197403732@localhost.localdomain> Reply-To: qemu-devel@nongnu.org List-Id: qemu-devel.nongnu.org List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: qemu-devel@nongnu.org Cc: kvm-devel@lists.sourceforge.net ------=_Part_1000_24845095.1197408116684 Content-Type: multipart/alternative; boundary="----=_Part_1001_28034620.1197408116684" ------=_Part_1001_28034620.1197408116684 Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: 7bit Content-Disposition: inline Hi Ryan & others, now I have been holding a SMBIOS patch on my hard disk for way to long it seems. I used a different approach from yours, so I decided to publish it for review or further ideas. What I did was to modify the bochs bios to produce the SMBIOS tables and I get the UUID using VMware backdoor port from the virtual machine. Attached are just the changed files, creating a patch will take a while because it's against VERY OLD version of the sources. Oh, it also contains ACPI patch for the processor descriptors which was needed for some Windows versions and Darwin. Similar patch was used in KVM before, but this one dynamically detects the number of CPUs. Best regards, Filip Navara On Dec 11, 2007 9:08 PM, Ryan Harper wrote: > 3 files changed, 38 insertions(+), 2 deletions(-) > Makefile.target | 5 ++++- > configure | 26 ++++++++++++++++++++++++++ > smbios.c | 9 ++++++++- > > > # HG changeset patch > # User Ryan Harper > # Date 1197402122 21600 > # Node ID 115f40a4994be1d5b44ef193b3ccbe8e26410eef > # Parent e81bef5fa072360d12b87b3237b7d3f72c9b9784 > Optionally link against libuuid if present. > > This patch makes libuuid optional. If not detected, SMBIOS tables will > use > canned UUID. > > Signed-off-by: Ryan Harper > > diff -r e81bef5fa072 -r 115f40a4994b Makefile.target > --- a/Makefile.target Tue Dec 11 13:42:01 2007 -0600 > +++ b/Makefile.target Tue Dec 11 13:42:02 2007 -0600 > @@ -402,6 +402,9 @@ VL_OBJS+=block-raw.o > > ifdef CONFIG_ALSA > LIBS += -lasound > +endif > +ifdef CONFIG_UUID > +LIBS += -luuid > endif > ifdef CONFIG_DSOUND > LIBS += -lole32 -ldxguid > @@ -535,7 +538,7 @@ ifndef CONFIG_DARWIN > ifndef CONFIG_DARWIN > ifndef CONFIG_WIN32 > ifndef CONFIG_SOLARIS > -VL_LIBS+=-lutil -luuid > +VL_LIBS+=-lutil > endif > endif > endif > diff -r e81bef5fa072 -r 115f40a4994b configure > --- a/configure Tue Dec 11 13:42:01 2007 -0600 > +++ b/configure Tue Dec 11 13:42:02 2007 -0600 > @@ -89,6 +89,7 @@ dsound="no" > dsound="no" > coreaudio="no" > alsa="no" > +uuid="yes" > fmod="no" > fmod_lib="" > fmod_inc="" > @@ -260,6 +261,8 @@ for opt do > ;; > --enable-alsa) alsa="yes" > ;; > + --enable-uuid) uuid="yes" > + ;; > --enable-dsound) dsound="yes" > ;; > --enable-fmod) fmod="yes" > @@ -404,6 +407,7 @@ echo " --enable-adlib enable > echo " --enable-adlib enable Adlib emulation" > echo " --enable-coreaudio enable Coreaudio audio driver" > echo " --enable-alsa enable ALSA audio driver" > +echo " --enable-uuid enable UUID generation for machines" > echo " --enable-fmod enable FMOD audio driver" > echo " --enable-dsound enable DirectSound audio driver" > echo " --disable-vnc-tls disable TLS encryption for VNC server" > @@ -662,6 +666,23 @@ EOF > fi > fi > > +########################################## > +# uuid library > +if test "$uuid" = "yes" ; then > + cat > $TMPC << EOF > +#include > +int main(void) { uuid_t u; return 0; } > +EOF > + if $cc -o $TMPE $TMPC -luuid 2> /dev/null ; then > + : > + else > + echo > + echo "Error: Could not find uuid" > + echo "Make sure to have the uuid libs and headers installed." > + echo > + exit 1 > + fi > +fi > # Check if tools are available to build documentation. > if [ -x "`which texi2html 2>/dev/null`" ] && \ > [ -x "`which pod2man 2>/dev/null`" ]; then > @@ -716,6 +737,7 @@ echo "Adlib support $adlib" > echo "Adlib support $adlib" > echo "CoreAudio support $coreaudio" > echo "ALSA support $alsa" > +echo "UUID support $uuid" > echo "DSound support $dsound" > if test "$fmod" = "yes"; then > if test -z $fmod_lib || test -z $fmod_inc; then > @@ -901,6 +923,10 @@ if test "$alsa" = "yes" ; then > echo "CONFIG_ALSA=yes" >> $config_mak > echo "#define CONFIG_ALSA 1" >> $config_h > fi > +if test "$uuid" = "yes" ; then > + echo "CONFIG_UUID=yes" >> $config_mak > + echo "#define CONFIG_UUID 1" >> $config_h > +fi > if test "$dsound" = "yes" ; then > echo "CONFIG_DSOUND=yes" >> $config_mak > echo "#define CONFIG_DSOUND 1" >> $config_h > diff -r e81bef5fa072 -r 115f40a4994b smbios.c > --- a/smbios.c Tue Dec 11 13:42:01 2007 -0600 > +++ b/smbios.c Tue Dec 11 13:42:02 2007 -0600 > @@ -25,11 +25,14 @@ > #include > #include > #include > -#include > #include "hw/hw.h" > #include "sysemu.h" > #include "smbios_types.h" > #include "config-host.h" > + > +#ifdef CONFIG_UUID > +#include > +#endif > > /* Write a two-character hex representation of 'byte' to digits[]. > Pre-condition: sizeof(digits) >= 2 */ > @@ -489,9 +492,13 @@ load_smbios_tables(uint8_t *entry, uint8 > int len; > uint32_t major_version = 0; > uint32_t minor_version = 9; > +#ifdef CONFIG_UUID > uuid_t uuid; > > uuid_generate(uuid); > +#else > + uint8_t uuid[16] = "QEMUQEMUQEMUQEMU"; > +#endif > > len = write_smbios_tables(entry, table, phys_table_start, > smp_cpus, (ram_size >> 20), > > > ------=_Part_1001_28034620.1197408116684 Content-Type: text/html; charset=ISO-8859-1 Content-Transfer-Encoding: 7bit Content-Disposition: inline Hi Ryan & others,

now I have been holding a SMBIOS patch on my hard disk for way to long it seems. I used a different approach from yours, so I decided to publish it for review or further ideas. What I did was to modify the bochs bios to produce the SMBIOS tables and I get the UUID using VMware backdoor port from the virtual machine.

Attached are just the changed files, creating a patch will take a while because it's against VERY OLD version of the sources.

Oh, it also contains ACPI patch for the processor descriptors which was needed for some Windows versions and Darwin. Similar patch was used in KVM before, but this one dynamically detects the number of CPUs.

Best regards,
Filip Navara

On Dec 11, 2007 9:08 PM, Ryan Harper <ryanh@us.ibm.com> wrote:
3 files changed, 38 insertions(+), 2 deletions(-)
Makefile.target |    5 ++++-
configure       |   26 ++++++++++++++++++++++++++
smbios.c        |    9 ++++++++-


# HG changeset patch
# User Ryan Harper < ryanh@us.ibm.com>
# Date 1197402122 21600
# Node ID 115f40a4994be1d5b44ef193b3ccbe8e26410eef
# Parent  e81bef5fa072360d12b87b3237b7d3f72c9b9784
Optionally link against libuuid if present.

This patch makes libuuid optional.  If not detected, SMBIOS tables will use
canned UUID.

Signed-off-by: Ryan Harper <ryanh@us.ibm.com>

diff -r e81bef5fa072 -r 115f40a4994b Makefile.target
--- a/Makefile.target   Tue Dec 11 13:42:01 2007 -0600
+++ b/Makefile.target   Tue Dec 11 13:42:02 2007 -0600
@@ -402,6 +402,9 @@ VL_OBJS+=block-raw.o

 ifdef CONFIG_ALSA
 LIBS += -lasound
+endif
+ifdef CONFIG_UUID
+LIBS += -luuid
 endif
 ifdef CONFIG_DSOUND
 LIBS += -lole32 -ldxguid
@@ -535,7 +538,7 @@ ifndef CONFIG_DARWIN
 ifndef CONFIG_DARWIN
 ifndef CONFIG_WIN32
 ifndef CONFIG_SOLARIS
-VL_LIBS+=-lutil -luuid
+VL_LIBS+=-lutil
 endif
 endif
 endif
diff -r e81bef5fa072 -r 115f40a4994b configure
--- a/configure Tue Dec 11 13:42:01 2007 -0600
+++ b/configure Tue Dec 11 13:42:02 2007 -0600
@@ -89,6 +89,7 @@ dsound="no"
 dsound="no"
 coreaudio="no"
 alsa="no"
+uuid="yes"
 fmod="no"
 fmod_lib=""
 fmod_inc=""
@@ -260,6 +261,8 @@ for opt do
  ;;
  --enable-alsa) alsa="yes"
  ;;
+  --enable-uuid) uuid="yes"
+  ;;
  --enable-dsound) dsound="yes"
  ;;
  --enable-fmod) fmod="yes"
@@ -404,6 +407,7 @@ echo "  --enable-adlib           enable
 echo "  --enable-adlib           enable Adlib emulation"
 echo "  --enable-coreaudio       enable Coreaudio audio driver"
 echo "  --enable-alsa            enable ALSA audio driver"
+echo "  --enable-uuid            enable UUID generation for machines"
 echo "  --enable-fmod            enable FMOD audio driver"
 echo "  --enable-dsound          enable DirectSound audio driver"
 echo "  --disable-vnc-tls        disable TLS encryption for VNC server"
@@ -662,6 +666,23 @@ EOF
  fi
 fi

+##########################################
+# uuid library
+if test "$uuid" = "yes" ; then
+  cat > $TMPC << EOF
+#include <uuid/uuid.h>
+int main(void) { uuid_t u; return 0; }
+EOF
+  if $cc -o $TMPE $TMPC -luuid 2> /dev/null ; then
+    :
+  else
+    echo
+    echo "Error: Could not find uuid"
+    echo "Make sure to have the uuid libs and headers installed."
+    echo
+    exit 1
+  fi
+fi
 # Check if tools are available to build documentation.
 if [ -x "`which texi2html 2>/dev/null`" ] && \
   [ -x "`which pod2man 2>/dev/null`" ]; then
@@ -716,6 +737,7 @@ echo "Adlib support     $adlib"
 echo "Adlib support     $adlib"
 echo "CoreAudio support $coreaudio"
 echo "ALSA support      $alsa"
+echo "UUID support      $uuid"
 echo "DSound support    $dsound"
 if test "$fmod" = "yes"; then
    if test -z $fmod_lib || test -z $fmod_inc; then
@@ -901,6 +923,10 @@ if test "$alsa" = "yes" ; then
  echo "CONFIG_ALSA=yes" >> $config_mak
  echo "#define CONFIG_ALSA 1" >> $config_h
 fi
+if test "$uuid" = "yes" ; then
+  echo "CONFIG_UUID=yes" >> $config_mak
+  echo "#define CONFIG_UUID 1" >> $config_h
+fi
 if test "$dsound" = "yes" ; then
  echo "CONFIG_DSOUND=yes" >> $config_mak
  echo "#define CONFIG_DSOUND 1" >> $config_h
diff -r e81bef5fa072 -r 115f40a4994b smbios.c
--- a/smbios.c  Tue Dec 11 13:42:01 2007 -0600
+++ b/smbios.c  Tue Dec 11 13:42:02 2007 -0600
@@ -25,11 +25,14 @@
 #include <stdio.h>
 #include <stdint.h>
 #include <string.h>
-#include <uuid/uuid.h>
 #include "hw/hw.h"
 #include "sysemu.h"
 #include "smbios_types.h"
 #include "config-host.h"
+
+#ifdef CONFIG_UUID
+#include <uuid/uuid.h>
+#endif

 /* Write a two-character hex representation of 'byte' to digits[].
   Pre-condition: sizeof(digits) >= 2 */
@@ -489,9 +492,13 @@ load_smbios_tables(uint8_t *entry, uint8
    int len;
    uint32_t major_version = 0;
    uint32_t minor_version = 9;
+#ifdef CONFIG_UUID
    uuid_t uuid;

    uuid_generate(uuid);
+#else
+    uint8_t uuid[16] = "QEMUQEMUQEMUQEMU";
+#endif

    len = write_smbios_tables(entry, table, phys_table_start,
                              smp_cpus, (ram_size >> 20),



------=_Part_1001_28034620.1197408116684-- ------=_Part_1000_24845095.1197408116684 Content-Type: application/zip; name=rombios32.zip Content-Transfer-Encoding: base64 X-Attachment-Id: f_fa2xux150 Content-Disposition: attachment; filename=rombios32.zip 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 AAA= ------=_Part_1000_24845095.1197408116684--