ia64/linux-2.6.18-xen.hg

changeset 540:db71fb3204b5

Sync public Xen hedaers with xen-unstable.hg
Signed-off-by: Keir Fraser <keir.fraser@citrix.com>
author Keir Fraser <keir.fraser@citrix.com>
date Mon May 12 10:03:08 2008 +0100 (2008-05-12)
parents 0da2e3c3ae18
children 05b7df5cc607
files include/xen/interface/arch-ia64.h include/xen/interface/arch-ia64/hvm/memmap.h include/xen/interface/arch-ia64/sioemu.h include/xen/interface/arch-x86/xen-x86_32.h include/xen/interface/domctl.h include/xen/interface/hvm/hvm_op.h include/xen/interface/hvm/params.h include/xen/interface/io/pciif.h include/xen/interface/io/protocols.h include/xen/interface/io/xs_wire.h include/xen/interface/libelf.h include/xen/interface/physdev.h include/xen/interface/sysctl.h include/xen/interface/xen.h include/xen/interface/xsm/acm.h
line diff
     1.1 --- a/include/xen/interface/arch-ia64.h	Thu May 08 13:44:57 2008 +0100
     1.2 +++ b/include/xen/interface/arch-ia64.h	Mon May 12 10:03:08 2008 +0100
     1.3 @@ -68,6 +68,10 @@ typedef unsigned long xen_pfn_t;
     1.4  /* WARNING: before changing this, check that shared_info fits on a page */
     1.5  #define MAX_VIRT_CPUS 64
     1.6  
     1.7 +/* IO ports location for PV.  */
     1.8 +#define IO_PORTS_PADDR          0x00000ffffc000000UL
     1.9 +#define IO_PORTS_SIZE           0x0000000004000000UL
    1.10 +
    1.11  #ifndef __ASSEMBLY__
    1.12  
    1.13  typedef unsigned long xen_ulong_t;
    1.14 @@ -80,54 +84,6 @@ typedef unsigned long xen_ulong_t;
    1.15  
    1.16  #define INVALID_MFN       (~0UL)
    1.17  
    1.18 -#define MEM_G   (1UL << 30)
    1.19 -#define MEM_M   (1UL << 20)
    1.20 -#define MEM_K   (1UL << 10)
    1.21 -
    1.22 -/* Guest physical address of IO ports space.  */
    1.23 -#define IO_PORTS_PADDR          0x00000ffffc000000UL
    1.24 -#define IO_PORTS_SIZE           0x0000000004000000UL
    1.25 -
    1.26 -#define MMIO_START       (3 * MEM_G)
    1.27 -#define MMIO_SIZE        (512 * MEM_M)
    1.28 -
    1.29 -#define VGA_IO_START     0xA0000UL
    1.30 -#define VGA_IO_SIZE      0x20000
    1.31 -
    1.32 -#define LEGACY_IO_START  (MMIO_START + MMIO_SIZE)
    1.33 -#define LEGACY_IO_SIZE   (64*MEM_M)
    1.34 -
    1.35 -#define IO_PAGE_START (LEGACY_IO_START + LEGACY_IO_SIZE)
    1.36 -#define IO_PAGE_SIZE  XEN_PAGE_SIZE
    1.37 -
    1.38 -#define STORE_PAGE_START (IO_PAGE_START + IO_PAGE_SIZE)
    1.39 -#define STORE_PAGE_SIZE  XEN_PAGE_SIZE
    1.40 -
    1.41 -#define BUFFER_IO_PAGE_START (STORE_PAGE_START + STORE_PAGE_SIZE)
    1.42 -#define BUFFER_IO_PAGE_SIZE  XEN_PAGE_SIZE
    1.43 -
    1.44 -#define BUFFER_PIO_PAGE_START (BUFFER_IO_PAGE_START + BUFFER_IO_PAGE_SIZE)
    1.45 -#define BUFFER_PIO_PAGE_SIZE  XEN_PAGE_SIZE
    1.46 -
    1.47 -#define IO_SAPIC_START   0xfec00000UL
    1.48 -#define IO_SAPIC_SIZE    0x100000
    1.49 -
    1.50 -#define PIB_START 0xfee00000UL
    1.51 -#define PIB_SIZE 0x200000
    1.52 -
    1.53 -#define GFW_START        (4*MEM_G -16*MEM_M)
    1.54 -#define GFW_SIZE         (16*MEM_M)
    1.55 -
    1.56 -/* Nvram belongs to GFW memory space  */
    1.57 -#define NVRAM_SIZE       (MEM_K * 64)
    1.58 -#define NVRAM_START      (GFW_START + 10 * MEM_M)
    1.59 -
    1.60 -#define NVRAM_VALID_SIG 0x4650494e45584948 		// "HIXENIPF"
    1.61 -struct nvram_save_addr {
    1.62 -    unsigned long addr;
    1.63 -    unsigned long signature;
    1.64 -};
    1.65 -
    1.66  struct pt_fpreg {
    1.67      union {
    1.68          unsigned long bits[2];
    1.69 @@ -509,6 +465,9 @@ DEFINE_XEN_GUEST_HANDLE(vcpu_guest_conte
    1.70  /* Internal only: associated with PGC_allocated bit */
    1.71  #define _ASSIGN_pgc_allocated           3
    1.72  #define ASSIGN_pgc_allocated            (1UL << _ASSIGN_pgc_allocated)
    1.73 +/* Page is an IO page.  */
    1.74 +#define _ASSIGN_io                      4
    1.75 +#define ASSIGN_io                       (1UL << _ASSIGN_io)
    1.76  
    1.77  /* This structure has the same layout of struct ia64_boot_param, defined in
    1.78     <asm/system.h>.  It is redefined here to ease use.  */
    1.79 @@ -644,6 +603,10 @@ DEFINE_XEN_GUEST_HANDLE(pfarg_load_t);
    1.80  #endif /* __ASSEMBLY__ */
    1.81  #endif /* XEN */
    1.82  
    1.83 +#ifndef __ASSEMBLY__
    1.84 +#include "arch-ia64/hvm/memmap.h"
    1.85 +#endif
    1.86 +
    1.87  #endif /* __HYPERVISOR_IF_IA64_H__ */
    1.88  
    1.89  /*
     2.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
     2.2 +++ b/include/xen/interface/arch-ia64/hvm/memmap.h	Mon May 12 10:03:08 2008 +0100
     2.3 @@ -0,0 +1,88 @@
     2.4 +/******************************************************************************
     2.5 + * memmap.h
     2.6 + *
     2.7 + * Copyright (c) 2008 Tristan Gingold <tgingold AT free fr>
     2.8 + *
     2.9 + * This program is free software; you can redistribute it and/or modify
    2.10 + * it under the terms of the GNU General Public License as published by
    2.11 + * the Free Software Foundation; either version 2 of the License, or
    2.12 + * (at your option) any later version.
    2.13 + *
    2.14 + * This program is distributed in the hope that it will be useful,
    2.15 + * but WITHOUT ANY WARRANTY; without even the implied warranty of
    2.16 + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
    2.17 + * GNU General Public License for more details.
    2.18 + *
    2.19 + * You should have received a copy of the GNU General Public License
    2.20 + * along with this program; if not, write to the Free Software
    2.21 + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
    2.22 + *
    2.23 + */
    2.24 +
    2.25 +#ifndef __XEN_PUBLIC_HVM_MEMMAP_IA64_H__
    2.26 +#define __XEN_PUBLIC_HVM_MEMMAP_IA64_H__
    2.27 +
    2.28 +#define MEM_G  (1UL << 30)
    2.29 +#define MEM_M  (1UL << 20)
    2.30 +#define MEM_K  (1UL << 10)
    2.31 +
    2.32 +/* Guest physical address of IO ports space.  */
    2.33 +#define MMIO_START  (3 * MEM_G)
    2.34 +#define MMIO_SIZE   (512 * MEM_M)
    2.35 +
    2.36 +#define VGA_IO_START  0xA0000UL
    2.37 +#define VGA_IO_SIZE   0x20000
    2.38 +
    2.39 +#define LEGACY_IO_START  (MMIO_START + MMIO_SIZE)
    2.40 +#define LEGACY_IO_SIZE   (64 * MEM_M)
    2.41 +
    2.42 +#define IO_PAGE_START  (LEGACY_IO_START + LEGACY_IO_SIZE)
    2.43 +#define IO_PAGE_SIZE   XEN_PAGE_SIZE
    2.44 +
    2.45 +#define STORE_PAGE_START  (IO_PAGE_START + IO_PAGE_SIZE)
    2.46 +#define STORE_PAGE_SIZE   XEN_PAGE_SIZE
    2.47 +
    2.48 +#define BUFFER_IO_PAGE_START  (STORE_PAGE_START + STORE_PAGE_SIZE)
    2.49 +#define BUFFER_IO_PAGE_SIZE   XEN_PAGE_SIZE
    2.50 +
    2.51 +#define BUFFER_PIO_PAGE_START  (BUFFER_IO_PAGE_START + BUFFER_IO_PAGE_SIZE)
    2.52 +#define BUFFER_PIO_PAGE_SIZE   XEN_PAGE_SIZE
    2.53 +
    2.54 +#define IO_SAPIC_START  0xfec00000UL
    2.55 +#define IO_SAPIC_SIZE   0x100000
    2.56 +
    2.57 +#define PIB_START  0xfee00000UL
    2.58 +#define PIB_SIZE   0x200000
    2.59 +
    2.60 +#define GFW_START  (4 * MEM_G - 16 * MEM_M)
    2.61 +#define GFW_SIZE   (16 * MEM_M)
    2.62 +
    2.63 +/* domVTI */
    2.64 +#define GPFN_FRAME_BUFFER  0x1 /* VGA framebuffer */
    2.65 +#define GPFN_LOW_MMIO      0x2 /* Low MMIO range */
    2.66 +#define GPFN_PIB           0x3 /* PIB base */
    2.67 +#define GPFN_IOSAPIC       0x4 /* IOSAPIC base */
    2.68 +#define GPFN_LEGACY_IO     0x5 /* Legacy I/O base */
    2.69 +#define GPFN_HIGH_MMIO     0x6 /* High MMIO range */
    2.70 +
    2.71 +/* Nvram belongs to GFW memory space  */
    2.72 +#define NVRAM_SIZE   (MEM_K * 64)
    2.73 +#define NVRAM_START  (GFW_START + 10 * MEM_M)
    2.74 +
    2.75 +#define NVRAM_VALID_SIG  0x4650494e45584948 /* "HIXENIPF" */
    2.76 +struct nvram_save_addr {
    2.77 +    unsigned long addr;
    2.78 +    unsigned long signature;
    2.79 +};
    2.80 +
    2.81 +#endif /* __XEN_PUBLIC_HVM_MEMMAP_IA64_H__ */
    2.82 +
    2.83 +/*
    2.84 + * Local variables:
    2.85 + * mode: C
    2.86 + * c-set-style: "BSD"
    2.87 + * c-basic-offset: 4
    2.88 + * tab-width: 4
    2.89 + * indent-tabs-mode: nil
    2.90 + * End:
    2.91 + */
     3.1 --- a/include/xen/interface/arch-ia64/sioemu.h	Thu May 08 13:44:57 2008 +0100
     3.2 +++ b/include/xen/interface/arch-ia64/sioemu.h	Mon May 12 10:03:08 2008 +0100
     3.3 @@ -22,6 +22,9 @@
     3.4  #ifndef __XEN_PUBLIC_IA64_SIOEMU_H__
     3.5  #define __XEN_PUBLIC_IA64_SIOEMU_H__
     3.6  
     3.7 +/* SIOEMU specific hypercalls.
     3.8 +   The numbers are the minor part of FW_HYPERCALL_SIOEMU.  */
     3.9 +
    3.10  /* Defines the callback entry point.  r8=ip, r9=data.
    3.11     Must be called per-vcpu.  */
    3.12  #define SIOEMU_HYPERCALL_SET_CALLBACK 0x01
    3.13 @@ -35,8 +38,52 @@
    3.14  /* Get wallclock time.  */
    3.15  #define SIOEMU_HYPERCALL_GET_TIME 0x04
    3.16  
    3.17 -/* Return from callback.  r16=0.
    3.18 -   Unmask vcpu events.  */
    3.19 -#define SIOEMU_HYPERPRIVOP_CALLBACK_RETURN 0x01
    3.20 +/* Flush cache.  */
    3.21 +#define SIOEMU_HYPERCALL_FLUSH_CACHE 0x07
    3.22  
    3.23 +/* Get freq base.  */
    3.24 +#define SIOEMU_HYPERCALL_FREQ_BASE 0x08
    3.25 +
    3.26 +/* Return from callback.  */
    3.27 +#define SIOEMU_HYPERCALL_CALLBACK_RETURN 0x09
    3.28 +
    3.29 +/* Deliver an interrupt.  */
    3.30 +#define SIOEMU_HYPERCALL_DELIVER_INT 0x0a
    3.31 +
    3.32 +/* SIOEMU callback reason.  */
    3.33 +
    3.34 +/* An event (from event channel) has to be delivered.  */
    3.35 +#define SIOEMU_CB_EVENT       0x00
    3.36 +
    3.37 +/* Emulate an IO access.  */
    3.38 +#define SIOEMU_CB_IO_EMULATE  0x01
    3.39 +
    3.40 +/* An IPI is sent to a dead vcpu.  */
    3.41 +#define SIOEMU_CB_WAKEUP_VCPU 0x02
    3.42 +
    3.43 +/* A SAL hypercall is executed.  */
    3.44 +#define SIOEMU_CB_SAL_ASSIST  0x03
    3.45 +
    3.46 +#ifndef __ASSEMBLY__
    3.47 +struct sioemu_callback_info {
    3.48 +    /* Saved registers.  */
    3.49 +    unsigned long ip;
    3.50 +    unsigned long psr;
    3.51 +    unsigned long ifs;
    3.52 +    unsigned long nats;
    3.53 +    unsigned long r8;
    3.54 +    unsigned long r9;
    3.55 +    unsigned long r10;
    3.56 +    unsigned long r11;
    3.57 +
    3.58 +    /* Callback parameters.  */
    3.59 +    unsigned long cause;
    3.60 +    unsigned long arg0;
    3.61 +    unsigned long arg1;
    3.62 +    unsigned long arg2;
    3.63 +    unsigned long arg3;
    3.64 +    unsigned long _pad2[2];
    3.65 +    unsigned long r2;
    3.66 +};
    3.67 +#endif /* __ASSEMBLY__ */
    3.68  #endif /* __XEN_PUBLIC_IA64_SIOEMU_H__ */
     4.1 --- a/include/xen/interface/arch-x86/xen-x86_32.h	Thu May 08 13:44:57 2008 +0100
     4.2 +++ b/include/xen/interface/arch-x86/xen-x86_32.h	Mon May 12 10:03:08 2008 +0100
     4.3 @@ -74,6 +74,7 @@
     4.4  #define MACH2PHYS_VIRT_END_PAE         \
     4.5      mk_unsigned_long(__MACH2PHYS_VIRT_END_PAE)
     4.6  
     4.7 +/* Non-PAE bounds are obsolete. */
     4.8  #define __HYPERVISOR_VIRT_START_NONPAE 0xFC000000
     4.9  #define __MACH2PHYS_VIRT_START_NONPAE  0xFC000000
    4.10  #define __MACH2PHYS_VIRT_END_NONPAE    0xFC400000
    4.11 @@ -84,15 +85,9 @@
    4.12  #define MACH2PHYS_VIRT_END_NONPAE      \
    4.13      mk_unsigned_long(__MACH2PHYS_VIRT_END_NONPAE)
    4.14  
    4.15 -#ifdef CONFIG_X86_PAE
    4.16  #define __HYPERVISOR_VIRT_START __HYPERVISOR_VIRT_START_PAE
    4.17  #define __MACH2PHYS_VIRT_START  __MACH2PHYS_VIRT_START_PAE
    4.18  #define __MACH2PHYS_VIRT_END    __MACH2PHYS_VIRT_END_PAE
    4.19 -#else
    4.20 -#define __HYPERVISOR_VIRT_START __HYPERVISOR_VIRT_START_NONPAE
    4.21 -#define __MACH2PHYS_VIRT_START  __MACH2PHYS_VIRT_START_NONPAE
    4.22 -#define __MACH2PHYS_VIRT_END    __MACH2PHYS_VIRT_END_NONPAE
    4.23 -#endif
    4.24  
    4.25  #ifndef HYPERVISOR_VIRT_START
    4.26  #define HYPERVISOR_VIRT_START mk_unsigned_long(__HYPERVISOR_VIRT_START)
     5.1 --- a/include/xen/interface/domctl.h	Thu May 08 13:44:57 2008 +0100
     5.2 +++ b/include/xen/interface/domctl.h	Mon May 12 10:03:08 2008 +0100
     5.3 @@ -454,7 +454,8 @@ DEFINE_XEN_GUEST_HANDLE(xen_domctl_assig
     5.4  #define XEN_DOMCTL_unbind_pt_irq     48
     5.5  typedef enum pt_irq_type_e {
     5.6      PT_IRQ_TYPE_PCI,
     5.7 -    PT_IRQ_TYPE_ISA
     5.8 +    PT_IRQ_TYPE_ISA,
     5.9 +    PT_IRQ_TYPE_MSI,
    5.10  } pt_irq_type_t;
    5.11  struct xen_domctl_bind_pt_irq {
    5.12      uint32_t machine_irq;
    5.13 @@ -470,6 +471,10 @@ struct xen_domctl_bind_pt_irq {
    5.14              uint8_t device;
    5.15              uint8_t intx;
    5.16          } pci;
    5.17 +        struct {
    5.18 +            uint8_t gvec;
    5.19 +            uint32_t gflags;
    5.20 +        } msi;
    5.21      } u;
    5.22  };
    5.23  typedef struct xen_domctl_bind_pt_irq xen_domctl_bind_pt_irq_t;
    5.24 @@ -571,6 +576,19 @@ struct xen_domctl_set_target {
    5.25  typedef struct xen_domctl_set_target xen_domctl_set_target_t;
    5.26  DEFINE_XEN_GUEST_HANDLE(xen_domctl_set_target_t);
    5.27  
    5.28 +#if defined(__i386__) || defined(__x86_64__)
    5.29 +# define XEN_CPUID_INPUT_UNUSED  0xFFFFFFFF
    5.30 +# define XEN_DOMCTL_set_cpuid 49
    5.31 +struct xen_domctl_cpuid {
    5.32 +  unsigned int  input[2];
    5.33 +  unsigned int  eax;
    5.34 +  unsigned int  ebx;
    5.35 +  unsigned int  ecx;
    5.36 +  unsigned int  edx;
    5.37 +};
    5.38 +typedef struct xen_domctl_cpuid xen_domctl_cpuid_t;
    5.39 +DEFINE_XEN_GUEST_HANDLE(xen_domctl_cpuid_t);
    5.40 +#endif
    5.41  
    5.42  struct xen_domctl {
    5.43      uint32_t cmd;
    5.44 @@ -609,6 +627,9 @@ struct xen_domctl {
    5.45          struct xen_domctl_ext_vcpucontext   ext_vcpucontext;
    5.46          struct xen_domctl_set_opt_feature   set_opt_feature;
    5.47          struct xen_domctl_set_target        set_target;
    5.48 +#if defined(__i386__) || defined(__x86_64__)
    5.49 +        struct xen_domctl_cpuid             cpuid;
    5.50 +#endif
    5.51          uint8_t                             pad[128];
    5.52      } u;
    5.53  };
     6.1 --- a/include/xen/interface/hvm/hvm_op.h	Thu May 08 13:44:57 2008 +0100
     6.2 +++ b/include/xen/interface/hvm/hvm_op.h	Mon May 12 10:03:08 2008 +0100
     6.3 @@ -73,4 +73,20 @@ DEFINE_XEN_GUEST_HANDLE(xen_hvm_set_pci_
     6.4  /* Flushes all VCPU TLBs: @arg must be NULL. */
     6.5  #define HVMOP_flush_tlbs          5
     6.6  
     6.7 +/* Track dirty VRAM. */
     6.8 +#define HVMOP_track_dirty_vram    6
     6.9 +struct xen_hvm_track_dirty_vram {
    6.10 +    /* Domain to be tracked. */
    6.11 +    domid_t  domid;
    6.12 +    /* First pfn to track. */
    6.13 +    uint64_aligned_t first_pfn;
    6.14 +    /* Number of pages to track. */
    6.15 +    uint64_aligned_t nr;
    6.16 +    /* OUT variable. */
    6.17 +    /* Dirty bitmap buffer. */
    6.18 +    XEN_GUEST_HANDLE_64(uint8) dirty_bitmap;
    6.19 +};
    6.20 +typedef struct xen_hvm_track_dirty_vram xen_hvm_track_dirty_vram_t;
    6.21 +DEFINE_XEN_GUEST_HANDLE(xen_hvm_track_dirty_vram_t);
    6.22 +
    6.23  #endif /* __XEN_PUBLIC_HVM_HVM_OP_H__ */
     7.1 --- a/include/xen/interface/hvm/params.h	Thu May 08 13:44:57 2008 +0100
     7.2 +++ b/include/xen/interface/hvm/params.h	Mon May 12 10:03:08 2008 +0100
     7.3 @@ -84,6 +84,12 @@
     7.4  /* Boolean: Enable virtual HPET (high-precision event timer)? (x86-only) */
     7.5  #define HVM_PARAM_HPET_ENABLED 11
     7.6  
     7.7 -#define HVM_NR_PARAMS          12
     7.8 +/* Identity-map page directory used by Intel EPT when CR0.PG=0. */
     7.9 +#define HVM_PARAM_IDENT_PT     12
    7.10 +
    7.11 +/* Device Model domain, defaults to 0. */
    7.12 +#define HVM_PARAM_DM_DOMAIN    13
    7.13 +
    7.14 +#define HVM_NR_PARAMS          14
    7.15  
    7.16  #endif /* __XEN_PUBLIC_HVM_PARAMS_H__ */
     8.1 --- a/include/xen/interface/io/pciif.h	Thu May 08 13:44:57 2008 +0100
     8.2 +++ b/include/xen/interface/io/pciif.h	Mon May 12 10:03:08 2008 +0100
     8.3 @@ -34,10 +34,6 @@
     8.4  /* xen_pci_op commands */
     8.5  #define XEN_PCI_OP_conf_read    (0)
     8.6  #define XEN_PCI_OP_conf_write   (1)
     8.7 -#define XEN_PCI_OP_enable_msi   (2)
     8.8 -#define XEN_PCI_OP_enable_msix  (3)
     8.9 -#define XEN_PCI_OP_disable_msi  (4)
    8.10 -#define XEN_PCI_OP_disable_msix (5)
    8.11  
    8.12  /* xen_pci_op error numbers */
    8.13  #define XEN_PCI_ERR_success          (0)
    8.14 @@ -48,12 +44,6 @@
    8.15  /* XEN_PCI_ERR_op_failed - backend failed to complete the operation */
    8.16  #define XEN_PCI_ERR_op_failed       (-5)
    8.17  
    8.18 -/*
    8.19 - * it should be PAGE_SIZE-sizeof(struct xen_pci_op))/sizeof(struct msix_entry))
    8.20 - * Should not exceed 128
    8.21 - */
    8.22 -#define SH_INFO_MAX_VEC     128
    8.23 -
    8.24  struct xen_pci_op {
    8.25      /* IN: what action to perform: XEN_PCI_OP_* */
    8.26      uint32_t cmd;
    8.27 @@ -72,11 +62,6 @@ struct xen_pci_op {
    8.28  
    8.29      /* IN/OUT: Contains the result after a READ or the value to WRITE */
    8.30      uint32_t value;
    8.31 -    /* IN: Contains extra infor for this operation */
    8.32 -    uint32_t info;
    8.33 -    /*IN:  param for msi-x */
    8.34 -    struct msix_entry msix_entries[SH_INFO_MAX_VEC];
    8.35 -
    8.36  };
    8.37  
    8.38  struct xen_pci_sharedinfo {
     9.1 --- a/include/xen/interface/io/protocols.h	Thu May 08 13:44:57 2008 +0100
     9.2 +++ b/include/xen/interface/io/protocols.h	Mon May 12 10:03:08 2008 +0100
     9.3 @@ -26,7 +26,6 @@
     9.4  #define XEN_IO_PROTO_ABI_X86_32     "x86_32-abi"
     9.5  #define XEN_IO_PROTO_ABI_X86_64     "x86_64-abi"
     9.6  #define XEN_IO_PROTO_ABI_IA64       "ia64-abi"
     9.7 -#define XEN_IO_PROTO_ABI_POWERPC64  "powerpc64-abi"
     9.8  
     9.9  #if defined(__i386__)
    9.10  # define XEN_IO_PROTO_ABI_NATIVE XEN_IO_PROTO_ABI_X86_32
    9.11 @@ -34,8 +33,6 @@
    9.12  # define XEN_IO_PROTO_ABI_NATIVE XEN_IO_PROTO_ABI_X86_64
    9.13  #elif defined(__ia64__)
    9.14  # define XEN_IO_PROTO_ABI_NATIVE XEN_IO_PROTO_ABI_IA64
    9.15 -#elif defined(__powerpc64__)
    9.16 -# define XEN_IO_PROTO_ABI_NATIVE XEN_IO_PROTO_ABI_POWERPC64
    9.17  #else
    9.18  # error arch fixup needed here
    9.19  #endif
    10.1 --- a/include/xen/interface/io/xs_wire.h	Thu May 08 13:44:57 2008 +0100
    10.2 +++ b/include/xen/interface/io/xs_wire.h	Mon May 12 10:03:08 2008 +0100
    10.3 @@ -61,6 +61,7 @@ struct xsd_errors
    10.4      const char *errstring;
    10.5  };
    10.6  #define XSD_ERROR(x) { x, #x }
    10.7 +/* LINTED: static unused */
    10.8  static struct xsd_errors xsd_errors[]
    10.9  #if defined(__GNUC__)
   10.10  __attribute__((unused))
    11.1 --- a/include/xen/interface/libelf.h	Thu May 08 13:44:57 2008 +0100
    11.2 +++ b/include/xen/interface/libelf.h	Mon May 12 10:03:08 2008 +0100
    11.3 @@ -23,10 +23,8 @@
    11.4  #ifndef __XC_LIBELF__
    11.5  #define __XC_LIBELF__ 1
    11.6  
    11.7 -#if defined(__i386__) || defined(__x86_64) || defined(__ia64__)
    11.8 +#if defined(__i386__) || defined(__x86_64__) || defined(__ia64__)
    11.9  #define XEN_ELF_LITTLE_ENDIAN
   11.10 -#elif defined(__powerpc__)
   11.11 -#define XEN_ELF_BIG_ENDIAN
   11.12  #else
   11.13  #error define architectural endianness
   11.14  #endif
    12.1 --- a/include/xen/interface/physdev.h	Thu May 08 13:44:57 2008 +0100
    12.2 +++ b/include/xen/interface/physdev.h	Mon May 12 10:03:08 2008 +0100
    12.3 @@ -121,7 +121,7 @@ struct physdev_irq {
    12.4  };
    12.5  typedef struct physdev_irq physdev_irq_t;
    12.6  DEFINE_XEN_GUEST_HANDLE(physdev_irq_t);
    12.7 -
    12.8 + 
    12.9  #define MAP_PIRQ_TYPE_MSI               0x0
   12.10  #define MAP_PIRQ_TYPE_GSI               0x1
   12.11  #define MAP_PIRQ_TYPE_UNKNOWN           0x2
   12.12 @@ -135,10 +135,10 @@ struct physdev_map_pirq {
   12.13      int index;
   12.14      /* IN or OUT */
   12.15      int pirq;
   12.16 -    /* msi info passed to VMM */
   12.17 +    /* IN */
   12.18      struct {
   12.19          int bus, devfn, entry_nr;
   12.20 -		int msi;  /* 0 - MSIX  1 - MSI */
   12.21 +		int msi;  /* 0 - MSIX    1 - MSI */
   12.22      } msi_info;
   12.23  };
   12.24  typedef struct physdev_map_pirq physdev_map_pirq_t;
    13.1 --- a/include/xen/interface/sysctl.h	Thu May 08 13:44:57 2008 +0100
    13.2 +++ b/include/xen/interface/sysctl.h	Mon May 12 10:03:08 2008 +0100
    13.3 @@ -84,8 +84,13 @@ DEFINE_XEN_GUEST_HANDLE(xen_sysctl_tbuf_
    13.4   * Get physical information about the host machine
    13.5   */
    13.6  #define XEN_SYSCTL_physinfo          3
    13.7 + /* (x86) The platform supports HVM guests. */
    13.8 +#define _XEN_SYSCTL_PHYSCAP_hvm          0
    13.9 +#define XEN_SYSCTL_PHYSCAP_hvm           (1u<<_XEN_SYSCTL_PHYSCAP_hvm)
   13.10 + /* (x86) The platform supports HVM-guest direct access to I/O devices. */
   13.11 +#define _XEN_SYSCTL_PHYSCAP_hvm_directio 1
   13.12 +#define XEN_SYSCTL_PHYSCAP_hvm_directio  (1u<<_XEN_SYSCTL_PHYSCAP_hvm_directio)
   13.13  struct xen_sysctl_physinfo {
   13.14 -    /* IN variables. */
   13.15      uint32_t threads_per_core;
   13.16      uint32_t cores_per_socket;
   13.17      uint32_t nr_cpus;
   13.18 @@ -96,7 +101,6 @@ struct xen_sysctl_physinfo {
   13.19      uint64_aligned_t scrub_pages;
   13.20      uint32_t hw_cap[8];
   13.21  
   13.22 -    /* IN/OUT variables. */
   13.23      /*
   13.24       * IN: maximum addressable entry in the caller-provided cpu_to_node array.
   13.25       * OUT: largest cpu identifier in the system.
   13.26 @@ -112,6 +116,9 @@ struct xen_sysctl_physinfo {
   13.27       * elements of the array will not be written by the sysctl.
   13.28       */
   13.29      XEN_GUEST_HANDLE_64(uint32) cpu_to_node;
   13.30 +
   13.31 +    /* XEN_SYSCTL_PHYSCAP_??? */
   13.32 +    uint32_t capabilities;
   13.33  };
   13.34  typedef struct xen_sysctl_physinfo xen_sysctl_physinfo_t;
   13.35  DEFINE_XEN_GUEST_HANDLE(xen_sysctl_physinfo_t);
    14.1 --- a/include/xen/interface/xen.h	Thu May 08 13:44:57 2008 +0100
    14.2 +++ b/include/xen/interface/xen.h	Mon May 12 10:03:08 2008 +0100
    14.3 @@ -33,8 +33,6 @@
    14.4  #include "arch-x86/xen.h"
    14.5  #elif defined(__ia64__)
    14.6  #include "arch-ia64.h"
    14.7 -#elif defined(__powerpc__)
    14.8 -#include "arch-powerpc.h"
    14.9  #else
   14.10  #error "Unsupported architecture"
   14.11  #endif
    15.1 --- a/include/xen/interface/xsm/acm.h	Thu May 08 13:44:57 2008 +0100
    15.2 +++ b/include/xen/interface/xsm/acm.h	Mon May 12 10:03:08 2008 +0100
    15.3 @@ -91,7 +91,7 @@
    15.4   * whenever the interpretation of the related
    15.5   * policy's data structure changes
    15.6   */
    15.7 -#define ACM_POLICY_VERSION 3
    15.8 +#define ACM_POLICY_VERSION 4
    15.9  #define ACM_CHWALL_VERSION 1
   15.10  #define ACM_STE_VERSION  1
   15.11  
   15.12 @@ -102,6 +102,7 @@ typedef uint32_t ssidref_t;
   15.13  #define ACMHOOK_none          0
   15.14  #define ACMHOOK_sharing       1
   15.15  #define ACMHOOK_authorization 2
   15.16 +#define ACMHOOK_conflictset   3
   15.17  
   15.18  /* -------security policy relevant type definitions-------- */
   15.19  
   15.20 @@ -130,6 +131,10 @@ typedef uint16_t domaintype_t;
   15.21  /* high-16 = version, low-16 = check magic */
   15.22  #define ACM_MAGIC  0x0001debc
   15.23  
   15.24 +/* size of the SHA1 hash identifying the XML policy from which the
   15.25 +   binary policy was created */
   15.26 +#define ACM_SHA1_HASH_SIZE    20
   15.27 +
   15.28  /* each offset in bytes from start of the struct they
   15.29   * are part of */
   15.30  
   15.31 @@ -159,6 +164,7 @@ struct acm_policy_buffer {
   15.32      uint32_t secondary_policy_code;
   15.33      uint32_t secondary_buffer_offset;
   15.34      struct acm_policy_version xml_pol_version; /* add in V3 */
   15.35 +    uint8_t xml_policy_hash[ACM_SHA1_HASH_SIZE]; /* added in V4 */
   15.36  };
   15.37  
   15.38