All of lore.kernel.org
 help / color / mirror / Atom feed
From: Chris Lalancette <clalance@redhat.com>
To: qemu-devel@nongnu.org
Cc: gleb@qumranet.com
Subject: [Qemu-devel] [PATCH 3/3]: Plumb qemu_uuid through to the VMware back door
Date: Mon, 28 Jul 2008 15:25:23 +0200	[thread overview]
Message-ID: <488DC8C3.4030803@redhat.com> (raw)

[-- Attachment #1: Type: text/plain, Size: 293 bytes --]

This patch finishes plumbing qemu_uuid through the VMware back door so that the
Bochs BIOS can actually fetch the information to put in the SMBIOS tables.

Signed-off-by: Chris Lalancette <clalance@redhat.com>
Cc: Gleb Natapov <gleb@qumranet.com>
Cc: Anthony Liguori <anthony@codemonkey.ws>



[-- Attachment #2: qemu-dmi-uuid-3.patch --]
[-- Type: text/x-patch, Size: 1820 bytes --]

diff -urp qemu.patch2/hw/vmport.c qemu.patch3/hw/vmport.c
--- qemu.patch2/hw/vmport.c	2008-07-28 14:16:54.000000000 +0200
+++ qemu.patch3/hw/vmport.c	2008-07-28 14:20:12.000000000 +0200
@@ -26,8 +26,17 @@
 #include "pc.h"
 #include "sysemu.h"
 
+#ifdef CONFIG_UUID
+#include <uuid/uuid.h>
+uuid_t vmport_uuid;
+extern char *qemu_uuid;
+#else
+const unsigned char vmport_uuid[16] = { 0 };
+#endif
+
 #define VMPORT_CMD_GETVERSION 0x0a
 #define VMPORT_CMD_GETRAMSIZE 0x14
+#define VMPORT_CMD_GETBIOSUUID 0x13
 
 #define VMPORT_ENTRIES 0x2c
 #define VMPORT_MAGIC   0x564D5868
@@ -93,6 +102,26 @@ static uint32_t vmport_cmd_ram_size(void
     return ram_size;
 }
 
+static inline uint32_t uuid2reg(const unsigned char *uuid, uint32_t idx)
+{
+    int i;
+    uint32_t reg = 0;
+
+    for (i = 0; i < 4; i++)
+        reg |= (uuid[(idx*4) + i] << (i*8));
+
+    return reg;
+}
+
+static uint32_t vmport_cmd_bios_uuid(void *opaque, uint32_t addr)
+{
+    CPUState *env = cpu_single_env;
+    env->regs[R_EBX] = uuid2reg(vmport_uuid, 1);
+    env->regs[R_ECX] = uuid2reg(vmport_uuid, 2);
+    env->regs[R_EDX] = uuid2reg(vmport_uuid, 3);
+    return uuid2reg(vmport_uuid, 0);
+}
+
 void vmport_init(void)
 {
     register_ioport_read(0x5658, 1, 4, vmport_ioport_read, &port_state);
@@ -101,4 +130,14 @@ void vmport_init(void)
     /* Register some generic port commands */
     vmport_register(VMPORT_CMD_GETVERSION, vmport_cmd_get_version, NULL);
     vmport_register(VMPORT_CMD_GETRAMSIZE, vmport_cmd_ram_size, NULL);
+    vmport_register(VMPORT_CMD_GETBIOSUUID, vmport_cmd_bios_uuid, NULL);
+
+#ifdef CONFIG_UUID
+    if (qemu_uuid != NULL) {
+      if (uuid_parse(qemu_uuid, vmport_uuid) != 0) {
+	/* failed UUID parse; print a warning, but go on */
+	fprintf(stderr, "Failed parsing UUID\n");
+      }
+    }
+#endif
 }



                 reply	other threads:[~2008-07-28 13:27 UTC|newest]

Thread overview: [no followups] expand[flat|nested]  mbox.gz  Atom feed

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=488DC8C3.4030803@redhat.com \
    --to=clalance@redhat.com \
    --cc=gleb@qumranet.com \
    --cc=qemu-devel@nongnu.org \
    /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.