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-ia64-devel

RE: [Xen-ia64-devel] [xen-ia64][PATCH]New set OS type method

To: "Duan, Ronghui" <ronghui.duan@xxxxxxxxx>
Subject: RE: [Xen-ia64-devel] [xen-ia64][PATCH]New set OS type method
From: Alex Williamson <alex.williamson@xxxxxx>
Date: Mon, 26 Nov 2007 11:46:27 -0700
Cc: xen-ia64-devel <xen-ia64-devel@xxxxxxxxxxxxxxxxxxx>
Delivery-date: Mon, 26 Nov 2007 10:50:37 -0800
Envelope-to: www-data@xxxxxxxxxxxxxxxxxx
In-reply-to: <82C666AA63DC75449C51EAD62E8B2BEC3691E1@xxxxxxxxxxxxxxxxxxxxxxxxxxxx>
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
References: <82C666AA63DC75449C51EAD62E8B2BEC3691E1@xxxxxxxxxxxxxxxxxxxxxxxxxxxx>
Sender: xen-ia64-devel-bounces@xxxxxxxxxxxxxxxxxxx
Hi Ronghui, Wing,

   Thanks for working on this.  Good luck on your thesis Wing.  A few
issues still, comments below:

Needs a Signed-off-by...

On Mon, 2007-11-26 at 16:41 +0800, Duan, Ronghui wrote:
> diff -r 53dc1cf50506 tools/examples/xmexample.vti
> --- a/tools/examples/xmexample.vti      Wed Nov 21 09:12:06 2007 -0700
> +++ b/tools/examples/xmexample.vti      Mon Nov 26 16:33:17 2007 +0800
> @@ -147,3 +147,16 @@ serial='pty'
>  
> #-----------------------------------------------------------------------------
>  #   Set keyboard layout, default is en-us keyboard.
>  #keymap='ja'
> +
> +#-----------------------------------------------------------------------------
> +#   Enable optimization features for the specified OS type. (Specific
> the OS
> +#          running in the guest domain,Other OSes may not run
> correctly if 
> +#           the wrong OS type is specified.)
> +#
> +#   Default is "default", which should work for all supported guest
> OSes.
> +#
> +#   Known values:
> +#    "linux" - All Linux variants
> +#    "windows" - All Windows variants (Windows Server 2003/2008)
> +#
> +#guest_os_type="default"

OK

> diff -r 53dc1cf50506 tools/libxc/ia64/xc_ia64_hvm_build.c
> --- a/tools/libxc/ia64/xc_ia64_hvm_build.c      Wed Nov 21 09:12:06
> 2007 -0700
> +++ b/tools/libxc/ia64/xc_ia64_hvm_build.c      Mon Nov 26 16:08:49
> 2007 +0800
> @@ -880,6 +880,27 @@ xc_ia64_setup_shared_info(int xc_handle,
>      return 0;
>  }
>  
> +static uint32_t
> +ident_map_reg(int xc_handle, uint32_t dom)
> +{
> +    uint64_t os_type = 0;
> +
> +    xc_get_hvm_param(xc_handle, dom, HVM_PARAM_GOS_TYPE, &os_type);
> +    switch ( os_type )
> +    {
> +        case OS_WINDOWS:
> +            /* Windows identity maps regions 4 & 5 */
> +            return (XEN_IA64_OPTF_IDENT_MAP_REG4 |
> XEN_IA64_OPTF_IDENT_MAP_REG5);
> +        case OS_LINUX:
> +            /* Linux identity maps regions 7 */
> +            return (XEN_IA64_OPTF_IDENT_MAP_REG7);
> +        case OS_DEFAULT:
> +            /* Fall through */
> +        default:
> +            return (XEN_IA64_OPTF_IDENT_MAP_NOT_SET);
> +    }
> +}
> +
>  /*
>   * In this function, we will allocate memory and build P2M/M2P table
> for VTI
>   * guest.  Frist, a pfn list will be initialized discontiguous,
> normal memory
> @@ -980,9 +1001,10 @@ setup_guest(int xc_handle, uint32_t dom,
>          goto error_out;
>      }
>  
> -    domctl.u.arch_setup.flags = XEN_DOMAINSETUP_hvm_guest;
> +    domctl.u.arch_setup.flags = XEN_DOMAINSETUP_hvm_guest |
> XEN_DOMAINSETUP_ident_map;
>      domctl.u.arch_setup.bp = 0;
>      domctl.u.arch_setup.maxmem = GFW_START + GFW_SIZE;
> +    domctl.u.arch_setup.ident_map_reg = ident_map_reg(xc_handle,
> dom);
>      if (dom_memsize > MMIO_START)
>          domctl.u.arch_setup.maxmem = dom_memsize + 1 * MEM_G;
>      domctl.cmd = XEN_DOMCTL_arch_setup;

What happened to the idea of using HYPERVISOR_opt_feature?

> diff -r 53dc1cf50506 tools/python/xen/xend/XendConfig.py
> --- a/tools/python/xen/xend/XendConfig.py       Wed Nov 21 09:12:06
> 2007 -0700
> +++ b/tools/python/xen/xend/XendConfig.py       Mon Nov 26 16:08:49
> 2007 +0800
> @@ -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',

This will need to be accepted via xen-devel.

> diff -r 53dc1cf50506 tools/python/xen/xend/XendConstants.py
> --- a/tools/python/xen/xend/XendConstants.py    Wed Nov 21 09:12:06
> 2007 -0700
> +++ b/tools/python/xen/xend/XendConstants.py    Mon Nov 26 16:08:49
> 2007 +0800
> @@ -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",

This will need to be accepted via xen-devel.

> diff -r 53dc1cf50506 tools/python/xen/xend/image.py
> --- a/tools/python/xen/xend/image.py    Wed Nov 21 09:12:06 2007 -0700
> +++ b/tools/python/xen/xend/image.py    Mon Nov 26 16:08:49 2007 +0800
> @@ -536,10 +536,24 @@ class IA64_HVM_ImageHandler(HVMImageHand
>      def configure(self, vmConfig):
>          HVMImageHandler.configure(self, vmConfig)
>          self.vhpt = int(vmConfig['platform'].get('vhpt',  0))
> +        self.guest_os_type =
> vmConfig['platform'].get('guest_os_type')
>  
>      def buildDomain(self):
> +        GOS_type = {
> +                        'default' : 0xB0,
> +                        'windows' : 0xB1,
> +                        'linux'   : 0xB2
> +                   }

I really want to get away from this 0xB* encoding, there's no reason for
it, especially in common code.  I was hoping we could effectively do
snprintf(val, 8, key), or something like below...

> +        key = self.guest_os_type
> +        if key == None or key not in GOS_type:
> +            key = 'default'
> +        val = GOS_type[key]
> +

This is untested, and I don't know python very well.  Code from
bothering people on irc who do ;)...

if self.guest_os_type == None
    self.guest_os_type = 'default'
val = int((self.guest_os_type.upper())[:8].encode("hex"), 16)

The architecture side code to extract this is then simply:

guest_os_type = ("%x" % val).decode("hex")

if guest_os_type == 'WINDOWS'
    ...

(note the toupper() allows for variations in the user specifying the
value in the config file)

This makes the interface more generic and eliminates maintenance of the
GOS_type array that would need to be expanded any time an architecture
wants to add new strings to handle.  Perhaps this could be part of
HVMImageHandler instead of the ia64 specific buildDomain().

> +        log.debug("Guest OS type          = %s", key)
> +        xc.hvm_set_param(self.vm.getDomid(), HVM_PARAM_GOS_TYPE, val)
>          xc.nvram_init(self.vm.getName(), self.vm.getDomid())
>          xc.hvm_set_param(self.vm.getDomid(), HVM_PARAM_VHPT_SIZE,
> self.vhpt)
> +
>          return HVMImageHandler.buildDomain(self)
>  
>      def getRequiredAvailableMemory(self, mem_kb):
> diff -r 53dc1cf50506 tools/python/xen/xm/create.py
> --- a/tools/python/xen/xm/create.py     Wed Nov 21 09:12:06 2007 -0700
> +++ b/tools/python/xen/xm/create.py     Mon Nov 26 16:08:49 2007 +0800
> @@ -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]])

Needs to go through xen-devel.

> diff -r 53dc1cf50506 xen/arch/ia64/vmx/mmio.c
> --- a/xen/arch/ia64/vmx/mmio.c  Wed Nov 21 09:12:06 2007 -0700
> +++ b/xen/arch/ia64/vmx/mmio.c  Mon Nov 26 16:08:49 2007 +0800
> @@ -234,35 +234,6 @@ static int vmx_ide_pio_intercept(ioreq_t
>  
>  #define TO_LEGACY_IO(pa)  (((pa)>>12<<2)|((pa)&0x3))
>  
> -static const char * const guest_os_name[] = {
> -    "Unknown",
> -    "Windows 2003 server",
> -    "Linux",
> -};
> -
> -static inline void set_os_type(VCPU *v, u64 type)
> -{
> -    if (type > OS_BASE && type < OS_END) {
> -        v->domain->arch.vmx_platform.gos_type = type;
> -        gdprintk(XENLOG_INFO, "Guest OS : %s\n", guest_os_name[type -
> OS_BASE]);
> -
> -        if (GOS_WINDOWS(v)) {
> -            struct xen_ia64_opt_feature optf;
> -
> -            /* Windows identity maps regions 4 & 5 */
> -            optf.cmd = XEN_IA64_OPTF_IDENT_MAP_REG4;
> -            optf.on = XEN_IA64_OPTF_ON;
> -            optf.pgprot = (_PAGE_P|_PAGE_A|_PAGE_D|_PAGE_MA_WB|
> _PAGE_AR_RW);
> -            optf.key = 0;
> -            domain_opt_feature(v->domain, &optf);
> -
> -            optf.cmd = XEN_IA64_OPTF_IDENT_MAP_REG5;
> -            optf.pgprot = (_PAGE_P|_PAGE_A|_PAGE_D|_PAGE_MA_UC|
> _PAGE_AR_RW);
> -            domain_opt_feature(v->domain, &optf);
> -        }
> -    }
> -}
> -
>  static void __vmx_identity_mapping_save(int on,
>          const struct identity_mapping* im,
>          struct hvm_hw_ia64_identity_mapping *im_save)
> @@ -359,11 +330,6 @@ static void legacy_io_access(VCPU *vcpu,
>  
>      p->io_count++;
>      
> -    if (dir == IOREQ_WRITE && p->addr == OS_TYPE_PORT) {
> -        set_os_type(v, *val);
> -        return;
> -    }
> -
>      if (vmx_ide_pio_intercept(p, val))
>          return;
>  
> diff -r 53dc1cf50506 xen/arch/ia64/vmx/vmx_init.c
> --- a/xen/arch/ia64/vmx/vmx_init.c      Wed Nov 21 09:12:06 2007 -0700
> +++ b/xen/arch/ia64/vmx/vmx_init.c      Mon Nov 26 16:31:38 2007 +0800
> @@ -396,7 +396,6 @@ vmx_final_setup_guest(struct vcpu *v)
>         v->arch.privregs = (mapped_regs_t *)vpd;
>         vpd->vpd_low.virt_env_vaddr = vm_buffer;
>      
> -       v->domain->arch.vmx_platform.gos_type = OS_UNKNOWN;
>         /* Per-domain vTLB and vhpt implementation. Now vmx domain
> will stick
>          * to this solution. Maybe it can be deferred until we know
> created
>          * one as vmx domain */
> @@ -510,6 +509,7 @@ int vmx_setup_platform(struct domain *d)
>         viosapic_init(d);
>  
>         vacpi_init(d);
> +
>  

Extraneous change?

>         return 0;
>  }
> diff -r 53dc1cf50506 xen/arch/ia64/xen/dom0_ops.c
> --- a/xen/arch/ia64/xen/dom0_ops.c      Wed Nov 21 09:12:06 2007 -0700
> +++ b/xen/arch/ia64/xen/dom0_ops.c      Mon Nov 26 16:08:49 2007 +0800
> @@ -104,6 +104,34 @@ long arch_do_domctl(xen_domctl_t *op, XE
>                  ret = -EFAULT;
>          }
>          else {
> +            if (ds->flags & XEN_DOMAINSETUP_ident_map) {
> +                struct xen_ia64_opt_feature optf;
> +                if (ds->ident_map_reg & XEN_IA64_OPTF_IDENT_MAP_REG4)
> +                {
> +                    optf.cmd = XEN_IA64_OPTF_IDENT_MAP_REG4;
> +                    optf.on = XEN_IA64_OPTF_ON;
> +                    optf.pgprot = (_PAGE_P|_PAGE_A|_PAGE_D|
> _PAGE_MA_WB|_PAGE_AR_RW);
> +                    optf.key = 0;
> +                    domain_opt_feature(d, &optf);
> +                }
> +                if (ds->ident_map_reg & XEN_IA64_OPTF_IDENT_MAP_REG5)
> +                {
> +                    optf.cmd = XEN_IA64_OPTF_IDENT_MAP_REG5;
> +                    optf.on = XEN_IA64_OPTF_ON;
> +                    optf.pgprot = (_PAGE_P|_PAGE_A|_PAGE_D|
> _PAGE_MA_UC|_PAGE_AR_RW);
> +                    optf.key = 0;
> +                    domain_opt_feature(d, &optf);
> +                }
> +                if (ds->ident_map_reg & XEN_IA64_OPTF_IDENT_MAP_REG7)
> +                {
> +                    optf.cmd = XEN_IA64_OPTF_IDENT_MAP_REG7;
> +                    optf.on = XEN_IA64_OPTF_ON;
> +                    optf.pgprot = (_PAGE_P|_PAGE_A|_PAGE_D|
> _PAGE_MA_UC|_PAGE_AR_RW);
> +                    optf.key = 0;
> +                    domain_opt_feature(d, &optf);
> +                }
> +            }
> +

Wouldn't this be unnecessary with HYPERVISOR_opt_feature?

>              if (ds->flags & XEN_DOMAINSETUP_hvm_guest) {
>                  if (!vmx_enabled) {
>                      printk("No VMX hardware feature for vmx
> domain.\n");
> diff -r 53dc1cf50506 xen/include/asm-ia64/domain.h
> --- a/xen/include/asm-ia64/domain.h     Wed Nov 21 09:12:06 2007 -0700
> +++ b/xen/include/asm-ia64/domain.h     Mon Nov 26 16:08:49 2007 +0800
> @@ -100,20 +100,6 @@ struct opt_feature {
>      struct identity_mapping im_reg5;   /* Region 5 identity mapping
> */
>      struct identity_mapping im_reg7;   /* Region 7 identity mapping
> */
>  };
> -
> -/*
> - * The base XEN_IA64_OPTF_IDENT_MAP_REG7 is defined in
> public/arch-ia64.h.
> - * Identity mapping of region 4 addresses in HVM.
> - */
> -#define XEN_IA64_OPTF_IDENT_MAP_REG4_BIT        \
> -    (XEN_IA64_OPTF_IDENT_MAP_REG7_BIT + 1)
> -#define XEN_IA64_OPTF_IDENT_MAP_REG4            \
> -    (1UL << XEN_IA64_OPTF_IDENT_MAP_REG4_BIT)
> -/* Identity mapping of region 5 addresses in HVM. */
> -#define XEN_IA64_OPTF_IDENT_MAP_REG5_BIT        \
> -    (XEN_IA64_OPTF_IDENT_MAP_REG7_BIT + 2)
> -#define XEN_IA64_OPTF_IDENT_MAP_REG5            \
> -    (1UL << XEN_IA64_OPTF_IDENT_MAP_REG5_BIT)
>  
>  /* Set an optimization feature in the struct arch_domain. */
>  extern int domain_opt_feature(struct domain *, struct
> xen_ia64_opt_feature*);
> diff -r 53dc1cf50506 xen/include/asm-ia64/vmx_platform.h
> --- a/xen/include/asm-ia64/vmx_platform.h       Wed Nov 21 09:12:06
> 2007 -0700
> +++ b/xen/include/asm-ia64/vmx_platform.h       Mon Nov 26 16:08:49
> 2007 +0800
> @@ -24,25 +24,6 @@
>  #include <asm/viosapic.h>
>  #include <asm/hvm/vacpi.h>
>  
> -
> -/* Value of guest os type */
> -#define OS_BASE     0xB0
> -#define OS_UNKNOWN  0xB0
> -#define OS_WINDOWS  0xB1
> -#define OS_LINUX    0xB2
> -#define OS_END      0xB3
> -
> -#define GOS_WINDOWS(_v) \
> -    ((_v)->domain->arch.vmx_platform.gos_type == OS_WINDOWS)
> -
> -#define GOS_LINUX(_v) \
> -    ((_v)->domain->arch.vmx_platform.gos_type == OS_LINUX)
> -
> -/* port guest Firmware use to indicate os type 
> - * this port is used to trigger SMI on x86,
> - * it is not used on ia64 */
> -#define OS_TYPE_PORT    0xB2
> -
>  struct vmx_ioreq_page {
>      spinlock_t          lock;
>      struct page_info   *page;
> @@ -52,7 +33,6 @@ int vmx_set_ioreq_page(struct domain *d,
>                         struct vmx_ioreq_page *iorp, unsigned long
> gmfn);
>  
>  typedef struct virtual_platform_def {
> -    unsigned long               gos_type;
>      struct vmx_ioreq_page       ioreq;
>      struct vmx_ioreq_page       buf_ioreq;
>      struct vmx_ioreq_page       buf_pioreq;
> diff -r 53dc1cf50506 xen/include/public/arch-ia64.h
> --- a/xen/include/public/arch-ia64.h    Wed Nov 21 09:12:06 2007 -0700
> +++ b/xen/include/public/arch-ia64.h    Mon Nov 26 16:08:49 2007 +0800
> @@ -678,6 +678,29 @@ DEFINE_XEN_GUEST_HANDLE(xen_ia64_debug_o
>  #define XEN_IA64_OPTF_IDENT_MAP_REG7           \
>         (1UL << XEN_IA64_OPTF_IDENT_MAP_REG7_BIT)
>  
> +/* Identity mapping of region 4 addresses in HVM. */
> +#define XEN_IA64_OPTF_IDENT_MAP_REG4_BIT        \
> +        (XEN_IA64_OPTF_IDENT_MAP_REG7_BIT + 1)
> +#define XEN_IA64_OPTF_IDENT_MAP_REG4            \
> +        (1UL << XEN_IA64_OPTF_IDENT_MAP_REG4_BIT)
> +
> +/* Identity mapping of region 5 addresses in HVM. */
> +#define XEN_IA64_OPTF_IDENT_MAP_REG5_BIT        \
> +        (XEN_IA64_OPTF_IDENT_MAP_REG7_BIT + 2)
> +#define XEN_IA64_OPTF_IDENT_MAP_REG5            \
> +        (1UL << XEN_IA64_OPTF_IDENT_MAP_REG5_BIT)
> +
> +#define XEN_IA64_OPTF_IDENT_MAP_NOT_SET  (0)
> +/* Value of guest os type */
> +enum GOS_TYPE
> +{
> +    OS_BASE = 0xAF,
> +    OS_DEFAULT = 0xB0,
> +    OS_WINDOWS = 0xB1,
> +    OS_LINUX = 0xB2,
> +    OS_END = 0xB3,
> +};
> +

GOS_TYPE needs to go away.

>  struct xen_ia64_opt_feature {
>         unsigned long cmd;              /* Which feature */
>         unsigned char on;               /* Switch feature on/off */
> diff -r 53dc1cf50506 xen/include/public/domctl.h
> --- a/xen/include/public/domctl.h       Wed Nov 21 09:12:06 2007 -0700
> +++ b/xen/include/public/domctl.h       Mon Nov 26 16:08:49 2007 +0800
> @@ -373,6 +373,8 @@ DEFINE_XEN_GUEST_HANDLE(xen_domctl_hyper
>  #define XEN_DOMAINSETUP_hvm_guest  (1UL<<_XEN_DOMAINSETUP_hvm_guest)
>  #define _XEN_DOMAINSETUP_query 1 /* Get parameters (for save)  */
>  #define XEN_DOMAINSETUP_query  (1UL<<_XEN_DOMAINSETUP_query)
> +#define _XEN_DOMAINSETUP_ident_map 2
> +#define XEN_DOMAINSETUP_ident_map (1UL<<_XEN_DOMAINSETUP_ident_map)
>  typedef struct xen_domctl_arch_setup {
>      uint64_aligned_t flags;  /* XEN_DOMAINSETUP_* */
>  #ifdef __ia64__
> @@ -381,6 +383,7 @@ typedef struct xen_domctl_arch_setup {
>      uint64_aligned_t xsi_va; /* Xen shared_info area virtual address.
> */
>      uint32_t hypercall_imm;  /* Break imm for Xen hypercalls.  */
>      int8_t vhpt_size_log2;   /* Log2 of VHPT size. */
> +    uint32_t ident_map_reg;   /* For specific OS opt */

Wouldn't this go away with HYPERVISOR_opt_feature?

>  #endif
>  } xen_domctl_arch_setup_t;
>  DEFINE_XEN_GUEST_HANDLE(xen_domctl_arch_setup_t);
> diff -r 53dc1cf50506 xen/include/public/hvm/params.h
> --- a/xen/include/public/hvm/params.h   Wed Nov 21 09:12:06 2007 -0700
> +++ b/xen/include/public/hvm/params.h   Mon Nov 26 16:08:49 2007 +0800
> @@ -53,8 +53,14 @@
>  #ifdef __ia64__
>  #define HVM_PARAM_NVRAM_FD     7
>  #define HVM_PARAM_VHPT_SIZE    8
> -#define HVM_PARAM_BUFPIOREQ_PFN        9
> -#endif
> +#define HVM_PARAM_BUFPIOREQ_PFN 9
> +/* Corresponding to definition in XendConstants.py,
> + * 10 is used by x86's virtual timer
> + */
> +#define HVM_PARAM_GOS_TYPE 11
> +
> +#define HVM_NR_PARAMS          12
> +#else
>  
>  /*
>   * Set mode for virtual timers (currently x86 only):
> @@ -76,5 +82,6 @@
>  #define HVMPTM_no_missed_tick_accounting 2
>  
>  #define HVM_NR_PARAMS          11
> +#endif

Is it worthwhile to include GOS_TYPE as common?

>  #endif /* __XEN_PUBLIC_HVM_PARAMS_H__ */

Thanks,

        Alex

-- 
Alex Williamson                             HP Open Source & Linux Org.


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