mirror of
https://github.com/xen-project/xen.git
synced 2026-10-29 18:50:05 +01:00
bitkeeper revision 1.1159.170.55 (41ab5c23QYvtqtjdNhgpIdW_c5ibrA)
sync w/ head.
This commit is contained in:
commit
0cd5cd8c77
262 files changed
+21448
-1216
No files matched your search
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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:
|
||||
|
||||
@@ -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
@@ -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
|
||||
File renamed without changes.
+1
-1
@@ -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
|
||||
|
||||
+41
-1
@@ -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
|
||||
+22
-5
@@ -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
|
||||
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
+3
-3
@@ -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);
|
||||
File renamed without changes.
+2
-1
@@ -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);
|
||||
}
|
||||
|
||||
File renamed without changes.
+1
-1
@@ -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;
|
||||
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
-21
@@ -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;
|
||||
|
||||
File renamed without changes.
File renamed without changes.
File renamed without changes.
+16
-6
@@ -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 "
|
||||
File renamed without changes.
File renamed without changes.
+3
-3
@@ -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.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
+1
-1
@@ -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);
|
||||
File renamed without changes.
File renamed without changes.
File renamed without changes.
+1
-1
@@ -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);
|
||||
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
+3
-5
@@ -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)
|
||||
+1
-1
@@ -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.
File renamed without changes.
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.
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