ia64/xen-unstable

changeset 11144:9a277d391ff9

merge
author ack@localhost.localdomain
date Tue Aug 15 16:04:12 2006 +0100 (2006-08-15)
parents e86343be4730 2ff86cd7bda1
children b26bf72514aa
files
line diff
     1.1 --- a/linux-2.6-xen-sparse/arch/i386/kernel/setup-xen.c	Tue Aug 15 15:49:16 2006 +0100
     1.2 +++ b/linux-2.6-xen-sparse/arch/i386/kernel/setup-xen.c	Tue Aug 15 16:04:12 2006 +0100
     1.3 @@ -1670,32 +1670,35 @@ void __init setup_arch(char **cmdline_p)
     1.4  		screen_info.orig_video_cols = 80;
     1.5  		screen_info.orig_video_ega_bx = 3;
     1.6  		screen_info.orig_video_points = 16;
     1.7 -		if (xen_start_info->con_info_size >= sizeof(console_info_t)) {
     1.8 -			const console_info_t *console_info = (void *)xen_start_info + xen_start_info->con_info_offs;
     1.9 -
    1.10 -			screen_info.orig_video_mode = console_info->txt_mode;
    1.11 -			screen_info.orig_video_isVGA = console_info->video_type;
    1.12 -			screen_info.orig_video_lines = console_info->video_height;
    1.13 -			screen_info.orig_video_cols = console_info->video_width;
    1.14 -			screen_info.orig_video_points = console_info->txt_points;
    1.15 -			screen_info.lfb_width = console_info->video_width;
    1.16 -			screen_info.lfb_height = console_info->video_height;
    1.17 -			screen_info.lfb_depth = console_info->lfb_depth;
    1.18 -			screen_info.lfb_base = console_info->lfb_base;
    1.19 -			screen_info.lfb_size = console_info->lfb_size;
    1.20 -			screen_info.lfb_linelength = console_info->lfb_linelen;
    1.21 -			screen_info.red_size = console_info->red_size;
    1.22 -			screen_info.red_pos = console_info->red_pos;
    1.23 -			screen_info.green_size = console_info->green_size;
    1.24 -			screen_info.green_pos = console_info->green_pos;
    1.25 -			screen_info.blue_size = console_info->blue_size;
    1.26 -			screen_info.blue_pos = console_info->blue_pos;
    1.27 -			screen_info.rsvd_size = console_info->rsvd_size;
    1.28 -			screen_info.rsvd_pos = console_info->rsvd_pos;
    1.29 +		if (xen_start_info->console.dom0.info_size >=
    1.30 +		    sizeof(struct dom0_vga_console_info)) {
    1.31 +			const struct dom0_vga_console_info *info =
    1.32 +				(struct dom0_vga_console_info *)(
    1.33 +					(char *)xen_start_info +
    1.34 +					xen_start_info->console.dom0.info_off);
    1.35 +			screen_info.orig_video_mode = info->txt_mode;
    1.36 +			screen_info.orig_video_isVGA = info->video_type;
    1.37 +			screen_info.orig_video_lines = info->video_height;
    1.38 +			screen_info.orig_video_cols = info->video_width;
    1.39 +			screen_info.orig_video_points = info->txt_points;
    1.40 +			screen_info.lfb_width = info->video_width;
    1.41 +			screen_info.lfb_height = info->video_height;
    1.42 +			screen_info.lfb_depth = info->lfb_depth;
    1.43 +			screen_info.lfb_base = info->lfb_base;
    1.44 +			screen_info.lfb_size = info->lfb_size;
    1.45 +			screen_info.lfb_linelength = info->lfb_linelen;
    1.46 +			screen_info.red_size = info->red_size;
    1.47 +			screen_info.red_pos = info->red_pos;
    1.48 +			screen_info.green_size = info->green_size;
    1.49 +			screen_info.green_pos = info->green_pos;
    1.50 +			screen_info.blue_size = info->blue_size;
    1.51 +			screen_info.blue_pos = info->blue_pos;
    1.52 +			screen_info.rsvd_size = info->rsvd_size;
    1.53 +			screen_info.rsvd_pos = info->rsvd_pos;
    1.54  		}
    1.55  		screen_info.orig_y = screen_info.orig_video_lines - 1;
    1.56 -		xen_start_info->console_mfn = 0;
    1.57 -		xen_start_info->console_evtchn = 0;
    1.58 +		xen_start_info->console.domU.mfn = 0;
    1.59 +		xen_start_info->console.domU.evtchn = 0;
    1.60  	} else
    1.61  		screen_info.orig_video_isVGA = 0;
    1.62  
     2.1 --- a/linux-2.6-xen-sparse/arch/x86_64/kernel/setup-xen.c	Tue Aug 15 15:49:16 2006 +0100
     2.2 +++ b/linux-2.6-xen-sparse/arch/x86_64/kernel/setup-xen.c	Tue Aug 15 16:04:12 2006 +0100
     2.3 @@ -648,32 +648,35 @@ void __init setup_arch(char **cmdline_p)
     2.4  		screen_info.orig_video_cols = 80;
     2.5  		screen_info.orig_video_ega_bx = 3;
     2.6  		screen_info.orig_video_points = 16;
     2.7 -		if (xen_start_info->con_info_size >= sizeof(console_info_t)) {
     2.8 -			const console_info_t *console_info = (void *)xen_start_info + xen_start_info->con_info_offs;
     2.9 -
    2.10 -			screen_info.orig_video_mode = console_info->txt_mode;
    2.11 -			screen_info.orig_video_isVGA = console_info->video_type;
    2.12 -			screen_info.orig_video_lines = console_info->video_height;
    2.13 -			screen_info.orig_video_cols = console_info->video_width;
    2.14 -			screen_info.orig_video_points = console_info->txt_points;
    2.15 -			screen_info.lfb_width = console_info->video_width;
    2.16 -			screen_info.lfb_height = console_info->video_height;
    2.17 -			screen_info.lfb_depth = console_info->lfb_depth;
    2.18 -			screen_info.lfb_base = console_info->lfb_base;
    2.19 -			screen_info.lfb_size = console_info->lfb_size;
    2.20 -			screen_info.lfb_linelength = console_info->lfb_linelen;
    2.21 -			screen_info.red_size = console_info->red_size;
    2.22 -			screen_info.red_pos = console_info->red_pos;
    2.23 -			screen_info.green_size = console_info->green_size;
    2.24 -			screen_info.green_pos = console_info->green_pos;
    2.25 -			screen_info.blue_size = console_info->blue_size;
    2.26 -			screen_info.blue_pos = console_info->blue_pos;
    2.27 -			screen_info.rsvd_size = console_info->rsvd_size;
    2.28 -			screen_info.rsvd_pos = console_info->rsvd_pos;
    2.29 +		if (xen_start_info->console.dom0.info_size >=
    2.30 +		    sizeof(struct dom0_vga_console_info)) {
    2.31 +			const struct dom0_vga_console_info *info =
    2.32 +				(struct dom0_vga_console_info *)(
    2.33 +					(char *)xen_start_info +
    2.34 +					xen_start_info->console.dom0.info_off);
    2.35 +			screen_info.orig_video_mode = info->txt_mode;
    2.36 +			screen_info.orig_video_isVGA = info->video_type;
    2.37 +			screen_info.orig_video_lines = info->video_height;
    2.38 +			screen_info.orig_video_cols = info->video_width;
    2.39 +			screen_info.orig_video_points = info->txt_points;
    2.40 +			screen_info.lfb_width = info->video_width;
    2.41 +			screen_info.lfb_height = info->video_height;
    2.42 +			screen_info.lfb_depth = info->lfb_depth;
    2.43 +			screen_info.lfb_base = info->lfb_base;
    2.44 +			screen_info.lfb_size = info->lfb_size;
    2.45 +			screen_info.lfb_linelength = info->lfb_linelen;
    2.46 +			screen_info.red_size = info->red_size;
    2.47 +			screen_info.red_pos = info->red_pos;
    2.48 +			screen_info.green_size = info->green_size;
    2.49 +			screen_info.green_pos = info->green_pos;
    2.50 +			screen_info.blue_size = info->blue_size;
    2.51 +			screen_info.blue_pos = info->blue_pos;
    2.52 +			screen_info.rsvd_size = info->rsvd_size;
    2.53 +			screen_info.rsvd_pos = info->rsvd_pos;
    2.54  		}
    2.55  		screen_info.orig_y = screen_info.orig_video_lines - 1;
    2.56 -		xen_start_info->console_mfn = 0;
    2.57 -		xen_start_info->console_evtchn = 0;
    2.58 +		xen_start_info->console.domU.mfn = 0;
    2.59 +		xen_start_info->console.domU.evtchn = 0;
    2.60  	} else
    2.61  		screen_info.orig_video_isVGA = 0;
    2.62  
     3.1 --- a/linux-2.6-xen-sparse/drivers/xen/Kconfig	Tue Aug 15 15:49:16 2006 +0100
     3.2 +++ b/linux-2.6-xen-sparse/drivers/xen/Kconfig	Tue Aug 15 16:04:12 2006 +0100
     3.3 @@ -13,7 +13,7 @@ config XEN
     3.4  if XEN
     3.5  config XEN_INTERFACE_VERSION
     3.6  	hex
     3.7 -	default 0x00030202
     3.8 +	default 0x00030203
     3.9  
    3.10  menu "XEN"
    3.11  
     4.1 --- a/linux-2.6-xen-sparse/drivers/xen/console/xencons_ring.c	Tue Aug 15 15:49:16 2006 +0100
     4.2 +++ b/linux-2.6-xen-sparse/drivers/xen/console/xencons_ring.c	Tue Aug 15 16:04:12 2006 +0100
     4.3 @@ -52,13 +52,13 @@ static int xencons_irq;
     4.4  
     4.5  static inline struct xencons_interface *xencons_interface(void)
     4.6  {
     4.7 -	return mfn_to_virt(xen_start_info->console_mfn);
     4.8 +	return mfn_to_virt(xen_start_info->console.domU.mfn);
     4.9  }
    4.10  
    4.11  static inline void notify_daemon(void)
    4.12  {
    4.13  	/* Use evtchn: this is called early, before irq is set up. */
    4.14 -	notify_remote_via_evtchn(xen_start_info->console_evtchn);
    4.15 +	notify_remote_via_evtchn(xen_start_info->console.domU.evtchn);
    4.16  }
    4.17  
    4.18  int xencons_ring_send(const char *data, unsigned len)
    4.19 @@ -116,11 +116,11 @@ int xencons_ring_init(void)
    4.20  		unbind_from_irqhandler(xencons_irq, NULL);
    4.21  	xencons_irq = 0;
    4.22  
    4.23 -	if (!xen_start_info->console_evtchn)
    4.24 +	if (!xen_start_info->console.domU.evtchn)
    4.25  		return 0;
    4.26  
    4.27  	err = bind_evtchn_to_irqhandler(
    4.28 -		xen_start_info->console_evtchn,
    4.29 +		xen_start_info->console.domU.evtchn,
    4.30  		handle_input, 0, "xencons", NULL);
    4.31  	if (err <= 0) {
    4.32  		printk(KERN_ERR "XEN console request irq failed %i\n", err);
     5.1 --- a/linux-2.6-xen-sparse/drivers/xen/core/reboot.c	Tue Aug 15 15:49:16 2006 +0100
     5.2 +++ b/linux-2.6-xen-sparse/drivers/xen/core/reboot.c	Tue Aug 15 16:04:12 2006 +0100
     5.3 @@ -106,7 +106,8 @@ static void pre_suspend(void)
     5.4  	clear_fixmap(FIX_SHARED_INFO);
     5.5  
     5.6  	xen_start_info->store_mfn = mfn_to_pfn(xen_start_info->store_mfn);
     5.7 -	xen_start_info->console_mfn = mfn_to_pfn(xen_start_info->console_mfn);
     5.8 +	xen_start_info->console.domU.mfn =
     5.9 +		mfn_to_pfn(xen_start_info->console.domU.mfn);
    5.10  }
    5.11  
    5.12  static void post_suspend(void)
     6.1 --- a/tools/libxc/ia64/xc_ia64_linux_restore.c	Tue Aug 15 15:49:16 2006 +0100
     6.2 +++ b/tools/libxc/ia64/xc_ia64_linux_restore.c	Tue Aug 15 16:04:12 2006 +0100
     6.3 @@ -288,8 +288,8 @@ xc_linux_restore(int xc_handle, int io_f
     6.4      start_info->flags = 0;
     6.5      *store_mfn = page_array[start_info->store_mfn];
     6.6      start_info->store_evtchn = store_evtchn;
     6.7 -    *console_mfn = page_array[start_info->console_mfn];
     6.8 -    start_info->console_evtchn = console_evtchn;
     6.9 +    *console_mfn = page_array[start_info->console.domU.mfn];
    6.10 +    start_info->console.domU.evtchn = console_evtchn;
    6.11      munmap(start_info, PAGE_SIZE);
    6.12  
    6.13      /*
     7.1 --- a/tools/libxc/powerpc64/xc_linux_build.c	Tue Aug 15 15:49:16 2006 +0100
     7.2 +++ b/tools/libxc/powerpc64/xc_linux_build.c	Tue Aug 15 16:04:12 2006 +0100
     7.3 @@ -308,8 +308,8 @@ static unsigned long create_start_info(s
     7.4      si->shared_info = eomem - (PAGE_SIZE * 1);
     7.5      si->store_mfn = si->nr_pages - 2;
     7.6      si->store_evtchn = store_evtchn;
     7.7 -    si->console_mfn = si->nr_pages - 3;
     7.8 -    si->console_evtchn = console_evtchn;
     7.9 +    si->console.domU.mfn = si->nr_pages - 3;
    7.10 +    si->console.domU.evtchn = console_evtchn;
    7.11      si_addr = eomem - (PAGE_SIZE * 4);
    7.12  
    7.13      return si_addr;
     8.1 --- a/tools/libxc/xc_linux_build.c	Tue Aug 15 15:49:16 2006 +0100
     8.2 +++ b/tools/libxc/xc_linux_build.c	Tue Aug 15 16:04:12 2006 +0100
     8.3 @@ -569,8 +569,8 @@ static int setup_guest(int xc_handle,
     8.4      start_info->flags        = flags;
     8.5      start_info->store_mfn    = nr_pages - 2;
     8.6      start_info->store_evtchn = store_evtchn;
     8.7 -    start_info->console_mfn   = nr_pages - 1;
     8.8 -    start_info->console_evtchn = console_evtchn;
     8.9 +    start_info->console.domU.mfn   = nr_pages - 1;
    8.10 +    start_info->console.domU.evtchn = console_evtchn;
    8.11      start_info->nr_pages       = nr_pages; // FIXME?: nr_pages - 2 ????
    8.12  
    8.13      bp = (struct xen_ia64_boot_param *)(start_info + 1);
    8.14 @@ -1047,8 +1047,8 @@ static int setup_guest(int xc_handle,
    8.15      start_info->mfn_list     = vphysmap_start;
    8.16      start_info->store_mfn    = guest_store_mfn;
    8.17      start_info->store_evtchn = store_evtchn;
    8.18 -    start_info->console_mfn   = guest_console_mfn;
    8.19 -    start_info->console_evtchn = console_evtchn;
    8.20 +    start_info->console.domU.mfn   = guest_console_mfn;
    8.21 +    start_info->console.domU.evtchn = console_evtchn;
    8.22      if ( initrd->len != 0 )
    8.23      {
    8.24          start_info->mod_start    = vinitrd_start;
     9.1 --- a/tools/libxc/xc_linux_restore.c	Tue Aug 15 15:49:16 2006 +0100
     9.2 +++ b/tools/libxc/xc_linux_restore.c	Tue Aug 15 16:04:12 2006 +0100
     9.3 @@ -690,8 +690,9 @@ int xc_linux_restore(int xc_handle, int 
     9.4      start_info->flags       = 0;
     9.5      *store_mfn = start_info->store_mfn       = p2m[start_info->store_mfn];
     9.6      start_info->store_evtchn                 = store_evtchn;
     9.7 -    *console_mfn = start_info->console_mfn   = p2m[start_info->console_mfn];
     9.8 -    start_info->console_evtchn               = console_evtchn;
     9.9 +    start_info->console.domU.mfn    = p2m[start_info->console.domU.mfn];
    9.10 +    start_info->console.domU.evtchn = console_evtchn;
    9.11 +    *console_mfn                    = start_info->console.domU.mfn;
    9.12      munmap(start_info, PAGE_SIZE);
    9.13  
    9.14      /* Uncanonicalise each GDT frame number. */
    10.1 --- a/xen/arch/x86/domain_build.c	Tue Aug 15 15:49:16 2006 +0100
    10.2 +++ b/xen/arch/x86/domain_build.c	Tue Aug 15 16:04:12 2006 +0100
    10.3 @@ -335,7 +335,9 @@ int construct_dom0(struct domain *d,
    10.4      vphysmap_start   = round_pgup(vinitrd_end);
    10.5      vphysmap_end     = vphysmap_start + (nr_pages * sizeof(unsigned long));
    10.6      vstartinfo_start = round_pgup(vphysmap_end);
    10.7 -    vstartinfo_end   = vstartinfo_start + sizeof(start_info_t) + sizeof(console_info_t);
    10.8 +    vstartinfo_end   = (vstartinfo_start +
    10.9 +                        sizeof(struct start_info) +
   10.10 +                        sizeof(struct dom0_vga_console_info));
   10.11      vpt_start        = round_pgup(vstartinfo_end);
   10.12      for ( nr_pt_pages = 2; ; nr_pt_pages++ )
   10.13      {
   10.14 @@ -773,8 +775,8 @@ int construct_dom0(struct domain *d,
   10.15  
   10.16      if ( fill_console_start_info((void *)(si + 1)) )
   10.17      {
   10.18 -        si->con_info_offs = sizeof(start_info_t);
   10.19 -        si->con_info_size = sizeof(console_info_t);
   10.20 +        si->console.dom0.info_off  = sizeof(struct start_info);
   10.21 +        si->console.dom0.info_size = sizeof(struct dom0_vga_console_info);
   10.22      }
   10.23  
   10.24      /* Reinstate the caller's page tables. */
    11.1 --- a/xen/drivers/char/console.c	Tue Aug 15 15:49:16 2006 +0100
    11.2 +++ b/xen/drivers/char/console.c	Tue Aug 15 16:04:12 2006 +0100
    11.3 @@ -154,7 +154,7 @@ static void putchar_console(int c)
    11.4      }
    11.5  }
    11.6  
    11.7 -int fill_console_start_info(console_info_t *ci)
    11.8 +int fill_console_start_info(struct dom0_vga_console_info *ci)
    11.9  {
   11.10      memset(ci, 0, sizeof(*ci));
   11.11  
    12.1 --- a/xen/include/public/arch-ia64.h	Tue Aug 15 15:49:16 2006 +0100
    12.2 +++ b/xen/include/public/arch-ia64.h	Tue Aug 15 16:04:12 2006 +0100
    12.3 @@ -7,8 +7,14 @@
    12.4  #ifndef __HYPERVISOR_IF_IA64_H__
    12.5  #define __HYPERVISOR_IF_IA64_H__
    12.6  
    12.7 +/* Structural guest handles introduced in 0x00030201. */
    12.8 +#if __XEN_INTERFACE_VERSION__ >= 0x00030201
    12.9  #define __DEFINE_XEN_GUEST_HANDLE(name, type) \
   12.10      typedef struct { type *p; } __guest_handle_ ## name
   12.11 +#else
   12.12 +#define __DEFINE_XEN_GUEST_HANDLE(name, type) \
   12.13 +    typedef type * __guest_handle_ ## name
   12.14 +#endif
   12.15  
   12.16  #define DEFINE_XEN_GUEST_HANDLE(name)   __DEFINE_XEN_GUEST_HANDLE(name, name)
   12.17  #define XEN_GUEST_HANDLE(name)          __guest_handle_ ## name
    13.1 --- a/xen/include/public/arch-powerpc.h	Tue Aug 15 15:49:16 2006 +0100
    13.2 +++ b/xen/include/public/arch-powerpc.h	Tue Aug 15 16:04:12 2006 +0100
    13.3 @@ -21,11 +21,6 @@
    13.4  #ifndef __XEN_PUBLIC_ARCH_PPC_64_H__
    13.5  #define __XEN_PUBLIC_ARCH_PPC_64_H__
    13.6  
    13.7 -#if !(defined(__XEN__) || defined(__XEN_TOOLS__))
    13.8 -/* not sure how this is supposed to get asserted */
    13.9 -#define __XEN_INTERFACE_VERSION__ 0x00030202
   13.10 -#endif
   13.11 -
   13.12  #define __DEFINE_XEN_GUEST_HANDLE(name, type) \
   13.13      typedef struct { \
   13.14          int __pad[(sizeof (long long) - sizeof (void *)) / sizeof (int)]; \
    14.1 --- a/xen/include/public/arch-x86_32.h	Tue Aug 15 15:49:16 2006 +0100
    14.2 +++ b/xen/include/public/arch-x86_32.h	Tue Aug 15 16:04:12 2006 +0100
    14.3 @@ -9,8 +9,14 @@
    14.4  #ifndef __XEN_PUBLIC_ARCH_X86_32_H__
    14.5  #define __XEN_PUBLIC_ARCH_X86_32_H__
    14.6  
    14.7 +/* Structural guest handles introduced in 0x00030201. */
    14.8 +#if __XEN_INTERFACE_VERSION__ >= 0x00030201
    14.9  #define __DEFINE_XEN_GUEST_HANDLE(name, type) \
   14.10      typedef struct { type *p; } __guest_handle_ ## name
   14.11 +#else
   14.12 +#define __DEFINE_XEN_GUEST_HANDLE(name, type) \
   14.13 +    typedef type * __guest_handle_ ## name
   14.14 +#endif
   14.15  
   14.16  #define DEFINE_XEN_GUEST_HANDLE(name)   __DEFINE_XEN_GUEST_HANDLE(name, name)
   14.17  #define XEN_GUEST_HANDLE(name)          __guest_handle_ ## name
    15.1 --- a/xen/include/public/arch-x86_64.h	Tue Aug 15 15:49:16 2006 +0100
    15.2 +++ b/xen/include/public/arch-x86_64.h	Tue Aug 15 16:04:12 2006 +0100
    15.3 @@ -9,8 +9,14 @@
    15.4  #ifndef __XEN_PUBLIC_ARCH_X86_64_H__
    15.5  #define __XEN_PUBLIC_ARCH_X86_64_H__
    15.6  
    15.7 +/* Structural guest handles introduced in 0x00030201. */
    15.8 +#if __XEN_INTERFACE_VERSION__ >= 0x00030201
    15.9  #define __DEFINE_XEN_GUEST_HANDLE(name, type) \
   15.10      typedef struct { type *p; } __guest_handle_ ## name
   15.11 +#else
   15.12 +#define __DEFINE_XEN_GUEST_HANDLE(name, type) \
   15.13 +    typedef type * __guest_handle_ ## name
   15.14 +#endif
   15.15  
   15.16  #define DEFINE_XEN_GUEST_HANDLE(name)   __DEFINE_XEN_GUEST_HANDLE(name, name)
   15.17  #define XEN_GUEST_HANDLE(name)          __guest_handle_ ## name
    16.1 --- a/xen/include/public/xen-compat.h	Tue Aug 15 15:49:16 2006 +0100
    16.2 +++ b/xen/include/public/xen-compat.h	Tue Aug 15 16:04:12 2006 +0100
    16.3 @@ -9,7 +9,7 @@
    16.4  #ifndef __XEN_PUBLIC_XEN_COMPAT_H__
    16.5  #define __XEN_PUBLIC_XEN_COMPAT_H__
    16.6  
    16.7 -#define __XEN_LATEST_INTERFACE_VERSION__ 0x00030202
    16.8 +#define __XEN_LATEST_INTERFACE_VERSION__ 0x00030203
    16.9  
   16.10  #if defined(__XEN__) || defined(__XEN_TOOLS__)
   16.11  /* Xen is built with matching headers and implements the latest interface. */
   16.12 @@ -23,25 +23,4 @@
   16.13  #error "These header files do not support the requested interface version."
   16.14  #endif
   16.15  
   16.16 -/* New sched_op hypercall introduced in 0x00030101. */
   16.17 -#if __XEN_INTERFACE_VERSION__ < 0x00030101
   16.18 -#undef __HYPERVISOR_sched_op
   16.19 -#define __HYPERVISOR_sched_op __HYPERVISOR_sched_op_compat
   16.20 -#endif
   16.21 -
   16.22 -/* Structural guest handles introduced in 0x00030201. */
   16.23 -#if __XEN_INTERFACE_VERSION__ < 0x00030201
   16.24 -#undef __DEFINE_XEN_GUEST_HANDLE
   16.25 -#define __DEFINE_XEN_GUEST_HANDLE(name, type) \
   16.26 -    typedef type * __guest_handle_ ## name
   16.27 -#endif
   16.28 -
   16.29 -/* New event-channel and physdev hypercalls introduced in 0x00030202. */
   16.30 -#if __XEN_INTERFACE_VERSION__ < 0x00030202
   16.31 -#undef __HYPERVISOR_event_channel_op
   16.32 -#define __HYPERVISOR_event_channel_op __HYPERVISOR_event_channel_op_compat
   16.33 -#undef __HYPERVISOR_physdev_op
   16.34 -#define __HYPERVISOR_physdev_op __HYPERVISOR_physdev_op_compat
   16.35 -#endif
   16.36 -
   16.37  #endif /* __XEN_PUBLIC_XEN_COMPAT_H__ */
    17.1 --- a/xen/include/public/xen.h	Tue Aug 15 15:49:16 2006 +0100
    17.2 +++ b/xen/include/public/xen.h	Tue Aug 15 16:04:12 2006 +0100
    17.3 @@ -9,6 +9,8 @@
    17.4  #ifndef __XEN_PUBLIC_XEN_H__
    17.5  #define __XEN_PUBLIC_XEN_H__
    17.6  
    17.7 +#include "xen-compat.h"
    17.8 +
    17.9  #if defined(__i386__)
   17.10  #include "arch-x86_32.h"
   17.11  #elif defined(__x86_64__)
   17.12 @@ -78,6 +80,24 @@
   17.13  #define __HYPERVISOR_arch_6               54
   17.14  #define __HYPERVISOR_arch_7               55
   17.15  
   17.16 +/*
   17.17 + * HYPERCALL COMPATIBILITY.
   17.18 + */
   17.19 +
   17.20 +/* New sched_op hypercall introduced in 0x00030101. */
   17.21 +#if __XEN_INTERFACE_VERSION__ < 0x00030101
   17.22 +#undef __HYPERVISOR_sched_op
   17.23 +#define __HYPERVISOR_sched_op __HYPERVISOR_sched_op_compat
   17.24 +#endif
   17.25 +
   17.26 +/* New event-channel and physdev hypercalls introduced in 0x00030202. */
   17.27 +#if __XEN_INTERFACE_VERSION__ < 0x00030202
   17.28 +#undef __HYPERVISOR_event_channel_op
   17.29 +#define __HYPERVISOR_event_channel_op __HYPERVISOR_event_channel_op_compat
   17.30 +#undef __HYPERVISOR_physdev_op
   17.31 +#define __HYPERVISOR_physdev_op __HYPERVISOR_physdev_op_compat
   17.32 +#endif
   17.33 +
   17.34  /* 
   17.35   * VIRTUAL INTERRUPTS
   17.36   * 
   17.37 @@ -467,14 +487,15 @@ struct start_info {
   17.38      xen_pfn_t store_mfn;        /* MACHINE page number of shared page.    */
   17.39      uint32_t store_evtchn;      /* Event channel for store communication. */
   17.40      union {
   17.41 -        xen_pfn_t console_mfn;  /* MACHINE page number of console page.   */
   17.42 -        uint32_t con_info_offs; /* Dom0 only: offset of console_info from
   17.43 -                                   start_info                             */
   17.44 -    };
   17.45 -    union {
   17.46 -        uint32_t console_evtchn;/* Event channel for console messages.    */
   17.47 -        uint32_t con_info_size; /* Dom0 only: size of console_info        */
   17.48 -    };
   17.49 +        struct {
   17.50 +            xen_pfn_t mfn;      /* MACHINE page number of console page.   */
   17.51 +            uint32_t  evtchn;   /* Event channel for console page.        */
   17.52 +        } domU;
   17.53 +        struct {
   17.54 +            uint32_t info_off;  /* Offset of console_info struct.         */
   17.55 +            uint32_t info_size; /* Size of console_info struct from start.*/
   17.56 +        } dom0;
   17.57 +    } console;
   17.58      /* THE FOLLOWING ARE ONLY FILLED IN ON INITIAL BOOT (NOT RESUME).     */
   17.59      unsigned long pt_base;      /* VIRTUAL address of page directory.     */
   17.60      unsigned long nr_pt_frames; /* Number of bootstrap p.t. frames.       */
   17.61 @@ -485,11 +506,17 @@ struct start_info {
   17.62  };
   17.63  typedef struct start_info start_info_t;
   17.64  
   17.65 +/* New console union for dom0 introduced in 0x00030203. */
   17.66 +#if __XEN_INTERFACE_VERSION__ < 0x00030203
   17.67 +#define console_mfn    console.domU.mfn
   17.68 +#define console_evtchn console.domU.evtchn
   17.69 +#endif
   17.70 +
   17.71  /* These flags are passed in the 'flags' field of start_info_t. */
   17.72  #define SIF_PRIVILEGED    (1<<0)  /* Is the domain privileged? */
   17.73  #define SIF_INITDOMAIN    (1<<1)  /* Is this the initial control domain? */
   17.74  
   17.75 -typedef struct console_info {
   17.76 +typedef struct dom0_vga_console_info {
   17.77      uint8_t video_type;
   17.78      uint8_t txt_points;
   17.79      uint16_t txt_mode;
   17.80 @@ -509,7 +536,7 @@ typedef struct console_info {
   17.81      uint8_t blue_size;
   17.82      uint8_t rsvd_pos;
   17.83      uint8_t rsvd_size;
   17.84 -} console_info_t;
   17.85 +} dom0_vga_console_info_t;
   17.86  
   17.87  typedef uint64_t cpumap_t;
   17.88  
   17.89 @@ -526,8 +553,6 @@ typedef uint8_t xen_domain_handle_t[16];
   17.90  
   17.91  #endif /* !__ASSEMBLY__ */
   17.92  
   17.93 -#include "xen-compat.h"
   17.94 -
   17.95  #endif /* __XEN_PUBLIC_XEN_H__ */
   17.96  
   17.97  /*
    18.1 --- a/xen/include/xen/console.h	Tue Aug 15 15:49:16 2006 +0100
    18.2 +++ b/xen/include/xen/console.h	Tue Aug 15 16:04:12 2006 +0100
    18.3 @@ -18,7 +18,7 @@ long read_console_ring(XEN_GUEST_HANDLE(
    18.4  void init_console(void);
    18.5  void console_endboot(void);
    18.6  
    18.7 -int fill_console_start_info(console_info_t *);
    18.8 +int fill_console_start_info(struct dom0_vga_console_info *);
    18.9  
   18.10  void console_force_unlock(void);
   18.11  void console_force_lock(void);