[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[XenPPC] [xenppc-unstable] [POWERPC][XEN] Merge with xen-unstable.hg.



# HG changeset patch
# User Hollis Blanchard <hollisb@xxxxxxxxxx>
# Date 1172880338 21600
# Node ID 736f2d6d7b091b2cdfb36421644ac11008ae0a6b
# Parent  9fe6fe88a6a1a2886c24f2af764d663c05afda55
# Parent  fdb3c96eba0f8d898dd5e734598ddc671114f1a1
[POWERPC][XEN] Merge with xen-unstable.hg.
Signed-off-by: Hollis Blanchard <hollisb@xxxxxxxxxx>
---
 linux-2.6-xen-sparse/arch/ia64/hp/sim/Makefile                       |   18 
 linux-2.6-xen-sparse/drivers/char/tpm/tpm.c                          | 1222 --
 linux-2.6-xen-sparse/include/asm-i386/a.out.h                        |   26 
 linux-2.6-xen-sparse/include/linux/pfn.h                             |    9 
 tools/libxc/xc_linux_build.c                                         | 1320 --
 tools/libxc/xc_load_bin.c                                            |  306 
 tools/libxc/xc_load_elf.c                                            |  684 -
 xen/common/elf.c                                                     |  520 -
 xen/include/asm-ia64/kexec.h                                         |   25 
 xen/include/asm-ia64/linux/asm/percpu.h                              |   72 
 xen/include/asm-powerpc/kexec.h                                      |   25 
 xen/include/asm-x86/kexec.h                                          |   20 
 xen/include/asm-x86/x86_32/kexec.h                                   |   39 
 xen/include/asm-x86/x86_64/kexec.h                                   |   38 
 .hgignore                                                            |    2 
 README                                                               |    2 
 buildconfigs/linux-defconfig_xen0_ia64                               |  219 
 buildconfigs/linux-defconfig_xenU_ia64                               |  192 
 buildconfigs/linux-defconfig_xen_ia64                                |  210 
 docs/misc/dump-core-format.txt                                       |  225 
 docs/xen-api/xenapi-datamodel.tex                                    | 4514 
++++++----
 extras/mini-os/Makefile                                              |    8 
 extras/mini-os/arch/ia64/Makefile                                    |   56 
 extras/mini-os/arch/ia64/__divdi3.S                                  |  141 
 extras/mini-os/arch/ia64/__udivdi3.S                                 |  142 
 extras/mini-os/arch/ia64/__umoddi3.S                                 |  154 
 extras/mini-os/arch/ia64/arch.mk                                     |    5 
 extras/mini-os/arch/ia64/common.c                                    |  236 
 extras/mini-os/arch/ia64/debug.c                                     |  179 
 extras/mini-os/arch/ia64/efi.c                                       |  237 
 extras/mini-os/arch/ia64/fw.S                                        |  519 +
 extras/mini-os/arch/ia64/gen_off.c                                   |  177 
 extras/mini-os/arch/ia64/ia64.S                                      |  224 
 extras/mini-os/arch/ia64/ivt.S                                       |  865 +
 extras/mini-os/arch/ia64/minios-ia64.lds                             |   54 
 extras/mini-os/arch/ia64/mm.c                                        |  136 
 extras/mini-os/arch/ia64/sal.c                                       |  103 
 extras/mini-os/arch/ia64/sched.c                                     |   74 
 extras/mini-os/arch/ia64/time.c                                      |  280 
 extras/mini-os/arch/ia64/xencomm.c                                   |  256 
 extras/mini-os/arch/x86/Makefile                                     |    6 
 extras/mini-os/arch/x86/arch.mk                                      |   15 
 extras/mini-os/arch/x86/mm.c                                         |   43 
 extras/mini-os/gnttab.c                                              |    5 
 extras/mini-os/include/ia64/arch_mm.h                                |   36 
 extras/mini-os/include/ia64/arch_sched.h                             |   91 
 extras/mini-os/include/ia64/arch_spinlock.h                          |   61 
 extras/mini-os/include/ia64/asm.h                                    |   18 
 extras/mini-os/include/ia64/atomic.h                                 |  508 +
 extras/mini-os/include/ia64/efi.h                                    |  396 
 extras/mini-os/include/ia64/endian.h                                 |   75 
 extras/mini-os/include/ia64/hypercall-ia64.h                         |  226 
 extras/mini-os/include/ia64/ia64_cpu.h                               |  776 +
 extras/mini-os/include/ia64/ia64_fpu.h                               |   99 
 extras/mini-os/include/ia64/os.h                                     |  319 
 extras/mini-os/include/ia64/page.h                                   |  106 
 extras/mini-os/include/ia64/pal.h                                    |   87 
 extras/mini-os/include/ia64/privop.h                                 |   97 
 extras/mini-os/include/ia64/sal.h                                    |  188 
 extras/mini-os/include/ia64/traps.h                                  |   48 
 extras/mini-os/include/mm.h                                          |    1 
 extras/mini-os/minios.mk                                             |   17 
 extras/mini-os/mm.c                                                  |    2 
 extras/mini-os/netfront.c                                            |    4 
 extras/mini-os/xenbus/xenbus.c                                       |    2 
 linux-2.6-xen-sparse/arch/i386/kernel/Makefile                       |    1 
 linux-2.6-xen-sparse/arch/i386/kernel/entry-xen.S                    |   22 
 linux-2.6-xen-sparse/arch/i386/kernel/fixup.c                        |    1 
 linux-2.6-xen-sparse/arch/i386/kernel/head-xen.S                     |    5 
 linux-2.6-xen-sparse/arch/i386/kernel/process-xen.c                  |   10 
 linux-2.6-xen-sparse/arch/i386/kernel/setup-xen.c                    |   38 
 linux-2.6-xen-sparse/arch/i386/kernel/time-xen.c                     |   30 
 linux-2.6-xen-sparse/arch/i386/mach-xen/setup.c                      |    2 
 linux-2.6-xen-sparse/arch/i386/mm/fault-xen.c                        |    2 
 linux-2.6-xen-sparse/arch/i386/mm/hypervisor.c                       |    1 
 linux-2.6-xen-sparse/arch/i386/mm/pgtable-xen.c                      |    3 
 linux-2.6-xen-sparse/arch/ia64/kernel/irq_ia64.c                     |   73 
 linux-2.6-xen-sparse/arch/ia64/kernel/setup.c                        |   60 
 linux-2.6-xen-sparse/arch/ia64/oprofile/oprofile_perfmon.h           |    2 
 linux-2.6-xen-sparse/arch/ia64/pci/pci.c                             |  836 +
 linux-2.6-xen-sparse/arch/ia64/xen/hypercall.S                       |    1 
 linux-2.6-xen-sparse/arch/ia64/xen/hypervisor.c                      |    6 
 linux-2.6-xen-sparse/arch/ia64/xen/mem.c                             |    1 
 linux-2.6-xen-sparse/arch/ia64/xen/util.c                            |   13 
 linux-2.6-xen-sparse/arch/ia64/xen/xcom_mini.c                       |    3 
 linux-2.6-xen-sparse/arch/ia64/xen/xcom_privcmd.c                    |    1 
 linux-2.6-xen-sparse/arch/ia64/xen/xenentry.S                        |   18 
 linux-2.6-xen-sparse/arch/ia64/xen/xenivt.S                          |    2 
 linux-2.6-xen-sparse/arch/ia64/xen/xenminstate.h                     |    2 
 linux-2.6-xen-sparse/arch/ia64/xen/xensetup.S                        |    1 
 linux-2.6-xen-sparse/arch/x86_64/kernel/Makefile                     |    1 
 linux-2.6-xen-sparse/arch/x86_64/kernel/e820-xen.c                   |   11 
 linux-2.6-xen-sparse/arch/x86_64/kernel/early_printk-xen.c           |   12 
 linux-2.6-xen-sparse/arch/x86_64/kernel/entry-xen.S                  |    4 
 linux-2.6-xen-sparse/arch/x86_64/kernel/genapic_xen.c                |    1 
 linux-2.6-xen-sparse/arch/x86_64/kernel/head-xen.S                   |    8 
 linux-2.6-xen-sparse/arch/x86_64/kernel/mpparse-xen.c                |    2 
 linux-2.6-xen-sparse/arch/x86_64/kernel/process-xen.c                |   10 
 linux-2.6-xen-sparse/arch/x86_64/kernel/setup-xen.c                  |   15 
 linux-2.6-xen-sparse/arch/x86_64/kernel/x8664_ksyms-xen.c            |    1 
 linux-2.6-xen-sparse/arch/x86_64/mm/fault-xen.c                      |    3 
 linux-2.6-xen-sparse/arch/x86_64/mm/init-xen.c                       |   26 
 linux-2.6-xen-sparse/drivers/char/tpm/Kconfig                        |    2 
 linux-2.6-xen-sparse/drivers/char/tpm/tpm.h                          |   24 
 linux-2.6-xen-sparse/drivers/char/tpm/tpm_vtpm.c                     |    3 
 linux-2.6-xen-sparse/drivers/char/tpm/tpm_xen.c                      |    2 
 linux-2.6-xen-sparse/drivers/xen/balloon/balloon.c                   |    7 
 linux-2.6-xen-sparse/drivers/xen/balloon/sysfs.c                     |    1 
 linux-2.6-xen-sparse/drivers/xen/blkback/blkback.c                   |    5 
 linux-2.6-xen-sparse/drivers/xen/blkback/common.h                    |    3 
 linux-2.6-xen-sparse/drivers/xen/blkback/interface.c                 |   14 
 linux-2.6-xen-sparse/drivers/xen/blkback/xenbus.c                    |   17 
 linux-2.6-xen-sparse/drivers/xen/blkfront/block.h                    |    1 
 linux-2.6-xen-sparse/drivers/xen/blktap/blktap.c                     |   11 
 linux-2.6-xen-sparse/drivers/xen/blktap/common.h                     |    3 
 linux-2.6-xen-sparse/drivers/xen/blktap/interface.c                  |   14 
 linux-2.6-xen-sparse/drivers/xen/blktap/xenbus.c                     |  108 
 linux-2.6-xen-sparse/drivers/xen/char/mem.c                          |    1 
 linux-2.6-xen-sparse/drivers/xen/console/console.c                   |    1 
 linux-2.6-xen-sparse/drivers/xen/core/cpu_hotplug.c                  |   38 
 linux-2.6-xen-sparse/drivers/xen/core/evtchn.c                       |  128 
 linux-2.6-xen-sparse/drivers/xen/core/gnttab.c                       |  259 
 linux-2.6-xen-sparse/drivers/xen/core/hypervisor_sysfs.c             |    1 
 linux-2.6-xen-sparse/drivers/xen/core/machine_reboot.c               |  122 
 linux-2.6-xen-sparse/drivers/xen/core/reboot.c                       |   21 
 linux-2.6-xen-sparse/drivers/xen/core/smpboot.c                      |   15 
 linux-2.6-xen-sparse/drivers/xen/core/xen_proc.c                     |    1 
 linux-2.6-xen-sparse/drivers/xen/core/xen_sysfs.c                    |    1 
 linux-2.6-xen-sparse/drivers/xen/evtchn/evtchn.c                     |    1 
 linux-2.6-xen-sparse/drivers/xen/fbfront/xenkbd.c                    |  103 
 linux-2.6-xen-sparse/drivers/xen/netback/common.h                    |    1 
 linux-2.6-xen-sparse/drivers/xen/netback/interface.c                 |   26 
 linux-2.6-xen-sparse/drivers/xen/netback/loopback.c                  |    1 
 linux-2.6-xen-sparse/drivers/xen/netback/xenbus.c                    |    2 
 linux-2.6-xen-sparse/drivers/xen/netfront/netfront.c                 |    7 
 linux-2.6-xen-sparse/drivers/xen/privcmd/privcmd.c                   |    1 
 linux-2.6-xen-sparse/drivers/xen/tpmback/common.h                    |    5 
 linux-2.6-xen-sparse/drivers/xen/tpmback/interface.c                 |   14 
 linux-2.6-xen-sparse/drivers/xen/util.c                              |   32 
 linux-2.6-xen-sparse/drivers/xen/xenbus/xenbus_backend_client.c      |   16 
 linux-2.6-xen-sparse/drivers/xen/xenbus/xenbus_comms.c               |   27 
 linux-2.6-xen-sparse/drivers/xen/xenbus/xenbus_comms.h               |    2 
 linux-2.6-xen-sparse/drivers/xen/xenbus/xenbus_dev.c                 |    1 
 linux-2.6-xen-sparse/drivers/xen/xenbus/xenbus_xs.c                  |  103 
 linux-2.6-xen-sparse/include/asm-i386/mach-xen/asm/dma-mapping.h     |    1 
 linux-2.6-xen-sparse/include/asm-i386/mach-xen/asm/hypervisor.h      |    8 
 linux-2.6-xen-sparse/include/asm-i386/mach-xen/asm/irqflags.h        |   17 
 linux-2.6-xen-sparse/include/asm-i386/mach-xen/asm/maddr.h           |   25 
 linux-2.6-xen-sparse/include/asm-i386/mach-xen/asm/page.h            |   57 
 linux-2.6-xen-sparse/include/asm-i386/mach-xen/asm/pgtable-2level.h  |    7 
 linux-2.6-xen-sparse/include/asm-i386/mach-xen/asm/pgtable-3level.h  |   27 
 linux-2.6-xen-sparse/include/asm-i386/mach-xen/asm/pgtable.h         |   38 
 linux-2.6-xen-sparse/include/asm-i386/mach-xen/asm/swiotlb.h         |    2 
 linux-2.6-xen-sparse/include/asm-i386/mach-xen/asm/synch_bitops.h    |    2 
 linux-2.6-xen-sparse/include/asm-i386/mach-xen/asm/system.h          |    3 
 linux-2.6-xen-sparse/include/asm-ia64/dma-mapping.h                  |    2 
 linux-2.6-xen-sparse/include/asm-ia64/hw_irq.h                       |    5 
 linux-2.6-xen-sparse/include/asm-ia64/hypervisor.h                   |    1 
 linux-2.6-xen-sparse/include/asm-ia64/maddr.h                        |    3 
 linux-2.6-xen-sparse/include/asm-ia64/page.h                         |   45 
 linux-2.6-xen-sparse/include/asm-ia64/swiotlb.h                      |    4 
 linux-2.6-xen-sparse/include/asm-ia64/synch_bitops.h                 |    2 
 linux-2.6-xen-sparse/include/asm-x86_64/mach-xen/asm/irq.h           |    1 
 linux-2.6-xen-sparse/include/asm-x86_64/mach-xen/asm/irqflags.h      |   17 
 linux-2.6-xen-sparse/include/asm-x86_64/mach-xen/asm/maddr.h         |   15 
 linux-2.6-xen-sparse/include/asm-x86_64/mach-xen/asm/page.h          |   28 
 linux-2.6-xen-sparse/include/asm-x86_64/mach-xen/asm/pgtable.h       |   62 
 linux-2.6-xen-sparse/include/xen/cpu_hotplug.h                       |   14 
 linux-2.6-xen-sparse/include/xen/driver_util.h                       |    5 
 linux-2.6-xen-sparse/include/xen/evtchn.h                            |    1 
 linux-2.6-xen-sparse/include/xen/gnttab.h                            |   14 
 linux-2.6-xen-sparse/include/xen/pcifront.h                          |    1 
 linux-2.6-xen-sparse/include/xen/xen_proc.h                          |    1 
 linux-2.6-xen-sparse/net/core/skbuff.c                               |   46 
 patches/linux-2.6.18/series                                          |    1 
 patches/linux-2.6.18/softlockup-no-idle-hz.patch                     |   32 
 patches/linux-2.6.18/x86-elfnote-as-preprocessor-macro.patch         |    5 
 tools/blktap/drivers/Makefile                                        |   16 
 tools/blktap/drivers/blktapctrl.c                                    |    2 
 tools/blktap/drivers/block-aio.c                                     |  147 
 tools/blktap/drivers/block-qcow.c                                    |  608 -
 tools/blktap/drivers/block-ram.c                                     |  133 
 tools/blktap/drivers/block-sync.c                                    |  105 
 tools/blktap/drivers/block-vmdk.c                                    |  110 
 tools/blktap/drivers/img2qcow.c                                      |   28 
 tools/blktap/drivers/qcow2raw.c                                      |   75 
 tools/blktap/drivers/tapdisk.c                                       |  441 
 tools/blktap/drivers/tapdisk.h                                       |   87 
 tools/blktap/lib/blktaplib.h                                         |   14 
 tools/blktap/lib/xenbus.c                                            |    7 
 tools/blktap/lib/xs_api.c                                            |    8 
 tools/check/check_crypto_lib                                         |    3 
 tools/check/check_zlib_lib                                           |    4 
 tools/console/daemon/io.c                                            |    8 
 tools/examples/block                                                 |    8 
 tools/examples/init.d/xendomains                                     |   31 
 tools/examples/vif-bridge                                            |    7 
 tools/examples/xen-hotplug-common.sh                                 |    5 
 tools/firmware/hvmloader/acpi/build.c                                |   81 
 tools/firmware/hvmloader/acpi/dsdt.asl                               |   26 
 tools/firmware/hvmloader/acpi/dsdt.c                                 |  859 -
 tools/firmware/hvmloader/config.h                                    |    2 
 tools/firmware/rombios/32bit/Makefile                                |    2 
 tools/firmware/rombios/32bit/tcgbios/Makefile                        |    2 
 tools/firmware/rombios/32bit/tcgbios/tcgbios.c                       |   14 
 tools/firmware/rombios/32bit/tcgbios/tpm_drivers.c                   |   52 
 tools/firmware/rombios/32bit/util.h                                  |   15 
 tools/firmware/rombios/rombios.c                                     |  199 
 tools/ioemu/hw/cirrus_vga.c                                          |    4 
 tools/ioemu/hw/ide.c                                                 |  129 
 tools/ioemu/hw/rtl8139.c                                             |    6 
 tools/ioemu/hw/tpm_tis.c                                             |   16 
 tools/ioemu/vl.c                                                     |   91 
 tools/ioemu/xenstore.c                                               |   51 
 tools/libfsimage/Makefile                                            |    2 
 tools/libfsimage/common/fsimage.c                                    |    4 
 tools/libfsimage/common/fsimage.h                                    |    2 
 tools/libfsimage/common/fsimage_grub.c                               |   82 
 tools/libfsimage/common/fsimage_grub.h                               |    7 
 tools/libfsimage/common/fsimage_plugin.c                             |    4 
 tools/libfsimage/common/fsimage_plugin.h                             |    2 
 tools/libfsimage/common/fsimage_priv.h                               |    2 
 tools/libfsimage/common/mapfile-GNU                                  |    1 
 tools/libfsimage/common/mapfile-SunOS                                |    1 
 tools/libfsimage/ext2fs-lib/ext2fs-lib.c                             |    2 
 tools/libfsimage/ext2fs/fsys_ext2fs.c                                |   91 
 tools/libfsimage/fat/Makefile                                        |   13 
 tools/libfsimage/fat/fat.h                                           |  100 
 tools/libfsimage/fat/fsys_fat.c                                      |  485 +
 tools/libfsimage/iso9660/Makefile                                    |   15 
 tools/libfsimage/iso9660/fsys_iso9660.c                              |  463 +
 tools/libfsimage/iso9660/iso9660.h                                   |  219 
 tools/libfsimage/reiserfs/fsys_reiserfs.c                            |   79 
 tools/libfsimage/ufs/fsys_ufs.c                                      |    2 
 tools/libxc/Makefile                                                 |    9 
 tools/libxc/ia64/xc_ia64_hvm_build.c                                 |   14 
 tools/libxc/xc_core.c                                                |  774 +
 tools/libxc/xc_core.h                                                |  165 
 tools/libxc/xc_core_ia64.c                                           |  315 
 tools/libxc/xc_core_ia64.h                                           |   60 
 tools/libxc/xc_core_x86.c                                            |  136 
 tools/libxc/xc_core_x86.h                                            |   64 
 tools/libxc/xc_dom.h                                                 |   46 
 tools/libxc/xc_dom_binloader.c                                       |   73 
 tools/libxc/xc_dom_boot.c                                            |  458 -
 tools/libxc/xc_dom_compat_linux.c                                    |  150 
 tools/libxc/xc_dom_core.c                                            |  647 -
 tools/libxc/xc_dom_elfloader.c                                       |  349 
 tools/libxc/xc_dom_ia64.c                                            |   50 
 tools/libxc/xc_dom_x86.c                                             |  429 
 tools/libxc/xc_domain.c                                              |   27 
 tools/libxc/xc_efi.h                                                 |   68 
 tools/libxc/xc_hvm_build.c                                           |   40 
 tools/libxc/xc_hvm_restore.c                                         |   80 
 tools/libxc/xc_hvm_save.c                                            |  137 
 tools/libxc/xc_linux.c                                               |   35 
 tools/libxc/xc_linux_restore.c                                       |  203 
 tools/libxc/xc_linux_save.c                                          |  152 
 tools/libxc/xc_pagetab.c                                             |    4 
 tools/libxc/xc_private.c                                             |   22 
 tools/libxc/xc_private.h                                             |   10 
 tools/libxc/xc_ptrace_core.c                                         |  599 +
 tools/libxc/xc_resume.c                                              |    8 
 tools/libxc/xc_solaris.c                                             |    6 
 tools/libxc/xenctrl.h                                                |   23 
 tools/libxc/xenguest.h                                               |   19 
 tools/libxc/xg_private.c                                             |  117 
 tools/libxc/xg_private.h                                             |   97 
 tools/libxc/xg_save_restore.h                                        |   21 
 tools/libxen/include/xen_console.h                                   |   56 
 tools/libxen/include/xen_host.h                                      |   65 
 tools/libxen/include/xen_host_cpu.h                                  |   43 
 tools/libxen/include/xen_host_metrics.h                              |   18 
 tools/libxen/include/xen_internal.h                                  |    5 
 tools/libxen/include/xen_network.h                                   |   36 
 tools/libxen/include/xen_pbd.h                                       |    9 
 tools/libxen/include/xen_pif.h                                       |    9 
 tools/libxen/include/xen_pif_metrics.h                               |   18 
 tools/libxen/include/xen_string_set.h                                |   47 
 tools/libxen/include/xen_vbd.h                                       |  129 
 tools/libxen/include/xen_vbd_metrics.h                               |  190 
 tools/libxen/include/xen_vbd_metrics_decl.h                          |   30 
 tools/libxen/include/xen_vbd_type.h                                  |   77 
 tools/libxen/include/xen_vbd_type_internal.h                         |   37 
 tools/libxen/include/xen_vdi.h                                       |    7 
 tools/libxen/include/xen_vif.h                                       |  109 
 tools/libxen/include/xen_vif_metrics.h                               |  190 
 tools/libxen/include/xen_vif_metrics_decl.h                          |   30 
 tools/libxen/include/xen_vm.h                                        |   44 
 tools/libxen/include/xen_vm_guest_metrics.h                          |  226 
 tools/libxen/include/xen_vm_guest_metrics_decl.h                     |   30 
 tools/libxen/include/xen_vm_metrics.h                                |   18 
 tools/libxen/src/xen_common.c                                        |    4 
 tools/libxen/src/xen_console.c                                       |  118 
 tools/libxen/src/xen_host.c                                          |  155 
 tools/libxen/src/xen_host_cpu.c                                      |   87 
 tools/libxen/src/xen_host_metrics.c                                  |   36 
 tools/libxen/src/xen_network.c                                       |   78 
 tools/libxen/src/xen_pbd.c                                           |   14 
 tools/libxen/src/xen_pif.c                                           |   14 
 tools/libxen/src/xen_pif_metrics.c                                   |   36 
 tools/libxen/src/xen_string_set.c                                    |   47 
 tools/libxen/src/xen_string_set.h                                    |   47 
 tools/libxen/src/xen_vbd.c                                           |  300 
 tools/libxen/src/xen_vbd_metrics.c                                   |  162 
 tools/libxen/src/xen_vbd_type.c                                      |   81 
 tools/libxen/src/xen_vdi.c                                           |   12 
 tools/libxen/src/xen_vif.c                                           |  253 
 tools/libxen/src/xen_vif_metrics.c                                   |  162 
 tools/libxen/src/xen_vm.c                                            |  109 
 tools/libxen/src/xen_vm_guest_metrics.c                              |  251 
 tools/libxen/src/xen_vm_metrics.c                                    |   36 
 tools/libxen/test/test_bindings.c                                    |  103 
 tools/misc/Makefile                                                  |    6 
 tools/misc/sxp-pretty                                                |   45 
 tools/misc/xen-detect.c                                              |  108 
 tools/pygrub/src/fsimage/fsimage.c                                   |   14 
 tools/python/scripts/test_vm_create.py                               |    2 
 tools/python/scripts/xapi.py                                         |    4 
 tools/python/scripts/xapi.vdicfg.py                                  |    2 
 tools/python/xen/lowlevel/xc/xc.c                                    |  103 
 tools/python/xen/util/xmlrpclib2.py                                  |    7 
 tools/python/xen/xend/XendAPI.py                                     |  373 
 tools/python/xen/xend/XendAPIVersion.py                              |   22 
 tools/python/xen/xend/XendCheckpoint.py                              |   46 
 tools/python/xen/xend/XendConfig.py                                  |   75 
 tools/python/xen/xend/XendConstants.py                               |   10 
 tools/python/xen/xend/XendDomain.py                                  |   72 
 tools/python/xen/xend/XendDomainInfo.py                              |  123 
 tools/python/xen/xend/XendNetwork.py                                 |   46 
 tools/python/xen/xend/XendNode.py                                    |   75 
 tools/python/xen/xend/XendQCoWStorageRepo.py                         |    2 
 tools/python/xen/xend/image.py                                       |    5 
 tools/python/xen/xend/server/BlktapController.py                     |   62 
 tools/python/xen/xend/server/DevController.py                        |   52 
 tools/python/xen/xend/server/SrvDomainDir.py                         |    2 
 tools/python/xen/xend/server/XMLRPCServer.py                         |    2 
 tools/python/xen/xm/main.py                                          |   76 
 tools/python/xen/xm/messages/en/xen-xm.po                            |   42 
 tools/security/xensec_ezpolicy                                       |    6 
 tools/tests/test_x86_emulator.c                                      |   48 
 tools/xcutils/readnotes.c                                            |  168 
 tools/xcutils/xc_restore.c                                           |   15 
 tools/xenfb/vncfb.c                                                  |   10 
 tools/xenstat/libxenstat/Makefile                                    |   31 
 tools/xenstat/libxenstat/src/xenstat.c                               |  289 
 tools/xenstat/libxenstat/src/xenstat.h                               |    5 
 tools/xenstat/libxenstat/src/xenstat_linux.c                         |  265 
 tools/xenstat/libxenstat/src/xenstat_priv.h                          |  101 
 tools/xenstat/libxenstat/src/xenstat_solaris.c                       |  431 
 tools/xenstat/xentop/xentop.c                                        |   22 
 tools/xenstore/xenstored_domain.c                                    |   51 
 tools/xenstore/xenstored_transaction.c                               |   16 
 tools/xenstore/xenstored_transaction.h                               |    3 
 tools/xenstore/xenstored_watch.c                                     |   11 
 tools/xenstore/xenstored_watch.h                                     |    2 
 tools/xentrace/formats                                               |   76 
 tools/xentrace/xentrace.8                                            |   54 
 tools/xentrace/xentrace.c                                            |   29 
 tools/xentrace/xentrace_format                                       |   10 
 tools/xm-test/tests/security-acm/06_security-acm_dom_block_attach.py |   18 
 unmodified_drivers/linux-2.6/overrides.mk                            |    5 
 unmodified_drivers/linux-2.6/platform-pci/evtchn.c                   |    1 
 unmodified_drivers/linux-2.6/platform-pci/platform-compat.c          |    7 
 unmodified_drivers/linux-2.6/platform-pci/platform-pci.c             |   35 
 unmodified_drivers/linux-2.6/platform-pci/xen_support.c              |   17 
 xen/acm/acm_chinesewall_hooks.c                                      |   15 
 xen/acm/acm_core.c                                                   |    8 
 xen/acm/acm_simple_type_enforcement_hooks.c                          |  172 
 xen/arch/ia64/Rules.mk                                               |    6 
 xen/arch/ia64/asm-offsets.c                                          |    2 
 xen/arch/ia64/asm-xsi-offsets.c                                      |    2 
 xen/arch/ia64/linux-xen/head.S                                       |   16 
 xen/arch/ia64/linux-xen/mca.c                                        |   82 
 xen/arch/ia64/linux-xen/perfmon.c                                    |   12 
 xen/arch/ia64/linux-xen/setup.c                                      |   64 
 xen/arch/ia64/vmx/mmio.c                                             |   53 
 xen/arch/ia64/vmx/optvfault.S                                        |   75 
 xen/arch/ia64/vmx/vlsapic.c                                          |   33 
 xen/arch/ia64/vmx/vmmu.c                                             |   56 
 xen/arch/ia64/vmx/vmx_entry.S                                        |  332 
 xen/arch/ia64/vmx/vmx_hypercall.c                                    |    3 
 xen/arch/ia64/vmx/vmx_init.c                                         |   14 
 xen/arch/ia64/vmx/vmx_interrupt.c                                    |   15 
 xen/arch/ia64/vmx/vmx_ivt.S                                          |  295 
 xen/arch/ia64/vmx/vmx_minstate.h                                     |    1 
 xen/arch/ia64/vmx/vmx_phy_mode.c                                     |    2 
 xen/arch/ia64/vmx/vmx_process.c                                      |  110 
 xen/arch/ia64/vmx/vmx_support.c                                      |    9 
 xen/arch/ia64/vmx/vmx_vcpu.c                                         |   44 
 xen/arch/ia64/vmx/vmx_virt.c                                         |   93 
 xen/arch/ia64/vmx/vtlb.c                                             |   12 
 xen/arch/ia64/xen/dom0_ops.c                                         |   40 
 xen/arch/ia64/xen/dom_fw.c                                           |   23 
 xen/arch/ia64/xen/domain.c                                           |  220 
 xen/arch/ia64/xen/faults.c                                           |   28 
 xen/arch/ia64/xen/flushtlb.c                                         |   42 
 xen/arch/ia64/xen/fw_emul.c                                          |   77 
 xen/arch/ia64/xen/hypercall.c                                        |    4 
 xen/arch/ia64/xen/hyperprivop.S                                      |   39 
 xen/arch/ia64/xen/mm.c                                               |   48 
 xen/arch/ia64/xen/pcdp.c                                             |    2 
 xen/arch/ia64/xen/regionreg.c                                        |    6 
 xen/arch/ia64/xen/tlb_track.c                                        |    6 
 xen/arch/ia64/xen/vcpu.c                                             |   73 
 xen/arch/ia64/xen/vhpt.c                                             |    8 
 xen/arch/ia64/xen/xensetup.c                                         |   24 
 xen/arch/powerpc/audit.c                                             |    2 
 xen/arch/powerpc/machine_kexec.c                                     |    5 
 xen/arch/powerpc/mm.c                                                |   30 
 xen/arch/x86/crash.c                                                 |    3 
 xen/arch/x86/domain.c                                                |  104 
 xen/arch/x86/domain_build.c                                          |   33 
 xen/arch/x86/domctl.c                                                |  120 
 xen/arch/x86/extable.c                                               |   13 
 xen/arch/x86/hvm/Makefile                                            |    1 
 xen/arch/x86/hvm/hpet.c                                              |    2 
 xen/arch/x86/hvm/hvm.c                                               |   96 
 xen/arch/x86/hvm/i8254.c                                             |    2 
 xen/arch/x86/hvm/intercept.c                                         |  176 
 xen/arch/x86/hvm/io.c                                                |   59 
 xen/arch/x86/hvm/irq.c                                               |    9 
 xen/arch/x86/hvm/platform.c                                          |  166 
 xen/arch/x86/hvm/pmtimer.c                                           |   75 
 xen/arch/x86/hvm/rtc.c                                               |    2 
 xen/arch/x86/hvm/save.c                                              |  229 
 xen/arch/x86/hvm/svm/intr.c                                          |    9 
 xen/arch/x86/hvm/svm/svm.c                                           |  262 
 xen/arch/x86/hvm/svm/vmcb.c                                          |   12 
 xen/arch/x86/hvm/vioapic.c                                           |    2 
 xen/arch/x86/hvm/vlapic.c                                            |   26 
 xen/arch/x86/hvm/vmx/intr.c                                          |    3 
 xen/arch/x86/hvm/vmx/vmcs.c                                          |   23 
 xen/arch/x86/hvm/vmx/vmx.c                                           |  253 
 xen/arch/x86/hvm/vpic.c                                              |    2 
 xen/arch/x86/machine_kexec.c                                         |   53 
 xen/arch/x86/mm.c                                                    |  344 
 xen/arch/x86/mm/Makefile                                             |    3 
 xen/arch/x86/mm/p2m.c                                                |  703 +
 xen/arch/x86/mm/paging.c                                             |  143 
 xen/arch/x86/mm/shadow/common.c                                      | 1510 +--
 xen/arch/x86/mm/shadow/multi.c                                       |  533 -
 xen/arch/x86/mm/shadow/multi.h                                       |    2 
 xen/arch/x86/mm/shadow/page-guest32.h                                |    5 
 xen/arch/x86/mm/shadow/private.h                                     |  127 
 xen/arch/x86/mm/shadow/types.h                                       |   16 
 xen/arch/x86/setup.c                                                 |   15 
 xen/arch/x86/smp.c                                                   |    2 
 xen/arch/x86/sysctl.c                                                |    1 
 xen/arch/x86/time.c                                                  |    4 
 xen/arch/x86/traps.c                                                 |  106 
 xen/arch/x86/x86_32/domain_page.c                                    |    1 
 xen/arch/x86/x86_32/entry.S                                          |  111 
 xen/arch/x86/x86_32/mm.c                                             |   25 
 xen/arch/x86/x86_32/seg_fixup.c                                      |    5 
 xen/arch/x86/x86_64/Makefile                                         |    4 
 xen/arch/x86/x86_64/compat/Makefile                                  |    2 
 xen/arch/x86/x86_64/compat/entry.S                                   |   91 
 xen/arch/x86/x86_64/compat_kexec.S                                   |  126 
 xen/arch/x86/x86_64/entry.S                                          |   60 
 xen/arch/x86/x86_64/mm.c                                             |   39 
 xen/arch/x86/x86_64/traps.c                                          |    1 
 xen/arch/x86/x86_emulate.c                                           |   93 
 xen/common/acm_ops.c                                                 |   46 
 xen/common/compat/grant_table.c                                      |    3 
 xen/common/domain.c                                                  |   95 
 xen/common/domctl.c                                                  |   90 
 xen/common/event_channel.c                                           |   18 
 xen/common/grant_table.c                                             |  533 -
 xen/common/kexec.c                                                   |    1 
 xen/common/keyhandler.c                                              |    4 
 xen/common/libelf/libelf-dominfo.c                                   |  644 -
 xen/common/libelf/libelf-loader.c                                    |  127 
 xen/common/libelf/libelf-private.h                                   |   26 
 xen/common/libelf/libelf-relocate.c                                  |  375 
 xen/common/libelf/libelf-tools.c                                     |  164 
 xen/common/memory.c                                                  |   38 
 xen/common/page_alloc.c                                              |  580 -
 xen/common/sched_sedf.c                                              |    8 
 xen/common/schedule.c                                                |    4 
 xen/common/sysctl.c                                                  |   11 
 xen/common/trace.c                                                   |    2 
 xen/drivers/char/console.c                                           |   14 
 xen/include/acm/acm_hooks.h                                          |    6 
 xen/include/asm-ia64/bug.h                                           |    6 
 xen/include/asm-ia64/config.h                                        |    6 
 xen/include/asm-ia64/dom_fw.h                                        |    3 
 xen/include/asm-ia64/domain.h                                        |    6 
 xen/include/asm-ia64/flushtlb.h                                      |    1 
 xen/include/asm-ia64/grant_table.h                                   |   43 
 xen/include/asm-ia64/linux-xen/asm/README.origin                     |    1 
 xen/include/asm-ia64/linux-xen/asm/io.h                              |    2 
 xen/include/asm-ia64/linux-xen/asm/pal.h                             |    3 
 xen/include/asm-ia64/linux-xen/asm/percpu.h                          |   77 
 xen/include/asm-ia64/linux-xen/linux/efi.h                           |    4 
 xen/include/asm-ia64/linux/asm/README.origin                         |    1 
 xen/include/asm-ia64/mm.h                                            |    6 
 xen/include/asm-ia64/vcpu.h                                          |    1 
 xen/include/asm-ia64/vmmu.h                                          |    3 
 xen/include/asm-ia64/vmx.h                                           |   28 
 xen/include/asm-ia64/vmx_mm_def.h                                    |    4 
 xen/include/asm-ia64/vmx_platform.h                                  |    5 
 xen/include/asm-ia64/vmx_vcpu.h                                      |   21 
 xen/include/asm-ia64/vmx_vpd.h                                       |   10 
 xen/include/asm-ia64/xenkregs.h                                      |    4 
 xen/include/asm-powerpc/bug.h                                        |    6 
 xen/include/asm-powerpc/config.h                                     |    9 
 xen/include/asm-powerpc/grant_table.h                                |    6 
 xen/include/asm-powerpc/mm.h                                         |    3 
 xen/include/asm-powerpc/platform.h                                   |   28 
 xen/include/asm-x86/bug.h                                            |   21 
 xen/include/asm-x86/config.h                                         |    6 
 xen/include/asm-x86/cpufeature.h                                     |    1 
 xen/include/asm-x86/domain.h                                         |   99 
 xen/include/asm-x86/event.h                                          |    7 
 xen/include/asm-x86/grant_table.h                                    |    6 
 xen/include/asm-x86/hvm/hvm.h                                        |   22 
 xen/include/asm-x86/hvm/io.h                                         |    3 
 xen/include/asm-x86/hvm/support.h                                    |   40 
 xen/include/asm-x86/hvm/trace.h                                      |   44 
 xen/include/asm-x86/hvm/vcpu.h                                       |    2 
 xen/include/asm-x86/hvm/vlapic.h                                     |    2 
 xen/include/asm-x86/hvm/vmx/vmx.h                                    |    6 
 xen/include/asm-x86/hvm/vpt.h                                        |   14 
 xen/include/asm-x86/mm.h                                             |   68 
 xen/include/asm-x86/p2m.h                                            |  142 
 xen/include/asm-x86/page.h                                           |    9 
 xen/include/asm-x86/paging.h                                         |  367 
 xen/include/asm-x86/perfc_defn.h                                     |    1 
 xen/include/asm-x86/processor.h                                      |    5 
 xen/include/asm-x86/shadow.h                                         |  385 
 xen/include/asm-x86/x86_32/bug.h                                     |   28 
 xen/include/asm-x86/x86_64/bug.h                                     |   28 
 xen/include/asm-x86/x86_64/page.h                                    |   16 
 xen/include/asm-x86/x86_emulate.h                                    |   24 
 xen/include/public/arch-ia64.h                                       |   21 
 xen/include/public/arch-powerpc.h                                    |    2 
 xen/include/public/arch-x86/xen.h                                    |    2 
 xen/include/public/domctl.h                                          |   33 
 xen/include/public/elfnote.h                                         |   53 
 xen/include/public/grant_table.h                                     |   19 
 xen/include/public/hvm/ioreq.h                                       |   20 
 xen/include/public/hvm/save.h                                        |   25 
 xen/include/public/libelf.h                                          |   22 
 xen/include/public/trace.h                                           |   35 
 xen/include/xen/grant_table.h                                        |   64 
 xen/include/xen/kexec.h                                              |    1 
 xen/include/xen/lib.h                                                |   27 
 xen/include/xen/mm.h                                                 |   29 
 xen/include/xen/perfc.h                                              |    1 
 xen/include/xen/rcupdate.h                                           |   53 
 xen/include/xen/sched.h                                              |   60 
 552 files changed, 33119 insertions(+), 16414 deletions(-)

diff -r 9fe6fe88a6a1 -r 736f2d6d7b09 .hgignore
--- a/.hgignore Fri Mar 02 17:08:04 2007 -0600
+++ b/.hgignore Fri Mar 02 18:05:38 2007 -0600
@@ -107,6 +107,7 @@
 ^tools/firmware/rombios/BIOS-bochs-[^/]*$
 ^tools/firmware/rombios/_rombios[^/]*_\.c$
 ^tools/firmware/rombios/rombios[^/]*\.s$
+^tools/firmware/rombios/32bit/32bitbios_flat\.h$
 ^tools/firmware/vmxassist/gen$
 ^tools/firmware/vmxassist/offsets\.h$
 ^tools/firmware/vmxassist/vmxassist$
@@ -137,6 +138,7 @@
 ^tools/misc/miniterm/miniterm$
 ^tools/misc/xc_shadow$
 ^tools/misc/xen_cpuperf$
+^tools/misc/xen-detect$
 ^tools/misc/xenperf$
 ^tools/pygrub/build/.*$
 ^tools/python/build/.*$
diff -r 9fe6fe88a6a1 -r 736f2d6d7b09 README
--- a/README    Fri Mar 02 17:08:04 2007 -0600
+++ b/README    Fri Mar 02 18:05:38 2007 -0600
@@ -92,6 +92,8 @@ provided by your Linux distributor:
     * Development install of zlib (e.g., zlib-dev)
     * Development install of Python v2.3 or later (e.g., python-dev)
     * Development install of curses (e.g., libncurses-dev)
+    * Development install of openssl (e.g., openssl-dev)
+    * Development install of x11 (e.g. xorg-x11-dev)
     * bridge-utils package (/sbin/brctl)
     * iproute package (/sbin/ip)
     * hotplug or udev
diff -r 9fe6fe88a6a1 -r 736f2d6d7b09 buildconfigs/linux-defconfig_xen0_ia64
--- a/buildconfigs/linux-defconfig_xen0_ia64    Fri Mar 02 17:08:04 2007 -0600
+++ b/buildconfigs/linux-defconfig_xen0_ia64    Fri Mar 02 18:05:38 2007 -0600
@@ -1,7 +1,7 @@
 #
 # Automatically generated make config: don't edit
-# Linux kernel version: 2.6.16.29-xen0
-# Tue Nov 14 10:39:09 2006
+# Linux kernel version: 2.6.18-xen0
+# Mon Jan 29 10:16:18 2007
 #
 
 #
@@ -21,14 +21,16 @@ CONFIG_POSIX_MQUEUE=y
 CONFIG_POSIX_MQUEUE=y
 CONFIG_BSD_PROCESS_ACCT=y
 # CONFIG_BSD_PROCESS_ACCT_V3 is not set
-CONFIG_SYSCTL=y
+# CONFIG_TASKSTATS is not set
 # CONFIG_AUDIT is not set
 CONFIG_IKCONFIG=y
 CONFIG_IKCONFIG_PROC=y
 # CONFIG_CPUSETS is not set
+# CONFIG_RELAY is not set
 CONFIG_INITRAMFS_SOURCE=""
 CONFIG_CC_OPTIMIZE_FOR_SIZE=y
 # CONFIG_EMBEDDED is not set
+CONFIG_SYSCTL=y
 CONFIG_KALLSYMS=y
 CONFIG_KALLSYMS_ALL=y
 CONFIG_KALLSYMS_EXTRA_PASS=y
@@ -40,11 +42,9 @@ CONFIG_FUTEX=y
 CONFIG_FUTEX=y
 CONFIG_EPOLL=y
 CONFIG_SHMEM=y
-CONFIG_CC_ALIGN_FUNCTIONS=0
-CONFIG_CC_ALIGN_LABELS=0
-CONFIG_CC_ALIGN_LOOPS=0
-CONFIG_CC_ALIGN_JUMPS=0
 CONFIG_SLAB=y
+CONFIG_VM_EVENT_COUNTERS=y
+CONFIG_RT_MUTEXES=y
 # CONFIG_TINY_SHMEM is not set
 CONFIG_BASE_SMALL=0
 # CONFIG_SLOB is not set
@@ -55,7 +55,6 @@ CONFIG_MODULES=y
 CONFIG_MODULES=y
 CONFIG_MODULE_UNLOAD=y
 # CONFIG_MODULE_FORCE_UNLOAD is not set
-CONFIG_OBSOLETE_MODPARM=y
 CONFIG_MODVERSIONS=y
 CONFIG_MODULE_SRCVERSION_ALL=y
 CONFIG_KMOD=y
@@ -64,6 +63,7 @@ CONFIG_STOP_MACHINE=y
 #
 # Block layer
 #
+# CONFIG_BLK_DEV_IO_TRACE is not set
 
 #
 # IO Schedulers
@@ -86,8 +86,10 @@ CONFIG_MMU=y
 CONFIG_MMU=y
 CONFIG_SWIOTLB=y
 CONFIG_RWSEM_XCHGADD_ALGORITHM=y
+CONFIG_GENERIC_FIND_NEXT_BIT=y
 CONFIG_GENERIC_CALIBRATE_DELAY=y
 CONFIG_TIME_INTERPOLATION=y
+CONFIG_DMI=y
 CONFIG_EFI=y
 CONFIG_GENERIC_IOMAP=y
 CONFIG_XEN=y
@@ -96,6 +98,7 @@ CONFIG_XEN_IA64_EXPOSE_P2M_USE_DTR=y
 CONFIG_XEN_IA64_EXPOSE_P2M_USE_DTR=y
 CONFIG_SCHED_NO_NO_OMIT_FRAME_POINTER=y
 CONFIG_DMA_IS_DMA32=y
+CONFIG_AUDIT_ARCH=y
 # CONFIG_IA64_GENERIC is not set
 CONFIG_IA64_DIG=y
 # CONFIG_IA64_HP_ZX1 is not set
@@ -123,6 +126,7 @@ CONFIG_HOTPLUG_CPU=y
 CONFIG_HOTPLUG_CPU=y
 CONFIG_ARCH_ENABLE_MEMORY_HOTPLUG=y
 # CONFIG_SCHED_SMT is not set
+# CONFIG_PERMIT_BSP_REMOVE is not set
 # CONFIG_PREEMPT is not set
 CONFIG_SELECT_MEMORY_MODEL=y
 CONFIG_FLATMEM_MANUAL=y
@@ -132,6 +136,7 @@ CONFIG_FLAT_NODE_MEM_MAP=y
 CONFIG_FLAT_NODE_MEM_MAP=y
 # CONFIG_SPARSEMEM_STATIC is not set
 CONFIG_SPLIT_PTLOCK_CPUS=4
+CONFIG_RESOURCES_64BIT=y
 CONFIG_ARCH_SELECT_MEMORY_MODEL=y
 CONFIG_ARCH_DISCONTIGMEM_ENABLE=y
 CONFIG_ARCH_FLATMEM_ENABLE=y
@@ -163,6 +168,7 @@ CONFIG_ACPI=y
 CONFIG_ACPI=y
 CONFIG_ACPI_BUTTON=y
 CONFIG_ACPI_FAN=y
+# CONFIG_ACPI_DOCK is not set
 CONFIG_ACPI_PROCESSOR=y
 CONFIG_ACPI_HOTPLUG_CPU=y
 CONFIG_ACPI_THERMAL=y
@@ -185,7 +191,7 @@ CONFIG_PCI_DOMAINS=y
 CONFIG_PCI_DOMAINS=y
 CONFIG_XEN_PCIDEV_FRONTEND=y
 # CONFIG_XEN_PCIDEV_FE_DEBUG is not set
-CONFIG_PCI_LEGACY_PROC=y
+# CONFIG_PCIEPORTBUS is not set
 # CONFIG_PCI_DEBUG is not set
 
 #
@@ -215,6 +221,8 @@ CONFIG_PACKET=y
 CONFIG_PACKET=y
 # CONFIG_PACKET_MMAP is not set
 CONFIG_UNIX=y
+CONFIG_XFRM=y
+# CONFIG_XFRM_USER is not set
 # CONFIG_NET_KEY is not set
 CONFIG_INET=y
 CONFIG_IP_MULTICAST=y
@@ -229,7 +237,10 @@ CONFIG_SYN_COOKIES=y
 # CONFIG_INET_AH is not set
 # CONFIG_INET_ESP is not set
 # CONFIG_INET_IPCOMP is not set
+# CONFIG_INET_XFRM_TUNNEL is not set
 # CONFIG_INET_TUNNEL is not set
+CONFIG_INET_XFRM_MODE_TRANSPORT=y
+CONFIG_INET_XFRM_MODE_TUNNEL=y
 CONFIG_INET_DIAG=y
 CONFIG_INET_TCP_DIAG=y
 # CONFIG_TCP_CONG_ADVANCED is not set
@@ -240,6 +251,9 @@ CONFIG_TCP_CONG_BIC=y
 #
 # CONFIG_IP_VS is not set
 # CONFIG_IPV6 is not set
+# CONFIG_INET6_XFRM_TUNNEL is not set
+# CONFIG_INET6_TUNNEL is not set
+# CONFIG_NETWORK_SECMARK is not set
 CONFIG_NETFILTER=y
 # CONFIG_NETFILTER_DEBUG is not set
 CONFIG_BRIDGE_NETFILTER=y
@@ -280,12 +294,12 @@ CONFIG_BRIDGE=y
 CONFIG_BRIDGE=y
 # CONFIG_VLAN_8021Q is not set
 # CONFIG_DECNET is not set
+CONFIG_LLC=y
 # CONFIG_LLC2 is not set
 # CONFIG_IPX is not set
 # CONFIG_ATALK is not set
 # CONFIG_X25 is not set
 # CONFIG_LAPB is not set
-# CONFIG_NET_DIVERT is not set
 # CONFIG_ECONET is not set
 # CONFIG_WAN_ROUTER is not set
 
@@ -314,6 +328,7 @@ CONFIG_PREVENT_FIRMWARE_BUILD=y
 CONFIG_PREVENT_FIRMWARE_BUILD=y
 CONFIG_FW_LOADER=y
 # CONFIG_DEBUG_DRIVER is not set
+# CONFIG_SYS_HYPERVISOR is not set
 
 #
 # Connector - unified userspace <-> kernelspace linker
@@ -352,6 +367,7 @@ CONFIG_BLK_DEV_RAM=y
 CONFIG_BLK_DEV_RAM=y
 CONFIG_BLK_DEV_RAM_COUNT=16
 CONFIG_BLK_DEV_RAM_SIZE=4096
+CONFIG_BLK_DEV_RAM_BLOCKSIZE=1024
 CONFIG_BLK_DEV_INITRD=y
 # CONFIG_CDROM_PKTCDVD is not set
 # CONFIG_ATA_OVER_ETH is not set
@@ -463,6 +479,7 @@ CONFIG_SCSI_SAS_ATTRS=y
 # CONFIG_MEGARAID_LEGACY is not set
 # CONFIG_MEGARAID_SAS is not set
 # CONFIG_SCSI_SATA is not set
+# CONFIG_SCSI_HPTIOP is not set
 # CONFIG_SCSI_DMX3191D is not set
 # CONFIG_SCSI_FUTURE_DOMAIN is not set
 # CONFIG_SCSI_IPS is not set
@@ -472,10 +489,8 @@ CONFIG_SCSI_SYM53C8XX_DMA_ADDRESSING_MOD
 CONFIG_SCSI_SYM53C8XX_DMA_ADDRESSING_MODE=1
 CONFIG_SCSI_SYM53C8XX_DEFAULT_TAGS=16
 CONFIG_SCSI_SYM53C8XX_MAX_TAGS=64
-# CONFIG_SCSI_SYM53C8XX_IOMAPPED is not set
+CONFIG_SCSI_SYM53C8XX_MMIO=y
 # CONFIG_SCSI_IPR is not set
-CONFIG_SCSI_QLOGIC_FC=y
-# CONFIG_SCSI_QLOGIC_FC_FIRMWARE is not set
 CONFIG_SCSI_QLOGIC_1280=y
 # CONFIG_SCSI_QLA_FC is not set
 # CONFIG_SCSI_LPFC is not set
@@ -488,7 +503,13 @@ CONFIG_SCSI_QLOGIC_1280=y
 #
 CONFIG_MD=y
 # CONFIG_BLK_DEV_MD is not set
-# CONFIG_BLK_DEV_DM is not set
+CONFIG_BLK_DEV_DM=y
+CONFIG_DM_CRYPT=m
+CONFIG_DM_SNAPSHOT=m
+CONFIG_DM_MIRROR=m
+CONFIG_DM_ZERO=m
+CONFIG_DM_MULTIPATH=m
+CONFIG_DM_MULTIPATH_EMC=m
 
 #
 # Fusion MPT device support
@@ -607,6 +628,7 @@ CONFIG_TIGON3=y
 # CONFIG_CHELSIO_T1 is not set
 # CONFIG_IXGB is not set
 # CONFIG_S2IO is not set
+# CONFIG_MYRI10GE is not set
 
 #
 # Token Ring devices
@@ -709,6 +731,7 @@ CONFIG_VT=y
 CONFIG_VT=y
 CONFIG_VT_CONSOLE=y
 CONFIG_HW_CONSOLE=y
+# CONFIG_VT_HW_CONSOLE_BINDING is not set
 CONFIG_SERIAL_NONSTANDARD=y
 # CONFIG_COMPUTONE is not set
 # CONFIG_ROCKETPORT is not set
@@ -722,6 +745,7 @@ CONFIG_SERIAL_NONSTANDARD=y
 # CONFIG_N_HDLC is not set
 # CONFIG_SPECIALIX is not set
 # CONFIG_SX is not set
+# CONFIG_RIO is not set
 # CONFIG_STALDRV is not set
 
 #
@@ -755,6 +779,8 @@ CONFIG_EFI_RTC=y
 # Ftape, the floppy tape device driver
 #
 CONFIG_AGP=y
+# CONFIG_AGP_SIS is not set
+# CONFIG_AGP_VIA is not set
 CONFIG_AGP_I460=y
 CONFIG_DRM=y
 # CONFIG_DRM_TDFX is not set
@@ -799,10 +825,10 @@ CONFIG_I2C_ALGOPCF=y
 # CONFIG_I2C_I810 is not set
 # CONFIG_I2C_PIIX4 is not set
 # CONFIG_I2C_NFORCE2 is not set
+# CONFIG_I2C_OCORES is not set
 # CONFIG_I2C_PARPORT_LIGHT is not set
 # CONFIG_I2C_PROSAVAGE is not set
 # CONFIG_I2C_SAVAGE4 is not set
-# CONFIG_SCx200_ACB is not set
 # CONFIG_I2C_SIS5595 is not set
 # CONFIG_I2C_SIS630 is not set
 # CONFIG_I2C_SIS96X is not set
@@ -821,9 +847,7 @@ CONFIG_I2C_ALGOPCF=y
 # CONFIG_SENSORS_PCF8574 is not set
 # CONFIG_SENSORS_PCA9539 is not set
 # CONFIG_SENSORS_PCF8591 is not set
-# CONFIG_SENSORS_RTC8564 is not set
 # CONFIG_SENSORS_MAX6875 is not set
-# CONFIG_RTC_X1205_I2C is not set
 # CONFIG_I2C_DEBUG_CORE is not set
 # CONFIG_I2C_DEBUG_ALGO is not set
 # CONFIG_I2C_DEBUG_BUS is not set
@@ -838,13 +862,13 @@ CONFIG_I2C_ALGOPCF=y
 #
 # Dallas's 1-wire bus
 #
-# CONFIG_W1 is not set
 
 #
 # Hardware Monitoring support
 #
 CONFIG_HWMON=y
 # CONFIG_HWMON_VID is not set
+# CONFIG_SENSORS_ABITUGURU is not set
 # CONFIG_SENSORS_ADM1021 is not set
 # CONFIG_SENSORS_ADM1025 is not set
 # CONFIG_SENSORS_ADM1026 is not set
@@ -873,10 +897,12 @@ CONFIG_HWMON=y
 # CONFIG_SENSORS_PC87360 is not set
 # CONFIG_SENSORS_SIS5595 is not set
 # CONFIG_SENSORS_SMSC47M1 is not set
+# CONFIG_SENSORS_SMSC47M192 is not set
 # CONFIG_SENSORS_SMSC47B397 is not set
 # CONFIG_SENSORS_VIA686A is not set
 # CONFIG_SENSORS_VT8231 is not set
 # CONFIG_SENSORS_W83781D is not set
+# CONFIG_SENSORS_W83791D is not set
 # CONFIG_SENSORS_W83792D is not set
 # CONFIG_SENSORS_W83L785TS is not set
 # CONFIG_SENSORS_W83627HF is not set
@@ -888,24 +914,25 @@ CONFIG_HWMON=y
 #
 
 #
-# Multimedia Capabilities Port drivers
-#
-
-#
 # Multimedia devices
 #
 CONFIG_VIDEO_DEV=y
-
-#
-# Video For Linux
-#
-
-#
-# Video Adapters
+CONFIG_VIDEO_V4L1=y
+CONFIG_VIDEO_V4L1_COMPAT=y
+CONFIG_VIDEO_V4L2=y
+
+#
+# Video Capture Adapters
+#
+
+#
+# Video Capture Adapters
 #
 # CONFIG_VIDEO_ADV_DEBUG is not set
+# CONFIG_VIDEO_VIVI is not set
 # CONFIG_VIDEO_BT848 is not set
 # CONFIG_VIDEO_CPIA is not set
+# CONFIG_VIDEO_CPIA2 is not set
 # CONFIG_VIDEO_SAA5246A is not set
 # CONFIG_VIDEO_SAA5249 is not set
 # CONFIG_TUNER_3036 is not set
@@ -917,10 +944,40 @@ CONFIG_VIDEO_DEV=y
 # CONFIG_VIDEO_HEXIUM_ORION is not set
 # CONFIG_VIDEO_HEXIUM_GEMINI is not set
 # CONFIG_VIDEO_CX88 is not set
+
+#
+# Encoders and Decoders
+#
+# CONFIG_VIDEO_MSP3400 is not set
+# CONFIG_VIDEO_CS53L32A is not set
+# CONFIG_VIDEO_TLV320AIC23B is not set
+# CONFIG_VIDEO_WM8775 is not set
+# CONFIG_VIDEO_WM8739 is not set
+# CONFIG_VIDEO_CX2341X is not set
+# CONFIG_VIDEO_CX25840 is not set
+# CONFIG_VIDEO_SAA711X is not set
+# CONFIG_VIDEO_SAA7127 is not set
+# CONFIG_VIDEO_UPD64031A is not set
+# CONFIG_VIDEO_UPD64083 is not set
+
+#
+# V4L USB devices
+#
+# CONFIG_VIDEO_PVRUSB2 is not set
 # CONFIG_VIDEO_EM28XX is not set
+# CONFIG_USB_VICAM is not set
+# CONFIG_USB_IBMCAM is not set
+# CONFIG_USB_KONICAWC is not set
+# CONFIG_USB_QUICKCAM_MESSENGER is not set
+# CONFIG_USB_ET61X251 is not set
 # CONFIG_VIDEO_OVCAMCHIP is not set
-# CONFIG_VIDEO_AUDIO_DECODER is not set
-# CONFIG_VIDEO_DECODER is not set
+# CONFIG_USB_W9968CF is not set
+# CONFIG_USB_OV511 is not set
+# CONFIG_USB_SE401 is not set
+# CONFIG_USB_SN9C102 is not set
+# CONFIG_USB_STV680 is not set
+# CONFIG_USB_ZC0301 is not set
+# CONFIG_USB_PWC is not set
 
 #
 # Radio Adapters
@@ -928,20 +985,24 @@ CONFIG_VIDEO_DEV=y
 # CONFIG_RADIO_GEMTEK_PCI is not set
 # CONFIG_RADIO_MAXIRADIO is not set
 # CONFIG_RADIO_MAESTRO is not set
+# CONFIG_USB_DSBR is not set
 
 #
 # Digital Video Broadcasting Devices
 #
 # CONFIG_DVB is not set
+# CONFIG_USB_DABUSB is not set
 
 #
 # Graphics support
 #
+CONFIG_FIRMWARE_EDID=y
 CONFIG_FB=y
 CONFIG_FB_CFB_FILLRECT=y
 CONFIG_FB_CFB_COPYAREA=y
 CONFIG_FB_CFB_IMAGEBLIT=y
 # CONFIG_FB_MACMODES is not set
+# CONFIG_FB_BACKLIGHT is not set
 CONFIG_FB_MODE_HELPERS=y
 # CONFIG_FB_TILEBLITTING is not set
 # CONFIG_FB_CIRRUS is not set
@@ -953,7 +1014,6 @@ CONFIG_FB_MODE_HELPERS=y
 # CONFIG_FB_NVIDIA is not set
 # CONFIG_FB_RIVA is not set
 # CONFIG_FB_MATROX is not set
-# CONFIG_FB_RADEON_OLD is not set
 CONFIG_FB_RADEON=y
 CONFIG_FB_RADEON_I2C=y
 CONFIG_FB_RADEON_DEBUG=y
@@ -972,6 +1032,7 @@ CONFIG_FB_RADEON_DEBUG=y
 # Console display driver support
 #
 CONFIG_VGA_CONSOLE=y
+# CONFIG_VGACON_SOFT_SCROLLBACK is not set
 CONFIG_DUMMY_CONSOLE=y
 # CONFIG_FRAMEBUFFER_CONSOLE is not set
 
@@ -1002,9 +1063,11 @@ CONFIG_SND_OSSEMUL=y
 CONFIG_SND_OSSEMUL=y
 CONFIG_SND_MIXER_OSS=y
 CONFIG_SND_PCM_OSS=y
+CONFIG_SND_PCM_OSS_PLUGINS=y
 CONFIG_SND_SEQUENCER_OSS=y
 # CONFIG_SND_DYNAMIC_MINORS is not set
 CONFIG_SND_SUPPORT_OLD_API=y
+CONFIG_SND_VERBOSE_PROCFS=y
 # CONFIG_SND_VERBOSE_PRINTK is not set
 # CONFIG_SND_DEBUG is not set
 
@@ -1025,6 +1088,7 @@ CONFIG_SND_MPU401=y
 # PCI devices
 #
 # CONFIG_SND_AD1889 is not set
+# CONFIG_SND_ALS300 is not set
 # CONFIG_SND_ALI5451 is not set
 CONFIG_SND_ATIIXP=y
 # CONFIG_SND_ATIIXP_MODEM is not set
@@ -1037,6 +1101,18 @@ CONFIG_SND_ATIIXP=y
 # CONFIG_SND_CMIPCI is not set
 # CONFIG_SND_CS4281 is not set
 # CONFIG_SND_CS46XX is not set
+# CONFIG_SND_DARLA20 is not set
+# CONFIG_SND_GINA20 is not set
+# CONFIG_SND_LAYLA20 is not set
+# CONFIG_SND_DARLA24 is not set
+# CONFIG_SND_GINA24 is not set
+# CONFIG_SND_LAYLA24 is not set
+# CONFIG_SND_MONA is not set
+# CONFIG_SND_MIA is not set
+# CONFIG_SND_ECHO3G is not set
+# CONFIG_SND_INDIGO is not set
+# CONFIG_SND_INDIGOIO is not set
+# CONFIG_SND_INDIGODJ is not set
 # CONFIG_SND_EMU10K1 is not set
 # CONFIG_SND_EMU10K1X is not set
 # CONFIG_SND_ENS1370 is not set
@@ -1057,6 +1133,7 @@ CONFIG_SND_FM801=y
 # CONFIG_SND_MIXART is not set
 # CONFIG_SND_NM256 is not set
 # CONFIG_SND_PCXHR is not set
+# CONFIG_SND_RIPTIDE is not set
 # CONFIG_SND_RME32 is not set
 # CONFIG_SND_RME96 is not set
 # CONFIG_SND_RME9652 is not set
@@ -1076,12 +1153,14 @@ CONFIG_SND_FM801=y
 # Open Sound System
 #
 CONFIG_SOUND_PRIME=y
-# CONFIG_OBSOLETE_OSS_DRIVER is not set
-# CONFIG_SOUND_FUSION is not set
+# CONFIG_OSS_OBSOLETE_DRIVER is not set
+# CONFIG_SOUND_BT878 is not set
+# CONFIG_SOUND_ES1371 is not set
 # CONFIG_SOUND_ICH is not set
 # CONFIG_SOUND_TRIDENT is not set
 # CONFIG_SOUND_MSNDCLAS is not set
 # CONFIG_SOUND_MSNDPIN is not set
+# CONFIG_SOUND_VIA82CXXX is not set
 # CONFIG_SOUND_TVMIXER is not set
 
 #
@@ -1089,6 +1168,7 @@ CONFIG_SOUND_PRIME=y
 #
 CONFIG_USB_ARCH_HAS_HCD=y
 CONFIG_USB_ARCH_HAS_OHCI=y
+CONFIG_USB_ARCH_HAS_EHCI=y
 CONFIG_USB=y
 # CONFIG_USB_DEBUG is not set
 
@@ -1107,6 +1187,7 @@ CONFIG_USB_EHCI_HCD=y
 CONFIG_USB_EHCI_HCD=y
 # CONFIG_USB_EHCI_SPLIT_ISO is not set
 # CONFIG_USB_EHCI_ROOT_HUB_TT is not set
+# CONFIG_USB_EHCI_TT_NEWSCHED is not set
 # CONFIG_USB_ISP116X_HCD is not set
 CONFIG_USB_OHCI_HCD=y
 # CONFIG_USB_OHCI_BIG_ENDIAN is not set
@@ -1117,7 +1198,6 @@ CONFIG_USB_UHCI_HCD=y
 #
 # USB Device Class drivers
 #
-# CONFIG_OBSOLETE_OSS_USB_DRIVER is not set
 # CONFIG_USB_ACM is not set
 # CONFIG_USB_PRINTER is not set
 
@@ -1154,9 +1234,7 @@ CONFIG_USB_HIDDEV=y
 # CONFIG_USB_ACECAD is not set
 # CONFIG_USB_KBTAB is not set
 # CONFIG_USB_POWERMATE is not set
-# CONFIG_USB_MTOUCH is not set
-# CONFIG_USB_ITMTOUCH is not set
-# CONFIG_USB_EGALAX is not set
+# CONFIG_USB_TOUCHSCREEN is not set
 # CONFIG_USB_YEALINK is not set
 # CONFIG_USB_XPAD is not set
 # CONFIG_USB_ATI_REMOTE is not set
@@ -1169,21 +1247,6 @@ CONFIG_USB_HIDDEV=y
 #
 # CONFIG_USB_MDC800 is not set
 # CONFIG_USB_MICROTEK is not set
-
-#
-# USB Multimedia devices
-#
-# CONFIG_USB_DABUSB is not set
-# CONFIG_USB_VICAM is not set
-# CONFIG_USB_DSBR is not set
-# CONFIG_USB_ET61X251 is not set
-# CONFIG_USB_IBMCAM is not set
-# CONFIG_USB_KONICAWC is not set
-# CONFIG_USB_OV511 is not set
-# CONFIG_USB_SE401 is not set
-# CONFIG_USB_SN9C102 is not set
-# CONFIG_USB_STV680 is not set
-# CONFIG_USB_PWC is not set
 
 #
 # USB Network Adapters
@@ -1214,10 +1277,12 @@ CONFIG_USB_MON=y
 # CONFIG_USB_LEGOTOWER is not set
 # CONFIG_USB_LCD is not set
 # CONFIG_USB_LED is not set
+# CONFIG_USB_CYPRESS_CY7C63 is not set
 # CONFIG_USB_CYTHERM is not set
 # CONFIG_USB_PHIDGETKIT is not set
 # CONFIG_USB_PHIDGETSERVO is not set
 # CONFIG_USB_IDMOUSE is not set
+# CONFIG_USB_APPLEDISPLAY is not set
 # CONFIG_USB_SISUSBVGA is not set
 # CONFIG_USB_LD is not set
 # CONFIG_USB_TEST is not set
@@ -1237,12 +1302,43 @@ CONFIG_USB_MON=y
 # CONFIG_MMC is not set
 
 #
+# LED devices
+#
+# CONFIG_NEW_LEDS is not set
+
+#
+# LED drivers
+#
+
+#
+# LED Triggers
+#
+
+#
 # InfiniBand support
 #
 # CONFIG_INFINIBAND is not set
 
 #
 # EDAC - error detection and reporting (RAS) (EXPERIMENTAL)
+#
+
+#
+# Real Time Clock
+#
+# CONFIG_RTC_CLASS is not set
+
+#
+# DMA Engine support
+#
+# CONFIG_DMA_ENGINE is not set
+
+#
+# DMA Clients
+#
+
+#
+# DMA Devices
 #
 
 #
@@ -1269,7 +1365,6 @@ CONFIG_REISERFS_FS_SECURITY=y
 # CONFIG_JFS_FS is not set
 CONFIG_FS_POSIX_ACL=y
 CONFIG_XFS_FS=y
-CONFIG_XFS_EXPORT=y
 # CONFIG_XFS_QUOTA is not set
 # CONFIG_XFS_SECURITY is not set
 # CONFIG_XFS_POSIX_ACL is not set
@@ -1278,6 +1373,7 @@ CONFIG_XFS_EXPORT=y
 # CONFIG_MINIX_FS is not set
 # CONFIG_ROMFS_FS is not set
 CONFIG_INOTIFY=y
+CONFIG_INOTIFY_USER=y
 # CONFIG_QUOTA is not set
 CONFIG_DNOTIFY=y
 CONFIG_AUTOFS_FS=y
@@ -1312,7 +1408,6 @@ CONFIG_TMPFS=y
 CONFIG_TMPFS=y
 # CONFIG_HUGETLB_PAGE is not set
 CONFIG_RAMFS=y
-# CONFIG_RELAYFS_FS is not set
 # CONFIG_CONFIGFS_FS is not set
 
 #
@@ -1358,7 +1453,9 @@ CONFIG_SMB_NLS_REMOTE="cp437"
 CONFIG_SMB_NLS_REMOTE="cp437"
 CONFIG_CIFS=y
 # CONFIG_CIFS_STATS is not set
+# CONFIG_CIFS_WEAK_PW_HASH is not set
 # CONFIG_CIFS_XATTR is not set
+# CONFIG_CIFS_DEBUG2 is not set
 # CONFIG_CIFS_EXPERIMENTAL is not set
 # CONFIG_NCP_FS is not set
 # CONFIG_CODA_FS is not set
@@ -1437,9 +1534,11 @@ CONFIG_NLS_UTF8=y
 # CONFIG_CRC16 is not set
 CONFIG_CRC32=y
 # CONFIG_LIBCRC32C is not set
+CONFIG_PLIST=y
 CONFIG_GENERIC_HARDIRQS=y
 CONFIG_GENERIC_IRQ_PROBE=y
 CONFIG_GENERIC_PENDING_IRQ=y
+CONFIG_IRQ_PER_CPU=y
 
 #
 # Instrumentation Support
@@ -1452,14 +1551,19 @@ CONFIG_GENERIC_PENDING_IRQ=y
 #
 # CONFIG_PRINTK_TIME is not set
 CONFIG_MAGIC_SYSRQ=y
+CONFIG_UNUSED_SYMBOLS=y
 CONFIG_DEBUG_KERNEL=y
 CONFIG_LOG_BUF_SHIFT=20
 CONFIG_DETECT_SOFTLOCKUP=y
 # CONFIG_SCHEDSTATS is not set
 # CONFIG_DEBUG_SLAB is not set
+# CONFIG_DEBUG_RT_MUTEXES is not set
+# CONFIG_RT_MUTEX_TESTER is not set
+# CONFIG_DEBUG_SPINLOCK is not set
 CONFIG_DEBUG_MUTEXES=y
-# CONFIG_DEBUG_SPINLOCK is not set
+# CONFIG_DEBUG_RWSEMS is not set
 # CONFIG_DEBUG_SPINLOCK_SLEEP is not set
+# CONFIG_DEBUG_LOCKING_API_SELFTESTS is not set
 # CONFIG_DEBUG_KOBJECT is not set
 # CONFIG_DEBUG_INFO is not set
 # CONFIG_DEBUG_FS is not set
@@ -1513,7 +1617,6 @@ CONFIG_CRYPTO_DES=y
 #
 # CONFIG_XEN_UTIL is not set
 CONFIG_XEN_BALLOON=y
-# CONFIG_XEN_DEVMEM is not set
 CONFIG_XEN_REBOOT=y
 # CONFIG_XEN_SMPBOOT is not set
 CONFIG_XEN_INTERFACE_VERSION=0x00030203
@@ -1539,6 +1642,7 @@ CONFIG_XEN_TPMDEV_BACKEND=m
 CONFIG_XEN_TPMDEV_BACKEND=m
 CONFIG_XEN_BLKDEV_FRONTEND=y
 CONFIG_XEN_NETDEV_FRONTEND=y
+# CONFIG_XEN_FRAMEBUFFER is not set
 # CONFIG_XEN_SCRUB_PAGES is not set
 CONFIG_XEN_DISABLE_SERIAL=y
 CONFIG_XEN_SYSFS=y
@@ -1547,3 +1651,4 @@ CONFIG_XEN_COMPAT_030002=y
 CONFIG_XEN_COMPAT_030002=y
 CONFIG_HAVE_IRQ_IGNORE_UNHANDLED=y
 CONFIG_NO_IDLE_HZ=y
+CONFIG_XEN_DEVMEM=y
diff -r 9fe6fe88a6a1 -r 736f2d6d7b09 buildconfigs/linux-defconfig_xenU_ia64
--- a/buildconfigs/linux-defconfig_xenU_ia64    Fri Mar 02 17:08:04 2007 -0600
+++ b/buildconfigs/linux-defconfig_xenU_ia64    Fri Mar 02 18:05:38 2007 -0600
@@ -1,7 +1,7 @@
 #
 # Automatically generated make config: don't edit
-# Linux kernel version: 2.6.16.29-xenU
-# Wed Oct  4 12:54:26 2006
+# Linux kernel version: 2.6.18-xenU
+# Mon Jan 29 10:26:51 2007
 #
 
 #
@@ -21,13 +21,15 @@ CONFIG_SYSVIPC=y
 # CONFIG_POSIX_MQUEUE is not set
 CONFIG_BSD_PROCESS_ACCT=y
 # CONFIG_BSD_PROCESS_ACCT_V3 is not set
-CONFIG_SYSCTL=y
+# CONFIG_TASKSTATS is not set
 # CONFIG_AUDIT is not set
 # CONFIG_IKCONFIG is not set
 # CONFIG_CPUSETS is not set
+# CONFIG_RELAY is not set
 CONFIG_INITRAMFS_SOURCE=""
 CONFIG_CC_OPTIMIZE_FOR_SIZE=y
 # CONFIG_EMBEDDED is not set
+CONFIG_SYSCTL=y
 CONFIG_KALLSYMS=y
 # CONFIG_KALLSYMS_ALL is not set
 # CONFIG_KALLSYMS_EXTRA_PASS is not set
@@ -39,11 +41,9 @@ CONFIG_FUTEX=y
 CONFIG_FUTEX=y
 CONFIG_EPOLL=y
 CONFIG_SHMEM=y
-CONFIG_CC_ALIGN_FUNCTIONS=0
-CONFIG_CC_ALIGN_LABELS=0
-CONFIG_CC_ALIGN_LOOPS=0
-CONFIG_CC_ALIGN_JUMPS=0
 CONFIG_SLAB=y
+CONFIG_VM_EVENT_COUNTERS=y
+CONFIG_RT_MUTEXES=y
 # CONFIG_TINY_SHMEM is not set
 CONFIG_BASE_SMALL=0
 # CONFIG_SLOB is not set
@@ -53,7 +53,6 @@ CONFIG_BASE_SMALL=0
 #
 CONFIG_MODULES=y
 # CONFIG_MODULE_UNLOAD is not set
-CONFIG_OBSOLETE_MODPARM=y
 # CONFIG_MODVERSIONS is not set
 # CONFIG_MODULE_SRCVERSION_ALL is not set
 # CONFIG_KMOD is not set
@@ -61,6 +60,7 @@ CONFIG_OBSOLETE_MODPARM=y
 #
 # Block layer
 #
+# CONFIG_BLK_DEV_IO_TRACE is not set
 
 #
 # IO Schedulers
@@ -83,8 +83,10 @@ CONFIG_MMU=y
 CONFIG_MMU=y
 CONFIG_SWIOTLB=y
 CONFIG_RWSEM_XCHGADD_ALGORITHM=y
+CONFIG_GENERIC_FIND_NEXT_BIT=y
 CONFIG_GENERIC_CALIBRATE_DELAY=y
 CONFIG_TIME_INTERPOLATION=y
+CONFIG_DMI=y
 CONFIG_EFI=y
 CONFIG_GENERIC_IOMAP=y
 CONFIG_XEN=y
@@ -93,6 +95,7 @@ CONFIG_XEN_IA64_EXPOSE_P2M_USE_DTR=y
 CONFIG_XEN_IA64_EXPOSE_P2M_USE_DTR=y
 CONFIG_SCHED_NO_NO_OMIT_FRAME_POINTER=y
 CONFIG_DMA_IS_DMA32=y
+CONFIG_AUDIT_ARCH=y
 # CONFIG_IA64_GENERIC is not set
 CONFIG_IA64_DIG=y
 # CONFIG_IA64_HP_ZX1 is not set
@@ -117,9 +120,10 @@ CONFIG_FORCE_MAX_ZONEORDER=11
 CONFIG_FORCE_MAX_ZONEORDER=11
 CONFIG_SMP=y
 CONFIG_NR_CPUS=16
-# CONFIG_HOTPLUG_CPU is not set
+CONFIG_HOTPLUG_CPU=y
 CONFIG_ARCH_ENABLE_MEMORY_HOTPLUG=y
 # CONFIG_SCHED_SMT is not set
+# CONFIG_PERMIT_BSP_REMOVE is not set
 # CONFIG_PREEMPT is not set
 CONFIG_SELECT_MEMORY_MODEL=y
 CONFIG_FLATMEM_MANUAL=y
@@ -129,6 +133,7 @@ CONFIG_FLAT_NODE_MEM_MAP=y
 CONFIG_FLAT_NODE_MEM_MAP=y
 # CONFIG_SPARSEMEM_STATIC is not set
 CONFIG_SPLIT_PTLOCK_CPUS=4
+CONFIG_RESOURCES_64BIT=y
 CONFIG_ARCH_SELECT_MEMORY_MODEL=y
 CONFIG_ARCH_DISCONTIGMEM_ENABLE=y
 CONFIG_ARCH_FLATMEM_ENABLE=y
@@ -161,7 +166,9 @@ CONFIG_ACPI=y
 CONFIG_ACPI=y
 CONFIG_ACPI_BUTTON=y
 CONFIG_ACPI_FAN=y
+# CONFIG_ACPI_DOCK is not set
 CONFIG_ACPI_PROCESSOR=y
+CONFIG_ACPI_HOTPLUG_CPU=y
 CONFIG_ACPI_THERMAL=y
 CONFIG_ACPI_BLACKLIST_YEAR=0
 # CONFIG_ACPI_DEBUG is not set
@@ -182,7 +189,7 @@ CONFIG_PCI_DOMAINS=y
 CONFIG_PCI_DOMAINS=y
 CONFIG_XEN_PCIDEV_FRONTEND=y
 # CONFIG_XEN_PCIDEV_FE_DEBUG is not set
-CONFIG_PCI_LEGACY_PROC=y
+# CONFIG_PCIEPORTBUS is not set
 # CONFIG_PCI_DEBUG is not set
 
 #
@@ -212,6 +219,8 @@ CONFIG_PACKET=y
 CONFIG_PACKET=y
 # CONFIG_PACKET_MMAP is not set
 CONFIG_UNIX=y
+CONFIG_XFRM=y
+# CONFIG_XFRM_USER is not set
 # CONFIG_NET_KEY is not set
 CONFIG_INET=y
 CONFIG_IP_MULTICAST=y
@@ -226,7 +235,10 @@ CONFIG_IP_FIB_HASH=y
 # CONFIG_INET_AH is not set
 # CONFIG_INET_ESP is not set
 # CONFIG_INET_IPCOMP is not set
+# CONFIG_INET_XFRM_TUNNEL is not set
 # CONFIG_INET_TUNNEL is not set
+CONFIG_INET_XFRM_MODE_TRANSPORT=y
+CONFIG_INET_XFRM_MODE_TUNNEL=y
 CONFIG_INET_DIAG=y
 CONFIG_INET_TCP_DIAG=y
 # CONFIG_TCP_CONG_ADVANCED is not set
@@ -237,6 +249,9 @@ CONFIG_TCP_CONG_BIC=y
 #
 # CONFIG_IP_VS is not set
 # CONFIG_IPV6 is not set
+# CONFIG_INET6_XFRM_TUNNEL is not set
+# CONFIG_INET6_TUNNEL is not set
+# CONFIG_NETWORK_SECMARK is not set
 CONFIG_NETFILTER=y
 # CONFIG_NETFILTER_DEBUG is not set
 
@@ -276,7 +291,6 @@ CONFIG_NETFILTER=y
 # CONFIG_ATALK is not set
 # CONFIG_X25 is not set
 # CONFIG_LAPB is not set
-# CONFIG_NET_DIVERT is not set
 # CONFIG_ECONET is not set
 # CONFIG_WAN_ROUTER is not set
 
@@ -305,6 +319,7 @@ CONFIG_PREVENT_FIRMWARE_BUILD=y
 CONFIG_PREVENT_FIRMWARE_BUILD=y
 # CONFIG_FW_LOADER is not set
 # CONFIG_DEBUG_DRIVER is not set
+# CONFIG_SYS_HYPERVISOR is not set
 
 #
 # Connector - unified userspace <-> kernelspace linker
@@ -342,6 +357,7 @@ CONFIG_BLK_DEV_RAM=y
 CONFIG_BLK_DEV_RAM=y
 CONFIG_BLK_DEV_RAM_COUNT=16
 CONFIG_BLK_DEV_RAM_SIZE=4096
+CONFIG_BLK_DEV_RAM_BLOCKSIZE=1024
 CONFIG_BLK_DEV_INITRD=y
 # CONFIG_CDROM_PKTCDVD is not set
 # CONFIG_ATA_OVER_ETH is not set
@@ -399,6 +415,7 @@ CONFIG_SCSI_SAS_ATTRS=y
 # CONFIG_MEGARAID_LEGACY is not set
 # CONFIG_MEGARAID_SAS is not set
 # CONFIG_SCSI_SATA is not set
+# CONFIG_SCSI_HPTIOP is not set
 # CONFIG_SCSI_DMX3191D is not set
 # CONFIG_SCSI_FUTURE_DOMAIN is not set
 # CONFIG_SCSI_IPS is not set
@@ -408,9 +425,8 @@ CONFIG_SCSI_SYM53C8XX_DMA_ADDRESSING_MOD
 CONFIG_SCSI_SYM53C8XX_DMA_ADDRESSING_MODE=1
 CONFIG_SCSI_SYM53C8XX_DEFAULT_TAGS=16
 CONFIG_SCSI_SYM53C8XX_MAX_TAGS=64
-# CONFIG_SCSI_SYM53C8XX_IOMAPPED is not set
+CONFIG_SCSI_SYM53C8XX_MMIO=y
 # CONFIG_SCSI_IPR is not set
-# CONFIG_SCSI_QLOGIC_FC is not set
 CONFIG_SCSI_QLOGIC_1280=y
 # CONFIG_SCSI_QLA_FC is not set
 # CONFIG_SCSI_LPFC is not set
@@ -532,6 +548,7 @@ CONFIG_TIGON3=y
 # CONFIG_CHELSIO_T1 is not set
 # CONFIG_IXGB is not set
 # CONFIG_S2IO is not set
+# CONFIG_MYRI10GE is not set
 
 #
 # Token Ring devices
@@ -609,6 +626,7 @@ CONFIG_VT=y
 CONFIG_VT=y
 CONFIG_VT_CONSOLE=y
 CONFIG_HW_CONSOLE=y
+# CONFIG_VT_HW_CONSOLE_BINDING is not set
 # CONFIG_SERIAL_NONSTANDARD is not set
 
 #
@@ -616,7 +634,7 @@ CONFIG_HW_CONSOLE=y
 #
 CONFIG_SERIAL_8250=y
 CONFIG_SERIAL_8250_CONSOLE=y
-CONFIG_SERIAL_8250_ACPI=y
+CONFIG_SERIAL_8250_PCI=y
 CONFIG_SERIAL_8250_NR_UARTS=8
 CONFIG_SERIAL_8250_RUNTIME_UARTS=4
 CONFIG_SERIAL_8250_EXTENDED=y
@@ -653,6 +671,8 @@ CONFIG_EFI_RTC=y
 # Ftape, the floppy tape device driver
 #
 CONFIG_AGP=y
+# CONFIG_AGP_SIS is not set
+# CONFIG_AGP_VIA is not set
 # CONFIG_AGP_I460 is not set
 CONFIG_DRM=y
 # CONFIG_DRM_TDFX is not set
@@ -697,10 +717,10 @@ CONFIG_I2C_ALGOPCF=y
 # CONFIG_I2C_I810 is not set
 # CONFIG_I2C_PIIX4 is not set
 # CONFIG_I2C_NFORCE2 is not set
+# CONFIG_I2C_OCORES is not set
 # CONFIG_I2C_PARPORT_LIGHT is not set
 # CONFIG_I2C_PROSAVAGE is not set
 # CONFIG_I2C_SAVAGE4 is not set
-# CONFIG_SCx200_ACB is not set
 # CONFIG_I2C_SIS5595 is not set
 # CONFIG_I2C_SIS630 is not set
 # CONFIG_I2C_SIS96X is not set
@@ -719,9 +739,7 @@ CONFIG_I2C_ALGOPCF=y
 # CONFIG_SENSORS_PCF8574 is not set
 # CONFIG_SENSORS_PCA9539 is not set
 # CONFIG_SENSORS_PCF8591 is not set
-# CONFIG_SENSORS_RTC8564 is not set
 # CONFIG_SENSORS_MAX6875 is not set
-# CONFIG_RTC_X1205_I2C is not set
 # CONFIG_I2C_DEBUG_CORE is not set
 # CONFIG_I2C_DEBUG_ALGO is not set
 # CONFIG_I2C_DEBUG_BUS is not set
@@ -736,13 +754,13 @@ CONFIG_I2C_ALGOPCF=y
 #
 # Dallas's 1-wire bus
 #
-# CONFIG_W1 is not set
 
 #
 # Hardware Monitoring support
 #
 CONFIG_HWMON=y
 # CONFIG_HWMON_VID is not set
+# CONFIG_SENSORS_ABITUGURU is not set
 # CONFIG_SENSORS_ADM1021 is not set
 # CONFIG_SENSORS_ADM1025 is not set
 # CONFIG_SENSORS_ADM1026 is not set
@@ -771,10 +789,12 @@ CONFIG_HWMON=y
 # CONFIG_SENSORS_PC87360 is not set
 # CONFIG_SENSORS_SIS5595 is not set
 # CONFIG_SENSORS_SMSC47M1 is not set
+# CONFIG_SENSORS_SMSC47M192 is not set
 # CONFIG_SENSORS_SMSC47B397 is not set
 # CONFIG_SENSORS_VIA686A is not set
 # CONFIG_SENSORS_VT8231 is not set
 # CONFIG_SENSORS_W83781D is not set
+# CONFIG_SENSORS_W83791D is not set
 # CONFIG_SENSORS_W83792D is not set
 # CONFIG_SENSORS_W83L785TS is not set
 # CONFIG_SENSORS_W83627HF is not set
@@ -786,24 +806,25 @@ CONFIG_HWMON=y
 #
 
 #
-# Multimedia Capabilities Port drivers
-#
-
-#
 # Multimedia devices
 #
 CONFIG_VIDEO_DEV=y
-
-#
-# Video For Linux
-#
-
-#
-# Video Adapters
+CONFIG_VIDEO_V4L1=y
+CONFIG_VIDEO_V4L1_COMPAT=y
+CONFIG_VIDEO_V4L2=y
+
+#
+# Video Capture Adapters
+#
+
+#
+# Video Capture Adapters
 #
 # CONFIG_VIDEO_ADV_DEBUG is not set
+# CONFIG_VIDEO_VIVI is not set
 # CONFIG_VIDEO_BT848 is not set
 # CONFIG_VIDEO_CPIA is not set
+# CONFIG_VIDEO_CPIA2 is not set
 # CONFIG_VIDEO_SAA5246A is not set
 # CONFIG_VIDEO_SAA5249 is not set
 # CONFIG_TUNER_3036 is not set
@@ -815,10 +836,40 @@ CONFIG_VIDEO_DEV=y
 # CONFIG_VIDEO_HEXIUM_ORION is not set
 # CONFIG_VIDEO_HEXIUM_GEMINI is not set
 # CONFIG_VIDEO_CX88 is not set
+
+#
+# Encoders and Decoders
+#
+# CONFIG_VIDEO_MSP3400 is not set
+# CONFIG_VIDEO_CS53L32A is not set
+# CONFIG_VIDEO_TLV320AIC23B is not set
+# CONFIG_VIDEO_WM8775 is not set
+# CONFIG_VIDEO_WM8739 is not set
+# CONFIG_VIDEO_CX2341X is not set
+# CONFIG_VIDEO_CX25840 is not set
+# CONFIG_VIDEO_SAA711X is not set
+# CONFIG_VIDEO_SAA7127 is not set
+# CONFIG_VIDEO_UPD64031A is not set
+# CONFIG_VIDEO_UPD64083 is not set
+
+#
+# V4L USB devices
+#
+# CONFIG_VIDEO_PVRUSB2 is not set
 # CONFIG_VIDEO_EM28XX is not set
+# CONFIG_USB_VICAM is not set
+# CONFIG_USB_IBMCAM is not set
+# CONFIG_USB_KONICAWC is not set
+# CONFIG_USB_QUICKCAM_MESSENGER is not set
+# CONFIG_USB_ET61X251 is not set
 # CONFIG_VIDEO_OVCAMCHIP is not set
-# CONFIG_VIDEO_AUDIO_DECODER is not set
-# CONFIG_VIDEO_DECODER is not set
+# CONFIG_USB_W9968CF is not set
+# CONFIG_USB_OV511 is not set
+# CONFIG_USB_SE401 is not set
+# CONFIG_USB_SN9C102 is not set
+# CONFIG_USB_STV680 is not set
+# CONFIG_USB_ZC0301 is not set
+# CONFIG_USB_PWC is not set
 
 #
 # Radio Adapters
@@ -826,20 +877,24 @@ CONFIG_VIDEO_DEV=y
 # CONFIG_RADIO_GEMTEK_PCI is not set
 # CONFIG_RADIO_MAXIRADIO is not set
 # CONFIG_RADIO_MAESTRO is not set
+# CONFIG_USB_DSBR is not set
 
 #
 # Digital Video Broadcasting Devices
 #
 # CONFIG_DVB is not set
+# CONFIG_USB_DABUSB is not set
 
 #
 # Graphics support
 #
+CONFIG_FIRMWARE_EDID=y
 CONFIG_FB=y
 CONFIG_FB_CFB_FILLRECT=y
 CONFIG_FB_CFB_COPYAREA=y
 CONFIG_FB_CFB_IMAGEBLIT=y
 # CONFIG_FB_MACMODES is not set
+# CONFIG_FB_BACKLIGHT is not set
 CONFIG_FB_MODE_HELPERS=y
 # CONFIG_FB_TILEBLITTING is not set
 # CONFIG_FB_CIRRUS is not set
@@ -851,7 +906,6 @@ CONFIG_FB_MODE_HELPERS=y
 # CONFIG_FB_NVIDIA is not set
 # CONFIG_FB_RIVA is not set
 # CONFIG_FB_MATROX is not set
-# CONFIG_FB_RADEON_OLD is not set
 CONFIG_FB_RADEON=y
 CONFIG_FB_RADEON_I2C=y
 CONFIG_FB_RADEON_DEBUG=y
@@ -870,6 +924,7 @@ CONFIG_FB_RADEON_DEBUG=y
 # Console display driver support
 #
 CONFIG_VGA_CONSOLE=y
+# CONFIG_VGACON_SOFT_SCROLLBACK is not set
 CONFIG_DUMMY_CONSOLE=y
 # CONFIG_FRAMEBUFFER_CONSOLE is not set
 
@@ -900,9 +955,11 @@ CONFIG_SND_OSSEMUL=y
 CONFIG_SND_OSSEMUL=y
 CONFIG_SND_MIXER_OSS=y
 CONFIG_SND_PCM_OSS=y
+CONFIG_SND_PCM_OSS_PLUGINS=y
 CONFIG_SND_SEQUENCER_OSS=y
 # CONFIG_SND_DYNAMIC_MINORS is not set
 CONFIG_SND_SUPPORT_OLD_API=y
+CONFIG_SND_VERBOSE_PROCFS=y
 # CONFIG_SND_VERBOSE_PRINTK is not set
 # CONFIG_SND_DEBUG is not set
 
@@ -923,6 +980,7 @@ CONFIG_SND_AC97_BUS=y
 # PCI devices
 #
 # CONFIG_SND_AD1889 is not set
+# CONFIG_SND_ALS300 is not set
 # CONFIG_SND_ALI5451 is not set
 # CONFIG_SND_ATIIXP is not set
 # CONFIG_SND_ATIIXP_MODEM is not set
@@ -980,6 +1038,7 @@ CONFIG_SND_FM801=y
 #
 CONFIG_USB_ARCH_HAS_HCD=y
 CONFIG_USB_ARCH_HAS_OHCI=y
+CONFIG_USB_ARCH_HAS_EHCI=y
 CONFIG_USB=y
 # CONFIG_USB_DEBUG is not set
 
@@ -998,6 +1057,7 @@ CONFIG_USB_EHCI_HCD=y
 CONFIG_USB_EHCI_HCD=y
 # CONFIG_USB_EHCI_SPLIT_ISO is not set
 # CONFIG_USB_EHCI_ROOT_HUB_TT is not set
+# CONFIG_USB_EHCI_TT_NEWSCHED is not set
 # CONFIG_USB_ISP116X_HCD is not set
 CONFIG_USB_OHCI_HCD=y
 # CONFIG_USB_OHCI_BIG_ENDIAN is not set
@@ -1008,7 +1068,6 @@ CONFIG_USB_UHCI_HCD=y
 #
 # USB Device Class drivers
 #
-# CONFIG_OBSOLETE_OSS_USB_DRIVER is not set
 # CONFIG_USB_ACM is not set
 # CONFIG_USB_PRINTER is not set
 
@@ -1044,9 +1103,7 @@ CONFIG_USB_HIDDEV=y
 # CONFIG_USB_ACECAD is not set
 # CONFIG_USB_KBTAB is not set
 # CONFIG_USB_POWERMATE is not set
-# CONFIG_USB_MTOUCH is not set
-# CONFIG_USB_ITMTOUCH is not set
-# CONFIG_USB_EGALAX is not set
+# CONFIG_USB_TOUCHSCREEN is not set
 # CONFIG_USB_YEALINK is not set
 # CONFIG_USB_XPAD is not set
 # CONFIG_USB_ATI_REMOTE is not set
@@ -1059,21 +1116,6 @@ CONFIG_USB_HIDDEV=y
 #
 # CONFIG_USB_MDC800 is not set
 # CONFIG_USB_MICROTEK is not set
-
-#
-# USB Multimedia devices
-#
-# CONFIG_USB_DABUSB is not set
-# CONFIG_USB_VICAM is not set
-# CONFIG_USB_DSBR is not set
-# CONFIG_USB_ET61X251 is not set
-# CONFIG_USB_IBMCAM is not set
-# CONFIG_USB_KONICAWC is not set
-# CONFIG_USB_OV511 is not set
-# CONFIG_USB_SE401 is not set
-# CONFIG_USB_SN9C102 is not set
-# CONFIG_USB_STV680 is not set
-# CONFIG_USB_PWC is not set
 
 #
 # USB Network Adapters
@@ -1104,10 +1146,12 @@ CONFIG_USB_MON=y
 # CONFIG_USB_LEGOTOWER is not set
 # CONFIG_USB_LCD is not set
 # CONFIG_USB_LED is not set
+# CONFIG_USB_CYPRESS_CY7C63 is not set
 # CONFIG_USB_CYTHERM is not set
 # CONFIG_USB_PHIDGETKIT is not set
 # CONFIG_USB_PHIDGETSERVO is not set
 # CONFIG_USB_IDMOUSE is not set
+# CONFIG_USB_APPLEDISPLAY is not set
 # CONFIG_USB_SISUSBVGA is not set
 # CONFIG_USB_LD is not set
 
@@ -1126,12 +1170,43 @@ CONFIG_USB_MON=y
 # CONFIG_MMC is not set
 
 #
+# LED devices
+#
+# CONFIG_NEW_LEDS is not set
+
+#
+# LED drivers
+#
+
+#
+# LED Triggers
+#
+
+#
 # InfiniBand support
 #
 # CONFIG_INFINIBAND is not set
 
 #
 # EDAC - error detection and reporting (RAS) (EXPERIMENTAL)
+#
+
+#
+# Real Time Clock
+#
+# CONFIG_RTC_CLASS is not set
+
+#
+# DMA Engine support
+#
+# CONFIG_DMA_ENGINE is not set
+
+#
+# DMA Clients
+#
+
+#
+# DMA Devices
 #
 
 #
@@ -1157,6 +1232,7 @@ CONFIG_FS_MBCACHE=y
 # CONFIG_MINIX_FS is not set
 # CONFIG_ROMFS_FS is not set
 CONFIG_INOTIFY=y
+CONFIG_INOTIFY_USER=y
 # CONFIG_QUOTA is not set
 CONFIG_DNOTIFY=y
 CONFIG_AUTOFS_FS=y
@@ -1191,7 +1267,6 @@ CONFIG_TMPFS=y
 CONFIG_TMPFS=y
 # CONFIG_HUGETLB_PAGE is not set
 CONFIG_RAMFS=y
-# CONFIG_RELAYFS_FS is not set
 # CONFIG_CONFIGFS_FS is not set
 
 #
@@ -1311,9 +1386,11 @@ CONFIG_NLS_UTF8=y
 # CONFIG_CRC16 is not set
 CONFIG_CRC32=y
 # CONFIG_LIBCRC32C is not set
+CONFIG_PLIST=y
 CONFIG_GENERIC_HARDIRQS=y
 CONFIG_GENERIC_IRQ_PROBE=y
 CONFIG_GENERIC_PENDING_IRQ=y
+CONFIG_IRQ_PER_CPU=y
 
 #
 # Instrumentation Support
@@ -1326,14 +1403,19 @@ CONFIG_GENERIC_PENDING_IRQ=y
 #
 # CONFIG_PRINTK_TIME is not set
 CONFIG_MAGIC_SYSRQ=y
+CONFIG_UNUSED_SYMBOLS=y
 CONFIG_DEBUG_KERNEL=y
 CONFIG_LOG_BUF_SHIFT=17
 CONFIG_DETECT_SOFTLOCKUP=y
 # CONFIG_SCHEDSTATS is not set
 # CONFIG_DEBUG_SLAB is not set
+# CONFIG_DEBUG_RT_MUTEXES is not set
+# CONFIG_RT_MUTEX_TESTER is not set
+# CONFIG_DEBUG_SPINLOCK is not set
 CONFIG_DEBUG_MUTEXES=y
-# CONFIG_DEBUG_SPINLOCK is not set
+# CONFIG_DEBUG_RWSEMS is not set
 # CONFIG_DEBUG_SPINLOCK_SLEEP is not set
+# CONFIG_DEBUG_LOCKING_API_SELFTESTS is not set
 # CONFIG_DEBUG_KOBJECT is not set
 # CONFIG_DEBUG_INFO is not set
 # CONFIG_DEBUG_FS is not set
@@ -1387,7 +1469,6 @@ CONFIG_CRYPTO_DES=y
 #
 # CONFIG_XEN_UTIL is not set
 CONFIG_XEN_BALLOON=y
-# CONFIG_XEN_DEVMEM is not set
 CONFIG_XEN_REBOOT=y
 # CONFIG_XEN_SMPBOOT is not set
 CONFIG_XEN_INTERFACE_VERSION=0x00030203
@@ -1402,6 +1483,8 @@ CONFIG_XEN_XENBUS_DEV=y
 # CONFIG_XEN_BACKEND is not set
 CONFIG_XEN_BLKDEV_FRONTEND=y
 CONFIG_XEN_NETDEV_FRONTEND=y
+CONFIG_XEN_FRAMEBUFFER=y
+CONFIG_XEN_KEYBOARD=y
 # CONFIG_XEN_SCRUB_PAGES is not set
 # CONFIG_XEN_DISABLE_SERIAL is not set
 CONFIG_XEN_SYSFS=y
@@ -1410,3 +1493,4 @@ CONFIG_XEN_COMPAT_030002=y
 CONFIG_XEN_COMPAT_030002=y
 CONFIG_HAVE_IRQ_IGNORE_UNHANDLED=y
 CONFIG_NO_IDLE_HZ=y
+CONFIG_XEN_DEVMEM=y
diff -r 9fe6fe88a6a1 -r 736f2d6d7b09 buildconfigs/linux-defconfig_xen_ia64
--- a/buildconfigs/linux-defconfig_xen_ia64     Fri Mar 02 17:08:04 2007 -0600
+++ b/buildconfigs/linux-defconfig_xen_ia64     Fri Mar 02 18:05:38 2007 -0600
@@ -1,7 +1,7 @@
 #
 # Automatically generated make config: don't edit
-# Linux kernel version: 2.6.16.29-xen
-# Tue Nov 14 10:38:50 2006
+# Linux kernel version: 2.6.18-xen
+# Mon Jan 29 10:01:13 2007
 #
 
 #
@@ -21,14 +21,16 @@ CONFIG_POSIX_MQUEUE=y
 CONFIG_POSIX_MQUEUE=y
 CONFIG_BSD_PROCESS_ACCT=y
 # CONFIG_BSD_PROCESS_ACCT_V3 is not set
-CONFIG_SYSCTL=y
+# CONFIG_TASKSTATS is not set
 # CONFIG_AUDIT is not set
 CONFIG_IKCONFIG=y
 CONFIG_IKCONFIG_PROC=y
 # CONFIG_CPUSETS is not set
+# CONFIG_RELAY is not set
 CONFIG_INITRAMFS_SOURCE=""
 CONFIG_CC_OPTIMIZE_FOR_SIZE=y
 # CONFIG_EMBEDDED is not set
+CONFIG_SYSCTL=y
 CONFIG_KALLSYMS=y
 CONFIG_KALLSYMS_ALL=y
 CONFIG_KALLSYMS_EXTRA_PASS=y
@@ -40,11 +42,9 @@ CONFIG_FUTEX=y
 CONFIG_FUTEX=y
 CONFIG_EPOLL=y
 CONFIG_SHMEM=y
-CONFIG_CC_ALIGN_FUNCTIONS=0
-CONFIG_CC_ALIGN_LABELS=0
-CONFIG_CC_ALIGN_LOOPS=0
-CONFIG_CC_ALIGN_JUMPS=0
 CONFIG_SLAB=y
+CONFIG_VM_EVENT_COUNTERS=y
+CONFIG_RT_MUTEXES=y
 # CONFIG_TINY_SHMEM is not set
 CONFIG_BASE_SMALL=0
 # CONFIG_SLOB is not set
@@ -55,7 +55,6 @@ CONFIG_MODULES=y
 CONFIG_MODULES=y
 CONFIG_MODULE_UNLOAD=y
 # CONFIG_MODULE_FORCE_UNLOAD is not set
-CONFIG_OBSOLETE_MODPARM=y
 CONFIG_MODVERSIONS=y
 CONFIG_MODULE_SRCVERSION_ALL=y
 CONFIG_KMOD=y
@@ -64,6 +63,7 @@ CONFIG_STOP_MACHINE=y
 #
 # Block layer
 #
+# CONFIG_BLK_DEV_IO_TRACE is not set
 
 #
 # IO Schedulers
@@ -86,8 +86,10 @@ CONFIG_MMU=y
 CONFIG_MMU=y
 CONFIG_SWIOTLB=y
 CONFIG_RWSEM_XCHGADD_ALGORITHM=y
+CONFIG_GENERIC_FIND_NEXT_BIT=y
 CONFIG_GENERIC_CALIBRATE_DELAY=y
 CONFIG_TIME_INTERPOLATION=y
+CONFIG_DMI=y
 CONFIG_EFI=y
 CONFIG_GENERIC_IOMAP=y
 CONFIG_XEN=y
@@ -96,6 +98,7 @@ CONFIG_XEN_IA64_EXPOSE_P2M_USE_DTR=y
 CONFIG_XEN_IA64_EXPOSE_P2M_USE_DTR=y
 CONFIG_SCHED_NO_NO_OMIT_FRAME_POINTER=y
 CONFIG_DMA_IS_DMA32=y
+CONFIG_AUDIT_ARCH=y
 # CONFIG_IA64_GENERIC is not set
 CONFIG_IA64_DIG=y
 # CONFIG_IA64_HP_ZX1 is not set
@@ -123,6 +126,7 @@ CONFIG_HOTPLUG_CPU=y
 CONFIG_HOTPLUG_CPU=y
 CONFIG_ARCH_ENABLE_MEMORY_HOTPLUG=y
 # CONFIG_SCHED_SMT is not set
+# CONFIG_PERMIT_BSP_REMOVE is not set
 # CONFIG_PREEMPT is not set
 CONFIG_SELECT_MEMORY_MODEL=y
 CONFIG_FLATMEM_MANUAL=y
@@ -132,6 +136,7 @@ CONFIG_FLAT_NODE_MEM_MAP=y
 CONFIG_FLAT_NODE_MEM_MAP=y
 # CONFIG_SPARSEMEM_STATIC is not set
 CONFIG_SPLIT_PTLOCK_CPUS=4
+CONFIG_RESOURCES_64BIT=y
 CONFIG_ARCH_SELECT_MEMORY_MODEL=y
 CONFIG_ARCH_DISCONTIGMEM_ENABLE=y
 CONFIG_ARCH_FLATMEM_ENABLE=y
@@ -163,6 +168,7 @@ CONFIG_ACPI=y
 CONFIG_ACPI=y
 CONFIG_ACPI_BUTTON=y
 CONFIG_ACPI_FAN=y
+# CONFIG_ACPI_DOCK is not set
 CONFIG_ACPI_PROCESSOR=y
 CONFIG_ACPI_HOTPLUG_CPU=y
 CONFIG_ACPI_THERMAL=y
@@ -185,7 +191,7 @@ CONFIG_PCI_DOMAINS=y
 CONFIG_PCI_DOMAINS=y
 CONFIG_XEN_PCIDEV_FRONTEND=y
 # CONFIG_XEN_PCIDEV_FE_DEBUG is not set
-CONFIG_PCI_LEGACY_PROC=y
+# CONFIG_PCIEPORTBUS is not set
 # CONFIG_PCI_DEBUG is not set
 
 #
@@ -215,6 +221,8 @@ CONFIG_PACKET=y
 CONFIG_PACKET=y
 # CONFIG_PACKET_MMAP is not set
 CONFIG_UNIX=y
+CONFIG_XFRM=y
+# CONFIG_XFRM_USER is not set
 # CONFIG_NET_KEY is not set
 CONFIG_INET=y
 CONFIG_IP_MULTICAST=y
@@ -229,7 +237,10 @@ CONFIG_SYN_COOKIES=y
 # CONFIG_INET_AH is not set
 # CONFIG_INET_ESP is not set
 # CONFIG_INET_IPCOMP is not set
+# CONFIG_INET_XFRM_TUNNEL is not set
 # CONFIG_INET_TUNNEL is not set
+CONFIG_INET_XFRM_MODE_TRANSPORT=y
+CONFIG_INET_XFRM_MODE_TUNNEL=y
 CONFIG_INET_DIAG=y
 CONFIG_INET_TCP_DIAG=y
 # CONFIG_TCP_CONG_ADVANCED is not set
@@ -240,6 +251,9 @@ CONFIG_TCP_CONG_BIC=y
 #
 # CONFIG_IP_VS is not set
 # CONFIG_IPV6 is not set
+# CONFIG_INET6_XFRM_TUNNEL is not set
+# CONFIG_INET6_TUNNEL is not set
+# CONFIG_NETWORK_SECMARK is not set
 CONFIG_NETFILTER=y
 # CONFIG_NETFILTER_DEBUG is not set
 CONFIG_BRIDGE_NETFILTER=y
@@ -280,12 +294,12 @@ CONFIG_BRIDGE=y
 CONFIG_BRIDGE=y
 # CONFIG_VLAN_8021Q is not set
 # CONFIG_DECNET is not set
+CONFIG_LLC=y
 # CONFIG_LLC2 is not set
 # CONFIG_IPX is not set
 # CONFIG_ATALK is not set
 # CONFIG_X25 is not set
 # CONFIG_LAPB is not set
-# CONFIG_NET_DIVERT is not set
 # CONFIG_ECONET is not set
 # CONFIG_WAN_ROUTER is not set
 
@@ -314,6 +328,7 @@ CONFIG_PREVENT_FIRMWARE_BUILD=y
 CONFIG_PREVENT_FIRMWARE_BUILD=y
 CONFIG_FW_LOADER=y
 # CONFIG_DEBUG_DRIVER is not set
+# CONFIG_SYS_HYPERVISOR is not set
 
 #
 # Connector - unified userspace <-> kernelspace linker
@@ -352,6 +367,7 @@ CONFIG_BLK_DEV_RAM=y
 CONFIG_BLK_DEV_RAM=y
 CONFIG_BLK_DEV_RAM_COUNT=16
 CONFIG_BLK_DEV_RAM_SIZE=4096
+CONFIG_BLK_DEV_RAM_BLOCKSIZE=1024
 CONFIG_BLK_DEV_INITRD=y
 # CONFIG_CDROM_PKTCDVD is not set
 # CONFIG_ATA_OVER_ETH is not set
@@ -463,6 +479,7 @@ CONFIG_SCSI_SAS_ATTRS=y
 # CONFIG_MEGARAID_LEGACY is not set
 # CONFIG_MEGARAID_SAS is not set
 # CONFIG_SCSI_SATA is not set
+# CONFIG_SCSI_HPTIOP is not set
 # CONFIG_SCSI_DMX3191D is not set
 # CONFIG_SCSI_FUTURE_DOMAIN is not set
 # CONFIG_SCSI_IPS is not set
@@ -472,10 +489,8 @@ CONFIG_SCSI_SYM53C8XX_DMA_ADDRESSING_MOD
 CONFIG_SCSI_SYM53C8XX_DMA_ADDRESSING_MODE=1
 CONFIG_SCSI_SYM53C8XX_DEFAULT_TAGS=16
 CONFIG_SCSI_SYM53C8XX_MAX_TAGS=64
-# CONFIG_SCSI_SYM53C8XX_IOMAPPED is not set
+CONFIG_SCSI_SYM53C8XX_MMIO=y
 # CONFIG_SCSI_IPR is not set
-CONFIG_SCSI_QLOGIC_FC=y
-# CONFIG_SCSI_QLOGIC_FC_FIRMWARE is not set
 CONFIG_SCSI_QLOGIC_1280=y
 # CONFIG_SCSI_QLA_FC is not set
 # CONFIG_SCSI_LPFC is not set
@@ -613,6 +628,7 @@ CONFIG_TIGON3=y
 # CONFIG_CHELSIO_T1 is not set
 # CONFIG_IXGB is not set
 # CONFIG_S2IO is not set
+# CONFIG_MYRI10GE is not set
 
 #
 # Token Ring devices
@@ -715,6 +731,7 @@ CONFIG_VT=y
 CONFIG_VT=y
 CONFIG_VT_CONSOLE=y
 CONFIG_HW_CONSOLE=y
+# CONFIG_VT_HW_CONSOLE_BINDING is not set
 CONFIG_SERIAL_NONSTANDARD=y
 # CONFIG_COMPUTONE is not set
 # CONFIG_ROCKETPORT is not set
@@ -728,6 +745,7 @@ CONFIG_SERIAL_NONSTANDARD=y
 # CONFIG_N_HDLC is not set
 # CONFIG_SPECIALIX is not set
 # CONFIG_SX is not set
+# CONFIG_RIO is not set
 # CONFIG_STALDRV is not set
 
 #
@@ -761,6 +779,8 @@ CONFIG_EFI_RTC=y
 # Ftape, the floppy tape device driver
 #
 CONFIG_AGP=y
+# CONFIG_AGP_SIS is not set
+# CONFIG_AGP_VIA is not set
 CONFIG_AGP_I460=y
 CONFIG_DRM=y
 # CONFIG_DRM_TDFX is not set
@@ -805,10 +825,10 @@ CONFIG_I2C_ALGOPCF=y
 # CONFIG_I2C_I810 is not set
 # CONFIG_I2C_PIIX4 is not set
 # CONFIG_I2C_NFORCE2 is not set
+# CONFIG_I2C_OCORES is not set
 # CONFIG_I2C_PARPORT_LIGHT is not set
 # CONFIG_I2C_PROSAVAGE is not set
 # CONFIG_I2C_SAVAGE4 is not set
-# CONFIG_SCx200_ACB is not set
 # CONFIG_I2C_SIS5595 is not set
 # CONFIG_I2C_SIS630 is not set
 # CONFIG_I2C_SIS96X is not set
@@ -827,9 +847,7 @@ CONFIG_I2C_ALGOPCF=y
 # CONFIG_SENSORS_PCF8574 is not set
 # CONFIG_SENSORS_PCA9539 is not set
 # CONFIG_SENSORS_PCF8591 is not set
-# CONFIG_SENSORS_RTC8564 is not set
 # CONFIG_SENSORS_MAX6875 is not set
-# CONFIG_RTC_X1205_I2C is not set
 # CONFIG_I2C_DEBUG_CORE is not set
 # CONFIG_I2C_DEBUG_ALGO is not set
 # CONFIG_I2C_DEBUG_BUS is not set
@@ -844,13 +862,13 @@ CONFIG_I2C_ALGOPCF=y
 #
 # Dallas's 1-wire bus
 #
-# CONFIG_W1 is not set
 
 #
 # Hardware Monitoring support
 #
 CONFIG_HWMON=y
 # CONFIG_HWMON_VID is not set
+# CONFIG_SENSORS_ABITUGURU is not set
 # CONFIG_SENSORS_ADM1021 is not set
 # CONFIG_SENSORS_ADM1025 is not set
 # CONFIG_SENSORS_ADM1026 is not set
@@ -879,10 +897,12 @@ CONFIG_HWMON=y
 # CONFIG_SENSORS_PC87360 is not set
 # CONFIG_SENSORS_SIS5595 is not set
 # CONFIG_SENSORS_SMSC47M1 is not set
+# CONFIG_SENSORS_SMSC47M192 is not set
 # CONFIG_SENSORS_SMSC47B397 is not set
 # CONFIG_SENSORS_VIA686A is not set
 # CONFIG_SENSORS_VT8231 is not set
 # CONFIG_SENSORS_W83781D is not set
+# CONFIG_SENSORS_W83791D is not set
 # CONFIG_SENSORS_W83792D is not set
 # CONFIG_SENSORS_W83L785TS is not set
 # CONFIG_SENSORS_W83627HF is not set
@@ -894,24 +914,25 @@ CONFIG_HWMON=y
 #
 
 #
-# Multimedia Capabilities Port drivers
-#
-
-#
 # Multimedia devices
 #
 CONFIG_VIDEO_DEV=y
-
-#
-# Video For Linux
-#
-
-#
-# Video Adapters
+CONFIG_VIDEO_V4L1=y
+CONFIG_VIDEO_V4L1_COMPAT=y
+CONFIG_VIDEO_V4L2=y
+
+#
+# Video Capture Adapters
+#
+
+#
+# Video Capture Adapters
 #
 # CONFIG_VIDEO_ADV_DEBUG is not set
+# CONFIG_VIDEO_VIVI is not set
 # CONFIG_VIDEO_BT848 is not set
 # CONFIG_VIDEO_CPIA is not set
+# CONFIG_VIDEO_CPIA2 is not set
 # CONFIG_VIDEO_SAA5246A is not set
 # CONFIG_VIDEO_SAA5249 is not set
 # CONFIG_TUNER_3036 is not set
@@ -923,10 +944,40 @@ CONFIG_VIDEO_DEV=y
 # CONFIG_VIDEO_HEXIUM_ORION is not set
 # CONFIG_VIDEO_HEXIUM_GEMINI is not set
 # CONFIG_VIDEO_CX88 is not set
+
+#
+# Encoders and Decoders
+#
+# CONFIG_VIDEO_MSP3400 is not set
+# CONFIG_VIDEO_CS53L32A is not set
+# CONFIG_VIDEO_TLV320AIC23B is not set
+# CONFIG_VIDEO_WM8775 is not set
+# CONFIG_VIDEO_WM8739 is not set
+# CONFIG_VIDEO_CX2341X is not set
+# CONFIG_VIDEO_CX25840 is not set
+# CONFIG_VIDEO_SAA711X is not set
+# CONFIG_VIDEO_SAA7127 is not set
+# CONFIG_VIDEO_UPD64031A is not set
+# CONFIG_VIDEO_UPD64083 is not set
+
+#
+# V4L USB devices
+#
+# CONFIG_VIDEO_PVRUSB2 is not set
 # CONFIG_VIDEO_EM28XX is not set
+# CONFIG_USB_VICAM is not set
+# CONFIG_USB_IBMCAM is not set
+# CONFIG_USB_KONICAWC is not set
+# CONFIG_USB_QUICKCAM_MESSENGER is not set
+# CONFIG_USB_ET61X251 is not set
 # CONFIG_VIDEO_OVCAMCHIP is not set
-# CONFIG_VIDEO_AUDIO_DECODER is not set
-# CONFIG_VIDEO_DECODER is not set
+# CONFIG_USB_W9968CF is not set
+# CONFIG_USB_OV511 is not set
+# CONFIG_USB_SE401 is not set
+# CONFIG_USB_SN9C102 is not set
+# CONFIG_USB_STV680 is not set
+# CONFIG_USB_ZC0301 is not set
+# CONFIG_USB_PWC is not set
 
 #
 # Radio Adapters
@@ -934,20 +985,24 @@ CONFIG_VIDEO_DEV=y
 # CONFIG_RADIO_GEMTEK_PCI is not set
 # CONFIG_RADIO_MAXIRADIO is not set
 # CONFIG_RADIO_MAESTRO is not set
+# CONFIG_USB_DSBR is not set
 
 #
 # Digital Video Broadcasting Devices
 #
 # CONFIG_DVB is not set
+# CONFIG_USB_DABUSB is not set
 
 #
 # Graphics support
 #
+CONFIG_FIRMWARE_EDID=y
 CONFIG_FB=y
 CONFIG_FB_CFB_FILLRECT=y
 CONFIG_FB_CFB_COPYAREA=y
 CONFIG_FB_CFB_IMAGEBLIT=y
 # CONFIG_FB_MACMODES is not set
+# CONFIG_FB_BACKLIGHT is not set
 CONFIG_FB_MODE_HELPERS=y
 # CONFIG_FB_TILEBLITTING is not set
 # CONFIG_FB_CIRRUS is not set
@@ -959,7 +1014,6 @@ CONFIG_FB_MODE_HELPERS=y
 # CONFIG_FB_NVIDIA is not set
 # CONFIG_FB_RIVA is not set
 # CONFIG_FB_MATROX is not set
-# CONFIG_FB_RADEON_OLD is not set
 CONFIG_FB_RADEON=y
 CONFIG_FB_RADEON_I2C=y
 CONFIG_FB_RADEON_DEBUG=y
@@ -978,6 +1032,7 @@ CONFIG_FB_RADEON_DEBUG=y
 # Console display driver support
 #
 CONFIG_VGA_CONSOLE=y
+# CONFIG_VGACON_SOFT_SCROLLBACK is not set
 CONFIG_DUMMY_CONSOLE=y
 # CONFIG_FRAMEBUFFER_CONSOLE is not set
 
@@ -1008,9 +1063,11 @@ CONFIG_SND_OSSEMUL=y
 CONFIG_SND_OSSEMUL=y
 CONFIG_SND_MIXER_OSS=y
 CONFIG_SND_PCM_OSS=y
+CONFIG_SND_PCM_OSS_PLUGINS=y
 CONFIG_SND_SEQUENCER_OSS=y
 # CONFIG_SND_DYNAMIC_MINORS is not set
 CONFIG_SND_SUPPORT_OLD_API=y
+CONFIG_SND_VERBOSE_PROCFS=y
 # CONFIG_SND_VERBOSE_PRINTK is not set
 # CONFIG_SND_DEBUG is not set
 
@@ -1031,6 +1088,7 @@ CONFIG_SND_MPU401=y
 # PCI devices
 #
 # CONFIG_SND_AD1889 is not set
+# CONFIG_SND_ALS300 is not set
 # CONFIG_SND_ALI5451 is not set
 CONFIG_SND_ATIIXP=y
 # CONFIG_SND_ATIIXP_MODEM is not set
@@ -1043,6 +1101,18 @@ CONFIG_SND_ATIIXP=y
 # CONFIG_SND_CMIPCI is not set
 # CONFIG_SND_CS4281 is not set
 # CONFIG_SND_CS46XX is not set
+# CONFIG_SND_DARLA20 is not set
+# CONFIG_SND_GINA20 is not set
+# CONFIG_SND_LAYLA20 is not set
+# CONFIG_SND_DARLA24 is not set
+# CONFIG_SND_GINA24 is not set
+# CONFIG_SND_LAYLA24 is not set
+# CONFIG_SND_MONA is not set
+# CONFIG_SND_MIA is not set
+# CONFIG_SND_ECHO3G is not set
+# CONFIG_SND_INDIGO is not set
+# CONFIG_SND_INDIGOIO is not set
+# CONFIG_SND_INDIGODJ is not set
 # CONFIG_SND_EMU10K1 is not set
 # CONFIG_SND_EMU10K1X is not set
 # CONFIG_SND_ENS1370 is not set
@@ -1063,6 +1133,7 @@ CONFIG_SND_FM801=y
 # CONFIG_SND_MIXART is not set
 # CONFIG_SND_NM256 is not set
 # CONFIG_SND_PCXHR is not set
+# CONFIG_SND_RIPTIDE is not set
 # CONFIG_SND_RME32 is not set
 # CONFIG_SND_RME96 is not set
 # CONFIG_SND_RME9652 is not set
@@ -1082,12 +1153,14 @@ CONFIG_SND_FM801=y
 # Open Sound System
 #
 CONFIG_SOUND_PRIME=y
-# CONFIG_OBSOLETE_OSS_DRIVER is not set
-# CONFIG_SOUND_FUSION is not set
+# CONFIG_OSS_OBSOLETE_DRIVER is not set
+# CONFIG_SOUND_BT878 is not set
+# CONFIG_SOUND_ES1371 is not set
 # CONFIG_SOUND_ICH is not set
 # CONFIG_SOUND_TRIDENT is not set
 # CONFIG_SOUND_MSNDCLAS is not set
 # CONFIG_SOUND_MSNDPIN is not set
+# CONFIG_SOUND_VIA82CXXX is not set
 # CONFIG_SOUND_TVMIXER is not set
 
 #
@@ -1095,6 +1168,7 @@ CONFIG_SOUND_PRIME=y
 #
 CONFIG_USB_ARCH_HAS_HCD=y
 CONFIG_USB_ARCH_HAS_OHCI=y
+CONFIG_USB_ARCH_HAS_EHCI=y
 CONFIG_USB=y
 # CONFIG_USB_DEBUG is not set
 
@@ -1113,6 +1187,7 @@ CONFIG_USB_EHCI_HCD=y
 CONFIG_USB_EHCI_HCD=y
 # CONFIG_USB_EHCI_SPLIT_ISO is not set
 # CONFIG_USB_EHCI_ROOT_HUB_TT is not set
+# CONFIG_USB_EHCI_TT_NEWSCHED is not set
 # CONFIG_USB_ISP116X_HCD is not set
 CONFIG_USB_OHCI_HCD=y
 # CONFIG_USB_OHCI_BIG_ENDIAN is not set
@@ -1123,7 +1198,6 @@ CONFIG_USB_UHCI_HCD=y
 #
 # USB Device Class drivers
 #
-# CONFIG_OBSOLETE_OSS_USB_DRIVER is not set
 # CONFIG_USB_ACM is not set
 # CONFIG_USB_PRINTER is not set
 
@@ -1160,9 +1234,7 @@ CONFIG_USB_HIDDEV=y
 # CONFIG_USB_ACECAD is not set
 # CONFIG_USB_KBTAB is not set
 # CONFIG_USB_POWERMATE is not set
-# CONFIG_USB_MTOUCH is not set
-# CONFIG_USB_ITMTOUCH is not set
-# CONFIG_USB_EGALAX is not set
+# CONFIG_USB_TOUCHSCREEN is not set
 # CONFIG_USB_YEALINK is not set
 # CONFIG_USB_XPAD is not set
 # CONFIG_USB_ATI_REMOTE is not set
@@ -1175,21 +1247,6 @@ CONFIG_USB_HIDDEV=y
 #
 # CONFIG_USB_MDC800 is not set
 # CONFIG_USB_MICROTEK is not set
-
-#
-# USB Multimedia devices
-#
-# CONFIG_USB_DABUSB is not set
-# CONFIG_USB_VICAM is not set
-# CONFIG_USB_DSBR is not set
-# CONFIG_USB_ET61X251 is not set
-# CONFIG_USB_IBMCAM is not set
-# CONFIG_USB_KONICAWC is not set
-# CONFIG_USB_OV511 is not set
-# CONFIG_USB_SE401 is not set
-# CONFIG_USB_SN9C102 is not set
-# CONFIG_USB_STV680 is not set
-# CONFIG_USB_PWC is not set
 
 #
 # USB Network Adapters
@@ -1220,10 +1277,12 @@ CONFIG_USB_MON=y
 # CONFIG_USB_LEGOTOWER is not set
 # CONFIG_USB_LCD is not set
 # CONFIG_USB_LED is not set
+# CONFIG_USB_CYPRESS_CY7C63 is not set
 # CONFIG_USB_CYTHERM is not set
 # CONFIG_USB_PHIDGETKIT is not set
 # CONFIG_USB_PHIDGETSERVO is not set
 # CONFIG_USB_IDMOUSE is not set
+# CONFIG_USB_APPLEDISPLAY is not set
 # CONFIG_USB_SISUSBVGA is not set
 # CONFIG_USB_LD is not set
 # CONFIG_USB_TEST is not set
@@ -1243,12 +1302,43 @@ CONFIG_USB_MON=y
 # CONFIG_MMC is not set
 
 #
+# LED devices
+#
+# CONFIG_NEW_LEDS is not set
+
+#
+# LED drivers
+#
+
+#
+# LED Triggers
+#
+
+#
 # InfiniBand support
 #
 # CONFIG_INFINIBAND is not set
 
 #
 # EDAC - error detection and reporting (RAS) (EXPERIMENTAL)
+#
+
+#
+# Real Time Clock
+#
+# CONFIG_RTC_CLASS is not set
+
+#
+# DMA Engine support
+#
+# CONFIG_DMA_ENGINE is not set
+
+#
+# DMA Clients
+#
+
+#
+# DMA Devices
 #
 
 #
@@ -1275,7 +1365,6 @@ CONFIG_REISERFS_FS_SECURITY=y
 # CONFIG_JFS_FS is not set
 CONFIG_FS_POSIX_ACL=y
 CONFIG_XFS_FS=y
-CONFIG_XFS_EXPORT=y
 # CONFIG_XFS_QUOTA is not set
 # CONFIG_XFS_SECURITY is not set
 # CONFIG_XFS_POSIX_ACL is not set
@@ -1284,6 +1373,7 @@ CONFIG_XFS_EXPORT=y
 # CONFIG_MINIX_FS is not set
 # CONFIG_ROMFS_FS is not set
 CONFIG_INOTIFY=y
+CONFIG_INOTIFY_USER=y
 # CONFIG_QUOTA is not set
 CONFIG_DNOTIFY=y
 CONFIG_AUTOFS_FS=y
@@ -1318,7 +1408,6 @@ CONFIG_TMPFS=y
 CONFIG_TMPFS=y
 # CONFIG_HUGETLB_PAGE is not set
 CONFIG_RAMFS=y
-# CONFIG_RELAYFS_FS is not set
 # CONFIG_CONFIGFS_FS is not set
 
 #
@@ -1364,7 +1453,9 @@ CONFIG_SMB_NLS_REMOTE="cp437"
 CONFIG_SMB_NLS_REMOTE="cp437"
 CONFIG_CIFS=y
 # CONFIG_CIFS_STATS is not set
+# CONFIG_CIFS_WEAK_PW_HASH is not set
 # CONFIG_CIFS_XATTR is not set
+# CONFIG_CIFS_DEBUG2 is not set
 # CONFIG_CIFS_EXPERIMENTAL is not set
 # CONFIG_NCP_FS is not set
 # CONFIG_CODA_FS is not set
@@ -1443,9 +1534,11 @@ CONFIG_NLS_UTF8=y
 # CONFIG_CRC16 is not set
 CONFIG_CRC32=y
 # CONFIG_LIBCRC32C is not set
+CONFIG_PLIST=y
 CONFIG_GENERIC_HARDIRQS=y
 CONFIG_GENERIC_IRQ_PROBE=y
 CONFIG_GENERIC_PENDING_IRQ=y
+CONFIG_IRQ_PER_CPU=y
 
 #
 # Instrumentation Support
@@ -1458,14 +1551,19 @@ CONFIG_GENERIC_PENDING_IRQ=y
 #
 # CONFIG_PRINTK_TIME is not set
 CONFIG_MAGIC_SYSRQ=y
+CONFIG_UNUSED_SYMBOLS=y
 CONFIG_DEBUG_KERNEL=y
 CONFIG_LOG_BUF_SHIFT=20
 CONFIG_DETECT_SOFTLOCKUP=y
 # CONFIG_SCHEDSTATS is not set
 # CONFIG_DEBUG_SLAB is not set
+# CONFIG_DEBUG_RT_MUTEXES is not set
+# CONFIG_RT_MUTEX_TESTER is not set
+# CONFIG_DEBUG_SPINLOCK is not set
 CONFIG_DEBUG_MUTEXES=y
-# CONFIG_DEBUG_SPINLOCK is not set
+# CONFIG_DEBUG_RWSEMS is not set
 # CONFIG_DEBUG_SPINLOCK_SLEEP is not set
+# CONFIG_DEBUG_LOCKING_API_SELFTESTS is not set
 # CONFIG_DEBUG_KOBJECT is not set
 # CONFIG_DEBUG_INFO is not set
 # CONFIG_DEBUG_FS is not set
@@ -1519,7 +1617,6 @@ CONFIG_CRYPTO_DES=y
 #
 # CONFIG_XEN_UTIL is not set
 CONFIG_XEN_BALLOON=y
-# CONFIG_XEN_DEVMEM is not set
 CONFIG_XEN_REBOOT=y
 # CONFIG_XEN_SMPBOOT is not set
 CONFIG_XEN_INTERFACE_VERSION=0x00030203
@@ -1555,3 +1652,4 @@ CONFIG_XEN_COMPAT_030002=y
 CONFIG_XEN_COMPAT_030002=y
 CONFIG_HAVE_IRQ_IGNORE_UNHANDLED=y
 CONFIG_NO_IDLE_HZ=y
+CONFIG_XEN_DEVMEM=y
diff -r 9fe6fe88a6a1 -r 736f2d6d7b09 docs/misc/dump-core-format.txt
--- /dev/null   Thu Jan 01 00:00:00 1970 +0000
+++ b/docs/misc/dump-core-format.txt    Fri Mar 02 18:05:38 2007 -0600
@@ -0,0 +1,225 @@
+xen dump-core format
+               Written by Isaku Yamahata <yamahata at valinux co jp>  Feb. 2007
+
+
+Introduction
+------------
+With xm dump-core command, the guest domain's core can be created as a file.
+Its format was changed to be based on ELF format because elf format is easily
+extensible and handy. This document describes the new format.
+In this document the new format is called new xen dump-core format,
+xen dump-core format or simply dump-core format. The file of xen dump-core
+format is called xen dump-core file or dump-core file.
+
+The usual process core file includes program headers and no section header.
+On the other hand the xen dump-core file includes no program headers and
+some sections because of its peculiar requirements.
+
+
+Reference
+---------
+For ELF format itself, see Tool Interface Standard(TIS) Executable and
+Linking Format(ELF) Specification version 1.2.
+For xen related structure, please see the xen header files.
+
+
+Elf header
+----------
+The elf header members are set as follows
+        e_ident[EI_OSABI] = ELFOSABI_SYSV = 0
+        e_type = ET_CORE = 4
+e_ident[EI_CLASS], e_ident[EI_DATA] and e_flags are set according
+to an architecture which a file is created. Other members are set as usual.
+
+
+Sections
+--------
+Currently the following sections are defined. Some sections are optional.
+
+".note.Xen" section
+        name            ".note.Xen"
+        type            SHT_NOTE
+        description
+                This section is used as note section to store xen dump-core
+                file specific informations. The each detailed informations are
+                described in note section. This section must exist.
+
+".xen_prstatus" section
+        name            ".xen_prstatus"
+        type            SHT_PROGBITS
+        structure       array of vcpu_guest_context_t
+        description
+                This section stores the array of vcpu_guest_context_t
+                which is obtained by XEN_DOMCTL_getvcpucontext hypercall
+                when the xen dump-core file is created.
+                The size of array is stored in xch_nr_vcpus member of header
+                note descriptor in .note.Xen note section.
+                This section must exist.
+
+".xen_shared_info" section
+        name            ".xen_shared_info"
+        type            SHT_PROGBITS
+        structure       shared_info_t
+        description
+                This section stores the contents of shared info page
+                of a domain. This section is optional. 
+
+".xen_p2m" section
+        name            ".xen_p2m"
+        type            SHT_PROGBITS
+        structure       array of struct xen_dumpcore_p2m
+                        struct xen_dumpcore_p2m {
+                            uint64_t    pfn;
+                            uint64_t    gmfn;
+                        };
+        description
+                This elements represents the frame number of the page
+                in .xen_pages section.
+                        pfn:    guest-specific pseudo-physical frame number
+                        gmfn:   machine physical frame number
+                The size of arrays is stored in xch_nr_pages member of header
+                note descriptor in .note.Xen note section.
+                There is no rule about the order. Analysis tools must no rely
+                on its order.
+                This section must exist when the domain is non auto
+                translated physmap mode. Currently x86 paravirtualized domain.
+
+".xen_pfn" section
+        name            ".xen_pfn"
+        type            SHT_PROGBITS
+        structure       array of uint64_t
+        description
+                This elements represents the frame number of the page
+                in .xen_pages section.
+                The size of arrays is stored in xch_nr_pages member of header
+                note descriptor in .note.Xen note section.
+                There is no rule about the order. Analysis tools must no rely
+                on its order.
+                This section must exist when the domain is auto translated
+                physmap mode. Currently x86 full virtualized domain and
+                ia64 domain.
+
+".xen_pages" section
+        name            ".xen_pages"
+        type            SHT_PROGBITS
+        structure       array of page where page is page size byte array
+        description
+                This section includes the contents of pages.
+                The corresponding address is described in .xen_p2m section
+                or .xen_pfn section.
+                The page size is stored in xch_page_size member of header note
+                descriptor in .note.Xen section.
+                The array size is stored in xch_nr_pages member of header note
+                descriptor in .note.Xen section.
+                This section must exist.
+
+
+".xen_ia64_mapped_regs" section
+        name            ".xen_ia64_mapped_regs"
+        type            SHT_PROGBITS
+        structure       array of mapped_regs_t
+        description
+                This section stores the array of mapped_regs_t.
+                The size of array is stored in xch_nr_vcpus member of header
+                note descriptor in .note.Xen note section.
+                This section is ia64 specific and must exist for ia64 domain.
+                This section must not exist for non-ia64 domain.
+
+
+note section
+------------
+The note types are defined in xen/include/public/elfnote.h.
+The note descriptors are defined in tools/libxc/xc_core.h
+Currently the following note informations are defined.
+
+
+elf note section
+
+"Xen" is used as elf note name in elf note info
+        namesz  4
+        name    "Xen" (null-terminated)
+
+
+Descriptors
+
+none note descriptor
+        type            XEN_ELFNOTE_DUMPCORE_NONE = 0x2000000
+        structure       struct xen_dumpcore_elfnote_none_desc {
+                               /* nothing is defined */
+                        };
+        description
+                This note descriptor is defined to just indicate that this
+                file is xen dump-core format without any specific information.
+                This note information must exist.
+
+header note descriptor
+        type            XEN_ELFNOTE_DUMPCORE_HEADER = 0x2000001
+        structure       struct xen_dumpcore_elfnote_header_desc {
+                                uint64_t    xch_magic;
+                                uint64_t    xch_nr_vcpus;
+                                uint64_t    xch_nr_pages;
+                                uint64_t    xch_page_size;
+                        };
+        description
+                This note descriptor stores basic information of the domain.
+                xch_magic       magic number
+                    XC_CORE_MAGIC = 0xF00FEBED for paravirtualized domain
+                    XC_CORE_MAGIC_HVM = 0xF00FEBEE for full virtualized domain
+                xch_nr_vcpus    the number of vcpus
+                xch_nr_pages    the number of pages
+                xch_page_size   guest OS's page size
+                This note information must exist.
+
+xen_version descriptor
+        type            XEN_ELFNOTE_DUMPCORE_XEN_VERSION = 0x2000002
+        structure       struct xen_dumpcore_elfnote_xen_version_desc {
+                                uint64_t                    major_version;
+                                uint64_t                    minor_version;
+                                xen_extraversion_t          extra_version;
+                                xen_compile_info_t          compile_info;
+                                xen_capabilities_info_t     capabilities;
+                                xen_changeset_info_t        changeset;
+                                xen_platform_parameters_t   
platform_parameters;
+                                uint64_t                    pagesize;
+                        };
+        description
+                This note descriptor stores basic information about xen
+                hypervisor. The each members store the result of
+                __HYPERVISOR_xen_version hypercall.
+                major_version   16msb bit of the result of XENVER_version
+                minor_version   16lsb bit of the result of XENVER_version
+                        uint64_t is used to make struct
+                        xen_dumpcore_elfnote_xen_version_desc independent
+                        on 32bit/64bit instead of uint32_t.
+                extra_version   the result of XENVER_extraversion
+                compile_info    the result of XENVER_compile_info
+                capabilities    the result of XENVER_capabilities
+                changeset       the result of XENVER_changeset
+                platform_parameters
+                                the result of XENVER_platform_parameters
+                pagesize        the result of XENVER_pagesize
+                This note information must exist.
+
+format_version descriptor
+        type            XEN_ELFNOTE_DUMPCORE_FORMAT_VERSION = 0x2000003
+        structure       struct xen_dumpcore_elfnote_format_version_desc {
+                                uint64_t    version;
+                        };
+        description
+                This note descriptor stores xen dump-core format version.
+                The 32msb bit is major version and the 32lsb bit is minor
+                version. 
+                The minor version will be incremented when the format
+                is changed in compatible way. e.g. new sections, new note
+                descriptors are added.
+                the major version will be incremented when the format is
+                changed in incompatible way.
+                This note information must exit. Analysis tools should check
+                this format version.
+                This note information must exist.
+
+
+Format version history
+----------------------
+The currently only (major, minor) = (0, 1) is used.
+[When the format is changed, it would be described here.]
diff -r 9fe6fe88a6a1 -r 736f2d6d7b09 docs/xen-api/xenapi-datamodel.tex
--- a/docs/xen-api/xenapi-datamodel.tex Fri Mar 02 17:08:04 2007 -0600
+++ b/docs/xen-api/xenapi-datamodel.tex Fri Mar 02 18:05:38 2007 -0600
@@ -26,16 +26,19 @@ Name & Description \\
 {\tt task} & A long-running asynchronous task \\
 {\tt VM} & A virtual machine (or 'guest') \\
 {\tt VM\_metrics} & The metrics associated with a VM \\
+{\tt VM\_guest\_metrics} & The metrics reported by the guest (as opposed to 
inferred from outside) \\
 {\tt host} & A physical host \\
 {\tt host\_metrics} & The metrics associated with a host \\
 {\tt host\_cpu} & A physical CPU \\
 {\tt network} & A virtual network \\
 {\tt VIF} & A virtual network interface \\
+{\tt VIF\_metrics} & The metrics associated with a virtual network device \\
 {\tt PIF} & A physical network interface (note separate VLANs are represented 
as several PIFs) \\
 {\tt PIF\_metrics} & The metrics associated with a physical network interface 
\\
 {\tt SR} & A storage repository \\
 {\tt VDI} & A virtual disk image \\
 {\tt VBD} & A virtual block device \\
+{\tt VBD\_metrics} & The metrics associated with a virtual block device \\
 {\tt PBD} & The physical block devices through which hosts access SRs \\
 {\tt crashdump} & A VM crashdump \\
 {\tt VTPM} & A virtual TPM device \\
@@ -59,9 +62,6 @@ crashdump.VM & VM.crash\_dumps & one-to-
 crashdump.VM & VM.crash\_dumps & one-to-many\\
 VIF.VM & VM.VIFs & one-to-many\\
 VIF.network & network.VIFs & one-to-many\\
-host.metrics & host\_metrics.host & one-to-one\\
-PIF.metrics & PIF\_metrics.PIF & one-to-one\\
-VM.metrics & VM\_metrics.VM & one-to-one\\
 PIF.host & host.PIFs & one-to-many\\
 PIF.network & network.PIFs & one-to-many\\
 SR.VDIs & VDI.SR & many-to-one\\
@@ -1076,8 +1076,6 @@ Quals & Field & Type & Description \\
 $\mathit{RW}$ &  {\tt VCPUs/params} & (string $\rightarrow$ string) Map & 
configuration parameters for the selected VCPU policy \\
 $\mathit{RW}$ &  {\tt VCPUs/max} & int & Max number of VCPUs \\
 $\mathit{RW}$ &  {\tt VCPUs/at\_startup} & int & Boot number of VCPUs \\
-$\mathit{RO}_\mathit{ins}$ &  {\tt VCPUs/number} & int & Current number of 
VCPUs \\
-$\mathit{RO}_\mathit{run}$ &  {\tt VCPUs/utilisation} & (int $\rightarrow$ 
float) Map & Utilisation for all of guest's current VCPUs \\
 $\mathit{RW}$ &  {\tt actions/after\_shutdown} & on\_normal\_exit & action to 
take after the guest has shutdown itself \\
 $\mathit{RW}$ &  {\tt actions/after\_reboot} & on\_normal\_exit & action to 
take after the guest has rebooted itself \\
 $\mathit{RW}$ &  {\tt actions/after\_crash} & on\_crash\_behaviour & action to 
take if the guest crashes \\
@@ -1099,10 +1097,11 @@ Quals & Field & Type & Description \\
 $\mathit{RW}$ &  {\tt platform/clock\_offset} & bool & timeshift applied to 
guest's clock \\
 $\mathit{RW}$ &  {\tt platform/enable\_audio} & bool & emulate audio \\
 $\mathit{RO}_\mathit{ins}$ &  {\tt PCI\_bus} & string & PCI bus path for 
pass-through devices \\
-$\mathit{RO}_\mathit{run}$ &  {\tt tools\_version} & (string $\rightarrow$ 
string) Map & versions of installed paravirtualised drivers \\
 $\mathit{RW}$ &  {\tt other\_config} & (string $\rightarrow$ string) Map & 
additional configuration \\
+$\mathit{RO}_\mathit{run}$ &  {\tt domid} & int & domain ID (if available, -1 
otherwise) \\
 $\mathit{RO}_\mathit{run}$ &  {\tt is\_control\_domain} & bool & true if this 
is a control domain (domain 0 or a driver domain) \\
-$\mathit{RO}_\mathit{ins}$ &  {\tt metrics} & VM\_metrics ref & metrics 
associated with this VM. \\
+$\mathit{RO}_\mathit{run}$ &  {\tt metrics} & VM\_metrics ref & metrics 
associated with this VM. \\
+$\mathit{RO}_\mathit{run}$ &  {\tt guest\_metrics} & VM\_guest\_metrics ref & 
metrics associated with the running guest \\
 \hline
 \end{longtable}
 \subsection{Additional RPCs associated with class: VM}
@@ -2548,70 +2547,6 @@ void
 \vspace{0.3cm}
 \vspace{0.3cm}
 \vspace{0.3cm}
-\subsubsection{RPC name:~get\_VCPUs\_number}
-
-{\bf Overview:} 
-Get the VCPUs/number field of the given VM.
-
- \noindent {\bf Signature:} 
-\begin{verbatim} int get_VCPUs_number (session_id s, VM ref self)\end{verbatim}
-
-
-\noindent{\bf Arguments:}
-
- 
-\vspace{0.3cm}
-\begin{tabular}{|c|c|p{7cm}|}
- \hline
-{\bf type} & {\bf name} & {\bf description} \\ \hline
-{\tt VM ref } & self & reference to the object \\ \hline 
-
-\end{tabular}
-
-\vspace{0.3cm}
-
- \noindent {\bf Return Type:} 
-{\tt 
-int
-}
-
-
-value of the field
-\vspace{0.3cm}
-\vspace{0.3cm}
-\vspace{0.3cm}
-\subsubsection{RPC name:~get\_VCPUs\_utilisation}
-
-{\bf Overview:} 
-Get the VCPUs/utilisation field of the given VM.
-
- \noindent {\bf Signature:} 
-\begin{verbatim} ((int -> float) Map) get_VCPUs_utilisation (session_id s, VM 
ref self)\end{verbatim}
-
-
-\noindent{\bf Arguments:}
-
- 
-\vspace{0.3cm}
-\begin{tabular}{|c|c|p{7cm}|}
- \hline
-{\bf type} & {\bf name} & {\bf description} \\ \hline
-{\tt VM ref } & self & reference to the object \\ \hline 
-
-\end{tabular}
-
-\vspace{0.3cm}
-
- \noindent {\bf Return Type:} 
-{\tt 
-(int $\rightarrow$ float) Map
-}
-
-
-value of the field
-\vspace{0.3cm}
-\vspace{0.3cm}
-\vspace{0.3cm}
 \subsubsection{RPC name:~get\_actions\_after\_shutdown}
 
 {\bf Overview:} 
@@ -3865,38 +3800,6 @@ value of the field
 \vspace{0.3cm}
 \vspace{0.3cm}
 \vspace{0.3cm}
-\subsubsection{RPC name:~get\_tools\_version}
-
-{\bf Overview:} 
-Get the tools\_version field of the given VM.
-
- \noindent {\bf Signature:} 
-\begin{verbatim} ((string -> string) Map) get_tools_version (session_id s, VM 
ref self)\end{verbatim}
-
-
-\noindent{\bf Arguments:}
-
- 
-\vspace{0.3cm}
-\begin{tabular}{|c|c|p{7cm}|}
- \hline
-{\bf type} & {\bf name} & {\bf description} \\ \hline
-{\tt VM ref } & self & reference to the object \\ \hline 
-
-\end{tabular}
-
-\vspace{0.3cm}
-
- \noindent {\bf Return Type:} 
-{\tt 
-(string $\rightarrow$ string) Map
-}
-
-
-value of the field
-\vspace{0.3cm}
-\vspace{0.3cm}
-\vspace{0.3cm}
 \subsubsection{RPC name:~get\_other\_config}
 
 {\bf Overview:} 
@@ -4034,6 +3937,38 @@ void
 \vspace{0.3cm}
 \vspace{0.3cm}
 \vspace{0.3cm}
+\subsubsection{RPC name:~get\_domid}
+
+{\bf Overview:} 
+Get the domid field of the given VM.
+
+ \noindent {\bf Signature:} 
+\begin{verbatim} int get_domid (session_id s, VM ref self)\end{verbatim}
+
+
+\noindent{\bf Arguments:}
+
+ 
+\vspace{0.3cm}
+\begin{tabular}{|c|c|p{7cm}|}
+ \hline
+{\bf type} & {\bf name} & {\bf description} \\ \hline
+{\tt VM ref } & self & reference to the object \\ \hline 
+
+\end{tabular}
+
+\vspace{0.3cm}
+
+ \noindent {\bf Return Type:} 
+{\tt 
+int
+}
+
+
+value of the field
+\vspace{0.3cm}
+\vspace{0.3cm}
+\vspace{0.3cm}
 \subsubsection{RPC name:~get\_is\_control\_domain}
 
 {\bf Overview:} 
@@ -4091,6 +4026,38 @@ Get the metrics field of the given VM.
  \noindent {\bf Return Type:} 
 {\tt 
 VM\_metrics ref
+}
+
+
+value of the field
+\vspace{0.3cm}
+\vspace{0.3cm}
+\vspace{0.3cm}
+\subsubsection{RPC name:~get\_guest\_metrics}
+
+{\bf Overview:} 
+Get the guest\_metrics field of the given VM.
+
+ \noindent {\bf Signature:} 
+\begin{verbatim} (VM_guest_metrics ref) get_guest_metrics (session_id s, VM 
ref self)\end{verbatim}
+
+
+\noindent{\bf Arguments:}
+
+ 
+\vspace{0.3cm}
+\begin{tabular}{|c|c|p{7cm}|}
+ \hline
+{\bf type} & {\bf name} & {\bf description} \\ \hline
+{\tt VM ref } & self & reference to the object \\ \hline 
+
+\end{tabular}
+
+\vspace{0.3cm}
+
+ \noindent {\bf Return Type:} 
+{\tt 
+VM\_guest\_metrics ref
 }
 
 
@@ -4273,13 +4240,33 @@ Quals & Field & Type & Description \\
 Quals & Field & Type & Description \\
 \hline
 $\mathit{RO}_\mathit{run}$ &  {\tt uuid} & string & unique identifier/object 
reference \\
-$\mathit{RO}_\mathit{ins}$ &  {\tt VM} & VM ref & VM to which these metrics 
apply \\
 $\mathit{RO}_\mathit{run}$ &  {\tt memory/actual} & int & Guest's actual 
memory (bytes) \\
 $\mathit{RO}_\mathit{run}$ &  {\tt VCPUs/number} & int & Current number of 
VCPUs \\
 $\mathit{RO}_\mathit{run}$ &  {\tt VCPUs/utilisation} & (int $\rightarrow$ 
float) Map & Utilisation for all of guest's current VCPUs \\
 \hline
 \end{longtable}
 \subsection{Additional RPCs associated with class: VM\_metrics}
+\subsubsection{RPC name:~get\_all}
+
+{\bf Overview:} 
+Return a list of all the VM\_metrics instances known to the system.
+
+ \noindent {\bf Signature:} 
+\begin{verbatim} ((VM_metrics ref) Set) get_all (session_id s)\end{verbatim}
+
+
+\vspace{0.3cm}
+
+ \noindent {\bf Return Type:} 
+{\tt 
+(VM\_metrics ref) Set
+}
+
+
+references to all objects
+\vspace{0.3cm}
+\vspace{0.3cm}
+\vspace{0.3cm}
 \subsubsection{RPC name:~get\_uuid}
 
 {\bf Overview:} 
@@ -4312,13 +4299,13 @@ value of the field
 \vspace{0.3cm}
 \vspace{0.3cm}
 \vspace{0.3cm}
-\subsubsection{RPC name:~get\_VM}
-
-{\bf Overview:} 
-Get the VM field of the given VM\_metrics.
-
- \noindent {\bf Signature:} 
-\begin{verbatim} (VM ref) get_VM (session_id s, VM_metrics ref 
self)\end{verbatim}
+\subsubsection{RPC name:~get\_memory\_actual}
+
+{\bf Overview:} 
+Get the memory/actual field of the given VM\_metrics.
+
+ \noindent {\bf Signature:} 
+\begin{verbatim} int get_memory_actual (session_id s, VM_metrics ref 
self)\end{verbatim}
 
 
 \noindent{\bf Arguments:}
@@ -4336,21 +4323,21 @@ Get the VM field of the given VM\_metric
 
  \noindent {\bf Return Type:} 
 {\tt 
-VM ref
-}
-
-
-value of the field
-\vspace{0.3cm}
-\vspace{0.3cm}
-\vspace{0.3cm}
-\subsubsection{RPC name:~get\_memory\_actual}
-
-{\bf Overview:} 
-Get the memory/actual field of the given VM\_metrics.
-
- \noindent {\bf Signature:} 
-\begin{verbatim} int get_memory_actual (session_id s, VM_metrics ref 
self)\end{verbatim}
+int
+}
+
+
+value of the field
+\vspace{0.3cm}
+\vspace{0.3cm}
+\vspace{0.3cm}
+\subsubsection{RPC name:~get\_VCPUs\_number}
+
+{\bf Overview:} 
+Get the VCPUs/number field of the given VM\_metrics.
+
+ \noindent {\bf Signature:} 
+\begin{verbatim} int get_VCPUs_number (session_id s, VM_metrics ref 
self)\end{verbatim}
 
 
 \noindent{\bf Arguments:}
@@ -4376,13 +4363,13 @@ value of the field
 \vspace{0.3cm}
 \vspace{0.3cm}
 \vspace{0.3cm}
-\subsubsection{RPC name:~get\_VCPUs\_number}
-
-{\bf Overview:} 
-Get the VCPUs/number field of the given VM\_metrics.
-
- \noindent {\bf Signature:} 
-\begin{verbatim} int get_VCPUs_number (session_id s, VM_metrics ref 
self)\end{verbatim}
+\subsubsection{RPC name:~get\_VCPUs\_utilisation}
+
+{\bf Overview:} 
+Get the VCPUs/utilisation field of the given VM\_metrics.
+
+ \noindent {\bf Signature:} 
+\begin{verbatim} ((int -> float) Map) get_VCPUs_utilisation (session_id s, 
VM_metrics ref self)\end{verbatim}
 
 
 \noindent{\bf Arguments:}
@@ -4400,21 +4387,53 @@ Get the VCPUs/number field of the given 
 
  \noindent {\bf Return Type:} 
 {\tt 
-int
-}
-
-
-value of the field
-\vspace{0.3cm}
-\vspace{0.3cm}
-\vspace{0.3cm}
-\subsubsection{RPC name:~get\_VCPUs\_utilisation}
-
-{\bf Overview:} 
-Get the VCPUs/utilisation field of the given VM\_metrics.
-
- \noindent {\bf Signature:} 
-\begin{verbatim} ((int -> float) Map) get_VCPUs_utilisation (session_id s, 
VM_metrics ref self)\end{verbatim}
+(int $\rightarrow$ float) Map
+}
+
+
+value of the field
+\vspace{0.3cm}
+\vspace{0.3cm}
+\vspace{0.3cm}
+\subsubsection{RPC name:~get\_by\_uuid}
+
+{\bf Overview:} 
+Get a reference to the VM\_metrics instance with the specified UUID.
+
+ \noindent {\bf Signature:} 
+\begin{verbatim} (VM_metrics ref) get_by_uuid (session_id s, string 
uuid)\end{verbatim}
+
+
+\noindent{\bf Arguments:}
+
+ 
+\vspace{0.3cm}
+\begin{tabular}{|c|c|p{7cm}|}
+ \hline
+{\bf type} & {\bf name} & {\bf description} \\ \hline
+{\tt string } & uuid & UUID of object to return \\ \hline 
+
+\end{tabular}
+
+\vspace{0.3cm}
+
+ \noindent {\bf Return Type:} 
+{\tt 
+VM\_metrics ref
+}
+
+
+reference to the object
+\vspace{0.3cm}
+\vspace{0.3cm}
+\vspace{0.3cm}
+\subsubsection{RPC name:~get\_record}
+
+{\bf Overview:} 
+Get a record containing the current state of the given VM\_metrics.
+
+ \noindent {\bf Signature:} 
+\begin{verbatim} (VM_metrics record) get_record (session_id s, VM_metrics ref 
self)\end{verbatim}
 
 
 \noindent{\bf Arguments:}
@@ -4432,7 +4451,275 @@ Get the VCPUs/utilisation field of the g
 
  \noindent {\bf Return Type:} 
 {\tt 
-(int $\rightarrow$ float) Map
+VM\_metrics record
+}
+
+
+all fields from the object
+\vspace{0.3cm}
+\vspace{0.3cm}
+\vspace{0.3cm}
+
+\vspace{1cm}
+\newpage
+\section{Class: VM\_guest\_metrics}
+\subsection{Fields for class: VM\_guest\_metrics}
+\begin{longtable}{|lllp{0.38\textwidth}|}
+\hline
+\multicolumn{1}{|l}{Name} & \multicolumn{3}{l|}{\bf VM\_guest\_metrics} \\
+\multicolumn{1}{|l}{Description} & \multicolumn{3}{l|}{\parbox{11cm}{\em
+The metrics reported by the guest (as opposed to inferred from outside).}} \\
+\hline
+Quals & Field & Type & Description \\
+\hline
+$\mathit{RO}_\mathit{run}$ &  {\tt uuid} & string & unique identifier/object 
reference \\
+$\mathit{RO}_\mathit{run}$ &  {\tt os\_version} & (string $\rightarrow$ 
string) Map & version of the OS \\
+$\mathit{RO}_\mathit{run}$ &  {\tt PV\_drivers\_version} & (string 
$\rightarrow$ string) Map & version of the PV drivers \\
+$\mathit{RO}_\mathit{run}$ &  {\tt memory} & (string $\rightarrow$ string) Map 
& free/used/total memory \\
+$\mathit{RO}_\mathit{run}$ &  {\tt disks} & (string $\rightarrow$ string) Map 
& disk configuration/free space \\
+$\mathit{RO}_\mathit{run}$ &  {\tt networks} & (string $\rightarrow$ string) 
Map & network configuration \\
+$\mathit{RO}_\mathit{run}$ &  {\tt other} & (string $\rightarrow$ string) Map 
& anything else \\
+\hline
+\end{longtable}
+\subsection{Additional RPCs associated with class: VM\_guest\_metrics}
+\subsubsection{RPC name:~get\_all}
+
+{\bf Overview:} 
+Return a list of all the VM\_guest\_metrics instances known to the system.
+
+ \noindent {\bf Signature:} 
+\begin{verbatim} ((VM_guest_metrics ref) Set) get_all (session_id 
s)\end{verbatim}
+
+
+\vspace{0.3cm}
+
+ \noindent {\bf Return Type:} 
+{\tt 
+(VM\_guest\_metrics ref) Set
+}
+
+
+references to all objects
+\vspace{0.3cm}
+\vspace{0.3cm}
+\vspace{0.3cm}
+\subsubsection{RPC name:~get\_uuid}
+
+{\bf Overview:} 
+Get the uuid field of the given VM\_guest\_metrics.
+
+ \noindent {\bf Signature:} 
+\begin{verbatim} string get_uuid (session_id s, VM_guest_metrics ref 
self)\end{verbatim}
+
+
+\noindent{\bf Arguments:}
+
+ 
+\vspace{0.3cm}
+\begin{tabular}{|c|c|p{7cm}|}
+ \hline
+{\bf type} & {\bf name} & {\bf description} \\ \hline
+{\tt VM\_guest\_metrics ref } & self & reference to the object \\ \hline 
+
+\end{tabular}
+
+\vspace{0.3cm}
+
+ \noindent {\bf Return Type:} 
+{\tt 
+string
+}
+
+
+value of the field
+\vspace{0.3cm}
+\vspace{0.3cm}
+\vspace{0.3cm}
+\subsubsection{RPC name:~get\_os\_version}
+
+{\bf Overview:} 
+Get the os\_version field of the given VM\_guest\_metrics.
+
+ \noindent {\bf Signature:} 
+\begin{verbatim} ((string -> string) Map) get_os_version (session_id s, 
VM_guest_metrics ref self)\end{verbatim}
+
+
+\noindent{\bf Arguments:}
+
+ 
+\vspace{0.3cm}
+\begin{tabular}{|c|c|p{7cm}|}
+ \hline
+{\bf type} & {\bf name} & {\bf description} \\ \hline
+{\tt VM\_guest\_metrics ref } & self & reference to the object \\ \hline 
+
+\end{tabular}
+
+\vspace{0.3cm}
+
+ \noindent {\bf Return Type:} 
+{\tt 
+(string $\rightarrow$ string) Map
+}
+
+
+value of the field
+\vspace{0.3cm}
+\vspace{0.3cm}
+\vspace{0.3cm}
+\subsubsection{RPC name:~get\_PV\_drivers\_version}
+
+{\bf Overview:} 
+Get the PV\_drivers\_version field of the given VM\_guest\_metrics.
+
+ \noindent {\bf Signature:} 
+\begin{verbatim} ((string -> string) Map) get_PV_drivers_version (session_id 
s, VM_guest_metrics ref self)\end{verbatim}
+
+
+\noindent{\bf Arguments:}
+
+ 
+\vspace{0.3cm}
+\begin{tabular}{|c|c|p{7cm}|}
+ \hline
+{\bf type} & {\bf name} & {\bf description} \\ \hline
+{\tt VM\_guest\_metrics ref } & self & reference to the object \\ \hline 
+
+\end{tabular}
+
+\vspace{0.3cm}
+
+ \noindent {\bf Return Type:} 
+{\tt 
+(string $\rightarrow$ string) Map
+}
+
+
+value of the field
+\vspace{0.3cm}
+\vspace{0.3cm}
+\vspace{0.3cm}
+\subsubsection{RPC name:~get\_memory}
+
+{\bf Overview:} 
+Get the memory field of the given VM\_guest\_metrics.
+
+ \noindent {\bf Signature:} 
+\begin{verbatim} ((string -> string) Map) get_memory (session_id s, 
VM_guest_metrics ref self)\end{verbatim}
+
+
+\noindent{\bf Arguments:}
+
+ 
+\vspace{0.3cm}
+\begin{tabular}{|c|c|p{7cm}|}
+ \hline
+{\bf type} & {\bf name} & {\bf description} \\ \hline
+{\tt VM\_guest\_metrics ref } & self & reference to the object \\ \hline 
+
+\end{tabular}
+
+\vspace{0.3cm}
+
+ \noindent {\bf Return Type:} 
+{\tt 
+(string $\rightarrow$ string) Map
+}
+
+
+value of the field
+\vspace{0.3cm}
+\vspace{0.3cm}
+\vspace{0.3cm}
+\subsubsection{RPC name:~get\_disks}
+
+{\bf Overview:} 
+Get the disks field of the given VM\_guest\_metrics.
+
+ \noindent {\bf Signature:} 
+\begin{verbatim} ((string -> string) Map) get_disks (session_id s, 
VM_guest_metrics ref self)\end{verbatim}
+
+
+\noindent{\bf Arguments:}
+
+ 
+\vspace{0.3cm}
+\begin{tabular}{|c|c|p{7cm}|}
+ \hline
+{\bf type} & {\bf name} & {\bf description} \\ \hline
+{\tt VM\_guest\_metrics ref } & self & reference to the object \\ \hline 
+
+\end{tabular}
+
+\vspace{0.3cm}
+
+ \noindent {\bf Return Type:} 
+{\tt 
+(string $\rightarrow$ string) Map
+}
+
+
+value of the field
+\vspace{0.3cm}
+\vspace{0.3cm}
+\vspace{0.3cm}
+\subsubsection{RPC name:~get\_networks}
+
+{\bf Overview:} 
+Get the networks field of the given VM\_guest\_metrics.
+
+ \noindent {\bf Signature:} 
+\begin{verbatim} ((string -> string) Map) get_networks (session_id s, 
VM_guest_metrics ref self)\end{verbatim}
+
+
+\noindent{\bf Arguments:}
+
+ 
+\vspace{0.3cm}
+\begin{tabular}{|c|c|p{7cm}|}
+ \hline
+{\bf type} & {\bf name} & {\bf description} \\ \hline
+{\tt VM\_guest\_metrics ref } & self & reference to the object \\ \hline 
+
+\end{tabular}
+
+\vspace{0.3cm}
+
+ \noindent {\bf Return Type:} 
+{\tt 
+(string $\rightarrow$ string) Map
+}
+
+
+value of the field
+\vspace{0.3cm}
+\vspace{0.3cm}
+\vspace{0.3cm}
+\subsubsection{RPC name:~get\_other}
+
+{\bf Overview:} 
+Get the other field of the given VM\_guest\_metrics.
+
+ \noindent {\bf Signature:} 
+\begin{verbatim} ((string -> string) Map) get_other (session_id s, 
VM_guest_metrics ref self)\end{verbatim}
+
+
+\noindent{\bf Arguments:}
+
+ 
+\vspace{0.3cm}
+\begin{tabular}{|c|c|p{7cm}|}
+ \hline
+{\bf type} & {\bf name} & {\bf description} \\ \hline
+{\tt VM\_guest\_metrics ref } & self & reference to the object \\ \hline 
+
+\end{tabular}
+
+\vspace{0.3cm}
+
+ \noindent {\bf Return Type:} 
+{\tt 
+(string $\rightarrow$ string) Map
 }
 
 
@@ -4443,10 +4730,10 @@ value of the field
 \subsubsection{RPC name:~get\_by\_uuid}
 
 {\bf Overview:} 
-Get a reference to the VM\_metrics instance with the specified UUID.
-
- \noindent {\bf Signature:} 
-\begin{verbatim} (VM_metrics ref) get_by_uuid (session_id s, string 
uuid)\end{verbatim}
+Get a reference to the VM\_guest\_metrics instance with the specified UUID.
+
+ \noindent {\bf Signature:} 
+\begin{verbatim} (VM_guest_metrics ref) get_by_uuid (session_id s, string 
uuid)\end{verbatim}
 
 
 \noindent{\bf Arguments:}
@@ -4464,7 +4751,7 @@ Get a reference to the VM\_metrics insta
 
  \noindent {\bf Return Type:} 
 {\tt 
-VM\_metrics ref
+VM\_guest\_metrics ref
 }
 
 
@@ -4475,28 +4762,28 @@ reference to the object
 \subsubsection{RPC name:~get\_record}
 
 {\bf Overview:} 
-Get a record containing the current state of the given VM\_metrics.
-
- \noindent {\bf Signature:} 
-\begin{verbatim} (VM_metrics record) get_record (session_id s, VM_metrics ref 
self)\end{verbatim}
-
-
-\noindent{\bf Arguments:}
-
- 
-\vspace{0.3cm}
-\begin{tabular}{|c|c|p{7cm}|}
- \hline
-{\bf type} & {\bf name} & {\bf description} \\ \hline
-{\tt VM\_metrics ref } & self & reference to the object \\ \hline 
-
-\end{tabular}
-
-\vspace{0.3cm}
-
- \noindent {\bf Return Type:} 
-{\tt 
-VM\_metrics record
+Get a record containing the current state of the given VM\_guest\_metrics.
+
+ \noindent {\bf Signature:} 
+\begin{verbatim} (VM_guest_metrics record) get_record (session_id s, 
VM_guest_metrics ref self)\end{verbatim}
+
+
+\noindent{\bf Arguments:}
+
+ 
+\vspace{0.3cm}
+\begin{tabular}{|c|c|p{7cm}|}
+ \hline
+{\bf type} & {\bf name} & {\bf description} \\ \hline
+{\tt VM\_guest\_metrics ref } & self & reference to the object \\ \hline 
+
+\end{tabular}
+
+\vspace{0.3cm}
+
+ \noindent {\bf Return Type:} 
+{\tt 
+VM\_guest\_metrics record
 }
 
 
@@ -4520,8 +4807,14 @@ Quals & Field & Type & Description \\
 $\mathit{RO}_\mathit{run}$ &  {\tt uuid} & string & unique identifier/object 
reference \\
 $\mathit{RW}$ &  {\tt name/label} & string & a human-readable name \\
 $\mathit{RW}$ &  {\tt name/description} & string & a notes field containg 
human-readable description \\
+$\mathit{RO}_\mathit{run}$ &  {\tt API\_version/major} & int & major version 
number \\
+$\mathit{RO}_\mathit{run}$ &  {\tt API\_version/minor} & int & minor version 
number \\
+$\mathit{RO}_\mathit{run}$ &  {\tt API\_version/vendor} & string & 
identification of vendor \\
+$\mathit{RO}_\mathit{run}$ &  {\tt API\_version/vendor\_implementation} & 
(string $\rightarrow$ string) Map & details of vendor implementation \\
 $\mathit{RO}_\mathit{run}$ &  {\tt software\_version} & (string $\rightarrow$ 
string) Map & version strings \\
 $\mathit{RW}$ &  {\tt other\_config} & (string $\rightarrow$ string) Map & 
additional configuration \\
+$\mathit{RO}_\mathit{run}$ &  {\tt capabilities} & string Set & Xen 
capabilities \\
+$\mathit{RO}_\mathit{run}$ &  {\tt supported\_bootloaders} & string Set & a 
list of the bootloaders installed on the machine \\
 $\mathit{RO}_\mathit{run}$ &  {\tt resident\_VMs} & (VM ref) Set & list of VMs 
currently resident on host \\
 $\mathit{RW}$ &  {\tt logging} & (string $\rightarrow$ string) Map & logging 
configuration \\
 $\mathit{RO}_\mathit{run}$ &  {\tt PIFs} & (PIF ref) Set & physical network 
interfaces \\
@@ -4881,6 +5174,134 @@ void
 \vspace{0.3cm}
 \vspace{0.3cm}
 \vspace{0.3cm}
+\subsubsection{RPC name:~get\_API\_version\_major}
+
+{\bf Overview:} 
+Get the API\_version/major field of the given host.
+
+ \noindent {\bf Signature:} 
+\begin{verbatim} int get_API_version_major (session_id s, host ref 
self)\end{verbatim}
+
+
+\noindent{\bf Arguments:}
+
+ 
+\vspace{0.3cm}
+\begin{tabular}{|c|c|p{7cm}|}
+ \hline
+{\bf type} & {\bf name} & {\bf description} \\ \hline
+{\tt host ref } & self & reference to the object \\ \hline 
+
+\end{tabular}
+
+\vspace{0.3cm}
+
+ \noindent {\bf Return Type:} 
+{\tt 
+int
+}
+
+
+value of the field
+\vspace{0.3cm}
+\vspace{0.3cm}
+\vspace{0.3cm}
+\subsubsection{RPC name:~get\_API\_version\_minor}
+
+{\bf Overview:} 
+Get the API\_version/minor field of the given host.
+
+ \noindent {\bf Signature:} 
+\begin{verbatim} int get_API_version_minor (session_id s, host ref 
self)\end{verbatim}
+
+
+\noindent{\bf Arguments:}
+
+ 
+\vspace{0.3cm}
+\begin{tabular}{|c|c|p{7cm}|}
+ \hline
+{\bf type} & {\bf name} & {\bf description} \\ \hline
+{\tt host ref } & self & reference to the object \\ \hline 
+
+\end{tabular}
+
+\vspace{0.3cm}
+
+ \noindent {\bf Return Type:} 
+{\tt 
+int
+}
+
+
+value of the field
+\vspace{0.3cm}
+\vspace{0.3cm}
+\vspace{0.3cm}
+\subsubsection{RPC name:~get\_API\_version\_vendor}
+
+{\bf Overview:} 
+Get the API\_version/vendor field of the given host.
+
+ \noindent {\bf Signature:} 
+\begin{verbatim} string get_API_version_vendor (session_id s, host ref 
self)\end{verbatim}
+
+
+\noindent{\bf Arguments:}
+
+ 
+\vspace{0.3cm}
+\begin{tabular}{|c|c|p{7cm}|}
+ \hline
+{\bf type} & {\bf name} & {\bf description} \\ \hline
+{\tt host ref } & self & reference to the object \\ \hline 
+
+\end{tabular}
+
+\vspace{0.3cm}
+
+ \noindent {\bf Return Type:} 
+{\tt 
+string
+}
+
+
+value of the field
+\vspace{0.3cm}
+\vspace{0.3cm}
+\vspace{0.3cm}
+\subsubsection{RPC name:~get\_API\_version\_vendor\_implementation}
+
+{\bf Overview:} 
+Get the API\_version/vendor\_implementation field of the given host.
+
+ \noindent {\bf Signature:} 
+\begin{verbatim} ((string -> string) Map) 
get_API_version_vendor_implementation (session_id s, host ref 
self)\end{verbatim}
+
+
+\noindent{\bf Arguments:}
+
+ 
+\vspace{0.3cm}
+\begin{tabular}{|c|c|p{7cm}|}
+ \hline
+{\bf type} & {\bf name} & {\bf description} \\ \hline
+{\tt host ref } & self & reference to the object \\ \hline 
+
+\end{tabular}
+
+\vspace{0.3cm}
+
+ \noindent {\bf Return Type:} 
+{\tt 
+(string $\rightarrow$ string) Map
+}
+
+
+value of the field
+\vspace{0.3cm}
+\vspace{0.3cm}
+\vspace{0.3cm}
 \subsubsection{RPC name:~get\_software\_version}
 
 {\bf Overview:} 
@@ -5050,6 +5471,70 @@ void
 \vspace{0.3cm}
 \vspace{0.3cm}
 \vspace{0.3cm}
+\subsubsection{RPC name:~get\_capabilities}
+
+{\bf Overview:} 
+Get the capabilities field of the given host.
+
+ \noindent {\bf Signature:} 
+\begin{verbatim} (string Set) get_capabilities (session_id s, host ref 
self)\end{verbatim}
+
+
+\noindent{\bf Arguments:}
+
+ 
+\vspace{0.3cm}
+\begin{tabular}{|c|c|p{7cm}|}
+ \hline
+{\bf type} & {\bf name} & {\bf description} \\ \hline
+{\tt host ref } & self & reference to the object \\ \hline 
+
+\end{tabular}
+
+\vspace{0.3cm}
+
+ \noindent {\bf Return Type:} 
+{\tt 
+string Set
+}
+
+
+value of the field
+\vspace{0.3cm}
+\vspace{0.3cm}
+\vspace{0.3cm}
+\subsubsection{RPC name:~get\_supported\_bootloaders}
+
+{\bf Overview:} 
+Get the supported\_bootloaders field of the given host.
+
+ \noindent {\bf Signature:} 
+\begin{verbatim} (string Set) get_supported_bootloaders (session_id s, host 
ref self)\end{verbatim}
+
+
+\noindent{\bf Arguments:}
+
+ 
+\vspace{0.3cm}
+\begin{tabular}{|c|c|p{7cm}|}
+ \hline
+{\bf type} & {\bf name} & {\bf description} \\ \hline
+{\tt host ref } & self & reference to the object \\ \hline 
+
+\end{tabular}
+
+\vspace{0.3cm}
+
+ \noindent {\bf Return Type:} 
+{\tt 
+string Set
+}
+
+
+value of the field
+\vspace{0.3cm}
+\vspace{0.3cm}
+\vspace{0.3cm}
 \subsubsection{RPC name:~get\_resident\_VMs}
 
 {\bf Overview:} 
@@ -5476,70 +5961,6 @@ host\_metrics ref
 
 
 value of the field
-\vspace{0.3cm}
-\vspace{0.3cm}
-\vspace{0.3cm}
-\subsubsection{RPC name:~create}
-
-{\bf Overview:} 
-Create a new host instance, and return its handle.
-
- \noindent {\bf Signature:} 
-\begin{verbatim} (host ref) create (session_id s, host record 
args)\end{verbatim}
-
-
-\noindent{\bf Arguments:}
-
- 
-\vspace{0.3cm}
-\begin{tabular}{|c|c|p{7cm}|}
- \hline
-{\bf type} & {\bf name} & {\bf description} \\ \hline
-{\tt host record } & args & All constructor arguments \\ \hline 
-
-\end{tabular}
-
-\vspace{0.3cm}
-
- \noindent {\bf Return Type:} 
-{\tt 
-host ref
-}
-
-
-reference to the newly created object
-\vspace{0.3cm}
-\vspace{0.3cm}
-\vspace{0.3cm}
-\subsubsection{RPC name:~destroy}
-
-{\bf Overview:} 
-Destroy the specified host instance.
-
- \noindent {\bf Signature:} 
-\begin{verbatim} void destroy (session_id s, host ref self)\end{verbatim}
-
-
-\noindent{\bf Arguments:}
-
- 
-\vspace{0.3cm}
-\begin{tabular}{|c|c|p{7cm}|}
- \hline
-{\bf type} & {\bf name} & {\bf description} \\ \hline
-{\tt host ref } & self & reference to the object \\ \hline 
-
-\end{tabular}
-
-\vspace{0.3cm}
-
- \noindent {\bf Return Type:} 
-{\tt 
-void
-}
-
-
-
 \vspace{0.3cm}
 \vspace{0.3cm}
 \vspace{0.3cm}
@@ -5653,12 +6074,32 @@ Quals & Field & Type & Description \\
 Quals & Field & Type & Description \\
 \hline
 $\mathit{RO}_\mathit{run}$ &  {\tt uuid} & string & unique identifier/object 
reference \\
-$\mathit{RO}_\mathit{ins}$ &  {\tt host} & host ref & Host to which these 
metrics apply \\
 $\mathit{RO}_\mathit{run}$ &  {\tt memory/total} & int & Host's total memory 
(bytes) \\
 $\mathit{RO}_\mathit{run}$ &  {\tt memory/free} & int & Host's free memory 
(bytes) \\
 \hline
 \end{longtable}
 \subsection{Additional RPCs associated with class: host\_metrics}
+\subsubsection{RPC name:~get\_all}
+
+{\bf Overview:} 
+Return a list of all the host\_metrics instances known to the system.
+
+ \noindent {\bf Signature:} 
+\begin{verbatim} ((host_metrics ref) Set) get_all (session_id s)\end{verbatim}
+
+
+\vspace{0.3cm}
+
+ \noindent {\bf Return Type:} 
+{\tt 
+(host\_metrics ref) Set
+}
+
+
+references to all objects
+\vspace{0.3cm}
+\vspace{0.3cm}
+\vspace{0.3cm}
 \subsubsection{RPC name:~get\_uuid}
 
 {\bf Overview:} 
@@ -5684,38 +6125,6 @@ Get the uuid field of the given host\_me
  \noindent {\bf Return Type:} 
 {\tt 
 string
-}
-
-
-value of the field
-\vspace{0.3cm}
-\vspace{0.3cm}
-\vspace{0.3cm}
-\subsubsection{RPC name:~get\_host}
-
-{\bf Overview:} 
-Get the host field of the given host\_metrics.
-
- \noindent {\bf Signature:} 
-\begin{verbatim} (host ref) get_host (session_id s, host_metrics ref 
self)\end{verbatim}
-
-
-\noindent{\bf Arguments:}
-
- 
-\vspace{0.3cm}
-\begin{tabular}{|c|c|p{7cm}|}
- \hline
-{\bf type} & {\bf name} & {\bf description} \\ \hline
-{\tt host\_metrics ref } & self & reference to the object \\ \hline 
-
-\end{tabular}
-
-\vspace{0.3cm}
-
- \noindent {\bf Return Type:} 
-{\tt 
-host ref
 }
 
 
@@ -5864,15 +6273,38 @@ Quals & Field & Type & Description \\
 Quals & Field & Type & Description \\
 \hline
 $\mathit{RO}_\mathit{run}$ &  {\tt uuid} & string & unique identifier/object 
reference \\
-$\mathit{RO}_\mathit{ins}$ &  {\tt host} & host ref & the host the CPU is in \\
-$\mathit{RO}_\mathit{ins}$ &  {\tt number} & int & the number of the physical 
CPU within the host \\
-$\mathit{RO}_\mathit{ins}$ &  {\tt vendor} & string & the vendor of the 
physical CPU \\
-$\mathit{RO}_\mathit{ins}$ &  {\tt speed} & int & the speed of the physical 
CPU \\
-$\mathit{RO}_\mathit{ins}$ &  {\tt modelname} & string & the model name of the 
physical CPU \\
+$\mathit{RO}_\mathit{run}$ &  {\tt host} & host ref & the host the CPU is in \\
+$\mathit{RO}_\mathit{run}$ &  {\tt number} & int & the number of the physical 
CPU within the host \\
+$\mathit{RO}_\mathit{run}$ &  {\tt vendor} & string & the vendor of the 
physical CPU \\
+$\mathit{RO}_\mathit{run}$ &  {\tt speed} & int & the speed of the physical 
CPU \\
+$\mathit{RO}_\mathit{run}$ &  {\tt modelname} & string & the model name of the 
physical CPU \\
+$\mathit{RO}_\mathit{run}$ &  {\tt stepping} & string & the stepping of the 
physical CPU \\
+$\mathit{RO}_\mathit{run}$ &  {\tt flags} & string & the flags of the physical 
CPU \\
 $\mathit{RO}_\mathit{run}$ &  {\tt utilisation} & float & the current CPU 
utilisation \\
 \hline
 \end{longtable}
 \subsection{Additional RPCs associated with class: host\_cpu}
+\subsubsection{RPC name:~get\_all}
+
+{\bf Overview:} 
+Return a list of all the host\_cpus known to the system.
+
+ \noindent {\bf Signature:} 
+\begin{verbatim} ((host_cpu ref) Set) get_all (session_id s)\end{verbatim}
+
+
+\vspace{0.3cm}
+
+ \noindent {\bf Return Type:} 
+{\tt 
+(host\_cpu ref) Set
+}
+
+
+references to all objects
+\vspace{0.3cm}
+\vspace{0.3cm}
+\vspace{0.3cm}
 \subsubsection{RPC name:~get\_uuid}
 
 {\bf Overview:} 
@@ -6065,6 +6497,70 @@ value of the field
 \vspace{0.3cm}
 \vspace{0.3cm}
 \vspace{0.3cm}
+\subsubsection{RPC name:~get\_stepping}
+
+{\bf Overview:} 
+Get the stepping field of the given host\_cpu.
+
+ \noindent {\bf Signature:} 
+\begin{verbatim} string get_stepping (session_id s, host_cpu ref 
self)\end{verbatim}
+
+
+\noindent{\bf Arguments:}
+
+ 
+\vspace{0.3cm}
+\begin{tabular}{|c|c|p{7cm}|}
+ \hline
+{\bf type} & {\bf name} & {\bf description} \\ \hline
+{\tt host\_cpu ref } & self & reference to the object \\ \hline 
+
+\end{tabular}
+
+\vspace{0.3cm}
+
+ \noindent {\bf Return Type:} 
+{\tt 
+string
+}
+
+
+value of the field
+\vspace{0.3cm}
+\vspace{0.3cm}
+\vspace{0.3cm}
+\subsubsection{RPC name:~get\_flags}
+
+{\bf Overview:} 
+Get the flags field of the given host\_cpu.
+
+ \noindent {\bf Signature:} 
+\begin{verbatim} string get_flags (session_id s, host_cpu ref 
self)\end{verbatim}
+
+
+\noindent{\bf Arguments:}
+
+ 
+\vspace{0.3cm}
+\begin{tabular}{|c|c|p{7cm}|}
+ \hline
+{\bf type} & {\bf name} & {\bf description} \\ \hline
+{\tt host\_cpu ref } & self & reference to the object \\ \hline 
+
+\end{tabular}
+
+\vspace{0.3cm}
+
+ \noindent {\bf Return Type:} 
+{\tt 
+string
+}
+
+
+value of the field
+\vspace{0.3cm}
+\vspace{0.3cm}
+\vspace{0.3cm}
 \subsubsection{RPC name:~get\_utilisation}
 
 {\bf Overview:} 
@@ -6094,70 +6590,6 @@ float
 
 
 value of the field
-\vspace{0.3cm}
-\vspace{0.3cm}
-\vspace{0.3cm}
-\subsubsection{RPC name:~create}
-
-{\bf Overview:} 
-Create a new host\_cpu instance, and return its handle.
-
- \noindent {\bf Signature:} 
-\begin{verbatim} (host_cpu ref) create (session_id s, host_cpu record 
args)\end{verbatim}
-
-
-\noindent{\bf Arguments:}
-
- 
-\vspace{0.3cm}
-\begin{tabular}{|c|c|p{7cm}|}
- \hline
-{\bf type} & {\bf name} & {\bf description} \\ \hline
-{\tt host\_cpu record } & args & All constructor arguments \\ \hline 
-
-\end{tabular}
-
-\vspace{0.3cm}
-
- \noindent {\bf Return Type:} 
-{\tt 
-host\_cpu ref
-}
-
-
-reference to the newly created object
-\vspace{0.3cm}
-\vspace{0.3cm}
-\vspace{0.3cm}
-\subsubsection{RPC name:~destroy}
-
-{\bf Overview:} 
-Destroy the specified host\_cpu instance.
-
- \noindent {\bf Signature:} 
-\begin{verbatim} void destroy (session_id s, host_cpu ref self)\end{verbatim}
-
-
-\noindent{\bf Arguments:}
-
- 
-\vspace{0.3cm}
-\begin{tabular}{|c|c|p{7cm}|}
- \hline
-{\bf type} & {\bf name} & {\bf description} \\ \hline
-{\tt host\_cpu ref } & self & reference to the object \\ \hline 
-
-\end{tabular}
-
-\vspace{0.3cm}
-
- \noindent {\bf Return Type:} 
-{\tt 
-void
-}
-
-
-
 \vspace{0.3cm}
 \vspace{0.3cm}
 \vspace{0.3cm}
@@ -6243,8 +6675,6 @@ Quals & Field & Type & Description \\
 $\mathit{RW}$ &  {\tt name/description} & string & a notes field containg 
human-readable description \\
 $\mathit{RO}_\mathit{run}$ &  {\tt VIFs} & (VIF ref) Set & list of connected 
vifs \\
 $\mathit{RO}_\mathit{run}$ &  {\tt PIFs} & (PIF ref) Set & list of connected 
pifs \\
-$\mathit{RW}$ &  {\tt default\_gateway} & string & default gateway IP address. 
Used for auto-configuring guests with fixed IP setting \\
-$\mathit{RW}$ &  {\tt default\_netmask} & string & default netmask. Used for 
auto-configuring guests with fixed IP setting \\
 \hline
 \end{longtable}
 \subsection{Additional RPCs associated with class: network}
@@ -6494,138 +6924,6 @@ Get the PIFs field of the given network.
 
 
 value of the field
-\vspace{0.3cm}
-\vspace{0.3cm}
-\vspace{0.3cm}
-\subsubsection{RPC name:~get\_default\_gateway}
-
-{\bf Overview:} 
-Get the default\_gateway field of the given network.
-
- \noindent {\bf Signature:} 
-\begin{verbatim} string get_default_gateway (session_id s, network ref 
self)\end{verbatim}
-
-
-\noindent{\bf Arguments:}
-
- 
-\vspace{0.3cm}
-\begin{tabular}{|c|c|p{7cm}|}
- \hline
-{\bf type} & {\bf name} & {\bf description} \\ \hline
-{\tt network ref } & self & reference to the object \\ \hline 
-
-\end{tabular}
-
-\vspace{0.3cm}
-
- \noindent {\bf Return Type:} 
-{\tt 
-string
-}
-
-
-value of the field
-\vspace{0.3cm}
-\vspace{0.3cm}
-\vspace{0.3cm}
-\subsubsection{RPC name:~set\_default\_gateway}
-
-{\bf Overview:} 
-Set the default\_gateway field of the given network.
-
- \noindent {\bf Signature:} 
-\begin{verbatim} void set_default_gateway (session_id s, network ref self, 
string value)\end{verbatim}
-
-
-\noindent{\bf Arguments:}
-
- 
-\vspace{0.3cm}
-\begin{tabular}{|c|c|p{7cm}|}
- \hline
-{\bf type} & {\bf name} & {\bf description} \\ \hline
-{\tt network ref } & self & reference to the object \\ \hline 
-
-{\tt string } & value & New value to set \\ \hline 
-
-\end{tabular}
-
-\vspace{0.3cm}
-
- \noindent {\bf Return Type:} 
-{\tt 
-void
-}
-
-
-
-\vspace{0.3cm}
-\vspace{0.3cm}
-\vspace{0.3cm}
-\subsubsection{RPC name:~get\_default\_netmask}
-
-{\bf Overview:} 
-Get the default\_netmask field of the given network.
-
- \noindent {\bf Signature:} 
-\begin{verbatim} string get_default_netmask (session_id s, network ref 
self)\end{verbatim}
-
-
-\noindent{\bf Arguments:}
-
- 
-\vspace{0.3cm}
-\begin{tabular}{|c|c|p{7cm}|}
- \hline
-{\bf type} & {\bf name} & {\bf description} \\ \hline
-{\tt network ref } & self & reference to the object \\ \hline 
-
-\end{tabular}
-
-\vspace{0.3cm}
-
- \noindent {\bf Return Type:} 
-{\tt 
-string
-}
-
-
-value of the field
-\vspace{0.3cm}
-\vspace{0.3cm}
-\vspace{0.3cm}
-\subsubsection{RPC name:~set\_default\_netmask}
-
-{\bf Overview:} 
-Set the default\_netmask field of the given network.
-
- \noindent {\bf Signature:} 
-\begin{verbatim} void set_default_netmask (session_id s, network ref self, 
string value)\end{verbatim}
-
-
-\noindent{\bf Arguments:}
-
- 
-\vspace{0.3cm}
-\begin{tabular}{|c|c|p{7cm}|}
- \hline
-{\bf type} & {\bf name} & {\bf description} \\ \hline
-{\tt network ref } & self & reference to the object \\ \hline 
-
-{\tt string } & value & New value to set \\ \hline 
-
-\end{tabular}
-
-\vspace{0.3cm}
-
- \noindent {\bf Return Type:} 
-{\tt 
-void
-}
-
-
-
 \vspace{0.3cm}
 \vspace{0.3cm}
 \vspace{0.3cm}
@@ -6808,28 +7106,881 @@ Quals & Field & Type & Description \\
 $\mathit{RO}_\mathit{ins}$ &  {\tt VM} & VM ref & virtual machine to which 
this vif is connected \\
 $\mathit{RW}$ &  {\tt MAC} & string & ethernet MAC address of virtual 
interface, as exposed to guest \\
 $\mathit{RW}$ &  {\tt MTU} & int & MTU in octets \\
+$\mathit{RO}_\mathit{run}$ &  {\tt currently\_attached} & bool & is the device 
currently attached (erased on reboot) \\
+$\mathit{RO}_\mathit{run}$ &  {\tt status\_code} & int & error/success code 
associated with last attach-operation (erased on reboot) \\
+$\mathit{RO}_\mathit{run}$ &  {\tt status\_detail} & string & error/success 
information associated with last attach-operation status (erased on reboot) \\
+$\mathit{RW}$ &  {\tt qos/algorithm\_type} & string & QoS algorithm to use \\
+$\mathit{RW}$ &  {\tt qos/algorithm\_params} & (string $\rightarrow$ string) 
Map & parameters for chosen QoS algorithm \\
+$\mathit{RO}_\mathit{run}$ &  {\tt qos/supported\_algorithms} & string Set & 
supported QoS algorithms for this VIF \\
+$\mathit{RO}_\mathit{run}$ &  {\tt metrics} & VIF\_metrics ref & metrics 
associated with this VIF. \\
+\hline
+\end{longtable}
+\subsection{Additional RPCs associated with class: VIF}
+\subsubsection{RPC name:~get\_all}
+
+{\bf Overview:} 
+Return a list of all the VIFs known to the system.
+
+ \noindent {\bf Signature:} 
+\begin{verbatim} ((VIF ref) Set) get_all (session_id s)\end{verbatim}
+
+
+\vspace{0.3cm}
+
+ \noindent {\bf Return Type:} 
+{\tt 
+(VIF ref) Set
+}
+
+
+references to all objects
+\vspace{0.3cm}
+\vspace{0.3cm}
+\vspace{0.3cm}
+\subsubsection{RPC name:~get\_uuid}
+
+{\bf Overview:} 
+Get the uuid field of the given VIF.
+
+ \noindent {\bf Signature:} 
+\begin{verbatim} string get_uuid (session_id s, VIF ref self)\end{verbatim}
+
+
+\noindent{\bf Arguments:}
+
+ 
+\vspace{0.3cm}
+\begin{tabular}{|c|c|p{7cm}|}
+ \hline
+{\bf type} & {\bf name} & {\bf description} \\ \hline
+{\tt VIF ref } & self & reference to the object \\ \hline 
+
+\end{tabular}
+
+\vspace{0.3cm}
+
+ \noindent {\bf Return Type:} 
+{\tt 
+string
+}
+
+
+value of the field
+\vspace{0.3cm}
+\vspace{0.3cm}
+\vspace{0.3cm}
+\subsubsection{RPC name:~get\_device}
+
+{\bf Overview:} 
+Get the device field of the given VIF.
+
+ \noindent {\bf Signature:} 
+\begin{verbatim} string get_device (session_id s, VIF ref self)\end{verbatim}
+
+
+\noindent{\bf Arguments:}
+
+ 
+\vspace{0.3cm}
+\begin{tabular}{|c|c|p{7cm}|}
+ \hline
+{\bf type} & {\bf name} & {\bf description} \\ \hline
+{\tt VIF ref } & self & reference to the object \\ \hline 
+
+\end{tabular}
+
+\vspace{0.3cm}
+
+ \noindent {\bf Return Type:} 
+{\tt 
+string
+}
+
+
+value of the field
+\vspace{0.3cm}
+\vspace{0.3cm}
+\vspace{0.3cm}
+\subsubsection{RPC name:~set\_device}
+
+{\bf Overview:} 
+Set the device field of the given VIF.
+
+ \noindent {\bf Signature:} 
+\begin{verbatim} void set_device (session_id s, VIF ref self, string 
value)\end{verbatim}
+
+
+\noindent{\bf Arguments:}
+
+ 
+\vspace{0.3cm}
+\begin{tabular}{|c|c|p{7cm}|}
+ \hline
+{\bf type} & {\bf name} & {\bf description} \\ \hline
+{\tt VIF ref } & self & reference to the object \\ \hline 
+
+{\tt string } & value & New value to set \\ \hline 
+
+\end{tabular}
+
+\vspace{0.3cm}
+
+ \noindent {\bf Return Type:} 
+{\tt 
+void
+}
+
+
+
+\vspace{0.3cm}
+\vspace{0.3cm}
+\vspace{0.3cm}
+\subsubsection{RPC name:~get\_network}
+
+{\bf Overview:} 
+Get the network field of the given VIF.
+
+ \noindent {\bf Signature:} 
+\begin{verbatim} (network ref) get_network (session_id s, VIF ref 
self)\end{verbatim}
+
+
+\noindent{\bf Arguments:}
+
+ 
+\vspace{0.3cm}
+\begin{tabular}{|c|c|p{7cm}|}
+ \hline
+{\bf type} & {\bf name} & {\bf description} \\ \hline
+{\tt VIF ref } & self & reference to the object \\ \hline 
+
+\end{tabular}
+
+\vspace{0.3cm}
+
+ \noindent {\bf Return Type:} 
+{\tt 
+network ref
+}
+
+
+value of the field
+\vspace{0.3cm}
+\vspace{0.3cm}
+\vspace{0.3cm}
+\subsubsection{RPC name:~get\_VM}
+
+{\bf Overview:} 
+Get the VM field of the given VIF.
+
+ \noindent {\bf Signature:} 
+\begin{verbatim} (VM ref) get_VM (session_id s, VIF ref self)\end{verbatim}
+
+
+\noindent{\bf Arguments:}
+
+ 
+\vspace{0.3cm}
+\begin{tabular}{|c|c|p{7cm}|}
+ \hline
+{\bf type} & {\bf name} & {\bf description} \\ \hline
+{\tt VIF ref } & self & reference to the object \\ \hline 
+
+\end{tabular}
+
+\vspace{0.3cm}
+
+ \noindent {\bf Return Type:} 
+{\tt 
+VM ref
+}
+
+
+value of the field
+\vspace{0.3cm}
+\vspace{0.3cm}
+\vspace{0.3cm}
+\subsubsection{RPC name:~get\_MAC}
+
+{\bf Overview:} 
+Get the MAC field of the given VIF.
+
+ \noindent {\bf Signature:} 
+\begin{verbatim} string get_MAC (session_id s, VIF ref self)\end{verbatim}
+
+
+\noindent{\bf Arguments:}
+
+ 
+\vspace{0.3cm}
+\begin{tabular}{|c|c|p{7cm}|}
+ \hline
+{\bf type} & {\bf name} & {\bf description} \\ \hline
+{\tt VIF ref } & self & reference to the object \\ \hline 
+
+\end{tabular}
+
+\vspace{0.3cm}
+
+ \noindent {\bf Return Type:} 
+{\tt 
+string
+}
+
+
+value of the field
+\vspace{0.3cm}
+\vspace{0.3cm}
+\vspace{0.3cm}
+\subsubsection{RPC name:~set\_MAC}
+
+{\bf Overview:} 
+Set the MAC field of the given VIF.
+
+ \noindent {\bf Signature:} 
+\begin{verbatim} void set_MAC (session_id s, VIF ref self, string 
value)\end{verbatim}
+
+
+\noindent{\bf Arguments:}
+
+ 
+\vspace{0.3cm}
+\begin{tabular}{|c|c|p{7cm}|}
+ \hline
+{\bf type} & {\bf name} & {\bf description} \\ \hline
+{\tt VIF ref } & self & reference to the object \\ \hline 
+
+{\tt string } & value & New value to set \\ \hline 
+
+\end{tabular}
+
+\vspace{0.3cm}
+
+ \noindent {\bf Return Type:} 
+{\tt 
+void
+}
+
+
+
+\vspace{0.3cm}
+\vspace{0.3cm}
+\vspace{0.3cm}
+\subsubsection{RPC name:~get\_MTU}
+
+{\bf Overview:} 
+Get the MTU field of the given VIF.
+
+ \noindent {\bf Signature:} 
+\begin{verbatim} int get_MTU (session_id s, VIF ref self)\end{verbatim}
+
+
+\noindent{\bf Arguments:}
+
+ 
+\vspace{0.3cm}
+\begin{tabular}{|c|c|p{7cm}|}
+ \hline
+{\bf type} & {\bf name} & {\bf description} \\ \hline
+{\tt VIF ref } & self & reference to the object \\ \hline 
+
+\end{tabular}
+
+\vspace{0.3cm}
+
+ \noindent {\bf Return Type:} 
+{\tt 
+int
+}
+
+
+value of the field
+\vspace{0.3cm}
+\vspace{0.3cm}
+\vspace{0.3cm}
+\subsubsection{RPC name:~set\_MTU}
+
+{\bf Overview:} 
+Set the MTU field of the given VIF.
+
+ \noindent {\bf Signature:} 
+\begin{verbatim} void set_MTU (session_id s, VIF ref self, int 
value)\end{verbatim}
+
+
+\noindent{\bf Arguments:}
+
+ 
+\vspace{0.3cm}
+\begin{tabular}{|c|c|p{7cm}|}
+ \hline
+{\bf type} & {\bf name} & {\bf description} \\ \hline
+{\tt VIF ref } & self & reference to the object \\ \hline 
+
+{\tt int } & value & New value to set \\ \hline 
+
+\end{tabular}
+
+\vspace{0.3cm}
+
+ \noindent {\bf Return Type:} 
+{\tt 
+void
+}
+
+
+
+\vspace{0.3cm}
+\vspace{0.3cm}
+\vspace{0.3cm}
+\subsubsection{RPC name:~get\_currently\_attached}
+
+{\bf Overview:} 
+Get the currently\_attached field of the given VIF.
+
+ \noindent {\bf Signature:} 
+\begin{verbatim} bool get_currently_attached (session_id s, VIF ref 
self)\end{verbatim}
+
+
+\noindent{\bf Arguments:}
+
+ 
+\vspace{0.3cm}
+\begin{tabular}{|c|c|p{7cm}|}
+ \hline
+{\bf type} & {\bf name} & {\bf description} \\ \hline
+{\tt VIF ref } & self & reference to the object \\ \hline 
+
+\end{tabular}
+
+\vspace{0.3cm}
+
+ \noindent {\bf Return Type:} 
+{\tt 
+bool
+}
+
+
+value of the field
+\vspace{0.3cm}
+\vspace{0.3cm}
+\vspace{0.3cm}
+\subsubsection{RPC name:~get\_status\_code}
+
+{\bf Overview:} 
+Get the status\_code field of the given VIF.
+
+ \noindent {\bf Signature:} 
+\begin{verbatim} int get_status_code (session_id s, VIF ref self)\end{verbatim}
+
+
+\noindent{\bf Arguments:}
+
+ 
+\vspace{0.3cm}
+\begin{tabular}{|c|c|p{7cm}|}
+ \hline
+{\bf type} & {\bf name} & {\bf description} \\ \hline
+{\tt VIF ref } & self & reference to the object \\ \hline 
+
+\end{tabular}
+
+\vspace{0.3cm}
+
+ \noindent {\bf Return Type:} 
+{\tt 
+int
+}
+
+
+value of the field
+\vspace{0.3cm}
+\vspace{0.3cm}
+\vspace{0.3cm}
+\subsubsection{RPC name:~get\_status\_detail}
+
+{\bf Overview:} 
+Get the status\_detail field of the given VIF.
+
+ \noindent {\bf Signature:} 
+\begin{verbatim} string get_status_detail (session_id s, VIF ref 
self)\end{verbatim}
+
+
+\noindent{\bf Arguments:}
+
+ 
+\vspace{0.3cm}
+\begin{tabular}{|c|c|p{7cm}|}
+ \hline
+{\bf type} & {\bf name} & {\bf description} \\ \hline
+{\tt VIF ref } & self & reference to the object \\ \hline 
+
+\end{tabular}
+
+\vspace{0.3cm}
+
+ \noindent {\bf Return Type:} 
+{\tt 
+string
+}
+
+
+value of the field
+\vspace{0.3cm}
+\vspace{0.3cm}
+\vspace{0.3cm}
+\subsubsection{RPC name:~get\_qos\_algorithm\_type}
+
+{\bf Overview:} 
+Get the qos/algorithm\_type field of the given VIF.
+
+ \noindent {\bf Signature:} 
+\begin{verbatim} string get_qos_algorithm_type (session_id s, VIF ref 
self)\end{verbatim}
+
+
+\noindent{\bf Arguments:}
+
+ 
+\vspace{0.3cm}
+\begin{tabular}{|c|c|p{7cm}|}
+ \hline
+{\bf type} & {\bf name} & {\bf description} \\ \hline
+{\tt VIF ref } & self & reference to the object \\ \hline 
+
+\end{tabular}
+
+\vspace{0.3cm}
+
+ \noindent {\bf Return Type:} 
+{\tt 
+string
+}
+
+
+value of the field
+\vspace{0.3cm}
+\vspace{0.3cm}
+\vspace{0.3cm}
+\subsubsection{RPC name:~set\_qos\_algorithm\_type}
+
+{\bf Overview:} 
+Set the qos/algorithm\_type field of the given VIF.
+
+ \noindent {\bf Signature:} 
+\begin{verbatim} void set_qos_algorithm_type (session_id s, VIF ref self, 
string value)\end{verbatim}
+
+
+\noindent{\bf Arguments:}
+
+ 
+\vspace{0.3cm}
+\begin{tabular}{|c|c|p{7cm}|}
+ \hline
+{\bf type} & {\bf name} & {\bf description} \\ \hline
+{\tt VIF ref } & self & reference to the object \\ \hline 
+
+{\tt string } & value & New value to set \\ \hline 
+
+\end{tabular}
+
+\vspace{0.3cm}
+
+ \noindent {\bf Return Type:} 
+{\tt 
+void
+}
+
+
+
+\vspace{0.3cm}
+\vspace{0.3cm}
+\vspace{0.3cm}
+\subsubsection{RPC name:~get\_qos\_algorithm\_params}
+
+{\bf Overview:} 
+Get the qos/algorithm\_params field of the given VIF.
+
+ \noindent {\bf Signature:} 
+\begin{verbatim} ((string -> string) Map) get_qos_algorithm_params (session_id 
s, VIF ref self)\end{verbatim}
+
+
+\noindent{\bf Arguments:}
+
+ 
+\vspace{0.3cm}
+\begin{tabular}{|c|c|p{7cm}|}
+ \hline
+{\bf type} & {\bf name} & {\bf description} \\ \hline
+{\tt VIF ref } & self & reference to the object \\ \hline 
+
+\end{tabular}
+
+\vspace{0.3cm}
+
+ \noindent {\bf Return Type:} 
+{\tt 
+(string $\rightarrow$ string) Map
+}
+
+
+value of the field
+\vspace{0.3cm}
+\vspace{0.3cm}
+\vspace{0.3cm}
+\subsubsection{RPC name:~set\_qos\_algorithm\_params}
+
+{\bf Overview:} 
+Set the qos/algorithm\_params field of the given VIF.
+
+ \noindent {\bf Signature:} 
+\begin{verbatim} void set_qos_algorithm_params (session_id s, VIF ref self, 
(string -> string) Map value)\end{verbatim}
+
+
+\noindent{\bf Arguments:}
+
+ 
+\vspace{0.3cm}
+\begin{tabular}{|c|c|p{7cm}|}
+ \hline
+{\bf type} & {\bf name} & {\bf description} \\ \hline
+{\tt VIF ref } & self & reference to the object \\ \hline 
+
+{\tt (string $\rightarrow$ string) Map } & value & New value to set \\ \hline 
+
+\end{tabular}
+
+\vspace{0.3cm}
+
+ \noindent {\bf Return Type:} 
+{\tt 
+void
+}
+
+
+
+\vspace{0.3cm}
+\vspace{0.3cm}
+\vspace{0.3cm}
+\subsubsection{RPC name:~add\_to\_qos\_algorithm\_params}
+
+{\bf Overview:} 
+Add the given key-value pair to the qos/algorithm\_params field of the
+given VIF.
+
+ \noindent {\bf Signature:} 
+\begin{verbatim} void add_to_qos_algorithm_params (session_id s, VIF ref self, 
string key, string value)\end{verbatim}
+
+
+\noindent{\bf Arguments:}
+
+ 
+\vspace{0.3cm}
+\begin{tabular}{|c|c|p{7cm}|}
+ \hline
+{\bf type} & {\bf name} & {\bf description} \\ \hline
+{\tt VIF ref } & self & reference to the object \\ \hline 
+
+{\tt string } & key & Key to add \\ \hline 
+
+{\tt string } & value & Value to add \\ \hline 
+
+\end{tabular}
+
+\vspace{0.3cm}
+
+ \noindent {\bf Return Type:} 
+{\tt 
+void
+}
+
+
+
+\vspace{0.3cm}
+\vspace{0.3cm}
+\vspace{0.3cm}
+\subsubsection{RPC name:~remove\_from\_qos\_algorithm\_params}
+
+{\bf Overview:} 
+Remove the given key and its corresponding value from the
+qos/algorithm\_params field of the given VIF.  If the key is not in that
+Map, then do nothing.
+
+ \noindent {\bf Signature:} 
+\begin{verbatim} void remove_from_qos_algorithm_params (session_id s, VIF ref 
self, string key)\end{verbatim}
+
+
+\noindent{\bf Arguments:}
+
+ 
+\vspace{0.3cm}
+\begin{tabular}{|c|c|p{7cm}|}
+ \hline
+{\bf type} & {\bf name} & {\bf description} \\ \hline
+{\tt VIF ref } & self & reference to the object \\ \hline 
+
+{\tt string } & key & Key to remove \\ \hline 
+
+\end{tabular}
+
+\vspace{0.3cm}
+
+ \noindent {\bf Return Type:} 
+{\tt 
+void
+}
+
+
+
+\vspace{0.3cm}
+\vspace{0.3cm}
+\vspace{0.3cm}
+\subsubsection{RPC name:~get\_qos\_supported\_algorithms}
+
+{\bf Overview:} 
+Get the qos/supported\_algorithms field of the given VIF.
+
+ \noindent {\bf Signature:} 
+\begin{verbatim} (string Set) get_qos_supported_algorithms (session_id s, VIF 
ref self)\end{verbatim}
+
+
+\noindent{\bf Arguments:}
+
+ 
+\vspace{0.3cm}
+\begin{tabular}{|c|c|p{7cm}|}
+ \hline
+{\bf type} & {\bf name} & {\bf description} \\ \hline
+{\tt VIF ref } & self & reference to the object \\ \hline 
+
+\end{tabular}
+
+\vspace{0.3cm}
+
+ \noindent {\bf Return Type:} 
+{\tt 
+string Set
+}
+
+
+value of the field
+\vspace{0.3cm}
+\vspace{0.3cm}
+\vspace{0.3cm}
+\subsubsection{RPC name:~get\_metrics}
+
+{\bf Overview:} 
+Get the metrics field of the given VIF.
+
+ \noindent {\bf Signature:} 
+\begin{verbatim} (VIF_metrics ref) get_metrics (session_id s, VIF ref 
self)\end{verbatim}
+
+
+\noindent{\bf Arguments:}
+
+ 
+\vspace{0.3cm}
+\begin{tabular}{|c|c|p{7cm}|}
+ \hline
+{\bf type} & {\bf name} & {\bf description} \\ \hline
+{\tt VIF ref } & self & reference to the object \\ \hline 
+
+\end{tabular}
+
+\vspace{0.3cm}
+
+ \noindent {\bf Return Type:} 
+{\tt 
+VIF\_metrics ref
+}
+
+
+value of the field
+\vspace{0.3cm}
+\vspace{0.3cm}
+\vspace{0.3cm}
+\subsubsection{RPC name:~create}
+
+{\bf Overview:} 
+Create a new VIF instance, and return its handle.
+
+ \noindent {\bf Signature:} 
+\begin{verbatim} (VIF ref) create (session_id s, VIF record args)\end{verbatim}
+
+
+\noindent{\bf Arguments:}
+
+ 
+\vspace{0.3cm}
+\begin{tabular}{|c|c|p{7cm}|}
+ \hline
+{\bf type} & {\bf name} & {\bf description} \\ \hline
+{\tt VIF record } & args & All constructor arguments \\ \hline 
+
+\end{tabular}
+
+\vspace{0.3cm}
+
+ \noindent {\bf Return Type:} 
+{\tt 
+VIF ref
+}
+
+
+reference to the newly created object
+\vspace{0.3cm}
+\vspace{0.3cm}
+\vspace{0.3cm}
+\subsubsection{RPC name:~destroy}
+
+{\bf Overview:} 
+Destroy the specified VIF instance.
+
+ \noindent {\bf Signature:} 
+\begin{verbatim} void destroy (session_id s, VIF ref self)\end{verbatim}
+
+
+\noindent{\bf Arguments:}
+
+ 
+\vspace{0.3cm}
+\begin{tabular}{|c|c|p{7cm}|}
+ \hline
+{\bf type} & {\bf name} & {\bf description} \\ \hline
+{\tt VIF ref } & self & reference to the object \\ \hline 
+
+\end{tabular}
+
+\vspace{0.3cm}
+
+ \noindent {\bf Return Type:} 
+{\tt 
+void
+}
+
+
+
+\vspace{0.3cm}
+\vspace{0.3cm}
+\vspace{0.3cm}
+\subsubsection{RPC name:~get\_by\_uuid}
+
+{\bf Overview:} 
+Get a reference to the VIF instance with the specified UUID.
+
+ \noindent {\bf Signature:} 
+\begin{verbatim} (VIF ref) get_by_uuid (session_id s, string 
uuid)\end{verbatim}
+
+
+\noindent{\bf Arguments:}
+
+ 
+\vspace{0.3cm}
+\begin{tabular}{|c|c|p{7cm}|}
+ \hline
+{\bf type} & {\bf name} & {\bf description} \\ \hline
+{\tt string } & uuid & UUID of object to return \\ \hline 
+
+\end{tabular}
+
+\vspace{0.3cm}
+
+ \noindent {\bf Return Type:} 
+{\tt 
+VIF ref
+}
+
+
+reference to the object
+\vspace{0.3cm}
+\vspace{0.3cm}
+\vspace{0.3cm}
+\subsubsection{RPC name:~get\_record}
+
+{\bf Overview:} 
+Get a record containing the current state of the given VIF.
+
+ \noindent {\bf Signature:} 
+\begin{verbatim} (VIF record) get_record (session_id s, VIF ref 
self)\end{verbatim}
+
+
+\noindent{\bf Arguments:}
+
+ 
+\vspace{0.3cm}
+\begin{tabular}{|c|c|p{7cm}|}
+ \hline
+{\bf type} & {\bf name} & {\bf description} \\ \hline
+{\tt VIF ref } & self & reference to the object \\ \hline 
+
+\end{tabular}
+
+\vspace{0.3cm}
+
+ \noindent {\bf Return Type:} 
+{\tt 
+VIF record
+}
+
+
+all fields from the object
+\vspace{0.3cm}
+\vspace{0.3cm}
+\vspace{0.3cm}
+
+\vspace{1cm}
+\newpage
+\section{Class: VIF\_metrics}
+\subsection{Fields for class: VIF\_metrics}
+\begin{longtable}{|lllp{0.38\textwidth}|}
+\hline
+\multicolumn{1}{|l}{Name} & \multicolumn{3}{l|}{\bf VIF\_metrics} \\
+\multicolumn{1}{|l}{Description} & \multicolumn{3}{l|}{\parbox{11cm}{\em
+The metrics associated with a virtual network device.}} \\
+\hline
+Quals & Field & Type & Description \\
+\hline
+$\mathit{RO}_\mathit{run}$ &  {\tt uuid} & string & unique identifier/object 
reference \\
 $\mathit{RO}_\mathit{run}$ &  {\tt io/read\_kbs} & float & Read bandwidth 
(KiB/s) \\
 $\mathit{RO}_\mathit{run}$ &  {\tt io/write\_kbs} & float & Write bandwidth 
(KiB/s) \\
 \hline
 \end{longtable}
-\subsection{Additional RPCs associated with class: VIF}
+\subsection{Additional RPCs associated with class: VIF\_metrics}
+\subsubsection{RPC name:~get\_all}
+
+{\bf Overview:} 
+Return a list of all the VIF\_metrics instances known to the system.
+
+ \noindent {\bf Signature:} 
+\begin{verbatim} ((VIF_metrics ref) Set) get_all (session_id s)\end{verbatim}
+
+
+\vspace{0.3cm}
+
+ \noindent {\bf Return Type:} 
+{\tt 
+(VIF\_metrics ref) Set
+}
+
+
+references to all objects
+\vspace{0.3cm}
+\vspace{0.3cm}
+\vspace{0.3cm}
 \subsubsection{RPC name:~get\_uuid}
 
 {\bf Overview:} 
-Get the uuid field of the given VIF.
-
- \noindent {\bf Signature:} 
-\begin{verbatim} string get_uuid (session_id s, VIF ref self)\end{verbatim}
-
-
-\noindent{\bf Arguments:}
-
- 
-\vspace{0.3cm}
-\begin{tabular}{|c|c|p{7cm}|}
- \hline
-{\bf type} & {\bf name} & {\bf description} \\ \hline
-{\tt VIF ref } & self & reference to the object \\ \hline 
+Get the uuid field of the given VIF\_metrics.
+
+ \noindent {\bf Signature:} 
+\begin{verbatim} string get_uuid (session_id s, VIF_metrics ref 
self)\end{verbatim}
+
+
+\noindent{\bf Arguments:}
+
+ 
+\vspace{0.3cm}
+\begin{tabular}{|c|c|p{7cm}|}
+ \hline
+{\bf type} & {\bf name} & {\bf description} \\ \hline
+{\tt VIF\_metrics ref } & self & reference to the object \\ \hline 
 
 \end{tabular}
 
@@ -6845,285 +7996,23 @@ value of the field
 \vspace{0.3cm}
 \vspace{0.3cm}
 \vspace{0.3cm}
-\subsubsection{RPC name:~get\_device}
-
-{\bf Overview:} 
-Get the device field of the given VIF.
-
- \noindent {\bf Signature:} 
-\begin{verbatim} string get_device (session_id s, VIF ref self)\end{verbatim}
-
-
-\noindent{\bf Arguments:}
-
- 
-\vspace{0.3cm}
-\begin{tabular}{|c|c|p{7cm}|}
- \hline
-{\bf type} & {\bf name} & {\bf description} \\ \hline
-{\tt VIF ref } & self & reference to the object \\ \hline 
-
-\end{tabular}
-
-\vspace{0.3cm}
-
- \noindent {\bf Return Type:} 
-{\tt 
-string
-}
-
-
-value of the field
-\vspace{0.3cm}
-\vspace{0.3cm}
-\vspace{0.3cm}
-\subsubsection{RPC name:~set\_device}
-
-{\bf Overview:} 
-Set the device field of the given VIF.
-
- \noindent {\bf Signature:} 
-\begin{verbatim} void set_device (session_id s, VIF ref self, string 
value)\end{verbatim}
-
-
-\noindent{\bf Arguments:}
-
- 
-\vspace{0.3cm}
-\begin{tabular}{|c|c|p{7cm}|}
- \hline
-{\bf type} & {\bf name} & {\bf description} \\ \hline
-{\tt VIF ref } & self & reference to the object \\ \hline 
-
-{\tt string } & value & New value to set \\ \hline 
-
-\end{tabular}
-
-\vspace{0.3cm}
-
- \noindent {\bf Return Type:} 
-{\tt 
-void
-}
-
-
-
-\vspace{0.3cm}
-\vspace{0.3cm}
-\vspace{0.3cm}
-\subsubsection{RPC name:~get\_network}
-
-{\bf Overview:} 
-Get the network field of the given VIF.
-
- \noindent {\bf Signature:} 
-\begin{verbatim} (network ref) get_network (session_id s, VIF ref 
self)\end{verbatim}
-
-
-\noindent{\bf Arguments:}
-
- 
-\vspace{0.3cm}
-\begin{tabular}{|c|c|p{7cm}|}
- \hline
-{\bf type} & {\bf name} & {\bf description} \\ \hline
-{\tt VIF ref } & self & reference to the object \\ \hline 
-
-\end{tabular}
-
-\vspace{0.3cm}
-
- \noindent {\bf Return Type:} 
-{\tt 
-network ref
-}
-
-
-value of the field
-\vspace{0.3cm}
-\vspace{0.3cm}
-\vspace{0.3cm}
-\subsubsection{RPC name:~get\_VM}
-
-{\bf Overview:} 
-Get the VM field of the given VIF.
-
- \noindent {\bf Signature:} 
-\begin{verbatim} (VM ref) get_VM (session_id s, VIF ref self)\end{verbatim}
-
-
-\noindent{\bf Arguments:}
-
- 
-\vspace{0.3cm}
-\begin{tabular}{|c|c|p{7cm}|}
- \hline
-{\bf type} & {\bf name} & {\bf description} \\ \hline
-{\tt VIF ref } & self & reference to the object \\ \hline 
-
-\end{tabular}
-
-\vspace{0.3cm}
-
- \noindent {\bf Return Type:} 
-{\tt 
-VM ref
-}
-
-
-value of the field
-\vspace{0.3cm}
-\vspace{0.3cm}
-\vspace{0.3cm}
-\subsubsection{RPC name:~get\_MAC}
-
-{\bf Overview:} 
-Get the MAC field of the given VIF.
-
- \noindent {\bf Signature:} 
-\begin{verbatim} string get_MAC (session_id s, VIF ref self)\end{verbatim}
-
-
-\noindent{\bf Arguments:}
-
- 
-\vspace{0.3cm}
-\begin{tabular}{|c|c|p{7cm}|}
- \hline
-{\bf type} & {\bf name} & {\bf description} \\ \hline
-{\tt VIF ref } & self & reference to the object \\ \hline 
-
-\end{tabular}
-
-\vspace{0.3cm}
-
- \noindent {\bf Return Type:} 
-{\tt 
-string
-}
-
-
-value of the field
-\vspace{0.3cm}
-\vspace{0.3cm}
-\vspace{0.3cm}
-\subsubsection{RPC name:~set\_MAC}
-
-{\bf Overview:} 
-Set the MAC field of the given VIF.
-
- \noindent {\bf Signature:} 
-\begin{verbatim} void set_MAC (session_id s, VIF ref self, string 
value)\end{verbatim}
-
-
-\noindent{\bf Arguments:}
-
- 
-\vspace{0.3cm}
-\begin{tabular}{|c|c|p{7cm}|}
- \hline
-{\bf type} & {\bf name} & {\bf description} \\ \hline
-{\tt VIF ref } & self & reference to the object \\ \hline 
-
-{\tt string } & value & New value to set \\ \hline 
-
-\end{tabular}
-
-\vspace{0.3cm}
-
- \noindent {\bf Return Type:} 
-{\tt 
-void
-}
-
-
-
-\vspace{0.3cm}
-\vspace{0.3cm}
-\vspace{0.3cm}
-\subsubsection{RPC name:~get\_MTU}
-
-{\bf Overview:} 
-Get the MTU field of the given VIF.
-
- \noindent {\bf Signature:} 
-\begin{verbatim} int get_MTU (session_id s, VIF ref self)\end{verbatim}
-
-
-\noindent{\bf Arguments:}
-
- 
-\vspace{0.3cm}
-\begin{tabular}{|c|c|p{7cm}|}
- \hline
-{\bf type} & {\bf name} & {\bf description} \\ \hline
-{\tt VIF ref } & self & reference to the object \\ \hline 
-
-\end{tabular}
-
-\vspace{0.3cm}
-
- \noindent {\bf Return Type:} 
-{\tt 
-int
-}
-
-
-value of the field
-\vspace{0.3cm}
-\vspace{0.3cm}
-\vspace{0.3cm}
-\subsubsection{RPC name:~set\_MTU}
-
-{\bf Overview:} 
-Set the MTU field of the given VIF.
-
- \noindent {\bf Signature:} 
-\begin{verbatim} void set_MTU (session_id s, VIF ref self, int 
value)\end{verbatim}
-
-
-\noindent{\bf Arguments:}
-
- 
-\vspace{0.3cm}
-\begin{tabular}{|c|c|p{7cm}|}
- \hline
-{\bf type} & {\bf name} & {\bf description} \\ \hline
-{\tt VIF ref } & self & reference to the object \\ \hline 
-
-{\tt int } & value & New value to set \\ \hline 
-
-\end{tabular}
-
-\vspace{0.3cm}
-
- \noindent {\bf Return Type:} 
-{\tt 
-void
-}
-
-
-
-\vspace{0.3cm}
-\vspace{0.3cm}
-\vspace{0.3cm}
 \subsubsection{RPC name:~get\_io\_read\_kbs}
 
 {\bf Overview:} 
-Get the io/read\_kbs field of the given VIF.
-
- \noindent {\bf Signature:} 
-\begin{verbatim} float get_io_read_kbs (session_id s, VIF ref 
self)\end{verbatim}
-
-
-\noindent{\bf Arguments:}
-
- 
-\vspace{0.3cm}
-\begin{tabular}{|c|c|p{7cm}|}
- \hline
-{\bf type} & {\bf name} & {\bf description} \\ \hline
-{\tt VIF ref } & self & reference to the object \\ \hline 
+Get the io/read\_kbs field of the given VIF\_metrics.
+
+ \noindent {\bf Signature:} 
+\begin{verbatim} float get_io_read_kbs (session_id s, VIF_metrics ref 
self)\end{verbatim}
+
+
+\noindent{\bf Arguments:}
+
+ 
+\vspace{0.3cm}
+\begin{tabular}{|c|c|p{7cm}|}
+ \hline
+{\bf type} & {\bf name} & {\bf description} \\ \hline
+{\tt VIF\_metrics ref } & self & reference to the object \\ \hline 
 
 \end{tabular}
 
@@ -7142,20 +8031,20 @@ value of the field
 \subsubsection{RPC name:~get\_io\_write\_kbs}
 
 {\bf Overview:} 
-Get the io/write\_kbs field of the given VIF.
-
- \noindent {\bf Signature:} 
-\begin{verbatim} float get_io_write_kbs (session_id s, VIF ref 
self)\end{verbatim}
-
-
-\noindent{\bf Arguments:}
-
- 
-\vspace{0.3cm}
-\begin{tabular}{|c|c|p{7cm}|}
- \hline
-{\bf type} & {\bf name} & {\bf description} \\ \hline
-{\tt VIF ref } & self & reference to the object \\ \hline 
+Get the io/write\_kbs field of the given VIF\_metrics.
+
+ \noindent {\bf Signature:} 
+\begin{verbatim} float get_io_write_kbs (session_id s, VIF_metrics ref 
self)\end{verbatim}
+
+
+\noindent{\bf Arguments:}
+
+ 
+\vspace{0.3cm}
+\begin{tabular}{|c|c|p{7cm}|}
+ \hline
+{\bf type} & {\bf name} & {\bf description} \\ \hline
+{\tt VIF\_metrics ref } & self & reference to the object \\ \hline 
 
 \end{tabular}
 
@@ -7171,77 +8060,13 @@ value of the field
 \vspace{0.3cm}
 \vspace{0.3cm}
 \vspace{0.3cm}
-\subsubsection{RPC name:~create}
-
-{\bf Overview:} 
-Create a new VIF instance, and return its handle.
-
- \noindent {\bf Signature:} 
-\begin{verbatim} (VIF ref) create (session_id s, VIF record args)\end{verbatim}
-
-
-\noindent{\bf Arguments:}
-
- 
-\vspace{0.3cm}
-\begin{tabular}{|c|c|p{7cm}|}
- \hline
-{\bf type} & {\bf name} & {\bf description} \\ \hline
-{\tt VIF record } & args & All constructor arguments \\ \hline 
-
-\end{tabular}
-
-\vspace{0.3cm}
-
- \noindent {\bf Return Type:} 
-{\tt 
-VIF ref
-}
-
-
-reference to the newly created object
-\vspace{0.3cm}
-\vspace{0.3cm}
-\vspace{0.3cm}
-\subsubsection{RPC name:~destroy}
-
-{\bf Overview:} 
-Destroy the specified VIF instance.
-
- \noindent {\bf Signature:} 
-\begin{verbatim} void destroy (session_id s, VIF ref self)\end{verbatim}
-
-
-\noindent{\bf Arguments:}
-
- 
-\vspace{0.3cm}
-\begin{tabular}{|c|c|p{7cm}|}
- \hline
-{\bf type} & {\bf name} & {\bf description} \\ \hline
-{\tt VIF ref } & self & reference to the object \\ \hline 
-
-\end{tabular}
-
-\vspace{0.3cm}
-
- \noindent {\bf Return Type:} 
-{\tt 
-void
-}
-
-
-
-\vspace{0.3cm}
-\vspace{0.3cm}
-\vspace{0.3cm}
 \subsubsection{RPC name:~get\_by\_uuid}
 
 {\bf Overview:} 
-Get a reference to the VIF instance with the specified UUID.
-
- \noindent {\bf Signature:} 
-\begin{verbatim} (VIF ref) get_by_uuid (session_id s, string 
uuid)\end{verbatim}
+Get a reference to the VIF\_metrics instance with the specified UUID.
+
+ \noindent {\bf Signature:} 
+\begin{verbatim} (VIF_metrics ref) get_by_uuid (session_id s, string 
uuid)\end{verbatim}
 
 
 \noindent{\bf Arguments:}
@@ -7259,7 +8084,7 @@ Get a reference to the VIF instance with
 
  \noindent {\bf Return Type:} 
 {\tt 
-VIF ref
+VIF\_metrics ref
 }
 
 
@@ -7270,28 +8095,28 @@ reference to the object
 \subsubsection{RPC name:~get\_record}
 
 {\bf Overview:} 
-Get a record containing the current state of the given VIF.
-
- \noindent {\bf Signature:} 
-\begin{verbatim} (VIF record) get_record (session_id s, VIF ref 
self)\end{verbatim}
-
-
-\noindent{\bf Arguments:}
-
- 
-\vspace{0.3cm}
-\begin{tabular}{|c|c|p{7cm}|}
- \hline
-{\bf type} & {\bf name} & {\bf description} \\ \hline
-{\tt VIF ref } & self & reference to the object \\ \hline 
-
-\end{tabular}
-
-\vspace{0.3cm}
-
- \noindent {\bf Return Type:} 
-{\tt 
-VIF record
+Get a record containing the current state of the given VIF\_metrics.
+
+ \noindent {\bf Signature:} 
+\begin{verbatim} (VIF_metrics record) get_record (session_id s, VIF_metrics 
ref self)\end{verbatim}
+
+
+\noindent{\bf Arguments:}
+
+ 
+\vspace{0.3cm}
+\begin{tabular}{|c|c|p{7cm}|}
+ \hline
+{\bf type} & {\bf name} & {\bf description} \\ \hline
+{\tt VIF\_metrics ref } & self & reference to the object \\ \hline 
+
+\end{tabular}
+
+\vspace{0.3cm}
+
+ \noindent {\bf Return Type:} 
+{\tt 
+VIF\_metrics record
 }
 
 
@@ -7399,6 +8224,27 @@ void
 \noindent{\bf Possible Error Codes:} {\tt PIF\_IS\_PHYSICAL}
 
 \vspace{0.6cm}
+\subsubsection{RPC name:~get\_all}
+
+{\bf Overview:} 
+Return a list of all the PIFs known to the system.
+
+ \noindent {\bf Signature:} 
+\begin{verbatim} ((PIF ref) Set) get_all (session_id s)\end{verbatim}
+
+
+\vspace{0.3cm}
+
+ \noindent {\bf Return Type:} 
+{\tt 
+(PIF ref) Set
+}
+
+
+references to all objects
+\vspace{0.3cm}
+\vspace{0.3cm}
+\vspace{0.3cm}
 \subsubsection{RPC name:~get\_uuid}
 
 {\bf Overview:} 
@@ -7869,12 +8715,32 @@ Quals & Field & Type & Description \\
 Quals & Field & Type & Description \\
 \hline
 $\mathit{RO}_\mathit{run}$ &  {\tt uuid} & string & unique identifier/object 
reference \\
-$\mathit{RO}_\mathit{ins}$ &  {\tt PIF} & PIF ref & PIF to which these metrics 
apply \\
 $\mathit{RO}_\mathit{run}$ &  {\tt io/read\_kbs} & float & Read bandwidth 
(KiB/s) \\
 $\mathit{RO}_\mathit{run}$ &  {\tt io/write\_kbs} & float & Write bandwidth 
(KiB/s) \\
 \hline
 \end{longtable}
 \subsection{Additional RPCs associated with class: PIF\_metrics}
+\subsubsection{RPC name:~get\_all}
+
+{\bf Overview:} 
+Return a list of all the PIF\_metrics instances known to the system.
+
+ \noindent {\bf Signature:} 
+\begin{verbatim} ((PIF_metrics ref) Set) get_all (session_id s)\end{verbatim}
+
+
+\vspace{0.3cm}
+
+ \noindent {\bf Return Type:} 
+{\tt 
+(PIF\_metrics ref) Set
+}
+
+
+references to all objects
+\vspace{0.3cm}
+\vspace{0.3cm}
+\vspace{0.3cm}
 \subsubsection{RPC name:~get\_uuid}
 
 {\bf Overview:} 
@@ -7900,38 +8766,6 @@ Get the uuid field of the given PIF\_met
  \noindent {\bf Return Type:} 
 {\tt 
 string
-}
-
-
-value of the field
-\vspace{0.3cm}
-\vspace{0.3cm}
-\vspace{0.3cm}
-\subsubsection{RPC name:~get\_PIF}
-
-{\bf Overview:} 
-Get the PIF field of the given PIF\_metrics.
-
- \noindent {\bf Signature:} 
-\begin{verbatim} (PIF ref) get_PIF (session_id s, PIF_metrics ref 
self)\end{verbatim}
-
-
-\noindent{\bf Arguments:}
-
- 
-\vspace{0.3cm}
-\begin{tabular}{|c|c|p{7cm}|}
- \hline
-{\bf type} & {\bf name} & {\bf description} \\ \hline
-{\tt PIF\_metrics ref } & self & reference to the object \\ \hline 
-
-\end{tabular}
-
-\vspace{0.3cm}
-
- \noindent {\bf Return Type:} 
-{\tt 
-PIF ref
 }
 
 
@@ -8718,7 +9552,7 @@ Quals & Field & Type & Description \\
 $\mathit{RW}$ &  {\tt SR} & SR ref & storage repository in which the VDI 
resides \\
 $\mathit{RO}_\mathit{run}$ &  {\tt VBDs} & (VBD ref) Set & list of vbds that 
refer to this disk \\
 $\mathit{RO}_\mathit{run}$ &  {\tt crash\_dumps} & (crashdump ref) Set & list 
of crash dumps that refer to this disk \\
-$\mathit{RW}$ &  {\tt virtual\_size} & int & size of disk as presented to the 
guest (in multiples of sector\_size field) \\
+$\mathit{RW}$ &  {\tt virtual\_size} & int & size of disk as presented to the 
guest (in bytes). Note that, depending on storage backend type, requested size 
may not be respected exactly \\
 $\mathit{RO}_\mathit{run}$ &  {\tt physical\_utilisation} & int & amount of 
physical space that the disk image is currently taking up on the storage 
repository (in bytes) \\
 $\mathit{RO}_\mathit{ins}$ &  {\tt sector\_size} & int & sector size of VDI 
(in bytes) \\
 $\mathit{RO}_\mathit{ins}$ &  {\tt type} & vdi\_type & type of the VDI \\
@@ -8791,6 +9625,27 @@ void
 
 
 
+\vspace{0.3cm}
+\vspace{0.3cm}
+\vspace{0.3cm}
+\subsubsection{RPC name:~get\_all}
+
+{\bf Overview:} 
+Return a list of all the VDIs known to the system.
+
+ \noindent {\bf Signature:} 
+\begin{verbatim} ((VDI ref) Set) get_all (session_id s)\end{verbatim}
+
+
+\vspace{0.3cm}
+
+ \noindent {\bf Return Type:} 
+{\tt 
+(VDI ref) Set
+}
+
+
+references to all objects
 \vspace{0.3cm}
 \vspace{0.3cm}
 \vspace{0.3cm}
@@ -9562,63 +10417,982 @@ Quals & Field & Type & Description \\
 $\mathit{RW}$ &  {\tt bootable} & bool & true if this VBD is bootable \\
 $\mathit{RW}$ &  {\tt mode} & vbd\_mode & the mode the VBD should be mounted 
with \\
 $\mathit{RW}$ &  {\tt type} & vbd\_type & how the VBD will appear to the guest 
(e.g. disk or CD) \\
+$\mathit{RO}_\mathit{run}$ &  {\tt currently\_attached} & bool & is the device 
currently attached (erased on reboot) \\
+$\mathit{RO}_\mathit{run}$ &  {\tt status\_code} & int & error/success code 
associated with last attach-operation (erased on reboot) \\
+$\mathit{RO}_\mathit{run}$ &  {\tt status\_detail} & string & error/success 
information associated with last attach-operation status (erased on reboot) \\
+$\mathit{RW}$ &  {\tt qos/algorithm\_type} & string & QoS algorithm to use \\
+$\mathit{RW}$ &  {\tt qos/algorithm\_params} & (string $\rightarrow$ string) 
Map & parameters for chosen QoS algorithm \\
+$\mathit{RO}_\mathit{run}$ &  {\tt qos/supported\_algorithms} & string Set & 
supported QoS algorithms for this VBD \\
+$\mathit{RO}_\mathit{run}$ &  {\tt metrics} & VBD\_metrics ref & metrics 
associated with this VBD \\
+\hline
+\end{longtable}
+\subsection{Additional RPCs associated with class: VBD}
+\subsubsection{RPC name:~media\_change}
+
+{\bf Overview:} 
+Change the media in the device for CDROM-like devices only. For other
+devices, detach the VBD and attach a new one.
+
+ \noindent {\bf Signature:} 
+\begin{verbatim} void media_change (session_id s, VBD ref vbd, VDI ref 
vdi)\end{verbatim}
+
+
+\noindent{\bf Arguments:}
+
+ 
+\vspace{0.3cm}
+\begin{tabular}{|c|c|p{7cm}|}
+ \hline
+{\bf type} & {\bf name} & {\bf description} \\ \hline
+{\tt VBD ref } & vbd & The vbd representing the CDROM-like device \\ \hline 
+
+{\tt VDI ref } & vdi & The new VDI to 'insert' \\ \hline 
+
+\end{tabular}
+
+\vspace{0.3cm}
+
+ \noindent {\bf Return Type:} 
+{\tt 
+void
+}
+
+
+
+\vspace{0.3cm}
+\vspace{0.3cm}
+\vspace{0.3cm}
+\subsubsection{RPC name:~get\_all}
+
+{\bf Overview:} 
+Return a list of all the VBDs known to the system.
+
+ \noindent {\bf Signature:} 
+\begin{verbatim} ((VBD ref) Set) get_all (session_id s)\end{verbatim}
+
+
+\vspace{0.3cm}
+
+ \noindent {\bf Return Type:} 
+{\tt 
+(VBD ref) Set
+}
+
+
+references to all objects
+\vspace{0.3cm}
+\vspace{0.3cm}
+\vspace{0.3cm}
+\subsubsection{RPC name:~get\_uuid}
+
+{\bf Overview:} 
+Get the uuid field of the given VBD.
+
+ \noindent {\bf Signature:} 
+\begin{verbatim} string get_uuid (session_id s, VBD ref self)\end{verbatim}
+
+
+\noindent{\bf Arguments:}
+
+ 
+\vspace{0.3cm}
+\begin{tabular}{|c|c|p{7cm}|}
+ \hline
+{\bf type} & {\bf name} & {\bf description} \\ \hline
+{\tt VBD ref } & self & reference to the object \\ \hline 
+
+\end{tabular}
+
+\vspace{0.3cm}
+
+ \noindent {\bf Return Type:} 
+{\tt 
+string
+}
+
+
+value of the field
+\vspace{0.3cm}
+\vspace{0.3cm}
+\vspace{0.3cm}
+\subsubsection{RPC name:~get\_VM}
+
+{\bf Overview:} 
+Get the VM field of the given VBD.
+
+ \noindent {\bf Signature:} 
+\begin{verbatim} (VM ref) get_VM (session_id s, VBD ref self)\end{verbatim}
+
+
+\noindent{\bf Arguments:}
+
+ 
+\vspace{0.3cm}
+\begin{tabular}{|c|c|p{7cm}|}
+ \hline
+{\bf type} & {\bf name} & {\bf description} \\ \hline
+{\tt VBD ref } & self & reference to the object \\ \hline 
+
+\end{tabular}
+
+\vspace{0.3cm}
+
+ \noindent {\bf Return Type:} 
+{\tt 
+VM ref
+}
+
+
+value of the field
+\vspace{0.3cm}
+\vspace{0.3cm}
+\vspace{0.3cm}
+\subsubsection{RPC name:~get\_VDI}
+
+{\bf Overview:} 
+Get the VDI field of the given VBD.
+
+ \noindent {\bf Signature:} 
+\begin{verbatim} (VDI ref) get_VDI (session_id s, VBD ref self)\end{verbatim}
+
+
+\noindent{\bf Arguments:}
+
+ 
+\vspace{0.3cm}
+\begin{tabular}{|c|c|p{7cm}|}
+ \hline
+{\bf type} & {\bf name} & {\bf description} \\ \hline
+{\tt VBD ref } & self & reference to the object \\ \hline 
+
+\end{tabular}
+
+\vspace{0.3cm}
+
+ \noindent {\bf Return Type:} 
+{\tt 
+VDI ref
+}
+
+
+value of the field
+\vspace{0.3cm}
+\vspace{0.3cm}
+\vspace{0.3cm}
+\subsubsection{RPC name:~get\_device}
+
+{\bf Overview:} 
+Get the device field of the given VBD.
+
+ \noindent {\bf Signature:} 
+\begin{verbatim} string get_device (session_id s, VBD ref self)\end{verbatim}
+
+
+\noindent{\bf Arguments:}
+
+ 
+\vspace{0.3cm}
+\begin{tabular}{|c|c|p{7cm}|}
+ \hline
+{\bf type} & {\bf name} & {\bf description} \\ \hline
+{\tt VBD ref } & self & reference to the object \\ \hline 
+
+\end{tabular}
+
+\vspace{0.3cm}
+
+ \noindent {\bf Return Type:} 
+{\tt 
+string
+}
+
+
+value of the field
+\vspace{0.3cm}
+\vspace{0.3cm}
+\vspace{0.3cm}
+\subsubsection{RPC name:~set\_device}
+
+{\bf Overview:} 
+Set the device field of the given VBD.
+
+ \noindent {\bf Signature:} 
+\begin{verbatim} void set_device (session_id s, VBD ref self, string 
value)\end{verbatim}
+
+
+\noindent{\bf Arguments:}
+
+ 
+\vspace{0.3cm}
+\begin{tabular}{|c|c|p{7cm}|}
+ \hline
+{\bf type} & {\bf name} & {\bf description} \\ \hline
+{\tt VBD ref } & self & reference to the object \\ \hline 
+
+{\tt string } & value & New value to set \\ \hline 
+
+\end{tabular}
+
+\vspace{0.3cm}
+
+ \noindent {\bf Return Type:} 
+{\tt 
+void
+}
+
+
+
+\vspace{0.3cm}
+\vspace{0.3cm}
+\vspace{0.3cm}
+\subsubsection{RPC name:~get\_bootable}
+
+{\bf Overview:} 
+Get the bootable field of the given VBD.
+
+ \noindent {\bf Signature:} 
+\begin{verbatim} bool get_bootable (session_id s, VBD ref self)\end{verbatim}
+
+
+\noindent{\bf Arguments:}
+
+ 
+\vspace{0.3cm}
+\begin{tabular}{|c|c|p{7cm}|}
+ \hline
+{\bf type} & {\bf name} & {\bf description} \\ \hline
+{\tt VBD ref } & self & reference to the object \\ \hline 
+
+\end{tabular}
+
+\vspace{0.3cm}
+
+ \noindent {\bf Return Type:} 
+{\tt 
+bool
+}
+
+
+value of the field
+\vspace{0.3cm}
+\vspace{0.3cm}
+\vspace{0.3cm}
+\subsubsection{RPC name:~set\_bootable}
+
+{\bf Overview:} 
+Set the bootable field of the given VBD.
+
+ \noindent {\bf Signature:} 
+\begin{verbatim} void set_bootable (session_id s, VBD ref self, bool 
value)\end{verbatim}
+
+
+\noindent{\bf Arguments:}
+
+ 
+\vspace{0.3cm}
+\begin{tabular}{|c|c|p{7cm}|}
+ \hline
+{\bf type} & {\bf name} & {\bf description} \\ \hline
+{\tt VBD ref } & self & reference to the object \\ \hline 
+
+{\tt bool } & value & New value to set \\ \hline 
+
+\end{tabular}
+
+\vspace{0.3cm}
+
+ \noindent {\bf Return Type:} 
+{\tt 
+void
+}
+
+
+
+\vspace{0.3cm}
+\vspace{0.3cm}
+\vspace{0.3cm}
+\subsubsection{RPC name:~get\_mode}
+
+{\bf Overview:} 
+Get the mode field of the given VBD.
+
+ \noindent {\bf Signature:} 
+\begin{verbatim} (vbd_mode) get_mode (session_id s, VBD ref self)\end{verbatim}
+
+
+\noindent{\bf Arguments:}
+
+ 
+\vspace{0.3cm}
+\begin{tabular}{|c|c|p{7cm}|}
+ \hline
+{\bf type} & {\bf name} & {\bf description} \\ \hline
+{\tt VBD ref } & self & reference to the object \\ \hline 
+
+\end{tabular}
+
+\vspace{0.3cm}
+
+ \noindent {\bf Return Type:} 
+{\tt 
+vbd\_mode
+}
+
+
+value of the field
+\vspace{0.3cm}
+\vspace{0.3cm}
+\vspace{0.3cm}
+\subsubsection{RPC name:~set\_mode}
+
+{\bf Overview:} 
+Set the mode field of the given VBD.
+
+ \noindent {\bf Signature:} 
+\begin{verbatim} void set_mode (session_id s, VBD ref self, vbd_mode 
value)\end{verbatim}
+
+
+\noindent{\bf Arguments:}
+
+ 
+\vspace{0.3cm}
+\begin{tabular}{|c|c|p{7cm}|}
+ \hline
+{\bf type} & {\bf name} & {\bf description} \\ \hline
+{\tt VBD ref } & self & reference to the object \\ \hline 
+
+{\tt vbd\_mode } & value & New value to set \\ \hline 
+
+\end{tabular}
+
+\vspace{0.3cm}
+
+ \noindent {\bf Return Type:} 
+{\tt 
+void
+}
+
+
+
+\vspace{0.3cm}
+\vspace{0.3cm}
+\vspace{0.3cm}
+\subsubsection{RPC name:~get\_type}
+
+{\bf Overview:} 
+Get the type field of the given VBD.
+
+ \noindent {\bf Signature:} 
+\begin{verbatim} (vbd_type) get_type (session_id s, VBD ref self)\end{verbatim}
+
+
+\noindent{\bf Arguments:}
+
+ 
+\vspace{0.3cm}
+\begin{tabular}{|c|c|p{7cm}|}
+ \hline
+{\bf type} & {\bf name} & {\bf description} \\ \hline
+{\tt VBD ref } & self & reference to the object \\ \hline 
+
+\end{tabular}
+
+\vspace{0.3cm}
+
+ \noindent {\bf Return Type:} 
+{\tt 
+vbd\_type
+}
+
+
+value of the field
+\vspace{0.3cm}
+\vspace{0.3cm}
+\vspace{0.3cm}
+\subsubsection{RPC name:~set\_type}
+
+{\bf Overview:} 
+Set the type field of the given VBD.
+
+ \noindent {\bf Signature:} 
+\begin{verbatim} void set_type (session_id s, VBD ref self, vbd_type 
value)\end{verbatim}
+
+
+\noindent{\bf Arguments:}
+
+ 
+\vspace{0.3cm}
+\begin{tabular}{|c|c|p{7cm}|}
+ \hline
+{\bf type} & {\bf name} & {\bf description} \\ \hline
+{\tt VBD ref } & self & reference to the object \\ \hline 
+
+{\tt vbd\_type } & value & New value to set \\ \hline 
+
+\end{tabular}
+
+\vspace{0.3cm}
+
+ \noindent {\bf Return Type:} 
+{\tt 
+void
+}
+
+
+
+\vspace{0.3cm}
+\vspace{0.3cm}
+\vspace{0.3cm}
+\subsubsection{RPC name:~get\_currently\_attached}
+
+{\bf Overview:} 
+Get the currently\_attached field of the given VBD.
+
+ \noindent {\bf Signature:} 
+\begin{verbatim} bool get_currently_attached (session_id s, VBD ref 
self)\end{verbatim}
+
+
+\noindent{\bf Arguments:}
+
+ 
+\vspace{0.3cm}
+\begin{tabular}{|c|c|p{7cm}|}
+ \hline
+{\bf type} & {\bf name} & {\bf description} \\ \hline
+{\tt VBD ref } & self & reference to the object \\ \hline 
+
+\end{tabular}
+
+\vspace{0.3cm}
+
+ \noindent {\bf Return Type:} 
+{\tt 
+bool
+}
+
+
+value of the field
+\vspace{0.3cm}
+\vspace{0.3cm}
+\vspace{0.3cm}
+\subsubsection{RPC name:~get\_status\_code}
+
+{\bf Overview:} 
+Get the status\_code field of the given VBD.
+
+ \noindent {\bf Signature:} 
+\begin{verbatim} int get_status_code (session_id s, VBD ref self)\end{verbatim}
+
+
+\noindent{\bf Arguments:}
+
+ 
+\vspace{0.3cm}
+\begin{tabular}{|c|c|p{7cm}|}
+ \hline
+{\bf type} & {\bf name} & {\bf description} \\ \hline
+{\tt VBD ref } & self & reference to the object \\ \hline 
+
+\end{tabular}
+
+\vspace{0.3cm}
+
+ \noindent {\bf Return Type:} 
+{\tt 
+int
+}
+
+
+value of the field
+\vspace{0.3cm}
+\vspace{0.3cm}
+\vspace{0.3cm}
+\subsubsection{RPC name:~get\_status\_detail}
+
+{\bf Overview:} 
+Get the status\_detail field of the given VBD.
+
+ \noindent {\bf Signature:} 
+\begin{verbatim} string get_status_detail (session_id s, VBD ref 
self)\end{verbatim}
+
+
+\noindent{\bf Arguments:}
+
+ 
+\vspace{0.3cm}
+\begin{tabular}{|c|c|p{7cm}|}
+ \hline
+{\bf type} & {\bf name} & {\bf description} \\ \hline
+{\tt VBD ref } & self & reference to the object \\ \hline 
+
+\end{tabular}
+
+\vspace{0.3cm}
+
+ \noindent {\bf Return Type:} 
+{\tt 
+string
+}
+
+
+value of the field
+\vspace{0.3cm}
+\vspace{0.3cm}
+\vspace{0.3cm}
+\subsubsection{RPC name:~get\_qos\_algorithm\_type}
+
+{\bf Overview:} 
+Get the qos/algorithm\_type field of the given VBD.
+
+ \noindent {\bf Signature:} 
+\begin{verbatim} string get_qos_algorithm_type (session_id s, VBD ref 
self)\end{verbatim}
+
+
+\noindent{\bf Arguments:}
+
+ 
+\vspace{0.3cm}
+\begin{tabular}{|c|c|p{7cm}|}
+ \hline
+{\bf type} & {\bf name} & {\bf description} \\ \hline
+{\tt VBD ref } & self & reference to the object \\ \hline 
+
+\end{tabular}
+
+\vspace{0.3cm}
+
+ \noindent {\bf Return Type:} 
+{\tt 
+string
+}
+
+
+value of the field
+\vspace{0.3cm}
+\vspace{0.3cm}
+\vspace{0.3cm}
+\subsubsection{RPC name:~set\_qos\_algorithm\_type}
+
+{\bf Overview:} 
+Set the qos/algorithm\_type field of the given VBD.
+
+ \noindent {\bf Signature:} 
+\begin{verbatim} void set_qos_algorithm_type (session_id s, VBD ref self, 
string value)\end{verbatim}
+
+
+\noindent{\bf Arguments:}
+
+ 
+\vspace{0.3cm}
+\begin{tabular}{|c|c|p{7cm}|}
+ \hline
+{\bf type} & {\bf name} & {\bf description} \\ \hline
+{\tt VBD ref } & self & reference to the object \\ \hline 
+
+{\tt string } & value & New value to set \\ \hline 
+
+\end{tabular}
+
+\vspace{0.3cm}
+
+ \noindent {\bf Return Type:} 
+{\tt 
+void
+}
+
+
+
+\vspace{0.3cm}
+\vspace{0.3cm}
+\vspace{0.3cm}
+\subsubsection{RPC name:~get\_qos\_algorithm\_params}
+
+{\bf Overview:} 
+Get the qos/algorithm\_params field of the given VBD.
+
+ \noindent {\bf Signature:} 
+\begin{verbatim} ((string -> string) Map) get_qos_algorithm_params (session_id 
s, VBD ref self)\end{verbatim}
+
+
+\noindent{\bf Arguments:}
+
+ 
+\vspace{0.3cm}
+\begin{tabular}{|c|c|p{7cm}|}
+ \hline
+{\bf type} & {\bf name} & {\bf description} \\ \hline
+{\tt VBD ref } & self & reference to the object \\ \hline 
+
+\end{tabular}
+
+\vspace{0.3cm}
+
+ \noindent {\bf Return Type:} 
+{\tt 
+(string $\rightarrow$ string) Map
+}
+
+
+value of the field
+\vspace{0.3cm}
+\vspace{0.3cm}
+\vspace{0.3cm}
+\subsubsection{RPC name:~set\_qos\_algorithm\_params}
+
+{\bf Overview:} 
+Set the qos/algorithm\_params field of the given VBD.
+
+ \noindent {\bf Signature:} 
+\begin{verbatim} void set_qos_algorithm_params (session_id s, VBD ref self, 
(string -> string) Map value)\end{verbatim}
+
+
+\noindent{\bf Arguments:}
+
+ 
+\vspace{0.3cm}
+\begin{tabular}{|c|c|p{7cm}|}
+ \hline
+{\bf type} & {\bf name} & {\bf description} \\ \hline
+{\tt VBD ref } & self & reference to the object \\ \hline 
+
+{\tt (string $\rightarrow$ string) Map } & value & New value to set \\ \hline 
+
+\end{tabular}
+
+\vspace{0.3cm}
+
+ \noindent {\bf Return Type:} 
+{\tt 
+void
+}
+
+
+
+\vspace{0.3cm}
+\vspace{0.3cm}
+\vspace{0.3cm}
+\subsubsection{RPC name:~add\_to\_qos\_algorithm\_params}
+
+{\bf Overview:} 
+Add the given key-value pair to the qos/algorithm\_params field of the
+given VBD.
+
+ \noindent {\bf Signature:} 
+\begin{verbatim} void add_to_qos_algorithm_params (session_id s, VBD ref self, 
string key, string value)\end{verbatim}
+
+
+\noindent{\bf Arguments:}
+
+ 
+\vspace{0.3cm}
+\begin{tabular}{|c|c|p{7cm}|}
+ \hline
+{\bf type} & {\bf name} & {\bf description} \\ \hline
+{\tt VBD ref } & self & reference to the object \\ \hline 
+
+{\tt string } & key & Key to add \\ \hline 
+
+{\tt string } & value & Value to add \\ \hline 
+
+\end{tabular}
+
+\vspace{0.3cm}
+
+ \noindent {\bf Return Type:} 
+{\tt 
+void
+}
+
+
+
+\vspace{0.3cm}
+\vspace{0.3cm}
+\vspace{0.3cm}
+\subsubsection{RPC name:~remove\_from\_qos\_algorithm\_params}
+
+{\bf Overview:} 
+Remove the given key and its corresponding value from the
+qos/algorithm\_params field of the given VBD.  If the key is not in that
+Map, then do nothing.
+
+ \noindent {\bf Signature:} 
+\begin{verbatim} void remove_from_qos_algorithm_params (session_id s, VBD ref 
self, string key)\end{verbatim}
+
+
+\noindent{\bf Arguments:}
+
+ 
+\vspace{0.3cm}
+\begin{tabular}{|c|c|p{7cm}|}
+ \hline
+{\bf type} & {\bf name} & {\bf description} \\ \hline
+{\tt VBD ref } & self & reference to the object \\ \hline 
+
+{\tt string } & key & Key to remove \\ \hline 
+
+\end{tabular}
+
+\vspace{0.3cm}
+
+ \noindent {\bf Return Type:} 
+{\tt 
+void
+}
+
+
+
+\vspace{0.3cm}
+\vspace{0.3cm}
+\vspace{0.3cm}
+\subsubsection{RPC name:~get\_qos\_supported\_algorithms}
+
+{\bf Overview:} 
+Get the qos/supported\_algorithms field of the given VBD.
+
+ \noindent {\bf Signature:} 
+\begin{verbatim} (string Set) get_qos_supported_algorithms (session_id s, VBD 
ref self)\end{verbatim}
+
+
+\noindent{\bf Arguments:}
+
+ 
+\vspace{0.3cm}
+\begin{tabular}{|c|c|p{7cm}|}
+ \hline
+{\bf type} & {\bf name} & {\bf description} \\ \hline
+{\tt VBD ref } & self & reference to the object \\ \hline 
+
+\end{tabular}
+
+\vspace{0.3cm}
+
+ \noindent {\bf Return Type:} 
+{\tt 
+string Set
+}
+
+
+value of the field
+\vspace{0.3cm}
+\vspace{0.3cm}
+\vspace{0.3cm}
+\subsubsection{RPC name:~get\_metrics}
+
+{\bf Overview:} 
+Get the metrics field of the given VBD.
+
+ \noindent {\bf Signature:} 
+\begin{verbatim} (VBD_metrics ref) get_metrics (session_id s, VBD ref 
self)\end{verbatim}
+
+
+\noindent{\bf Arguments:}
+
+ 
+\vspace{0.3cm}
+\begin{tabular}{|c|c|p{7cm}|}
+ \hline
+{\bf type} & {\bf name} & {\bf description} \\ \hline
+{\tt VBD ref } & self & reference to the object \\ \hline 
+
+\end{tabular}
+
+\vspace{0.3cm}
+
+ \noindent {\bf Return Type:} 
+{\tt 
+VBD\_metrics ref
+}
+
+
+value of the field
+\vspace{0.3cm}
+\vspace{0.3cm}
+\vspace{0.3cm}
+\subsubsection{RPC name:~create}
+
+{\bf Overview:} 
+Create a new VBD instance, and return its handle.
+
+ \noindent {\bf Signature:} 
+\begin{verbatim} (VBD ref) create (session_id s, VBD record args)\end{verbatim}
+
+
+\noindent{\bf Arguments:}
+
+ 
+\vspace{0.3cm}
+\begin{tabular}{|c|c|p{7cm}|}
+ \hline
+{\bf type} & {\bf name} & {\bf description} \\ \hline
+{\tt VBD record } & args & All constructor arguments \\ \hline 
+
+\end{tabular}
+
+\vspace{0.3cm}
+
+ \noindent {\bf Return Type:} 
+{\tt 
+VBD ref
+}
+
+
+reference to the newly created object
+\vspace{0.3cm}
+\vspace{0.3cm}
+\vspace{0.3cm}
+\subsubsection{RPC name:~destroy}
+
+{\bf Overview:} 
+Destroy the specified VBD instance.
+
+ \noindent {\bf Signature:} 
+\begin{verbatim} void destroy (session_id s, VBD ref self)\end{verbatim}
+
+
+\noindent{\bf Arguments:}
+
+ 
+\vspace{0.3cm}
+\begin{tabular}{|c|c|p{7cm}|}
+ \hline
+{\bf type} & {\bf name} & {\bf description} \\ \hline
+{\tt VBD ref } & self & reference to the object \\ \hline 
+
+\end{tabular}
+
+\vspace{0.3cm}
+
+ \noindent {\bf Return Type:} 
+{\tt 
+void
+}
+
+
+
+\vspace{0.3cm}
+\vspace{0.3cm}
+\vspace{0.3cm}
+\subsubsection{RPC name:~get\_by\_uuid}
+
+{\bf Overview:} 
+Get a reference to the VBD instance with the specified UUID.
+
+ \noindent {\bf Signature:} 
+\begin{verbatim} (VBD ref) get_by_uuid (session_id s, string 
uuid)\end{verbatim}
+
+
+\noindent{\bf Arguments:}
+
+ 
+\vspace{0.3cm}
+\begin{tabular}{|c|c|p{7cm}|}
+ \hline
+{\bf type} & {\bf name} & {\bf description} \\ \hline
+{\tt string } & uuid & UUID of object to return \\ \hline 
+
+\end{tabular}
+
+\vspace{0.3cm}
+
+ \noindent {\bf Return Type:} 
+{\tt 
+VBD ref
+}
+
+
+reference to the object
+\vspace{0.3cm}
+\vspace{0.3cm}
+\vspace{0.3cm}
+\subsubsection{RPC name:~get\_record}
+
+{\bf Overview:} 
+Get a record containing the current state of the given VBD.
+
+ \noindent {\bf Signature:} 
+\begin{verbatim} (VBD record) get_record (session_id s, VBD ref 
self)\end{verbatim}
+
+
+\noindent{\bf Arguments:}
+
+ 
+\vspace{0.3cm}
+\begin{tabular}{|c|c|p{7cm}|}
+ \hline
+{\bf type} & {\bf name} & {\bf description} \\ \hline
+{\tt VBD ref } & self & reference to the object \\ \hline 
+
+\end{tabular}
+
+\vspace{0.3cm}
+
+ \noindent {\bf Return Type:} 
+{\tt 
+VBD record
+}
+
+
+all fields from the object
+\vspace{0.3cm}
+\vspace{0.3cm}
+\vspace{0.3cm}
+
+\vspace{1cm}
+\newpage
+\section{Class: VBD\_metrics}
+\subsection{Fields for class: VBD\_metrics}
+\begin{longtable}{|lllp{0.38\textwidth}|}
+\hline
+\multicolumn{1}{|l}{Name} & \multicolumn{3}{l|}{\bf VBD\_metrics} \\
+\multicolumn{1}{|l}{Description} & \multicolumn{3}{l|}{\parbox{11cm}{\em
+The metrics associated with a virtual block device.}} \\
+\hline
+Quals & Field & Type & Description \\
+\hline
+$\mathit{RO}_\mathit{run}$ &  {\tt uuid} & string & unique identifier/object 
reference \\
 $\mathit{RO}_\mathit{run}$ &  {\tt io/read\_kbs} & float & Read bandwidth 
(KiB/s) \\
 $\mathit{RO}_\mathit{run}$ &  {\tt io/write\_kbs} & float & Write bandwidth 
(KiB/s) \\
 \hline
 \end{longtable}
-\subsection{Additional RPCs associated with class: VBD}
-\subsubsection{RPC name:~media\_change}
-
-{\bf Overview:} 
-Change the media in the device for CDROM-like devices only. For other
-devices, detach the VBD and attach a new one.
-
- \noindent {\bf Signature:} 
-\begin{verbatim} void media_change (session_id s, VBD ref vbd, VDI ref 
vdi)\end{verbatim}
-
-
-\noindent{\bf Arguments:}
-
- 
-\vspace{0.3cm}
-\begin{tabular}{|c|c|p{7cm}|}
- \hline
-{\bf type} & {\bf name} & {\bf description} \\ \hline
-{\tt VBD ref } & vbd & The vbd representing the CDROM-like device \\ \hline 
-
-{\tt VDI ref } & vdi & The new VDI to 'insert' \\ \hline 
-
-\end{tabular}
-
-\vspace{0.3cm}
-
- \noindent {\bf Return Type:} 
-{\tt 
-void
-}
-
-
-
+\subsection{Additional RPCs associated with class: VBD\_metrics}
+\subsubsection{RPC name:~get\_all}
+
+{\bf Overview:} 
+Return a list of all the VBD\_metrics instances known to the system.
+
+ \noindent {\bf Signature:} 
+\begin{verbatim} ((VBD_metrics ref) Set) get_all (session_id s)\end{verbatim}
+
+
+\vspace{0.3cm}
+
+ \noindent {\bf Return Type:} 
+{\tt 
+(VBD\_metrics ref) Set
+}
+
+
+references to all objects
 \vspace{0.3cm}
 \vspace{0.3cm}
 \vspace{0.3cm}
 \subsubsection{RPC name:~get\_uuid}
 
 {\bf Overview:} 
-Get the uuid field of the given VBD.
-
- \noindent {\bf Signature:} 
-\begin{verbatim} string get_uuid (session_id s, VBD ref self)\end{verbatim}
-
-
-\noindent{\bf Arguments:}
-
- 
-\vspace{0.3cm}
-\begin{tabular}{|c|c|p{7cm}|}
- \hline
-{\bf type} & {\bf name} & {\bf description} \\ \hline
-{\tt VBD ref } & self & reference to the object \\ \hline 
+Get the uuid field of the given VBD\_metrics.
+
+ \noindent {\bf Signature:} 
+\begin{verbatim} string get_uuid (session_id s, VBD_metrics ref 
self)\end{verbatim}
+
+
+\noindent{\bf Arguments:}
+
+ 
+\vspace{0.3cm}
+\begin{tabular}{|c|c|p{7cm}|}
+ \hline
+{\bf type} & {\bf name} & {\bf description} \\ \hline
+{\tt VBD\_metrics ref } & self & reference to the object \\ \hline 
 
 \end{tabular}
 
@@ -9634,351 +11408,23 @@ value of the field
 \vspace{0.3cm}
 \vspace{0.3cm}
 \vspace{0.3cm}
-\subsubsection{RPC name:~get\_VM}
-
-{\bf Overview:} 
-Get the VM field of the given VBD.
-
- \noindent {\bf Signature:} 
-\begin{verbatim} (VM ref) get_VM (session_id s, VBD ref self)\end{verbatim}
-
-
-\noindent{\bf Arguments:}
-
- 
-\vspace{0.3cm}
-\begin{tabular}{|c|c|p{7cm}|}
- \hline
-{\bf type} & {\bf name} & {\bf description} \\ \hline
-{\tt VBD ref } & self & reference to the object \\ \hline 
-
-\end{tabular}
-
-\vspace{0.3cm}
-
- \noindent {\bf Return Type:} 
-{\tt 
-VM ref
-}
-
-
-value of the field
-\vspace{0.3cm}
-\vspace{0.3cm}
-\vspace{0.3cm}
-\subsubsection{RPC name:~get\_VDI}
-
-{\bf Overview:} 
-Get the VDI field of the given VBD.
-
- \noindent {\bf Signature:} 
-\begin{verbatim} (VDI ref) get_VDI (session_id s, VBD ref self)\end{verbatim}
-
-
-\noindent{\bf Arguments:}
-
- 
-\vspace{0.3cm}
-\begin{tabular}{|c|c|p{7cm}|}
- \hline
-{\bf type} & {\bf name} & {\bf description} \\ \hline
-{\tt VBD ref } & self & reference to the object \\ \hline 
-
-\end{tabular}
-
-\vspace{0.3cm}
-
- \noindent {\bf Return Type:} 
-{\tt 
-VDI ref
-}
-
-
-value of the field
-\vspace{0.3cm}
-\vspace{0.3cm}
-\vspace{0.3cm}
-\subsubsection{RPC name:~get\_device}
-
-{\bf Overview:} 
-Get the device field of the given VBD.
-
- \noindent {\bf Signature:} 
-\begin{verbatim} string get_device (session_id s, VBD ref self)\end{verbatim}
-
-
-\noindent{\bf Arguments:}
-
- 
-\vspace{0.3cm}
-\begin{tabular}{|c|c|p{7cm}|}
- \hline
-{\bf type} & {\bf name} & {\bf description} \\ \hline
-{\tt VBD ref } & self & reference to the object \\ \hline 
-
-\end{tabular}
-
-\vspace{0.3cm}
-
- \noindent {\bf Return Type:} 
-{\tt 
-string
-}
-
-
-value of the field
-\vspace{0.3cm}
-\vspace{0.3cm}
-\vspace{0.3cm}
-\subsubsection{RPC name:~set\_device}
-
-{\bf Overview:} 
-Set the device field of the given VBD.
-
- \noindent {\bf Signature:} 
-\begin{verbatim} void set_device (session_id s, VBD ref self, string 
value)\end{verbatim}
-
-
-\noindent{\bf Arguments:}
-
- 
-\vspace{0.3cm}
-\begin{tabular}{|c|c|p{7cm}|}
- \hline
-{\bf type} & {\bf name} & {\bf description} \\ \hline
-{\tt VBD ref } & self & reference to the object \\ \hline 
-
-{\tt string } & value & New value to set \\ \hline 
-
-\end{tabular}
-
-\vspace{0.3cm}
-
- \noindent {\bf Return Type:} 
-{\tt 
-void
-}
-
-
-
-\vspace{0.3cm}
-\vspace{0.3cm}
-\vspace{0.3cm}
-\subsubsection{RPC name:~get\_bootable}
-
-{\bf Overview:} 
-Get the bootable field of the given VBD.
-
- \noindent {\bf Signature:} 
-\begin{verbatim} bool get_bootable (session_id s, VBD ref self)\end{verbatim}
-
-
-\noindent{\bf Arguments:}
-
- 
-\vspace{0.3cm}
-\begin{tabular}{|c|c|p{7cm}|}
- \hline
-{\bf type} & {\bf name} & {\bf description} \\ \hline
-{\tt VBD ref } & self & reference to the object \\ \hline 
-
-\end{tabular}
-
-\vspace{0.3cm}
-
- \noindent {\bf Return Type:} 
-{\tt 
-bool
-}
-
-
-value of the field
-\vspace{0.3cm}
-\vspace{0.3cm}
-\vspace{0.3cm}
-\subsubsection{RPC name:~set\_bootable}
-
-{\bf Overview:} 
-Set the bootable field of the given VBD.
-
- \noindent {\bf Signature:} 
-\begin{verbatim} void set_bootable (session_id s, VBD ref self, bool 
value)\end{verbatim}
-
-
-\noindent{\bf Arguments:}
-
- 
-\vspace{0.3cm}
-\begin{tabular}{|c|c|p{7cm}|}
- \hline
-{\bf type} & {\bf name} & {\bf description} \\ \hline
-{\tt VBD ref } & self & reference to the object \\ \hline 
-
-{\tt bool } & value & New value to set \\ \hline 
-
-\end{tabular}
-
-\vspace{0.3cm}
-
- \noindent {\bf Return Type:} 
-{\tt 
-void
-}
-
-
-
-\vspace{0.3cm}
-\vspace{0.3cm}
-\vspace{0.3cm}
-\subsubsection{RPC name:~get\_mode}
-
-{\bf Overview:} 
-Get the mode field of the given VBD.
-
- \noindent {\bf Signature:} 
-\begin{verbatim} (vbd_mode) get_mode (session_id s, VBD ref self)\end{verbatim}
-
-
-\noindent{\bf Arguments:}
-
- 
-\vspace{0.3cm}
-\begin{tabular}{|c|c|p{7cm}|}
- \hline
-{\bf type} & {\bf name} & {\bf description} \\ \hline
-{\tt VBD ref } & self & reference to the object \\ \hline 
-
-\end{tabular}
-
-\vspace{0.3cm}
-
- \noindent {\bf Return Type:} 
-{\tt 
-vbd\_mode
-}
-
-
-value of the field
-\vspace{0.3cm}
-\vspace{0.3cm}
-\vspace{0.3cm}
-\subsubsection{RPC name:~set\_mode}
-
-{\bf Overview:} 
-Set the mode field of the given VBD.
-
- \noindent {\bf Signature:} 
-\begin{verbatim} void set_mode (session_id s, VBD ref self, vbd_mode 
value)\end{verbatim}
-
-
-\noindent{\bf Arguments:}
-
- 
-\vspace{0.3cm}
-\begin{tabular}{|c|c|p{7cm}|}
- \hline
-{\bf type} & {\bf name} & {\bf description} \\ \hline
-{\tt VBD ref } & self & reference to the object \\ \hline 
-
-{\tt vbd\_mode } & value & New value to set \\ \hline 
-
-\end{tabular}
-
-\vspace{0.3cm}
-
- \noindent {\bf Return Type:} 
-{\tt 
-void
-}
-
-
-
-\vspace{0.3cm}
-\vspace{0.3cm}
-\vspace{0.3cm}
-\subsubsection{RPC name:~get\_type}
-
-{\bf Overview:} 
-Get the type field of the given VBD.
-
- \noindent {\bf Signature:} 
-\begin{verbatim} (vbd_type) get_type (session_id s, VBD ref self)\end{verbatim}
-
-
-\noindent{\bf Arguments:}
-
- 
-\vspace{0.3cm}
-\begin{tabular}{|c|c|p{7cm}|}
- \hline
-{\bf type} & {\bf name} & {\bf description} \\ \hline
-{\tt VBD ref } & self & reference to the object \\ \hline 
-
-\end{tabular}
-
-\vspace{0.3cm}
-
- \noindent {\bf Return Type:} 
-{\tt 
-vbd\_type
-}
-
-
-value of the field
-\vspace{0.3cm}
-\vspace{0.3cm}
-\vspace{0.3cm}
-\subsubsection{RPC name:~set\_type}
-
-{\bf Overview:} 
-Set the type field of the given VBD.
-
- \noindent {\bf Signature:} 
-\begin{verbatim} void set_type (session_id s, VBD ref self, vbd_type 
value)\end{verbatim}
-
-
-\noindent{\bf Arguments:}
-
- 
-\vspace{0.3cm}
-\begin{tabular}{|c|c|p{7cm}|}
- \hline
-{\bf type} & {\bf name} & {\bf description} \\ \hline
-{\tt VBD ref } & self & reference to the object \\ \hline 
-
-{\tt vbd\_type } & value & New value to set \\ \hline 
-
-\end{tabular}
-
-\vspace{0.3cm}
-
- \noindent {\bf Return Type:} 
-{\tt 
-void
-}
-
-
-
-\vspace{0.3cm}
-\vspace{0.3cm}
-\vspace{0.3cm}
 \subsubsection{RPC name:~get\_io\_read\_kbs}
 
 {\bf Overview:} 
-Get the io/read\_kbs field of the given VBD.
-
- \noindent {\bf Signature:} 
-\begin{verbatim} float get_io_read_kbs (session_id s, VBD ref 
self)\end{verbatim}
-
-
-\noindent{\bf Arguments:}
-
- 
-\vspace{0.3cm}
-\begin{tabular}{|c|c|p{7cm}|}
- \hline
-{\bf type} & {\bf name} & {\bf description} \\ \hline
-{\tt VBD ref } & self & reference to the object \\ \hline 
+Get the io/read\_kbs field of the given VBD\_metrics.
+
+ \noindent {\bf Signature:} 
+\begin{verbatim} float get_io_read_kbs (session_id s, VBD_metrics ref 
self)\end{verbatim}
+
+
+\noindent{\bf Arguments:}
+
+ 
+\vspace{0.3cm}
+\begin{tabular}{|c|c|p{7cm}|}
+ \hline
+{\bf type} & {\bf name} & {\bf description} \\ \hline
+{\tt VBD\_metrics ref } & self & reference to the object \\ \hline 
 
 \end{tabular}
 
@@ -9997,20 +11443,20 @@ value of the field
 \subsubsection{RPC name:~get\_io\_write\_kbs}
 
 {\bf Overview:} 
-Get the io/write\_kbs field of the given VBD.
-
- \noindent {\bf Signature:} 
-\begin{verbatim} float get_io_write_kbs (session_id s, VBD ref 
self)\end{verbatim}
-
-
-\noindent{\bf Arguments:}
-
- 
-\vspace{0.3cm}
-\begin{tabular}{|c|c|p{7cm}|}
- \hline
-{\bf type} & {\bf name} & {\bf description} \\ \hline
-{\tt VBD ref } & self & reference to the object \\ \hline 
+Get the io/write\_kbs field of the given VBD\_metrics.
+
+ \noindent {\bf Signature:} 
+\begin{verbatim} float get_io_write_kbs (session_id s, VBD_metrics ref 
self)\end{verbatim}
+
+
+\noindent{\bf Arguments:}
+
+ 
+\vspace{0.3cm}
+\begin{tabular}{|c|c|p{7cm}|}
+ \hline
+{\bf type} & {\bf name} & {\bf description} \\ \hline
+{\tt VBD\_metrics ref } & self & reference to the object \\ \hline 
 
 \end{tabular}
 
@@ -10026,77 +11472,13 @@ value of the field
 \vspace{0.3cm}
 \vspace{0.3cm}
 \vspace{0.3cm}
-\subsubsection{RPC name:~create}
-
-{\bf Overview:} 
-Create a new VBD instance, and return its handle.
-
- \noindent {\bf Signature:} 
-\begin{verbatim} (VBD ref) create (session_id s, VBD record args)\end{verbatim}
-
-
-\noindent{\bf Arguments:}
-
- 
-\vspace{0.3cm}
-\begin{tabular}{|c|c|p{7cm}|}
- \hline
-{\bf type} & {\bf name} & {\bf description} \\ \hline
-{\tt VBD record } & args & All constructor arguments \\ \hline 
-
-\end{tabular}
-
-\vspace{0.3cm}
-
- \noindent {\bf Return Type:} 
-{\tt 
-VBD ref
-}
-
-
-reference to the newly created object
-\vspace{0.3cm}
-\vspace{0.3cm}
-\vspace{0.3cm}
-\subsubsection{RPC name:~destroy}
-
-{\bf Overview:} 
-Destroy the specified VBD instance.
-
- \noindent {\bf Signature:} 
-\begin{verbatim} void destroy (session_id s, VBD ref self)\end{verbatim}
-
-
-\noindent{\bf Arguments:}
-
- 
-\vspace{0.3cm}
-\begin{tabular}{|c|c|p{7cm}|}
- \hline
-{\bf type} & {\bf name} & {\bf description} \\ \hline
-{\tt VBD ref } & self & reference to the object \\ \hline 
-
-\end{tabular}
-
-\vspace{0.3cm}
-
- \noindent {\bf Return Type:} 
-{\tt 
-void
-}
-
-
-
-\vspace{0.3cm}
-\vspace{0.3cm}
-\vspace{0.3cm}
 \subsubsection{RPC name:~get\_by\_uuid}
 
 {\bf Overview:} 
-Get a reference to the VBD instance with the specified UUID.
-
- \noindent {\bf Signature:} 
-\begin{verbatim} (VBD ref) get_by_uuid (session_id s, string 
uuid)\end{verbatim}
+Get a reference to the VBD\_metrics instance with the specified UUID.
+
+ \noindent {\bf Signature:} 
+\begin{verbatim} (VBD_metrics ref) get_by_uuid (session_id s, string 
uuid)\end{verbatim}
 
 
 \noindent{\bf Arguments:}
@@ -10114,7 +11496,7 @@ Get a reference to the VBD instance with
 
  \noindent {\bf Return Type:} 
 {\tt 
-VBD ref
+VBD\_metrics ref
 }
 
 
@@ -10125,28 +11507,28 @@ reference to the object
 \subsubsection{RPC name:~get\_record}
 
 {\bf Overview:} 
-Get a record containing the current state of the given VBD.
-
- \noindent {\bf Signature:} 
-\begin{verbatim} (VBD record) get_record (session_id s, VBD ref 
self)\end{verbatim}
-
-
-\noindent{\bf Arguments:}
-
- 
-\vspace{0.3cm}
-\begin{tabular}{|c|c|p{7cm}|}
- \hline
-{\bf type} & {\bf name} & {\bf description} \\ \hline
-{\tt VBD ref } & self & reference to the object \\ \hline 
-
-\end{tabular}
-
-\vspace{0.3cm}
-
- \noindent {\bf Return Type:} 
-{\tt 
-VBD record
+Get a record containing the current state of the given VBD\_metrics.
+
+ \noindent {\bf Signature:} 
+\begin{verbatim} (VBD_metrics record) get_record (session_id s, VBD_metrics 
ref self)\end{verbatim}
+
+
+\noindent{\bf Arguments:}
+
+ 
+\vspace{0.3cm}
+\begin{tabular}{|c|c|p{7cm}|}
+ \hline
+{\bf type} & {\bf name} & {\bf description} \\ \hline
+{\tt VBD\_metrics ref } & self & reference to the object \\ \hline 
+
+\end{tabular}
+
+\vspace{0.3cm}
+
+ \noindent {\bf Return Type:} 
+{\tt 
+VBD\_metrics record
 }
 
 
@@ -10175,6 +11557,27 @@ Quals & Field & Type & Description \\
 \hline
 \end{longtable}
 \subsection{Additional RPCs associated with class: PBD}
+\subsubsection{RPC name:~get\_all}
+
+{\bf Overview:} 
+Return a list of all the PBDs known to the system.
+
+ \noindent {\bf Signature:} 
+\begin{verbatim} ((PBD ref) Set) get_all (session_id s)\end{verbatim}
+
+
+\vspace{0.3cm}
+
+ \noindent {\bf Return Type:} 
+{\tt 
+(PBD ref) Set
+}
+
+
+references to all objects
+\vspace{0.3cm}
+\vspace{0.3cm}
+\vspace{0.3cm}
 \subsubsection{RPC name:~get\_uuid}
 
 {\bf Overview:} 
@@ -10985,11 +12388,33 @@ Quals & Field & Type & Description \\
 \hline
 $\mathit{RO}_\mathit{run}$ &  {\tt uuid} & string & unique identifier/object 
reference \\
 $\mathit{RO}_\mathit{run}$ &  {\tt protocol} & console\_protocol & the 
protocol used by this console \\
-$\mathit{RO}_\mathit{run}$ &  {\tt uri} & string & URI for the console service 
\\
+$\mathit{RO}_\mathit{run}$ &  {\tt location} & string & URI for the console 
service \\
 $\mathit{RO}_\mathit{run}$ &  {\tt VM} & VM ref & VM to which this console is 
attached \\
+$\mathit{RW}$ &  {\tt other\_config} & (string $\rightarrow$ string) Map & 
additional configuration \\
 \hline
 \end{longtable}
 \subsection{Additional RPCs associated with class: console}
+\subsubsection{RPC name:~get\_all}
+
+{\bf Overview:} 
+Return a list of all the consoles known to the system.
+
+ \noindent {\bf Signature:} 
+\begin{verbatim} ((console ref) Set) get_all (session_id s)\end{verbatim}
+
+
+\vspace{0.3cm}
+
+ \noindent {\bf Return Type:} 
+{\tt 
+(console ref) Set
+}
+
+
+references to all objects
+\vspace{0.3cm}
+\vspace{0.3cm}
+\vspace{0.3cm}
 \subsubsection{RPC name:~get\_uuid}
 
 {\bf Overview:} 
@@ -11054,13 +12479,13 @@ value of the field
 \vspace{0.3cm}
 \vspace{0.3cm}
 \vspace{0.3cm}
-\subsubsection{RPC name:~get\_uri}
-
-{\bf Overview:} 
-Get the uri field of the given console.
-
- \noindent {\bf Signature:} 
-\begin{verbatim} string get_uri (session_id s, console ref self)\end{verbatim}
+\subsubsection{RPC name:~get\_location}
+
+{\bf Overview:} 
+Get the location field of the given console.
+
+ \noindent {\bf Signature:} 
+\begin{verbatim} string get_location (session_id s, console ref 
self)\end{verbatim}
 
 
 \noindent{\bf Arguments:}
@@ -11115,6 +12540,145 @@ VM ref
 
 
 value of the field
+\vspace{0.3cm}
+\vspace{0.3cm}
+\vspace{0.3cm}
+\subsubsection{RPC name:~get\_other\_config}
+
+{\bf Overview:} 
+Get the other\_config field of the given console.
+
+ \noindent {\bf Signature:} 
+\begin{verbatim} ((string -> string) Map) get_other_config (session_id s, 
console ref self)\end{verbatim}
+
+
+\noindent{\bf Arguments:}
+
+ 
+\vspace{0.3cm}
+\begin{tabular}{|c|c|p{7cm}|}
+ \hline
+{\bf type} & {\bf name} & {\bf description} \\ \hline
+{\tt console ref } & self & reference to the object \\ \hline 
+
+\end{tabular}
+
+\vspace{0.3cm}
+
+ \noindent {\bf Return Type:} 
+{\tt 
+(string $\rightarrow$ string) Map
+}
+
+
+value of the field
+\vspace{0.3cm}
+\vspace{0.3cm}
+\vspace{0.3cm}
+\subsubsection{RPC name:~set\_other\_config}
+
+{\bf Overview:} 
+Set the other\_config field of the given console.
+
+ \noindent {\bf Signature:} 
+\begin{verbatim} void set_other_config (session_id s, console ref self, 
(string -> string) Map value)\end{verbatim}
+
+
+\noindent{\bf Arguments:}
+
+ 
+\vspace{0.3cm}
+\begin{tabular}{|c|c|p{7cm}|}
+ \hline
+{\bf type} & {\bf name} & {\bf description} \\ \hline
+{\tt console ref } & self & reference to the object \\ \hline 
+
+{\tt (string $\rightarrow$ string) Map } & value & New value to set \\ \hline 
+
+\end{tabular}
+
+\vspace{0.3cm}
+
+ \noindent {\bf Return Type:} 
+{\tt 
+void
+}
+
+
+
+\vspace{0.3cm}
+\vspace{0.3cm}
+\vspace{0.3cm}
+\subsubsection{RPC name:~add\_to\_other\_config}
+
+{\bf Overview:} 
+Add the given key-value pair to the other\_config field of the given
+console.
+
+ \noindent {\bf Signature:} 
+\begin{verbatim} void add_to_other_config (session_id s, console ref self, 
string key, string value)\end{verbatim}
+
+
+\noindent{\bf Arguments:}
+
+ 
+\vspace{0.3cm}
+\begin{tabular}{|c|c|p{7cm}|}
+ \hline
+{\bf type} & {\bf name} & {\bf description} \\ \hline
+{\tt console ref } & self & reference to the object \\ \hline 
+
+{\tt string } & key & Key to add \\ \hline 
+
+{\tt string } & value & Value to add \\ \hline 
+
+\end{tabular}
+
+\vspace{0.3cm}
+
+ \noindent {\bf Return Type:} 
+{\tt 
+void
+}
+
+
+
+\vspace{0.3cm}
+\vspace{0.3cm}
+\vspace{0.3cm}
+\subsubsection{RPC name:~remove\_from\_other\_config}
+
+{\bf Overview:} 
+Remove the given key and its corresponding value from the other\_config
+field of the given console.  If the key is not in that Map, then do
+nothing.
+
+ \noindent {\bf Signature:} 
+\begin{verbatim} void remove_from_other_config (session_id s, console ref 
self, string key)\end{verbatim}
+
+
+\noindent{\bf Arguments:}
+
+ 
+\vspace{0.3cm}
+\begin{tabular}{|c|c|p{7cm}|}
+ \hline
+{\bf type} & {\bf name} & {\bf description} \\ \hline
+{\tt console ref } & self & reference to the object \\ \hline 
+
+{\tt string } & key & Key to remove \\ \hline 
+
+\end{tabular}
+
+\vspace{0.3cm}
+
+ \noindent {\bf Return Type:} 
+{\tt 
+void
+}
+
+
+
 \vspace{0.3cm}
 \vspace{0.3cm}
 \vspace{0.3cm}
@@ -11767,34 +13331,15 @@ Each possible error code is documented i
 
 \subsection{Error Codes}
 
-\subsubsection{HOST\_CPU\_HANDLE\_INVALID}
-
-You gave an invalid host\_cpu handle.  The host\_cpu may have recently been
-deleted.  The handle parameter echoes the bad value given.
+\subsubsection{HANDLE\_INVALID}
+
+You gave an invalid handle.  The object may have recently been deleted. 
+The class parameter gives the type of reference given, and the handle
+parameter echoes the bad value given.
 
 \vspace{0.3cm}
 {\bf Signature:}
-\begin{verbatim}HOST_CPU_HANDLE_INVALID(handle)\end{verbatim}
-\begin{center}\rule{10em}{0.1pt}\end{center}
-
-\subsubsection{HOST\_HANDLE\_INVALID}
-
-You gave an invalid host handle.  The host may have recently been deleted. 
-The handle parameter echoes the bad value given.
-
-\vspace{0.3cm}
-{\bf Signature:}
-\begin{verbatim}HOST_HANDLE_INVALID(handle)\end{verbatim}
-\begin{center}\rule{10em}{0.1pt}\end{center}
-
-\subsubsection{HOST\_METRICS\_HANDLE\_INVALID}
-
-You gave an invalid host\_metrics handle.  The host\_metrics may have
-recently been deleted.  The handle parameter echoes the bad value given.
-
-\vspace{0.3cm}
-{\bf Signature:}
-\begin{verbatim}HOST_METRICS_HANDLE_INVALID(handle)\end{verbatim}
+\begin{verbatim}HANDLE_INVALID(class, handle)\end{verbatim}
 \begin{center}\rule{10em}{0.1pt}\end{center}
 
 \subsubsection{INTERNAL\_ERROR}
@@ -11854,18 +13399,7 @@ You attempted an operation that was not 
 You attempted an operation that was not allowed.
 
 \vspace{0.3cm}
-{\bf Signature:}
-\begin{verbatim}OPERATION_NOT_ALLOWED()\end{verbatim}
-\begin{center}\rule{10em}{0.1pt}\end{center}
-
-\subsubsection{PIF\_HANDLE\_INVALID}
-
-You gave an invalid PIF handle.  The PIF may have recently been deleted. 
-The handle parameter echoes the bad value given.
-
-\vspace{0.3cm}
-{\bf Signature:}
-\begin{verbatim}PIF_HANDLE_INVALID(handle)\end{verbatim}
+No parameters.
 \begin{center}\rule{10em}{0.1pt}\end{center}
 
 \subsubsection{PIF\_IS\_PHYSICAL}
@@ -11877,16 +13411,6 @@ PIF handle you gave.
 \vspace{0.3cm}
 {\bf Signature:}
 \begin{verbatim}PIF_IS_PHYSICAL(PIF)\end{verbatim}
-\begin{center}\rule{10em}{0.1pt}\end{center}
-
-\subsubsection{PIF\_METRICS\_HANDLE\_INVALID}
-
-You gave an invalid PIF\_metrics handle.  The PIF\_metrics may have
-recently been deleted.  The handle parameter echoes the bad value given.
-
-\vspace{0.3cm}
-{\bf Signature:}
-\begin{verbatim}PIF_METRICS_HANDLE_INVALID(handle)\end{verbatim}
 \begin{center}\rule{10em}{0.1pt}\end{center}
 
 \subsubsection{SESSION\_AUTHENTICATION\_FAILED}
@@ -11910,26 +13434,6 @@ current connection.  The handle paramete
 \begin{verbatim}SESSION_INVALID(handle)\end{verbatim}
 \begin{center}\rule{10em}{0.1pt}\end{center}
 
-\subsubsection{SR\_HANDLE\_INVALID}
-
-You gave an invalid SR handle.  The SR may have recently been deleted.  The
-handle parameter echoes the bad value given.
-
-\vspace{0.3cm}
-{\bf Signature:}
-\begin{verbatim}SR_HANDLE_INVALID(handle)\end{verbatim}
-\begin{center}\rule{10em}{0.1pt}\end{center}
-
-\subsubsection{TASK\_HANDLE\_INVALID}
-
-You gave an invalid task handle.  The task may have recently been deleted. 
-The handle parameter echoes the bad value given.
-
-\vspace{0.3cm}
-{\bf Signature:}
-\begin{verbatim}TASK_HANDLE_INVALID(handle)\end{verbatim}
-\begin{center}\rule{10em}{0.1pt}\end{center}
-
 \subsubsection{VALUE\_NOT\_SUPPORTED}
 
 You attempted to set a value that is not supported by this implementation. 
@@ -11939,36 +13443,6 @@ returned.  Also returned is a developer-
 \vspace{0.3cm}
 {\bf Signature:}
 \begin{verbatim}VALUE_NOT_SUPPORTED(field, value, reason)\end{verbatim}
-\begin{center}\rule{10em}{0.1pt}\end{center}
-
-\subsubsection{VBD\_HANDLE\_INVALID}
-
-You gave an invalid VBD handle.  The VBD may have recently been deleted. 
-The handle parameter echoes the bad value given.
-
-\vspace{0.3cm}
-{\bf Signature:}
-\begin{verbatim}VBD_HANDLE_INVALID(handle)\end{verbatim}
-\begin{center}\rule{10em}{0.1pt}\end{center}
-
-\subsubsection{VDI\_HANDLE\_INVALID}
-
-You gave an invalid VDI handle.  The VDI may have recently been deleted. 
-The handle parameter echoes the bad value given.
-
-\vspace{0.3cm}
-{\bf Signature:}
-\begin{verbatim}VDI_HANDLE_INVALID(handle)\end{verbatim}
-\begin{center}\rule{10em}{0.1pt}\end{center}
-
-\subsubsection{VIF\_HANDLE\_INVALID}
-
-You gave an invalid VIF handle.  The VIF may have recently been deleted. 
-The handle parameter echoes the bad value given.
-
-\vspace{0.3cm}
-{\bf Signature:}
-\begin{verbatim}VIF_HANDLE_INVALID(handle)\end{verbatim}
 \begin{center}\rule{10em}{0.1pt}\end{center}
 
 \subsubsection{VLAN\_TAG\_INVALID}
@@ -11991,36 +13465,6 @@ expected and actual VM state at the time
 \vspace{0.3cm}
 {\bf Signature:}
 \begin{verbatim}VM_BAD_POWER_STATE(vm, expected, actual)\end{verbatim}
-\begin{center}\rule{10em}{0.1pt}\end{center}
-
-\subsubsection{VM\_HANDLE\_INVALID}
-
-You gave an invalid VM handle.  The VM may have recently been deleted.  The
-handle parameter echoes the bad value given.
-
-\vspace{0.3cm}
-{\bf Signature:}
-\begin{verbatim}VM_HANDLE_INVALID(handle)\end{verbatim}
-\begin{center}\rule{10em}{0.1pt}\end{center}
-
-\subsubsection{VM\_METRICS\_HANDLE\_INVALID}
-
-You gave an invalid VM\_metrics handle.  The VM\_metrics may have recently
-been deleted.  The handle parameter echoes the bad value given.
-
-\vspace{0.3cm}
-{\bf Signature:}
-\begin{verbatim}VM_METRICS_HANDLE_INVALID(handle)\end{verbatim}
-\begin{center}\rule{10em}{0.1pt}\end{center}
-
-\subsubsection{VTPM\_HANDLE\_INVALID}
-
-You gave an invalid VTPM handle.  The VTPM may have recently been deleted. 
-The handle parameter echoes the bad value given.
-
-\vspace{0.3cm}
-{\bf Signature:}
-\begin{verbatim}VTPM_HANDLE_INVALID(handle)\end{verbatim}
 \begin{center}\rule{10em}{0.1pt}\end{center}
 
 
diff -r 9fe6fe88a6a1 -r 736f2d6d7b09 extras/mini-os/Makefile
--- a/extras/mini-os/Makefile   Fri Mar 02 17:08:04 2007 -0600
+++ b/extras/mini-os/Makefile   Fri Mar 02 18:05:38 2007 -0600
@@ -3,8 +3,6 @@
 # Every architecture directory below mini-os/arch has to have a
 # Makefile and a arch.mk.
 #
-
-pae ?= n
 
 XEN_ROOT = ../..
 include $(XEN_ROOT)/Config.mk
@@ -35,6 +33,7 @@ export TARGET_ARCH
 export TARGET_ARCH
 export TARGET_ARCH_DIR
 export TARGET_ARCH_FAM
+export XEN_TARGET_X86_PAE 
 
 # This is used for architecture specific links.
 # This can be overwritten from arch specific rules.
@@ -43,10 +42,6 @@ ARCH_LINKS =
 # For possible special header directories.
 # This can be overwritten from arch specific rules.
 EXTRA_INC =
-
-# Special build dependencies.
-# Build all after touching this/these file(s) (see minios.mk)
-SPEC_DEPENDS = minios.mk
 
 # Include the architecture family's special makerules.
 # This must be before include minios.mk!
@@ -57,7 +52,6 @@ include minios.mk
 
 # Define some default flags for linking.
 LDLIBS := 
-LDFLAGS := 
 LDARCHLIB := -L$(TARGET_ARCH_DIR) -l$(ARCH_LIB_NAME)
 LDFLAGS_FINAL := -N -T $(TARGET_ARCH_DIR)/minios-$(TARGET_ARCH).lds
 
diff -r 9fe6fe88a6a1 -r 736f2d6d7b09 extras/mini-os/arch/ia64/Makefile
--- /dev/null   Thu Jan 01 00:00:00 1970 +0000
+++ b/extras/mini-os/arch/ia64/Makefile Fri Mar 02 18:05:38 2007 -0600
@@ -0,0 +1,56 @@
+#
+# Special makefile for ia64.
+#
+
+include arch.mk
+include ../../minios.mk
+
+ARCH_SRCS := sal.c
+ARCH_SRCS += efi.c
+ARCH_SRCS += time.c
+ARCH_SRCS += ivt.S
+ARCH_SRCS += fw.S
+ARCH_SRCS += common.c
+ARCH_SRCS += time.c
+ARCH_SRCS += mm.c
+ARCH_SRCS += debug.c
+ARCH_SRCS += sched.c
+ARCH_SRCS += xencomm.c
+ARCH_SRCS += __umoddi3.S
+ARCH_SRCS += __udivdi3.S
+ARCH_SRCS += __divdi3.S
+
+ARCH_OBJS := sal.o
+ARCH_OBJS += efi.o
+ARCH_OBJS += time.o
+ARCH_OBJS += ivt.o
+ARCH_OBJS += fw.o
+ARCH_OBJS += common.o
+ARCH_OBJS += time.o
+ARCH_OBJS += mm.o
+ARCH_OBJS += debug.o
+ARCH_OBJS += sched.o
+ARCH_OBJS += xencomm.o
+ARCH_OBJS += __umoddi3.o
+ARCH_OBJS += __udivdi3.o
+ARCH_OBJS += __divdi3.o
+
+GEN_OFF_SRC := gen_off.c
+GEN_OFF_BIN := gen_off
+GEN_OFF_H   := $(ARCH_SPEC_INC)/offsets.h
+
+all: $(ARCH_LIB)
+
+$(GEN_OFF_BIN): $(GEN_OFF_SRC)
+       $(CC) -o $@ $(CPPFLAGS) $<
+
+$(GEN_OFF_H): $(GEN_OFF_BIN)
+       ./$(GEN_OFF_BIN) > $(GEN_OFF_H)
+
+$(ARCH_LIB): $(GEN_OFF_H) $(ARCH_OBJS) $(HEAD_ARCH_OBJ)
+       $(AR) rv $(ARCH_LIB) $(ARCH_OBJS)
+
+clean:
+       rm -f $(ARCH_LIB) $(ARCH_OBJS) $(HEAD_ARCH_OBJ)
+       rm -f $(GEN_OFF_BIN)
+       rm -f $(GEN_OFF_H)
diff -r 9fe6fe88a6a1 -r 736f2d6d7b09 extras/mini-os/arch/ia64/__divdi3.S
--- /dev/null   Thu Jan 01 00:00:00 1970 +0000
+++ b/extras/mini-os/arch/ia64/__divdi3.S       Fri Mar 02 18:05:38 2007 -0600
@@ -0,0 +1,141 @@
+.file "__divdi3.s"
+
+// $FreeBSD: src/sys/libkern/ia64/__divdi3.S,v 1.1 2000/10/04 17:53:03 dfr Exp 
$
+//  
+// Copyright (c) 2000, Intel Corporation
+// All rights reserved.
+//
+// Contributed 2/15/2000 by Marius Cornea, John Harrison, Cristina Iordache, 
+// Ted Kubaska, Bob Norin, and Shane Story of the Computational Software Lab, 
+// Intel Corporation.
+//
+// WARRANTY DISCLAIMER
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT 
+// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL INTEL OR ITS 
+// CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
+// EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
+// PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR 
+// PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
+// OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY OR TORT (INCLUDING
+// NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+// SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+//
+// Intel Corporation is the author of this code, and requests that all
+// problem reports or change requests be submitted to it directly at
+// http://developer.intel.com/opensource.
+//
+
+.section .text
+.proc __divdi3#
+.align 32
+.global __divdi3#
+.align 32
+
+// 64-bit signed integer divide
+
+__divdi3:
+
+{ .mii
+  alloc r31=ar.pfs,2,0,0,0
+  nop.i 0
+  nop.i 0;;
+} { .mmi
+
+  // 64-BIT SIGNED INTEGER DIVIDE BEGINS HERE
+
+  setf.sig f8=r32
+  setf.sig f9=r33
+  nop.i 0;;
+} { .mfb
+  nop.m 0
+  fcvt.xf f6=f8
+  nop.b 0
+} { .mfb
+  nop.m 0
+  fcvt.xf f7=f9
+  nop.b 0;;
+} { .mfi
+  nop.m 0
+  // Step (1)
+  // y0 = 1 / b in f8
+  frcpa.s1 f8,p6=f6,f7
+  nop.i 0;;
+} { .mfi
+  nop.m 0
+  // Step (2)
+  // e0 = 1 - b * y0 in f9
+  (p6) fnma.s1 f9=f7,f8,f1
+  nop.i 0
+} { .mfi
+  nop.m 0
+  // Step (3)
+  // q0 = a * y0 in f10
+  (p6) fma.s1 f10=f6,f8,f0
+  nop.i 0;;
+} { .mfi
+  nop.m 0
+  // Step (4)
+  // e1 = e0 * e0 in f11
+  (p6) fma.s1 f11=f9,f9,f0
+  nop.i 0
+} { .mfi
+  nop.m 0
+  // Step (5)
+  // q1 = q0 + e0 * q0 in f10
+  (p6) fma.s1 f10=f9,f10,f10
+  nop.i 0;;
+} { .mfi
+  nop.m 0
+  // Step (6)
+  // y1 = y0 + e0 * y0 in f8
+  (p6) fma.s1 f8=f9,f8,f8
+  nop.i 0;;
+} { .mfi
+  nop.m 0
+  // Step (7)
+  // q2 = q1 + e1 * q1 in f9
+  (p6) fma.s1 f9=f11,f10,f10
+  nop.i 0;;
+} { .mfi
+  nop.m 0
+  // Step (8)
+  // y2 = y1 + e1 * y1 in f8
+  (p6) fma.s1 f8=f11,f8,f8
+  nop.i 0;;
+} { .mfi
+  nop.m 0
+  // Step (9)
+  // r2 = a - b * q2 in f10
+  (p6) fnma.s1 f10=f7,f9,f6
+  nop.i 0;;
+} { .mfi
+  nop.m 0
+  // Step (10)
+  // q3 = q2 + r2 * y2 in f8
+  (p6) fma.s1 f8=f10,f8,f9
+  nop.i 0;;
+} { .mfb
+  nop.m 0
+  // Step (11)
+  // q = trunc (q3)
+  fcvt.fx.trunc.s1 f8=f8
+  nop.b 0;;
+} { .mmi
+  // quotient will be in r8 (if b != 0)
+  getf.sig r8=f8
+  nop.m 0
+  nop.i 0;;
+}
+
+  // 64-BIT SIGNED INTEGER DIVIDE ENDS HERE
+
+{ .mmb
+  nop.m 0
+  nop.m 0
+  br.ret.sptk b0;;
+}
+
+.endp __divdi3
diff -r 9fe6fe88a6a1 -r 736f2d6d7b09 extras/mini-os/arch/ia64/__udivdi3.S
--- /dev/null   Thu Jan 01 00:00:00 1970 +0000
+++ b/extras/mini-os/arch/ia64/__udivdi3.S      Fri Mar 02 18:05:38 2007 -0600
@@ -0,0 +1,142 @@
+.file "__udivdi3.s"
+
+// $FreeBSD: src/sys/libkern/ia64/__udivdi3.S,v 1.1 2000/10/04 17:53:03 dfr 
Exp $
+//  
+// Copyright (c) 2000, Intel Corporation
+// All rights reserved.
+//
+// Contributed 2/15/2000 by Marius Cornea, John Harrison, Cristina Iordache, 
+// Ted Kubaska, Bob Norin, and Shane Story of the Computational Software Lab, 
+// Intel Corporation.
+//
+// WARRANTY DISCLAIMER
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT 
+// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL INTEL OR ITS 
+// CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
+// EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
+// PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR 
+// PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
+// OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY OR TORT (INCLUDING
+// NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+// SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+//
+// Intel Corporation is the author of this code, and requests that all
+// problem reports or change requests be submitted to it directly at
+// http://developer.intel.com/opensource.
+//
+
+.section .text
+.proc __udivdi3#
+.align 32
+.global __udivdi3#
+.align 32
+
+// 64-bit unsigned integer divide
+
+__udivdi3:
+
+{ .mii
+  alloc r31=ar.pfs,2,0,0,0
+  nop.i 0
+  nop.i 0;;
+}
+
+{ .mmi
+
+  // 64-BIT UNSIGNED INTEGER DIVIDE BEGINS HERE
+
+  setf.sig f8=r32
+  setf.sig f9=r33
+  nop.i 0;;
+} { .mfb
+  nop.m 0
+  fma.s1 f6=f8,f1,f0
+  nop.b 0
+} { .mfb
+  nop.m 0
+  fma.s1 f7=f9,f1,f0
+  nop.b 0;;
+} { .mfi
+  nop.m 0
+  // Step (1)
+  // y0 = 1 / b in f8
+  frcpa.s1 f8,p6=f6,f7
+  nop.i 0;;
+} { .mfi
+  nop.m 0
+  // Step (2)
+  // e0 = 1 - b * y0 in f9
+  (p6) fnma.s1 f9=f7,f8,f1
+  nop.i 0
+} { .mfi
+  nop.m 0
+  // Step (3)
+  // q0 = a * y0 in f10
+  (p6) fma.s1 f10=f6,f8,f0
+  nop.i 0;;
+} { .mfi
+  nop.m 0
+  // Step (4)
+  // e1 = e0 * e0 in f11
+  (p6) fma.s1 f11=f9,f9,f0
+  nop.i 0
+} { .mfi
+  nop.m 0
+  // Step (5)
+  // q1 = q0 + e0 * q0 in f10
+  (p6) fma.s1 f10=f9,f10,f10
+  nop.i 0;;
+} { .mfi
+  nop.m 0
+  // Step (6)
+  // y1 = y0 + e0 * y0 in f8
+  (p6) fma.s1 f8=f9,f8,f8
+  nop.i 0;;
+} { .mfi
+  nop.m 0
+  // Step (7)
+  // q2 = q1 + e1 * q1 in f9
+  (p6) fma.s1 f9=f11,f10,f10
+  nop.i 0;;
+} { .mfi
+  nop.m 0
+  // Step (8)
+  // y2 = y1 + e1 * y1 in f8
+  (p6) fma.s1 f8=f11,f8,f8
+  nop.i 0;;
+} { .mfi
+  nop.m 0
+  // Step (9)
+  // r2 = a - b * q2 in f10
+  (p6) fnma.s1 f10=f7,f9,f6
+  nop.i 0;;
+} { .mfi
+  nop.m 0
+  // Step (10)
+  // q3 = q2 + r2 * y2 in f8
+  (p6) fma.s1 f8=f10,f8,f9
+  nop.i 0;;
+} { .mfb
+  nop.m 0
+  // (11) q = trunc(q3)
+  fcvt.fxu.trunc.s1 f8=f8
+  nop.b 0;;
+} { .mmi
+  // quotient will be in r8 (if b != 0)
+  getf.sig r8=f8
+  nop.m 0
+  nop.i 0;;
+}
+
+  // 64-BIT UNSIGNED INTEGER DIVIDE ENDS HERE
+
+{ .mmb
+  nop.m 0
+  nop.m 0
+  br.ret.sptk b0;;
+}
+
+.endp __udivdi3
diff -r 9fe6fe88a6a1 -r 736f2d6d7b09 extras/mini-os/arch/ia64/__umoddi3.S
--- /dev/null   Thu Jan 01 00:00:00 1970 +0000
+++ b/extras/mini-os/arch/ia64/__umoddi3.S      Fri Mar 02 18:05:38 2007 -0600
@@ -0,0 +1,154 @@
+.file "__umoddi3.s"
+
+// $FreeBSD: src/sys/libkern/ia64/__umoddi3.S,v 1.3 2003/02/11 20:15:11 
schweikh Exp $
+//  
+// Copyright (c) 2000, Intel Corporation
+// All rights reserved.
+//
+// Contributed 2/15/2000 by Marius Cornea, John Harrison, Cristina Iordache, 
+// Ted Kubaska, Bob Norin, and Shane Story of the Computational Software Lab, 
+// Intel Corporation.
+//
+// WARRANTY DISCLAIMER
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT 
+// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL INTEL OR ITS 
+// CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
+// EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
+// PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR 
+// PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
+// OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY OR TORT (INCLUDING
+// NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+// SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+//
+// Intel Corporation is the author of this code, and requests that all
+// problem reports or change requests be submitted to it directly at
+// http://developer.intel.com/opensource.
+//
+
+.section .text
+
+  // 64-bit unsigned integer remainder
+
+.proc __umoddi3#
+.align 32
+.global __umoddi3#
+.align 32
+
+__umoddi3:
+
+{ .mii
+  alloc r31=ar.pfs,3,0,0,0
+  nop.i 0
+  nop.i 0
+} { .mmb
+
+  // 64-BIT UNSIGNED INTEGER REMAINDER BEGINS HERE
+
+  // general register used:
+  //    r32 - 64-bit unsigned integer dividend, called a below
+  //    r33 - 64-bit unsigned integer divisor, called b below
+  //    r8 - 64-bit unsigned integer result
+  // floating-point registers used: f6, f7, f8, f9, f10, f11, f12
+  // predicate registers used: p6
+
+  setf.sig f12=r32  // holds a in integer form
+  setf.sig f7=r33
+  nop.b 0;;
+} { .mfi
+  // get 2s complement of b
+  sub r33=r0,r33
+  fcvt.xuf.s1 f6=f12
+  nop.i 0
+} { .mfi
+  nop.m 0
+  fcvt.xuf.s1 f7=f7
+  nop.i 0;;
+} { .mfi
+  nop.m 0
+  // Step (1)
+  // y0 = 1 / b in f8
+  frcpa.s1 f8,p6=f6,f7
+  nop.i 0;;
+} { .mfi
+  nop.m 0
+  // Step (2)
+  // q0 = a * y0 in f10
+  (p6) fma.s1 f10=f6,f8,f0
+  nop.i 0
+} { .mfi
+  nop.m 0
+  // Step (3)
+  // e0 = 1 - b * y0 in f9
+  (p6) fnma.s1 f9=f7,f8,f1
+  nop.i 0;;
+} { .mfi
+  nop.m 0
+  // Step (4)
+  // q1 = q0 + e0 * q0 in f10
+  (p6) fma.s1 f10=f9,f10,f10
+  nop.i 0
+} { .mfi
+  nop.m 0
+  // Step (5)
+  // e1 = e0 * e0 in f11
+  (p6) fma.s1 f11=f9,f9,f0
+  nop.i 0;;
+} { .mfi
+  nop.m 0
+  // Step (6)
+  // y1 = y0 + e0 * y0 in f8
+  (p6) fma.s1 f8=f9,f8,f8
+  nop.i 0;;
+} { .mfi
+  nop.m 0
+  // Step (7)
+  // q2 = q1 + e1 * q1 in f9
+  (p6) fma.s1 f9=f11,f10,f10
+  nop.i 0;;
+} { .mfi
+  nop.m 0
+  // Step (8)
+  // y2 = y1 + e1 * y1 in f8
+  (p6) fma.s1 f8=f11,f8,f8
+  nop.i 0;;
+} { .mfi
+  nop.m 0
+  // Step (9)
+  // r2 = a - b * q2 in f10
+  (p6) fnma.s1 f10=f7,f9,f6
+  nop.i 0;;
+} { .mfi
+  // f7=-b
+  setf.sig f7=r33
+  // Step (10)
+  // q3 = q2 + r2 * y2 in f8
+  (p6) fma.s1 f8=f10,f8,f9
+  nop.i 0;;
+} { .mfi
+  nop.m 0
+  // (11) q = trunc(q3)
+  fcvt.fxu.trunc.s1 f8=f8
+  nop.i 0;;
+}  { .mfi
+  nop.m 0
+  // (12) r = a + (-b) * q
+  xma.l f8=f8,f7,f12
+  nop.i 0;;
+}  { .mib
+  getf.sig r8=f8
+  nop.i 0
+  nop.b 0
+}
+
+  // 64-BIT UNSIGNED INTEGER REMAINDER ENDS HERE
+
+{ .mib
+  nop.m 0
+  nop.i 0
+  br.ret.sptk b0;;
+}
+
+.endp __umoddi3
diff -r 9fe6fe88a6a1 -r 736f2d6d7b09 extras/mini-os/arch/ia64/arch.mk
--- /dev/null   Thu Jan 01 00:00:00 1970 +0000
+++ b/extras/mini-os/arch/ia64/arch.mk  Fri Mar 02 18:05:38 2007 -0600
@@ -0,0 +1,5 @@
+ARCH_CFLAGS := -mfixed-range=f2-f5,f12-f15,f32-f127 -mconstant-gp
+ARCH_CFLAGS += -O2
+ARCH_ASFLAGS := -x assembler-with-cpp
+ARCH_ASFLAGS += -mfixed-range=f2-f5,f12-f15,f32-f127 -fomit-frame-pointer
+ARCH_ASFLAGS += -fno-builtin -fno-common -fno-strict-aliasing -mconstant-gp
diff -r 9fe6fe88a6a1 -r 736f2d6d7b09 extras/mini-os/arch/ia64/common.c
--- /dev/null   Thu Jan 01 00:00:00 1970 +0000
+++ b/extras/mini-os/arch/ia64/common.c Fri Mar 02 18:05:38 2007 -0600
@@ -0,0 +1,236 @@
+/*
+ * Done by Dietmar Hahn <dietmar.hahn@xxxxxxxxxxxxxxxxxxx>
+ *
+ ****************************************************************************
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ *    notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ *    notice, this list of conditions and the following disclaimer in the
+ *    documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
+ * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE DISCLAIMED.  IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
+ * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+ * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+ * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+ * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+ * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+ * SUCH DAMAGE.
+ *
+ ****************************************************************************
+ *
+ * Parts are taken from FreeBSD.
+ *
+ */
+
+
+#include "os.h"
+#include "types.h"
+#include "lib.h"
+#include "page.h"
+#include "xen/xen.h"
+#include "privop.h"
+#include "xen/callback.h"
+#include "ia64_cpu.h"
+#include "hypervisor.h"
+#include "events.h"
+#include "console.h"
+#include "time.h"
+#include "xmalloc.h"
+
+
+/* For more console boot messages. */
+int bootverbose;
+
+/*
+ * This structure contains start-of-day info, such as pagetable base pointer,
+ * address of the shared_info structure, and things like that.
+ */
+union start_info_union start_info_union;
+
+shared_info_t *HYPERVISOR_shared_info = (shared_info_t *)XSI_BASE;
+
+struct machine_fw machineFwG;
+
+
+struct xen_ia64_boot_param ia64BootParamG;
+char boot_cmd_line[COMMAND_LINE_SIZE+1];
+
+
+void
+ia64_write_itr_i(ia64_pte_t* pteP, u32 reg, uint64_t vAddr,
+                 uint64_t ps, uint64_t pk)
+{
+       /* The virtual address. */
+       __asm __volatile("mov   cr.ifa=%0" :: "r"(vAddr));
+       /* The page size */
+       __asm __volatile("mov   cr.itir=%0;;" :: "r"((ps << IA64_ITIR_PS)|(pk 
<< IA64_ITIR_KEY)));
+       /* Put pte into instruction translation register. */ 
+       __asm __volatile("itr.i itr[%0]=%1" :: "r"(reg), "r"(*(uint64_t*)pteP));
+       /* Serialization */
+       __asm __volatile("srlz.i");
+}
+
+void
+map_pal_code(void)
+{
+       ia64_pte_t pte;
+
+       xen_set_virtual_psr_ic(0);
+       memset(&pte, 0, sizeof(pte));           /* Prepare the pte */
+       pte.pte_p = 1;                          /* present bit */
+       pte.pte_ma = PTE_MA_WB;                 /* memory attribute */
+       pte.pte_a = 1;                          /* accessed bit */
+       pte.pte_d = 1;                          /* dirty bit */
+       pte.pte_pl = PTE_PL_KERN;               /* privilege level */
+       pte.pte_ar = PTE_AR_RWX;                /* access rights */
+       pte.pte_ppn = ((uint64_t) __pa(machineFwG.ia64_pal_base)) >> 14;
+       pte.pte_ed = 0;                         /* exception deferral */
+
+       /*
+        * Must purge here because a itc/dtc with the same address
+        * may be in the tlb!
+        */
+       ia64_ptc_l(machineFwG.ia64_pal_base, PTE_PS_16K);
+       ia64_write_itr_i(&pte, IA64_TR_PAL,
+                        (uint64_t) machineFwG.ia64_pal_base, PTE_PS_16K, 0);
+       xen_set_virtual_psr_ic(1);
+}
+
+extern char hypervisor_callback;
+
+static void
+registerCallback(void)
+{
+       struct callback_register event =
+       {
+               .type = SWAP(CALLBACKTYPE_event),
+               .address = SWAP((unsigned long)&hypervisor_callback),
+       };
+       HYPERVISOR_callback_op(CALLBACKOP_register, &event);
+}
+
+static void
+init_start_info(start_info_t* xen_start_info)
+{
+       /* Make a copy of the start_info structure */
+       start_info.nr_pages = SWAP(xen_start_info->nr_pages);
+       start_info.shared_info = SWAP(xen_start_info->shared_info);
+       start_info.flags = SWAP(xen_start_info->flags);
+       start_info.store_mfn = SWAP(xen_start_info->store_mfn);
+       start_info.store_evtchn = SWAP(xen_start_info->store_evtchn);
+       start_info.console.domU.mfn = SWAP(xen_start_info->console.domU.mfn);
+       start_info.console.domU.evtchn =
+                               SWAP(xen_start_info->console.domU.evtchn);
+       start_info.pt_base = SWAP(xen_start_info->pt_base);
+       start_info.nr_pt_frames = SWAP(xen_start_info->nr_pt_frames);
+       start_info.mfn_list = SWAP(xen_start_info->mfn_list);
+       start_info.mod_start = SWAP(xen_start_info->mod_start);
+       start_info.mod_len = SWAP(xen_start_info->mod_len);
+}
+
+static void
+init_boot_params(void)
+{
+       /* ia64_boot_paramP is initialised in ia64.S!  */
+       ia64BootParamG.command_line = SWAP(ia64_boot_paramP->command_line);
+       ia64BootParamG.efi_systab = SWAP(ia64_boot_paramP->efi_systab);
+       ia64BootParamG.efi_memmap = SWAP(ia64_boot_paramP->efi_memmap);
+       ia64BootParamG.efi_memmap_size =
+                               SWAP(ia64_boot_paramP->efi_memmap_size);
+       ia64BootParamG.efi_memdesc_size =
+                               SWAP(ia64_boot_paramP->efi_memdesc_size);
+       ia64BootParamG.efi_memdesc_version =
+                               SWAP(ia64_boot_paramP->efi_memdesc_version);
+       ia64BootParamG.console_info.num_cols =
+                               SWAP(ia64_boot_paramP->console_info.num_cols);
+       ia64BootParamG.console_info.num_rows =
+                               SWAP(ia64_boot_paramP->console_info.num_rows);
+       ia64BootParamG.console_info.orig_x =
+                               SWAP(ia64_boot_paramP->console_info.orig_x);
+       ia64BootParamG.console_info.orig_y =
+                               SWAP(ia64_boot_paramP->console_info.orig_y);
+       ia64BootParamG.fpswa = SWAP(ia64_boot_paramP->fpswa);
+       ia64BootParamG.initrd_start = SWAP(ia64_boot_paramP->initrd_start);
+       ia64BootParamG.initrd_size = SWAP(ia64_boot_paramP->initrd_size);
+       ia64BootParamG.domain_start = SWAP(ia64_boot_paramP->domain_start);
+       ia64BootParamG.domain_size = SWAP(ia64_boot_paramP->domain_size);
+
+       /*
+        * Copy and parse the boot command line.
+        * Currently only a check of bootverbose is done.
+        */
+       memset(boot_cmd_line, 0, sizeof(boot_cmd_line));
+       strncpy(boot_cmd_line,
+               (char*)__va(ia64BootParamG.command_line), COMMAND_LINE_SIZE);
+       boot_cmd_line[COMMAND_LINE_SIZE - 1] = '\0';
+
+       /* Look for bootverbose. */
+       if (strstr(boot_cmd_line, "bootverbose"))
+               bootverbose = 1;
+}
+
+void
+arch_init(start_info_t *si)
+{
+       efi_time_t tm;
+       static int initialized;
+
+       if (initialized)
+               return;
+
+       init_start_info(si);
+
+       init_boot_params();
+
+       init_efi();
+
+       map_pal_code();
+
+       ia64_sal_init(machineFwG.ia64_sal_tableP);
+
+       if (efi_get_time(&tm)) {
+               printk("EFI-SystemTime: %d.%d.%d   %d:%d:%d",
+                      tm.Day, tm.Month, tm.Year,
+                      tm.Hour, tm.Minute, tm.Second);
+
+               if (tm.TimeZone == EFI_UNSPECIFIED_TIMEZONE)
+                       printk("   Timezone not specified!\n");
+               else
+                       printk("   TimeZone: %d Daylight: 0x%x\n",
+                              tm.TimeZone, tm.Daylight);
+       } else 
+               printk("efi_get_time() failed\n");
+
+       registerCallback();
+       initialized = 1;
+}
+
+void
+arch_print_info(void)
+{
+       int major, minor;
+
+       minor = HYPERVISOR_xen_version(XENVER_version, 0);
+       major = minor >> 16;
+       minor &= ~0xffffffff;
+       printk("Running on Xen version: %d.%d\n", major, minor);
+       printk("machine addr of shared_info_t  : 0x%lx\n",
+              start_info.shared_info);
+       printk("machine page number of shared page: 0x%lx\n",
+              start_info.store_mfn);
+       printk("evtchn for store communication : %d\n",
+              start_info.store_evtchn);
+       printk("MACHINE address of console page: 0x%lx\n",
+              start_info.console.domU.mfn);
+       printk("evtchn for console messages    : %d\n",
+              start_info.console.domU.evtchn);
+       printk("xen_guest_cmdline              : %s\n", boot_cmd_line);
+}
diff -r 9fe6fe88a6a1 -r 736f2d6d7b09 extras/mini-os/arch/ia64/debug.c
--- /dev/null   Thu Jan 01 00:00:00 1970 +0000
+++ b/extras/mini-os/arch/ia64/debug.c  Fri Mar 02 18:05:38 2007 -0600
@@ -0,0 +1,179 @@
+/* 
+ ****************************************************************************
+ * Done by Dietmar Hahn <dietmar.hahn@xxxxxxxxxxxxxxxxxxx
+ *
+ * Description:        ia64 specific part of the mini-os
+ *             Prints debug information on a crash of mini-os
+ *
+ * Parts are taken from FreeBSD.
+ *
+ ****************************************************************************
+ * Permission is hereby granted, free of charge, to any person obtaining a copy
+ * of this software and associated documentation files (the "Software"), to
+ * deal in the Software without restriction, including without limitation the
+ * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or
+ * sell copies of the Software, and to permit persons to whom the Software is
+ * furnished to do so, subject to the following conditions:
+ * 
+ * The above copyright notice and this permission notice shall be included in
+ * all copies or substantial portions of the Software.
+ * 
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 
+ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 
+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 
+ * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 
+ * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING 
+ * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER 
+ * DEALINGS IN THE SOFTWARE.
+ */
+
+#include "os.h"
+
+static const char *ia64_vector_names[] = {
+       "VHPT Translation",                     /* 0 */
+       "Instruction TLB",                      /* 1 */
+       "Data TLB",                             /* 2 */
+       "Alternate Instruction TLB",            /* 3 */
+       "Alternate Data TLB",                   /* 4 */
+       "Data Nested TLB",                      /* 5 */
+       "Instruction Key Miss",                 /* 6 */
+       "Data Key Miss",                        /* 7 */
+       "Dirty-Bit",                            /* 8 */
+       "Instruction Access-Bit",               /* 9 */
+       "Data Access-Bit",                      /* 10 */
+       "Break Instruction",                    /* 11 */
+       "External Interrupt",                   /* 12 */
+       "Reserved 13",                          /* 13 */
+       "Reserved 14",                          /* 14 */
+       "Reserved 15",                          /* 15 */
+       "Reserved 16",                          /* 16 */
+       "Reserved 17",                          /* 17 */
+       "Reserved 18",                          /* 18 */
+       "Reserved 19",                          /* 19 */
+       "Page Not Present",                     /* 20 */
+       "Key Permission",                       /* 21 */
+       "Instruction Access Rights",            /* 22 */
+       "Data Access Rights",                   /* 23 */
+       "General Exception",                    /* 24 */
+       "Disabled FP-Register",                 /* 25 */
+       "NaT Consumption",                      /* 26 */
+       "Speculation",                          /* 27 */
+       "Reserved 28",                          /* 28 */
+       "Debug",                                /* 29 */
+       "Unaligned Reference",                  /* 30 */
+       "Unsupported Data Reference",           /* 31 */
+       "Floating-point Fault",                 /* 32 */
+       "Floating-point Trap",                  /* 33 */
+       "Lower-Privilege Transfer Trap",        /* 34 */
+       "Taken Branch Trap",                    /* 35 */
+       "Single Step Trap",                     /* 36 */
+       "Reserved 37",                          /* 37 */
+       "Reserved 38",                          /* 38 */
+       "Reserved 39",                          /* 39 */
+       "Reserved 40",                          /* 40 */
+       "Reserved 41",                          /* 41 */
+       "Reserved 42",                          /* 42 */
+       "Reserved 43",                          /* 43 */
+       "Reserved 44",                          /* 44 */
+       "IA-32 Exception",                      /* 45 */
+       "IA-32 Intercept",                      /* 46 */
+       "IA-32 Interrupt",                      /* 47 */
+       "Reserved 48",                          /* 48 */
+       "Reserved 49",                          /* 49 */
+       "Reserved 50",                          /* 50 */
+       "Reserved 51",                          /* 51 */
+       "Reserved 52",                          /* 52 */
+       "Reserved 53",                          /* 53 */
+       "Reserved 54",                          /* 54 */
+       "Reserved 55",                          /* 55 */
+       "Reserved 56",                          /* 56 */
+       "Reserved 57",                          /* 57 */
+       "Reserved 58",                          /* 58 */
+       "Reserved 59",                          /* 59 */
+       "Reserved 60",                          /* 60 */
+       "Reserved 61",                          /* 61 */
+       "Reserved 62",                          /* 62 */
+       "Reserved 63",                          /* 63 */
+       "Reserved 64",                          /* 64 */
+       "Reserved 65",                          /* 65 */
+       "Reserved 66",                          /* 66 */
+       "Reserved 67",                          /* 67 */
+};
+
+typedef struct
+{
+#if !defined(BIG_ENDIAN)
+       uint64_t sof    :7;     /* 0-6 size of frame */
+       uint64_t sol    :7;     /* 7-13 size of locals (in + loc) */
+       uint64_t sor    :4;
+       uint64_t rrb_gr :7;
+       uint64_t rrb_fr :7;
+       uint64_t rrb_pr :6;
+       uint64_t res    :25;    /* reserved */
+       uint64_t v      :1;     /* The v bit */
+#else /* !BIG_ENDIAN */
+       uint64_t v      :1;     /* The v bit */
+       uint64_t res    :25;    /* reserved */
+       uint64_t rrb_pr :6;
+       uint64_t rrb_fr :7;
+       uint64_t rrb_gr :7;
+       uint64_t sor    :4;
+       uint64_t sol    :7;     /* 7-13 size of locals (in + loc) */
+       uint64_t sof    :7;     /* 0-6 size of frame */
+#endif /* BIG_ENDIAN */
+} ifs_t;
+
+void
+do_trap_error(trap_frame_t* tf)
+{
+       ifs_t curIfs;
+
+       printk("TRAP in mini-os:\n");
+       printk("  trap: %d (%s)\n", tf->trap_num,
+              ia64_vector_names[tf->trap_num]);
+       printk("  iip : 0x%.16lx  ifa: 0x%.16lx\n", tf->iip, tf->ifa);
+       printk("  ipsr: 0x%.16lx  ifs: 0x%.16lx\n", tf->ipsr, tf->ifs);
+       printk("  isr : 0x%.16lx\n", tf->isr);
+       printk("  gp  : 0x%.16lx  sp : 0x%.16lx\n", tf->gp, tf->sp);
+       printk("  rp  : 0x%.16lx  tp : 0x%.16lx\n", tf->b0, tf->tp);
+       printk("  b6  : 0x%.16lx  b7 : 0x%.16lx\n", tf->b6, tf->b7);
+       printk("  r8  : 0x%.16lx\n", tf->r8);
+       printk("  bsp : 0x%.16lx  rsc: 0x%.16lx\n", tf->bsp, tf->rsc);
+       printk("  r14 : 0x%.16lx  r15: 0x%.16lx\n", tf->r14, tf->r15);
+       printk("  r16 : 0x%.16lx  r17: 0x%.16lx\n", tf->r16, tf->r17);
+       printk("  r18 : 0x%.16lx  r19: 0x%.16lx\n", tf->r18, tf->r19);
+       printk("  r20 : 0x%.16lx  r21: 0x%.16lx\n", tf->r20, tf->r21);
+       printk("  r22 : 0x%.16lx  r23: 0x%.16lx\n", tf->r22, tf->r23);
+       printk("  r24 : 0x%.16lx  r25: 0x%.16lx\n", tf->r24, tf->r25);
+       printk("  r26 : 0x%.16lx  r27: 0x%.16lx\n", tf->r26, tf->r27);
+       printk("  r28 : 0x%.16lx  r29: 0x%.16lx\n", tf->r28, tf->r29);
+       printk("  r30 : 0x%.16lx  r31: 0x%.16lx\n", tf->r30, tf->r31);
+
+       __asm __volatile("flushrs;;");
+       curIfs = *((ifs_t*)((void*)(&tf->ifs)));
+       if (!curIfs.v)
+               printk(" ifs.v = 0");
+       else {
+               uint64_t* regP;
+               uint32_t  i;
+
+               printk("  cfm.sof: %d  cfm.sol: %d\n", curIfs.sof, curIfs.sol);
+               regP = (uint64_t *)(tf->bsp + tf->ndirty);
+               for (i = curIfs.sof; i != 0; ) {
+                       if (i <= (((uint64_t)regP & 0x000001f8) >> 3)) {
+                               regP -= i;
+                               i = 0;
+                               break;
+                       }
+                       i -= ((uint64_t)regP & 0x000001f8) >> 3;
+                       regP = (uint64_t *)((uint64_t)regP & ~0x000001ff) - 1;
+               }
+               for (i = 0; i < curIfs.sof; i++) {
+                       if (((uint64_t)regP & 0x000001f8) == 0x000001f8)
+                               regP++;
+                       printk("  r%d: 0x%lx\n",  i+32, *regP);
+                       regP++;
+               }
+       }
+       HYPERVISOR_shutdown(SHUTDOWN_poweroff);
+}
diff -r 9fe6fe88a6a1 -r 736f2d6d7b09 extras/mini-os/arch/ia64/efi.c
--- /dev/null   Thu Jan 01 00:00:00 1970 +0000
+++ b/extras/mini-os/arch/ia64/efi.c    Fri Mar 02 18:05:38 2007 -0600
@@ -0,0 +1,237 @@
+/*
+ * Done by Dietmar Hahn <dietmar.hahn@xxxxxxxxxxxxxxxxxxx>
+ * The code is partly taken from FreeBSD.
+ *
+ ***************************************************************************
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ *    notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ *    notice, this list of conditions and the following disclaimer in the
+ *    documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
+ * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE DISCLAIMED.  IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
+ * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+ * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+ * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+ * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+ * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+ * SUCH DAMAGE.
+ *
+ */
+
+
+#include "os.h"
+#include "efi.h"
+#include "page.h"
+#include "lib.h"
+#include "console.h"
+
+
+/* The implementation is in fw.S. */
+extern uint64_t
+ia64_call_efi_func(uint64_t funcP,uint64_t a,uint64_t b,uint64_t c,uint64_t d);
+
+int
+efi_get_time(efi_time_t* tmP)
+{
+       memset(tmP, 0, sizeof(efi_time_t));
+       if (ia64_call_efi_func((uint64_t)machineFwG.efi.getTimeF,
+                              (uint64_t)tmP,
+                              (uint64_t)NULL, 0, 0) != EFI_SUCCESS) {
+               printk("efi.getTime() failed\n");
+               return 0;
+       }
+
+#if defined(BIG_ENDIAN)
+       tmP->Year = SWAP(tmP->Year);
+       tmP->TimeZone = SWAP(tmP->TimeZone);
+       tmP->Nanosecond = SWAP(tmP->Nanosecond);
+#endif
+
+       return 1;
+}
+
+/*
+ * The function compares two efi_guid_t and returns 0 on equality, otherwise 1.
+ */
+static int
+efi_guid_cmp(efi_guid_t* a_le, efi_guid_t* b)
+{
+#if defined(BIG_ENDIAN)
+       if(SWAP(a_le->Data1) != b->Data1)
+               return 1;
+       if(SWAP(a_le->Data2) != b->Data2)
+               return 1;
+       if(SWAP(a_le->Data3) != b->Data3)
+               return 1;
+       return memcmp(a_le->Data4, b->Data4, sizeof(uint8_t)*8);
+#else
+       return memcmp(a_le, b, sizeof(efi_guid_t));
+#endif
+}
+
+void
+init_efi(void)
+{
+       efi_system_table_t* efiSysTableP;
+       int mdcnt, i, numConvMem;
+       efi_memory_descriptor_t *memdP, *mdP;
+       efi_status_t status;
+       char fwVendor[100] = "unknown";
+       efi_char16_t* fwP;
+       efi_runtime_services_t* rsP;
+
+       efi_configuration_table_t* confP = (efi_configuration_table_t*)0;
+       efi_guid_t sal = SAL_SYSTEM_TABLE_GUID;
+       efi_guid_t acpi = ACPI_TABLE_GUID;
+       efi_guid_t acpi20 = ACPI_20_TABLE_GUID;
+       
+       memset(&machineFwG, 0, sizeof(machineFwG));
+       /* Read the efi_system_table.  */
+       efiSysTableP = (efi_system_table_t*)__va(ia64BootParamG.efi_systab);
+       machineFwG.efi.efiSysTableP = efiSysTableP;
+       PRINT_BV("EfiSystemTable at: %p\n", efiSysTableP);
+       fwP = (uint16_t*) __va(SWAP(efiSysTableP->FirmwareVendor));
+       if (fwP) {
+               for (i = 0; i < (int)sizeof(fwVendor) - 1 && *fwP; ++i)
+                       fwVendor[i] = SWAP(*fwP++);
+               fwVendor[i] = '\0';
+       }
+       PRINT_BV("  EFI-FirmwareVendor        : %s\n", fwVendor);
+       PRINT_BV("  EFI-FirmwareRevision      : %d\n",
+                SWAP(efiSysTableP->FirmwareRevision));
+       PRINT_BV("  EFI-SystemTable-Revision  : %d.%d\n",
+                SWAP(efiSysTableP->Hdr.Revision)>>16,
+                SWAP(efiSysTableP->Hdr.Revision)&0xffff);
+       rsP = (efi_runtime_services_t*)
+               __va(SWAP(efiSysTableP->RuntimeServices));
+       mdcnt = ia64BootParamG.efi_memmap_size /
+               ia64BootParamG.efi_memdesc_size;
+       memdP = (efi_memory_descriptor_t*) __va(ia64BootParamG.efi_memmap);
+
+       PRINT_BV("EFI-Memorydescriptors: %d\n", mdcnt);
+
+       for (i = numConvMem = 0, mdP = memdP; i < mdcnt; i++,
+            mdP = NextMemoryDescriptor(mdP, ia64BootParamG.efi_memdesc_size)) {
+               /* Relocate runtime memory segments for firmware. */
+               PRINT_BV("  %d. Type: %x  Attributes: 0x%lx\n",
+                        i, SWAP(mdP->Type), SWAP(mdP->Attribute));
+               PRINT_BV("     PhysStart: 0x%lx  NumPages: 0x%lx\n",
+                        SWAP(mdP->PhysicalStart), SWAP(mdP->NumberOfPages));
+               switch (SWAP(mdP->Type)) {
+                       case EfiRuntimeServicesData:
+                               PRINT_BV("     -> EfiRuntimeServicesData\n");
+                               break;
+                       case EfiACPIReclaimMemory:
+                               PRINT_BV("     -> EfiACPIReclaimMemory\n");
+                               break;
+                       case EfiACPIMemoryNVS:
+                               PRINT_BV("     -> EfiACPIMemoryNVS\n");
+                               break;
+                       case EfiConventionalMemory:
+                               PRINT_BV("     -> EfiConventionalMemory\n");
+                               PRINT_BV("        start: 0x%lx end: 0x%lx\n",
+                                       SWAP(mdP->PhysicalStart),
+                                       SWAP(mdP->PhysicalStart)+
+                                       SWAP(mdP->NumberOfPages)*EFI_PAGE_SIZE);
+                               if (numConvMem) {
+                                       printk("     Currently only one efi "
+                                               "memory chunk supported !!!\n");
+                                       break;
+                               }
+                               machineFwG.mach_mem_start =
+                                       SWAP(mdP->PhysicalStart);
+                               machineFwG.mach_mem_size =
+                                       SWAP(mdP->NumberOfPages)*EFI_PAGE_SIZE;
+                               numConvMem++;
+                               break;
+                       case EfiMemoryMappedIOPortSpace:
+                               PRINT_BV("     -> EfiMemMappedIOPortSpace\n");
+                               break;
+                       case EfiPalCode:
+                                       machineFwG.ia64_pal_base =
+                                       __va(SWAP(mdP->PhysicalStart));
+                               PRINT_BV("     -> EfiPalCode\n"
+                                        "        start : %p\n",
+                                        machineFwG.ia64_pal_base);
+                               break;
+               }
+               /* I have to setup the VirtualStart address of every
+                * RUNTIME-area in preparing the later call of
+                * SetVirtualAddressMap() therewidth the efi stuff uses
+                * virtual addressing and the efi runtime functions
+                * may be called directly.
+                */
+               if (SWAP(mdP->Attribute) & EFI_MEMORY_RUNTIME) {
+                       if (SWAP(mdP->Attribute) & EFI_MEMORY_WB)
+                               mdP->VirtualStart =
+                                       SWAP(__va(mdP->PhysicalStart));
+                       else {
+                               if (SWAP(mdP->Attribute) & EFI_MEMORY_UC)
+                                       printk("efi_init: RuntimeMemory with "
+                                               "UC attribute !!!!!!\n");
+                                       /*
+                                       mdP->VirtualStart =
+                                       IA64_PHYS_TO_RR6(mdP->PhysicalStart);
+                                       */
+                       }
+               }
+       }
+       /* Now switch efi runtime stuff to virtual addressing. */
+       status = ia64_call_efi_physical(
+                       (void*)__va(SWAP((uint64_t)rsP->SetVirtualAddressMap)),
+                       ia64BootParamG.efi_memmap_size,
+                       ia64BootParamG.efi_memdesc_size,
+                       ia64BootParamG.efi_memdesc_version,
+                       ia64BootParamG.efi_memmap);
+       status = EFI_SUCCESS;
+       if (status != EFI_SUCCESS) {
+               printk("warning: unable to switch EFI into virtual "
+                      "(status=%lu)\n", status);
+               return;
+       }
+       /* Getting efi function pointer for getEfiTime. */
+       machineFwG.efi.getTimeF =
+               (efi_get_time_t)__va(SWAP((uint64_t)rsP->GetTime));
+       /* Getting efi function pointer for resetSystem. */
+       machineFwG.efi.resetSystemF =
+               (efi_reset_system_t)__va(SWAP((uint64_t)rsP->ResetSystem));
+
+       /* Scanning the Configuration table of the EfiSystemTable. */
+       PRINT_BV("NumberOfConfigTableEntries: %ld\n",
+                SWAP(efiSysTableP->NumberOfTableEntries));
+
+       confP = (efi_configuration_table_t*)
+                       __va(SWAP(efiSysTableP->ConfigurationTable));
+       for (i = 0; i < SWAP(efiSysTableP->NumberOfTableEntries); i++) {
+               if (!efi_guid_cmp(&confP[i].VendorGuid, &sal)) {
+                       machineFwG.ia64_sal_tableP = (sal_system_table_t*)
+                               __va(SWAP((uint64_t) confP[i].VendorTable));
+                       PRINT_BV("  Found SalSystemTable at: 0x%lx\n",
+                                (uint64_t) machineFwG.ia64_sal_tableP);
+                       continue;
+               }
+               if (!efi_guid_cmp(&confP[i].VendorGuid, &acpi)) {
+                       machineFwG.ia64_efi_acpi_table =
+                               __va(SWAP((uint64_t) confP[i].VendorTable));
+                       PRINT_BV("  Found AcpiTable at:      0x%lx\n",
+                                (uint64_t) machineFwG.ia64_efi_acpi_table);
+                       continue;
+               }
+               if (!efi_guid_cmp(&confP[i].VendorGuid, &acpi20)) {
+                       machineFwG.ia64_efi_acpi20_table =
+                               __va(SWAP((uint64_t) confP[i].VendorTable));
+                       PRINT_BV("  Found Acpi20Table at:    0x%lx\n",
+                                (uint64_t) machineFwG.ia64_efi_acpi20_table);
+                       continue;
+               }
+       }
+}
diff -r 9fe6fe88a6a1 -r 736f2d6d7b09 extras/mini-os/arch/ia64/fw.S
--- /dev/null   Thu Jan 01 00:00:00 1970 +0000
+++ b/extras/mini-os/arch/ia64/fw.S     Fri Mar 02 18:05:38 2007 -0600
@@ -0,0 +1,519 @@
+/*
+ * Done by Dietmar Hahn <dietmar.hahn@xxxxxxxxxxxxxxxxxxx>
+ * Parts taken from FreeBSD.
+ *
+ ***************************************************************************
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ *    notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ *    notice, this list of conditions and the following disclaimer in the
+ *    documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
+ * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE DISCLAIMED.  IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
+ * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+ * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+ * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+ * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+ * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+ * SUCH DAMAGE.
+ *
+ */
+
+
+#include "asm.h"
+#include "page.h"
+#include "ia64_cpu.h"
+#include "ia64_fpu.h"
+#include "offsets.h"
+
+
+/*
+ * ia64_change_mode:   change mode to/from physical mode
+ *
+ * Arguments:
+ *     r14     psr for desired mode
+ *
+ * Modifies:
+ *     r15-r20 scratch
+ *     ar.bsp  translated to new mode
+ *     sp      translated to new mode
+ *     iip     translated to new mode
+ */
+ENTRY(ia64_change_mode)
+       rsm     psr.i | psr.ic
+       mov     r19=ar.rsc              // save rsc while we change mode
+       tbit.nz p8,p9=r14,17            // Uses psr.dt-physical or virtual ?
+                       // p8 == true: switch to virtual
+                       // p9 == true: switch to physical
+       ;;
+       mov     ar.rsc=IA64_RSE_LAZY    // turn off RSE
+       mov     r16=rp
+       ;;
+       flushrs                         // clean the rse
+       srlz.i
+       ;;
+1:     mov     r15=ip
+       mov     r17=ar.bsp
+       mov     r18=ar.rnat
+       ;;
+       add     r15=2f-1b,r15           // address to rfi to
+               /* !!! must be the same like in  minios-ia64.lds */
+(p8)   movl    r20=(KERNEL_START - (1<<KERNEL_PHYS_START_SHIFT))
+       ;;
+                       // (p8): switch to virtual
+                       // (p9): switch to physical
+
+               // from virtual to physical
+(p9)   tpa     r15=r15                 // ip
+(p9)   tpa     r16=r16                 // rp
+(p9)   tpa     r17=r17                 // ar.bsp
+(p9)   tpa     sp=sp                   // sp
+       ;;              /* Needed only for assembler violate ... warnings. */
+               // from physical to virtual
+(p8)   add     r15=r20,r15             // ip
+(p8)   add     r16=r20,r16             // rp
+(p8)   add     r17=r20,r17             // ar.bsp
+(p8)   add     sp=r20,sp               // sp
+       ;;
+       mov     ar.bspstore=r17
+       mov     rp=r16
+       ;;
+       mov     ar.rnat=r18
+       mov     cr.iip=r15
+       mov     cr.ipsr=r14             // psr for new mode
+       mov     cr.ifs=r0
+       ;;
+       rfi
+       ;;
+2:     mov     ar.rsc=r19              // restore ar.rsc
+       ;;
+       br.ret.sptk.few rp              // now in new mode
+END(ia64_change_mode)
+
+/*
+ * ia64_physical_mode:  change mode to physical mode
+ *
+ * Return:
+ *  ret0  psr to restore
+ *
+ * Modifies:
+ *  r15-r18 scratch
+ *  ar.bsp  tranlated to physical mode
+ *  psr.i cleared
+ */
+ENTRY(ia64_physical_mode)
+       mov     r14=psr
+       movl    r15=(IA64_PSR_I|IA64_PSR_IT|IA64_PSR_DT|        \
+                       IA64_PSR_RT|IA64_PSR_DFL|IA64_PSR_DFH)
+       ;;
+       mov     ret0=r14
+       movl    r16=IA64_PSR_BN
+       ;;
+       andcm   r14=r14,r15     // clear various xT bits
+       ;;
+       or      r14=r14,r16     // make sure BN=1
+       or      ret0=ret0,r16   // make sure BN=1
+       ;;
+       br.cond.sptk.many ia64_change_mode
+END(ia64_physical_mode)
+
+/*
+ * ia64_call_efi_physical:     call an EFI procedure in physical mode
+ *
+ * Arguments:
+ *     in0             Address of EFI procedure descriptor
+ *     in1-in5         Arguments to EFI procedure
+ *
+ * Return:
+ *     ret0-ret3       return values from EFI
+ *
+ */
+ENTRY(ia64_call_efi_physical)
+       .prologue
+       .regstk 6,4,5,0
+       .save   ar.pfs,loc0
+       alloc   loc0=ar.pfs,6,4,5,0
+       ;;
+       .save   rp,loc1
+       mov     loc1=rp
+       ;;
+       .body
+       br.call.sptk.many rp=ia64_physical_mode
+       ;;
+
+       mov     loc2=r8                 // psr to restore mode
+       mov     loc3=gp                 // save kernel gp
+       ld8     r14=[in0],8             // function address
+       ;;
+       ld8     gp=[in0]                // function gp value
+#if defined(BIG_ENDIAN)
+       mux1    r14=r14,@rev            // swap because mini-os is in BE
+       mov     ar.rsc=3
+       ;;
+#endif
+       mov     out0=in1
+       mov     out1=in2
+       mov     out2=in3
+       mov     out3=in4
+       mov     out4=in5
+       mov     b6=r14
+       ;;
+#if defined(BIG_ENDIAN)
+       mux1    gp=gp,@rev              // swap because mini-os is in BE
+       rum IA64_PSR_BE
+       ;;
+#endif
+
+       br.call.sptk.many rp=b6         // call EFI procedure
+
+#if defined(BIG_ENDIAN)
+       ;;
+       sum IA64_PSR_BE
+       mov     ar.rsc=IA64_RSE_EAGER
+#endif
+       mov     gp=loc3                 // restore kernel gp
+       mov     r14=loc2                // psr to restore mode
+       ;;
+       br.call.sptk.many rp=ia64_change_mode
+       ;;
+       mov     rp=loc1
+       mov     ar.pfs=loc0
+       ;;
+       br.ret.sptk.many rp
+END(ia64_call_efi_physical)
+       
+
+/*
+ * struct ia64_pal_result ia64_call_pal_static(uint64_t proc,
+ *     uint64_t arg1, uint64_t arg2, uint64_t arg3)
+ */
+ENTRY(ia64_call_pal_static)
+       
+       .regstk 4,5,0,0
+palret =       loc0
+entry  =       loc1
+rpsave =       loc2
+pfssave =      loc3
+psrsave        =       loc4
+
+       alloc   pfssave=ar.pfs,4,5,0,0
+       ;; 
+       mov     rpsave=rp
+
+       movl    entry=@gprel(ia64_pal_entry)
+1:     mov     palret=ip               // for return address
+       ;;
+       add     entry=entry,gp
+       mov     psrsave=psr
+       mov     r28=in0                 // procedure number
+       ;;
+       ld8     entry=[entry]           // read entry point
+       mov     r29=in1                 // copy arguments
+       mov     r30=in2
+       mov     r31=in3
+       ;;
+       mov     b6=entry
+       add     palret=2f-1b,palret     // calculate return address
+       ;;
+       mov     b0=palret
+       rsm     psr.i                   // disable interrupts
+       ;;
+#if defined(BIG_ENDIAN)
+       rum     IA64_PSR_BE             // set psr.be==0
+       ;;
+#endif
+       br.cond.sptk b6                 // call into firmware
+       ;;
+#if defined(BIG_ENDIAN)
+       sum     IA64_PSR_BE             // set psr.be==1
+       ;;
+#endif
+       ssm     psr.i                   // enable interrupts
+       ;;
+2:     mov     psr.l=psrsave
+       mov     rp=rpsave
+       mov     ar.pfs=pfssave
+       ;;
+       srlz.d
+       br.ret.sptk rp
+
+END(ia64_call_pal_static)
+
+/*
+ * Call a efi function.
+ * in0: func descriptor
+ * in1: param1
+ * ...
+ * in5: param5
+ */
+ENTRY(ia64_call_efi_func)
+       alloc   loc0=ar.pfs,6,3,5,0
+
+       mov     loc1=gp
+       mov     loc2=rp
+
+       mov     out0=in1
+       mov     out1=in2
+       mov     out2=in3
+       mov     out3=in4
+       mov     out4=in5
+
+       ld8     r14=[in0],8             // get function address
+       ;;
+       ld8     gp=[in0]                // function gp value
+       ;;
+#if defined(BIG_ENDIAN)
+       mux1    r14=r14,@rev            // swap if mini-os is in BE
+       mux1    gp=gp,@rev              // swap if mini-os is in BE
+#endif
+       ;;
+       mov     b6=r14
+
+#if defined(BIG_ENDIAN)
+       rum     IA64_PSR_BE
+       ;;
+#endif
+
+       br.call.sptk.many rp=b6         // call EFI procedure
+       
+#if defined(BIG_ENDIAN)
+       sum     IA64_PSR_BE
+       ;;
+#endif
+       
+       mov     ar.pfs=loc0
+       mov     gp=loc1
+       mov     rp=loc2
+       br.ret.sptk rp
+
+END(ia64_call_efi_func)
+
+
+/* Restore the context from the thread context.
+ */
+ENTRY(restore_context)
+{      .mmi
+       invala
+       mov     ar.rsc=IA64_RSE_LAZY
+       add     r29=SW_SP,in0
+}
+       add     r30=SW_RP,in0
+       add     r31=SW_PR,in0
+       ;;
+       ld8     r12=[r29],SW_LC-SW_SP           // load sp
+       ld8     r16=[r30],SW_BSP-SW_RP          // load rp
+       ;;
+       ld8     r17=[r31],SW_RNAT-SW_PR         // load pr
+       ld8     r18=[r30],SW_PFS-SW_BSP         // load bsp
+       mov     rp=r16
+       ;;
+       ld8     r16=[r31],SW_R4-SW_RNAT         // load rnat
+       mov     pr=r17,-1                       // set pr
+       mov     ar.bspstore=r18
+       ;;
+       ld8     r18=[r30],SW_UNATA-SW_PFS       // load pfs
+       ld8     r17=[r29],SW_UNATB-SW_LC        // load lc
+       mov     ar.rnat=r16
+       ;;
+       ld8     r16=[r30],SW_R5-SW_UNATA        // load unat_a
+       mov     ar.pfs=r18
+       mov     ar.lc=r17
+       ;;
+       ld8.fill r4=[r31],SW_R6-SW_R4           // load r4
+       mov     ar.unat=r16
+       ;;
+       ld8.fill r5=[r30],SW_R7-SW_R5           // load r5
+       ld8     r16=[r29],SW_B3-SW_UNATB        // load unat_b
+       mov     ar.rsc=IA64_RSE_EAGER
+       ;;
+       ld8.fill r6=[r31],SW_B1-SW_R6           // load r6
+       ld8.fill r7=[r30],SW_B2-SW_R7           // load r7
+       ;;
+       ld8     r17=[r31],SW_B4-SW_B1           // load b1
+       ld8     r18=[r30],SW_B5-SW_B2           // load b2
+       mov     ar.unat=r16                     // unat_b
+       ;;
+       ld8     r16=[r29],SW_F2-SW_B3           // load b3
+       mov     b1=r17
+       mov     b2=r18
+       ;;
+       ld8     r17=[r31],SW_F3-SW_B4           // load b4
+       ld8     r18=[r30],SW_F4-SW_B5           // load b5
+       mov     b3=r16
+       ;;
+       ldf.fill f2=[r29]                       // load f2
+       mov     b4=r17
+       mov     b5=r18
+       ;;
+       ldf.fill f3=[r31],SW_F5-SW_F3           // load f3
+       ldf.fill f4=[r30],SW_F4-SW_F2           // load f4
+       ;;
+       ldf.fill f5=[r31],SW_F5-SW_F3           // load f5
+       ldf.fill f16=[r30],SW_F4-SW_F2          // load f16
+       ;;
+       ldf.fill f17=[r31],SW_F5-SW_F3          // load f17
+       ldf.fill f18=[r30],SW_F4-SW_F2          // load f18
+       ;;
+       ldf.fill f19=[r31],SW_F5-SW_F3          // load f19
+       ldf.fill f20=[r30],SW_F4-SW_F2          // load f20
+       ;;
+       ldf.fill f21=[r31],SW_F5-SW_F3          // load f21
+       ldf.fill f22=[r30],SW_F4-SW_F2          // load f22
+       ;;
+       ldf.fill f23=[r31],SW_F5-SW_F3          // load f23
+       ldf.fill f24=[r30],SW_F4-SW_F2          // load f24
+       ;;
+       ldf.fill f25=[r31],SW_F5-SW_F3          // load f25
+       ldf.fill f26=[r30],SW_F4-SW_F2          // load f26
+       ;;
+       ldf.fill f27=[r31],SW_F5-SW_F3          // load f27
+       ldf.fill f28=[r30],SW_F4-SW_F2          // load f28
+       ;;
+       ldf.fill f29=[r31],SW_F5-SW_F3          // load f29
+       ldf.fill f30=[r30],SW_F4-SW_F2          // load f30
+       ;;
+       ldf.fill f31=[r30],SW_F4-SW_F2          // load f31
+       add             r8=1,r0
+       br.ret.sptk     rp
+       ;;
+END(restore_context)
+
+/*
+ * void switch_context(struct thread* old, struct thread* new)
+ */
+ENTRY(switch_context)
+
+       mov     ar.rsc=IA64_RSE_LAZY
+       mov     r16=ar.unat
+       add     r31=SW_UNATB,in0
+       add     r30=SW_SP,in0
+       ;;
+{      .mmi
+       flushrs
+       st8     [r30]=sp,SW_RP-SW_SP            // sp
+       mov     r17=rp
+       ;;
+}
+       st8     [r31]=r16,SW_PR-SW_UNATB        // unat (before)
+       st8     [r30]=r17,SW_BSP-SW_RP          // rp
+       mov     r16=pr
+       ;;
+       st8     [r31]=r16,SW_PFS-SW_PR          // pr
+       mov     r17=ar.bsp
+       mov     r16=ar.pfs
+       ;;
+       st8     [r31]=r16,SW_RNAT-SW_PFS        // save pfs
+       st8     [r30]=r17,SW_R4-SW_BSP          // save bsp
+       mov     r16=ar.rnat
+       ;;
+       st8     [r31]=r16,SW_R5-SW_RNAT         // save rnat
+       mov     ar.rsc=IA64_RSE_EAGER
+       ;;
+{      .mmi
+       .mem.offset     8,0
+       st8.spill       [r30]=r4,SW_R6-SW_R4    // r4
+       .mem.offset     16,0
+       st8.spill       [r31]=r5,SW_R7-SW_R5    // r5
+       mov             r16=b1
+       ;;
+}
+{      .mmi
+       .mem.offset     8,0
+       st8.spill       [r30]=r4,SW_B1-SW_R6    // r6
+       .mem.offset     16,0
+       st8.spill       [r31]=r5,SW_B2-SW_R7    // r7
+       mov             r17=b2
+       ;;
+}
+       st8     [r30]=r16,SW_UNATA-SW_B1        // b1
+       st8     [r31]=r17,SW_B3-SW_B2           // b2
+       mov     r18=ar.unat
+       mov     r19=b3
+       mov     r20=b4
+       mov     r21=b5
+       ;;
+       st8     [r30]=r18,SW_B4-SW_UNATA        // unat (after)
+       st8     [r31]=r19,SW_B5-SW_B3           // b3
+       ;;
+       st8     [r30]=r20,SW_LC-SW_B4           // b4
+       st8     [r31]=r21,SW_F2-SW_B5           // b5
+       mov     r17=ar.lc
+       ;;
+       st8             [r30]=r17,SW_F3-SW_LC   // ar.lc
+       stf.spill       [r31]=f2,SW_F4-SW_F2
+       ;;
+       stf.spill       [r30]=f3,SW_F5-SW_F3
+       stf.spill       [r31]=f4,SW_F4-SW_F2
+       ;;
+       stf.spill       [r30]=f5,SW_F5-SW_F3
+       stf.spill       [r31]=f16,SW_F4-SW_F2
+       ;;
+       stf.spill       [r30]=f17,SW_F5-SW_F3
+       stf.spill       [r31]=f18,SW_F4-SW_F2
+       ;;
+       stf.spill       [r30]=f19,SW_F5-SW_F3
+       stf.spill       [r31]=f20,SW_F4-SW_F2
+       ;;
+       stf.spill       [r30]=f21,SW_F5-SW_F3
+       stf.spill       [r31]=f22,SW_F4-SW_F2
+       ;;
+       stf.spill       [r30]=f23,SW_F5-SW_F3
+       stf.spill       [r31]=f24,SW_F4-SW_F2
+       ;;
+       stf.spill       [r30]=f25,SW_F5-SW_F3
+       stf.spill       [r31]=f26,SW_F4-SW_F2
+       ;;
+       stf.spill       [r30]=f27,SW_F5-SW_F3
+       stf.spill       [r31]=f28,SW_F4-SW_F2
+       ;;
+       stf.spill       [r30]=f29,SW_F4-SW_F2
+       stf.spill       [r31]=f30
+       ;;
+       stf.spill       [r30]=f31
+       add             r8=0,r0
+       mf
+//     br.ret.sptk     rp
+
+{      .mfb
+       mov             r32=r33
+       nop             0
+       br.sptk         restore_context
+       ;;
+}
+
+END(switch_context)
+
+/*
+ * The function is used to start a new thread.
+ */
+ENTRY(thread_starter)
+
+       .prologue
+       .save   ar.pfs,loc0
+       alloc   loc0=ar.pfs,0,1,1,0
+       ;;
+       .body
+       ;;
+       mov     b7=r4                   // the function pointer
+       mov     out0=r6                 // the argument
+       ;;
+       br.call.sptk.many rp=b7         // Call the thread function
+       ;;
+       br.call.sptk.many rp=exit_thread        // call exit_thread
+       ;;
+END(thread_starter)
+
+ENTRY(__hypercall)
+       mov r2=r37
+       break 0x1000
+       br.ret.sptk.many b0
+       ;;
+END(__hypercall)
diff -r 9fe6fe88a6a1 -r 736f2d6d7b09 extras/mini-os/arch/ia64/gen_off.c
--- /dev/null   Thu Jan 01 00:00:00 1970 +0000
+++ b/extras/mini-os/arch/ia64/gen_off.c        Fri Mar 02 18:05:38 2007 -0600
@@ -0,0 +1,177 @@
+/*
+ * Copyright (c) 2007 Dietmar Hahn <dietmar.hahn@xxxxxxxxxxxxxxxxxxx>
+ *
+ ******************************************************************************
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ *    notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ *    notice, this list of conditions and the following disclaimer in the
+ *    documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
+ * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE DISCLAIMED.  IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
+ * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+ * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+ * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+ * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+ * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+ * SUCH DAMAGE.
+ *
+ */
+
+#include <stdio.h>
+#include <stddef.h>
+#include <string.h>
+#include "types.h"
+#include "sched.h"
+#include "xen/xen.h"
+#include "xen/arch-ia64.h"
+
+#define SZ(st,e) sizeof(((st *)0)->e)
+#define OFF(st,e,d,o) print_define(fp, #d, offsetof(st, e) + o, SZ(st, e))
+#define TFOFF(e,d) OFF(trap_frame_t, e, d, 0)
+#define SIZE(st,d) fprintf(fp, "#define %-30s\t0x%016lx\n", #d, sizeof(st))
+
+#define SWOFF(e,d) OFF(struct thread, e, d, 0)
+
+/* shared_info_t from xen/xen.h */
+#define SI_OFF(e, d) OFF(shared_info_t, e, d,0)
+/* mapped_regs_t from xen/arch-ia64.h */
+#define MR_OFF(e, d) OFF(mapped_regs_t, e, d, XMAPPEDREGS_OFS)
+
+void
+print_define(FILE *fp, char *name, uint64_t val, int size)
+{
+       char    ld_name[64];
+       char    st_name[64];
+       char    sz_name[64];
+
+       strcpy(ld_name, name);
+       strcat(ld_name, "_ld");
+       strcpy(st_name, name);
+       strcat(st_name, "_st");
+       strcpy(sz_name, name);
+       strcat(sz_name, "_sz");
+       fprintf(fp, "#define %-30s\t0x%016lx\n", name, val);
+       fprintf(fp, "#define %-30s\t%u\n", sz_name, size);
+       switch (size) {
+               case 1:
+                       fprintf(fp, "#define %-30s\tld1\n", ld_name);
+                       fprintf(fp, "#define %-30s\tst1\n", st_name);
+                       break;
+               case 2:
+                       fprintf(fp, "#define %-30s\tld2\n", ld_name);
+                       fprintf(fp, "#define %-30s\tst2\n", st_name);
+                       break;
+               case 4:
+                       fprintf(fp, "#define %-30s\tld4\n", ld_name);
+                       fprintf(fp, "#define %-30s\tst4\n", st_name);
+                       break;
+               case 8:
+                       fprintf(fp, "#define %-30s\tld8\n", ld_name);
+                       fprintf(fp, "#define %-30s\tst8\n", st_name);
+                       break;
+               default: ;
+       }
+       return;
+}
+
+
+int
+main(int argc, char ** argv)
+{
+       FILE            *fp;
+
+       fp = stdout;
+
+       TFOFF(cfm, TF_CFM);
+       TFOFF(pfs, TF_PFS);
+       TFOFF(bsp, TF_BSP);
+       TFOFF(rnat, TF_RNAT);
+       TFOFF(csd, TF_CSD);
+       TFOFF(ccv, TF_CCV);
+       TFOFF(unat, TF_UNAT);
+       TFOFF(fpsr, TF_FPSR);
+       TFOFF(pr, TF_PR);       
+
+       TFOFF(sp, TF_SP);
+       TFOFF(gp, TF_GP);
+       TFOFF(tp, TF_TP);
+
+       TFOFF(r2, TF_GREG2);
+       TFOFF(r3, TF_GREG3);
+       TFOFF(r16, TF_GREG16);
+       TFOFF(r17, TF_GREG17);
+
+       TFOFF(b0, TF_BREG0);
+       TFOFF(b6, TF_BREG6);
+       TFOFF(b7, TF_BREG7);
+
+       TFOFF(f6, TF_FREG6);
+       TFOFF(f7, TF_FREG7);
+
+       TFOFF(rsc, TF_RSC);
+       TFOFF(ndirty, TF_NDIRTY);
+       TFOFF(ssd, TF_SSD);
+       TFOFF(iip, TF_IIP);
+       TFOFF(ipsr, TF_IPSR);
+       TFOFF(ifs, TF_IFS);
+       TFOFF(trap_num, TF_TRAP_NUM);
+
+       TFOFF(ifa, TF_IFA);
+       TFOFF(isr, TF_ISR);
+       TFOFF(iim, TF_IIM);
+
+       SIZE(trap_frame_t, TF_SIZE);
+
+       SIZE(struct thread, SW_SIZE);
+       SWOFF(regs.unat_b, SW_UNATB);
+       SWOFF(regs.sp, SW_SP);
+       SWOFF(regs.rp, SW_RP);
+       SWOFF(regs.pr, SW_PR);
+       SWOFF(regs.pfs, SW_PFS);
+       SWOFF(regs.bsp, SW_BSP);
+       SWOFF(regs.rnat, SW_RNAT);
+       SWOFF(regs.lc, SW_LC);
+       //SWOFF(regs.fpsr, SW_FPSR);
+       //SWOFF(regs.psr, SW_PSR);
+       //SWOFF(regs.gp, SW_GP);
+       SWOFF(regs.unat_a, SW_UNATA);
+        SWOFF(regs.r4, SW_R4);
+        SWOFF(regs.r5, SW_R5);
+        SWOFF(regs.r6, SW_R6);
+        SWOFF(regs.r7, SW_R7);
+        SWOFF(regs.b1, SW_B1);
+        SWOFF(regs.b2, SW_B2);
+        SWOFF(regs.b3, SW_B3);
+        SWOFF(regs.b4, SW_B4);
+        SWOFF(regs.b5, SW_B5);
+        SWOFF(regs.f2, SW_F2);
+        SWOFF(regs.f3, SW_F3);
+        SWOFF(regs.f4, SW_F4);
+        SWOFF(regs.f5, SW_F5);
+
+       SI_OFF(arch.start_info_pfn, START_INFO_PFN);
+       MR_OFF(interrupt_mask_addr, XSI_PSR_I_ADDR_OFS);
+       MR_OFF(interrupt_collection_enabled, XSI_PSR_IC_OFS);
+       MR_OFF(ipsr, XSI_IPSR_OFS);
+       MR_OFF(iip, XSI_IIP_OFS);
+       MR_OFF(ifs, XSI_IFS_OFS);
+       MR_OFF(ifa, XSI_IFA_OFS);
+       MR_OFF(iim, XSI_IIM_OFS);
+       MR_OFF(iim, XSI_IIM_OFS);
+       MR_OFF(iipa, XSI_IIPA_OFS);
+       MR_OFF(isr, XSI_ISR_OFS);
+       MR_OFF(banknum, XSI_BANKNUM_OFS);
+       MR_OFF(bank1_regs[0], XSI_BANK1_R16_OFS);
+       MR_OFF(precover_ifs, XSI_PRECOVER_IFS_OFS);
+
+       return(0);
+}
diff -r 9fe6fe88a6a1 -r 736f2d6d7b09 extras/mini-os/arch/ia64/ia64.S
--- /dev/null   Thu Jan 01 00:00:00 1970 +0000
+++ b/extras/mini-os/arch/ia64/ia64.S   Fri Mar 02 18:05:38 2007 -0600
@@ -0,0 +1,224 @@
+/*
+ * Copyright (c) 2007 Dietmar Hahn <dietmar.hahn@xxxxxxxxxxxxxxxxxxx>
+ *
+ *****************************************************************************
+ * Permission is hereby granted, free of charge, to any person obtaining a copy
+ * of this software and associated documentation files (the "Software"), to
+ * deal in the Software without restriction, including without limitation the
+ * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or
+ * sell copies of the Software, and to permit persons to whom the Software is
+ * furnished to do so, subject to the following conditions:
+ * 
+ * The above copyright notice and this permission notice shall be included in
+ * all copies or substantial portions of the Software.
+ * 
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 
+ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 
+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 
+ * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 
+ * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING 
+ * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER 
+ * DEALINGS IN THE SOFTWARE.
+ */
+
+
+
+#include "asm.h"
+#include "page.h"
+#include "ia64_cpu.h"
+#include "ia64_fpu.h"
+#include "privop.h"
+#include "offsets.h"
+
+
+
+       /*
+        * Allocate kernel stack area.
+        * This is used for stack pointer (goes down from kstack+PAGE_SIZE) and
+        * RSE (goes up from kstack).
+        */
+       .section .data.start,"aw"
+       .global kstack
+       .align  PAGE_SIZE
+kstack:        .space KSTACK_PAGES * PAGE_SIZE
+
+       .text
+
+       /*
+        * Start the kernel.
+        * r28 points to the address of the boot parameter area, given
+        * from the bootloader.
+        * Execution reaches here in physical mode.
+        */
+ENTRY(_start)
+       .prologue
+       .save rp, r0            // terminate unwind chain with a NULL rp
+       .body
+
+       alloc   loc0=ar.pfs,0,1,1,0
+
+       rsm psr.i | psr.ic
+       ;;
+       srlz.i
+       ;;
+
+       /*
+        * Initialize mini-os region registers:
+        * Currently only region registers 5 and 7 are used for addressing.
+        * rr[5] : virtual kernel address space
+        * rr[7] : directly mapped physically addresses.
+        */
+       movl    r2=0<<IA64_RR_IDX_POS
+       movl    r3=1<<IA64_RR_IDX_POS
+       ;;
+       mov     rr[r2]=r0
+       mov     rr[r3]=r0
+       ;;
+       movl    r2=2<<IA64_RR_IDX_POS
+       movl    r3=3<<IA64_RR_IDX_POS
+       ;;
+       mov     rr[r2]=r0
+       mov     rr[r3]=r0
+       ;;
+       movl    r2=4<<IA64_RR_IDX_POS
+       movl    r3=6<<IA64_RR_IDX_POS
+       ;;
+       mov     rr[r2]=r0
+       mov     rr[r3]=r0
+       ;;
+       // Wired memory for kernel data and text.
+       movl    r2=IA64_RR_VAL(KERNEL_TR_PAGE_SIZE,0)
+       movl    r3=5<<IA64_RR_IDX_POS           // region 5
+       ;;
+       mov     rr[r3]=r2
+       ;;
+       /*
+        * Region 7 addresses are only for directly mapped physically
+        * addresses.
+        */
+       movl    r2=IA64_RR_VAL(PTE_PS_16K,0)
+       movl    r3=7<<IA64_RR_IDX_POS           // region 7
+       ;;
+       mov     rr[r3]=r2
+       ;;
+
+       /*
+        * Now pin mappings into the TLB for kernel text and data
+        */
+       mov     r18=KERNEL_TR_PAGE_SIZE<<2
+       movl    r17=KERNEL_START
+       ;;
+       mov     cr.itir=r18
+       mov     cr.ifa=r17
+       mov     r16=IA64_TR_KERNEL
+       mov     r3=ip
+       movl    r18=PTE_KERNEL_ATTR
+       ;;
+       dep     r2=0,r3,0,KERNEL_TR_PAGE_SIZE
+       ;;
+       or      r18=r2,r18
+       ;;
+       srlz.i
+       ;;
+       itr.i   itr[r16]=r18
+       ;;
+       itr.d   dtr[r16]=r18
+       ;;
+       srlz.i
+
+       /*  Switch into virtual mode */
+       movl    r16=STARTUP_PSR
+       ;;
+       mov     cr.ipsr=r16
+       movl    r17=1f
+       ;;
+       mov     cr.iip=r17
+       mov     cr.ifs=r0
+       ;;
+       rfi
+       ;;
+1:     /* now we are in virtual mode */
+
+       movl    r3=ia64_trap_table
+       ;;
+       mov     cr.iva=r3
+       ;;
+
+       movl    r2=IA64_FPSR_DEFAULT
+       movl    r3=IA64_DCR_DEFAULT
+       ;;
+       srlz.i
+       movl    gp=__gp
+
+       mov     ar.fpsr=r2
+       mov     cr.dcr=r3
+       ;;
+       movl    r2=kstack
+       movl    r5=KSTACK_PAGES * PAGE_SIZE - 16
+       mov     ar.rsc=0        // place RSE in enforced lazy mode
+       ;;
+       loadrs                  // clear the dirty partition
+       ;;
+       mov     ar.bspstore=r2  // establish the new RSE stack
+       add     sp=r2,r5
+       ;;
+       mov     ar.rsc=IA64_RSE_EAGER   // place RSE in eager mode
+
+       ;;
+       movl    r2=ia64_boot_paramP
+       mov     r3=7            // make address virtual region 7.
+       ;;
+       dep     r28=r3,r28,61,3
+       ;;
+                               // save the address of the boot param area
+                               // passed by the bootloader
+       st8     [r2]=r28
+       ;;
+
+       /* Set xsi base. I use here XSI_BASE. */
+#define FW_HYPERCALL_SET_SHARED_INFO_VA                 0x600
+       mov r2=FW_HYPERCALL_SET_SHARED_INFO_VA
+       movl r28=XSI_BASE
+       ;;
+       break 0x1000
+       ;;
+       /*
+        * I set up here the pointer to the global start_info structure.
+        * This structure will be initialized in arch_init().
+        */
+       movl    out0=start_info_union
+               // Prepare out0 - the pointer to start_info_t.
+       movl    r14=XSI_BASE
+       ;;
+       add     r15=START_INFO_PFN,r14  // add offset to XSI_BASE
+       ;;
+       START_INFO_PFN_ld       r14=[r15]       // load the start_info_pfn
+       add     r16=7, r0
+       ;;
+#if defined(BIG_ENDIAN)
+       mux1    r14=r14,@rev            // swap because mini-os is in BE
+#endif
+       ;;
+       shl     r15=r14,PAGE_SHIFT_XEN_16K      // pfn << PAGE_SHIFT_XEN_16K
+       shl     r16=r16,IA64_RR_IDX_POS         // (7<<IA64_RR_IDX_POS)
+       ;;
+       or      out0=r16, r15                   // make a region 7 address
+       ;;
+
+       br.call.sptk.many rp=start_kernel
+       ;;
+       add     r2=3,r0
+       ;;
+       ld8     r3=[r2]
+       ;;
+
+self:  hint @pause
+       br.sptk.many self               // endless loop
+END(_start)
+
+
+ENTRY(do_nop)
+       nop     0x01
+       add     r15=1,r15
+       br.ret.sptk.many rp
+END(do_nop)
diff -r 9fe6fe88a6a1 -r 736f2d6d7b09 extras/mini-os/arch/ia64/ivt.S
--- /dev/null   Thu Jan 01 00:00:00 1970 +0000
+++ b/extras/mini-os/arch/ia64/ivt.S    Fri Mar 02 18:05:38 2007 -0600
@@ -0,0 +1,865 @@
+/*
+ * Copyright (c) 2007 Dietmar Hahn <dietmar.hahn@xxxxxxxxxxxxxxxxxxx>
+ * Description: ia64 specific trap handling.
+ *
+ ****************************************************************************
+ * Permission is hereby granted, free of charge, to any person obtaining a copy
+ * of this software and associated documentation files (the "Software"), to
+ * deal in the Software without restriction, including without limitation the
+ * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or
+ * sell copies of the Software, and to permit persons to whom the Software is
+ * furnished to do so, subject to the following conditions:
+ * 
+ * The above copyright notice and this permission notice shall be included in
+ * all copies or substantial portions of the Software.
+ * 
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 
+ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 
+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 
+ * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 
+ * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING 
+ * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER 
+ * DEALINGS IN THE SOFTWARE.
+ *
+ */
+
+
+#include "asm.h"
+#include "page.h"
+#include "ia64_cpu.h"
+#include "privop.h"
+#include "offsets.h"
+
+
+/* General register usage in interrupt handling:
+ *     r16, r17, ... are used for input parameters of sub-routines
+ *     r29:    used to access memory which may raise nested TLB fault
+ *     r30:    b0 save register
+ *     r31:    predicates save register
+ *     p30,p31:        used for TLB stuff: (0,1)=data, (1,0)=instruction
+ */
+
+
+#define FILL_FP_PAIR(f1, f2, b1, b2)   \
+       ldf.fill        f1=[b1],32      ;\
+       ldf.fill        f2=[b2],32      ;\
+       ;;
+
+#define SPILL_FP_PAIR(f1, f2, b1, b2)  \
+       stf.spill       [b1]=f1,32      ;\
+       stf.spill       [b2]=f2,32      ;\
+       ;;
+
+#define FILL_REG_PAIR(r1, r2, b1, b2)  \
+       ld8.fill        r1=[b1],16      ;\
+       ld8.fill        r2=[b2],16      ;\
+       ;;
+
+#define SPILL_REG_PAIR(r1, r2, b1, b2) \
+       .mem.offset 0,0                 ;\
+       st8.spill       [b1]=r1,16      ;\
+       .mem.offset 8,0                 ;\
+       st8.spill       [b2]=r2,16      ;\
+       ;;
+
+
+/**
+ *     The function does a store of the current processor context
+ *     to the given exception frame address.
+ *     These are some special and the scratch registers for calling
+ *     C-functions later.
+ *     The bspstore will be the same. A clean RSE is made with the
+ *     cover instruction.
+ *     
+ *     The return is done through a jump to the next bundle after ip (r16).
+ *
+ *     Used register: r16, r18, r19, r20, r21, r22 of bank 0
+ *
+ *     @param: r16 ip of the bundle with the jump.
+ *     @param: r18 pointer to the trap frame.
+ *     @param: r23 trap number/err val
+ *
+ */
+
+ENTRY(save_tf_rse_switch)
+       movl    r21=XSI_IPSR            // XEN !!
+       movl    r22=XSI_IIP             // XEN !!
+       ;;
+       ld8     r21=[r21]               // XEN.ipsr
+       ld8     r22=[r22];;             // XEN.iip
+#if defined(BIG_ENDIAN)
+       mux1    r21=r21,@rev            // swap because mini-os is in BE
+       mux1    r22=r22,@rev            // swap because mini-os is in BE
+       ;;
+#endif
+       add     r19=TF_IPSR,r18
+       add     r20=TF_IIP,r18
+       ;;
+       st8     [r19]=r21               // store cr.ipsr
+       st8     [r20]=r22               // store cr.iip
+       ;;
+       //// r16 return jump pointer, r18 - trap frame base, 
+       add     r19=TF_UNAT,r18
+       mov     r20=ar.unat
+       ;;
+       st8     [r19]=r20               // store scratch unat
+       ;;
+
+       add     r19=TF_GP,r18

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


 


Rackspace

Lists.xenproject.org is hosted with RackSpace, monitoring our
servers 24x7x365 and backed by RackSpace's Fanatical Support®.