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-ia64-devel] [PATCH] Add guest_os_type domain config option

To: xen-devel <xen-devel@xxxxxxxxxxxxxxxxxxx>
Subject: [Xen-ia64-devel] [PATCH] Add guest_os_type domain config option
From: Alex Williamson <alex.williamson@xxxxxx>
Date: Wed, 28 Nov 2007 10:19:02 -0700
Cc: xen-ia64-devel <xen-ia64-devel@xxxxxxxxxxxxxxxxxxx>
Delivery-date: Wed, 28 Nov 2007 09:19:36 -0800
Envelope-to: www-data@xxxxxxxxxxxxxxxxxx
List-help: <mailto:xen-ia64-devel-request@lists.xensource.com?subject=help>
List-id: Discussion of the ia64 port of Xen <xen-ia64-devel.lists.xensource.com>
List-post: <mailto:xen-ia64-devel@lists.xensource.com>
List-subscribe: <http://lists.xensource.com/cgi-bin/mailman/listinfo/xen-ia64-devel>, <mailto:xen-ia64-devel-request@lists.xensource.com?subject=subscribe>
List-unsubscribe: <http://lists.xensource.com/cgi-bin/mailman/listinfo/xen-ia64-devel>, <mailto:xen-ia64-devel-request@lists.xensource.com?subject=unsubscribe>
Organization: OSLO R&D
Sender: xen-ia64-devel-bounces@xxxxxxxxxxxxxxxxxxx
   On ia64 we have a desire to know the guest OS the user plans to run
in an HVM domain.  With this information we can make certain
optimizations, for instance knowing if a guest identity maps a memory
region can change how we handle page faults.  In the past we've tried to
do this via the guest firmware detecting the guest type, but this is
error prone and doesn't allow the user to override the guess should the
guest firmware detect incorrectly.

  The right way to do this seems to be a config option in the domain
spec file.  The default should obviously work for all supported guest OS
types, but specifying a specific value may provide optimization.  The
patch below implements the common code pieces of this.  The guest OS
type is truncated to 8 characters and stored as an HVM parameter.  It's
left to the architecture specific builder code whether to make use of
these.  The default is simply "default".  For ia64 we plan to make use
of "windows" and "linux", but may add more in the future.  Patch based
on code originally from Zhang Xin.  Thanks,

        Alex

Signed-off-by: Alex Williamson <alex.williamson@xxxxxx>
---

diff -r c555a5f97982 tools/python/xen/xend/XendConfig.py
--- a/tools/python/xen/xend/XendConfig.py       Wed Nov 28 13:36:56 2007 +0000
+++ b/tools/python/xen/xend/XendConfig.py       Wed Nov 28 09:48:59 2007 -0700
@@ -129,7 +129,8 @@ XENAPI_PLATFORM_CFG = [ 'acpi', 'apic', 
                         'nographic', 'pae', 'rtc_timeoffset', 'serial', 'sdl',
                         'soundhw','stdvga', 'usb', 'usbdevice', 'vnc',
                         'vncconsole', 'vncdisplay', 'vnclisten', 'timer_mode',
-                        'vncpasswd', 'vncunused', 'xauthority', 'pci', 'vhpt']
+                        'vncpasswd', 'vncunused', 'xauthority', 'pci', 'vhpt',
+                        'guest_os_type' ]
 
 # Xen API console 'other_config' keys.
 XENAPI_CONSOLE_OTHER_CFG = ['vncunused', 'vncdisplay', 'vnclisten',
diff -r c555a5f97982 tools/python/xen/xend/XendConstants.py
--- a/tools/python/xen/xend/XendConstants.py    Wed Nov 28 13:36:56 2007 +0000
+++ b/tools/python/xen/xend/XendConstants.py    Wed Nov 28 09:48:59 2007 -0700
@@ -47,6 +47,7 @@ HVM_PARAM_VHPT_SIZE    = 8
 HVM_PARAM_VHPT_SIZE    = 8
 HVM_PARAM_BUFPIOREQ_PFN = 9
 HVM_PARAM_TIMER_MODE   = 10
+HVM_PARAM_GOS_TYPE = 11
 
 restart_modes = [
     "restart",
diff -r c555a5f97982 tools/python/xen/xend/image.py
--- a/tools/python/xen/xend/image.py    Wed Nov 28 13:36:56 2007 +0000
+++ b/tools/python/xen/xend/image.py    Wed Nov 28 09:48:59 2007 -0700
@@ -22,6 +22,7 @@ import math
 import math
 import time
 import signal
+import struct
 
 import xen.lowlevel.xc
 from xen.xend.XendConstants import *
@@ -426,6 +427,7 @@ class HVMImageHandler(ImageHandler):
 
         self.apic = int(vmConfig['platform'].get('apic', 0))
         self.acpi = int(vmConfig['platform'].get('acpi', 0))
+        self.guest_os_type = vmConfig['platform'].get('guest_os_type')
 
     # Return a list of cmd line args to the device models based on the
     # xm config file
@@ -503,6 +505,11 @@ class HVMImageHandler(ImageHandler):
         return args
 
     def buildDomain(self):
+        # Encode OS type string into an integer w/ null padding
+        val = struct.unpack("Q",
+                            self.guest_os_type[:8].lower().ljust(8, chr(0)))[0]
+        xc.hvm_set_param(self.vm.getDomid(), HVM_PARAM_GOS_TYPE, val)
+
         store_evtchn = self.vm.getStorePort()
 
         mem_mb = self.getRequiredInitialReservation() / 1024
diff -r c555a5f97982 tools/python/xen/xm/create.py
--- a/tools/python/xen/xm/create.py     Wed Nov 28 13:36:56 2007 +0000
+++ b/tools/python/xen/xm/create.py     Wed Nov 28 09:48:59 2007 -0700
@@ -453,6 +453,10 @@ gopts.var('usbdevice', val='NAME',
 gopts.var('usbdevice', val='NAME',
           fn=set_value, default='',
           use="Name of USB device to add?")
+
+gopts.var('guest_os_type', val='NAME',
+          fn=set_value, default='default',
+          use="Guest OS type running in HVM")
 
 gopts.var('stdvga', val='no|yes',
           fn=set_bool, default=0,
@@ -733,7 +737,9 @@ def configure_hvm(config_image, vals):
              'localtime', 'serial', 'stdvga', 'isa', 'nographic', 'soundhw',
              'vnc', 'vncdisplay', 'vncunused', 'vncconsole', 'vnclisten',
              'sdl', 'display', 'xauthority', 'rtc_timeoffset', 'monitor',
-             'acpi', 'apic', 'usb', 'usbdevice', 'keymap', 'pci' ]
+             'acpi', 'apic', 'usb', 'usbdevice', 'keymap', 'pci',
+             'guest_os_type']
+
     for a in args:
         if a in vals.__dict__ and vals.__dict__[a] is not None:
             config_image.append([a, vals.__dict__[a]])
diff -r c555a5f97982 xen/include/public/hvm/params.h
--- a/xen/include/public/hvm/params.h   Wed Nov 28 13:36:56 2007 +0000
+++ b/xen/include/public/hvm/params.h   Wed Nov 28 09:48:59 2007 -0700
@@ -75,6 +75,8 @@
 #define HVMPTM_no_delay_for_missed_ticks 1
 #define HVMPTM_no_missed_tick_accounting 2
 
-#define HVM_NR_PARAMS          11
+#define HVM_PARAM_GOS_TYPE     11
+
+#define HVM_NR_PARAMS          12
 
 #endif /* __XEN_PUBLIC_HVM_PARAMS_H__ */



_______________________________________________
Xen-ia64-devel mailing list
Xen-ia64-devel@xxxxxxxxxxxxxxxxxxx
http://lists.xensource.com/xen-ia64-devel

<Prev in Thread] Current Thread [Next in Thread>
  • [Xen-ia64-devel] [PATCH] Add guest_os_type domain config option, Alex Williamson <=