bitkeeper revision 1.1159.170.55 (41ab5c23QYvtqtjdNhgpIdW_c5ibrA)

sync w/ head.
This commit is contained in:
cl349@arcadians.cl.cam.ac.uk committed 2004-11-29 17:28:03 +00:00
commit 0cd5cd8c77
262 files changed
+21448 -1216

No files matched your search

+174 -93
View File
@@ -44,90 +44,90 @@
3f815145vGYx1WY79voKkZB9yKwJKQ extras/mini-os/time.c
3f815145xlKBAQmal9oces3G_Mvxqw extras/mini-os/traps.c
4187ca95_eQN62ugV1zliQcfzXrHnw install.sh
3e5a4e6589G-U42lFKs43plskXoFxQ linux-2.4.27-xen-sparse/Makefile
3e5a4e65IEPjnWPZ5w3TxS5scV8Ewg linux-2.4.27-xen-sparse/arch/xen/Makefile
3e5a4e65n-KhsEAs-A4ULiStBp-r6w linux-2.4.27-xen-sparse/arch/xen/boot/Makefile
3e5a4e65OV_j_DBtjzt5vej771AJsA linux-2.4.27-xen-sparse/arch/xen/config.in
40648526SxcA4lGIHB_k7ID8VlRSzw linux-2.4.27-xen-sparse/arch/xen/defconfig-xen0
40c73c77QesbL7eIvG-fJGAtVwhGRg linux-2.4.27-xen-sparse/arch/xen/defconfig-xenU
3e6377f5xwPfYZkPHPrDbEq1PRN7uQ linux-2.4.27-xen-sparse/arch/xen/drivers/balloon/Makefile
4083dc16z0jvZEH4PiVDbDRreaNp6w linux-2.4.27-xen-sparse/arch/xen/drivers/blkif/Makefile
4083dc16KQus88a4U3uCV6qVCA6_8Q linux-2.4.27-xen-sparse/arch/xen/drivers/blkif/backend/Makefile
4075806dI5kfeMD5RV-DA0PYoThx_w linux-2.4.27-xen-sparse/arch/xen/drivers/blkif/frontend/Makefile
4075806d4-j7vN0Mn0bklI1cRUX1vQ linux-2.4.27-xen-sparse/arch/xen/drivers/blkif/frontend/common.h
4075806dibjCcfuXv6CINMhxWTw3jQ linux-2.4.27-xen-sparse/arch/xen/drivers/blkif/frontend/vbd.c
3e5a4e65G3e2s0ghPMgiJ-gBTUJ0uQ linux-2.4.27-xen-sparse/arch/xen/drivers/console/Makefile
3e5a4e656nfFISThfbyXQOA6HN6YHw linux-2.4.27-xen-sparse/arch/xen/drivers/dom0/Makefile
40420a6ebRqDjufoN1WSJvolEW2Wjw linux-2.4.27-xen-sparse/arch/xen/drivers/evtchn/Makefile
4083dc16-Kd5y9psK_yk161sme5j5Q linux-2.4.27-xen-sparse/arch/xen/drivers/netif/Makefile
4083dc16UmHXxS9g_UFVnkUpN-oP2Q linux-2.4.27-xen-sparse/arch/xen/drivers/netif/backend/Makefile
405853f2wg7JXZJNltspMwOZJklxgw linux-2.4.27-xen-sparse/arch/xen/drivers/netif/frontend/Makefile
3e5a4e65lWzkiPXsZdzPt2RNnJGG1g linux-2.4.27-xen-sparse/arch/xen/kernel/Makefile
3e5a4e65_hqfuxtGG8IUy6wRM86Ecg linux-2.4.27-xen-sparse/arch/xen/kernel/entry.S
3e5a4e65Hy_1iUvMTPsNqGNXd9uFpg linux-2.4.27-xen-sparse/arch/xen/kernel/head.S
3e5a4e65RMGcuA-HCn3-wNx3fFQwdg linux-2.4.27-xen-sparse/arch/xen/kernel/i386_ksyms.c
3e5a4e653U6cELGv528IxOLHvCq8iA linux-2.4.27-xen-sparse/arch/xen/kernel/irq.c
3e5a4e65muT6SU3ck47IP87Q7Ti5hA linux-2.4.27-xen-sparse/arch/xen/kernel/ldt.c
4051db95N9N99FjsRwi49YKUNHWI8A linux-2.4.27-xen-sparse/arch/xen/kernel/pci-pc.c
3e5a4e65IGt3WwQDNiL4h-gYWgNTWQ linux-2.4.27-xen-sparse/arch/xen/kernel/process.c
3e5a4e66tR-qJMLj3MppcKqmvuI2XQ linux-2.4.27-xen-sparse/arch/xen/kernel/setup.c
3e5a4e66fWSTagLGU2P8BGFGRjhDiw linux-2.4.27-xen-sparse/arch/xen/kernel/signal.c
3e5a4e66N__lUXNwzQ-eADRzK9LXuQ linux-2.4.27-xen-sparse/arch/xen/kernel/time.c
3e5a4e66aHCbQ_F5QZ8VeyikLmuRZQ linux-2.4.27-xen-sparse/arch/xen/kernel/traps.c
3e5a4e66-9_NczrVMbuQkoSLyXckIw linux-2.4.27-xen-sparse/arch/xen/lib/Makefile
3e5a4e6637ZDk0BvFEC-aFQs599-ng linux-2.4.27-xen-sparse/arch/xen/lib/delay.c
3e5a4e66croVgpcJyJuF2ycQw0HuJw linux-2.4.27-xen-sparse/arch/xen/mm/Makefile
3e5a4e66l8Q5Tv-6B3lQIRmaVbFPzg linux-2.4.27-xen-sparse/arch/xen/mm/fault.c
3e5a4e661gLzzff25pJooKIIWe7IWg linux-2.4.27-xen-sparse/arch/xen/mm/init.c
3f0bed43UUdQichXAiVNrjV-y2Kzcg linux-2.4.27-xen-sparse/arch/xen/mm/ioremap.c
3e5a4e66qRlSTcjafidMB6ulECADvg linux-2.4.27-xen-sparse/arch/xen/vmlinux.lds
3e5a4e66mrtlmV75L1tjKDg8RaM5gA linux-2.4.27-xen-sparse/drivers/block/ll_rw_blk.c
40d70c24-Dy2HUMrwSZagfXvAPnI4w linux-2.4.27-xen-sparse/drivers/char/Makefile
3f108aeaLcGDgQdFAANLTUEid0a05w linux-2.4.27-xen-sparse/drivers/char/mem.c
3e5a4e66rw65CxyolW9PKz4GG42RcA linux-2.4.27-xen-sparse/drivers/char/tty_io.c
40c9c0c1pPwYE3-4i-oI3ubUu7UgvQ linux-2.4.27-xen-sparse/drivers/scsi/aic7xxx/Makefile
3e5a4e669uzIE54VwucPYtGwXLAbzA linux-2.4.27-xen-sparse/fs/exec.c
3e5a4e66wbeCpsJgVf_U8Jde-CNcsA linux-2.4.27-xen-sparse/include/asm-xen/bugs.h
3e5a4e66HdSkvIV6SJ1evG_xmTmXHA linux-2.4.27-xen-sparse/include/asm-xen/desc.h
3e5a4e66SYp_UpAVcF8Lc1wa3Qtgzw linux-2.4.27-xen-sparse/include/asm-xen/fixmap.h
406aeeaaQvl4RNtmd9hDEugBURbFpQ linux-2.4.27-xen-sparse/include/asm-xen/highmem.h
3e5a4e67YtcyDLQsShhCfQwPSELfvA linux-2.4.27-xen-sparse/include/asm-xen/hw_irq.h
4060044fVx7-tokvNLKBf_6qBB4lqQ linux-2.4.27-xen-sparse/include/asm-xen/io.h
3e5a4e673p7PEOyHFm3nHkYX6HQYBg linux-2.4.27-xen-sparse/include/asm-xen/irq.h
40d70c240tW7TWArl1VUgIFH2nVO1A linux-2.4.27-xen-sparse/include/asm-xen/keyboard.h
3e5a4e678ddsQOpbSiRdy1GRcDc9WA linux-2.4.27-xen-sparse/include/asm-xen/mmu_context.h
40d06e5b2YWInUX1Xv9amVANwd_2Xg linux-2.4.27-xen-sparse/include/asm-xen/module.h
3f8707e7ZmZ6TxyX0ZUEfvhA2Pb_xQ linux-2.4.27-xen-sparse/include/asm-xen/msr.h
3e5a4e67mnQfh-R8KcQCaVo2Oho6yg linux-2.4.27-xen-sparse/include/asm-xen/page.h
409ba2e7ZfV5hqTvIzxLtpClnxtIzg linux-2.4.27-xen-sparse/include/asm-xen/pci.h
3e5a4e67uTYU5oEnIDjxuaez8njjqg linux-2.4.27-xen-sparse/include/asm-xen/pgalloc.h
3e5a4e67X7JyupgdYkgDX19Huj2sAw linux-2.4.27-xen-sparse/include/asm-xen/pgtable-2level.h
3e5a4e67gr4NLGtQ5CvSLimMYZlkOA linux-2.4.27-xen-sparse/include/asm-xen/pgtable.h
3e5a4e676uK4xErTBDH6XJREn9LSyg linux-2.4.27-xen-sparse/include/asm-xen/processor.h
41224663YBCUMX1kVo_HRUtgaHTi7w linux-2.4.27-xen-sparse/include/asm-xen/queues.h
3e5a4e68uJz-xI0IBVMD7xRLQKJDFg linux-2.4.27-xen-sparse/include/asm-xen/segment.h
3e5a4e68Nfdh6QcOKUTGCaYkf2LmYA linux-2.4.27-xen-sparse/include/asm-xen/smp.h
4062f7e2PzFOUGT0PaE7A0VprTU3JQ linux-2.4.27-xen-sparse/include/asm-xen/synch_bitops.h
3e5a4e68mTr0zcp9SXDbnd-XLrrfxw linux-2.4.27-xen-sparse/include/asm-xen/system.h
3f1056a9L_kqHcFheV00KbKBzv9j5w linux-2.4.27-xen-sparse/include/asm-xen/vga.h
40659defgWA92arexpMGn8X3QMDj3w linux-2.4.27-xen-sparse/include/asm-xen/xor.h
3f056927gMHl7mWB89rb73JahbhQIA linux-2.4.27-xen-sparse/include/linux/blk.h
419e0488SBzS3mdUhwgsES5a5e3abA linux-2.4.27-xen-sparse/include/linux/irq.h
4124f66fPHG6yvB_vXmesjvzrJ3yMg linux-2.4.27-xen-sparse/include/linux/mm.h
401c0590D_kwJDU59X8NyvqSv_Cl2A linux-2.4.27-xen-sparse/include/linux/sched.h
40a248afgI0_JKthdYAe8beVfXSTpQ linux-2.4.27-xen-sparse/include/linux/skbuff.h
401c0592pLrp_aCbQRo9GXiYQQaVVA linux-2.4.27-xen-sparse/include/linux/timer.h
3f9d4b44247udoqWEgFkaHiWv6Uvyg linux-2.4.27-xen-sparse/kernel/time.c
401c059bjLBFYHRD4Py2uM3eA1D4zQ linux-2.4.27-xen-sparse/kernel/timer.c
3e6e7c1efbQe93xCvOpOVCnXTMmQ5w linux-2.4.27-xen-sparse/mkbuildtree
406aeeafkrnCuIVWLFv3kfn4uAD5Eg linux-2.4.27-xen-sparse/mm/highmem.c
3e5a4e68GxCIaFH4sy01v1wjapetaA linux-2.4.27-xen-sparse/mm/memory.c
3f108af5VxPkLv13tXpXgoRKALQtXQ linux-2.4.27-xen-sparse/mm/mprotect.c
3e5a4e681xMPdF9xCMwpyfuYMySU5g linux-2.4.27-xen-sparse/mm/mremap.c
409ba2e7akOFqQUg6Qyg2s28xcXiMg linux-2.4.27-xen-sparse/mm/page_alloc.c
3e5a4e683HKVU-sxtagrDasRB8eBVw linux-2.4.27-xen-sparse/mm/swapfile.c
41180721bNns9Na7w1nJ0ZVt8bhUNA linux-2.4.27-xen-sparse/mm/vmalloc.c
41505c57WAd5l1rlfCLNSCpx9J13vA linux-2.4.27-xen-sparse/net/core/skbuff.c
3e5a4e6589G-U42lFKs43plskXoFxQ linux-2.4.28-xen-sparse/Makefile
3e5a4e65IEPjnWPZ5w3TxS5scV8Ewg linux-2.4.28-xen-sparse/arch/xen/Makefile
3e5a4e65n-KhsEAs-A4ULiStBp-r6w linux-2.4.28-xen-sparse/arch/xen/boot/Makefile
3e5a4e65OV_j_DBtjzt5vej771AJsA linux-2.4.28-xen-sparse/arch/xen/config.in
40648526SxcA4lGIHB_k7ID8VlRSzw linux-2.4.28-xen-sparse/arch/xen/defconfig-xen0
40c73c77QesbL7eIvG-fJGAtVwhGRg linux-2.4.28-xen-sparse/arch/xen/defconfig-xenU
3e6377f5xwPfYZkPHPrDbEq1PRN7uQ linux-2.4.28-xen-sparse/arch/xen/drivers/balloon/Makefile
4083dc16z0jvZEH4PiVDbDRreaNp6w linux-2.4.28-xen-sparse/arch/xen/drivers/blkif/Makefile
4083dc16KQus88a4U3uCV6qVCA6_8Q linux-2.4.28-xen-sparse/arch/xen/drivers/blkif/backend/Makefile
4075806dI5kfeMD5RV-DA0PYoThx_w linux-2.4.28-xen-sparse/arch/xen/drivers/blkif/frontend/Makefile
4075806d4-j7vN0Mn0bklI1cRUX1vQ linux-2.4.28-xen-sparse/arch/xen/drivers/blkif/frontend/common.h
4075806dibjCcfuXv6CINMhxWTw3jQ linux-2.4.28-xen-sparse/arch/xen/drivers/blkif/frontend/vbd.c
3e5a4e65G3e2s0ghPMgiJ-gBTUJ0uQ linux-2.4.28-xen-sparse/arch/xen/drivers/console/Makefile
3e5a4e656nfFISThfbyXQOA6HN6YHw linux-2.4.28-xen-sparse/arch/xen/drivers/dom0/Makefile
40420a6ebRqDjufoN1WSJvolEW2Wjw linux-2.4.28-xen-sparse/arch/xen/drivers/evtchn/Makefile
4083dc16-Kd5y9psK_yk161sme5j5Q linux-2.4.28-xen-sparse/arch/xen/drivers/netif/Makefile
4083dc16UmHXxS9g_UFVnkUpN-oP2Q linux-2.4.28-xen-sparse/arch/xen/drivers/netif/backend/Makefile
405853f2wg7JXZJNltspMwOZJklxgw linux-2.4.28-xen-sparse/arch/xen/drivers/netif/frontend/Makefile
3e5a4e65lWzkiPXsZdzPt2RNnJGG1g linux-2.4.28-xen-sparse/arch/xen/kernel/Makefile
3e5a4e65_hqfuxtGG8IUy6wRM86Ecg linux-2.4.28-xen-sparse/arch/xen/kernel/entry.S
3e5a4e65Hy_1iUvMTPsNqGNXd9uFpg linux-2.4.28-xen-sparse/arch/xen/kernel/head.S
3e5a4e65RMGcuA-HCn3-wNx3fFQwdg linux-2.4.28-xen-sparse/arch/xen/kernel/i386_ksyms.c
3e5a4e653U6cELGv528IxOLHvCq8iA linux-2.4.28-xen-sparse/arch/xen/kernel/irq.c
3e5a4e65muT6SU3ck47IP87Q7Ti5hA linux-2.4.28-xen-sparse/arch/xen/kernel/ldt.c
4051db95N9N99FjsRwi49YKUNHWI8A linux-2.4.28-xen-sparse/arch/xen/kernel/pci-pc.c
3e5a4e65IGt3WwQDNiL4h-gYWgNTWQ linux-2.4.28-xen-sparse/arch/xen/kernel/process.c
3e5a4e66tR-qJMLj3MppcKqmvuI2XQ linux-2.4.28-xen-sparse/arch/xen/kernel/setup.c
3e5a4e66fWSTagLGU2P8BGFGRjhDiw linux-2.4.28-xen-sparse/arch/xen/kernel/signal.c
3e5a4e66N__lUXNwzQ-eADRzK9LXuQ linux-2.4.28-xen-sparse/arch/xen/kernel/time.c
3e5a4e66aHCbQ_F5QZ8VeyikLmuRZQ linux-2.4.28-xen-sparse/arch/xen/kernel/traps.c
3e5a4e66-9_NczrVMbuQkoSLyXckIw linux-2.4.28-xen-sparse/arch/xen/lib/Makefile
3e5a4e6637ZDk0BvFEC-aFQs599-ng linux-2.4.28-xen-sparse/arch/xen/lib/delay.c
3e5a4e66croVgpcJyJuF2ycQw0HuJw linux-2.4.28-xen-sparse/arch/xen/mm/Makefile
3e5a4e66l8Q5Tv-6B3lQIRmaVbFPzg linux-2.4.28-xen-sparse/arch/xen/mm/fault.c
3e5a4e661gLzzff25pJooKIIWe7IWg linux-2.4.28-xen-sparse/arch/xen/mm/init.c
3f0bed43UUdQichXAiVNrjV-y2Kzcg linux-2.4.28-xen-sparse/arch/xen/mm/ioremap.c
3e5a4e66qRlSTcjafidMB6ulECADvg linux-2.4.28-xen-sparse/arch/xen/vmlinux.lds
3e5a4e66mrtlmV75L1tjKDg8RaM5gA linux-2.4.28-xen-sparse/drivers/block/ll_rw_blk.c
40d70c24-Dy2HUMrwSZagfXvAPnI4w linux-2.4.28-xen-sparse/drivers/char/Makefile
3f108aeaLcGDgQdFAANLTUEid0a05w linux-2.4.28-xen-sparse/drivers/char/mem.c
3e5a4e66rw65CxyolW9PKz4GG42RcA linux-2.4.28-xen-sparse/drivers/char/tty_io.c
40c9c0c1pPwYE3-4i-oI3ubUu7UgvQ linux-2.4.28-xen-sparse/drivers/scsi/aic7xxx/Makefile
3e5a4e669uzIE54VwucPYtGwXLAbzA linux-2.4.28-xen-sparse/fs/exec.c
3e5a4e66wbeCpsJgVf_U8Jde-CNcsA linux-2.4.28-xen-sparse/include/asm-xen/bugs.h
3e5a4e66HdSkvIV6SJ1evG_xmTmXHA linux-2.4.28-xen-sparse/include/asm-xen/desc.h
3e5a4e66SYp_UpAVcF8Lc1wa3Qtgzw linux-2.4.28-xen-sparse/include/asm-xen/fixmap.h
406aeeaaQvl4RNtmd9hDEugBURbFpQ linux-2.4.28-xen-sparse/include/asm-xen/highmem.h
3e5a4e67YtcyDLQsShhCfQwPSELfvA linux-2.4.28-xen-sparse/include/asm-xen/hw_irq.h
4060044fVx7-tokvNLKBf_6qBB4lqQ linux-2.4.28-xen-sparse/include/asm-xen/io.h
3e5a4e673p7PEOyHFm3nHkYX6HQYBg linux-2.4.28-xen-sparse/include/asm-xen/irq.h
40d70c240tW7TWArl1VUgIFH2nVO1A linux-2.4.28-xen-sparse/include/asm-xen/keyboard.h
3e5a4e678ddsQOpbSiRdy1GRcDc9WA linux-2.4.28-xen-sparse/include/asm-xen/mmu_context.h
40d06e5b2YWInUX1Xv9amVANwd_2Xg linux-2.4.28-xen-sparse/include/asm-xen/module.h
3f8707e7ZmZ6TxyX0ZUEfvhA2Pb_xQ linux-2.4.28-xen-sparse/include/asm-xen/msr.h
3e5a4e67mnQfh-R8KcQCaVo2Oho6yg linux-2.4.28-xen-sparse/include/asm-xen/page.h
409ba2e7ZfV5hqTvIzxLtpClnxtIzg linux-2.4.28-xen-sparse/include/asm-xen/pci.h
3e5a4e67uTYU5oEnIDjxuaez8njjqg linux-2.4.28-xen-sparse/include/asm-xen/pgalloc.h
3e5a4e67X7JyupgdYkgDX19Huj2sAw linux-2.4.28-xen-sparse/include/asm-xen/pgtable-2level.h
3e5a4e67gr4NLGtQ5CvSLimMYZlkOA linux-2.4.28-xen-sparse/include/asm-xen/pgtable.h
3e5a4e676uK4xErTBDH6XJREn9LSyg linux-2.4.28-xen-sparse/include/asm-xen/processor.h
41224663YBCUMX1kVo_HRUtgaHTi7w linux-2.4.28-xen-sparse/include/asm-xen/queues.h
3e5a4e68uJz-xI0IBVMD7xRLQKJDFg linux-2.4.28-xen-sparse/include/asm-xen/segment.h
3e5a4e68Nfdh6QcOKUTGCaYkf2LmYA linux-2.4.28-xen-sparse/include/asm-xen/smp.h
4062f7e2PzFOUGT0PaE7A0VprTU3JQ linux-2.4.28-xen-sparse/include/asm-xen/synch_bitops.h
3e5a4e68mTr0zcp9SXDbnd-XLrrfxw linux-2.4.28-xen-sparse/include/asm-xen/system.h
3f1056a9L_kqHcFheV00KbKBzv9j5w linux-2.4.28-xen-sparse/include/asm-xen/vga.h
40659defgWA92arexpMGn8X3QMDj3w linux-2.4.28-xen-sparse/include/asm-xen/xor.h
3f056927gMHl7mWB89rb73JahbhQIA linux-2.4.28-xen-sparse/include/linux/blk.h
4124f66fPHG6yvB_vXmesjvzrJ3yMg linux-2.4.28-xen-sparse/include/linux/mm.h
401c0590D_kwJDU59X8NyvqSv_Cl2A linux-2.4.28-xen-sparse/include/linux/sched.h
40a248afgI0_JKthdYAe8beVfXSTpQ linux-2.4.28-xen-sparse/include/linux/skbuff.h
401c0592pLrp_aCbQRo9GXiYQQaVVA linux-2.4.28-xen-sparse/include/linux/timer.h
3f9d4b44247udoqWEgFkaHiWv6Uvyg linux-2.4.28-xen-sparse/kernel/time.c
401c059bjLBFYHRD4Py2uM3eA1D4zQ linux-2.4.28-xen-sparse/kernel/timer.c
3e6e7c1efbQe93xCvOpOVCnXTMmQ5w linux-2.4.28-xen-sparse/mkbuildtree
406aeeafkrnCuIVWLFv3kfn4uAD5Eg linux-2.4.28-xen-sparse/mm/highmem.c
3e5a4e68GxCIaFH4sy01v1wjapetaA linux-2.4.28-xen-sparse/mm/memory.c
3f108af5VxPkLv13tXpXgoRKALQtXQ linux-2.4.28-xen-sparse/mm/mprotect.c
3e5a4e681xMPdF9xCMwpyfuYMySU5g linux-2.4.28-xen-sparse/mm/mremap.c
409ba2e7akOFqQUg6Qyg2s28xcXiMg linux-2.4.28-xen-sparse/mm/page_alloc.c
3e5a4e683HKVU-sxtagrDasRB8eBVw linux-2.4.28-xen-sparse/mm/swapfile.c
41180721bNns9Na7w1nJ0ZVt8bhUNA linux-2.4.28-xen-sparse/mm/vmalloc.c
41505c57WAd5l1rlfCLNSCpx9J13vA linux-2.4.28-xen-sparse/net/core/skbuff.c
40f562372u3A7_kfbYYixPHJJxYUxA linux-2.6.10-rc2-xen-sparse/arch/xen/Kconfig
40f56237utH41NPukqHksuNf29IC9A linux-2.6.10-rc2-xen-sparse/arch/xen/Kconfig.drivers
40f56237penAAlWVBVDpeQZNFIg8CA linux-2.6.10-rc2-xen-sparse/arch/xen/Makefile
@@ -251,6 +251,8 @@
410a94a4KT6I6X0LVc7djB39tRDp4g linux-2.6.10-rc2-xen-sparse/mm/page_alloc.c
41505c572m-s9ATiO1LiD1GPznTTIg linux-2.6.10-rc2-xen-sparse/net/core/skbuff.c
4149ec79wMpIHdvbntxqVGLRZZjPxw linux-2.6.10-rc2-xen-sparse/net/ipv4/raw.c
41ab440bnpxZdWShZrGgM9pPaz5rmA linux-2.6.9-xen-sparse/arch/xen/i386/kernel/cpu/mtrr/Makefile
41ab440bBKWz-aEOEojU4PAMXe3Ppg linux-2.6.9-xen-sparse/arch/xen/i386/kernel/cpu/mtrr/main.c
413cb1e4zst25MDYjg63Y-NGC5_pLg netbsd-2.0-xen-sparse/Makefile
413cb1e5c_Mkxf_X0zimEhTKI_l4DA netbsd-2.0-xen-sparse/mkbuildtree
413cb1e5kY_Zil7-b0kI6hvCIxBEYg netbsd-2.0-xen-sparse/nbconfig-xen
@@ -335,20 +337,35 @@
40e1b09dMYB4ItGCqcMIzirdMd9I-w tools/libxutil/Makefile
40e033325Sjqs-_4TuzeUEprP_gYFg tools/libxutil/allocate.c
40e03332KYz7o1bn2MG_KPbBlyoIMA tools/libxutil/allocate.h
41a216cav5JJbtDQnusfuMa_1x_Xpw tools/libxutil/debug.h
40e9808eyjiahG5uF6AMelNVujBzCg tools/libxutil/enum.c
40e9808eZpbdn9q2KSSMGCNvY_ZgpQ tools/libxutil/enum.h
40e03332p5Dc_owJQRuN72ymJZddFQ tools/libxutil/file_stream.c
40e03332jWfB2viAhLSkq1WK0r_iDQ tools/libxutil/file_stream.h
40e03332rUjNMGg11n2rN6V4DCrvOg tools/libxutil/gzip_stream.c
40e033321O5Qg22haLoq5lpmk4tooQ tools/libxutil/gzip_stream.h
40e9808easXCzzAZQodEfKAhgUXSPA tools/libxutil/hash_table.c
40e9808e94BNXIVVKBFHC3rnkvwtJg tools/libxutil/hash_table.h
40e03332ihnBGzHykVwZnFmkAppb4g tools/libxutil/iostream.c
40e03332UGwbLR4wsw4ft14p0Yw5pg tools/libxutil/iostream.h
40e0333245DLDzJemeSVBLuutHtzEQ tools/libxutil/kernel_stream.c
40e03332aK0GkgpDdc-PVTkWKTeOBg tools/libxutil/kernel_stream.h
40e9808epW9iHcLXuO3QfUfLzB7onw tools/libxutil/lexis.c
40e9808egccMhCizayQRGtpBA3L5MQ tools/libxutil/lexis.h
41a216caM4z39Fzjb91rv9Ed_4By1A tools/libxutil/socket_stream.c
41a216caqinvF1I5FQMHA4HTRz8MSA tools/libxutil/socket_stream.h
40e03332KT_tnnoAMbPVAZBB7kSOAQ tools/libxutil/string_stream.c
40e03332-VtK6_OZa1vMHXFil8uq6w tools/libxutil/string_stream.h
40e9808e5_PLdodqVOSx0b4T_f5aeg tools/libxutil/sxpr.c
40e9808e0O4sHZtkDv5hlSqjYcdQAQ tools/libxutil/sxpr.h
40ec1cc6SIiGbynOi-1NtPesOlzF-Q tools/libxutil/sxpr_parser.c
40ec1cc6wpvvGxZiq4EFvNOcw0tUFg tools/libxutil/sxpr_parser.h
40e03332Rkvq6nn_UNjzAAK_Tk9v1g tools/libxutil/sys_net.c
40e03332lQHvQHw4Rh7VsT1_sui29A tools/libxutil/sys_net.h
40e033321smklZd7bDSdWvQCeIshtg tools/libxutil/sys_string.c
40e03332h5V611rRWURRLqb1Ekatxg tools/libxutil/sys_string.h
41a216cayFe2FQroFuzvNPw1AvNiqQ tools/libxutil/util.c
41a216ca7mgVSnCBHPCLkGOIqPS1CQ tools/libxutil/util.h
3f776bd2Xd-dUcPKlPN2vG89VGtfvQ tools/misc/Makefile
40ab2cfawIw8tsYo0dQKtp83h4qfTQ tools/misc/fakei386xen
3f6dc136ZKOjd8PIqLbFBl_v-rnkGg tools/misc/miniterm/Makefile
@@ -527,6 +544,64 @@
40fcefb3yMSrZvApO9ToIi-iQwnchA tools/sv/images/xen.png
41013a83z27rKvWIxAfUBMVZ1eDCDg tools/sv/inc/script.js
40fcefb3zGC9XNBkSwTEobCoq8YClA tools/sv/inc/style.css
41a21888_WlknVWjSxb32Fo13_ujsw tools/vnet/00README
41a21888bOiOJc7blzRbe4MNJoaYTw tools/vnet/Makefile
41a21888mg2k5HeiVjlQYEtJBZT4Qg tools/vnet/doc/vnet-module.txt
41a21888cuxfT8wjCdRR6V1lqf5NtA tools/vnet/doc/vnet-xend.txt
41a21888xEQJAIGktS6XQ4xz2TyA5g tools/vnet/examples/Makefile
41a21888FGQhPR5LJ1GRtOSIIN3QEw tools/vnet/examples/network-vnet
41a21888QPgKrulCfR9SY_pxZKU0KA tools/vnet/examples/vnet97.sxp
41a21888Gm0UBs1i7HqveT7Yz0u8DQ tools/vnet/examples/vnet98.sxp
41a21888r4oGPuGv2Lxl-thgV3H54w tools/vnet/examples/vnet99.sxp
41a21888c9TCRlUwJS9WBjB3e9aWgg tools/vnet/vnet-module/00README
41a21888K2ItolEkksc1MUqyTDI_Kg tools/vnet/vnet-module/Makefile
41a21888mJsFJD7bVMm-nrnWnalGBw tools/vnet/vnet-module/Makefile-2.4
41a21888Znze3-UCCBZ-Nxpj-bNeHA tools/vnet/vnet-module/Makefile-2.6
41a21889fwc1judJ7DYvyEviSJ3TPg tools/vnet/vnet-module/Makefile.ver
41a21889m_sYkdODF3j5uhMP-Guy9Q tools/vnet/vnet-module/Makefile.vnet
41a21889bXW2lC28U6KS_s5tOJ_W9Q tools/vnet/vnet-module/esp.c
41a21889L2MfLDsUFQxstt-0frIVmw tools/vnet/vnet-module/esp.h
41a21889V1jOsB2JExI-XQl720WHwg tools/vnet/vnet-module/etherip.c
41a21889IpMYbNufHMDXe2ndNw4JxA tools/vnet/vnet-module/etherip.h
41a21889LT9TNqO2EvTFIUTujrkX9w tools/vnet/vnet-module/if_etherip.h
41a21889PESythGZFG6kmSoOkkN2Nw tools/vnet/vnet-module/if_varp.h
41a21889nCPEomHqOyQ4vnhEm4II4g tools/vnet/vnet-module/linux/pfkeyv2.h
41a21889A_fw4pRmCbBfZdtRunM5Eg tools/vnet/vnet-module/random.c
41a218899Xy2dPKSu3pkuqaqkfKMTA tools/vnet/vnet-module/random.h
41a21889rIH5S1dv8ygdSsTGNlg0JA tools/vnet/vnet-module/sa.c
41a218896Z4vxy6gnV9h0fWRWu0lKQ tools/vnet/vnet-module/sa.h
41a21889qFD8BTbDpB55uVmSVDEsgw tools/vnet/vnet-module/sa_algorithm.c
41a21889r2AwTe-OCSSVMxBzz8uDtw tools/vnet/vnet-module/sa_algorithm.h
41a21889tvjtL7O8tMveVB8MdSKPnQ tools/vnet/vnet-module/skb_context.c
41a21889lD_QOUz2Msd7fB5rJQzfxA tools/vnet/vnet-module/skb_context.h
41a21889F1r1xnJamzdeuClR8MNwQg tools/vnet/vnet-module/skb_util.c
41a21889sS4bjVqEna24sS8NpV7SRA tools/vnet/vnet-module/skb_util.h
41a21889MDawEK3J_f_oAGnZznhG2w tools/vnet/vnet-module/tunnel.c
41a218896TlHXpVVqF50uz_u_WMXRw tools/vnet/vnet-module/tunnel.h
41a21889nQYbJbqrOApg_RbkwPtXGg tools/vnet/vnet-module/varp.c
41a21889Pev5MJlqqass6CxN4mmvPw tools/vnet/vnet-module/varp.h
41a21889GbsHHfkpA-PkOvltfEwpMA tools/vnet/vnet-module/varp_socket.c
41a21889sknn8zd5xCJlpQbs7MvxKg tools/vnet/vnet-module/vif.c
41a21889VsKKWpe6rcXOSLPy2FuNWQ tools/vnet/vnet-module/vif.h
41a21889dgkOyuSTVqy7D8TPIzrUyw tools/vnet/vnet-module/vnet.c
41a21889ocAdwk7V1nNt4iBpmYW-Mw tools/vnet/vnet-module/vnet.h
41a21889YrTiC0ArJSGFtiaHz2j1qQ tools/vnet/vnet-module/vnet_dev.c
41a21889rHT4vrC4VAfk7-xP_K5aBg tools/vnet/vnet-module/vnet_dev.h
41a21889qJj6GjT2f5hMHRvPS1AW4w tools/vnet/vnet-module/vnet_ioctl.c
41a2188a8W4xYB0LYm512agtoEv52g tools/vnet/vnet-module/vnet_ioctl.h
41a2188aFF_1T9OgpqUjjjaCqKB8lw tools/vnet/vnetd/Makefile
41a2188a9j84qS4CxqMLVCvyGpA93w tools/vnet/vnetd/connection.c
41a2188atexNEami9TNVYNkRSb7Bqg tools/vnet/vnetd/connection.h
41a2188abgYpITSrWoMGHHrM56nklw tools/vnet/vnetd/marshal.c
41a2188aUbOi5tAYwOS4aPixo1EGwQ tools/vnet/vnetd/marshal.h
41a2188aDJlSVB1s_st2MSWxW8kMwg tools/vnet/vnetd/select.c
41a2188aE9LUDdSSwNT3BWVWCvGSnQ tools/vnet/vnetd/select.h
41a2188aTbMKv_Eig12dSrBUEBl1Jg tools/vnet/vnetd/timer.c
41a2188aIzBGqQ6DUVzCxfBsN0Q6Ww tools/vnet/vnetd/timer.h
41a2188aIf3Xk6uvk7KzjdpOsflAEw tools/vnet/vnetd/vcache.c
41a2188ar6_vOO3_tEJQjmFVU3409A tools/vnet/vnetd/vcache.h
41a2188aETrGU60X9WtGhYVfU7z0Pw tools/vnet/vnetd/vnetd.c
41a2188ahYjemudGyB7078AWMFR-0w tools/vnet/vnetd/vnetd.h
4194e861IgTabTt8HOuh143QIJFD1Q tools/x2d2/Makefile
4194e861M2gcBz4i94cQYpqzi8n6UA tools/x2d2/cntrl_con.c
4194e8612TrrMvC8ZlA4h2ZYCPWz4g tools/x2d2/minixend.c
@@ -543,23 +618,13 @@
40e9808eysqT4VNDlJFqsZB2rdg4Qw tools/xfrd/connection.c
40e9808eyXfJUi4E0C3WSgrEXqQ1sQ tools/xfrd/connection.h
40e9808eULGwffNOE4kBrAfZ9YAVMA tools/xfrd/debug.h
40e9808eyjiahG5uF6AMelNVujBzCg tools/xfrd/enum.c
40e9808eZpbdn9q2KSSMGCNvY_ZgpQ tools/xfrd/enum.h
40e9808easXCzzAZQodEfKAhgUXSPA tools/xfrd/hash_table.c
40e9808e94BNXIVVKBFHC3rnkvwtJg tools/xfrd/hash_table.h
411b5139tfKZfWs1LQHmwDR_wjKoxQ tools/xfrd/http.h
40e9808epW9iHcLXuO3QfUfLzB7onw tools/xfrd/lexis.c
40e9808egccMhCizayQRGtpBA3L5MQ tools/xfrd/lexis.h
40e9808ePADCSKL1YgGCt2TbYPnYkw tools/xfrd/lzi_stream.c
40e9808eDNAdpF71o5teYb9DTT-PRw tools/xfrd/lzi_stream.h
40e9808eQxi0EzTcPJtosrzxEIjA-Q tools/xfrd/marshal.c
40e9808etg13xfRm0Lqd8vY-jHOoTg tools/xfrd/marshal.h
40e9808eCsmywryb036TdtRMJHDMmQ tools/xfrd/select.c
40e9808e99OcM547cKMTfmCVSoWVAw tools/xfrd/select.h
40e9808e5_PLdodqVOSx0b4T_f5aeg tools/xfrd/sxpr.c
40e9808e0O4sHZtkDv5hlSqjYcdQAQ tools/xfrd/sxpr.h
40ec1cc6SIiGbynOi-1NtPesOlzF-Q tools/xfrd/sxpr_parser.c
40ec1cc6wpvvGxZiq4EFvNOcw0tUFg tools/xfrd/sxpr_parser.h
40e9808eF3NVldqRNS5IHM8gbFAvpw tools/xfrd/xdr.c
40e9808ezXzoRHm7pybXU69NtnjimA tools/xfrd/xdr.h
40e9808edpUtf4bJ8IbqClPJj_OvbA tools/xfrd/xen_domain.c
@@ -570,6 +635,11 @@
3f72f1bdJPsV3JCnBqs9ddL9tr6D2g xen/COPYING
3ddb79bcbOVHh38VJzc97-JEGD4dJQ xen/Makefile
3ddb79bcWnTwYsQRWl_PaneJfa6p0w xen/Rules.mk
41a26ebcqaSGVQ8qTMwpPwOJSJ7qSw xen/arch/ia64/privop.c
41a26ebc4BOHDUsT0TSnryPeV2xfRA xen/arch/ia64/process.c
41a26ebcJ30TFl1v2kR8rqpEBvOtVw xen/arch/ia64/regionreg.c
41a26ebc--sjlYZQxmIxyCx3jw70qA xen/arch/ia64/vcpu.c
41a26ebc4jSBGQOuyNIPDST58mNbBw xen/arch/ia64/xenasm.S
3ddb79bcZbRBzT3elFWSX7u6NtMagQ xen/arch/x86/Makefile
3ddb79bcBQF85CfLS4i1WGZ4oLLaCA xen/arch/x86/Rules.mk
3e5636e5FAYZ5_vQnmgwFJfSdmO5Mw xen/arch/x86/acpi.c
@@ -589,6 +659,13 @@
3ddb79bdqfIcjkz_h9Hvtp8Tk_19Zw xen/arch/x86/irq.c
40ec29ffuOa1ZvmJHzFKyZn4k_RcXg xen/arch/x86/memory.c
3ddb79bdS4UeWWXDH-FaBKqcpMFcnw xen/arch/x86/mpparse.c
41aaf566Z4sTDgJ77eEg0TzzQ1ka6Q xen/arch/x86/mtrr/amd.c
41aaf566TOpOBXT00wwQGUh20f1rlA xen/arch/x86/mtrr/centaur.c
41aaf566yhr0zKYnGVSOQpkWMM0Kiw xen/arch/x86/mtrr/cyrix.c
41aaf567t3hFKsyfEFoy3KAnB-bj8w xen/arch/x86/mtrr/generic.c
41aaf567tqrKGSTDK8OVeAbpeoccPw xen/arch/x86/mtrr/main.c
41aaf567a36esU-rUK7twPiv-yTFyw xen/arch/x86/mtrr/mtrr.h
41aaf567DcTL6pqVtLZJI5cSryyA1A xen/arch/x86/mtrr/state.c
3f12cff65EV3qOG2j37Qm0ShgvXGRw xen/arch/x86/nmi.c
3ddb79bdHe6_Uij4-glW91vInNtBYQ xen/arch/x86/pci-irq.c
3ddb79bcZ_2FxINljqNSkqa17ISyJw xen/arch/x86/pci-pc.c
@@ -628,6 +705,7 @@
3e4cd9d8LAAghUY0hNIK72uc2ch_Nw xen/common/keyhandler.c
3ddb79bduhSEZI8xa7IbGQCpap5y2A xen/common/lib.c
3ddb79bdS39UXxUtZnaScie83-7VTQ xen/common/memory.c
41a61536SZbR6cj1ukWTb0DYU-vz9w xen/common/multicall.c
3ddb79bdD4SLmmdMD7yLW5HcUWucXw xen/common/page_alloc.c
3e54c38dkHAev597bPr71-hGzTdocg xen/common/perfc.c
4051bcecFeq4DE70p4zGO5setf47CA xen/common/physdev.c
@@ -723,6 +801,8 @@
40ec25fd7cSvbP7Biw91zaU_g0xsEQ xen/include/asm-x86/mm.h
3ddb79c3n_UbPuxlkNxvvLycClIkxA xen/include/asm-x86/mpspec.h
3ddb79c2wa0dA_LGigxOelSGbJ284Q xen/include/asm-x86/msr.h
41aaf567Mi3OishhvrCtET1y-mxQBg xen/include/asm-x86/mtrr.h
41a61536MFhNalgbVmYGXAhQsPTZNw xen/include/asm-x86/multicall.h
3ddb79c3xjYnrv5t3VqYlR4tNEOl4Q xen/include/asm-x86/page.h
3ddb79c3ysKUbxZuwKBRK3WXU2TlEg xen/include/asm-x86/pci.h
404f1bb41Yl-5ZjIWnG66HDCj6OIWA xen/include/asm-x86/pda.h
@@ -784,6 +864,7 @@
3ddb79c18Ajy7micDGQQfJ0zWgEHtA xen/include/xen/list.h
3ddb79c1gs2VbLbQlw0dcDUXYIepDA xen/include/xen/mm.h
3ddb79c1ieLZfGSFwfvvSQ2NK1BMSg xen/include/xen/multiboot.h
41a61536ii6j2lJ2rXwMOLaG1CHPvw xen/include/xen/multicall.h
3ddb79c2Fg44_PBPVxHSC0gTOMq4Ow xen/include/xen/pci.h
3ddb79c0MOVXq8qZDQRGb6z64_xAwg xen/include/xen/pci_ids.h
3e54c38dlSCVdyVM4PKcrSfzLLxWUQ xen/include/xen/perfc.h
+7
View File
@@ -59,6 +59,13 @@ tools/check/.*
tools/libxc/xen/*
tools/misc/miniterm/miniterm
tools/misc/xen_cpuperf
tools/vnet/gc
tools/vnet/gc*/*
tools/vnet/vnet-module/.tmp_versions/*
tools/vnet/vnet-module/.*.cmd
tools/vnet/vnet-module/*.ko
tools/vnet/vnet-module/vnet_module.mod.*
tools/vnetd/vnetd
tools/web-shutdown.tap
tools/xentrace/xentrace
tools/xfrd/xfrd
+6 -3
View File
@@ -7,9 +7,12 @@ INSTALL_DIR ?= $(DIST_DIR)/install
KERNELS ?= linux-2.6-xen0 linux-2.6-xenU
# linux-2.4-xen0 linux-2.4-xenU netbsd-2.0-xenU
# You may use wildcards in the above e.g. KERNELS=*2.4*
ALLKERNELS = $(patsubst buildconfigs/mk.%,%,$(wildcard buildconfigs/mk.*))
ALLSPARSETREES = $(patsubst %-xen-sparse,%,$(wildcard *-xen-sparse))
XKERNELS := $(foreach kernel, $(KERNELS), $(patsubst buildconfigs/mk.%,%,$(wildcard buildconfigs/mk.$(kernel))) )
export INSTALL_DIR
@@ -46,7 +49,7 @@ tools:
$(MAKE) prefix=$(INSTALL_DIR) dist=yes -C tools install
kernels:
for i in $(KERNELS) ; do $(MAKE) $$i-build ; done
for i in $(XKERNELS) ; do $(MAKE) $$i-build ; done
docs:
sh ./docs/check_pkgs && \
@@ -57,11 +60,11 @@ kbuild: kernels
# Delete the kernel build trees entirely
kdelete:
for i in $(KERNELS) ; do $(MAKE) $$i-delete ; done
for i in $(XKERNELS) ; do $(MAKE) $$i-delete ; done
# Clean the kernel build trees
kclean:
for i in $(KERNELS) ; do $(MAKE) $$i-clean ; done
for i in $(XKERNELS) ; do $(MAKE) $$i-clean ; done
# Make patches from kernel sparse trees
mkpatches:
+3
View File
@@ -48,6 +48,9 @@ pristine-%: %.tar.bz2
mv tmp-$(@F)/* $@
touch $@ # update timestamp to avoid rebuild
@rm -rf tmp-$(@F)
[ -d patches/$* ] && \
for i in patches/$*/*.patch ; do ( cd $@ ; patch -p1 <../$$i ) ; done || \
true
%-build:
$(MAKE) -f buildconfigs/mk.$* build
+3 -1
View File
@@ -707,7 +707,9 @@ culminating in a login prompt.
Ttylinux is a very small Linux distribution, designed to require very
few resources. We will use it as a concrete example of how to start a
Xen domain. Most users will probably want to install a full-featured
distribution once they have mastered the basics.
distribution once they have mastered the basics\footnote{ttylinux is
maintained by Pascal Schmidt. You can download source packages from
the distribution's home page: {\tt http://www.minimalinux.org/ttylinux/}}.
\begin{enumerate}
\item Download and extract the ttylinux disk image from the Files
@@ -1,6 +1,6 @@
VERSION = 2
PATCHLEVEL = 4
SUBLEVEL = 27
SUBLEVEL = 28
EXTRAVERSION =
KERNELRELEASE=$(VERSION).$(PATCHLEVEL).$(SUBLEVEL)$(EXTRAVERSION)
@@ -50,6 +50,10 @@ ifdef CONFIG_MK7
CFLAGS += $(call check_gcc,-march=athlon,-march=i686 -malign-functions=4)
endif
# Disable unit-at-a-time mode, it makes gcc use a lot more stack
# due to the lack of sharing of stacklots.
CFLAGS += $(call check_gcc,-fno-unit-at-a-time,)
HEAD := arch/xen/kernel/head.o arch/xen/kernel/init_task.o
SUBDIRS += arch/xen/kernel arch/xen/mm arch/xen/lib
@@ -146,7 +146,7 @@ if [ "$CONFIG_PROC_FS" = "y" ]; then
A.OUT CONFIG_KCORE_AOUT" ELF
fi
tristate 'Kernel support for a.out binaries' CONFIG_BINFMT_AOUT
tristate 'Kernel support for ELF binaries' CONFIG_BINFMT_ELF
bool 'Kernel support for ELF binaries' CONFIG_BINFMT_ELF
tristate 'Kernel support for MISC binaries' CONFIG_BINFMT_MISC
bool 'Select task to kill on out of memory condition' CONFIG_OOM_KILLER
@@ -1,5 +1,5 @@
#
# Automatically generated by make menuconfig: don't edit
# Automatically generated make config: don't edit
#
CONFIG_XEN=y
CONFIG_X86=y
@@ -220,6 +220,10 @@ CONFIG_IP_NF_TARGET_ULOG=y
# CONFIG_IP_SCTP is not set
# CONFIG_ATM is not set
CONFIG_VLAN_8021Q=y
#
#
#
# CONFIG_IPX is not set
# CONFIG_ATALK is not set
@@ -276,17 +280,27 @@ CONFIG_IDE=y
# IDE, ATA and ATAPI Block devices
#
CONFIG_BLK_DEV_IDE=y
#
# Please see Documentation/ide.txt for help/info on IDE drives
#
# CONFIG_BLK_DEV_HD_IDE is not set
# CONFIG_BLK_DEV_HD is not set
# CONFIG_BLK_DEV_IDE_SATA is not set
CONFIG_BLK_DEV_IDEDISK=y
CONFIG_IDEDISK_MULTI_MODE=y
CONFIG_IDEDISK_STROKE=y
# CONFIG_BLK_DEV_IDECS is not set
# CONFIG_BLK_DEV_DELKIN is not set
CONFIG_BLK_DEV_IDECD=y
CONFIG_BLK_DEV_IDETAPE=y
CONFIG_BLK_DEV_IDEFLOPPY=y
CONFIG_BLK_DEV_IDESCSI=y
CONFIG_IDE_TASK_IOCTL=y
#
# IDE chipset support/bugfixes
#
CONFIG_BLK_DEV_CMD640=y
CONFIG_BLK_DEV_CMD640_ENHANCED=y
# CONFIG_BLK_DEV_ISAPNP is not set
@@ -330,6 +344,10 @@ CONFIG_BLK_DEV_SLC90E66=y
CONFIG_BLK_DEV_TRM290=y
CONFIG_BLK_DEV_VIA82CXXX=y
CONFIG_IDE_CHIPSETS=y
#
# Note: most of these also require special kernel boot parameters
#
# CONFIG_BLK_DEV_4DRIVES is not set
# CONFIG_BLK_DEV_ALI14XX is not set
# CONFIG_BLK_DEV_DTC2278 is not set
@@ -351,12 +369,20 @@ CONFIG_BLK_DEV_PDC202XX=y
# SCSI support
#
CONFIG_SCSI=y
#
# SCSI support type (disk, tape, CD-ROM)
#
CONFIG_BLK_DEV_SD=y
CONFIG_SD_EXTRA_DEVS=40
# CONFIG_CHR_DEV_ST is not set
# CONFIG_CHR_DEV_OSST is not set
# CONFIG_BLK_DEV_SR is not set
CONFIG_CHR_DEV_SG=y
#
# Some SCSI devices (e.g. CD jukebox) support multiple LUNs
#
# CONFIG_SCSI_DEBUG_QUEUES is not set
# CONFIG_SCSI_MULTI_LUN is not set
# CONFIG_SCSI_CONSTANTS is not set
@@ -396,10 +422,13 @@ CONFIG_SCSI_MEGARAID=y
# CONFIG_SCSI_MEGARAID2 is not set
CONFIG_SCSI_SATA=y
# CONFIG_SCSI_SATA_SVW is not set
CONFIG_SCSI_ATA_PIIX=y
# CONFIG_SCSI_SATA_NV is not set
CONFIG_SCSI_SATA_PROMISE=y
CONFIG_SCSI_SATA_SX4=y
CONFIG_SCSI_SATA_SIL=y
CONFIG_SCSI_SATA_SIS=y
# CONFIG_SCSI_SATA_ULI is not set
CONFIG_SCSI_SATA_VIA=y
CONFIG_SCSI_SATA_VITESSE=y
CONFIG_SCSI_BUSLOGIC=y
@@ -643,6 +672,14 @@ CONFIG_PSMOUSE=y
# Joysticks
#
# CONFIG_INPUT_GAMEPORT is not set
#
# Input core support is needed for gameports
#
#
# Input core support is needed for joysticks
#
# CONFIG_QIC02_TAPE is not set
# CONFIG_IPMI_HANDLER is not set
# CONFIG_IPMI_PANIC_EVENT is not set
@@ -898,6 +935,7 @@ CONFIG_CRYPTO_MD5=m
CONFIG_CRYPTO_SHA1=m
CONFIG_CRYPTO_SHA256=m
CONFIG_CRYPTO_SHA512=m
# CONFIG_CRYPTO_WP512 is not set
CONFIG_CRYPTO_DES=m
CONFIG_CRYPTO_BLOWFISH=m
CONFIG_CRYPTO_TWOFISH=m
@@ -906,6 +944,8 @@ CONFIG_CRYPTO_AES=m
CONFIG_CRYPTO_CAST5=m
CONFIG_CRYPTO_CAST6=m
# CONFIG_CRYPTO_TEA is not set
# CONFIG_CRYPTO_KHAZAD is not set
# CONFIG_CRYPTO_ANUBIS is not set
CONFIG_CRYPTO_ARC4=m
CONFIG_CRYPTO_DEFLATE=m
# CONFIG_CRYPTO_MICHAEL_MIC is not set
@@ -1,5 +1,5 @@
#
# Automatically generated by make menuconfig: don't edit
# Automatically generated make config: don't edit
#
CONFIG_XEN=y
CONFIG_X86=y
@@ -12,11 +12,9 @@ CONFIG_UID16=y
#
# CONFIG_XEN_PRIVILEGED_GUEST is not set
# CONFIG_XEN_PHYSDEV_ACCESS is not set
# CONFIG_XEN_BLKDEV_BACKEND is not set
# CONFIG_XEN_NETDEV_BACKEND is not set
CONFIG_XEN_BLKDEV_FRONTEND=y
CONFIG_XEN_NETDEV_FRONTEND=y
CONFIG_XEN_SCRUB_PAGES=y
CONFIG_XEN_NETDEV_FRONTEND=y
CONFIG_XEN_BLKDEV_FRONTEND=y
CONFIG_NO_IDLE_HZ=y
# CONFIG_FOREIGN_PAGES is not set
CONFIG_NETDEVICES=y
@@ -156,6 +154,10 @@ CONFIG_IP_NF_TARGET_ULOG=y
# CONFIG_IP_SCTP is not set
# CONFIG_ATM is not set
CONFIG_VLAN_8021Q=y
#
#
#
# CONFIG_IPX is not set
# CONFIG_ATALK is not set
@@ -188,12 +190,20 @@ CONFIG_VLAN_8021Q=y
# SCSI support
#
CONFIG_SCSI=y
#
# SCSI support type (disk, tape, CD-ROM)
#
CONFIG_BLK_DEV_SD=y
CONFIG_SD_EXTRA_DEVS=40
# CONFIG_CHR_DEV_ST is not set
# CONFIG_CHR_DEV_OSST is not set
# CONFIG_BLK_DEV_SR is not set
CONFIG_CHR_DEV_SG=y
#
# Some SCSI devices (e.g. CD jukebox) support multiple LUNs
#
# CONFIG_SCSI_DEBUG_QUEUES is not set
# CONFIG_SCSI_MULTI_LUN is not set
# CONFIG_SCSI_CONSTANTS is not set
@@ -219,10 +229,13 @@ CONFIG_CHR_DEV_SG=y
# CONFIG_SCSI_MEGARAID2 is not set
# CONFIG_SCSI_SATA is not set
# CONFIG_SCSI_SATA_SVW is not set
# CONFIG_SCSI_ATA_PIIX is not set
# CONFIG_SCSI_SATA_NV is not set
# CONFIG_SCSI_SATA_PROMISE is not set
# CONFIG_SCSI_SATA_SX4 is not set
# CONFIG_SCSI_SATA_SIL is not set
# CONFIG_SCSI_SATA_SIS is not set
# CONFIG_SCSI_SATA_ULI is not set
# CONFIG_SCSI_SATA_VIA is not set
# CONFIG_SCSI_SATA_VITESSE is not set
# CONFIG_SCSI_BUSLOGIC is not set
@@ -305,6 +318,10 @@ CONFIG_PSMOUSE=y
# CONFIG_INPUT_EMU10K1 is not set
# CONFIG_INPUT_SERIO is not set
# CONFIG_INPUT_SERPORT is not set
#
# Joysticks
#
# CONFIG_INPUT_ANALOG is not set
# CONFIG_INPUT_A3D is not set
# CONFIG_INPUT_ADI is not set
@@ -179,7 +179,7 @@ static int write_ldt(void * ptr, unsigned long bytecount, int oldmode)
{
struct mm_struct * mm = current->mm;
__u32 entry_1, entry_2, *lp;
unsigned long phys_lp;
unsigned long mach_lp;
int error;
struct modify_ldt_ldt_s ldt_info;
@@ -208,7 +208,7 @@ static int write_ldt(void * ptr, unsigned long bytecount, int oldmode)
}
lp = (__u32 *) ((ldt_info.entry_number << 3) + (char *) mm->context.ldt);
phys_lp = arbitrary_virt_to_phys(lp);
mach_lp = arbitrary_virt_to_machine(lp);
/* Allow LDTs to be cleared by the user. */
if (ldt_info.base_addr == 0 && ldt_info.limit == 0) {
@@ -241,7 +241,7 @@ static int write_ldt(void * ptr, unsigned long bytecount, int oldmode)
/* Install the new entry ... */
install:
error = HYPERVISOR_update_descriptor(phys_lp, entry_1, entry_2);
error = HYPERVISOR_update_descriptor(mach_lp, entry_1, entry_2);
out_unlock:
up(&mm->context.sem);
@@ -304,7 +304,7 @@ void dump_thread(struct pt_regs * regs, struct user * dump)
* More important, however, is the fact that this allows us much
* more flexibility.
*/
void __switch_to(struct task_struct *prev_p, struct task_struct *next_p)
void fastcall __switch_to(struct task_struct *prev_p, struct task_struct *next_p)
{
struct thread_struct *next = &next_p->thread;
@@ -344,6 +344,7 @@ void __switch_to(struct task_struct *prev_p, struct task_struct *next_p)
op.cmd = DOM0_IOPL;
op.u.iopl.domain = DOMID_SELF;
op.u.iopl.iopl = next->io_pl;
op.interface_version = DOM0_INTERFACE_VERSION;
queue_multicall1(__HYPERVISOR_dom0_op, (unsigned long)&op);
}
@@ -581,7 +581,7 @@ handle_signal(unsigned long sig, struct k_sigaction *ka,
* want to handle. Thus you cannot kill init even with a SIGKILL even by
* mistake.
*/
int do_signal(struct pt_regs *regs, sigset_t *oldset)
int fastcall do_signal(struct pt_regs *regs, sigset_t *oldset)
{
siginfo_t info;
struct k_sigaction *ka;
@@ -84,27 +84,6 @@ asmlinkage void do_page_fault(struct pt_regs *regs,
error_code &= 3;
error_code |= (regs->xcs & 2) << 1;
#if MMU_UPDATE_DEBUG > 0
if ( (error_code == 0) && (address >= TASK_SIZE) )
{
unsigned long paddr = __pa(address);
int i;
for ( i = 0; i < mmu_update_queue_idx; i++ )
{
if ( update_debug_queue[i].ptr == paddr )
{
printk("XXX now(EIP=%08lx:ptr=%08lx) "
"then(%s/%d:p/v=%08lx/%08lx)\n",
regs->eip, address,
update_debug_queue[i].file,
update_debug_queue[i].line,
update_debug_queue[i].ptr,
update_debug_queue[i].val);
}
}
}
#endif
if ( flush_page_update_queue() != 0 )
return;
@@ -132,7 +132,7 @@ static inline int get_max_sectors(kdev_t dev)
return max_sectors[MAJOR(dev)][MINOR(dev)];
}
inline request_queue_t *blk_get_queue(kdev_t dev)
static inline request_queue_t *__blk_get_queue(kdev_t dev)
{
struct blk_dev_struct *bdev = blk_dev + MAJOR(dev);
@@ -142,6 +142,11 @@ inline request_queue_t *blk_get_queue(kdev_t dev)
return &blk_dev[MAJOR(dev)].request_queue;
}
request_queue_t *blk_get_queue(kdev_t dev)
{
return __blk_get_queue(dev);
}
static int __blk_cleanup_queue(struct request_list *list)
{
struct list_head *head = &list->free;
@@ -303,7 +308,7 @@ void blk_queue_bounce_limit(request_queue_t *q, u64 dma_addr)
/*
* can we merge the two segments, or do we need to start a new one?
*/
inline int blk_seg_merge_ok(struct buffer_head *bh, struct buffer_head *nxt)
static inline int __blk_seg_merge_ok(struct buffer_head *bh, struct buffer_head *nxt)
{
/*
* if bh and nxt are contigous and don't cross a 4g boundary, it's ok
@@ -314,6 +319,11 @@ inline int blk_seg_merge_ok(struct buffer_head *bh, struct buffer_head *nxt)
return 0;
}
int blk_seg_merge_ok(struct buffer_head *bh, struct buffer_head *nxt)
{
return __blk_seg_merge_ok(bh, nxt);
}
static inline int ll_new_segment(request_queue_t *q, struct request *req, int max_segments)
{
if (req->nr_segments < max_segments) {
@@ -326,7 +336,7 @@ static inline int ll_new_segment(request_queue_t *q, struct request *req, int ma
static int ll_back_merge_fn(request_queue_t *q, struct request *req,
struct buffer_head *bh, int max_segments)
{
if (blk_seg_merge_ok(req->bhtail, bh))
if (__blk_seg_merge_ok(req->bhtail, bh))
return 1;
return ll_new_segment(q, req, max_segments);
@@ -335,7 +345,7 @@ static int ll_back_merge_fn(request_queue_t *q, struct request *req,
static int ll_front_merge_fn(request_queue_t *q, struct request *req,
struct buffer_head *bh, int max_segments)
{
if (blk_seg_merge_ok(bh, req->bh))
if (__blk_seg_merge_ok(bh, req->bh))
return 1;
return ll_new_segment(q, req, max_segments);
@@ -346,7 +356,7 @@ static int ll_merge_requests_fn(request_queue_t *q, struct request *req,
{
int total_segments = req->nr_segments + next->nr_segments;
if (blk_seg_merge_ok(req->bhtail, next->bh))
if (__blk_seg_merge_ok(req->bhtail, next->bh))
total_segments--;
if (total_segments > max_segments)
@@ -1255,7 +1265,7 @@ void generic_make_request (int rw, struct buffer_head * bh)
* Stacking drivers are expected to know what they are doing.
*/
do {
q = blk_get_queue(bh->b_rdev);
q = __blk_get_queue(bh->b_rdev);
if (!q) {
printk(KERN_ERR
"generic_make_request: Trying to access "
@@ -1688,11 +1688,11 @@ static int tiocsetd(struct tty_struct *tty, int *arg)
static int send_break(struct tty_struct *tty, int duration)
{
set_current_state(TASK_INTERRUPTIBLE);
tty->driver.break_ctl(tty, -1);
if (!signal_pending(current))
if (!signal_pending(current)) {
set_current_state(TASK_INTERRUPTIBLE);
schedule_timeout(duration);
}
tty->driver.break_ctl(tty, 0);
if (signal_pending(current))
return -EINTR;
File renamed without changes.
@@ -350,7 +350,7 @@ static inline void make_pages_writable(void *va, unsigned int nr)
}
}
static inline unsigned long arbitrary_virt_to_phys(void *va)
static inline unsigned long arbitrary_virt_to_machine(void *va)
{
pgd_t *pgd = pgd_offset_k((unsigned long)va);
pmd_t *pmd = pmd_offset(pgd, (unsigned long)va);
@@ -38,7 +38,7 @@ extern int cpu_sibling_map[];
extern void smp_flush_tlb(void);
extern void smp_message_irq(int cpl, void *dev_id, struct pt_regs *regs);
extern void smp_send_reschedule(int cpu);
extern void fastcall smp_send_reschedule(int cpu);
extern void smp_invalidate_rcv(void); /* Process an NMI */
extern void (*mtrr_hook) (void);
extern void zap_low_mappings (void);
@@ -309,11 +309,9 @@ typedef struct page {
/* Make it prettier to test the above... */
#define UnlockPage(page) unlock_page(page)
#define Page_Uptodate(page) test_bit(PG_uptodate, &(page)->flags)
#define SetPageUptodate(page) \
do { \
arch_set_page_uptodate(page); \
set_bit(PG_uptodate, &(page)->flags); \
} while (0)
#ifndef SetPageUptodate
#define SetPageUptodate(page) set_bit(PG_uptodate, &(page)->flags)
#endif
#define ClearPageUptodate(page) clear_bit(PG_uptodate, &(page)->flags)
#define PageDirty(page) test_bit(PG_dirty, &(page)->flags)
#define SetPageDirty(page) set_bit(PG_dirty, &(page)->flags)
@@ -769,7 +769,7 @@ extern struct mm_struct * start_lazy_tlb(void);
extern void end_lazy_tlb(struct mm_struct *mm);
/* mmdrop drops the mm and the page tables */
extern inline void FASTCALL(__mmdrop(struct mm_struct *));
extern void FASTCALL(__mmdrop(struct mm_struct *));
static inline void mmdrop(struct mm_struct * mm)
{
if (atomic_dec_and_test(&mm->mm_count))
File renamed without changes.
File renamed without changes.
@@ -130,7 +130,7 @@ start:
return vaddr;
}
void *kmap_high(struct page *page, int nonblocking)
void fastcall *kmap_high(struct page *page, int nonblocking)
{
unsigned long vaddr;
@@ -155,7 +155,7 @@ void *kmap_high(struct page *page, int nonblocking)
return (void*) vaddr;
}
void kunmap_high(struct page *page)
void fastcall kunmap_high(struct page *page)
{
unsigned long vaddr;
unsigned long nr;
@@ -1439,7 +1439,7 @@ int handle_mm_fault(struct mm_struct *mm, struct vm_area_struct * vma,
* On a two-level page table, this ends up actually being entirely
* optimized away.
*/
pmd_t *__pmd_alloc(struct mm_struct *mm, pgd_t *pgd, unsigned long address)
pmd_t fastcall *__pmd_alloc(struct mm_struct *mm, pgd_t *pgd, unsigned long address)
{
pmd_t *new;
@@ -1473,7 +1473,7 @@ out:
* We've already handled the fast-path in-line, and we own the
* page table lock.
*/
pte_t *pte_alloc(struct mm_struct *mm, pmd_t *pmd, unsigned long address)
pte_t fastcall *pte_alloc(struct mm_struct *mm, pmd_t *pmd, unsigned long address)
{
if (pmd_none(*pmd)) {
pte_t *new;
File renamed without changes.
File renamed without changes.
@@ -109,7 +109,7 @@ static struct tq_struct free_pages_ok_no_irq_task = {
* -- wli
*/
static void __free_pages_ok (struct page *page, unsigned int order)
static void fastcall __free_pages_ok (struct page *page, unsigned int order)
{
unsigned long index, page_idx, mask, flags;
free_area_t *area;
@@ -242,7 +242,7 @@ static inline struct page * expand (zone_t *zone, struct page *page,
}
static FASTCALL(struct page * rmqueue(zone_t *zone, unsigned int order));
static struct page * rmqueue(zone_t *zone, unsigned int order)
static struct page * fastcall rmqueue(zone_t *zone, unsigned int order)
{
free_area_t * area = zone->free_area + order;
unsigned int curr_order = order;
@@ -288,7 +288,7 @@ static struct page * rmqueue(zone_t *zone, unsigned int order)
}
#ifndef CONFIG_DISCONTIGMEM
struct page *_alloc_pages(unsigned int gfp_mask, unsigned int order)
struct page * fastcall _alloc_pages(unsigned int gfp_mask, unsigned int order)
{
return __alloc_pages(gfp_mask, order,
contig_page_data.node_zonelists+(gfp_mask & GFP_ZONEMASK));
@@ -296,7 +296,7 @@ struct page *_alloc_pages(unsigned int gfp_mask, unsigned int order)
#endif
static struct page * FASTCALL(balance_classzone(zone_t *, unsigned int, unsigned int, int *));
static struct page * balance_classzone(zone_t * classzone, unsigned int gfp_mask, unsigned int order, int * freed)
static struct page * fastcall balance_classzone(zone_t * classzone, unsigned int gfp_mask, unsigned int order, int * freed)
{
struct page * page = NULL;
int __freed;
@@ -374,7 +374,7 @@ static inline unsigned long zone_free_pages(zone_t * zone, unsigned int order)
/*
* This is the 'heart' of the zoned buddy allocator:
*/
struct page * __alloc_pages(unsigned int gfp_mask, unsigned int order, zonelist_t *zonelist)
struct page * fastcall __alloc_pages(unsigned int gfp_mask, unsigned int order, zonelist_t *zonelist)
{
zone_t **zone, * classzone;
struct page * page;
@@ -487,7 +487,7 @@ struct page * __alloc_pages(unsigned int gfp_mask, unsigned int order, zonelist_
/*
* Common helper functions.
*/
unsigned long __get_free_pages(unsigned int gfp_mask, unsigned int order)
fastcall unsigned long __get_free_pages(unsigned int gfp_mask, unsigned int order)
{
struct page * page;
@@ -497,7 +497,7 @@ unsigned long __get_free_pages(unsigned int gfp_mask, unsigned int order)
return (unsigned long) page_address(page);
}
unsigned long get_zeroed_page(unsigned int gfp_mask)
fastcall unsigned long get_zeroed_page(unsigned int gfp_mask)
{
struct page * page;
@@ -510,13 +510,13 @@ unsigned long get_zeroed_page(unsigned int gfp_mask)
return 0;
}
void __free_pages(struct page *page, unsigned int order)
fastcall void __free_pages(struct page *page, unsigned int order)
{
if (!PageReserved(page) && put_page_testzero(page))
__free_pages_ok(page, order);
}
void free_pages(unsigned long addr, unsigned int order)
fastcall void free_pages(unsigned long addr, unsigned int order)
{
if (addr != 0)
__free_pages(virt_to_page(addr), order);
@@ -256,7 +256,7 @@ static int exclusive_swap_page(struct page *page)
* work, but we opportunistically check whether
* we need to get all the locks first..
*/
int can_share_swap_page(struct page *page)
int fastcall can_share_swap_page(struct page *page)
{
int retval = 0;
@@ -284,7 +284,7 @@ int can_share_swap_page(struct page *page)
* Work out if there are any other processes sharing this
* swap cache page. Free it if you can. Return success.
*/
int remove_exclusive_swap_page(struct page *page)
int fastcall remove_exclusive_swap_page(struct page *page)
{
int retval;
struct swap_info_struct * p;
File renamed without changes.
@@ -114,6 +114,7 @@ CONFIG_X86_CPUID=y
# CONFIG_EDD is not set
CONFIG_NOHIGHMEM=y
# CONFIG_HIGHMEM4G is not set
CONFIG_MTRR=y
CONFIG_HAVE_DEC_LOCK=y
# CONFIG_REGPARM is not set
@@ -573,6 +573,11 @@ config HAVE_ARCH_BOOTMEM_NODE
# low memory. Setting this option will put user-space page table
# entries in high memory.
config MTRR
bool
depends on XEN_PRIVILEGED_GUEST
default y
#config MTRR
# bool "MTRR (Memory Type Range Register) support"
# ---help---
@@ -18,7 +18,7 @@ c-obj-y += umc.o
#obj-$(CONFIG_X86_MCE) += ../../../../i386/kernel/cpu/mcheck/
#obj-$(CONFIG_MTRR) += ../../../../i386/kernel/cpu/mtrr/
obj-$(CONFIG_MTRR) += mtrr/
#obj-$(CONFIG_CPU_FREQ) += ../../../../i386/kernel/cpu/cpufreq/
c-link :=
@@ -64,6 +64,7 @@ ES = 0x20
ORIG_EAX = 0x24
EIP = 0x28
CS = 0x2C
EVENT_MASK = 0x2E
EFLAGS = 0x30
OLDESP = 0x34
OLDSS = 0x38
@@ -79,19 +80,23 @@ VM_MASK = 0x00020000
#define evtchn_upcall_pending /* 0 */
#define evtchn_upcall_mask 1
#define XEN_GET_VCPU_INFO(reg) movl HYPERVISOR_shared_info,reg
#define XEN_BLOCK_EVENTS(reg) movb $1,evtchn_upcall_mask(reg)
#define XEN_UNBLOCK_EVENTS(reg) movb $0,evtchn_upcall_mask(reg)
#define XEN_TEST_PENDING(reg) testb $0xFF,evtchn_upcall_pending(%reg)
#define XEN_SAVE_UPCALL_MASK(reg,tmp,off) \
movb evtchn_upcall_mask(reg), tmp; \
movb tmp, off(%esp)
#define XEN_TEST_PENDING(reg) testb $0xFF,evtchn_upcall_pending(reg)
#ifdef CONFIG_PREEMPT
#define preempt_stop movl HYPERVISOR_shared_info,%esi ; \
XEN_BLOCK_EVENTS(%esi)
#define preempt_stop XEN_BLOCK_EVENTS(%esi)
#else
#define preempt_stop
#define resume_kernel restore_all_enable_events
#endif
#define SAVE_ALL \
#define SAVE_ALL_NO_EVENTMASK \
cld; \
pushl %es; \
pushl %ds; \
@@ -104,7 +109,12 @@ VM_MASK = 0x00020000
pushl %ebx; \
movl $(__USER_DS), %edx; \
movl %edx, %ds; \
movl %edx, %es;
movl %edx, %es
#define SAVE_ALL \
SAVE_ALL_NO_EVENTMASK; \
XEN_GET_VCPU_INFO(%esi); \
XEN_SAVE_UPCALL_MASK(%esi,%dl,EVENT_MASK)
#define RESTORE_INT_REGS \
popl %ebx; \
@@ -154,6 +164,7 @@ ENTRY(ret_from_fork)
call schedule_tail
GET_THREAD_INFO(%ebp)
popl %eax
XEN_GET_VCPU_INFO(%esi)
jmp syscall_exit
/*
@@ -174,34 +185,31 @@ ret_from_intr:
testl $(VM_MASK | 2), %eax
jz resume_kernel # returning to kernel or vm86-space
ENTRY(resume_userspace)
movl HYPERVISOR_shared_info,%esi
XEN_BLOCK_EVENTS(%esi) # make tests atomic
# make sure we don't miss an interrupt
XEN_GET_VCPU_INFO(%esi)
XEN_BLOCK_EVENTS(%esi) # make sure we don't miss an interrupt
# setting need_resched or sigpending
# between sampling and the iret
ret_syscall_tests:
movl TI_flags(%ebp), %ecx
andl $_TIF_WORK_MASK, %ecx # is there any work to be done on
# int/exception return?
jne work_pending
jmp restore_all_enable_events
jmp restore_all
#ifdef CONFIG_PREEMPT
ENTRY(resume_kernel)
movl HYPERVISOR_shared_info,%esi
XEN_GET_VCPU_INFO(%esi)
cmpl $0,TI_preempt_count(%ebp) # non-zero preempt_count ?
jnz restore_all_enable_events
jnz restore_all
need_resched:
movl TI_flags(%ebp), %ecx # need_resched set ?
testb $_TIF_NEED_RESCHED, %cl
jz restore_all_enable_events
testl $IF_MASK,EFLAGS(%esp) # interrupts off (exception path) ?
jz restore_all_enable_events
jz restore_all
testb $0xFF,EVENT_MASK(%esp) # interrupts off (exception path) ?
jnz restore_all
movl $PREEMPT_ACTIVE,TI_preempt_count(%ebp)
XEN_UNBLOCK_EVENTS(%esi) # reenable event callbacks
XEN_UNBLOCK_EVENTS(%esi)
call schedule
movl HYPERVISOR_shared_info,%esi
XEN_BLOCK_EVENTS(%esi) # make tests atomic
XEN_BLOCK_EVENTS(%esi)
movl $0,TI_preempt_count(%ebp)
jmp need_resched
#endif
@@ -267,35 +275,44 @@ syscall_call:
call *sys_call_table(,%eax,4)
movl %eax,EAX(%esp) # store the return value
syscall_exit:
movl HYPERVISOR_shared_info,%esi
XEN_BLOCK_EVENTS(%esi) # make tests atomic
# make sure we don't miss an interrupt
XEN_BLOCK_EVENTS(%esi) # make sure we don't miss an interrupt
# setting need_resched or sigpending
# between sampling and the iret
movl TI_flags(%ebp), %ecx
testw $_TIF_ALLWORK_MASK, %cx # current->work
jne syscall_exit_work
jmp restore_all_enable_events
restore_all:
testl $VM_MASK, EFLAGS(%esp)
jnz resume_vm86
movb EVENT_MASK(%esp), %al
notb %al # %al == ~saved_mask
andb evtchn_upcall_mask(%esi),%al
andb $1,%al # %al == mask & ~saved_mask
jnz restore_all_enable_events # != 0 => reenable event delivery
RESTORE_ALL
resume_vm86:
XEN_UNBLOCK_EVENTS(%esi)
RESTORE_REGS
movl %eax,(%esp)
movl $__HYPERVISOR_switch_vm86,%eax
int $0x82
ud2
# perform work that needs to be done immediately before resumption
ALIGN
work_pending:
XEN_UNBLOCK_EVENTS(%esi) # reenable event callbacks
testb $_TIF_NEED_RESCHED, %cl
jz work_notifysig
work_resched:
call schedule
movl HYPERVISOR_shared_info,%esi
XEN_BLOCK_EVENTS(%esi) # make tests atomic
# make sure we don't miss an interrupt
XEN_BLOCK_EVENTS(%esi) # make sure we don't miss an interrupt
# setting need_resched or sigpending
# between sampling and the iret
movl TI_flags(%ebp), %ecx
andl $_TIF_WORK_MASK, %ecx # is there any work to be done other
# than syscall tracing?
jz restore_all_enable_events
# XXXcl sti missing???
XEN_UNBLOCK_EVENTS(%esi) # reenable event callbacks
jz restore_all
testb $_TIF_NEED_RESCHED, %cl
jnz work_resched
@@ -307,8 +324,7 @@ work_notifysig: # deal with pending signals and
# vm86-space
xorl %edx, %edx
call do_notify_resume
movl HYPERVISOR_shared_info,%esi
jmp restore_all_enable_events
jmp restore_all
ALIGN
work_notifysig_v86:
@@ -318,8 +334,7 @@ work_notifysig_v86:
movl %eax, %esp
xorl %edx, %edx
call do_notify_resume
movl HYPERVISOR_shared_info,%esi
jmp restore_all_enable_events
jmp restore_all
# perform syscall exit tracing
ALIGN
@@ -336,11 +351,9 @@ syscall_trace_entry:
# perform syscall exit tracing
ALIGN
syscall_exit_work:
movl HYPERVISOR_shared_info,%esi
testb $(_TIF_SYSCALL_TRACE|_TIF_SYSCALL_AUDIT|_TIF_SINGLESTEP), %cl
jz work_pending
XEN_UNBLOCK_EVENTS(%esi) # reenable event callbacks
# could let do_syscall_trace() call
XEN_UNBLOCK_EVENTS(%esi) # could let do_syscall_trace() call
# schedule() instead
movl %esp, %eax
movl $1, %edx
@@ -360,6 +373,44 @@ syscall_badsys:
movl $-ENOSYS,EAX(%esp)
jmp resume_userspace
#if 0 /* XEN */
/*
* Build the entry stubs and pointer table with
* some assembler magic.
*/
.data
ENTRY(interrupt)
.text
vector=0
ENTRY(irq_entries_start)
.rept NR_IRQS
ALIGN
1: pushl $vector-256
jmp common_interrupt
.data
.long 1b
.text
vector=vector+1
.endr
ALIGN
common_interrupt:
SAVE_ALL
call do_IRQ
jmp ret_from_intr
#define BUILD_INTERRUPT(name, nr) \
ENTRY(name) \
pushl $nr-256; \
SAVE_ALL \
call smp_/**/name; \
jmp ret_from_intr;
/* The include is where all of the SMP etc. interrupts come from */
#include "entry_arch.h"
#endif /* XEN */
ENTRY(divide_error)
pushl $0 # no error code
pushl $do_divide_error
@@ -385,6 +436,8 @@ error_code:
movl %ecx, %ds
movl %ecx, %es
movl %esp,%eax # pt_regs pointer
XEN_GET_VCPU_INFO(%esi)
XEN_SAVE_UPCALL_MASK(%esi,%dl,EVENT_MASK+8)
call *%edi
jmp ret_from_exception
@@ -401,24 +454,24 @@ error_code:
# activation and restart the handler using the previous one.
ENTRY(hypervisor_callback)
pushl %eax
SAVE_ALL
GET_THREAD_INFO(%ebp)
SAVE_ALL_NO_EVENTMASK
movl EIP(%esp),%eax
cmpl $scrit,%eax
jb 11f
cmpl $ecrit,%eax
jb critical_region_fixup
11: push %esp
11: XEN_GET_VCPU_INFO(%esi)
movb $0, EVENT_MASK(%esp)
push %esp
call evtchn_do_upcall
add $4,%esp
movl HYPERVISOR_shared_info,%esi
movb CS(%esp),%cl
test $2,%cl # slow return to ring 2 or 3
jne ret_syscall_tests
jmp ret_from_intr
ALIGN
restore_all_enable_events:
safesti:XEN_UNBLOCK_EVENTS(%esi) # reenable event callbacks
XEN_UNBLOCK_EVENTS(%esi)
scrit: /**** START OF CRITICAL REGION ****/
testb $1,evtchn_upcall_pending(%esi)
XEN_TEST_PENDING(%esi)
jnz 14f # process more events if necessary...
RESTORE_ALL
14: XEN_BLOCK_EVENTS(%esi)
@@ -450,7 +503,7 @@ critical_region_fixup:
jmp 11b
critical_fixup_table:
.byte 0x00,0x00,0x00 # testb $0xff,(%esi)
.byte 0x00,0x00,0x00 # testb $0xff,(%esi) = XEN_TEST_PENDING
.byte 0x00,0x00 # jnz 14f
.byte 0x00 # pop %ebx
.byte 0x04 # pop %ecx
@@ -468,11 +521,13 @@ critical_fixup_table:
# Hypervisor uses this for application faults while it executes.
ENTRY(failsafe_callback)
1: popl %ds
2: popl %es
3: popl %fs
4: popl %gs
5: iret
1: popl %ds
2: popl %es
3: popl %fs
4: popl %gs
subl $4,%esp
SAVE_ALL
jmp ret_from_exception
.section .fixup,"ax"; \
6: movl $0,(%esp); \
jmp 1b; \
@@ -482,12 +537,6 @@ ENTRY(failsafe_callback)
jmp 3b; \
9: movl $0,(%esp); \
jmp 4b; \
10: pushl %ss; \
popl %ds; \
pushl %ss; \
popl %es; \
pushl $11; \
call do_exit; \
.previous; \
.section __ex_table,"a";\
.align 4; \
@@ -495,7 +544,6 @@ ENTRY(failsafe_callback)
.long 2b,7b; \
.long 3b,8b; \
.long 4b,9b; \
.long 5b,10b; \
.previous
ENTRY(coprocessor_error)
@@ -548,10 +596,10 @@ debug_stack_correct:
movl %esp,%eax # pt_regs pointer
call do_debug
testl %eax,%eax
jnz restore_all_enable_events
jnz restore
jmp ret_from_exception
#if 0
#if 0 /* XEN */
/*
* NMI is doubly nasty. It can happen _while_ we're handling
* a debug fault, and the debug fault hasn't yet been able to
@@ -595,7 +643,7 @@ nmi_debug_stack_check:
nmi_debug_stack_fixup:
FIX_STACK(24,nmi_stack_correct, 1)
jmp nmi_stack_correct
#endif
#endif /* XEN */
ENTRY(int3)
pushl $-1 # mark this as an int
@@ -604,7 +652,7 @@ ENTRY(int3)
movl %esp,%eax # pt_regs pointer
call do_int3
testl %eax,%eax
jnz restore_all_enable_events
jnz restore_all
jmp ret_from_exception
ENTRY(overflow)
@@ -627,10 +675,6 @@ ENTRY(coprocessor_segment_overrun)
pushl $do_coprocessor_segment_overrun
jmp error_code
ENTRY(double_fault)
pushl $do_double_fault
jmp error_code
ENTRY(invalid_TSS)
pushl $do_invalid_TSS
jmp error_code
@@ -655,31 +699,31 @@ ENTRY(alignment_check)
# which is the linear faulting address.
# fastcall register usage: %eax = pt_regs, %edx = error code,
# %ecx = fault address
#define PAGE_FAULT_STUB(_name1, _name2) \
ENTRY(_name1) \
pushl %ds ; \
pushl %eax ; \
xorl %eax, %eax ; \
pushl %ebp ; \
pushl %edi ; \
pushl %esi ; \
pushl %edx ; \
decl %eax /* eax = -1 */ ; \
pushl %ecx ; \
pushl %ebx ; \
cld ; \
movl %es,%edi ; \
movl ES(%esp), %ecx /* get the faulting address */ ; \
movl ORIG_EAX(%esp), %edx /* get the error code */ ; \
movl %eax, ORIG_EAX(%esp) ; \
movl %edi, ES(%esp) ; \
movl $(__KERNEL_DS), %eax ; \
movl %eax, %ds ; \
movl %eax, %es ; \
movl %esp,%eax /* pt_regs pointer */ ; \
call _name2 ; \
jmp ret_from_exception ;
PAGE_FAULT_STUB(page_fault, do_page_fault)
ENTRY(page_fault)
pushl %ds
pushl %eax
xorl %eax, %eax
pushl %ebp
pushl %edi
pushl %esi
pushl %edx
decl %eax /* eax = -1 */
pushl %ecx
pushl %ebx
cld
movl %es,%edi
movl ES(%esp), %ecx /* get the faulting address */
movl ORIG_EAX(%esp), %edx /* get the error code */
movl %eax, ORIG_EAX(%esp)
movl %edi, ES(%esp)
movl $(__KERNEL_DS),%eax
movl %eax, %ds
movl %eax, %es
movl %esp,%eax /* pt_regs pointer */
XEN_GET_VCPU_INFO(%esi)
XEN_SAVE_UPCALL_MASK(%esi,%bl,EVENT_MASK+12)
call do_page_fault
jmp ret_from_exception
#ifdef CONFIG_X86_MCE
ENTRY(machine_check)
@@ -807,7 +851,7 @@ ENTRY(sys_call_table)
.long sys_iopl /* 110 */
.long sys_vhangup
.long sys_ni_syscall /* old "idle" system call */
.long sys_ni_syscall /* disable sys_vm86old */
.long sys_vm86old
.long sys_wait4
.long sys_swapoff /* 115 */
.long sys_sysinfo
@@ -193,7 +193,7 @@ static int write_ldt(void __user * ptr, unsigned long bytecount, int oldmode)
{
struct mm_struct * mm = current->mm;
__u32 entry_1, entry_2, *lp;
unsigned long phys_lp;
unsigned long mach_lp;
int error;
struct user_desc ldt_info;
@@ -222,7 +222,7 @@ static int write_ldt(void __user * ptr, unsigned long bytecount, int oldmode)
}
lp = (__u32 *) ((ldt_info.entry_number << 3) + (char *) mm->context.ldt);
phys_lp = arbitrary_virt_to_phys(lp);
mach_lp = arbitrary_virt_to_machine(lp);
/* Allow LDTs to be cleared by the user. */
if (ldt_info.base_addr == 0 && ldt_info.limit == 0) {
@@ -240,7 +240,7 @@ static int write_ldt(void __user * ptr, unsigned long bytecount, int oldmode)
/* Install the new entry ... */
install:
error = HYPERVISOR_update_descriptor(phys_lp, entry_1, entry_2);
error = HYPERVISOR_update_descriptor(mach_lp, entry_1, entry_2);
out_unlock:
up(&mm->context.sem);
@@ -538,6 +538,7 @@ struct task_struct fastcall * __switch_to(struct task_struct *prev_p, struct tas
op.cmd = DOM0_IOPL;
op.u.iopl.domain = DOMID_SELF;
op.u.iopl.iopl = next->io_pl;
op.interface_version = DOM0_INTERFACE_VERSION;
queue_multicall1(__HYPERVISOR_dom0_op, (unsigned long)&op);
}
@@ -1389,10 +1389,11 @@ void __init setup_arch(char **cmdline_p)
init_mm.end_data = (unsigned long) _edata;
init_mm.brk = (PFN_UP(__pa(xen_start_info.pt_base)) + xen_start_info.nr_pt_frames) << PAGE_SHIFT;
code_resource.start = virt_to_phys(_text);
code_resource.end = virt_to_phys(_etext)-1;
data_resource.start = virt_to_phys(_etext);
data_resource.end = virt_to_phys(_edata)-1;
/* XEN: This is nonsense: kernel may not even be contiguous in RAM. */
/*code_resource.start = virt_to_phys(_text);*/
/*code_resource.end = virt_to_phys(_etext)-1;*/
/*data_resource.start = virt_to_phys(_etext);*/
/*data_resource.end = virt_to_phys(_edata)-1;*/
parse_cmdline_early(cmdline_p);
@@ -76,7 +76,6 @@ asmlinkage void overflow(void);
asmlinkage void bounds(void);
asmlinkage void invalid_op(void);
asmlinkage void device_not_available(void);
asmlinkage void double_fault(void);
asmlinkage void coprocessor_segment_overrun(void);
asmlinkage void invalid_TSS(void);
asmlinkage void segment_not_present(void);
@@ -455,7 +454,6 @@ DO_VM86_ERROR( 4, SIGSEGV, "overflow", overflow)
DO_VM86_ERROR( 5, SIGSEGV, "bounds", bounds)
DO_ERROR_INFO( 6, SIGILL, "invalid operand", invalid_op, ILL_ILLOPN, regs->eip)
DO_VM86_ERROR( 7, SIGSEGV, "device not available", device_not_available)
DO_ERROR( 8, SIGSEGV, "double fault", double_fault)
DO_ERROR( 9, SIGFPE, "coprocessor segment overrun", coprocessor_segment_overrun)
DO_ERROR(10, SIGSEGV, "invalid TSS", invalid_TSS)
DO_ERROR(11, SIGBUS, "segment not present", segment_not_present)
@@ -964,7 +962,6 @@ static trap_info_t trap_table[] = {
{ 5, 3, __KERNEL_CS, (unsigned long)bounds },
{ 6, 0, __KERNEL_CS, (unsigned long)invalid_op },
{ 7, 0, __KERNEL_CS, (unsigned long)device_not_available },
{ 8, 0, __KERNEL_CS, (unsigned long)double_fault },
{ 9, 0, __KERNEL_CS, (unsigned long)coprocessor_segment_overrun },
{ 10, 0, __KERNEL_CS, (unsigned long)invalid_TSS },
{ 11, 0, __KERNEL_CS, (unsigned long)segment_not_present },
@@ -56,62 +56,6 @@ static mmu_update_t update_queue[QUEUE_SIZE];
unsigned int mmu_update_queue_idx = 0;
#define idx mmu_update_queue_idx
#if MMU_UPDATE_DEBUG > 0
page_update_debug_t update_debug_queue[QUEUE_SIZE] = {{0}};
#undef queue_l1_entry_update
#undef queue_l2_entry_update
#endif
#if MMU_UPDATE_DEBUG > 3
static void DEBUG_allow_pt_reads(void)
{
pte_t *pte;
mmu_update_t update;
int i;
for ( i = idx-1; i >= 0; i-- )
{
pte = update_debug_queue[i].ptep;
if ( pte == NULL ) continue;
update_debug_queue[i].ptep = NULL;
update.ptr = virt_to_machine(pte);
update.val = update_debug_queue[i].pteval;
HYPERVISOR_mmu_update(&update, 1, NULL);
}
}
static void DEBUG_disallow_pt_read(unsigned long va)
{
pte_t *pte;
pmd_t *pmd;
pgd_t *pgd;
unsigned long pteval;
/*
* We may fault because of an already outstanding update.
* That's okay -- it'll get fixed up in the fault handler.
*/
mmu_update_t update;
pgd = pgd_offset_k(va);
pmd = pmd_offset(pgd, va);
pte = pte_offset_kernel(pmd, va); /* XXXcl */
update.ptr = virt_to_machine(pte);
pteval = *(unsigned long *)pte;
update.val = pteval & ~_PAGE_PRESENT;
HYPERVISOR_mmu_update(&update, 1, NULL);
update_debug_queue[idx].ptep = pte;
update_debug_queue[idx].pteval = pteval;
}
#endif
#if MMU_UPDATE_DEBUG > 1
#undef queue_pt_switch
#undef queue_tlb_flush
#undef queue_invlpg
#undef queue_pgd_pin
#undef queue_pgd_unpin
#undef queue_pte_pin
#undef queue_pte_unpin
#undef queue_set_ldt
#endif
/*
* MULTICALL_flush_page_update_queue:
* This is a version of the flush which queues as part of a multicall.
@@ -123,13 +67,6 @@ void MULTICALL_flush_page_update_queue(void)
spin_lock_irqsave(&update_lock, flags);
if ( (_idx = idx) != 0 )
{
#if MMU_UPDATE_DEBUG > 1
if (idx > 1)
printk("Flushing %d entries from pt update queue\n", idx);
#endif
#if MMU_UPDATE_DEBUG > 3
DEBUG_allow_pt_reads();
#endif
idx = 0;
wmb(); /* Make sure index is cleared first to avoid double updates. */
queue_multicall3(__HYPERVISOR_mmu_update,
@@ -143,13 +80,6 @@ void MULTICALL_flush_page_update_queue(void)
static inline void __flush_page_update_queue(void)
{
unsigned int _idx = idx;
#if MMU_UPDATE_DEBUG > 1
if (idx > 1)
printk("Flushing %d entries from pt update queue\n", idx);
#endif
#if MMU_UPDATE_DEBUG > 3
DEBUG_allow_pt_reads();
#endif
idx = 0;
wmb(); /* Make sure index is cleared first to avoid double updates. */
if ( unlikely(HYPERVISOR_mmu_update(update_queue, _idx, NULL) < 0) )
@@ -183,9 +113,6 @@ void queue_l1_entry_update(pte_t *ptr, unsigned long val)
{
unsigned long flags;
spin_lock_irqsave(&update_lock, flags);
#if MMU_UPDATE_DEBUG > 3
DEBUG_disallow_pt_read((unsigned long)ptr);
#endif
update_queue[idx].ptr = virt_to_machine(ptr);
update_queue[idx].val = val;
increment_index();
@@ -303,9 +230,6 @@ void xen_l1_entry_update(pte_t *ptr, unsigned long val)
{
unsigned long flags;
spin_lock_irqsave(&update_lock, flags);
#if MMU_UPDATE_DEBUG > 3
DEBUG_disallow_pt_read((unsigned long)ptr);
#endif
update_queue[idx].ptr = virt_to_machine(ptr);
update_queue[idx].val = val;
increment_index_and_flush();
@@ -435,17 +435,24 @@ void zap_low_mappings (void)
void __init zone_sizes_init(void)
{
unsigned long zones_size[MAX_NR_ZONES] = {0, 0, 0};
unsigned int max_dma, high, low;
unsigned int /*max_dma,*/ high, low;
max_dma = virt_to_phys((char *)MAX_DMA_ADDRESS) >> PAGE_SHIFT;
/*
* XEN: Our notion of "DMA memory" is fake when running over Xen.
* We simply put all RAM in the DMA zone so that those drivers which
* needlessly specify GFP_DMA do not get starved of RAM unnecessarily.
* Those drivers that *do* require lowmem are screwed anyway when
* running over Xen!
*/
/*max_dma = virt_to_phys((char *)MAX_DMA_ADDRESS) >> PAGE_SHIFT;*/
low = max_low_pfn;
high = highend_pfn;
if (low < max_dma)
/*if (low < max_dma)*/
zones_size[ZONE_DMA] = low;
else {
zones_size[ZONE_DMA] = max_dma;
zones_size[ZONE_NORMAL] = low - max_dma;
/*else*/ {
/*zones_size[ZONE_DMA] = max_dma;*/
/*zones_size[ZONE_NORMAL] = low - max_dma;*/
#ifdef CONFIG_HIGHMEM
zones_size[ZONE_HIGHMEM] = high - low;
#endif
@@ -590,7 +597,7 @@ void __init paging_init(void)
HYPERVISOR_shared_info = (shared_info_t *)fix_to_virt(FIX_SHARED_INFO);
memset(empty_zero_page, 0, sizeof(empty_zero_page));
#ifdef CONFIG_XEN_PRIVILEGED_GUEST
#ifdef CONFIG_XEN_PHYSDEV_ACCESS
/* Setup mapping of lower 1st MB */
for (i = 0; i < NR_FIX_ISAMAPS; i++)
if (xen_start_info.flags & SIF_PRIVILEGED)
@@ -45,6 +45,20 @@ void __init bt_iounmap(void *addr, unsigned long size)
#else
/*
* Does @address reside within a non-highmem page that is local to this virtual
* machine (i.e., not an I/O page, nor a memory page belonging to another VM).
* See the comment that accompanies pte_pfn() in pgtable-2level.h to understand
* why this works.
*/
static inline int is_local_lowmem(unsigned long address)
{
extern unsigned long max_low_pfn;
unsigned long mfn = address >> PAGE_SHIFT;
unsigned long pfn = mfn_to_pfn(mfn);
return ((pfn < max_low_pfn) && (pfn_to_mfn(pfn) == mfn));
}
static inline void remap_area_pte(pte_t * pte, unsigned long address, unsigned long size,
unsigned long phys_addr, unsigned long flags)
{
@@ -149,19 +163,18 @@ void __iomem * __ioremap(unsigned long phys_addr, unsigned long size, unsigned l
if (!size || last_addr < phys_addr)
return NULL;
if (phys_addr >= 0x0 && last_addr < 0x100000)
return isa_bus_to_virt(phys_addr);
#ifdef CONFIG_XEN_PRIVILEGED_GUEST
/*
* Don't remap the low PCI/ISA area, it's always mapped..
*/
if (phys_addr >= 0xA0000 && last_addr < 0x100000)
return (void __iomem *) phys_to_virt(phys_addr);
if (phys_addr >= 0x0 && last_addr < 0x100000)
return isa_bus_to_virt(phys_addr);
#endif
/*
* Don't allow anybody to remap normal RAM that we're using..
*/
if (machine_to_phys(phys_addr) < virt_to_phys(high_memory)) {
if (is_local_lowmem(phys_addr)) {
char *t_addr, *t_end;
struct page *page;
@@ -228,7 +241,7 @@ void __iomem *ioremap_nocache (unsigned long phys_addr, unsigned long size)
/* Guaranteed to be > phys_addr, as per __ioremap() */
last_addr = phys_addr + size - 1;
if (machine_to_phys(last_addr) < virt_to_phys(high_memory)) {
if (is_local_lowmem(last_addr)) {
struct page *ppage = virt_to_page(bus_to_virt(phys_addr));
unsigned long npages;
@@ -255,17 +268,19 @@ void __iomem *ioremap_nocache (unsigned long phys_addr, unsigned long size)
void iounmap(volatile void __iomem *addr)
{
struct vm_struct *p;
if ((unsigned long)addr <= 0x100000)
return;
if ((void __force *) addr <= high_memory)
return;
#ifdef CONFIG_XEN_PRIVILEGED_GUEST
if ((unsigned long) addr >= fix_to_virt(FIX_ISAMAP_BEGIN))
return;
#endif
p = remove_vm_area((void *) (PAGE_MASK & (unsigned long __force) addr));
if (!p) {
printk("__iounmap: bad address %p\n", addr);
return;
}
if (p->flags && machine_to_phys(p->phys_addr) < virt_to_phys(high_memory)) {
if (p->flags && is_local_lowmem(p->phys_addr)) {
change_page_attr(virt_to_page(bus_to_virt(p->phys_addr)),
p->size >> PAGE_SHIFT,
PAGE_KERNEL);
@@ -285,14 +300,13 @@ void __init *bt_ioremap(unsigned long phys_addr, unsigned long size)
if (!size || last_addr < phys_addr)
return NULL;
if (phys_addr >= 0x0 && last_addr < 0x100000)
return isa_bus_to_virt(phys_addr);
#ifdef CONFIG_XEN_PRIVILEGED_GUEST
/*
* Don't remap the low PCI/ISA area, it's always mapped..
*/
if (phys_addr >= 0xA0000 && last_addr < 0x100000)
return phys_to_virt(phys_addr);
if (phys_addr >= 0x0 && last_addr < 0x100000)
return isa_bus_to_virt(phys_addr);
#endif
/*
* Mappings have to be page-aligned
@@ -329,10 +343,12 @@ void __init bt_iounmap(void *addr, unsigned long size)
enum fixed_addresses idx;
virt_addr = (unsigned long)addr;
if (virt_addr < 0x100000)
return;
if (virt_addr < fix_to_virt(FIX_BTMAP_BEGIN))
return;
#ifdef CONFIG_XEN_PRIVILEGED_GUEST
if (virt_addr >= fix_to_virt(FIX_ISAMAP_BEGIN))
return;
#endif
offset = virt_addr & ~PAGE_MASK;
nrpages = PAGE_ALIGN(offset + size - 1) >> PAGE_SHIFT;
@@ -195,7 +195,7 @@ void pte_ctor(void *pte, kmem_cache_t *cache, unsigned long unused)
clear_page(pte);
make_page_readonly(pte);
queue_pte_pin(virt_to_phys(pte));
queue_pte_pin(__pa(pte));
flush_page_update_queue();
}
@@ -204,7 +204,7 @@ void pte_dtor(void *pte, kmem_cache_t *cache, unsigned long unused)
struct page *page = virt_to_page(pte);
ClearPageForeign(page);
queue_pte_unpin(virt_to_phys(pte));
queue_pte_unpin(__pa(pte));
make_page_writable(pte);
flush_page_update_queue();
}
Loaded 100 of 262 files, more files were not shown because too many files have changed in this diff. Show more
Reference in new issue
Block a user
Blocking a user prevents them from interacting with repositories, such as opening or commenting on pull requests or issues. Learn more about blocking a user.