direct-io.hg
changeset 4500:608f95d3df77
bitkeeper revision 1.1284 (4256be56GdwxfClelVp3iIjMdV8PvQ)
Merge firebug.cl.cam.ac.uk:/auto/groups/xeno-xenod/BK/xen-unstable.bk
into firebug.cl.cam.ac.uk:/local/scratch/cl349/xen-unstable.bk-x86_64
Merge firebug.cl.cam.ac.uk:/auto/groups/xeno-xenod/BK/xen-unstable.bk
into firebug.cl.cam.ac.uk:/local/scratch/cl349/xen-unstable.bk-x86_64
line diff
1.1 --- a/.rootkeys Thu Apr 07 08:19:23 2005 +0000 1.2 +++ b/.rootkeys Fri Apr 08 17:24:38 2005 +0000 1.3 @@ -262,7 +262,6 @@ 418f90e4lGdeJK9rmbOB1kN-IKSjsQ linux-2.6 1.4 3f68905c5eiA-lBMQSvXLMWS1ikDEA linux-2.6.11-xen-sparse/arch/xen/kernel/xen_proc.c 1.5 424efaa6xahU2q85_dT-SjUJEaivfg linux-2.6.11-xen-sparse/arch/xen/x86_64/Kconfig 1.6 424efaa6kKleWe45IrqsG8gkejgEQA linux-2.6.11-xen-sparse/arch/xen/x86_64/Makefile 1.7 -424efaa7hjpGexXRf5TYBwgP7uT5Wg linux-2.6.11-xen-sparse/arch/xen/x86_64/defconfig 1.8 424efaa6HSyuVodl6SxFGj39vlp6MA linux-2.6.11-xen-sparse/arch/xen/x86_64/kernel/Makefile 1.9 424efaa7bVAw3Z_q0SdFivfNVavyIg linux-2.6.11-xen-sparse/arch/xen/x86_64/kernel/asm-offsets.c 1.10 424efaa7ddTVabh547Opf0u9vKmUXw linux-2.6.11-xen-sparse/arch/xen/x86_64/kernel/e820.c 1.11 @@ -343,6 +342,7 @@ 4107adf1E5O4ztGHNGMzCCNhcvqNow linux-2.6 1.12 40f5623akIoBsQ3KxSB2kufkbgONXQ linux-2.6.11-xen-sparse/include/asm-xen/asm-i386/fixmap.h 1.13 41979925z1MsKU1SfuuheM1IFDQ_bA linux-2.6.11-xen-sparse/include/asm-xen/asm-i386/floppy.h 1.14 4118b6a418gnL6AZsTdglC92YGqYTg linux-2.6.11-xen-sparse/include/asm-xen/asm-i386/highmem.h 1.15 +42539fb5A9hsS3NFQ-2VY4y1TONZZQ linux-2.6.11-xen-sparse/include/asm-xen/asm-i386/hypercall.h 1.16 40f5623aJVXQwpJMOLE99XgvGsfQ8Q linux-2.6.11-xen-sparse/include/asm-xen/asm-i386/io.h 1.17 40f5623aKXkBBxgpLx2NcvkncQ1Yyw linux-2.6.11-xen-sparse/include/asm-xen/asm-i386/mach-xen/irq_vectors.h 1.18 40f5623aDMCsWOFO0jktZ4e8sjwvEg linux-2.6.11-xen-sparse/include/asm-xen/asm-i386/mach-xen/setup_arch_post.h
2.1 --- a/linux-2.6.11-xen-sparse/arch/xen/Kconfig Thu Apr 07 08:19:23 2005 +0000 2.2 +++ b/linux-2.6.11-xen-sparse/arch/xen/Kconfig Fri Apr 08 17:24:38 2005 +0000 2.3 @@ -136,17 +136,17 @@ config XEN_SCRUB_PAGES 2.4 2.5 choice 2.6 prompt "Processor Type" 2.7 - default X86 2.8 + default XEN_X86 2.9 2.10 -config X86 2.11 +config XEN_X86 2.12 bool "X86" 2.13 help 2.14 Choose this option if your computer is a X86 architecture. 2.15 2.16 -config X86_64 2.17 +config XEN_X86_64 2.18 bool "X86_64" 2.19 help 2.20 - Choose this option if your computer is a X86 architecture. 2.21 + Choose this option if your computer is a X86_64 architecture. 2.22 2.23 endchoice 2.24 2.25 @@ -158,11 +158,11 @@ config HAVE_ARCH_DEV_ALLOC_SKB 2.26 2.27 source "init/Kconfig" 2.28 2.29 -if X86 2.30 +if XEN_X86 2.31 source "arch/xen/i386/Kconfig" 2.32 endif 2.33 2.34 -if X86_64 2.35 +if XEN_X86_64 2.36 source "arch/xen/x86_64/Kconfig" 2.37 endif 2.38
3.1 --- a/linux-2.6.11-xen-sparse/arch/xen/configs/xen0_defconfig_x86_32 Thu Apr 07 08:19:23 2005 +0000 3.2 +++ b/linux-2.6.11-xen-sparse/arch/xen/configs/xen0_defconfig_x86_32 Fri Apr 08 17:24:38 2005 +0000 3.3 @@ -1,7 +1,7 @@ 3.4 # 3.5 # Automatically generated make config: don't edit 3.6 # Linux kernel version: 2.6.11-xen0 3.7 -# Sat Mar 19 19:42:39 2005 3.8 +# Wed Apr 6 09:19:05 2005 3.9 # 3.10 CONFIG_XEN=y 3.11 CONFIG_ARCH_XEN=y 3.12 @@ -14,14 +14,15 @@ CONFIG_XEN_PRIVILEGED_GUEST=y 3.13 CONFIG_XEN_PHYSDEV_ACCESS=y 3.14 CONFIG_XEN_BLKDEV_BACKEND=y 3.15 # CONFIG_XEN_BLKDEV_TAP_BE is not set 3.16 +CONFIG_XEN_BLKDEV_GRANT=y 3.17 CONFIG_XEN_NETDEV_BACKEND=y 3.18 CONFIG_XEN_BLKDEV_FRONTEND=y 3.19 CONFIG_XEN_NETDEV_FRONTEND=y 3.20 # CONFIG_XEN_NETDEV_FRONTEND_PIPELINED_TRANSMITTER is not set 3.21 # CONFIG_XEN_BLKDEV_TAP is not set 3.22 CONFIG_XEN_SCRUB_PAGES=y 3.23 -CONFIG_X86=y 3.24 -# CONFIG_X86_64 is not set 3.25 +CONFIG_XEN_X86=y 3.26 +# CONFIG_XEN_X86_64 is not set 3.27 CONFIG_HAVE_ARCH_DEV_ALLOC_SKB=y 3.28 3.29 # 3.30 @@ -75,6 +76,7 @@ CONFIG_KMOD=y 3.31 # X86 Processor Configuration 3.32 # 3.33 CONFIG_XENARCH="i386" 3.34 +CONFIG_X86=y 3.35 CONFIG_MMU=y 3.36 CONFIG_UID16=y 3.37 CONFIG_GENERIC_ISA_DMA=y
4.1 --- a/linux-2.6.11-xen-sparse/arch/xen/configs/xen0_defconfig_x86_64 Thu Apr 07 08:19:23 2005 +0000 4.2 +++ b/linux-2.6.11-xen-sparse/arch/xen/configs/xen0_defconfig_x86_64 Fri Apr 08 17:24:38 2005 +0000 4.3 @@ -1,7 +1,7 @@ 4.4 # 4.5 # Automatically generated make config: don't edit 4.6 -# Linux kernel version: 2.6.10-xen0 4.7 -# Tue Mar 15 10:39:50 2005 4.8 +# Linux kernel version: 2.6.11-xen0 4.9 +# Wed Apr 6 09:21:54 2005 4.10 # 4.11 CONFIG_XEN=y 4.12 CONFIG_ARCH_XEN=y 4.13 @@ -14,12 +14,12 @@ CONFIG_XEN_PRIVILEGED_GUEST=y 4.14 CONFIG_XEN_PHYSDEV_ACCESS=y 4.15 CONFIG_XEN_BLKDEV_BACKEND=y 4.16 # CONFIG_XEN_BLKDEV_TAP_BE is not set 4.17 +CONFIG_XEN_BLKDEV_GRANT=y 4.18 CONFIG_XEN_NETDEV_BACKEND=y 4.19 CONFIG_XEN_BLKDEV_FRONTEND=y 4.20 CONFIG_XEN_NETDEV_FRONTEND=y 4.21 # CONFIG_XEN_NETDEV_FRONTEND_PIPELINED_TRANSMITTER is not set 4.22 # CONFIG_XEN_BLKDEV_TAP is not set 4.23 -# CONFIG_XEN_WRITABLE_PAGETABLES=y 4.24 CONFIG_XEN_SCRUB_PAGES=y 4.25 # CONFIG_XEN_X86 is not set 4.26 CONFIG_XEN_X86_64=y 4.27 @@ -67,13 +67,14 @@ CONFIG_OBSOLETE_MODPARM=y 4.28 # CONFIG_MODULE_SRCVERSION_ALL is not set 4.29 CONFIG_KMOD=y 4.30 CONFIG_XENARCH="x86_64" 4.31 +CONFIG_X86=y 4.32 CONFIG_MMU=y 4.33 CONFIG_GENERIC_ISA_DMA=y 4.34 CONFIG_GENERIC_IOMAP=y 4.35 -# CONFIG_MK8 is not set 4.36 CONFIG_X86_CMPXCHG=y 4.37 CONFIG_X86_L1_CACHE_SHIFT=7 4.38 CONFIG_RWSEM_GENERIC_SPINLOCK=y 4.39 +CONFIG_GENERIC_CALIBRATE_DELAY=y 4.40 CONFIG_X86_GOOD_APIC=y 4.41 # CONFIG_HPET_TIMER is not set 4.42 # CONFIG_SMP is not set 4.43 @@ -92,7 +93,6 @@ CONFIG_GENERIC_IRQ_PROBE=y 4.44 # X86_64 processor configuration 4.45 # 4.46 CONFIG_X86_64=y 4.47 -CONFIG_X86=y 4.48 CONFIG_64BIT=y 4.49 4.50 # 4.51 @@ -116,7 +116,6 @@ CONFIG_DUMMY_IOMMU=y 4.52 # ACPI (Advanced Configuration and Power Interface) Support 4.53 # 4.54 # CONFIG_ACPI is not set 4.55 -# CONFIG_ACPI_BLACKLIST_YEAR=0 4.56 4.57 # 4.58 # CPU Frequency scaling 4.59 @@ -124,20 +123,11 @@ CONFIG_DUMMY_IOMMU=y 4.60 # CONFIG_CPU_FREQ is not set 4.61 4.62 # 4.63 -# Bus options (PCI, PCMCIA, EISA, MCA, ISA) 4.64 +# Bus options (PCI etc.) 4.65 # 4.66 -CONFIG_PCI=y 4.67 -CONFIG_PCI_DIRECT=y 4.68 -CONFIG_PCI_LEGACY_PROC=y 4.69 -# CONFIG_PCI_NAMES is not set 4.70 # CONFIG_PCI_MMCONFIG is not set 4.71 4.72 # 4.73 -# PCCARD (PCMCIA/CardBus) support 4.74 -# 4.75 -# CONFIG_PCCARD is not set 4.76 - 4.77 -# 4.78 # Executable file formats / Emulations 4.79 # 4.80 # CONFIG_IA32_EMULATION is not set 4.81 @@ -180,6 +170,7 @@ CONFIG_BLK_DEV_FD=y 4.82 # CONFIG_BLK_CPQ_DA is not set 4.83 # CONFIG_BLK_CPQ_CISS_DA is not set 4.84 # CONFIG_BLK_DEV_DAC960 is not set 4.85 +# CONFIG_BLK_DEV_COW_COMMON is not set 4.86 CONFIG_BLK_DEV_LOOP=y 4.87 # CONFIG_BLK_DEV_CRYPTOLOOP is not set 4.88 # CONFIG_BLK_DEV_NBD is not set 4.89 @@ -252,37 +243,22 @@ CONFIG_SCSI_SATA=y 4.90 # CONFIG_SCSI_SATA_AHCI is not set 4.91 # CONFIG_SCSI_SATA_SVW is not set 4.92 CONFIG_SCSI_ATA_PIIX=y 4.93 -# CONFIG_SCSI_SATA_NV is not set 4.94 CONFIG_SCSI_SATA_PROMISE=y 4.95 # CONFIG_SCSI_SATA_QSTOR is not set 4.96 -CONFIG_SCSI_SATA_SX4=y 4.97 -CONFIG_SCSI_SATA_SIL=y 4.98 -# CONFIG_SCSI_SATA_SIS is not set 4.99 -# CONFIG_SCSI_SATA_ULI is not set 4.100 # CONFIG_SCSI_SATA_VIA is not set 4.101 # CONFIG_SCSI_SATA_VITESSE is not set 4.102 CONFIG_SCSI_BUSLOGIC=y 4.103 # CONFIG_SCSI_OMIT_FLASHPOINT is not set 4.104 -# CONFIG_SCSI_CPQFCTS is not set 4.105 # CONFIG_SCSI_DMX3191D is not set 4.106 -# CONFIG_SCSI_DTC3280 is not set 4.107 # CONFIG_SCSI_EATA is not set 4.108 # CONFIG_SCSI_EATA_PIO is not set 4.109 # CONFIG_SCSI_FUTURE_DOMAIN is not set 4.110 # CONFIG_SCSI_GDTH is not set 4.111 -# CONFIG_SCSI_GENERIC_NCR5380 is not set 4.112 -# CONFIG_SCSI_GENERIC_NCR5380_MMIO is not set 4.113 # CONFIG_SCSI_IPS is not set 4.114 # CONFIG_SCSI_INITIO is not set 4.115 # CONFIG_SCSI_INIA100 is not set 4.116 -# CONFIG_SCSI_NCR53C406A is not set 4.117 # CONFIG_SCSI_SYM53C8XX_2 is not set 4.118 # CONFIG_SCSI_IPR is not set 4.119 -# CONFIG_SCSI_PAS16 is not set 4.120 -# CONFIG_SCSI_PCI2000 is not set 4.121 -# CONFIG_SCSI_PCI2220I is not set 4.122 -# CONFIG_SCSI_PSI240I is not set 4.123 -# CONFIG_SCSI_QLOGIC_FAS is not set 4.124 # CONFIG_SCSI_QLOGIC_ISP is not set 4.125 # CONFIG_SCSI_QLOGIC_FC is not set 4.126 # CONFIG_SCSI_QLOGIC_1280 is not set 4.127 @@ -292,14 +268,7 @@ CONFIG_SCSI_QLA2XXX=y 4.128 # CONFIG_SCSI_QLA2300 is not set 4.129 # CONFIG_SCSI_QLA2322 is not set 4.130 # CONFIG_SCSI_QLA6312 is not set 4.131 -# CONFIG_SCSI_SEAGATE is not set 4.132 -# CONFIG_SCSI_SYM53C416 is not set 4.133 -# CONFIG_SCSI_DC395x is not set 4.134 # CONFIG_SCSI_DC390T is not set 4.135 -# CONFIG_SCSI_T128 is not set 4.136 -# CONFIG_SCSI_U14_34F is not set 4.137 -# CONFIG_SCSI_ULTRASTOR is not set 4.138 -# CONFIG_SCSI_NSP32 is not set 4.139 # CONFIG_SCSI_DEBUG is not set 4.140 4.141 # 4.142 @@ -409,6 +378,7 @@ CONFIG_SERIO_I8042=y 4.143 CONFIG_SERIO_SERPORT=y 4.144 # CONFIG_SERIO_CT82C710 is not set 4.145 # CONFIG_SERIO_PCIPS2 is not set 4.146 +CONFIG_SERIO_LIBPS2=y 4.147 # CONFIG_SERIO_RAW is not set 4.148 4.149 # 4.150 @@ -533,6 +503,16 @@ CONFIG_USB_ARCH_HAS_OHCI=y 4.151 # CONFIG_USB_GADGET is not set 4.152 4.153 # 4.154 +# MMC/SD Card support 4.155 +# 4.156 +# CONFIG_MMC is not set 4.157 + 4.158 +# 4.159 +# InfiniBand support 4.160 +# 4.161 +# CONFIG_INFINIBAND is not set 4.162 + 4.163 +# 4.164 # File systems 4.165 # 4.166 CONFIG_EXT2_FS=y 4.167 @@ -548,6 +528,10 @@ CONFIG_JBD=y 4.168 CONFIG_FS_MBCACHE=y 4.169 # CONFIG_REISERFS_FS is not set 4.170 # CONFIG_JFS_FS is not set 4.171 + 4.172 +# 4.173 +# XFS support 4.174 +# 4.175 # CONFIG_XFS_FS is not set 4.176 # CONFIG_MINIX_FS is not set 4.177 # CONFIG_ROMFS_FS is not set 4.178 @@ -607,7 +591,6 @@ CONFIG_RAMFS=y 4.179 # 4.180 # CONFIG_NFS_FS is not set 4.181 # CONFIG_NFSD is not set 4.182 -# CONFIG_EXPORTFS is not set 4.183 # CONFIG_SMB_FS is not set 4.184 # CONFIG_CIFS is not set 4.185 # CONFIG_NCP_FS is not set 4.186 @@ -689,15 +672,13 @@ CONFIG_NLS_CODEPAGE_437=y 4.187 # CONFIG_CRYPTO is not set 4.188 4.189 # 4.190 +# Hardware crypto devices 4.191 +# 4.192 + 4.193 +# 4.194 # Library routines 4.195 # 4.196 CONFIG_CRC_CCITT=y 4.197 CONFIG_CRC32=y 4.198 CONFIG_LIBCRC32C=y 4.199 CONFIG_ZLIB_INFLATE=y 4.200 - 4.201 -# 4.202 -# Firmware Drivers 4.203 -# 4.204 -CONFIG_PCI_LEGACY_PROC=y 4.205 -CONFIG_PCI_NAMES=y
5.1 --- a/linux-2.6.11-xen-sparse/arch/xen/configs/xenU_defconfig_x86_32 Thu Apr 07 08:19:23 2005 +0000 5.2 +++ b/linux-2.6.11-xen-sparse/arch/xen/configs/xenU_defconfig_x86_32 Fri Apr 08 17:24:38 2005 +0000 5.3 @@ -1,7 +1,7 @@ 5.4 # 5.5 # Automatically generated make config: don't edit 5.6 # Linux kernel version: 2.6.11-xenU 5.7 -# Fri Mar 11 01:20:28 2005 5.8 +# Wed Apr 6 09:20:09 2005 5.9 # 5.10 CONFIG_XEN=y 5.11 CONFIG_ARCH_XEN=y 5.12 @@ -12,13 +12,14 @@ CONFIG_NO_IDLE_HZ=y 5.13 # 5.14 # CONFIG_XEN_PRIVILEGED_GUEST is not set 5.15 # CONFIG_XEN_PHYSDEV_ACCESS is not set 5.16 +CONFIG_XEN_BLKDEV_GRANT=y 5.17 CONFIG_XEN_BLKDEV_FRONTEND=y 5.18 CONFIG_XEN_NETDEV_FRONTEND=y 5.19 # CONFIG_XEN_NETDEV_FRONTEND_PIPELINED_TRANSMITTER is not set 5.20 # CONFIG_XEN_BLKDEV_TAP is not set 5.21 CONFIG_XEN_SCRUB_PAGES=y 5.22 -CONFIG_X86=y 5.23 -# CONFIG_X86_64 is not set 5.24 +CONFIG_XEN_X86=y 5.25 +# CONFIG_XEN_X86_64 is not set 5.26 CONFIG_HAVE_ARCH_DEV_ALLOC_SKB=y 5.27 5.28 # 5.29 @@ -71,6 +72,7 @@ CONFIG_KMOD=y 5.30 # X86 Processor Configuration 5.31 # 5.32 CONFIG_XENARCH="i386" 5.33 +CONFIG_X86=y 5.34 CONFIG_MMU=y 5.35 CONFIG_UID16=y 5.36 CONFIG_GENERIC_ISA_DMA=y
6.1 --- a/linux-2.6.11-xen-sparse/arch/xen/i386/Kconfig Thu Apr 07 08:19:23 2005 +0000 6.2 +++ b/linux-2.6.11-xen-sparse/arch/xen/i386/Kconfig Fri Apr 08 17:24:38 2005 +0000 6.3 @@ -9,6 +9,10 @@ config XENARCH 6.4 string 6.5 default i386 6.6 6.7 +config X86 6.8 + bool 6.9 + default y 6.10 + 6.11 config MMU 6.12 bool 6.13 default y
7.1 --- a/linux-2.6.11-xen-sparse/arch/xen/kernel/evtchn.c Thu Apr 07 08:19:23 2005 +0000 7.2 +++ b/linux-2.6.11-xen-sparse/arch/xen/kernel/evtchn.c Fri Apr 08 17:24:38 2005 +0000 7.3 @@ -81,8 +81,13 @@ extern fastcall unsigned int do_IRQ(stru 7.4 #else 7.5 extern asmlinkage unsigned int do_IRQ(struct pt_regs *regs); 7.6 #endif 7.7 +#if defined (__i386__) 7.8 +#define IRQ_REG orig_eax 7.9 +#elif defined (__x86_64__) 7.10 +#define IRQ_REG orig_rax 7.11 +#endif 7.12 #define do_IRQ(irq, regs) do { \ 7.13 - (regs)->orig_eax = (irq); \ 7.14 + (regs)->IRQ_REG = (irq); \ 7.15 do_IRQ((regs)); \ 7.16 } while (0) 7.17 #endif 7.18 @@ -102,7 +107,7 @@ void force_evtchn_callback(void) 7.19 /* NB. Interrupts are disabled on entry. */ 7.20 asmlinkage void evtchn_do_upcall(struct pt_regs *regs) 7.21 { 7.22 - unsigned long l1, l2; 7.23 + u32 l1, l2; 7.24 unsigned int l1i, l2i, port; 7.25 int irq; 7.26 shared_info_t *s = HYPERVISOR_shared_info;
8.1 --- a/linux-2.6.11-xen-sparse/arch/xen/x86_64/Kconfig Thu Apr 07 08:19:23 2005 +0000 8.2 +++ b/linux-2.6.11-xen-sparse/arch/xen/x86_64/Kconfig Fri Apr 08 17:24:38 2005 +0000 8.3 @@ -13,6 +13,18 @@ config XENARCH 8.4 string 8.5 default x86_64 8.6 8.7 +config X86_64 8.8 + bool 8.9 + default y 8.10 + help 8.11 + Port to the x86-64 architecture. x86-64 is a 64-bit extension to the 8.12 + classical 32-bit x86 architecture. For details see 8.13 + <http://www.x86-64.org/>. 8.14 + 8.15 +config X86 8.16 + bool 8.17 + default y 8.18 + 8.19 config 64BIT 8.20 def_bool y 8.21
9.1 --- a/linux-2.6.11-xen-sparse/arch/xen/x86_64/defconfig Thu Apr 07 08:19:23 2005 +0000 9.2 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 9.3 @@ -1,1249 +0,0 @@ 9.4 -# 9.5 -# Automatically generated make config: don't edit 9.6 -# Linux kernel version: 2.6.10-xen0 9.7 -# Fri Mar 11 14:30:42 2005 9.8 -# 9.9 -CONFIG_XEN=y 9.10 -CONFIG_ARCH_XEN=y 9.11 -CONFIG_NO_IDLE_HZ=y 9.12 - 9.13 -# 9.14 -# XEN 9.15 -# 9.16 -CONFIG_XEN_PRIVILEGED_GUEST=y 9.17 -CONFIG_XEN_PHYSDEV_ACCESS=y 9.18 -CONFIG_XEN_BLKDEV_BACKEND=y 9.19 -CONFIG_XEN_NETDEV_BACKEND=y 9.20 -CONFIG_XEN_BLKDEV_FRONTEND=y 9.21 -CONFIG_XEN_NETDEV_FRONTEND=y 9.22 -# CONFIG_XEN_NETDEV_FRONTEND_PIPELINED_TRANSMITTER is not set 9.23 -# CONFIG_XEN_BLKDEV_TAP is not set 9.24 -CONFIG_XEN_WRITABLE_PAGETABLES=y 9.25 -CONFIG_XEN_SCRUB_PAGES=y 9.26 -# CONFIG_XEN_X86 is not set 9.27 -CONFIG_XEN_X86_64=y 9.28 -CONFIG_HAVE_ARCH_DEV_ALLOC_SKB=y 9.29 - 9.30 -# 9.31 -# Code maturity level options 9.32 -# 9.33 -CONFIG_EXPERIMENTAL=y 9.34 -CONFIG_CLEAN_COMPILE=y 9.35 -CONFIG_BROKEN_ON_SMP=y 9.36 - 9.37 -# 9.38 -# General setup 9.39 -# 9.40 -CONFIG_LOCALVERSION="" 9.41 -CONFIG_SWAP=y 9.42 -CONFIG_SYSVIPC=y 9.43 -CONFIG_POSIX_MQUEUE=y 9.44 -CONFIG_BSD_PROCESS_ACCT=y 9.45 -# CONFIG_BSD_PROCESS_ACCT_V3 is not set 9.46 -CONFIG_SYSCTL=y 9.47 -CONFIG_AUDIT=y 9.48 -CONFIG_AUDITSYSCALL=y 9.49 -CONFIG_LOG_BUF_SHIFT=14 9.50 -# CONFIG_HOTPLUG is not set 9.51 -CONFIG_KOBJECT_UEVENT=y 9.52 -# CONFIG_IKCONFIG is not set 9.53 -# CONFIG_EMBEDDED is not set 9.54 -CONFIG_KALLSYMS=y 9.55 -CONFIG_KALLSYMS_EXTRA_PASS=y 9.56 -CONFIG_FUTEX=y 9.57 -CONFIG_EPOLL=y 9.58 -# CONFIG_CC_OPTIMIZE_FOR_SIZE is not set 9.59 -CONFIG_SHMEM=y 9.60 -CONFIG_CC_ALIGN_FUNCTIONS=0 9.61 -CONFIG_CC_ALIGN_LABELS=0 9.62 -CONFIG_CC_ALIGN_LOOPS=0 9.63 -CONFIG_CC_ALIGN_JUMPS=0 9.64 -# CONFIG_TINY_SHMEM is not set 9.65 - 9.66 -# 9.67 -# Loadable module support 9.68 -# 9.69 -CONFIG_MODULES=y 9.70 -CONFIG_MODULE_UNLOAD=y 9.71 -# CONFIG_MODULE_FORCE_UNLOAD is not set 9.72 -CONFIG_OBSOLETE_MODPARM=y 9.73 -CONFIG_MODVERSIONS=y 9.74 -# CONFIG_MODULE_SRCVERSION_ALL is not set 9.75 -CONFIG_KMOD=y 9.76 -CONFIG_XENARCH="x86_64" 9.77 -CONFIG_MMU=y 9.78 -CONFIG_GENERIC_ISA_DMA=y 9.79 -CONFIG_GENERIC_IOMAP=y 9.80 -# CONFIG_MK8 is not set 9.81 -CONFIG_X86_CMPXCHG=y 9.82 -CONFIG_X86_L1_CACHE_SHIFT=7 9.83 -CONFIG_RWSEM_GENERIC_SPINLOCK=y 9.84 -CONFIG_X86_GOOD_APIC=y 9.85 -# CONFIG_HPET_TIMER is not set 9.86 -# CONFIG_SMP is not set 9.87 -# CONFIG_PREEMPT is not set 9.88 -CONFIG_MICROCODE=y 9.89 -CONFIG_X86_CPUID=y 9.90 -# CONFIG_NUMA is not set 9.91 -# CONFIG_MTRR is not set 9.92 -CONFIG_PCI=y 9.93 -CONFIG_PCI_DIRECT=y 9.94 -# CONFIG_EARLY_PRINTK is not set 9.95 -CONFIG_GENERIC_HARDIRQS=y 9.96 -CONFIG_GENERIC_IRQ_PROBE=y 9.97 - 9.98 -# 9.99 -# X86_64 processor configuration 9.100 -# 9.101 -CONFIG_X86_64=y 9.102 -CONFIG_X86=y 9.103 -CONFIG_64BIT=y 9.104 - 9.105 -# 9.106 -# Processor type and features 9.107 -# 9.108 -# CONFIG_MPSC is not set 9.109 -CONFIG_GENERIC_CPU=y 9.110 -CONFIG_X86_L1_CACHE_BYTES=128 9.111 -# CONFIG_X86_TSC is not set 9.112 -# CONFIG_X86_MSR is not set 9.113 -# CONFIG_GART_IOMMU is not set 9.114 -CONFIG_DUMMY_IOMMU=y 9.115 -# CONFIG_X86_MCE is not set 9.116 - 9.117 -# 9.118 -# Power management options 9.119 -# 9.120 -# CONFIG_PM is not set 9.121 - 9.122 -# 9.123 -# ACPI (Advanced Configuration and Power Interface) Support 9.124 -# 9.125 -# CONFIG_ACPI is not set 9.126 -CONFIG_ACPI_BLACKLIST_YEAR=0 9.127 - 9.128 -# 9.129 -# CPU Frequency scaling 9.130 -# 9.131 -# CONFIG_CPU_FREQ is not set 9.132 - 9.133 -# 9.134 -# Bus options (PCI etc.) 9.135 -# 9.136 -# CONFIG_PCI_MMCONFIG is not set 9.137 -# CONFIG_UNORDERED_IO is not set 9.138 - 9.139 -# 9.140 -# Executable file formats / Emulations 9.141 -# 9.142 -# CONFIG_IA32_EMULATION is not set 9.143 - 9.144 -# 9.145 -# Executable file formats 9.146 -# 9.147 -CONFIG_BINFMT_ELF=y 9.148 -CONFIG_BINFMT_MISC=y 9.149 - 9.150 -# 9.151 -# Device Drivers 9.152 -# 9.153 - 9.154 -# 9.155 -# Generic Driver Options 9.156 -# 9.157 -CONFIG_STANDALONE=y 9.158 -# CONFIG_PREVENT_FIRMWARE_BUILD is not set 9.159 -CONFIG_FW_LOADER=m 9.160 - 9.161 -# 9.162 -# Memory Technology Devices (MTD) 9.163 -# 9.164 -# CONFIG_MTD is not set 9.165 - 9.166 -# 9.167 -# Parallel port support 9.168 -# 9.169 -# CONFIG_PARPORT is not set 9.170 - 9.171 -# 9.172 -# Plug and Play support 9.173 -# 9.174 - 9.175 -# 9.176 -# Block devices 9.177 -# 9.178 -# CONFIG_BLK_DEV_FD is not set 9.179 -# CONFIG_BLK_CPQ_DA is not set 9.180 -# CONFIG_BLK_CPQ_CISS_DA is not set 9.181 -# CONFIG_BLK_DEV_DAC960 is not set 9.182 -# CONFIG_BLK_DEV_UMEM is not set 9.183 -CONFIG_BLK_DEV_LOOP=y 9.184 -CONFIG_BLK_DEV_CRYPTOLOOP=m 9.185 -CONFIG_BLK_DEV_NBD=m 9.186 -# CONFIG_BLK_DEV_SX8 is not set 9.187 -CONFIG_BLK_DEV_RAM=y 9.188 -CONFIG_BLK_DEV_RAM_COUNT=16 9.189 -CONFIG_BLK_DEV_RAM_SIZE=16384 9.190 -CONFIG_BLK_DEV_INITRD=y 9.191 -CONFIG_INITRAMFS_SOURCE="" 9.192 -# CONFIG_LBD is not set 9.193 -# CONFIG_CDROM_PKTCDVD is not set 9.194 - 9.195 -# 9.196 -# IO Schedulers 9.197 -# 9.198 -CONFIG_IOSCHED_NOOP=y 9.199 -CONFIG_IOSCHED_AS=y 9.200 -CONFIG_IOSCHED_DEADLINE=y 9.201 -CONFIG_IOSCHED_CFQ=y 9.202 - 9.203 -# 9.204 -# ATA/ATAPI/MFM/RLL support 9.205 -# 9.206 -CONFIG_IDE=y 9.207 -CONFIG_BLK_DEV_IDE=y 9.208 - 9.209 -# 9.210 -# Please see Documentation/ide.txt for help/info on IDE drives 9.211 -# 9.212 -# CONFIG_BLK_DEV_IDE_SATA is not set 9.213 -# CONFIG_BLK_DEV_HD_IDE is not set 9.214 -CONFIG_BLK_DEV_IDEDISK=y 9.215 -CONFIG_IDEDISK_MULTI_MODE=y 9.216 -CONFIG_BLK_DEV_IDECD=y 9.217 -# CONFIG_BLK_DEV_IDETAPE is not set 9.218 -# CONFIG_BLK_DEV_IDEFLOPPY is not set 9.219 -CONFIG_BLK_DEV_IDESCSI=y 9.220 -# CONFIG_IDE_TASK_IOCTL is not set 9.221 - 9.222 -# 9.223 -# IDE chipset support/bugfixes 9.224 -# 9.225 -CONFIG_IDE_GENERIC=y 9.226 -# CONFIG_BLK_DEV_CMD640 is not set 9.227 -CONFIG_BLK_DEV_IDEPCI=y 9.228 -CONFIG_IDEPCI_SHARE_IRQ=y 9.229 -# CONFIG_BLK_DEV_OFFBOARD is not set 9.230 -CONFIG_BLK_DEV_GENERIC=y 9.231 -# CONFIG_BLK_DEV_OPTI621 is not set 9.232 -# CONFIG_BLK_DEV_RZ1000 is not set 9.233 -CONFIG_BLK_DEV_IDEDMA_PCI=y 9.234 -# CONFIG_BLK_DEV_IDEDMA_FORCED is not set 9.235 -CONFIG_IDEDMA_PCI_AUTO=y 9.236 -# CONFIG_IDEDMA_ONLYDISK is not set 9.237 -# CONFIG_BLK_DEV_AEC62XX is not set 9.238 -# CONFIG_BLK_DEV_ALI15X3 is not set 9.239 -# CONFIG_BLK_DEV_AMD74XX is not set 9.240 -# CONFIG_BLK_DEV_ATIIXP is not set 9.241 -# CONFIG_BLK_DEV_CMD64X is not set 9.242 -# CONFIG_BLK_DEV_TRIFLEX is not set 9.243 -# CONFIG_BLK_DEV_CY82C693 is not set 9.244 -# CONFIG_BLK_DEV_CS5520 is not set 9.245 -# CONFIG_BLK_DEV_CS5530 is not set 9.246 -# CONFIG_BLK_DEV_HPT34X is not set 9.247 -# CONFIG_BLK_DEV_HPT366 is not set 9.248 -# CONFIG_BLK_DEV_SC1200 is not set 9.249 -CONFIG_BLK_DEV_PIIX=y 9.250 -# CONFIG_BLK_DEV_NS87415 is not set 9.251 -# CONFIG_BLK_DEV_PDC202XX_OLD is not set 9.252 -# CONFIG_BLK_DEV_PDC202XX_NEW is not set 9.253 -# CONFIG_BLK_DEV_SVWKS is not set 9.254 -# CONFIG_BLK_DEV_SIIMAGE is not set 9.255 -# CONFIG_BLK_DEV_SIS5513 is not set 9.256 -# CONFIG_BLK_DEV_SLC90E66 is not set 9.257 -# CONFIG_BLK_DEV_TRM290 is not set 9.258 -# CONFIG_BLK_DEV_VIA82CXXX is not set 9.259 -# CONFIG_IDE_ARM is not set 9.260 -CONFIG_BLK_DEV_IDEDMA=y 9.261 -# CONFIG_IDEDMA_IVB is not set 9.262 -CONFIG_IDEDMA_AUTO=y 9.263 -# CONFIG_BLK_DEV_HD is not set 9.264 - 9.265 -# 9.266 -# SCSI device support 9.267 -# 9.268 -CONFIG_SCSI=y 9.269 -CONFIG_SCSI_PROC_FS=y 9.270 - 9.271 -# 9.272 -# SCSI support type (disk, tape, CD-ROM) 9.273 -# 9.274 -CONFIG_BLK_DEV_SD=y 9.275 -CONFIG_CHR_DEV_ST=m 9.276 -CONFIG_CHR_DEV_OSST=m 9.277 -CONFIG_BLK_DEV_SR=m 9.278 -CONFIG_BLK_DEV_SR_VENDOR=y 9.279 -CONFIG_CHR_DEV_SG=y 9.280 - 9.281 -# 9.282 -# Some SCSI devices (e.g. CD jukebox) support multiple LUNs 9.283 -# 9.284 -# CONFIG_SCSI_MULTI_LUN is not set 9.285 -CONFIG_SCSI_CONSTANTS=y 9.286 -CONFIG_SCSI_LOGGING=y 9.287 - 9.288 -# 9.289 -# SCSI Transport Attributes 9.290 -# 9.291 -CONFIG_SCSI_SPI_ATTRS=m 9.292 -CONFIG_SCSI_FC_ATTRS=m 9.293 - 9.294 -# 9.295 -# SCSI low-level drivers 9.296 -# 9.297 -# CONFIG_BLK_DEV_3W_XXXX_RAID is not set 9.298 -# CONFIG_SCSI_3W_9XXX is not set 9.299 -# CONFIG_SCSI_ACARD is not set 9.300 -# CONFIG_SCSI_AACRAID is not set 9.301 -# CONFIG_SCSI_AIC7XXX is not set 9.302 -# CONFIG_SCSI_AIC7XXX_OLD is not set 9.303 -# CONFIG_SCSI_AIC79XX is not set 9.304 -# CONFIG_MEGARAID_NEWGEN is not set 9.305 -# CONFIG_MEGARAID_LEGACY is not set 9.306 -CONFIG_SCSI_SATA=y 9.307 -# CONFIG_SCSI_SATA_AHCI is not set 9.308 -# CONFIG_SCSI_SATA_SVW is not set 9.309 -CONFIG_SCSI_ATA_PIIX=y 9.310 -# CONFIG_SCSI_SATA_NV is not set 9.311 -# CONFIG_SCSI_SATA_PROMISE is not set 9.312 -# CONFIG_SCSI_SATA_SX4 is not set 9.313 -# CONFIG_SCSI_SATA_SIL is not set 9.314 -# CONFIG_SCSI_SATA_SIS is not set 9.315 -# CONFIG_SCSI_SATA_ULI is not set 9.316 -# CONFIG_SCSI_SATA_VIA is not set 9.317 -# CONFIG_SCSI_SATA_VITESSE is not set 9.318 -# CONFIG_SCSI_BUSLOGIC is not set 9.319 -# CONFIG_SCSI_DMX3191D is not set 9.320 -# CONFIG_SCSI_EATA is not set 9.321 -# CONFIG_SCSI_EATA_PIO is not set 9.322 -# CONFIG_SCSI_FUTURE_DOMAIN is not set 9.323 -# CONFIG_SCSI_GDTH is not set 9.324 -# CONFIG_SCSI_IPS is not set 9.325 -# CONFIG_SCSI_INITIO is not set 9.326 -# CONFIG_SCSI_INIA100 is not set 9.327 -# CONFIG_SCSI_SYM53C8XX_2 is not set 9.328 -# CONFIG_SCSI_IPR is not set 9.329 -# CONFIG_SCSI_QLOGIC_ISP is not set 9.330 -# CONFIG_SCSI_QLOGIC_FC is not set 9.331 -# CONFIG_SCSI_QLOGIC_1280 is not set 9.332 -CONFIG_SCSI_QLA2XXX=y 9.333 -# CONFIG_SCSI_QLA21XX is not set 9.334 -# CONFIG_SCSI_QLA22XX is not set 9.335 -# CONFIG_SCSI_QLA2300 is not set 9.336 -# CONFIG_SCSI_QLA2322 is not set 9.337 -# CONFIG_SCSI_QLA6312 is not set 9.338 -# CONFIG_SCSI_QLA6322 is not set 9.339 -# CONFIG_SCSI_DC395x is not set 9.340 -# CONFIG_SCSI_DC390T is not set 9.341 -# CONFIG_SCSI_DEBUG is not set 9.342 - 9.343 -# 9.344 -# Multi-device support (RAID and LVM) 9.345 -# 9.346 -CONFIG_MD=y 9.347 -CONFIG_BLK_DEV_MD=y 9.348 -CONFIG_MD_LINEAR=m 9.349 -CONFIG_MD_RAID0=m 9.350 -CONFIG_MD_RAID1=m 9.351 -CONFIG_MD_RAID10=m 9.352 -CONFIG_MD_RAID5=m 9.353 -CONFIG_MD_RAID6=m 9.354 -CONFIG_MD_MULTIPATH=m 9.355 -# CONFIG_MD_FAULTY is not set 9.356 -CONFIG_BLK_DEV_DM=m 9.357 -CONFIG_DM_CRYPT=m 9.358 -CONFIG_DM_SNAPSHOT=m 9.359 -CONFIG_DM_MIRROR=m 9.360 -CONFIG_DM_ZERO=m 9.361 - 9.362 -# 9.363 -# Fusion MPT device support 9.364 -# 9.365 -# CONFIG_FUSION is not set 9.366 - 9.367 -# 9.368 -# IEEE 1394 (FireWire) support 9.369 -# 9.370 -# CONFIG_IEEE1394 is not set 9.371 - 9.372 -# 9.373 -# I2O device support 9.374 -# 9.375 -# CONFIG_I2O is not set 9.376 - 9.377 -# 9.378 -# Networking support 9.379 -# 9.380 -CONFIG_NET=y 9.381 - 9.382 -# 9.383 -# Networking options 9.384 -# 9.385 -CONFIG_PACKET=y 9.386 -CONFIG_PACKET_MMAP=y 9.387 -CONFIG_NETLINK_DEV=y 9.388 -CONFIG_UNIX=y 9.389 -CONFIG_NET_KEY=m 9.390 -CONFIG_INET=y 9.391 -CONFIG_IP_MULTICAST=y 9.392 -CONFIG_IP_ADVANCED_ROUTER=y 9.393 -CONFIG_IP_MULTIPLE_TABLES=y 9.394 -CONFIG_IP_ROUTE_FWMARK=y 9.395 -CONFIG_IP_ROUTE_MULTIPATH=y 9.396 -CONFIG_IP_ROUTE_VERBOSE=y 9.397 -# CONFIG_IP_PNP is not set 9.398 -CONFIG_NET_IPIP=m 9.399 -CONFIG_NET_IPGRE=m 9.400 -CONFIG_NET_IPGRE_BROADCAST=y 9.401 -CONFIG_IP_MROUTE=y 9.402 -CONFIG_IP_PIMSM_V1=y 9.403 -CONFIG_IP_PIMSM_V2=y 9.404 -# CONFIG_ARPD is not set 9.405 -CONFIG_SYN_COOKIES=y 9.406 -CONFIG_INET_AH=m 9.407 -CONFIG_INET_ESP=m 9.408 -CONFIG_INET_IPCOMP=m 9.409 -CONFIG_INET_TUNNEL=m 9.410 -CONFIG_IP_TCPDIAG=y 9.411 -# CONFIG_IP_TCPDIAG_IPV6 is not set 9.412 - 9.413 -# 9.414 -# IP: Virtual Server Configuration 9.415 -# 9.416 -CONFIG_IP_VS=m 9.417 -# CONFIG_IP_VS_DEBUG is not set 9.418 -CONFIG_IP_VS_TAB_BITS=12 9.419 - 9.420 -# 9.421 -# IPVS transport protocol load balancing support 9.422 -# 9.423 -CONFIG_IP_VS_PROTO_TCP=y 9.424 -CONFIG_IP_VS_PROTO_UDP=y 9.425 -CONFIG_IP_VS_PROTO_ESP=y 9.426 -CONFIG_IP_VS_PROTO_AH=y 9.427 - 9.428 -# 9.429 -# IPVS scheduler 9.430 -# 9.431 -CONFIG_IP_VS_RR=m 9.432 -CONFIG_IP_VS_WRR=m 9.433 -CONFIG_IP_VS_LC=m 9.434 -CONFIG_IP_VS_WLC=m 9.435 -CONFIG_IP_VS_LBLC=m 9.436 -CONFIG_IP_VS_LBLCR=m 9.437 -CONFIG_IP_VS_DH=m 9.438 -CONFIG_IP_VS_SH=m 9.439 -CONFIG_IP_VS_SED=m 9.440 -CONFIG_IP_VS_NQ=m 9.441 - 9.442 -# 9.443 -# IPVS application helper 9.444 -# 9.445 -CONFIG_IP_VS_FTP=m 9.446 -CONFIG_IPV6=m 9.447 -CONFIG_IPV6_PRIVACY=y 9.448 -CONFIG_INET6_AH=m 9.449 -CONFIG_INET6_ESP=m 9.450 -CONFIG_INET6_IPCOMP=m 9.451 -CONFIG_INET6_TUNNEL=m 9.452 -CONFIG_IPV6_TUNNEL=m 9.453 -CONFIG_NETFILTER=y 9.454 -# CONFIG_NETFILTER_DEBUG is not set 9.455 -CONFIG_BRIDGE_NETFILTER=y 9.456 - 9.457 -# 9.458 -# IP: Netfilter Configuration 9.459 -# 9.460 -CONFIG_IP_NF_CONNTRACK=m 9.461 -CONFIG_IP_NF_CT_ACCT=y 9.462 -# CONFIG_IP_NF_CONNTRACK_MARK is not set 9.463 -CONFIG_IP_NF_CT_PROTO_SCTP=m 9.464 -CONFIG_IP_NF_FTP=m 9.465 -CONFIG_IP_NF_IRC=m 9.466 -CONFIG_IP_NF_TFTP=m 9.467 -CONFIG_IP_NF_AMANDA=m 9.468 -CONFIG_IP_NF_QUEUE=m 9.469 -CONFIG_IP_NF_IPTABLES=m 9.470 -CONFIG_IP_NF_MATCH_LIMIT=m 9.471 -CONFIG_IP_NF_MATCH_IPRANGE=m 9.472 -CONFIG_IP_NF_MATCH_MAC=m 9.473 -CONFIG_IP_NF_MATCH_PKTTYPE=m 9.474 -CONFIG_IP_NF_MATCH_MARK=m 9.475 -CONFIG_IP_NF_MATCH_MULTIPORT=m 9.476 -CONFIG_IP_NF_MATCH_TOS=m 9.477 -CONFIG_IP_NF_MATCH_RECENT=m 9.478 -CONFIG_IP_NF_MATCH_ECN=m 9.479 -CONFIG_IP_NF_MATCH_DSCP=m 9.480 -CONFIG_IP_NF_MATCH_AH_ESP=m 9.481 -CONFIG_IP_NF_MATCH_LENGTH=m 9.482 -CONFIG_IP_NF_MATCH_TTL=m 9.483 -CONFIG_IP_NF_MATCH_TCPMSS=m 9.484 -CONFIG_IP_NF_MATCH_HELPER=m 9.485 -CONFIG_IP_NF_MATCH_STATE=m 9.486 -CONFIG_IP_NF_MATCH_CONNTRACK=m 9.487 -CONFIG_IP_NF_MATCH_OWNER=m 9.488 -CONFIG_IP_NF_MATCH_PHYSDEV=m 9.489 -CONFIG_IP_NF_MATCH_ADDRTYPE=m 9.490 -CONFIG_IP_NF_MATCH_REALM=m 9.491 -CONFIG_IP_NF_MATCH_SCTP=m 9.492 -CONFIG_IP_NF_MATCH_COMMENT=m 9.493 -# CONFIG_IP_NF_MATCH_HASHLIMIT is not set 9.494 -CONFIG_IP_NF_FILTER=m 9.495 -CONFIG_IP_NF_TARGET_REJECT=m 9.496 -CONFIG_IP_NF_TARGET_LOG=m 9.497 -CONFIG_IP_NF_TARGET_ULOG=m 9.498 -CONFIG_IP_NF_TARGET_TCPMSS=m 9.499 -CONFIG_IP_NF_NAT=m 9.500 -CONFIG_IP_NF_NAT_NEEDED=y 9.501 -CONFIG_IP_NF_TARGET_MASQUERADE=m 9.502 -CONFIG_IP_NF_TARGET_REDIRECT=m 9.503 -CONFIG_IP_NF_TARGET_NETMAP=m 9.504 -CONFIG_IP_NF_TARGET_SAME=m 9.505 -CONFIG_IP_NF_NAT_LOCAL=y 9.506 -CONFIG_IP_NF_NAT_SNMP_BASIC=m 9.507 -CONFIG_IP_NF_NAT_IRC=m 9.508 -CONFIG_IP_NF_NAT_FTP=m 9.509 -CONFIG_IP_NF_NAT_TFTP=m 9.510 -CONFIG_IP_NF_NAT_AMANDA=m 9.511 -CONFIG_IP_NF_MANGLE=m 9.512 -CONFIG_IP_NF_TARGET_TOS=m 9.513 -CONFIG_IP_NF_TARGET_ECN=m 9.514 -CONFIG_IP_NF_TARGET_DSCP=m 9.515 -CONFIG_IP_NF_TARGET_MARK=m 9.516 -CONFIG_IP_NF_TARGET_CLASSIFY=m 9.517 -CONFIG_IP_NF_RAW=m 9.518 -CONFIG_IP_NF_TARGET_NOTRACK=m 9.519 -CONFIG_IP_NF_ARPTABLES=m 9.520 -CONFIG_IP_NF_ARPFILTER=m 9.521 -CONFIG_IP_NF_ARP_MANGLE=m 9.522 -# CONFIG_IP_NF_COMPAT_IPCHAINS is not set 9.523 -# CONFIG_IP_NF_COMPAT_IPFWADM is not set 9.524 - 9.525 -# 9.526 -# IPv6: Netfilter Configuration 9.527 -# 9.528 -# CONFIG_IP6_NF_QUEUE is not set 9.529 -CONFIG_IP6_NF_IPTABLES=m 9.530 -CONFIG_IP6_NF_MATCH_LIMIT=m 9.531 -CONFIG_IP6_NF_MATCH_MAC=m 9.532 -CONFIG_IP6_NF_MATCH_RT=m 9.533 -CONFIG_IP6_NF_MATCH_OPTS=m 9.534 -CONFIG_IP6_NF_MATCH_FRAG=m 9.535 -CONFIG_IP6_NF_MATCH_HL=m 9.536 -CONFIG_IP6_NF_MATCH_MULTIPORT=m 9.537 -CONFIG_IP6_NF_MATCH_OWNER=m 9.538 -CONFIG_IP6_NF_MATCH_MARK=m 9.539 -CONFIG_IP6_NF_MATCH_IPV6HEADER=m 9.540 -CONFIG_IP6_NF_MATCH_AHESP=m 9.541 -CONFIG_IP6_NF_MATCH_LENGTH=m 9.542 -CONFIG_IP6_NF_MATCH_EUI64=m 9.543 -CONFIG_IP6_NF_MATCH_PHYSDEV=m 9.544 -CONFIG_IP6_NF_FILTER=m 9.545 -CONFIG_IP6_NF_TARGET_LOG=m 9.546 -CONFIG_IP6_NF_MANGLE=m 9.547 -CONFIG_IP6_NF_TARGET_MARK=m 9.548 -CONFIG_IP6_NF_RAW=m 9.549 - 9.550 -# 9.551 -# Bridge: Netfilter Configuration 9.552 -# 9.553 -CONFIG_BRIDGE_NF_EBTABLES=m 9.554 -CONFIG_BRIDGE_EBT_BROUTE=m 9.555 -CONFIG_BRIDGE_EBT_T_FILTER=m 9.556 -CONFIG_BRIDGE_EBT_T_NAT=m 9.557 -CONFIG_BRIDGE_EBT_802_3=m 9.558 -CONFIG_BRIDGE_EBT_AMONG=m 9.559 -CONFIG_BRIDGE_EBT_ARP=m 9.560 -CONFIG_BRIDGE_EBT_IP=m 9.561 -CONFIG_BRIDGE_EBT_LIMIT=m 9.562 -CONFIG_BRIDGE_EBT_MARK=m 9.563 -CONFIG_BRIDGE_EBT_PKTTYPE=m 9.564 -CONFIG_BRIDGE_EBT_STP=m 9.565 -CONFIG_BRIDGE_EBT_VLAN=m 9.566 -CONFIG_BRIDGE_EBT_ARPREPLY=m 9.567 -CONFIG_BRIDGE_EBT_DNAT=m 9.568 -CONFIG_BRIDGE_EBT_MARK_T=m 9.569 -CONFIG_BRIDGE_EBT_REDIRECT=m 9.570 -CONFIG_BRIDGE_EBT_SNAT=m 9.571 -CONFIG_BRIDGE_EBT_LOG=m 9.572 -CONFIG_XFRM=y 9.573 -CONFIG_XFRM_USER=y 9.574 - 9.575 -# 9.576 -# SCTP Configuration (EXPERIMENTAL) 9.577 -# 9.578 -CONFIG_IP_SCTP=m 9.579 -# CONFIG_SCTP_DBG_MSG is not set 9.580 -# CONFIG_SCTP_DBG_OBJCNT is not set 9.581 -# CONFIG_SCTP_HMAC_NONE is not set 9.582 -# CONFIG_SCTP_HMAC_SHA1 is not set 9.583 -CONFIG_SCTP_HMAC_MD5=y 9.584 -CONFIG_ATM=m 9.585 -CONFIG_ATM_CLIP=m 9.586 -# CONFIG_ATM_CLIP_NO_ICMP is not set 9.587 -CONFIG_ATM_LANE=m 9.588 -# CONFIG_ATM_MPOA is not set 9.589 -CONFIG_ATM_BR2684=m 9.590 -# CONFIG_ATM_BR2684_IPFILTER is not set 9.591 -CONFIG_BRIDGE=m 9.592 -CONFIG_VLAN_8021Q=m 9.593 -# CONFIG_DECNET is not set 9.594 -CONFIG_LLC=m 9.595 -# CONFIG_LLC2 is not set 9.596 -CONFIG_IPX=m 9.597 -# CONFIG_IPX_INTERN is not set 9.598 -CONFIG_ATALK=m 9.599 -CONFIG_DEV_APPLETALK=y 9.600 -CONFIG_IPDDP=m 9.601 -CONFIG_IPDDP_ENCAP=y 9.602 -CONFIG_IPDDP_DECAP=y 9.603 -# CONFIG_X25 is not set 9.604 -# CONFIG_LAPB is not set 9.605 -CONFIG_NET_DIVERT=y 9.606 -# CONFIG_ECONET is not set 9.607 -CONFIG_WAN_ROUTER=m 9.608 - 9.609 -# 9.610 -# QoS and/or fair queueing 9.611 -# 9.612 -CONFIG_NET_SCHED=y 9.613 -CONFIG_NET_SCH_CLK_JIFFIES=y 9.614 -# CONFIG_NET_SCH_CLK_GETTIMEOFDAY is not set 9.615 -# CONFIG_NET_SCH_CLK_CPU is not set 9.616 -CONFIG_NET_SCH_CBQ=m 9.617 -CONFIG_NET_SCH_HTB=m 9.618 -CONFIG_NET_SCH_HFSC=m 9.619 -CONFIG_NET_SCH_ATM=m 9.620 -CONFIG_NET_SCH_PRIO=m 9.621 -CONFIG_NET_SCH_RED=m 9.622 -CONFIG_NET_SCH_SFQ=m 9.623 -CONFIG_NET_SCH_TEQL=m 9.624 -CONFIG_NET_SCH_TBF=m 9.625 -CONFIG_NET_SCH_GRED=m 9.626 -CONFIG_NET_SCH_DSMARK=m 9.627 -CONFIG_NET_SCH_NETEM=m 9.628 -CONFIG_NET_SCH_INGRESS=m 9.629 -CONFIG_NET_QOS=y 9.630 -CONFIG_NET_ESTIMATOR=y 9.631 -CONFIG_NET_CLS=y 9.632 -CONFIG_NET_CLS_TCINDEX=m 9.633 -CONFIG_NET_CLS_ROUTE4=m 9.634 -CONFIG_NET_CLS_ROUTE=y 9.635 -CONFIG_NET_CLS_FW=m 9.636 -CONFIG_NET_CLS_U32=m 9.637 -CONFIG_CLS_U32_PERF=y 9.638 -CONFIG_NET_CLS_IND=y 9.639 -CONFIG_NET_CLS_RSVP=m 9.640 -CONFIG_NET_CLS_RSVP6=m 9.641 -# CONFIG_NET_CLS_ACT is not set 9.642 -CONFIG_NET_CLS_POLICE=y 9.643 - 9.644 -# 9.645 -# Network testing 9.646 -# 9.647 -# CONFIG_NET_PKTGEN is not set 9.648 -CONFIG_NETPOLL=y 9.649 -# CONFIG_NETPOLL_RX is not set 9.650 -CONFIG_NETPOLL_TRAP=y 9.651 -CONFIG_NET_POLL_CONTROLLER=y 9.652 -# CONFIG_HAMRADIO is not set 9.653 -CONFIG_IRDA=m 9.654 - 9.655 -# 9.656 -# IrDA protocols 9.657 -# 9.658 -CONFIG_IRLAN=m 9.659 -CONFIG_IRNET=m 9.660 -CONFIG_IRCOMM=m 9.661 -# CONFIG_IRDA_ULTRA is not set 9.662 - 9.663 -# 9.664 -# IrDA options 9.665 -# 9.666 -CONFIG_IRDA_CACHE_LAST_LSAP=y 9.667 -CONFIG_IRDA_FAST_RR=y 9.668 -# CONFIG_IRDA_DEBUG is not set 9.669 - 9.670 -# 9.671 -# Infrared-port device drivers 9.672 -# 9.673 - 9.674 -# 9.675 -# SIR device drivers 9.676 -# 9.677 -CONFIG_IRTTY_SIR=m 9.678 - 9.679 -# 9.680 -# Dongle support 9.681 -# 9.682 -CONFIG_DONGLE=y 9.683 -CONFIG_ESI_DONGLE=m 9.684 -CONFIG_ACTISYS_DONGLE=m 9.685 -CONFIG_TEKRAM_DONGLE=m 9.686 -CONFIG_LITELINK_DONGLE=m 9.687 -CONFIG_MA600_DONGLE=m 9.688 -CONFIG_GIRBIL_DONGLE=m 9.689 -CONFIG_MCP2120_DONGLE=m 9.690 -CONFIG_OLD_BELKIN_DONGLE=m 9.691 -CONFIG_ACT200L_DONGLE=m 9.692 - 9.693 -# 9.694 -# Old SIR device drivers 9.695 -# 9.696 -# CONFIG_IRPORT_SIR is not set 9.697 - 9.698 -# 9.699 -# Old Serial dongle support 9.700 -# 9.701 - 9.702 -# 9.703 -# FIR device drivers 9.704 -# 9.705 -# CONFIG_VLSI_FIR is not set 9.706 -CONFIG_BT=m 9.707 -CONFIG_BT_L2CAP=m 9.708 -CONFIG_BT_SCO=m 9.709 -CONFIG_BT_RFCOMM=m 9.710 -CONFIG_BT_RFCOMM_TTY=y 9.711 -CONFIG_BT_BNEP=m 9.712 -CONFIG_BT_BNEP_MC_FILTER=y 9.713 -CONFIG_BT_BNEP_PROTO_FILTER=y 9.714 -CONFIG_BT_HIDP=m 9.715 - 9.716 -# 9.717 -# Bluetooth device drivers 9.718 -# 9.719 -CONFIG_BT_HCIUART=m 9.720 -CONFIG_BT_HCIUART_H4=y 9.721 -CONFIG_BT_HCIUART_BCSP=y 9.722 -CONFIG_BT_HCIUART_BCSP_TXCRC=y 9.723 -CONFIG_BT_HCIVHCI=m 9.724 -CONFIG_NETDEVICES=y 9.725 -CONFIG_DUMMY=m 9.726 -CONFIG_BONDING=m 9.727 -CONFIG_EQUALIZER=m 9.728 -CONFIG_TUN=m 9.729 -CONFIG_ETHERTAP=m 9.730 - 9.731 -# 9.732 -# ARCnet devices 9.733 -# 9.734 -# CONFIG_ARCNET is not set 9.735 - 9.736 -# 9.737 -# Ethernet (10 or 100Mbit) 9.738 -# 9.739 -CONFIG_NET_ETHERNET=y 9.740 -CONFIG_MII=y 9.741 -# CONFIG_HAPPYMEAL is not set 9.742 -# CONFIG_SUNGEM is not set 9.743 -# CONFIG_NET_VENDOR_3COM is not set 9.744 - 9.745 -# 9.746 -# Tulip family network device support 9.747 -# 9.748 -# CONFIG_NET_TULIP is not set 9.749 -CONFIG_HP100=y 9.750 -CONFIG_NET_PCI=y 9.751 -# CONFIG_PCNET32 is not set 9.752 -# CONFIG_AMD8111_ETH is not set 9.753 -# CONFIG_ADAPTEC_STARFIRE is not set 9.754 -# CONFIG_B44 is not set 9.755 -# CONFIG_FORCEDETH is not set 9.756 -# CONFIG_DGRS is not set 9.757 -# CONFIG_EEPRO100 is not set 9.758 -CONFIG_E100=y 9.759 -# CONFIG_E100_NAPI is not set 9.760 -# CONFIG_FEALNX is not set 9.761 -# CONFIG_NATSEMI is not set 9.762 -# CONFIG_NE2K_PCI is not set 9.763 -# CONFIG_8139CP is not set 9.764 -# CONFIG_8139TOO is not set 9.765 -# CONFIG_SIS900 is not set 9.766 -# CONFIG_EPIC100 is not set 9.767 -# CONFIG_SUNDANCE is not set 9.768 -# CONFIG_VIA_RHINE is not set 9.769 - 9.770 -# 9.771 -# Ethernet (1000 Mbit) 9.772 -# 9.773 -# CONFIG_ACENIC is not set 9.774 -# CONFIG_DL2K is not set 9.775 -CONFIG_E1000=y 9.776 -# CONFIG_E1000_NAPI is not set 9.777 -# CONFIG_NS83820 is not set 9.778 -# CONFIG_HAMACHI is not set 9.779 -# CONFIG_YELLOWFIN is not set 9.780 -# CONFIG_R8169 is not set 9.781 -# CONFIG_SK98LIN is not set 9.782 -# CONFIG_VIA_VELOCITY is not set 9.783 -# CONFIG_TIGON3 is not set 9.784 - 9.785 -# 9.786 -# Ethernet (10000 Mbit) 9.787 -# 9.788 -# CONFIG_IXGB is not set 9.789 -# CONFIG_S2IO is not set 9.790 - 9.791 -# 9.792 -# Token Ring devices 9.793 -# 9.794 -# CONFIG_TR is not set 9.795 - 9.796 -# 9.797 -# Wireless LAN (non-hamradio) 9.798 -# 9.799 -CONFIG_NET_RADIO=y 9.800 - 9.801 -# 9.802 -# Obsolete Wireless cards support (pre-802.11) 9.803 -# 9.804 -# CONFIG_STRIP is not set 9.805 - 9.806 -# 9.807 -# Wireless 802.11b ISA/PCI cards support 9.808 -# 9.809 -# CONFIG_HERMES is not set 9.810 -CONFIG_ATMEL=m 9.811 -# CONFIG_PCI_ATMEL is not set 9.812 - 9.813 -# 9.814 -# Prism GT/Duette 802.11(a/b/g) PCI/Cardbus support 9.815 -# 9.816 -CONFIG_NET_WIRELESS=y 9.817 - 9.818 -# 9.819 -# Wan interfaces 9.820 -# 9.821 -# CONFIG_WAN is not set 9.822 - 9.823 -# 9.824 -# ATM drivers 9.825 -# 9.826 -CONFIG_ATM_TCP=m 9.827 -# CONFIG_ATM_LANAI is not set 9.828 -# CONFIG_ATM_ENI is not set 9.829 -# CONFIG_ATM_FIRESTREAM is not set 9.830 -# CONFIG_ATM_ZATM is not set 9.831 -# CONFIG_ATM_IDT77252 is not set 9.832 -# CONFIG_ATM_AMBASSADOR is not set 9.833 -# CONFIG_ATM_HORIZON is not set 9.834 -# CONFIG_ATM_FORE200E_MAYBE is not set 9.835 -# CONFIG_ATM_HE is not set 9.836 -# CONFIG_FDDI is not set 9.837 -# CONFIG_HIPPI is not set 9.838 -CONFIG_PPP=m 9.839 -CONFIG_PPP_MULTILINK=y 9.840 -CONFIG_PPP_FILTER=y 9.841 -CONFIG_PPP_ASYNC=m 9.842 -CONFIG_PPP_SYNC_TTY=m 9.843 -CONFIG_PPP_DEFLATE=m 9.844 -# CONFIG_PPP_BSDCOMP is not set 9.845 -CONFIG_PPPOE=m 9.846 -CONFIG_PPPOATM=m 9.847 -CONFIG_SLIP=m 9.848 -CONFIG_SLIP_COMPRESSED=y 9.849 -CONFIG_SLIP_SMART=y 9.850 -# CONFIG_SLIP_MODE_SLIP6 is not set 9.851 -# CONFIG_NET_FC is not set 9.852 -# CONFIG_SHAPER is not set 9.853 -CONFIG_NETCONSOLE=m 9.854 - 9.855 -# 9.856 -# ISDN subsystem 9.857 -# 9.858 -# CONFIG_ISDN is not set 9.859 - 9.860 -# 9.861 -# Telephony Support 9.862 -# 9.863 -# CONFIG_PHONE is not set 9.864 - 9.865 -# 9.866 -# Input device support 9.867 -# 9.868 -CONFIG_INPUT=y 9.869 - 9.870 -# 9.871 -# Userland interfaces 9.872 -# 9.873 -CONFIG_INPUT_MOUSEDEV=y 9.874 -CONFIG_INPUT_MOUSEDEV_PSAUX=y 9.875 -CONFIG_INPUT_MOUSEDEV_SCREEN_X=1024 9.876 -CONFIG_INPUT_MOUSEDEV_SCREEN_Y=768 9.877 -# CONFIG_INPUT_JOYDEV is not set 9.878 -# CONFIG_INPUT_TSDEV is not set 9.879 -# CONFIG_INPUT_EVDEV is not set 9.880 -# CONFIG_INPUT_EVBUG is not set 9.881 - 9.882 -# 9.883 -# Input I/O drivers 9.884 -# 9.885 -# CONFIG_GAMEPORT is not set 9.886 -CONFIG_SOUND_GAMEPORT=y 9.887 -CONFIG_SERIO=y 9.888 -CONFIG_SERIO_I8042=y 9.889 -CONFIG_SERIO_SERPORT=y 9.890 -# CONFIG_SERIO_CT82C710 is not set 9.891 -# CONFIG_SERIO_PCIPS2 is not set 9.892 -# CONFIG_SERIO_RAW is not set 9.893 - 9.894 -# 9.895 -# Input Device Drivers 9.896 -# 9.897 -CONFIG_INPUT_KEYBOARD=y 9.898 -CONFIG_KEYBOARD_ATKBD=y 9.899 -# CONFIG_KEYBOARD_SUNKBD is not set 9.900 -# CONFIG_KEYBOARD_LKKBD is not set 9.901 -# CONFIG_KEYBOARD_XTKBD is not set 9.902 -# CONFIG_KEYBOARD_NEWTON is not set 9.903 -CONFIG_INPUT_MOUSE=y 9.904 -CONFIG_MOUSE_PS2=y 9.905 -# CONFIG_MOUSE_SERIAL is not set 9.906 -# CONFIG_MOUSE_VSXXXAA is not set 9.907 -# CONFIG_INPUT_JOYSTICK is not set 9.908 -# CONFIG_INPUT_TOUCHSCREEN is not set 9.909 -# CONFIG_INPUT_MISC is not set 9.910 - 9.911 -# 9.912 -# Character devices 9.913 -# 9.914 -CONFIG_VT=y 9.915 -CONFIG_VT_CONSOLE=y 9.916 -CONFIG_HW_CONSOLE=y 9.917 -# CONFIG_SERIAL_NONSTANDARD is not set 9.918 - 9.919 -# 9.920 -# Serial drivers 9.921 -# 9.922 -# CONFIG_SERIAL_8250 is not set 9.923 - 9.924 -# 9.925 -# Non-8250 serial port support 9.926 -# 9.927 -CONFIG_UNIX98_PTYS=y 9.928 -CONFIG_LEGACY_PTYS=y 9.929 -CONFIG_LEGACY_PTY_COUNT=256 9.930 - 9.931 -# 9.932 -# IPMI 9.933 -# 9.934 -# CONFIG_IPMI_HANDLER is not set 9.935 - 9.936 -# 9.937 -# Watchdog Cards 9.938 -# 9.939 -# CONFIG_WATCHDOG is not set 9.940 -# CONFIG_HW_RANDOM is not set 9.941 -# CONFIG_NVRAM is not set 9.942 -# CONFIG_RTC is not set 9.943 -# CONFIG_GEN_RTC is not set 9.944 -# CONFIG_DTLK is not set 9.945 -# CONFIG_R3964 is not set 9.946 -# CONFIG_APPLICOM is not set 9.947 - 9.948 -# 9.949 -# Ftape, the floppy tape device driver 9.950 -# 9.951 -# CONFIG_FTAPE is not set 9.952 -# CONFIG_AGP is not set 9.953 -# CONFIG_DRM is not set 9.954 -# CONFIG_MWAVE is not set 9.955 -# CONFIG_RAW_DRIVER is not set 9.956 -# CONFIG_HANGCHECK_TIMER is not set 9.957 - 9.958 -# 9.959 -# I2C support 9.960 -# 9.961 -# CONFIG_I2C is not set 9.962 - 9.963 -# 9.964 -# Dallas's 1-wire bus 9.965 -# 9.966 -# CONFIG_W1 is not set 9.967 - 9.968 -# 9.969 -# Misc devices 9.970 -# 9.971 -# CONFIG_IBM_ASM is not set 9.972 - 9.973 -# 9.974 -# Multimedia devices 9.975 -# 9.976 -# CONFIG_VIDEO_DEV is not set 9.977 - 9.978 -# 9.979 -# Digital Video Broadcasting Devices 9.980 -# 9.981 -# CONFIG_DVB is not set 9.982 - 9.983 -# 9.984 -# Graphics support 9.985 -# 9.986 -# CONFIG_FB is not set 9.987 -# CONFIG_VIDEO_SELECT is not set 9.988 - 9.989 -# 9.990 -# Console display driver support 9.991 -# 9.992 -CONFIG_VGA_CONSOLE=y 9.993 -CONFIG_DUMMY_CONSOLE=y 9.994 - 9.995 -# 9.996 -# Sound 9.997 -# 9.998 -# CONFIG_SOUND is not set 9.999 - 9.1000 -# 9.1001 -# USB support 9.1002 -# 9.1003 -# CONFIG_USB is not set 9.1004 -CONFIG_USB_ARCH_HAS_HCD=y 9.1005 -CONFIG_USB_ARCH_HAS_OHCI=y 9.1006 - 9.1007 -# 9.1008 -# NOTE: USB_STORAGE enables SCSI, and 'SCSI disk support' may also be needed; see USB_STORAGE Help for more information 9.1009 -# 9.1010 - 9.1011 -# 9.1012 -# USB Gadget Support 9.1013 -# 9.1014 -# CONFIG_USB_GADGET is not set 9.1015 - 9.1016 -# 9.1017 -# File systems 9.1018 -# 9.1019 -# CONFIG_EXT2_FS is not set 9.1020 -CONFIG_EXT3_FS=y 9.1021 -CONFIG_EXT3_FS_XATTR=y 9.1022 -CONFIG_EXT3_FS_POSIX_ACL=y 9.1023 -CONFIG_EXT3_FS_SECURITY=y 9.1024 -CONFIG_JBD=y 9.1025 -# CONFIG_JBD_DEBUG is not set 9.1026 -CONFIG_FS_MBCACHE=y 9.1027 -# CONFIG_REISERFS_FS is not set 9.1028 -# CONFIG_JFS_FS is not set 9.1029 -CONFIG_FS_POSIX_ACL=y 9.1030 -# CONFIG_XFS_FS is not set 9.1031 -# CONFIG_MINIX_FS is not set 9.1032 -# CONFIG_ROMFS_FS is not set 9.1033 -# CONFIG_QUOTA is not set 9.1034 -CONFIG_DNOTIFY=y 9.1035 -# CONFIG_AUTOFS_FS is not set 9.1036 -# CONFIG_AUTOFS4_FS is not set 9.1037 - 9.1038 -# 9.1039 -# CD-ROM/DVD Filesystems 9.1040 -# 9.1041 -CONFIG_ISO9660_FS=y 9.1042 -CONFIG_JOLIET=y 9.1043 -CONFIG_ZISOFS=y 9.1044 -CONFIG_ZISOFS_FS=y 9.1045 -CONFIG_UDF_FS=m 9.1046 -CONFIG_UDF_NLS=y 9.1047 - 9.1048 -# 9.1049 -# DOS/FAT/NT Filesystems 9.1050 -# 9.1051 -CONFIG_FAT_FS=m 9.1052 -CONFIG_MSDOS_FS=m 9.1053 -CONFIG_VFAT_FS=m 9.1054 -CONFIG_FAT_DEFAULT_CODEPAGE=437 9.1055 -CONFIG_FAT_DEFAULT_IOCHARSET="ascii" 9.1056 -# CONFIG_NTFS_FS is not set 9.1057 - 9.1058 -# 9.1059 -# Pseudo filesystems 9.1060 -# 9.1061 -CONFIG_PROC_FS=y 9.1062 -# CONFIG_PROC_KCORE is not set 9.1063 -CONFIG_SYSFS=y 9.1064 -# CONFIG_DEVFS_FS is not set 9.1065 -CONFIG_DEVPTS_FS_XATTR=y 9.1066 -CONFIG_DEVPTS_FS_SECURITY=y 9.1067 -CONFIG_TMPFS=y 9.1068 -CONFIG_TMPFS_XATTR=y 9.1069 -CONFIG_TMPFS_SECURITY=y 9.1070 -# CONFIG_HUGETLBFS is not set 9.1071 -# CONFIG_HUGETLB_PAGE is not set 9.1072 -CONFIG_RAMFS=y 9.1073 - 9.1074 -# 9.1075 -# Miscellaneous filesystems 9.1076 -# 9.1077 -# CONFIG_ADFS_FS is not set 9.1078 -CONFIG_AFFS_FS=m 9.1079 -CONFIG_HFS_FS=m 9.1080 -CONFIG_HFSPLUS_FS=m 9.1081 -CONFIG_BEFS_FS=m 9.1082 -# CONFIG_BEFS_DEBUG is not set 9.1083 -CONFIG_BFS_FS=m 9.1084 -CONFIG_EFS_FS=m 9.1085 -CONFIG_CRAMFS=m 9.1086 -CONFIG_VXFS_FS=m 9.1087 -# CONFIG_HPFS_FS is not set 9.1088 -CONFIG_QNX4FS_FS=m 9.1089 -# CONFIG_QNX4FS_RW is not set 9.1090 -CONFIG_SYSV_FS=m 9.1091 -CONFIG_UFS_FS=m 9.1092 -# CONFIG_UFS_FS_WRITE is not set 9.1093 - 9.1094 -# 9.1095 -# Network File Systems 9.1096 -# 9.1097 -CONFIG_NFS_FS=m 9.1098 -CONFIG_NFS_V3=y 9.1099 -CONFIG_NFS_V4=y 9.1100 -CONFIG_NFS_DIRECTIO=y 9.1101 -CONFIG_NFSD=m 9.1102 -CONFIG_NFSD_V3=y 9.1103 -CONFIG_NFSD_V4=y 9.1104 -CONFIG_NFSD_TCP=y 9.1105 -CONFIG_LOCKD=m 9.1106 -CONFIG_LOCKD_V4=y 9.1107 -CONFIG_EXPORTFS=m 9.1108 -CONFIG_SUNRPC=m 9.1109 -CONFIG_SUNRPC_GSS=m 9.1110 -CONFIG_RPCSEC_GSS_KRB5=m 9.1111 -CONFIG_RPCSEC_GSS_SPKM3=m 9.1112 -CONFIG_SMB_FS=m 9.1113 -# CONFIG_SMB_NLS_DEFAULT is not set 9.1114 -CONFIG_CIFS=m 9.1115 -# CONFIG_CIFS_STATS is not set 9.1116 -CONFIG_CIFS_XATTR=y 9.1117 -CONFIG_CIFS_POSIX=y 9.1118 -# CONFIG_CIFS_EXPERIMENTAL is not set 9.1119 -CONFIG_NCP_FS=m 9.1120 -CONFIG_NCPFS_PACKET_SIGNING=y 9.1121 -CONFIG_NCPFS_IOCTL_LOCKING=y 9.1122 -CONFIG_NCPFS_STRONG=y 9.1123 -CONFIG_NCPFS_NFS_NS=y 9.1124 -CONFIG_NCPFS_OS2_NS=y 9.1125 -CONFIG_NCPFS_SMALLDOS=y 9.1126 -CONFIG_NCPFS_NLS=y 9.1127 -CONFIG_NCPFS_EXTRAS=y 9.1128 -# CONFIG_CODA_FS is not set 9.1129 -# CONFIG_AFS_FS is not set 9.1130 - 9.1131 -# 9.1132 -# Partition Types 9.1133 -# 9.1134 -CONFIG_PARTITION_ADVANCED=y 9.1135 -# CONFIG_ACORN_PARTITION is not set 9.1136 -CONFIG_OSF_PARTITION=y 9.1137 -# CONFIG_AMIGA_PARTITION is not set 9.1138 -# CONFIG_ATARI_PARTITION is not set 9.1139 -CONFIG_MAC_PARTITION=y 9.1140 -CONFIG_MSDOS_PARTITION=y 9.1141 -CONFIG_BSD_DISKLABEL=y 9.1142 -CONFIG_MINIX_SUBPARTITION=y 9.1143 -CONFIG_SOLARIS_X86_PARTITION=y 9.1144 -CONFIG_UNIXWARE_DISKLABEL=y 9.1145 -# CONFIG_LDM_PARTITION is not set 9.1146 -CONFIG_SGI_PARTITION=y 9.1147 -# CONFIG_ULTRIX_PARTITION is not set 9.1148 -CONFIG_SUN_PARTITION=y 9.1149 -CONFIG_EFI_PARTITION=y 9.1150 - 9.1151 -# 9.1152 -# Native Language Support 9.1153 -# 9.1154 -CONFIG_NLS=y 9.1155 -CONFIG_NLS_DEFAULT="utf8" 9.1156 -CONFIG_NLS_CODEPAGE_437=y 9.1157 -CONFIG_NLS_CODEPAGE_737=m 9.1158 -CONFIG_NLS_CODEPAGE_775=m 9.1159 -CONFIG_NLS_CODEPAGE_850=m 9.1160 -CONFIG_NLS_CODEPAGE_852=m 9.1161 -CONFIG_NLS_CODEPAGE_855=m 9.1162 -CONFIG_NLS_CODEPAGE_857=m 9.1163 -CONFIG_NLS_CODEPAGE_860=m 9.1164 -CONFIG_NLS_CODEPAGE_861=m 9.1165 -CONFIG_NLS_CODEPAGE_862=m 9.1166 -CONFIG_NLS_CODEPAGE_863=m 9.1167 -CONFIG_NLS_CODEPAGE_864=m 9.1168 -CONFIG_NLS_CODEPAGE_865=m 9.1169 -CONFIG_NLS_CODEPAGE_866=m 9.1170 -CONFIG_NLS_CODEPAGE_869=m 9.1171 -CONFIG_NLS_CODEPAGE_936=m 9.1172 -CONFIG_NLS_CODEPAGE_950=m 9.1173 -CONFIG_NLS_CODEPAGE_932=m 9.1174 -CONFIG_NLS_CODEPAGE_949=m 9.1175 -CONFIG_NLS_CODEPAGE_874=m 9.1176 -CONFIG_NLS_ISO8859_8=m 9.1177 -CONFIG_NLS_CODEPAGE_1250=m 9.1178 -CONFIG_NLS_CODEPAGE_1251=m 9.1179 -CONFIG_NLS_ASCII=y 9.1180 -CONFIG_NLS_ISO8859_1=m 9.1181 -CONFIG_NLS_ISO8859_2=m 9.1182 -CONFIG_NLS_ISO8859_3=m 9.1183 -CONFIG_NLS_ISO8859_4=m 9.1184 -CONFIG_NLS_ISO8859_5=m 9.1185 -CONFIG_NLS_ISO8859_6=m 9.1186 -CONFIG_NLS_ISO8859_7=m 9.1187 -CONFIG_NLS_ISO8859_9=m 9.1188 -CONFIG_NLS_ISO8859_13=m 9.1189 -CONFIG_NLS_ISO8859_14=m 9.1190 -CONFIG_NLS_ISO8859_15=m 9.1191 -CONFIG_NLS_KOI8_R=m 9.1192 -CONFIG_NLS_KOI8_U=m 9.1193 -CONFIG_NLS_UTF8=m 9.1194 - 9.1195 -# 9.1196 -# Security options 9.1197 -# 9.1198 -# CONFIG_KEYS is not set 9.1199 -CONFIG_SECURITY=y 9.1200 -CONFIG_SECURITY_NETWORK=y 9.1201 -CONFIG_SECURITY_CAPABILITIES=y 9.1202 -# CONFIG_SECURITY_SECLVL is not set 9.1203 -CONFIG_SECURITY_SELINUX=y 9.1204 -CONFIG_SECURITY_SELINUX_BOOTPARAM=y 9.1205 -CONFIG_SECURITY_SELINUX_BOOTPARAM_VALUE=1 9.1206 -CONFIG_SECURITY_SELINUX_DISABLE=y 9.1207 -CONFIG_SECURITY_SELINUX_DEVELOP=y 9.1208 -# CONFIG_SECURITY_SELINUX_MLS is not set 9.1209 - 9.1210 -# 9.1211 -# Cryptographic options 9.1212 -# 9.1213 -CONFIG_CRYPTO=y 9.1214 -CONFIG_CRYPTO_HMAC=y 9.1215 -CONFIG_CRYPTO_NULL=m 9.1216 -CONFIG_CRYPTO_MD4=m 9.1217 -CONFIG_CRYPTO_MD5=m 9.1218 -CONFIG_CRYPTO_SHA1=y 9.1219 -CONFIG_CRYPTO_SHA256=m 9.1220 -CONFIG_CRYPTO_SHA512=m 9.1221 -CONFIG_CRYPTO_WP512=m 9.1222 -CONFIG_CRYPTO_DES=m 9.1223 -CONFIG_CRYPTO_BLOWFISH=m 9.1224 -CONFIG_CRYPTO_TWOFISH=m 9.1225 -CONFIG_CRYPTO_SERPENT=m 9.1226 -# CONFIG_CRYPTO_AES is not set 9.1227 -CONFIG_CRYPTO_CAST5=m 9.1228 -CONFIG_CRYPTO_CAST6=m 9.1229 -CONFIG_CRYPTO_TEA=m 9.1230 -CONFIG_CRYPTO_ARC4=m 9.1231 -CONFIG_CRYPTO_KHAZAD=m 9.1232 -# CONFIG_CRYPTO_ANUBIS is not set 9.1233 -CONFIG_CRYPTO_DEFLATE=m 9.1234 -CONFIG_CRYPTO_MICHAEL_MIC=m 9.1235 -CONFIG_CRYPTO_CRC32C=m 9.1236 -# CONFIG_CRYPTO_TEST is not set 9.1237 - 9.1238 -# 9.1239 -# Library routines 9.1240 -# 9.1241 -CONFIG_CRC_CCITT=m 9.1242 -CONFIG_CRC32=y 9.1243 -CONFIG_LIBCRC32C=m 9.1244 -CONFIG_ZLIB_INFLATE=y 9.1245 -CONFIG_ZLIB_DEFLATE=m 9.1246 - 9.1247 -# 9.1248 -# Firmware Drivers 9.1249 -# 9.1250 -# CONFIG_EDD is not set 9.1251 -# CONFIG_PCI_LEGACY_PROC is not set 9.1252 -# CONFIG_PCI_NAMES is not set
10.1 --- a/linux-2.6.11-xen-sparse/arch/xen/x86_64/kernel/entry.S Thu Apr 07 08:19:23 2005 +0000 10.2 +++ b/linux-2.6.11-xen-sparse/arch/xen/x86_64/kernel/entry.S Fri Apr 08 17:24:38 2005 +0000 10.3 @@ -336,7 +336,7 @@ badsys: 10.4 ENTRY(int_ret_from_sys_call) 10.5 XEN_GET_VCPU_INFO(%r11) 10.6 XEN_BLOCK_EVENTS(%r11) 10.7 - testb $1,SS-ARGOFFSET+4(%rsp) 10.8 + testb $3,CS-ARGOFFSET(%rsp) 10.9 jnz 1f 10.10 /* Need to set the proper %ss (not NULL) for ring 3 iretq */ 10.11 movl $__KERNEL_DS,SS-ARGOFFSET(%rsp)
11.1 --- a/linux-2.6.11-xen-sparse/arch/xen/x86_64/kernel/ioport.c Thu Apr 07 08:19:23 2005 +0000 11.2 +++ b/linux-2.6.11-xen-sparse/arch/xen/x86_64/kernel/ioport.c Fri Apr 08 17:24:38 2005 +0000 11.3 @@ -16,7 +16,7 @@ 11.4 #include <linux/stddef.h> 11.5 #include <linux/slab.h> 11.6 #include <linux/thread_info.h> 11.7 -#include <asm-xen/xen-public/dom0_ops.h> 11.8 +#include <asm-xen/xen-public/physdev.h> 11.9 11.10 /* 11.11 * sys_iopl has to be used when you want to access the IO ports 11.12 @@ -29,19 +29,15 @@ 11.13 asmlinkage long sys_iopl(unsigned int new_io_pl) 11.14 { 11.15 unsigned int old_io_pl = current->thread.io_pl; 11.16 - dom0_op_t op; 11.17 + physdev_op_t op; 11.18 11.19 11.20 if (new_io_pl > 3) 11.21 return -EINVAL; 11.22 - /* Trying to gain more privileges? */ 11.23 - if (new_io_pl > old_io_pl) { 11.24 - if (!capable(CAP_SYS_RAWIO)) 11.25 - return -EPERM; 11.26 - } 11.27 - 11.28 - if (!(xen_start_info.flags & SIF_PRIVILEGED)) 11.29 - return -EPERM; 11.30 + 11.31 + /* Need "raw I/O" privileges for direct port access. */ 11.32 + if ((new_io_pl > old_io_pl) && !capable(CAP_SYS_RAWIO)) 11.33 + return -EPERM; 11.34 11.35 /* Maintain OS privileges even if user attempts to relinquish them. */ 11.36 if (new_io_pl == 0) 11.37 @@ -51,13 +47,11 @@ asmlinkage long sys_iopl(unsigned int ne 11.38 current->thread.io_pl = new_io_pl; 11.39 11.40 /* Force the change at ring 0. */ 11.41 - op.cmd = DOM0_IOPL; 11.42 - op.u.iopl.domain = DOMID_SELF; 11.43 - op.u.iopl.iopl = new_io_pl; 11.44 - HYPERVISOR_dom0_op(&op); 11.45 + op.cmd = PHYSDEVOP_SET_IOPL; 11.46 + op.u.set_iopl.iopl = new_io_pl; 11.47 + HYPERVISOR_physdev_op(&op); 11.48 11.49 return 0; 11.50 - 11.51 } 11.52 11.53 /*
12.1 --- a/linux-2.6.11-xen-sparse/arch/xen/x86_64/kernel/ldt.c Thu Apr 07 08:19:23 2005 +0000 12.2 +++ b/linux-2.6.11-xen-sparse/arch/xen/x86_64/kernel/ldt.c Fri Apr 08 17:24:38 2005 +0000 12.3 @@ -29,7 +29,6 @@ static void flush_ldt(void *null) 12.4 { 12.5 if (current->active_mm) { 12.6 load_LDT(¤t->active_mm->context); 12.7 - flush_page_update_queue(); 12.8 } 12.9 } 12.10 #endif 12.11 @@ -70,7 +69,6 @@ static int alloc_ldt(mm_context_t *pc, u 12.12 make_pages_readonly(pc->ldt, (pc->size * LDT_ENTRY_SIZE) / 12.13 PAGE_SIZE); 12.14 load_LDT(pc); 12.15 - flush_page_update_queue(); 12.16 #ifdef CONFIG_SMP 12.17 mask = cpumask_of_cpu(smp_processor_id()); 12.18 if (!cpus_equal(current->mm->cpu_vm_mask, mask)) 12.19 @@ -83,7 +81,6 @@ static int alloc_ldt(mm_context_t *pc, u 12.20 if (oldsize) { 12.21 make_pages_writable(oldldt, (oldsize * LDT_ENTRY_SIZE) / 12.22 PAGE_SIZE); 12.23 - flush_page_update_queue(); 12.24 if (oldsize*LDT_ENTRY_SIZE > PAGE_SIZE) 12.25 vfree(oldldt); 12.26 else 12.27 @@ -100,7 +97,6 @@ static inline int copy_ldt(mm_context_t 12.28 memcpy(new->ldt, old->ldt, old->size*LDT_ENTRY_SIZE); 12.29 make_pages_readonly(new->ldt, (new->size * LDT_ENTRY_SIZE) / 12.30 PAGE_SIZE); 12.31 - flush_page_update_queue(); 12.32 return 0; 12.33 } 12.34 12.35 @@ -136,7 +132,6 @@ void destroy_context(struct mm_struct *m 12.36 make_pages_writable(mm->context.ldt, 12.37 (mm->context.size * LDT_ENTRY_SIZE) / 12.38 PAGE_SIZE); 12.39 - flush_page_update_queue(); 12.40 if (mm->context.size*LDT_ENTRY_SIZE > PAGE_SIZE) 12.41 vfree(mm->context.ldt); 12.42 else
13.1 --- a/linux-2.6.11-xen-sparse/arch/xen/x86_64/kernel/pci-dma.c Thu Apr 07 08:19:23 2005 +0000 13.2 +++ b/linux-2.6.11-xen-sparse/arch/xen/x86_64/kernel/pci-dma.c Fri Apr 08 17:24:38 2005 +0000 13.3 @@ -97,10 +97,9 @@ xen_contig_memory(unsigned long vstart, 13.4 pmd = pmd_offset(pud, (vstart + (i*PAGE_SIZE))); 13.5 pte = pte_offset_kernel(pmd, (vstart + (i*PAGE_SIZE))); 13.6 pfn = pte->pte >> PAGE_SHIFT; 13.7 - queue_l1_entry_update(pte, 0); 13.8 + xen_l1_entry_update(pte, 0); 13.9 phys_to_machine_mapping[(__pa(vstart)>>PAGE_SHIFT)+i] = 13.10 (u32)INVALID_P2M_ENTRY; 13.11 - flush_page_update_queue(); 13.12 if (HYPERVISOR_dom_mem_op(MEMOP_decrease_reservation, 13.13 &pfn, 1, 0) != 1) BUG(); 13.14 } 13.15 @@ -113,9 +112,9 @@ xen_contig_memory(unsigned long vstart, 13.16 pud = pud_offset(pgd, (vstart + (i*PAGE_SIZE))); 13.17 pmd = pmd_offset(pud, (vstart + (i*PAGE_SIZE))); 13.18 pte = pte_offset_kernel(pmd, (vstart + (i*PAGE_SIZE))); 13.19 - queue_l1_entry_update( 13.20 + xen_l1_entry_update( 13.21 pte, ((pfn+i)<<PAGE_SHIFT)|__PAGE_KERNEL); 13.22 - queue_machphys_update( 13.23 + xen_machphys_update( 13.24 pfn+i, (__pa(vstart)>>PAGE_SHIFT)+i); 13.25 phys_to_machine_mapping[(__pa(vstart)>>PAGE_SHIFT)+i] = 13.26 pfn+i;
14.1 --- a/linux-2.6.11-xen-sparse/arch/xen/x86_64/kernel/process.c Thu Apr 07 08:19:23 2005 +0000 14.2 +++ b/linux-2.6.11-xen-sparse/arch/xen/x86_64/kernel/process.c Fri Apr 08 17:24:38 2005 +0000 14.3 @@ -47,8 +47,8 @@ 14.4 #include <asm/pda.h> 14.5 #include <asm/prctl.h> 14.6 #include <asm/kdebug.h> 14.7 -#include <asm-xen/multicall.h> 14.8 #include <asm-xen/xen-public/dom0_ops.h> 14.9 +#include <asm-xen/xen-public/physdev.h> 14.10 #include <asm/desc.h> 14.11 #include <asm/proto.h> 14.12 #include <asm/hardirq.h> 14.13 @@ -203,7 +203,7 @@ void exit_thread(void) 14.14 14.15 void load_gs_index(unsigned gs) 14.16 { 14.17 - __load_gs_index(gs); 14.18 + HYPERVISOR_set_segment_base(SEGBASE_GS_USER_SEL, gs); 14.19 } 14.20 14.21 void flush_thread(void) 14.22 @@ -346,6 +346,14 @@ out: 14.23 HYPERVISOR_set_debugreg((register), \ 14.24 (thread->debugreg ## register)) 14.25 14.26 + 14.27 +static inline void __save_init_fpu( struct task_struct *tsk ) 14.28 +{ 14.29 + asm volatile( "rex64 ; fxsave %0 ; fnclex" 14.30 + : "=m" (tsk->thread.i387.fxsave)); 14.31 + tsk->thread_info->status &= ~TS_USEDFPU; 14.32 +} 14.33 + 14.34 /* 14.35 * switch_to(x,y) should switch tasks from x to y. 14.36 * 14.37 @@ -359,61 +367,68 @@ struct task_struct *__switch_to(struct t 14.38 *next = &next_p->thread; 14.39 int cpu = smp_processor_id(); 14.40 struct tss_struct *tss = &per_cpu(init_tss, cpu); 14.41 - dom0_op_t op; 14.42 - 14.43 - /* NB. No need to disable interrupts as already done in sched.c */ 14.44 - /* __cli(); */ 14.45 - 14.46 -// MULTICALL_flush_page_update_queue(); 14.47 - 14.48 - /* never put a printk in __switch_to... printk() calls wake_up*() indirectly */ 14.49 - 14.50 + physdev_op_t iopl_op, iobmp_op; 14.51 + multicall_entry_t _mcl[8], *mcl = _mcl; 14.52 + 14.53 /* 14.54 * This is basically '__unlazy_fpu', except that we queue a 14.55 * multicall to indicate FPU task switch, rather than 14.56 * synchronously trapping to Xen. 14.57 */ 14.58 if (prev_p->thread_info->status & TS_USEDFPU) { 14.59 - save_init_fpu(prev_p); 14.60 - queue_multicall0(__HYPERVISOR_fpu_taskswitch); 14.61 + __save_init_fpu(prev_p); /* _not_ save_init_fpu() */ 14.62 + mcl->op = __HYPERVISOR_fpu_taskswitch; 14.63 + mcl->args[0] = 1; 14.64 + mcl++; 14.65 } 14.66 14.67 /* 14.68 * Reload esp0, LDT and the page table pointer: 14.69 */ 14.70 tss->rsp0 = next->rsp0; 14.71 -// queue_multicall1(__HYPERVISOR_stack_switch, tss->rsp0); 14.72 - HYPERVISOR_stack_switch(__KERNEL_DS, tss->rsp0); 14.73 + mcl->op = __HYPERVISOR_stack_switch; 14.74 + mcl->args[0] = __KERNEL_DS; 14.75 + mcl->args[1] = tss->rsp0; 14.76 + mcl++; 14.77 14.78 /* 14.79 * Load the per-thread Thread-Local Storage descriptor. 14.80 * This is load_TLS(next, cpu) with multicalls. 14.81 */ 14.82 #define C(i) do { \ 14.83 - if (unlikely(next->tls_array[i] != prev->tls_array[i])) \ 14.84 - queue_multicall2(__HYPERVISOR_update_descriptor, \ 14.85 - virt_to_machine(&get_cpu_gdt_table(cpu) \ 14.86 - [GDT_ENTRY_TLS_MIN + i]), \ 14.87 - (unsigned long) &next->tls_array[i]); \ 14.88 + if (unlikely(next->tls_array[i] != prev->tls_array[i])) { \ 14.89 + mcl->op = __HYPERVISOR_update_descriptor; \ 14.90 + mcl->args[0] = virt_to_machine(&get_cpu_gdt_table(cpu) \ 14.91 + [GDT_ENTRY_TLS_MIN + i]); \ 14.92 + mcl->args[1] = (unsigned long) ((u64 *) &next->tls_array[i]); \ 14.93 + mcl->args[2] = (unsigned long) ((u64 *) &next->tls_array[i]); \ 14.94 + mcl++; \ 14.95 + } \ 14.96 } while (0) 14.97 C(0); C(1); C(2); 14.98 #undef C 14.99 14.100 - if (xen_start_info.flags & SIF_PRIVILEGED) { 14.101 - op.cmd = DOM0_IOPL; 14.102 - op.u.iopl.domain = DOMID_SELF; 14.103 - op.u.iopl.iopl = next->io_pl; 14.104 - op.interface_version = DOM0_INTERFACE_VERSION; 14.105 - HYPERVISOR_dom0_op(&op); 14.106 -#if 0 14.107 - queue_multicall1(__HYPERVISOR_dom0_op, (unsigned long)&op); 14.108 -#endif 14.109 + if (unlikely(prev->io_pl != next->io_pl)) { 14.110 + iopl_op.cmd = PHYSDEVOP_SET_IOPL; 14.111 + iopl_op.u.set_iopl.iopl = next->io_pl; 14.112 + mcl->op = __HYPERVISOR_physdev_op; 14.113 + mcl->args[0] = (unsigned long)&iopl_op; 14.114 + mcl++; 14.115 } 14.116 14.117 - /* EXECUTE ALL TASK SWITCH XEN SYSCALLS AT THIS POINT. */ 14.118 -// execute_multicall_list(); 14.119 - /* __sti(); */ 14.120 + if (unlikely(prev->io_bitmap_ptr || next->io_bitmap_ptr)) { 14.121 + iobmp_op.cmd = 14.122 + PHYSDEVOP_SET_IOBITMAP; 14.123 + iobmp_op.u.set_iobitmap.bitmap = 14.124 + (unsigned long)next->io_bitmap_ptr; 14.125 + iobmp_op.u.set_iobitmap.nr_ports = 14.126 + next->io_bitmap_ptr ? IO_BITMAP_BITS : 0; 14.127 + mcl->op = __HYPERVISOR_physdev_op; 14.128 + mcl->args[0] = (unsigned long)&iobmp_op; 14.129 + mcl++; 14.130 + } 14.131 14.132 + (void)HYPERVISOR_multicall(_mcl, mcl - _mcl); 14.133 /* 14.134 * Switch DS and ES. 14.135 * This won't pick up thread selector changes, but I guess that is ok. 14.136 @@ -485,25 +500,6 @@ struct task_struct *__switch_to(struct t 14.137 loaddebug(next, 7); 14.138 } 14.139 14.140 - /* 14.141 - * Handle the IO bitmap 14.142 - */ 14.143 - if (unlikely(prev->io_bitmap_ptr || next->io_bitmap_ptr)) { 14.144 - if (next->io_bitmap_ptr) 14.145 - /* 14.146 - * Copy the relevant range of the IO bitmap. 14.147 - * Normally this is 128 bytes or less: 14.148 - */ 14.149 - memcpy(tss->io_bitmap, next->io_bitmap_ptr, 14.150 - max(prev->io_bitmap_max, next->io_bitmap_max)); 14.151 - else { 14.152 - /* 14.153 - * Clear any possible leftover bits: 14.154 - */ 14.155 - memset(tss->io_bitmap, 0xff, prev->io_bitmap_max); 14.156 - } 14.157 - } 14.158 - 14.159 return prev_p; 14.160 } 14.161
15.1 --- a/linux-2.6.11-xen-sparse/arch/xen/x86_64/kernel/setup.c Thu Apr 07 08:19:23 2005 +0000 15.2 +++ b/linux-2.6.11-xen-sparse/arch/xen/x86_64/kernel/setup.c Fri Apr 08 17:24:38 2005 +0000 15.3 @@ -58,7 +58,7 @@ 15.4 #include <asm/setup.h> 15.5 #include <asm/mach_apic.h> 15.6 #include <asm/numa.h> 15.7 - 15.8 +#include <asm-xen/xen-public/physdev.h> 15.9 #include "setup_arch_pre.h" 15.10 #include <asm-xen/hypervisor.h> 15.11 15.12 @@ -604,7 +604,9 @@ static void __init print_memory_map(char 15.13 void __init setup_arch(char **cmdline_p) 15.14 { 15.15 unsigned long low_mem_size; 15.16 - int i,j; 15.17 + int i, j; 15.18 + physdev_op_t op; 15.19 + 15.20 #if 0 15.21 ROOT_DEV = old_decode_dev(ORIG_ROOT_DEV); 15.22 #else 15.23 @@ -805,16 +807,6 @@ void __init setup_arch(char **cmdline_p) 15.24 /* XXX Disable irqdebug until we have a way to avoid interrupt 15.25 * conflicts. */ 15.26 /* noirqdebug_setup(""); */ 15.27 - /* If we are a privileged guest OS then we should request IO privs. */ 15.28 - if (xen_start_info.flags & SIF_PRIVILEGED) { 15.29 - dom0_op_t op; 15.30 - op.cmd = DOM0_IOPL; 15.31 - op.u.iopl.domain = DOMID_SELF; 15.32 - op.u.iopl.iopl = 3; 15.33 - if (HYPERVISOR_dom0_op(&op) != 0) 15.34 - panic("Unable to obtain IOPL, despite SIF_PRIVILEGED"); 15.35 - current->thread.io_pl = 3; 15.36 - } 15.37 15.38 #ifdef CONFIG_XEN_PRIVILEGED_GUEST 15.39 /* 15.40 @@ -843,9 +835,13 @@ void __init setup_arch(char **cmdline_p) 15.41 pci_mem_start = low_mem_size; 15.42 15.43 #ifdef CONFIG_GART_IOMMU 15.44 - iommu_hole_init(); 15.45 + iommu_hole_init(); 15.46 #endif 15.47 15.48 + op.cmd = PHYSDEVOP_SET_IOPL; 15.49 + op.u.set_iopl.iopl = current->thread.io_pl = 1; 15.50 + HYPERVISOR_physdev_op(&op); 15.51 + 15.52 if (xen_start_info.flags & SIF_INITDOMAIN) { 15.53 if (!(xen_start_info.flags & SIF_PRIVILEGED)) 15.54 panic("Xen granted us console access "
16.1 --- a/linux-2.6.11-xen-sparse/arch/xen/x86_64/kernel/setup64.c Thu Apr 07 08:19:23 2005 +0000 16.2 +++ b/linux-2.6.11-xen-sparse/arch/xen/x86_64/kernel/setup64.c Fri Apr 08 17:24:38 2005 +0000 16.3 @@ -218,7 +218,6 @@ void __init cpu_gdt_init(struct desc_ptr 16.4 frames[f] = virt_to_machine(va) >> PAGE_SHIFT; 16.5 make_page_readonly((void *)va); 16.6 } 16.7 - flush_page_update_queue(); 16.8 if (HYPERVISOR_set_gdt(frames, gdt_descr->size / 16.9 sizeof (struct desc_struct))) 16.10 BUG(); 16.11 @@ -328,9 +327,7 @@ void __init cpu_init (void) 16.12 enter_lazy_tlb(&init_mm, me); 16.13 16.14 load_LDT(&init_mm.context); 16.15 - flush_page_update_queue(); 16.16 16.17 -#if 0 16.18 /* 16.19 * Clear all 6 debug registers: 16.20 */ 16.21 @@ -339,7 +336,6 @@ void __init cpu_init (void) 16.22 CD(0); CD(1); CD(2); CD(3); /* no db4 and db5 */; CD(6); CD(7); 16.23 16.24 #undef CD 16.25 -#endif 16.26 #if 0 16.27 fpu_init(); 16.28 #endif
17.1 --- a/linux-2.6.11-xen-sparse/arch/xen/x86_64/mm/hypervisor.c Thu Apr 07 08:19:23 2005 +0000 17.2 +++ b/linux-2.6.11-xen-sparse/arch/xen/x86_64/mm/hypervisor.c Fri Apr 08 17:24:38 2005 +0000 17.3 @@ -38,552 +38,193 @@ 17.4 #include <linux/vmalloc.h> 17.5 #include <asm/page.h> 17.6 #include <asm/pgtable.h> 17.7 +#include <asm/tlbflush.h> 17.8 #include <asm-xen/hypervisor.h> 17.9 -#include <asm-xen/multicall.h> 17.10 #include <asm-xen/balloon.h> 17.11 #if LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,0) 17.12 #include <linux/percpu.h> 17.13 #endif 17.14 17.15 -/* 17.16 - * This suffices to protect us if we ever move to SMP domains. 17.17 - * Further, it protects us against interrupts. At the very least, this is 17.18 - * required for the network driver which flushes the update queue before 17.19 - * pushing new receive buffers. 17.20 - */ 17.21 -static spinlock_t update_lock = SPIN_LOCK_UNLOCKED; 17.22 - 17.23 -/* Linux 2.6 isn't using the traditional batched interface. */ 17.24 -#if LINUX_VERSION_CODE < KERNEL_VERSION(2,6,0) 17.25 -#define QUEUE_SIZE 2048 17.26 -#define pte_offset_kernel pte_offset 17.27 -#else 17.28 -#ifdef CONFIG_SMP 17.29 -#define QUEUE_SIZE 1 17.30 -#else 17.31 -/* #define QUEUE_SIZE 128 */ 17.32 -#define QUEUE_SIZE 1 17.33 -#endif 17.34 -#endif 17.35 - 17.36 -DEFINE_PER_CPU(mmu_update_t, update_queue[QUEUE_SIZE]); 17.37 -DEFINE_PER_CPU(unsigned int, mmu_update_queue_idx); 17.38 - 17.39 -/* 17.40 - * MULTICALL_flush_page_update_queue: 17.41 - * This is a version of the flush which queues as part of a multicall. 17.42 - */ 17.43 -void MULTICALL_flush_page_update_queue(void) 17.44 -{ 17.45 - int cpu = smp_processor_id(); 17.46 - int idx; 17.47 - unsigned long flags; 17.48 - unsigned int _idx; 17.49 - spin_lock_irqsave(&update_lock, flags); 17.50 - idx = per_cpu(mmu_update_queue_idx, cpu); 17.51 - if ( (_idx = idx) != 0 ) 17.52 - { 17.53 - per_cpu(mmu_update_queue_idx, cpu) = 0; 17.54 - wmb(); /* Make sure index is cleared first to avoid double updates. */ 17.55 - queue_multicall3(__HYPERVISOR_mmu_update, 17.56 - (unsigned long)&per_cpu(update_queue[0], cpu), 17.57 - (unsigned long)_idx, 17.58 - (unsigned long)NULL); 17.59 - } 17.60 - spin_unlock_irqrestore(&update_lock, flags); 17.61 -} 17.62 - 17.63 -static inline void __flush_page_update_queue(void) 17.64 -{ 17.65 - int cpu = smp_processor_id(); 17.66 - unsigned int _idx = per_cpu(mmu_update_queue_idx, cpu); 17.67 - per_cpu(mmu_update_queue_idx, cpu) = 0; 17.68 - wmb(); /* Make sure index is cleared first to avoid double updates. */ 17.69 - if ( unlikely(HYPERVISOR_mmu_update(&per_cpu(update_queue[0], cpu), _idx, NULL) < 0) ) 17.70 - { 17.71 - printk(KERN_ALERT "Failed to execute MMU updates (returning to %lx)\n", 17.72 - (unsigned long)__builtin_return_address(0)); 17.73 - BUG(); 17.74 - } 17.75 -} 17.76 - 17.77 -void _flush_page_update_queue(void) 17.78 -{ 17.79 - int cpu = smp_processor_id(); 17.80 - unsigned long flags; 17.81 - spin_lock_irqsave(&update_lock, flags); 17.82 - if ( per_cpu(mmu_update_queue_idx, cpu) != 0 ) __flush_page_update_queue(); 17.83 - spin_unlock_irqrestore(&update_lock, flags); 17.84 -} 17.85 - 17.86 -static inline void increment_index(void) 17.87 -{ 17.88 - int cpu = smp_processor_id(); 17.89 - per_cpu(mmu_update_queue_idx, cpu)++; 17.90 - if ( unlikely(per_cpu(mmu_update_queue_idx, cpu) == QUEUE_SIZE) ) __flush_page_update_queue(); 17.91 -} 17.92 - 17.93 -static inline void increment_index_and_flush(void) 17.94 +void xen_l1_entry_update(pte_t *ptr, unsigned long val) 17.95 { 17.96 - int cpu = smp_processor_id(); 17.97 - per_cpu(mmu_update_queue_idx, cpu)++; 17.98 - __flush_page_update_queue(); 17.99 -} 17.100 - 17.101 -void queue_l1_entry_update(pte_t *ptr, unsigned long val) 17.102 -{ 17.103 - int cpu = smp_processor_id(); 17.104 - int idx; 17.105 - unsigned long flags; 17.106 - spin_lock_irqsave(&update_lock, flags); 17.107 - idx = per_cpu(mmu_update_queue_idx, cpu); 17.108 - per_cpu(update_queue[idx], cpu).ptr = virt_to_machine(ptr); 17.109 - per_cpu(update_queue[idx], cpu).val = val; 17.110 - increment_index(); 17.111 - spin_unlock_irqrestore(&update_lock, flags); 17.112 -} 17.113 - 17.114 -void queue_l2_entry_update(pmd_t *ptr, pmd_t val) 17.115 -{ 17.116 - int cpu = smp_processor_id(); 17.117 - int idx; 17.118 - unsigned long flags; 17.119 - spin_lock_irqsave(&update_lock, flags); 17.120 - idx = per_cpu(mmu_update_queue_idx, cpu); 17.121 - per_cpu(update_queue[idx], cpu).ptr = virt_to_machine(ptr); 17.122 - per_cpu(update_queue[idx], cpu).val = val.pmd; 17.123 - increment_index(); 17.124 - spin_unlock_irqrestore(&update_lock, flags); 17.125 -} 17.126 - 17.127 - 17.128 -void queue_pt_switch(unsigned long ptr) 17.129 -{ 17.130 - int cpu = smp_processor_id(); 17.131 - int idx; 17.132 - unsigned long flags; 17.133 - spin_lock_irqsave(&update_lock, flags); 17.134 - idx = per_cpu(mmu_update_queue_idx, cpu); 17.135 - per_cpu(update_queue[idx], cpu).ptr = phys_to_machine(ptr); 17.136 - per_cpu(update_queue[idx], cpu).ptr |= MMU_EXTENDED_COMMAND; 17.137 - per_cpu(update_queue[idx], cpu).val = MMUEXT_NEW_BASEPTR; 17.138 - increment_index(); 17.139 - spin_unlock_irqrestore(&update_lock, flags); 17.140 -} 17.141 - 17.142 -void queue_tlb_flush(void) 17.143 -{ 17.144 - int cpu = smp_processor_id(); 17.145 - int idx; 17.146 - unsigned long flags; 17.147 - spin_lock_irqsave(&update_lock, flags); 17.148 - idx = per_cpu(mmu_update_queue_idx, cpu); 17.149 - per_cpu(update_queue[idx], cpu).ptr = MMU_EXTENDED_COMMAND; 17.150 - per_cpu(update_queue[idx], cpu).val = MMUEXT_TLB_FLUSH; 17.151 - increment_index(); 17.152 - spin_unlock_irqrestore(&update_lock, flags); 17.153 -} 17.154 - 17.155 -void queue_invlpg(unsigned long ptr) 17.156 -{ 17.157 - int cpu = smp_processor_id(); 17.158 - int idx; 17.159 - unsigned long flags; 17.160 - spin_lock_irqsave(&update_lock, flags); 17.161 - idx = per_cpu(mmu_update_queue_idx, cpu); 17.162 - per_cpu(update_queue[idx], cpu).ptr = MMU_EXTENDED_COMMAND; 17.163 - per_cpu(update_queue[idx], cpu).ptr |= ptr & PAGE_MASK; 17.164 - per_cpu(update_queue[idx], cpu).val = MMUEXT_INVLPG; 17.165 - increment_index(); 17.166 - spin_unlock_irqrestore(&update_lock, flags); 17.167 -} 17.168 - 17.169 -void queue_pgd_pin(unsigned long ptr) 17.170 -{ 17.171 - int cpu = smp_processor_id(); 17.172 - int idx; 17.173 - unsigned long flags; 17.174 - spin_lock_irqsave(&update_lock, flags); 17.175 - idx = per_cpu(mmu_update_queue_idx, cpu); 17.176 - per_cpu(update_queue[idx], cpu).ptr = phys_to_machine(ptr); 17.177 - per_cpu(update_queue[idx], cpu).ptr |= MMU_EXTENDED_COMMAND; 17.178 - per_cpu(update_queue[idx], cpu).val = MMUEXT_PIN_L4_TABLE; 17.179 - increment_index(); 17.180 - spin_unlock_irqrestore(&update_lock, flags); 17.181 + mmu_update_t u; 17.182 + u.ptr = virt_to_machine(ptr); 17.183 + u.val = val; 17.184 + BUG_ON(HYPERVISOR_mmu_update(&u, 1, NULL, DOMID_SELF) < 0); 17.185 } 17.186 17.187 -void queue_pgd_unpin(unsigned long ptr) 17.188 -{ 17.189 - int cpu = smp_processor_id(); 17.190 - int idx; 17.191 - unsigned long flags; 17.192 - spin_lock_irqsave(&update_lock, flags); 17.193 - idx = per_cpu(mmu_update_queue_idx, cpu); 17.194 - per_cpu(update_queue[idx], cpu).ptr = phys_to_machine(ptr); 17.195 - per_cpu(update_queue[idx], cpu).ptr |= MMU_EXTENDED_COMMAND; 17.196 - per_cpu(update_queue[idx], cpu).val = MMUEXT_UNPIN_TABLE; 17.197 - increment_index(); 17.198 - spin_unlock_irqrestore(&update_lock, flags); 17.199 -} 17.200 - 17.201 -void queue_pud_pin(unsigned long ptr) 17.202 -{ 17.203 - int cpu = smp_processor_id(); 17.204 - int idx; 17.205 - unsigned long flags; 17.206 - spin_lock_irqsave(&update_lock, flags); 17.207 - idx = per_cpu(mmu_update_queue_idx, cpu); 17.208 - per_cpu(update_queue[idx], cpu).ptr = phys_to_machine(ptr); 17.209 - per_cpu(update_queue[idx], cpu).ptr |= MMU_EXTENDED_COMMAND; 17.210 - per_cpu(update_queue[idx], cpu).val = MMUEXT_PIN_L3_TABLE; 17.211 - increment_index(); 17.212 - spin_unlock_irqrestore(&update_lock, flags); 17.213 -} 17.214 - 17.215 -void queue_pud_unpin(unsigned long ptr) 17.216 +void xen_l2_entry_update(pmd_t *ptr, pmd_t val) 17.217 { 17.218 - int cpu = smp_processor_id(); 17.219 - int idx; 17.220 - unsigned long flags; 17.221 - spin_lock_irqsave(&update_lock, flags); 17.222 - idx = per_cpu(mmu_update_queue_idx, cpu); 17.223 - per_cpu(update_queue[idx], cpu).ptr = phys_to_machine(ptr); 17.224 - per_cpu(update_queue[idx], cpu).ptr |= MMU_EXTENDED_COMMAND; 17.225 - per_cpu(update_queue[idx], cpu).val = MMUEXT_UNPIN_TABLE; 17.226 - increment_index(); 17.227 - spin_unlock_irqrestore(&update_lock, flags); 17.228 -} 17.229 - 17.230 -void queue_pmd_pin(unsigned long ptr) 17.231 -{ 17.232 - int cpu = smp_processor_id(); 17.233 - int idx; 17.234 - unsigned long flags; 17.235 - spin_lock_irqsave(&update_lock, flags); 17.236 - idx = per_cpu(mmu_update_queue_idx, cpu); 17.237 - per_cpu(update_queue[idx], cpu).ptr = phys_to_machine(ptr); 17.238 - per_cpu(update_queue[idx], cpu).ptr |= MMU_EXTENDED_COMMAND; 17.239 - per_cpu(update_queue[idx], cpu).val = MMUEXT_PIN_L2_TABLE; 17.240 - increment_index(); 17.241 - spin_unlock_irqrestore(&update_lock, flags); 17.242 -} 17.243 - 17.244 -void queue_pmd_unpin(unsigned long ptr) 17.245 -{ 17.246 - int cpu = smp_processor_id(); 17.247 - int idx; 17.248 - unsigned long flags; 17.249 - spin_lock_irqsave(&update_lock, flags); 17.250 - idx = per_cpu(mmu_update_queue_idx, cpu); 17.251 - per_cpu(update_queue[idx], cpu).ptr = phys_to_machine(ptr); 17.252 - per_cpu(update_queue[idx], cpu).ptr |= MMU_EXTENDED_COMMAND; 17.253 - per_cpu(update_queue[idx], cpu).val = MMUEXT_UNPIN_TABLE; 17.254 - increment_index(); 17.255 - spin_unlock_irqrestore(&update_lock, flags); 17.256 -} 17.257 - 17.258 -void queue_pte_pin(unsigned long ptr) 17.259 -{ 17.260 - int cpu = smp_processor_id(); 17.261 - int idx; 17.262 - unsigned long flags; 17.263 - spin_lock_irqsave(&update_lock, flags); 17.264 - idx = per_cpu(mmu_update_queue_idx, cpu); 17.265 - per_cpu(update_queue[idx], cpu).ptr = phys_to_machine(ptr); 17.266 - per_cpu(update_queue[idx], cpu).ptr |= MMU_EXTENDED_COMMAND; 17.267 - per_cpu(update_queue[idx], cpu).val = MMUEXT_PIN_L1_TABLE; 17.268 - increment_index(); 17.269 - spin_unlock_irqrestore(&update_lock, flags); 17.270 + mmu_update_t u; 17.271 + u.ptr = virt_to_machine(ptr); 17.272 + u.val = val.pmd; 17.273 + BUG_ON(HYPERVISOR_mmu_update(&u, 1, NULL, DOMID_SELF) < 0); 17.274 } 17.275 17.276 -void queue_pte_unpin(unsigned long ptr) 17.277 -{ 17.278 - int cpu = smp_processor_id(); 17.279 - int idx; 17.280 - unsigned long flags; 17.281 - spin_lock_irqsave(&update_lock, flags); 17.282 - idx = per_cpu(mmu_update_queue_idx, cpu); 17.283 - per_cpu(update_queue[idx], cpu).ptr = phys_to_machine(ptr); 17.284 - per_cpu(update_queue[idx], cpu).ptr |= MMU_EXTENDED_COMMAND; 17.285 - per_cpu(update_queue[idx], cpu).val = MMUEXT_UNPIN_TABLE; 17.286 - increment_index(); 17.287 - spin_unlock_irqrestore(&update_lock, flags); 17.288 -} 17.289 - 17.290 -void queue_set_ldt(unsigned long ptr, unsigned long len) 17.291 +void xen_l3_entry_update(pud_t *ptr, pud_t val) 17.292 { 17.293 - int cpu = smp_processor_id(); 17.294 - int idx; 17.295 - unsigned long flags; 17.296 - spin_lock_irqsave(&update_lock, flags); 17.297 - idx = per_cpu(mmu_update_queue_idx, cpu); 17.298 - per_cpu(update_queue[idx], cpu).ptr = MMU_EXTENDED_COMMAND | ptr; 17.299 - per_cpu(update_queue[idx], cpu).val = MMUEXT_SET_LDT | (len << MMUEXT_CMD_SHIFT); 17.300 - increment_index(); 17.301 - spin_unlock_irqrestore(&update_lock, flags); 17.302 -} 17.303 - 17.304 -void queue_machphys_update(unsigned long mfn, unsigned long pfn) 17.305 -{ 17.306 - int cpu = smp_processor_id(); 17.307 - int idx; 17.308 - unsigned long flags; 17.309 - spin_lock_irqsave(&update_lock, flags); 17.310 - idx = per_cpu(mmu_update_queue_idx, cpu); 17.311 - per_cpu(update_queue[idx], cpu).ptr = (mfn << PAGE_SHIFT) | MMU_MACHPHYS_UPDATE; 17.312 - per_cpu(update_queue[idx], cpu).val = pfn; 17.313 - increment_index(); 17.314 - spin_unlock_irqrestore(&update_lock, flags); 17.315 + mmu_update_t u; 17.316 + u.ptr = virt_to_machine(ptr); 17.317 + u.val = val.pud; 17.318 + BUG_ON(HYPERVISOR_mmu_update(&u, 1, NULL, DOMID_SELF) < 0); 17.319 } 17.320 17.321 -/* queue and flush versions of the above */ 17.322 -void xen_l1_entry_update(pte_t *ptr, unsigned long val) 17.323 -{ 17.324 - int cpu = smp_processor_id(); 17.325 - int idx; 17.326 - unsigned long flags; 17.327 - spin_lock_irqsave(&update_lock, flags); 17.328 - idx = per_cpu(mmu_update_queue_idx, cpu); 17.329 - per_cpu(update_queue[idx], cpu).ptr = virt_to_machine(ptr); 17.330 - per_cpu(update_queue[idx], cpu).val = val; 17.331 - increment_index_and_flush(); 17.332 - spin_unlock_irqrestore(&update_lock, flags); 17.333 -} 17.334 - 17.335 -void xen_l2_entry_update(pmd_t *ptr, unsigned long val) 17.336 +void xen_l4_entry_update(pgd_t *ptr, pgd_t val) 17.337 { 17.338 - int cpu = smp_processor_id(); 17.339 - int idx; 17.340 - unsigned long flags; 17.341 - spin_lock_irqsave(&update_lock, flags); 17.342 - idx = per_cpu(mmu_update_queue_idx, cpu); 17.343 - per_cpu(update_queue[idx], cpu).ptr = virt_to_machine(ptr); 17.344 - per_cpu(update_queue[idx], cpu).val = val; 17.345 - increment_index_and_flush(); 17.346 - spin_unlock_irqrestore(&update_lock, flags); 17.347 -} 17.348 - 17.349 -void xen_l3_entry_update(pud_t *ptr, unsigned long val) 17.350 -{ 17.351 - int cpu = smp_processor_id(); 17.352 - int idx; 17.353 - unsigned long flags; 17.354 - spin_lock_irqsave(&update_lock, flags); 17.355 - idx = per_cpu(mmu_update_queue_idx, cpu); 17.356 - per_cpu(update_queue[idx], cpu).ptr = virt_to_machine(ptr); 17.357 - per_cpu(update_queue[idx], cpu).val = val; 17.358 - increment_index_and_flush(); 17.359 - spin_unlock_irqrestore(&update_lock, flags); 17.360 -} 17.361 - 17.362 -void xen_l4_entry_update(pgd_t *ptr, unsigned long val) 17.363 -{ 17.364 - int cpu = smp_processor_id(); 17.365 - int idx; 17.366 - unsigned long flags; 17.367 - spin_lock_irqsave(&update_lock, flags); 17.368 - idx = per_cpu(mmu_update_queue_idx, cpu); 17.369 - per_cpu(update_queue[idx], cpu).ptr = virt_to_machine(ptr); 17.370 - per_cpu(update_queue[idx], cpu).val = val; 17.371 - increment_index_and_flush(); 17.372 - spin_unlock_irqrestore(&update_lock, flags); 17.373 + mmu_update_t u; 17.374 + u.ptr = virt_to_machine(ptr); 17.375 + u.val = val.pgd; 17.376 + BUG_ON(HYPERVISOR_mmu_update(&u, 1, NULL, DOMID_SELF) < 0); 17.377 } 17.378 17.379 void xen_pt_switch(unsigned long ptr) 17.380 { 17.381 - int cpu = smp_processor_id(); 17.382 - int idx; 17.383 - unsigned long flags; 17.384 - spin_lock_irqsave(&update_lock, flags); 17.385 - idx = per_cpu(mmu_update_queue_idx, cpu); 17.386 - per_cpu(update_queue[idx], cpu).ptr = phys_to_machine(ptr); 17.387 - per_cpu(update_queue[idx], cpu).ptr |= MMU_EXTENDED_COMMAND; 17.388 - per_cpu(update_queue[idx], cpu).val = MMUEXT_NEW_BASEPTR; 17.389 - increment_index_and_flush(); 17.390 - spin_unlock_irqrestore(&update_lock, flags); 17.391 + struct mmuext_op op; 17.392 + op.cmd = MMUEXT_NEW_BASEPTR; 17.393 + op.mfn = pfn_to_mfn(ptr >> PAGE_SHIFT); 17.394 + BUG_ON(HYPERVISOR_mmuext_op(&op, 1, NULL, DOMID_SELF) < 0); 17.395 } 17.396 17.397 void xen_new_user_pt(unsigned long ptr) 17.398 { 17.399 - int cpu = smp_processor_id(); 17.400 - int idx; 17.401 - unsigned long flags; 17.402 - spin_lock_irqsave(&update_lock, flags); 17.403 - idx = per_cpu(mmu_update_queue_idx, cpu); 17.404 - per_cpu(update_queue[idx], cpu).ptr = phys_to_machine(ptr); 17.405 - per_cpu(update_queue[idx], cpu).ptr |= MMU_EXTENDED_COMMAND; 17.406 - per_cpu(update_queue[idx], cpu).val = MMUEXT_NEW_USER_BASEPTR; 17.407 - increment_index_and_flush(); 17.408 - spin_unlock_irqrestore(&update_lock, flags); 17.409 + struct mmuext_op op; 17.410 + op.cmd = MMUEXT_NEW_USER_BASEPTR; 17.411 + op.mfn = pfn_to_mfn(ptr >> PAGE_SHIFT); 17.412 + BUG_ON(HYPERVISOR_mmuext_op(&op, 1, NULL, DOMID_SELF) < 0); 17.413 } 17.414 17.415 void xen_tlb_flush(void) 17.416 { 17.417 - int cpu = smp_processor_id(); 17.418 - int idx; 17.419 - unsigned long flags; 17.420 - spin_lock_irqsave(&update_lock, flags); 17.421 - idx = per_cpu(mmu_update_queue_idx, cpu); 17.422 - per_cpu(update_queue[idx], cpu).ptr = MMU_EXTENDED_COMMAND; 17.423 - per_cpu(update_queue[idx], cpu).val = MMUEXT_TLB_FLUSH; 17.424 - increment_index_and_flush(); 17.425 - spin_unlock_irqrestore(&update_lock, flags); 17.426 + struct mmuext_op op; 17.427 + op.cmd = MMUEXT_TLB_FLUSH_LOCAL; 17.428 + BUG_ON(HYPERVISOR_mmuext_op(&op, 1, NULL, DOMID_SELF) < 0); 17.429 } 17.430 17.431 void xen_invlpg(unsigned long ptr) 17.432 { 17.433 - int cpu = smp_processor_id(); 17.434 - int idx; 17.435 - unsigned long flags; 17.436 - spin_lock_irqsave(&update_lock, flags); 17.437 - idx = per_cpu(mmu_update_queue_idx, cpu); 17.438 - per_cpu(update_queue[idx], cpu).ptr = MMU_EXTENDED_COMMAND; 17.439 - per_cpu(update_queue[idx], cpu).ptr |= ptr & PAGE_MASK; 17.440 - per_cpu(update_queue[idx], cpu).val = MMUEXT_INVLPG; 17.441 - increment_index_and_flush(); 17.442 - spin_unlock_irqrestore(&update_lock, flags); 17.443 + struct mmuext_op op; 17.444 + op.cmd = MMUEXT_INVLPG_LOCAL; 17.445 + op.linear_addr = ptr & PAGE_MASK; 17.446 + BUG_ON(HYPERVISOR_mmuext_op(&op, 1, NULL, DOMID_SELF) < 0); 17.447 +} 17.448 + 17.449 +#ifdef CONFIG_SMP 17.450 +void xen_tlb_flush_all(void) 17.451 +{ 17.452 + struct mmuext_op op; 17.453 + op.cmd = MMUEXT_TLB_FLUSH_ALL; 17.454 + BUG_ON(HYPERVISOR_mmuext_op(&op, 1, NULL, DOMID_SELF) < 0); 17.455 } 17.456 17.457 +void xen_tlb_flush_mask(cpumask_t mask) 17.458 +{ 17.459 + struct mmuext_op op; 17.460 + op.cmd = MMUEXT_TLB_FLUSH_MULTI; 17.461 + op.cpuset = mask.bits[0]; 17.462 + BUG_ON(HYPERVISOR_mmuext_op(&op, 1, NULL, DOMID_SELF) < 0); 17.463 +} 17.464 + 17.465 +void xen_invlpg_all(unsigned long ptr) 17.466 +{ 17.467 + struct mmuext_op op; 17.468 + op.cmd = MMUEXT_INVLPG_ALL; 17.469 + op.linear_addr = ptr & PAGE_MASK; 17.470 + BUG_ON(HYPERVISOR_mmuext_op(&op, 1, NULL, DOMID_SELF) < 0); 17.471 +} 17.472 + 17.473 +void xen_invlpg_mask(cpumask_t mask, unsigned long ptr) 17.474 +{ 17.475 + struct mmuext_op op; 17.476 + op.cmd = MMUEXT_INVLPG_MULTI; 17.477 + op.cpuset = mask.bits[0]; 17.478 + op.linear_addr = ptr & PAGE_MASK; 17.479 + BUG_ON(HYPERVISOR_mmuext_op(&op, 1, NULL, DOMID_SELF) < 0); 17.480 +} 17.481 +#endif 17.482 + 17.483 void xen_pgd_pin(unsigned long ptr) 17.484 { 17.485 - int cpu = smp_processor_id(); 17.486 - int idx; 17.487 - unsigned long flags; 17.488 - spin_lock_irqsave(&update_lock, flags); 17.489 - idx = per_cpu(mmu_update_queue_idx, cpu); 17.490 - per_cpu(update_queue[idx], cpu).ptr = phys_to_machine(ptr); 17.491 - per_cpu(update_queue[idx], cpu).ptr |= MMU_EXTENDED_COMMAND; 17.492 - per_cpu(update_queue[idx], cpu).val = MMUEXT_PIN_L4_TABLE; 17.493 - increment_index_and_flush(); 17.494 - spin_unlock_irqrestore(&update_lock, flags); 17.495 + struct mmuext_op op; 17.496 + op.cmd = MMUEXT_PIN_L4_TABLE; 17.497 + op.mfn = pfn_to_mfn(ptr >> PAGE_SHIFT); 17.498 + BUG_ON(HYPERVISOR_mmuext_op(&op, 1, NULL, DOMID_SELF) < 0); 17.499 } 17.500 17.501 void xen_pgd_unpin(unsigned long ptr) 17.502 { 17.503 - int cpu = smp_processor_id(); 17.504 - int idx; 17.505 - unsigned long flags; 17.506 - spin_lock_irqsave(&update_lock, flags); 17.507 - idx = per_cpu(mmu_update_queue_idx, cpu); 17.508 - per_cpu(update_queue[idx], cpu).ptr = phys_to_machine(ptr); 17.509 - per_cpu(update_queue[idx], cpu).ptr |= MMU_EXTENDED_COMMAND; 17.510 - per_cpu(update_queue[idx], cpu).val = MMUEXT_UNPIN_TABLE; 17.511 - increment_index_and_flush(); 17.512 - spin_unlock_irqrestore(&update_lock, flags); 17.513 + struct mmuext_op op; 17.514 + op.cmd = MMUEXT_UNPIN_TABLE; 17.515 + op.mfn = pfn_to_mfn(ptr >> PAGE_SHIFT); 17.516 + BUG_ON(HYPERVISOR_mmuext_op(&op, 1, NULL, DOMID_SELF) < 0); 17.517 } 17.518 17.519 void xen_pud_pin(unsigned long ptr) 17.520 { 17.521 - int cpu = smp_processor_id(); 17.522 - int idx; 17.523 - unsigned long flags; 17.524 - spin_lock_irqsave(&update_lock, flags); 17.525 - idx = per_cpu(mmu_update_queue_idx, cpu); 17.526 - per_cpu(update_queue[idx], cpu).ptr = phys_to_machine(ptr); 17.527 - per_cpu(update_queue[idx], cpu).ptr |= MMU_EXTENDED_COMMAND; 17.528 - per_cpu(update_queue[idx], cpu).val = MMUEXT_PIN_L3_TABLE; 17.529 - increment_index_and_flush(); 17.530 - spin_unlock_irqrestore(&update_lock, flags); 17.531 + struct mmuext_op op; 17.532 + op.cmd = MMUEXT_PIN_L3_TABLE; 17.533 + op.mfn = pfn_to_mfn(ptr >> PAGE_SHIFT); 17.534 + BUG_ON(HYPERVISOR_mmuext_op(&op, 1, NULL, DOMID_SELF) < 0); 17.535 } 17.536 17.537 void xen_pud_unpin(unsigned long ptr) 17.538 { 17.539 - int cpu = smp_processor_id(); 17.540 - int idx; 17.541 - unsigned long flags; 17.542 - spin_lock_irqsave(&update_lock, flags); 17.543 - idx = per_cpu(mmu_update_queue_idx, cpu); 17.544 - per_cpu(update_queue[idx], cpu).ptr = phys_to_machine(ptr); 17.545 - per_cpu(update_queue[idx], cpu).ptr |= MMU_EXTENDED_COMMAND; 17.546 - per_cpu(update_queue[idx], cpu).val = MMUEXT_UNPIN_TABLE; 17.547 - increment_index_and_flush(); 17.548 - spin_unlock_irqrestore(&update_lock, flags); 17.549 + struct mmuext_op op; 17.550 + op.cmd = MMUEXT_UNPIN_TABLE; 17.551 + op.mfn = pfn_to_mfn(ptr >> PAGE_SHIFT); 17.552 + BUG_ON(HYPERVISOR_mmuext_op(&op, 1, NULL, DOMID_SELF) < 0); 17.553 } 17.554 17.555 void xen_pmd_pin(unsigned long ptr) 17.556 { 17.557 - int cpu = smp_processor_id(); 17.558 - int idx; 17.559 - unsigned long flags; 17.560 - spin_lock_irqsave(&update_lock, flags); 17.561 - idx = per_cpu(mmu_update_queue_idx, cpu); 17.562 - per_cpu(update_queue[idx], cpu).ptr = phys_to_machine(ptr); 17.563 - per_cpu(update_queue[idx], cpu).ptr |= MMU_EXTENDED_COMMAND; 17.564 - per_cpu(update_queue[idx], cpu).val = MMUEXT_PIN_L2_TABLE; 17.565 - increment_index_and_flush(); 17.566 - spin_unlock_irqrestore(&update_lock, flags); 17.567 + struct mmuext_op op; 17.568 + op.cmd = MMUEXT_PIN_L2_TABLE; 17.569 + op.mfn = pfn_to_mfn(ptr >> PAGE_SHIFT); 17.570 + BUG_ON(HYPERVISOR_mmuext_op(&op, 1, NULL, DOMID_SELF) < 0); 17.571 } 17.572 17.573 void xen_pmd_unpin(unsigned long ptr) 17.574 { 17.575 - int cpu = smp_processor_id(); 17.576 - int idx; 17.577 - unsigned long flags; 17.578 - spin_lock_irqsave(&update_lock, flags); 17.579 - idx = per_cpu(mmu_update_queue_idx, cpu); 17.580 - per_cpu(update_queue[idx], cpu).ptr = phys_to_machine(ptr); 17.581 - per_cpu(update_queue[idx], cpu).ptr |= MMU_EXTENDED_COMMAND; 17.582 - per_cpu(update_queue[idx], cpu).val = MMUEXT_UNPIN_TABLE; 17.583 - increment_index_and_flush(); 17.584 - spin_unlock_irqrestore(&update_lock, flags); 17.585 + struct mmuext_op op; 17.586 + op.cmd = MMUEXT_UNPIN_TABLE; 17.587 + op.mfn = pfn_to_mfn(ptr >> PAGE_SHIFT); 17.588 + BUG_ON(HYPERVISOR_mmuext_op(&op, 1, NULL, DOMID_SELF) < 0); 17.589 } 17.590 17.591 void xen_pte_pin(unsigned long ptr) 17.592 { 17.593 - int cpu = smp_processor_id(); 17.594 - int idx; 17.595 - unsigned long flags; 17.596 - spin_lock_irqsave(&update_lock, flags); 17.597 - idx = per_cpu(mmu_update_queue_idx, cpu); 17.598 - per_cpu(update_queue[idx], cpu).ptr = phys_to_machine(ptr); 17.599 - per_cpu(update_queue[idx], cpu).ptr |= MMU_EXTENDED_COMMAND; 17.600 - per_cpu(update_queue[idx], cpu).val = MMUEXT_PIN_L1_TABLE; 17.601 - increment_index_and_flush(); 17.602 - spin_unlock_irqrestore(&update_lock, flags); 17.603 + struct mmuext_op op; 17.604 + op.cmd = MMUEXT_PIN_L1_TABLE; 17.605 + op.mfn = pfn_to_mfn(ptr >> PAGE_SHIFT); 17.606 + BUG_ON(HYPERVISOR_mmuext_op(&op, 1, NULL, DOMID_SELF) < 0); 17.607 + 17.608 } 17.609 17.610 void xen_pte_unpin(unsigned long ptr) 17.611 { 17.612 - int cpu = smp_processor_id(); 17.613 - int idx; 17.614 - unsigned long flags; 17.615 - spin_lock_irqsave(&update_lock, flags); 17.616 - idx = per_cpu(mmu_update_queue_idx, cpu); 17.617 - per_cpu(update_queue[idx], cpu).ptr = phys_to_machine(ptr); 17.618 - per_cpu(update_queue[idx], cpu).ptr |= MMU_EXTENDED_COMMAND; 17.619 - per_cpu(update_queue[idx], cpu).val = MMUEXT_UNPIN_TABLE; 17.620 - increment_index_and_flush(); 17.621 - spin_unlock_irqrestore(&update_lock, flags); 17.622 + struct mmuext_op op; 17.623 + op.cmd = MMUEXT_UNPIN_TABLE; 17.624 + op.mfn = pfn_to_mfn(ptr >> PAGE_SHIFT); 17.625 + BUG_ON(HYPERVISOR_mmuext_op(&op, 1, NULL, DOMID_SELF) < 0); 17.626 } 17.627 17.628 void xen_set_ldt(unsigned long ptr, unsigned long len) 17.629 { 17.630 - int cpu = smp_processor_id(); 17.631 - int idx; 17.632 - unsigned long flags; 17.633 - spin_lock_irqsave(&update_lock, flags); 17.634 - idx = per_cpu(mmu_update_queue_idx, cpu); 17.635 - per_cpu(update_queue[idx], cpu).ptr = MMU_EXTENDED_COMMAND | ptr; 17.636 - per_cpu(update_queue[idx], cpu).val = MMUEXT_SET_LDT | (len << MMUEXT_CMD_SHIFT); 17.637 - increment_index_and_flush(); 17.638 - spin_unlock_irqrestore(&update_lock, flags); 17.639 + struct mmuext_op op; 17.640 + op.cmd = MMUEXT_SET_LDT; 17.641 + op.linear_addr = ptr; 17.642 + op.nr_ents = len; 17.643 + BUG_ON(HYPERVISOR_mmuext_op(&op, 1, NULL, DOMID_SELF) < 0); 17.644 } 17.645 17.646 void xen_machphys_update(unsigned long mfn, unsigned long pfn) 17.647 { 17.648 - int cpu = smp_processor_id(); 17.649 - int idx; 17.650 - unsigned long flags; 17.651 - spin_lock_irqsave(&update_lock, flags); 17.652 - idx = per_cpu(mmu_update_queue_idx, cpu); 17.653 - per_cpu(update_queue[idx], cpu).ptr = (mfn << PAGE_SHIFT) | MMU_MACHPHYS_UPDATE; 17.654 - per_cpu(update_queue[idx], cpu).val = pfn; 17.655 - increment_index_and_flush(); 17.656 - spin_unlock_irqrestore(&update_lock, flags); 17.657 + mmu_update_t u; 17.658 + u.ptr = (mfn << PAGE_SHIFT) | MMU_MACHPHYS_UPDATE; 17.659 + u.val = pfn; 17.660 + BUG_ON(HYPERVISOR_mmu_update(&u, 1, NULL, DOMID_SELF) < 0); 17.661 } 17.662 17.663 #ifdef CONFIG_XEN_PHYSDEV_ACCESS 17.664 - 17.665 unsigned long allocate_empty_lowmem_region(unsigned long pages) 17.666 { 17.667 pgd_t *pgd; 17.668 @@ -599,8 +240,6 @@ unsigned long allocate_empty_lowmem_regi 17.669 if ( vstart == 0 ) 17.670 return 0UL; 17.671 17.672 - printk("vstart = %lx, order = %d\n", vstart, order); 17.673 - 17.674 scrub_pages(vstart, 1 << order); 17.675 17.676 pfn_array = vmalloc((1<<order) * sizeof(*pfn_array)); 17.677 @@ -614,12 +253,12 @@ unsigned long allocate_empty_lowmem_regi 17.678 pmd = pmd_offset(pud, (vstart + (i*PAGE_SIZE))); 17.679 pte = pte_offset_kernel(pmd, (vstart + (i*PAGE_SIZE))); 17.680 pfn_array[i] = pte->pte >> PAGE_SHIFT; 17.681 - queue_l1_entry_update(pte, 0); 17.682 + xen_l1_entry_update(pte, 0); 17.683 phys_to_machine_mapping[__pa(vstart)>>PAGE_SHIFT] = (u32)INVALID_P2M_ENTRY; 17.684 } 17.685 17.686 /* Flush updates through and flush the TLB. */ 17.687 - xen_tlb_flush(); 17.688 + flush_tlb_all(); 17.689 17.690 balloon_put_pages(pfn_array, 1 << order); 17.691
18.1 --- a/linux-2.6.11-xen-sparse/arch/xen/x86_64/mm/init.c Thu Apr 07 08:19:23 2005 +0000 18.2 +++ b/linux-2.6.11-xen-sparse/arch/xen/x86_64/mm/init.c Fri Apr 08 17:24:38 2005 +0000 18.3 @@ -122,7 +122,7 @@ void make_page_readonly(void *va) 18.4 pud = pud_offset(pgd, addr); 18.5 pmd = pmd_offset(pud, addr); 18.6 pte = pte_offset_kernel(pmd, addr); 18.7 - queue_l1_entry_update(pte, (*(unsigned long*)pte)&~_PAGE_RW); 18.8 + xen_l1_entry_update(pte, (*(unsigned long*)pte)&~_PAGE_RW); 18.9 __flush_tlb_one(addr); 18.10 } 18.11 18.12 @@ -140,7 +140,7 @@ void make_page_writable(void *va) 18.13 pud = pud_offset(pgd, addr); 18.14 pmd = pmd_offset(pud, addr); 18.15 pte = pte_offset_kernel(pmd, addr); 18.16 - queue_l1_entry_update(pte, (*(unsigned long*)pte)|_PAGE_RW); 18.17 + xen_l1_entry_update(pte, (*(unsigned long*)pte)|_PAGE_RW); 18.18 __flush_tlb_one(addr); 18.19 } 18.20
19.1 --- a/linux-2.6.11-xen-sparse/arch/xen/x86_64/mm/ioremap.c Thu Apr 07 08:19:23 2005 +0000 19.2 +++ b/linux-2.6.11-xen-sparse/arch/xen/x86_64/mm/ioremap.c Fri Apr 08 17:24:38 2005 +0000 19.3 @@ -417,15 +417,7 @@ int direct_remap_area_pages(struct mm_st 19.4 int i; 19.5 unsigned long start_address; 19.6 #define MAX_DIRECTMAP_MMU_QUEUE 130 19.7 - mmu_update_t u[MAX_DIRECTMAP_MMU_QUEUE], *w, *v; 19.8 - 19.9 - v = w = &u[0]; 19.10 - if (domid != DOMID_LOCAL) { 19.11 - u[0].ptr = MMU_EXTENDED_COMMAND; 19.12 - u[0].val = MMUEXT_SET_FOREIGNDOM; 19.13 - u[0].val |= (unsigned long)domid << 16; 19.14 - v = w = &u[1]; 19.15 - } 19.16 + mmu_update_t u[MAX_DIRECTMAP_MMU_QUEUE], *v = u; 19.17 19.18 start_address = address; 19.19 19.20 @@ -437,11 +429,11 @@ int direct_remap_area_pages(struct mm_st 19.21 __direct_remap_area_pages(mm, 19.22 start_address, 19.23 address-start_address, 19.24 - w); 19.25 + u); 19.26 19.27 - if (HYPERVISOR_mmu_update(u, v - u, NULL) < 0) 19.28 + if (HYPERVISOR_mmu_update(u, v - u, NULL, domid) < 0) 19.29 return -EFAULT; 19.30 - v = w; 19.31 + v = u; 19.32 start_address = address; 19.33 } 19.34 19.35 @@ -456,13 +448,13 @@ int direct_remap_area_pages(struct mm_st 19.36 v++; 19.37 } 19.38 19.39 - if (v != w) { 19.40 + if (v != u) { 19.41 /* get the ptep's filled in */ 19.42 __direct_remap_area_pages(mm, 19.43 start_address, 19.44 address-start_address, 19.45 - w); 19.46 - if (unlikely(HYPERVISOR_mmu_update(u, v - u, NULL) < 0)) 19.47 + u); 19.48 + if (unlikely(HYPERVISOR_mmu_update(u, v - u, NULL, domid) < 0)) 19.49 return -EFAULT; 19.50 } 19.51
20.1 --- a/linux-2.6.11-xen-sparse/arch/xen/x86_64/mm/pageattr.c Thu Apr 07 08:19:23 2005 +0000 20.2 +++ b/linux-2.6.11-xen-sparse/arch/xen/x86_64/mm/pageattr.c Fri Apr 08 17:24:38 2005 +0000 20.3 @@ -23,7 +23,6 @@ void pte_free(struct page *pte) 20.4 20.5 xen_pte_unpin(__pa(ptep)); 20.6 make_page_writable(ptep); 20.7 - flush_page_update_queue(); 20.8 __free_page(pte); 20.9 } 20.10
21.1 --- a/linux-2.6.11-xen-sparse/drivers/xen/privcmd/privcmd.c Thu Apr 07 08:19:23 2005 +0000 21.2 +++ b/linux-2.6.11-xen-sparse/drivers/xen/privcmd/privcmd.c Fri Apr 08 17:24:38 2005 +0000 21.3 @@ -49,6 +49,7 @@ static int privcmd_ioctl(struct inode *i 21.4 if ( copy_from_user(&hypercall, (void *)data, sizeof(hypercall)) ) 21.5 return -EFAULT; 21.6 21.7 +#if defined(__i386__) 21.8 __asm__ __volatile__ ( 21.9 "pushl %%ebx; pushl %%ecx; pushl %%edx; pushl %%esi; pushl %%edi; " 21.10 "movl 4(%%eax),%%ebx ;" 21.11 @@ -60,7 +61,18 @@ static int privcmd_ioctl(struct inode *i 21.12 TRAP_INSTR "; " 21.13 "popl %%edi; popl %%esi; popl %%edx; popl %%ecx; popl %%ebx" 21.14 : "=a" (ret) : "0" (&hypercall) : "memory" ); 21.15 - 21.16 +#elif defined (__x86_64__) 21.17 + __asm__ __volatile__ ( 21.18 + "movq %5,%%r10; movq %6,%%r8;" TRAP_INSTR 21.19 + : "=a" (ret) 21.20 + : "a" ((unsigned long)hypercall.op), 21.21 + "D" ((unsigned long)hypercall.arg[0]), 21.22 + "S" ((unsigned long)hypercall.arg[1]), 21.23 + "d" ((unsigned long)hypercall.arg[2]), 21.24 + "g" ((unsigned long)hypercall.arg[3]), 21.25 + "g" ((unsigned long)hypercall.arg[4]) 21.26 + : "r11","rcx","r8","r10","memory"); 21.27 +#endif 21.28 } 21.29 break; 21.30
22.1 --- /dev/null Thu Jan 01 00:00:00 1970 +0000 22.2 +++ b/linux-2.6.11-xen-sparse/include/asm-xen/asm-i386/hypercall.h Fri Apr 08 17:24:38 2005 +0000 22.3 @@ -0,0 +1,536 @@ 22.4 +/****************************************************************************** 22.5 + * hypercall.h 22.6 + * 22.7 + * Linux-specific hypervisor handling. 22.8 + * 22.9 + * Copyright (c) 2002-2004, K A Fraser 22.10 + * 22.11 + * This file may be distributed separately from the Linux kernel, or 22.12 + * incorporated into other software packages, subject to the following license: 22.13 + * 22.14 + * Permission is hereby granted, free of charge, to any person obtaining a copy 22.15 + * of this source file (the "Software"), to deal in the Software without 22.16 + * restriction, including without limitation the rights to use, copy, modify, 22.17 + * merge, publish, distribute, sublicense, and/or sell copies of the Software, 22.18 + * and to permit persons to whom the Software is furnished to do so, subject to 22.19 + * the following conditions: 22.20 + * 22.21 + * The above copyright notice and this permission notice shall be included in 22.22 + * all copies or substantial portions of the Software. 22.23 + * 22.24 + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 22.25 + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 22.26 + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 22.27 + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 22.28 + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING 22.29 + * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS 22.30 + * IN THE SOFTWARE. 22.31 + */ 22.32 + 22.33 +#ifndef __HYPERCALL_H__ 22.34 +#define __HYPERCALL_H__ 22.35 +#include <asm-xen/xen-public/xen.h> 22.36 + 22.37 +/* 22.38 + * Assembler stubs for hyper-calls. 22.39 + */ 22.40 + 22.41 +static inline int 22.42 +HYPERVISOR_set_trap_table( 22.43 + trap_info_t *table) 22.44 +{ 22.45 + int ret; 22.46 + unsigned long ignore; 22.47 + 22.48 + __asm__ __volatile__ ( 22.49 + TRAP_INSTR 22.50 + : "=a" (ret), "=b" (ignore) 22.51 + : "0" (__HYPERVISOR_set_trap_table), "1" (table) 22.52 + : "memory" ); 22.53 + 22.54 + return ret; 22.55 +} 22.56 + 22.57 +static inline int 22.58 +HYPERVISOR_mmu_update( 22.59 + mmu_update_t *req, int count, int *success_count, domid_t domid) 22.60 +{ 22.61 + int ret; 22.62 + unsigned long ign1, ign2, ign3, ign4; 22.63 + 22.64 + __asm__ __volatile__ ( 22.65 + TRAP_INSTR 22.66 + : "=a" (ret), "=b" (ign1), "=c" (ign2), "=d" (ign3), "=S" (ign4) 22.67 + : "0" (__HYPERVISOR_mmu_update), "1" (req), "2" (count), 22.68 + "3" (success_count), "4" (domid) 22.69 + : "memory" ); 22.70 + 22.71 + return ret; 22.72 +} 22.73 + 22.74 +static inline int 22.75 +HYPERVISOR_mmuext_op( 22.76 + struct mmuext_op *op, int count, int *success_count, domid_t domid) 22.77 +{ 22.78 + int ret; 22.79 + unsigned long ign1, ign2, ign3, ign4; 22.80 + 22.81 + __asm__ __volatile__ ( 22.82 + TRAP_INSTR 22.83 + : "=a" (ret), "=b" (ign1), "=c" (ign2), "=d" (ign3), "=S" (ign4) 22.84 + : "0" (__HYPERVISOR_mmuext_op), "1" (op), "2" (count), 22.85 + "3" (success_count), "4" (domid) 22.86 + : "memory" ); 22.87 + 22.88 + return ret; 22.89 +} 22.90 + 22.91 +static inline int 22.92 +HYPERVISOR_set_gdt( 22.93 + unsigned long *frame_list, int entries) 22.94 +{ 22.95 + int ret; 22.96 + unsigned long ign1, ign2; 22.97 + 22.98 + __asm__ __volatile__ ( 22.99 + TRAP_INSTR 22.100 + : "=a" (ret), "=b" (ign1), "=c" (ign2) 22.101 + : "0" (__HYPERVISOR_set_gdt), "1" (frame_list), "2" (entries) 22.102 + : "memory" ); 22.103 + 22.104 + 22.105 + return ret; 22.106 +} 22.107 + 22.108 +static inline int 22.109 +HYPERVISOR_stack_switch( 22.110 + unsigned long ss, unsigned long esp) 22.111 +{ 22.112 + int ret; 22.113 + unsigned long ign1, ign2; 22.114 + 22.115 + __asm__ __volatile__ ( 22.116 + TRAP_INSTR 22.117 + : "=a" (ret), "=b" (ign1), "=c" (ign2) 22.118 + : "0" (__HYPERVISOR_stack_switch), "1" (ss), "2" (esp) 22.119 + : "memory" ); 22.120 + 22.121 + return ret; 22.122 +} 22.123 + 22.124 +static inline int 22.125 +HYPERVISOR_set_callbacks( 22.126 + unsigned long event_selector, unsigned long event_address, 22.127 + unsigned long failsafe_selector, unsigned long failsafe_address) 22.128 +{ 22.129 + int ret; 22.130 + unsigned long ign1, ign2, ign3, ign4; 22.131 + 22.132 + __asm__ __volatile__ ( 22.133 + TRAP_INSTR 22.134 + : "=a" (ret), "=b" (ign1), "=c" (ign2), "=d" (ign3), "=S" (ign4) 22.135 + : "0" (__HYPERVISOR_set_callbacks), "1" (event_selector), 22.136 + "2" (event_address), "3" (failsafe_selector), "4" (failsafe_address) 22.137 + : "memory" ); 22.138 + 22.139 + return ret; 22.140 +} 22.141 + 22.142 +static inline int 22.143 +HYPERVISOR_fpu_taskswitch( 22.144 + int set) 22.145 +{ 22.146 + int ret; 22.147 + unsigned long ign; 22.148 + 22.149 + __asm__ __volatile__ ( 22.150 + TRAP_INSTR 22.151 + : "=a" (ret), "=b" (ign) 22.152 + : "0" (__HYPERVISOR_fpu_taskswitch), "1" (set) 22.153 + : "memory" ); 22.154 + 22.155 + return ret; 22.156 +} 22.157 + 22.158 +static inline int 22.159 +HYPERVISOR_yield( 22.160 + void) 22.161 +{ 22.162 + int ret; 22.163 + unsigned long ign; 22.164 + 22.165 + __asm__ __volatile__ ( 22.166 + TRAP_INSTR 22.167 + : "=a" (ret), "=b" (ign) 22.168 + : "0" (__HYPERVISOR_sched_op), "1" (SCHEDOP_yield) 22.169 + : "memory" ); 22.170 + 22.171 + return ret; 22.172 +} 22.173 + 22.174 +static inline int 22.175 +HYPERVISOR_block( 22.176 + void) 22.177 +{ 22.178 + int ret; 22.179 + unsigned long ign1; 22.180 + __asm__ __volatile__ ( 22.181 + TRAP_INSTR 22.182 + : "=a" (ret), "=b" (ign1) 22.183 + : "0" (__HYPERVISOR_sched_op), "1" (SCHEDOP_block) 22.184 + : "memory" ); 22.185 + 22.186 + return ret; 22.187 +} 22.188 + 22.189 +static inline int 22.190 +HYPERVISOR_shutdown( 22.191 + void) 22.192 +{ 22.193 + int ret; 22.194 + unsigned long ign1; 22.195 + __asm__ __volatile__ ( 22.196 + TRAP_INSTR 22.197 + : "=a" (ret), "=b" (ign1) 22.198 + : "0" (__HYPERVISOR_sched_op), 22.199 + "1" (SCHEDOP_shutdown | (SHUTDOWN_poweroff << SCHEDOP_reasonshift)) 22.200 + : "memory" ); 22.201 + 22.202 + return ret; 22.203 +} 22.204 + 22.205 +static inline int 22.206 +HYPERVISOR_reboot( 22.207 + void) 22.208 +{ 22.209 + int ret; 22.210 + unsigned long ign1; 22.211 + __asm__ __volatile__ ( 22.212 + TRAP_INSTR 22.213 + : "=a" (ret), "=b" (ign1) 22.214 + : "0" (__HYPERVISOR_sched_op), 22.215 + "1" (SCHEDOP_shutdown | (SHUTDOWN_reboot << SCHEDOP_reasonshift)) 22.216 + : "memory" ); 22.217 + 22.218 + return ret; 22.219 +} 22.220 + 22.221 +static inline int 22.222 +HYPERVISOR_suspend( 22.223 + unsigned long srec) 22.224 +{ 22.225 + int ret; 22.226 + unsigned long ign1, ign2; 22.227 + 22.228 + /* NB. On suspend, control software expects a suspend record in %esi. */ 22.229 + __asm__ __volatile__ ( 22.230 + TRAP_INSTR 22.231 + : "=a" (ret), "=b" (ign1), "=S" (ign2) 22.232 + : "0" (__HYPERVISOR_sched_op), 22.233 + "b" (SCHEDOP_shutdown | (SHUTDOWN_suspend << SCHEDOP_reasonshift)), 22.234 + "S" (srec) : "memory"); 22.235 + 22.236 + return ret; 22.237 +} 22.238 + 22.239 +static inline int 22.240 +HYPERVISOR_crash( 22.241 + void) 22.242 +{ 22.243 + int ret; 22.244 + unsigned long ign1; 22.245 + __asm__ __volatile__ ( 22.246 + TRAP_INSTR 22.247 + : "=a" (ret), "=b" (ign1) 22.248 + : "0" (__HYPERVISOR_sched_op), 22.249 + "1" (SCHEDOP_shutdown | (SHUTDOWN_crash << SCHEDOP_reasonshift)) 22.250 + : "memory" ); 22.251 + 22.252 + return ret; 22.253 +} 22.254 + 22.255 +static inline long 22.256 +HYPERVISOR_set_timer_op( 22.257 + u64 timeout) 22.258 +{ 22.259 + int ret; 22.260 + unsigned long timeout_hi = (unsigned long)(timeout>>32); 22.261 + unsigned long timeout_lo = (unsigned long)timeout; 22.262 + unsigned long ign1, ign2; 22.263 + 22.264 + __asm__ __volatile__ ( 22.265 + TRAP_INSTR 22.266 + : "=a" (ret), "=b" (ign1), "=c" (ign2) 22.267 + : "0" (__HYPERVISOR_set_timer_op), "b" (timeout_lo), "c" (timeout_hi) 22.268 + : "memory"); 22.269 + 22.270 + return ret; 22.271 +} 22.272 + 22.273 +static inline int 22.274 +HYPERVISOR_dom0_op( 22.275 + dom0_op_t *dom0_op) 22.276 +{ 22.277 + int ret; 22.278 + unsigned long ign1; 22.279 + 22.280 + dom0_op->interface_version = DOM0_INTERFACE_VERSION; 22.281 + __asm__ __volatile__ ( 22.282 + TRAP_INSTR 22.283 + : "=a" (ret), "=b" (ign1) 22.284 + : "0" (__HYPERVISOR_dom0_op), "1" (dom0_op) 22.285 + : "memory"); 22.286 + 22.287 + return ret; 22.288 +} 22.289 + 22.290 +static inline int 22.291 +HYPERVISOR_set_debugreg( 22.292 + int reg, unsigned long value) 22.293 +{ 22.294 + int ret; 22.295 + unsigned long ign1, ign2; 22.296 + __asm__ __volatile__ ( 22.297 + TRAP_INSTR 22.298 + : "=a" (ret), "=b" (ign1), "=c" (ign2) 22.299 + : "0" (__HYPERVISOR_set_debugreg), "1" (reg), "2" (value) 22.300 + : "memory" ); 22.301 + 22.302 + return ret; 22.303 +} 22.304 + 22.305 +static inline unsigned long 22.306 +HYPERVISOR_get_debugreg( 22.307 + int reg) 22.308 +{ 22.309 + unsigned long ret; 22.310 + unsigned long ign; 22.311 + __asm__ __volatile__ ( 22.312 + TRAP_INSTR 22.313 + : "=a" (ret), "=b" (ign) 22.314 + : "0" (__HYPERVISOR_get_debugreg), "1" (reg) 22.315 + : "memory" ); 22.316 + 22.317 + return ret; 22.318 +} 22.319 + 22.320 +static inline int 22.321 +HYPERVISOR_update_descriptor( 22.322 + unsigned long ma, unsigned long word1, unsigned long word2) 22.323 +{ 22.324 + int ret; 22.325 + unsigned long ign1, ign2, ign3; 22.326 + 22.327 + __asm__ __volatile__ ( 22.328 + TRAP_INSTR 22.329 + : "=a" (ret), "=b" (ign1), "=c" (ign2), "=d" (ign3) 22.330 + : "0" (__HYPERVISOR_update_descriptor), "1" (ma), "2" (word1), 22.331 + "3" (word2) 22.332 + : "memory" ); 22.333 + 22.334 + return ret; 22.335 +} 22.336 + 22.337 +static inline int 22.338 +HYPERVISOR_set_fast_trap( 22.339 + int idx) 22.340 +{ 22.341 + int ret; 22.342 + unsigned long ign; 22.343 + 22.344 + __asm__ __volatile__ ( 22.345 + TRAP_INSTR 22.346 + : "=a" (ret), "=b" (ign) 22.347 + : "0" (__HYPERVISOR_set_fast_trap), "1" (idx) 22.348 + : "memory" ); 22.349 + 22.350 + return ret; 22.351 +} 22.352 + 22.353 +static inline int 22.354 +HYPERVISOR_dom_mem_op( 22.355 + unsigned int op, unsigned long *extent_list, 22.356 + unsigned long nr_extents, unsigned int extent_order) 22.357 +{ 22.358 + int ret; 22.359 + unsigned long ign1, ign2, ign3, ign4, ign5; 22.360 + 22.361 + __asm__ __volatile__ ( 22.362 + TRAP_INSTR 22.363 + : "=a" (ret), "=b" (ign1), "=c" (ign2), "=d" (ign3), "=S" (ign4), 22.364 + "=D" (ign5) 22.365 + : "0" (__HYPERVISOR_dom_mem_op), "1" (op), "2" (extent_list), 22.366 + "3" (nr_extents), "4" (extent_order), "5" (DOMID_SELF) 22.367 + : "memory" ); 22.368 + 22.369 + return ret; 22.370 +} 22.371 + 22.372 +static inline int 22.373 +HYPERVISOR_multicall( 22.374 + void *call_list, int nr_calls) 22.375 +{ 22.376 + int ret; 22.377 + unsigned long ign1, ign2; 22.378 + 22.379 + __asm__ __volatile__ ( 22.380 + TRAP_INSTR 22.381 + : "=a" (ret), "=b" (ign1), "=c" (ign2) 22.382 + : "0" (__HYPERVISOR_multicall), "1" (call_list), "2" (nr_calls) 22.383 + : "memory" ); 22.384 + 22.385 + return ret; 22.386 +} 22.387 + 22.388 +static inline int 22.389 +HYPERVISOR_update_va_mapping( 22.390 + unsigned long va, pte_t new_val, unsigned long flags) 22.391 +{ 22.392 + int ret; 22.393 + unsigned long ign1, ign2, ign3; 22.394 + 22.395 + __asm__ __volatile__ ( 22.396 + TRAP_INSTR 22.397 + : "=a" (ret), "=b" (ign1), "=c" (ign2), "=d" (ign3) 22.398 + : "0" (__HYPERVISOR_update_va_mapping), 22.399 + "1" (va), "2" ((new_val).pte_low), "3" (flags) 22.400 + : "memory" ); 22.401 + 22.402 + if ( unlikely(ret < 0) ) 22.403 + { 22.404 + printk(KERN_ALERT "Failed update VA mapping: %08lx, %08lx, %08lx\n", 22.405 + va, (new_val).pte_low, flags); 22.406 + BUG(); 22.407 + } 22.408 + 22.409 + return ret; 22.410 +} 22.411 + 22.412 +static inline int 22.413 +HYPERVISOR_event_channel_op( 22.414 + void *op) 22.415 +{ 22.416 + int ret; 22.417 + unsigned long ignore; 22.418 + __asm__ __volatile__ ( 22.419 + TRAP_INSTR 22.420 + : "=a" (ret), "=b" (ignore) 22.421 + : "0" (__HYPERVISOR_event_channel_op), "1" (op) 22.422 + : "memory" ); 22.423 + 22.424 + return ret; 22.425 +} 22.426 + 22.427 +static inline int 22.428 +HYPERVISOR_xen_version( 22.429 + int cmd) 22.430 +{ 22.431 + int ret; 22.432 + unsigned long ignore; 22.433 + 22.434 + __asm__ __volatile__ ( 22.435 + TRAP_INSTR 22.436 + : "=a" (ret), "=b" (ignore) 22.437 + : "0" (__HYPERVISOR_xen_version), "1" (cmd) 22.438 + : "memory" ); 22.439 + 22.440 + return ret; 22.441 +} 22.442 + 22.443 +static inline int 22.444 +HYPERVISOR_console_io( 22.445 + int cmd, int count, char *str) 22.446 +{ 22.447 + int ret; 22.448 + unsigned long ign1, ign2, ign3; 22.449 + __asm__ __volatile__ ( 22.450 + TRAP_INSTR 22.451 + : "=a" (ret), "=b" (ign1), "=c" (ign2), "=d" (ign3) 22.452 + : "0" (__HYPERVISOR_console_io), "1" (cmd), "2" (count), "3" (str) 22.453 + : "memory" ); 22.454 + 22.455 + return ret; 22.456 +} 22.457 + 22.458 +static inline int 22.459 +HYPERVISOR_physdev_op( 22.460 + void *physdev_op) 22.461 +{ 22.462 + int ret; 22.463 + unsigned long ign; 22.464 + 22.465 + __asm__ __volatile__ ( 22.466 + TRAP_INSTR 22.467 + : "=a" (ret), "=b" (ign) 22.468 + : "0" (__HYPERVISOR_physdev_op), "1" (physdev_op) 22.469 + : "memory" ); 22.470 + 22.471 + return ret; 22.472 +} 22.473 + 22.474 +static inline int 22.475 +HYPERVISOR_grant_table_op( 22.476 + unsigned int cmd, void *uop, unsigned int count) 22.477 +{ 22.478 + int ret; 22.479 + unsigned long ign1, ign2, ign3; 22.480 + 22.481 + __asm__ __volatile__ ( 22.482 + TRAP_INSTR 22.483 + : "=a" (ret), "=b" (ign1), "=c" (ign2), "=d" (ign3) 22.484 + : "0" (__HYPERVISOR_grant_table_op), "1" (cmd), "2" (uop), "3" (count) 22.485 + : "memory" ); 22.486 + 22.487 + return ret; 22.488 +} 22.489 + 22.490 +static inline int 22.491 +HYPERVISOR_update_va_mapping_otherdomain( 22.492 + unsigned long va, pte_t new_val, unsigned long flags, domid_t domid) 22.493 +{ 22.494 + int ret; 22.495 + unsigned long ign1, ign2, ign3, ign4; 22.496 + 22.497 + __asm__ __volatile__ ( 22.498 + TRAP_INSTR 22.499 + : "=a" (ret), "=b" (ign1), "=c" (ign2), "=d" (ign3), "=S" (ign4) 22.500 + : "0" (__HYPERVISOR_update_va_mapping_otherdomain), 22.501 + "1" (va), "2" ((new_val).pte_low), "3" (flags), "4" (domid) : 22.502 + "memory" ); 22.503 + 22.504 + return ret; 22.505 +} 22.506 + 22.507 +static inline int 22.508 +HYPERVISOR_vm_assist( 22.509 + unsigned int cmd, unsigned int type) 22.510 +{ 22.511 + int ret; 22.512 + unsigned long ign1, ign2; 22.513 + 22.514 + __asm__ __volatile__ ( 22.515 + TRAP_INSTR 22.516 + : "=a" (ret), "=b" (ign1), "=c" (ign2) 22.517 + : "0" (__HYPERVISOR_vm_assist), "1" (cmd), "2" (type) 22.518 + : "memory" ); 22.519 + 22.520 + return ret; 22.521 +} 22.522 + 22.523 +static inline int 22.524 +HYPERVISOR_boot_vcpu( 22.525 + unsigned long vcpu, full_execution_context_t *ctxt) 22.526 +{ 22.527 + int ret; 22.528 + unsigned long ign1, ign2; 22.529 + 22.530 + __asm__ __volatile__ ( 22.531 + TRAP_INSTR 22.532 + : "=a" (ret), "=b" (ign1), "=c" (ign2) 22.533 + : "0" (__HYPERVISOR_boot_vcpu), "1" (vcpu), "2" (ctxt) 22.534 + : "memory"); 22.535 + 22.536 + return ret; 22.537 +} 22.538 + 22.539 +#endif /* __HYPERCALL_H__ */
23.1 --- a/linux-2.6.11-xen-sparse/include/asm-xen/asm-x86_64/desc.h Thu Apr 07 08:19:23 2005 +0000 23.2 +++ b/linux-2.6.11-xen-sparse/include/asm-xen/asm-x86_64/desc.h Fri Apr 08 17:24:38 2005 +0000 23.3 @@ -71,7 +71,19 @@ extern struct desc_ptr cpu_gdt_table[NR_ 23.4 23.5 #define load_TR_desc() asm volatile("ltr %w0"::"r" (GDT_ENTRY_TSS*8)) 23.6 #define load_LDT_desc() asm volatile("lldt %w0"::"r" (GDT_ENTRY_LDT*8)) 23.7 -#define clear_LDT() asm volatile("lldt %w0"::"r" (0)) 23.8 + 23.9 +static inline void clear_LDT(void) 23.10 +{ 23.11 + int cpu = get_cpu(); 23.12 + 23.13 + /* 23.14 + * NB. We load the default_ldt for lcall7/27 handling on demand, as 23.15 + * it slows down context switching. Noone uses it anyway. 23.16 + */ 23.17 + cpu = cpu; /* XXX avoid compiler warning */ 23.18 + xen_set_ldt(0UL, 0); 23.19 + put_cpu(); 23.20 +} 23.21 23.22 /* 23.23 * This is the ldt that every process will get unless we need 23.24 @@ -211,7 +223,7 @@ extern inline void load_LDT_nolock (mm_c 23.25 if (likely(!count)) 23.26 segments = NULL; 23.27 23.28 - queue_set_ldt((unsigned long)segments, count); 23.29 + xen_set_ldt((unsigned long)segments, count); 23.30 } 23.31 23.32 static inline void load_LDT(mm_context_t *pc)
24.1 --- a/linux-2.6.11-xen-sparse/include/asm-xen/asm-x86_64/fixmap.h Thu Apr 07 08:19:23 2005 +0000 24.2 +++ b/linux-2.6.11-xen-sparse/include/asm-xen/asm-x86_64/fixmap.h Fri Apr 08 17:24:38 2005 +0000 24.3 @@ -14,6 +14,7 @@ 24.4 #include <linux/config.h> 24.5 #include <linux/kernel.h> 24.6 #include <asm/apicdef.h> 24.7 +#include <asm-xen/gnttab.h> 24.8 #include <asm/page.h> 24.9 #include <asm/vsyscall.h> 24.10 #include <asm/vsyscall32.h> 24.11 @@ -46,7 +47,8 @@ enum fixed_addresses { 24.12 FIX_IO_APIC_BASE_END = FIX_IO_APIC_BASE_0 + MAX_IO_APICS-1, 24.13 #endif 24.14 FIX_SHARED_INFO, 24.15 - FIX_GNTTAB, 24.16 + FIX_GNTTAB_BEGIN, 24.17 + FIX_GNTTAB_END = FIX_GNTTAB_BEGIN + NR_GRANT_FRAMES - 1, 24.18 #ifdef CONFIG_XEN_PHYSDEV_ACCESS 24.19 #define NR_FIX_ISAMAPS 256 24.20 FIX_ISAMAP_END,
25.1 --- a/linux-2.6.11-xen-sparse/include/asm-xen/asm-x86_64/hypercall.h Thu Apr 07 08:19:23 2005 +0000 25.2 +++ b/linux-2.6.11-xen-sparse/include/asm-xen/asm-x86_64/hypercall.h Fri Apr 08 17:24:38 2005 +0000 25.3 @@ -59,16 +59,32 @@ HYPERVISOR_set_trap_table( 25.4 25.5 static inline int 25.6 HYPERVISOR_mmu_update( 25.7 - mmu_update_t *req, int count, int *success_count) 25.8 + mmu_update_t *req, int count, int *success_count, domid_t domid) 25.9 { 25.10 int ret; 25.11 25.12 __asm__ __volatile__ ( 25.13 - TRAP_INSTR 25.14 + "movq %5, %%r10;" TRAP_INSTR 25.15 : "=a" (ret) 25.16 : "0" ((unsigned long)__HYPERVISOR_mmu_update), "D" (req), "S" ((long)count), 25.17 - "d" (success_count) 25.18 - : __syscall_clobber ); 25.19 + "d" (success_count), "g" ((unsigned long)domid) 25.20 + : __syscall_clobber, "r10" ); 25.21 + 25.22 + return ret; 25.23 +} 25.24 + 25.25 +static inline int 25.26 +HYPERVISOR_mmuext_op( 25.27 + struct mmuext_op *op, int count, int *success_count, domid_t domid) 25.28 +{ 25.29 + int ret; 25.30 + 25.31 + __asm__ __volatile__ ( 25.32 + "movq %5, %%r10;" TRAP_INSTR 25.33 + : "=a" (ret) 25.34 + : "0" (__HYPERVISOR_mmuext_op), "D" (op), "S" ((long)count), 25.35 + "d" (success_count), "g" ((unsigned long)domid) 25.36 + : __syscall_clobber, "r10" ); 25.37 25.38 return ret; 25.39 } 25.40 @@ -223,7 +239,8 @@ HYPERVISOR_set_timer_op( 25.41 __asm__ __volatile__ ( 25.42 TRAP_INSTR 25.43 : "=a" (ret) 25.44 - : "0" ((unsigned long)__HYPERVISOR_set_timer_op), "D" (timeout) 25.45 + : "0" ((unsigned long)__HYPERVISOR_set_timer_op), 25.46 + "D" (timeout) 25.47 : __syscall_clobber ); 25.48 25.49 return ret; 25.50 @@ -284,7 +301,8 @@ HYPERVISOR_update_descriptor( 25.51 __asm__ __volatile__ ( 25.52 TRAP_INSTR 25.53 : "=a" (ret) 25.54 - : "0" ((unsigned long)__HYPERVISOR_update_descriptor), "D" (ma), "S" (word) 25.55 + : "0" ((unsigned long)__HYPERVISOR_update_descriptor), "D" (ma), 25.56 + "S" (word) 25.57 : __syscall_clobber ); 25.58 25.59 return ret;
26.1 --- a/linux-2.6.11-xen-sparse/include/asm-xen/asm-x86_64/mmu_context.h Thu Apr 07 08:19:23 2005 +0000 26.2 +++ b/linux-2.6.11-xen-sparse/include/asm-xen/asm-x86_64/mmu_context.h Fri Apr 08 17:24:38 2005 +0000 26.3 @@ -71,7 +71,6 @@ static inline void switch_mm(struct mm_s 26.4 26.5 #define activate_mm(prev, next) do { \ 26.6 switch_mm((prev),(next),NULL); \ 26.7 - flush_page_update_queue(); \ 26.8 } while (0) 26.9 26.10 #endif
27.1 --- a/linux-2.6.11-xen-sparse/include/asm-xen/asm-x86_64/pgalloc.h Thu Apr 07 08:19:23 2005 +0000 27.2 +++ b/linux-2.6.11-xen-sparse/include/asm-xen/asm-x86_64/pgalloc.h Fri Apr 08 17:24:38 2005 +0000 27.3 @@ -18,19 +18,16 @@ void make_pages_writable(void *va, unsig 27.4 static inline void pmd_populate_kernel(struct mm_struct *mm, pmd_t *pmd, pte_t *pte) 27.5 { 27.6 set_pmd(pmd, __pmd(_PAGE_TABLE | __pa(pte))); 27.7 - flush_page_update_queue(); 27.8 } 27.9 27.10 static inline void pmd_populate(struct mm_struct *mm, pmd_t *pmd, struct page *pte) 27.11 { 27.12 set_pmd(pmd, __pmd(_PAGE_TABLE | (page_to_pfn(pte) << PAGE_SHIFT))); 27.13 - flush_page_update_queue(); 27.14 } 27.15 27.16 static inline void pud_populate(struct mm_struct *mm, pud_t *pud, pmd_t *pmd) 27.17 { 27.18 set_pud(pud, __pud(_PAGE_TABLE | __pa(pmd))); 27.19 - flush_page_update_queue(); 27.20 } 27.21 27.22 /* 27.23 @@ -41,7 +38,6 @@ static inline void pgd_populate(struct m 27.24 { 27.25 set_pgd(pgd, __pgd(_PAGE_TABLE | __pa(pud))); 27.26 set_pgd(__user_pgd(pgd), __pgd(_PAGE_TABLE | __pa(pud))); 27.27 - flush_page_update_queue(); 27.28 } 27.29 27.30 extern __inline__ pmd_t *get_pmd(void) 27.31 @@ -51,7 +47,6 @@ extern __inline__ pmd_t *get_pmd(void) 27.32 return NULL; 27.33 make_page_readonly(pmd); 27.34 xen_pmd_pin(__pa(pmd)); 27.35 - flush_page_update_queue(); 27.36 return pmd; 27.37 } 27.38 27.39 @@ -60,7 +55,6 @@ extern __inline__ void pmd_free(pmd_t *p 27.40 BUG_ON((unsigned long)pmd & (PAGE_SIZE-1)); 27.41 xen_pmd_unpin(__pa(pmd)); 27.42 make_page_writable(pmd); 27.43 - flush_page_update_queue(); 27.44 free_page((unsigned long)pmd); 27.45 } 27.46 27.47 @@ -71,7 +65,6 @@ static inline pmd_t *pmd_alloc_one(struc 27.48 return NULL; 27.49 make_page_readonly(pmd); 27.50 xen_pmd_pin(__pa(pmd)); 27.51 - flush_page_update_queue(); 27.52 return pmd; 27.53 } 27.54 27.55 @@ -82,7 +75,6 @@ static inline pud_t *pud_alloc_one(struc 27.56 return NULL; 27.57 make_page_readonly(pud); 27.58 xen_pud_pin(__pa(pud)); 27.59 - flush_page_update_queue(); 27.60 return pud; 27.61 } 27.62 27.63 @@ -91,7 +83,6 @@ static inline void pud_free(pud_t *pud) 27.64 BUG_ON((unsigned long)pud & (PAGE_SIZE-1)); 27.65 xen_pud_unpin(__pa(pud)); 27.66 make_page_writable(pud); 27.67 - flush_page_update_queue(); 27.68 free_page((unsigned long)pud); 27.69 } 27.70 27.71 @@ -126,7 +117,6 @@ static inline pgd_t *pgd_alloc(struct mm 27.72 */ 27.73 set_pgd(__user_pgd(pgd) + pgd_index(VSYSCALL_START), 27.74 mk_kernel_pgd(__pa_symbol(level3_user_pgt))); 27.75 - flush_page_update_queue(); 27.76 return pgd; 27.77 } 27.78 27.79 @@ -136,7 +126,6 @@ static inline void pgd_free(pgd_t *pgd) 27.80 xen_pgd_unpin(__pa(pgd)); 27.81 xen_pgd_unpin(__pa(__user_pgd(pgd))); 27.82 make_pages_writable(pgd, 2); 27.83 - flush_page_update_queue(); 27.84 free_pages((unsigned long)pgd, 1); 27.85 } 27.86 27.87 @@ -147,7 +136,6 @@ static inline pte_t *pte_alloc_one_kerne 27.88 return NULL; 27.89 make_page_readonly(pte); 27.90 xen_pte_pin(__pa(pte)); 27.91 - flush_page_update_queue(); 27.92 return pte; 27.93 } 27.94 27.95 @@ -158,7 +146,6 @@ static inline struct page *pte_alloc_one 27.96 return NULL; 27.97 make_page_readonly(pte); 27.98 xen_pte_pin(__pa(pte)); 27.99 - flush_page_update_queue(); 27.100 return virt_to_page((unsigned long)pte); 27.101 } 27.102 27.103 @@ -170,7 +157,6 @@ extern __inline__ void pte_free_kernel(p 27.104 BUG_ON((unsigned long)pte & (PAGE_SIZE-1)); 27.105 xen_pte_unpin(__pa(pte)); 27.106 make_page_writable(pte); 27.107 - flush_page_update_queue(); 27.108 free_page((unsigned long)pte); 27.109 } 27.110
28.1 --- a/linux-2.6.11-xen-sparse/include/asm-xen/asm-x86_64/pgtable.h Thu Apr 07 08:19:23 2005 +0000 28.2 +++ b/linux-2.6.11-xen-sparse/include/asm-xen/asm-x86_64/pgtable.h Fri Apr 08 17:24:38 2005 +0000 28.3 @@ -91,9 +91,9 @@ static inline void set_pte(pte_t *dst, p 28.4 #endif 28.5 #endif 28.6 28.7 -#define set_pmd(pmdptr, pmdval) xen_l2_entry_update(pmdptr, (pmdval).pmd) 28.8 -#define set_pud(pudptr, pudval) xen_l3_entry_update(pudptr, (pudval).pud) 28.9 -#define set_pgd(pgdptr, pgdval) xen_l4_entry_update(pgdptr, (pgdval).pgd) 28.10 +#define set_pmd(pmdptr, pmdval) xen_l2_entry_update(pmdptr, (pmdval)) 28.11 +#define set_pud(pudptr, pudval) xen_l3_entry_update(pudptr, (pudval)) 28.12 +#define set_pgd(pgdptr, pgdval) xen_l4_entry_update(pgdptr, (pgdval)) 28.13 28.14 extern inline void pud_clear (pud_t * pud) 28.15 {
29.1 --- a/linux-2.6.11-xen-sparse/include/asm-xen/asm-x86_64/system.h Thu Apr 07 08:19:23 2005 +0000 29.2 +++ b/linux-2.6.11-xen-sparse/include/asm-xen/asm-x86_64/system.h Fri Apr 08 17:24:38 2005 +0000 29.3 @@ -54,9 +54,6 @@ 29.4 29.5 extern void load_gs_index(unsigned); 29.6 29.7 -#define __load_gs_index(index) \ 29.8 - HYPERVISOR_set_segment_base(SEGBASE_GS_USER_SEL, index) 29.9 - 29.10 /* 29.11 * Load a segment. Fall back on loading the zero 29.12 * segment if something goes wrong.. 29.13 @@ -176,13 +173,8 @@ static inline void write_cr4(unsigned lo 29.14 29.15 #define stts() write_cr0(8 | read_cr0()) 29.16 29.17 -static inline void wbinvd(void) 29.18 -{ 29.19 - mmu_update_t u; 29.20 - u.ptr = MMU_EXTENDED_COMMAND; 29.21 - u.val = MMUEXT_FLUSH_CACHE; 29.22 - (void)HYPERVISOR_mmu_update(&u, 1, NULL); 29.23 -} 29.24 +#define wbinvd() \ 29.25 + __asm__ __volatile__ ("wbinvd": : :"memory"); 29.26 29.27 #endif /* __KERNEL__ */ 29.28
30.1 --- a/linux-2.6.11-xen-sparse/include/asm-xen/hypervisor.h Thu Apr 07 08:19:23 2005 +0000 30.2 +++ b/linux-2.6.11-xen-sparse/include/asm-xen/hypervisor.h Fri Apr 08 17:24:38 2005 +0000 30.3 @@ -39,9 +39,11 @@ 30.4 #include <asm-xen/xen-public/io/domain_controller.h> 30.5 #include <asm/ptrace.h> 30.6 #include <asm/page.h> 30.7 +#if defined(__i386__) 30.8 #if LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,0) 30.9 #include <asm-generic/pgtable-nopmd.h> 30.10 #endif 30.11 +#endif 30.12 30.13 /* arch/xen/i386/kernel/setup.c */ 30.14 union xen_start_info_union 30.15 @@ -73,11 +75,19 @@ void lgdt_finish(void); 30.16 30.17 void xen_l1_entry_update(pte_t *ptr, unsigned long val); 30.18 void xen_l2_entry_update(pmd_t *ptr, pmd_t val); 30.19 +void xen_l3_entry_update(pud_t *ptr, pud_t val); /* x86_64 only */ 30.20 +void xen_l4_entry_update(pgd_t *ptr, pgd_t val); /* x86_64 only */ 30.21 void xen_pt_switch(unsigned long ptr); 30.22 +void xen_new_user_pt(unsigned long ptr); /* x86_64 only */ 30.23 +void xen_load_gs(unsigned int selector); /* x86_64 only */ 30.24 void xen_tlb_flush(void); 30.25 void xen_invlpg(unsigned long ptr); 30.26 void xen_pgd_pin(unsigned long ptr); 30.27 void xen_pgd_unpin(unsigned long ptr); 30.28 +void xen_pud_pin(unsigned long ptr); /* x86_64 only */ 30.29 +void xen_pud_unpin(unsigned long ptr); /* x86_64 only */ 30.30 +void xen_pmd_pin(unsigned long ptr); /* x86_64 only */ 30.31 +void xen_pmd_unpin(unsigned long ptr); /* x86_64 only */ 30.32 void xen_pte_pin(unsigned long ptr); 30.33 void xen_pte_unpin(unsigned long ptr); 30.34 void xen_set_ldt(unsigned long ptr, unsigned long bytes); 30.35 @@ -112,506 +122,6 @@ void xen_invlpg_mask(cpumask_t mask, uns 30.36 unsigned long allocate_empty_lowmem_region(unsigned long pages); 30.37 #endif 30.38 30.39 -/* 30.40 - * Assembler stubs for hyper-calls. 30.41 - */ 30.42 - 30.43 -static inline int 30.44 -HYPERVISOR_set_trap_table( 30.45 - trap_info_t *table) 30.46 -{ 30.47 - int ret; 30.48 - unsigned long ignore; 30.49 - 30.50 - __asm__ __volatile__ ( 30.51 - TRAP_INSTR 30.52 - : "=a" (ret), "=b" (ignore) 30.53 - : "0" (__HYPERVISOR_set_trap_table), "1" (table) 30.54 - : "memory" ); 30.55 - 30.56 - return ret; 30.57 -} 30.58 - 30.59 -static inline int 30.60 -HYPERVISOR_mmu_update( 30.61 - mmu_update_t *req, int count, int *success_count, domid_t domid) 30.62 -{ 30.63 - int ret; 30.64 - unsigned long ign1, ign2, ign3, ign4; 30.65 - 30.66 - __asm__ __volatile__ ( 30.67 - TRAP_INSTR 30.68 - : "=a" (ret), "=b" (ign1), "=c" (ign2), "=d" (ign3), "=S" (ign4) 30.69 - : "0" (__HYPERVISOR_mmu_update), "1" (req), "2" (count), 30.70 - "3" (success_count), "4" (domid) 30.71 - : "memory" ); 30.72 - 30.73 - return ret; 30.74 -} 30.75 - 30.76 -static inline int 30.77 -HYPERVISOR_mmuext_op( 30.78 - struct mmuext_op *op, int count, int *success_count, domid_t domid) 30.79 -{ 30.80 - int ret; 30.81 - unsigned long ign1, ign2, ign3, ign4; 30.82 - 30.83 - __asm__ __volatile__ ( 30.84 - TRAP_INSTR 30.85 - : "=a" (ret), "=b" (ign1), "=c" (ign2), "=d" (ign3), "=S" (ign4) 30.86 - : "0" (__HYPERVISOR_mmuext_op), "1" (op), "2" (count), 30.87 - "3" (success_count), "4" (domid) 30.88 - : "memory" ); 30.89 - 30.90 - return ret; 30.91 -} 30.92 - 30.93 -static inline int 30.94 -HYPERVISOR_set_gdt( 30.95 - unsigned long *frame_list, int entries) 30.96 -{ 30.97 - int ret; 30.98 - unsigned long ign1, ign2; 30.99 - 30.100 - __asm__ __volatile__ ( 30.101 - TRAP_INSTR 30.102 - : "=a" (ret), "=b" (ign1), "=c" (ign2) 30.103 - : "0" (__HYPERVISOR_set_gdt), "1" (frame_list), "2" (entries) 30.104 - : "memory" ); 30.105 - 30.106 - 30.107 - return ret; 30.108 -} 30.109 - 30.110 -static inline int 30.111 -HYPERVISOR_stack_switch( 30.112 - unsigned long ss, unsigned long esp) 30.113 -{ 30.114 - int ret; 30.115 - unsigned long ign1, ign2; 30.116 - 30.117 - __asm__ __volatile__ ( 30.118 - TRAP_INSTR 30.119 - : "=a" (ret), "=b" (ign1), "=c" (ign2) 30.120 - : "0" (__HYPERVISOR_stack_switch), "1" (ss), "2" (esp) 30.121 - : "memory" ); 30.122 - 30.123 - return ret; 30.124 -} 30.125 - 30.126 -static inline int 30.127 -HYPERVISOR_set_callbacks( 30.128 - unsigned long event_selector, unsigned long event_address, 30.129 - unsigned long failsafe_selector, unsigned long failsafe_address) 30.130 -{ 30.131 - int ret; 30.132 - unsigned long ign1, ign2, ign3, ign4; 30.133 - 30.134 - __asm__ __volatile__ ( 30.135 - TRAP_INSTR 30.136 - : "=a" (ret), "=b" (ign1), "=c" (ign2), "=d" (ign3), "=S" (ign4) 30.137 - : "0" (__HYPERVISOR_set_callbacks), "1" (event_selector), 30.138 - "2" (event_address), "3" (failsafe_selector), "4" (failsafe_address) 30.139 - : "memory" ); 30.140 - 30.141 - return ret; 30.142 -} 30.143 - 30.144 -static inline int 30.145 -HYPERVISOR_fpu_taskswitch( 30.146 - int set) 30.147 -{ 30.148 - int ret; 30.149 - unsigned long ign; 30.150 - 30.151 - __asm__ __volatile__ ( 30.152 - TRAP_INSTR 30.153 - : "=a" (ret), "=b" (ign) 30.154 - : "0" (__HYPERVISOR_fpu_taskswitch), "1" (set) 30.155 - : "memory" ); 30.156 - 30.157 - return ret; 30.158 -} 30.159 - 30.160 -static inline int 30.161 -HYPERVISOR_yield( 30.162 - void) 30.163 -{ 30.164 - int ret; 30.165 - unsigned long ign; 30.166 - 30.167 - __asm__ __volatile__ ( 30.168 - TRAP_INSTR 30.169 - : "=a" (ret), "=b" (ign) 30.170 - : "0" (__HYPERVISOR_sched_op), "1" (SCHEDOP_yield) 30.171 - : "memory" ); 30.172 - 30.173 - return ret; 30.174 -} 30.175 - 30.176 -static inline int 30.177 -HYPERVISOR_block( 30.178 - void) 30.179 -{ 30.180 - int ret; 30.181 - unsigned long ign1; 30.182 - __asm__ __volatile__ ( 30.183 - TRAP_INSTR 30.184 - : "=a" (ret), "=b" (ign1) 30.185 - : "0" (__HYPERVISOR_sched_op), "1" (SCHEDOP_block) 30.186 - : "memory" ); 30.187 - 30.188 - return ret; 30.189 -} 30.190 - 30.191 -static inline int 30.192 -HYPERVISOR_shutdown( 30.193 - void) 30.194 -{ 30.195 - int ret; 30.196 - unsigned long ign1; 30.197 - __asm__ __volatile__ ( 30.198 - TRAP_INSTR 30.199 - : "=a" (ret), "=b" (ign1) 30.200 - : "0" (__HYPERVISOR_sched_op), 30.201 - "1" (SCHEDOP_shutdown | (SHUTDOWN_poweroff << SCHEDOP_reasonshift)) 30.202 - : "memory" ); 30.203 - 30.204 - return ret; 30.205 -} 30.206 - 30.207 -static inline int 30.208 -HYPERVISOR_reboot( 30.209 - void) 30.210 -{ 30.211 - int ret; 30.212 - unsigned long ign1; 30.213 - __asm__ __volatile__ ( 30.214 - TRAP_INSTR 30.215 - : "=a" (ret), "=b" (ign1) 30.216 - : "0" (__HYPERVISOR_sched_op), 30.217 - "1" (SCHEDOP_shutdown | (SHUTDOWN_reboot << SCHEDOP_reasonshift)) 30.218 - : "memory" ); 30.219 - 30.220 - return ret; 30.221 -} 30.222 - 30.223 -static inline int 30.224 -HYPERVISOR_suspend( 30.225 - unsigned long srec) 30.226 -{ 30.227 - int ret; 30.228 - unsigned long ign1, ign2; 30.229 - 30.230 - /* NB. On suspend, control software expects a suspend record in %esi. */ 30.231 - __asm__ __volatile__ ( 30.232 - TRAP_INSTR 30.233 - : "=a" (ret), "=b" (ign1), "=S" (ign2) 30.234 - : "0" (__HYPERVISOR_sched_op), 30.235 - "b" (SCHEDOP_shutdown | (SHUTDOWN_suspend << SCHEDOP_reasonshift)), 30.236 - "S" (srec) : "memory"); 30.237 - 30.238 - return ret; 30.239 -} 30.240 - 30.241 -static inline int 30.242 -HYPERVISOR_crash( 30.243 - void) 30.244 -{ 30.245 - int ret; 30.246 - unsigned long ign1; 30.247 - __asm__ __volatile__ ( 30.248 - TRAP_INSTR 30.249 - : "=a" (ret), "=b" (ign1) 30.250 - : "0" (__HYPERVISOR_sched_op), 30.251 - "1" (SCHEDOP_shutdown | (SHUTDOWN_crash << SCHEDOP_reasonshift)) 30.252 - : "memory" ); 30.253 - 30.254 - return ret; 30.255 -} 30.256 - 30.257 -static inline long 30.258 -HYPERVISOR_set_timer_op( 30.259 - u64 timeout) 30.260 -{ 30.261 - int ret; 30.262 - unsigned long timeout_hi = (unsigned long)(timeout>>32); 30.263 - unsigned long timeout_lo = (unsigned long)timeout; 30.264 - unsigned long ign1, ign2; 30.265 - 30.266 - __asm__ __volatile__ ( 30.267 - TRAP_INSTR 30.268 - : "=a" (ret), "=b" (ign1), "=c" (ign2) 30.269 - : "0" (__HYPERVISOR_set_timer_op), "b" (timeout_lo), "c" (timeout_hi) 30.270 - : "memory"); 30.271 - 30.272 - return ret; 30.273 -} 30.274 - 30.275 -static inline int 30.276 -HYPERVISOR_dom0_op( 30.277 - dom0_op_t *dom0_op) 30.278 -{ 30.279 - int ret; 30.280 - unsigned long ign1; 30.281 - 30.282 - dom0_op->interface_version = DOM0_INTERFACE_VERSION; 30.283 - __asm__ __volatile__ ( 30.284 - TRAP_INSTR 30.285 - : "=a" (ret), "=b" (ign1) 30.286 - : "0" (__HYPERVISOR_dom0_op), "1" (dom0_op) 30.287 - : "memory"); 30.288 - 30.289 - return ret; 30.290 -} 30.291 - 30.292 -static inline int 30.293 -HYPERVISOR_set_debugreg( 30.294 - int reg, unsigned long value) 30.295 -{ 30.296 - int ret; 30.297 - unsigned long ign1, ign2; 30.298 - __asm__ __volatile__ ( 30.299 - TRAP_INSTR 30.300 - : "=a" (ret), "=b" (ign1), "=c" (ign2) 30.301 - : "0" (__HYPERVISOR_set_debugreg), "1" (reg), "2" (value) 30.302 - : "memory" ); 30.303 - 30.304 - return ret; 30.305 -} 30.306 - 30.307 -static inline unsigned long 30.308 -HYPERVISOR_get_debugreg( 30.309 - int reg) 30.310 -{ 30.311 - unsigned long ret; 30.312 - unsigned long ign; 30.313 - __asm__ __volatile__ ( 30.314 - TRAP_INSTR 30.315 - : "=a" (ret), "=b" (ign) 30.316 - : "0" (__HYPERVISOR_get_debugreg), "1" (reg) 30.317 - : "memory" ); 30.318 - 30.319 - return ret; 30.320 -} 30.321 - 30.322 -static inline int 30.323 -HYPERVISOR_update_descriptor( 30.324 - unsigned long ma, unsigned long word1, unsigned long word2) 30.325 -{ 30.326 - int ret; 30.327 - unsigned long ign1, ign2, ign3; 30.328 - 30.329 - __asm__ __volatile__ ( 30.330 - TRAP_INSTR 30.331 - : "=a" (ret), "=b" (ign1), "=c" (ign2), "=d" (ign3) 30.332 - : "0" (__HYPERVISOR_update_descriptor), "1" (ma), "2" (word1), 30.333 - "3" (word2) 30.334 - : "memory" ); 30.335 - 30.336 - return ret; 30.337 -} 30.338 - 30.339 -static inline int 30.340 -HYPERVISOR_set_fast_trap( 30.341 - int idx) 30.342 -{ 30.343 - int ret; 30.344 - unsigned long ign; 30.345 - 30.346 - __asm__ __volatile__ ( 30.347 - TRAP_INSTR 30.348 - : "=a" (ret), "=b" (ign) 30.349 - : "0" (__HYPERVISOR_set_fast_trap), "1" (idx) 30.350 - : "memory" ); 30.351 - 30.352 - return ret; 30.353 -} 30.354 - 30.355 -static inline int 30.356 -HYPERVISOR_dom_mem_op( 30.357 - unsigned int op, unsigned long *extent_list, 30.358 - unsigned long nr_extents, unsigned int extent_order) 30.359 -{ 30.360 - int ret; 30.361 - unsigned long ign1, ign2, ign3, ign4, ign5; 30.362 - 30.363 - __asm__ __volatile__ ( 30.364 - TRAP_INSTR 30.365 - : "=a" (ret), "=b" (ign1), "=c" (ign2), "=d" (ign3), "=S" (ign4), 30.366 - "=D" (ign5) 30.367 - : "0" (__HYPERVISOR_dom_mem_op), "1" (op), "2" (extent_list), 30.368 - "3" (nr_extents), "4" (extent_order), "5" (DOMID_SELF) 30.369 - : "memory" ); 30.370 - 30.371 - return ret; 30.372 -} 30.373 - 30.374 -static inline int 30.375 -HYPERVISOR_multicall( 30.376 - void *call_list, int nr_calls) 30.377 -{ 30.378 - int ret; 30.379 - unsigned long ign1, ign2; 30.380 - 30.381 - __asm__ __volatile__ ( 30.382 - TRAP_INSTR 30.383 - : "=a" (ret), "=b" (ign1), "=c" (ign2) 30.384 - : "0" (__HYPERVISOR_multicall), "1" (call_list), "2" (nr_calls) 30.385 - : "memory" ); 30.386 - 30.387 - return ret; 30.388 -} 30.389 - 30.390 -static inline int 30.391 -HYPERVISOR_update_va_mapping( 30.392 - unsigned long va, pte_t new_val, unsigned long flags) 30.393 -{ 30.394 - int ret; 30.395 - unsigned long ign1, ign2, ign3; 30.396 - 30.397 - __asm__ __volatile__ ( 30.398 - TRAP_INSTR 30.399 - : "=a" (ret), "=b" (ign1), "=c" (ign2), "=d" (ign3) 30.400 - : "0" (__HYPERVISOR_update_va_mapping), 30.401 - "1" (va), "2" ((new_val).pte_low), "3" (flags) 30.402 - : "memory" ); 30.403 - 30.404 - if ( unlikely(ret < 0) ) 30.405 - { 30.406 - printk(KERN_ALERT "Failed update VA mapping: %08lx, %08lx, %08lx\n", 30.407 - va, (new_val).pte_low, flags); 30.408 - BUG(); 30.409 - } 30.410 - 30.411 - return ret; 30.412 -} 30.413 - 30.414 -static inline int 30.415 -HYPERVISOR_event_channel_op( 30.416 - void *op) 30.417 -{ 30.418 - int ret; 30.419 - unsigned long ignore; 30.420 - __asm__ __volatile__ ( 30.421 - TRAP_INSTR 30.422 - : "=a" (ret), "=b" (ignore) 30.423 - : "0" (__HYPERVISOR_event_channel_op), "1" (op) 30.424 - : "memory" ); 30.425 - 30.426 - return ret; 30.427 -} 30.428 - 30.429 -static inline int 30.430 -HYPERVISOR_xen_version( 30.431 - int cmd) 30.432 -{ 30.433 - int ret; 30.434 - unsigned long ignore; 30.435 - 30.436 - __asm__ __volatile__ ( 30.437 - TRAP_INSTR 30.438 - : "=a" (ret), "=b" (ignore) 30.439 - : "0" (__HYPERVISOR_xen_version), "1" (cmd) 30.440 - : "memory" ); 30.441 - 30.442 - return ret; 30.443 -} 30.444 - 30.445 -static inline int 30.446 -HYPERVISOR_console_io( 30.447 - int cmd, int count, char *str) 30.448 -{ 30.449 - int ret; 30.450 - unsigned long ign1, ign2, ign3; 30.451 - __asm__ __volatile__ ( 30.452 - TRAP_INSTR 30.453 - : "=a" (ret), "=b" (ign1), "=c" (ign2), "=d" (ign3) 30.454 - : "0" (__HYPERVISOR_console_io), "1" (cmd), "2" (count), "3" (str) 30.455 - : "memory" ); 30.456 - 30.457 - return ret; 30.458 -} 30.459 - 30.460 -static inline int 30.461 -HYPERVISOR_physdev_op( 30.462 - void *physdev_op) 30.463 -{ 30.464 - int ret; 30.465 - unsigned long ign; 30.466 - 30.467 - __asm__ __volatile__ ( 30.468 - TRAP_INSTR 30.469 - : "=a" (ret), "=b" (ign) 30.470 - : "0" (__HYPERVISOR_physdev_op), "1" (physdev_op) 30.471 - : "memory" ); 30.472 - 30.473 - return ret; 30.474 -} 30.475 - 30.476 -static inline int 30.477 -HYPERVISOR_grant_table_op( 30.478 - unsigned int cmd, void *uop, unsigned int count) 30.479 -{ 30.480 - int ret; 30.481 - unsigned long ign1, ign2, ign3; 30.482 - 30.483 - __asm__ __volatile__ ( 30.484 - TRAP_INSTR 30.485 - : "=a" (ret), "=b" (ign1), "=c" (ign2), "=d" (ign3) 30.486 - : "0" (__HYPERVISOR_grant_table_op), "1" (cmd), "2" (uop), "3" (count) 30.487 - : "memory" ); 30.488 - 30.489 - return ret; 30.490 -} 30.491 - 30.492 -static inline int 30.493 -HYPERVISOR_update_va_mapping_otherdomain( 30.494 - unsigned long va, pte_t new_val, unsigned long flags, domid_t domid) 30.495 -{ 30.496 - int ret; 30.497 - unsigned long ign1, ign2, ign3, ign4; 30.498 - 30.499 - __asm__ __volatile__ ( 30.500 - TRAP_INSTR 30.501 - : "=a" (ret), "=b" (ign1), "=c" (ign2), "=d" (ign3), "=S" (ign4) 30.502 - : "0" (__HYPERVISOR_update_va_mapping_otherdomain), 30.503 - "1" (va), "2" ((new_val).pte_low), "3" (flags), "4" (domid) : 30.504 - "memory" ); 30.505 - 30.506 - return ret; 30.507 -} 30.508 - 30.509 -static inline int 30.510 -HYPERVISOR_vm_assist( 30.511 - unsigned int cmd, unsigned int type) 30.512 -{ 30.513 - int ret; 30.514 - unsigned long ign1, ign2; 30.515 - 30.516 - __asm__ __volatile__ ( 30.517 - TRAP_INSTR 30.518 - : "=a" (ret), "=b" (ign1), "=c" (ign2) 30.519 - : "0" (__HYPERVISOR_vm_assist), "1" (cmd), "2" (type) 30.520 - : "memory" ); 30.521 - 30.522 - return ret; 30.523 -} 30.524 - 30.525 -static inline int 30.526 -HYPERVISOR_boot_vcpu( 30.527 - unsigned long vcpu, full_execution_context_t *ctxt) 30.528 -{ 30.529 - int ret; 30.530 - unsigned long ign1, ign2; 30.531 - 30.532 - __asm__ __volatile__ ( 30.533 - TRAP_INSTR 30.534 - : "=a" (ret), "=b" (ign1), "=c" (ign2) 30.535 - : "0" (__HYPERVISOR_boot_vcpu), "1" (vcpu), "2" (ctxt) 30.536 - : "memory"); 30.537 - 30.538 - return ret; 30.539 -} 30.540 +#include <asm/hypercall.h> 30.541 30.542 #endif /* __HYPERVISOR_H__ */