WARNING - OLD ARCHIVES

This is an archived copy of the Xen.org mailing list, which we have preserved to ensure that existing links to archives are not broken. The live archive, which contains the latest emails, can be found at http://lists.xen.org/
   
 
 
Xen 
 
Home Products Support Community News
 
   
 

xen-devel

[Xen-devel] [RFC] [PATCH] HVM SMBIOS support 3/6

To: xen-devel@xxxxxxxxxxxxxxxxxxx
Subject: [Xen-devel] [RFC] [PATCH] HVM SMBIOS support 3/6
From: "Andrew D. Ball" <aball@xxxxxxxxxx>
Date: Fri, 07 Jul 2006 15:38:09 -0400
Delivery-date: Fri, 07 Jul 2006 12:38:52 -0700
Envelope-to: www-data@xxxxxxxxxxxxxxxxxx
List-help: <mailto:xen-devel-request@lists.xensource.com?subject=help>
List-id: Xen developer discussion <xen-devel.lists.xensource.com>
List-post: <mailto:xen-devel@lists.xensource.com>
List-subscribe: <http://lists.xensource.com/cgi-bin/mailman/listinfo/xen-devel>, <mailto:xen-devel-request@lists.xensource.com?subject=subscribe>
List-unsubscribe: <http://lists.xensource.com/cgi-bin/mailman/listinfo/xen-devel>, <mailto:xen-devel-request@lists.xensource.com?subject=unsubscribe>
Sender: xen-devel-bounces@xxxxxxxxxxxxxxxxxxx
[HVM] [XEN] Add space for SMBIOS tables to e820 map and fill out hvm_info_table
for HVM SMBIOS support.

Signed-off-by: Andrew D. Ball <aball@xxxxxxxxxx>

diff -r f91cc71173c5 tools/libxc/xc_hvm_build.c
--- a/tools/libxc/xc_hvm_build.c        Thu Jun 22 20:37:33 2006
+++ b/tools/libxc/xc_hvm_build.c        Fri Jul  7 13:48:44 2006
@@ -59,12 +59,12 @@
 
     /* XXX: Doesn't work for > 4GB yet */
     e820entry[nr_map].addr = 0x0;
-    e820entry[nr_map].size = 0x9F800;
+    e820entry[nr_map].size = 0x9F000;
     e820entry[nr_map].type = E820_RAM;
     nr_map++;
 
-    e820entry[nr_map].addr = 0x9F800;
-    e820entry[nr_map].size = 0x800;
+    e820entry[nr_map].addr = 0x9F000;
+    e820entry[nr_map].size = 0x1000;
     e820entry[nr_map].type = E820_RESERVED;
     nr_map++;
 
@@ -136,10 +136,14 @@
  */
 static int set_hvm_info(int xc_handle, uint32_t dom,
                         xen_pfn_t *pfn_list, unsigned int vcpus,
-                        unsigned int pae, unsigned int acpi, unsigned int apic)
+                        uint64_t memsize,
+                        unsigned int pae, unsigned int acpi, unsigned int apic,
+                        unsigned int smbios, uint8_t uuid[16])
 {
     char *va_map;
     struct hvm_info_table *va_hvm;
+    uint32_t xen_version;
+    char xen_extra_version[XEN_EXTRAVERSION_LEN];
 
     va_map = xc_map_foreign_range(xc_handle, dom, PAGE_SIZE,
                                   PROT_READ | PROT_WRITE,
@@ -157,6 +161,24 @@
     va_hvm->apic_enabled = apic;
     va_hvm->pae_enabled  = pae;
     va_hvm->nr_vcpus     = vcpus;
+    va_hvm->memsize      = memsize;
+    va_hvm->smbios_enabled = smbios;
+    memcpy(va_hvm->uuid, uuid, 16);
+
+    xen_version = xc_version(xc_handle, XENVER_version, NULL);
+    va_hvm->xen_major_version = (uint16_t) (xen_version >> 16);
+    va_hvm->xen_minor_version = (uint16_t) xen_version;
+    
+    if (xc_version(xc_handle, XENVER_extraversion, &xen_extra_version)) {
+        /* could not get Xen extra version! */
+        PERROR("Could not get Xen extra version for HVM info table!");
+        return -1;
+    }
+
+    snprintf(va_hvm->xen_version, sizeof(va_hvm->xen_version),
+             "%hd.%hd%s", va_hvm->xen_major_version, va_hvm->xen_minor_version,
+             xen_extra_version);
+    va_hvm->xen_version[sizeof(va_hvm->xen_version)-1] = '\0';
 
     set_hvm_info_checksum(va_hvm);
 
@@ -175,6 +197,8 @@
                        unsigned int pae,
                        unsigned int acpi,
                        unsigned int apic,
+                       unsigned smbios,
+                       uint8_t uuid[16],
                        unsigned int store_evtchn,
                        unsigned long *store_mfn)
 {
@@ -249,7 +273,8 @@
             goto error_out;
     }
 
-    if ( set_hvm_info(xc_handle, dom, page_array, vcpus, pae, acpi, apic) )
+    if ( set_hvm_info(xc_handle, dom, page_array, vcpus, memsize, pae, acpi,
+                      apic, smbios, uuid) )
     {
         ERROR("Couldn't set hvm info for HVM guest.\n");
         goto error_out;
@@ -345,6 +370,8 @@
                                  unsigned int pae,
                                  unsigned int acpi,
                                  unsigned int apic,
+                                 unsigned int smbios,
+                                 uint8_t uuid[16],
                                  unsigned int store_evtchn,
                                  unsigned long *store_mfn)
 {
@@ -399,7 +426,8 @@
     ctxt->flags = VGCF_HVM_GUEST;
     if ( setup_guest(xc_handle, domid, memsize, image, image_size, nr_pages,
                      ctxt, op.u.getdomaininfo.shared_info_frame,
-                     vcpus, pae, acpi, apic, store_evtchn, store_mfn) < 0)
+                     vcpus, pae, acpi, apic, smbios, uuid,
+                     store_evtchn, store_mfn) < 0)
     {
         ERROR("Error constructing guest OS");
         goto error_out;
@@ -591,6 +619,8 @@
                  unsigned int pae,
                  unsigned int acpi,
                  unsigned int apic,
+                 unsigned int smbios,
+                 uint8_t uuid[16],
                  unsigned int store_evtchn,
                  unsigned long *store_mfn)
 {
@@ -605,6 +635,7 @@
     sts = xc_hvm_build_internal(xc_handle, domid, memsize,
                                 image, image_size,
                                 vcpus, pae, acpi, apic,
+                                smbios, uuid,
                                 store_evtchn, store_mfn);
 
     free(image);
@@ -627,6 +658,8 @@
                      unsigned int pae,
                      unsigned int acpi,
                      unsigned int apic,
+                     unsigned int smbios,
+                     uint8_t uuid[16],
                      unsigned int store_evtchn,
                      unsigned long *store_mfn)
 {
@@ -652,6 +685,7 @@
     sts = xc_hvm_build_internal(xc_handle, domid, memsize,
                                 img, img_len,
                                 vcpus, pae, acpi, apic,
+                                smbios, uuid,
                                 store_evtchn, store_mfn);
 
     /* xc_inflate_buffer may return the original buffer pointer (for
diff -r f91cc71173c5 tools/libxc/xenguest.h
--- a/tools/libxc/xenguest.h    Thu Jun 22 20:37:33 2006
+++ b/tools/libxc/xenguest.h    Fri Jul  7 13:48:44 2006
@@ -110,6 +110,8 @@
                  unsigned int pae,
                  unsigned int acpi,
                  unsigned int apic,
+                 unsigned int smbios,
+                 uint8_t uuid[16],
                  unsigned int store_evtchn,
                  unsigned long *store_mfn);
 
@@ -122,6 +124,8 @@
                      unsigned int pae,
                      unsigned int acpi,
                      unsigned int apic,
+                     unsigned int smbios,
+                     uint8_t uuid[16],
                      unsigned int store_evtchn,
                      unsigned long *store_mfn);
 
diff -r f91cc71173c5 tools/libxc/xg_private.c
--- a/tools/libxc/xg_private.c  Thu Jun 22 20:37:33 2006
+++ b/tools/libxc/xg_private.c  Fri Jul  7 13:48:44 2006
@@ -155,6 +155,8 @@
     unsigned int pae,
     unsigned int acpi,
     unsigned int apic,
+    unsigned int smbios,
+    uint8_t uuid[16],
     unsigned int store_evtchn,
     unsigned long *store_mfn)
 {

Attachment: smbios_3_libxenguest.patch
Description: Text Data

_______________________________________________
Xen-devel mailing list
Xen-devel@xxxxxxxxxxxxxxxxxxx
http://lists.xensource.com/xen-devel
<Prev in Thread] Current Thread [Next in Thread>
  • [Xen-devel] [RFC] [PATCH] HVM SMBIOS support 3/6, Andrew D. Ball <=