bitkeeper revision 1.1159.1.454 (41a61ea2XESj-qDfpRLao5W410NKvg)

sync w/ head.
This commit is contained in:
cl349@arcadians.cl.cam.ac.uk committed 2004-11-25 18:04:18 +00:00
commit 4df87f3860
111 files changed
+547 -556

No files matched your search

+86 -83
View File
@@ -44,89 +44,89 @@
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
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.9-xen-sparse/arch/xen/Kconfig
40f56237utH41NPukqHksuNf29IC9A linux-2.6.9-xen-sparse/arch/xen/Kconfig.drivers
40f56237penAAlWVBVDpeQZNFIg8CA linux-2.6.9-xen-sparse/arch/xen/Makefile
@@ -708,6 +708,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
@@ -803,6 +804,7 @@
40ec25fd7cSvbP7Biw91zaU_g0xsEQ xen/include/asm-x86/mm.h
3ddb79c3n_UbPuxlkNxvvLycClIkxA xen/include/asm-x86/mpspec.h
3ddb79c2wa0dA_LGigxOelSGbJ284Q xen/include/asm-x86/msr.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
@@ -864,6 +866,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
+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:
@@ -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
@@ -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;
@@ -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.
@@ -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.
@@ -60,66 +60,6 @@ static spinlock_t update_lock = SPIN_LOCK_UNLOCKED;
DEFINE_PER_CPU(mmu_update_t, update_queue[QUEUE_SIZE]);
DEFINE_PER_CPU(unsigned int, 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)
{
int cpu = smp_processor_id();
int idx = per_cpu(mmu_update_queue_idx, cpu);
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)
{
int cpu = smp_processor_id();
int idx = per_cpu(mmu_update_queue_idx, cpu);
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.
@@ -134,13 +74,6 @@ void MULTICALL_flush_page_update_queue(void)
idx = per_cpu(mmu_update_queue_idx, cpu);
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
per_cpu(mmu_update_queue_idx, cpu) = 0;
wmb(); /* Make sure index is cleared first to avoid double updates. */
queue_multicall3(__HYPERVISOR_mmu_update,
@@ -155,13 +88,6 @@ static inline void __flush_page_update_queue(void)
{
int cpu = smp_processor_id();
unsigned int _idx = per_cpu(mmu_update_queue_idx, cpu);
#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
per_cpu(mmu_update_queue_idx, cpu) = 0;
wmb(); /* Make sure index is cleared first to avoid double updates. */
if ( unlikely(HYPERVISOR_mmu_update(&per_cpu(update_queue[0], cpu), _idx, NULL) < 0) )
@@ -200,9 +126,6 @@ void queue_l1_entry_update(pte_t *ptr, unsigned long val)
int idx;
unsigned long flags;
spin_lock_irqsave(&update_lock, flags);
#if MMU_UPDATE_DEBUG > 3
DEBUG_disallow_pt_read((unsigned long)ptr);
#endif
idx = per_cpu(mmu_update_queue_idx, cpu);
per_cpu(update_queue[idx], cpu).ptr = virt_to_machine(ptr);
per_cpu(update_queue[idx], cpu).val = val;
@@ -353,9 +276,6 @@ void xen_l1_entry_update(pte_t *ptr, unsigned long val)
int idx;
unsigned long flags;
spin_lock_irqsave(&update_lock, flags);
#if MMU_UPDATE_DEBUG > 3
DEBUG_disallow_pt_read((unsigned long)ptr);
#endif
idx = per_cpu(mmu_update_queue_idx, cpu);
per_cpu(update_queue[idx], cpu).ptr = virt_to_machine(ptr);
per_cpu(update_queue[idx], cpu).val = val;
@@ -90,16 +90,7 @@ typedef struct { unsigned long pmd; } pmd_t;
typedef struct { unsigned long pgd; } pgd_t;
typedef struct { unsigned long pgprot; } pgprot_t;
#define boot_pte_t pte_t /* or would you rather have a typedef */
#if 0 /* XXXcl for MMU_UPDATE_DEBUG */
static inline unsigned long pte_val(pte_t x)
{
unsigned long ret = x.pte_low;
if ( (ret & 1) ) ret = machine_to_phys(ret);
return ret;
}
#else
#define pte_val(x) (((x).pte_low & 1) ? machine_to_phys((x).pte_low) : (x).pte_low)
#endif
#define pte_val_ma(x) ((x).pte_low)
#define HPAGE_SHIFT 22
#endif
@@ -96,91 +96,6 @@ void xen_pte_pin(unsigned long ptr);
void xen_pte_unpin(unsigned long ptr);
void xen_set_ldt(unsigned long ptr, unsigned long bytes);
void xen_machphys_update(unsigned long mfn, unsigned long pfn);
#define MMU_UPDATE_DEBUG 0
#if MMU_UPDATE_DEBUG > 0
typedef struct {
void *ptr;
unsigned long val, pteval;
void *ptep;
int line; char *file;
} page_update_debug_t;
extern page_update_debug_t update_debug_queue[];
#define queue_l1_entry_update(_p,_v) ({ \
update_debug_queue[mmu_update_queue_idx].ptr = (_p); \
update_debug_queue[mmu_update_queue_idx].val = (_v); \
update_debug_queue[mmu_update_queue_idx].line = __LINE__; \
update_debug_queue[mmu_update_queue_idx].file = __FILE__; \
queue_l1_entry_update((_p),(_v)); \
})
#define queue_l2_entry_update(_p,_v) ({ \
update_debug_queue[mmu_update_queue_idx].ptr = (_p); \
update_debug_queue[mmu_update_queue_idx].val = (_v); \
update_debug_queue[mmu_update_queue_idx].line = __LINE__; \
update_debug_queue[mmu_update_queue_idx].file = __FILE__; \
queue_l2_entry_update((_p),(_v)); \
})
#endif
#if MMU_UPDATE_DEBUG > 1
#if MMU_UPDATE_DEBUG > 2
#undef queue_l1_entry_update
#define queue_l1_entry_update(_p,_v) ({ \
update_debug_queue[mmu_update_queue_idx].ptr = (_p); \
update_debug_queue[mmu_update_queue_idx].val = (_v); \
update_debug_queue[mmu_update_queue_idx].line = __LINE__; \
update_debug_queue[mmu_update_queue_idx].file = __FILE__; \
printk("L1 %s %d: %p/%08lx (%08lx -> %08lx)\n", __FILE__, __LINE__, \
(_p), virt_to_machine(_p), pte_val(*(_p)), \
(unsigned long)(_v)); \
queue_l1_entry_update((_p),(_v)); \
})
#endif
#undef queue_l2_entry_update
#define queue_l2_entry_update(_p,_v) ({ \
update_debug_queue[mmu_update_queue_idx].ptr = (_p); \
update_debug_queue[mmu_update_queue_idx].val = (_v); \
update_debug_queue[mmu_update_queue_idx].line = __LINE__; \
update_debug_queue[mmu_update_queue_idx].file = __FILE__; \
printk("L2 %s %d: %p/%08lx (%08lx -> %08lx)\n", __FILE__, __LINE__, \
(_p), virt_to_machine(_p), pmd_val(*_p), \
(unsigned long)(_v)); \
queue_l2_entry_update((_p),(_v)); \
})
#define queue_pt_switch(_p) ({ \
printk("PTSWITCH %s %d: %08lx\n", __FILE__, __LINE__, (_p)); \
queue_pt_switch(_p); \
})
#define queue_tlb_flush() ({ \
printk("TLB FLUSH %s %d\n", __FILE__, __LINE__); \
queue_tlb_flush(); \
})
#define queue_invlpg(_p) ({ \
printk("INVLPG %s %d: %08lx\n", __FILE__, __LINE__, (_p)); \
queue_invlpg(_p); \
})
#define queue_pgd_pin(_p) ({ \
printk("PGD PIN %s %d: %08lx/%08lx\n", __FILE__, __LINE__, (_p), \
phys_to_machine(_p)); \
queue_pgd_pin(_p); \
})
#define queue_pgd_unpin(_p) ({ \
printk("PGD UNPIN %s %d: %08lx\n", __FILE__, __LINE__, (_p)); \
queue_pgd_unpin(_p); \
})
#define queue_pte_pin(_p) ({ \
printk("PTE PIN %s %d: %08lx\n", __FILE__, __LINE__, (_p)); \
queue_pte_pin(_p); \
})
#define queue_pte_unpin(_p) ({ \
printk("PTE UNPIN %s %d: %08lx\n", __FILE__, __LINE__, (_p)); \
queue_pte_unpin(_p); \
})
#define queue_set_ldt(_p,_l) ({ \
printk("SETL LDT %s %d: %08lx %d\n", __FILE__, __LINE__, (_p), (_l)); \
queue_set_ldt((_p), (_l)); \
})
#endif
void _flush_page_update_queue(void);
#define flush_page_update_queue() do { \
+2 -1
View File
@@ -258,8 +258,9 @@ int Parser_pop(Parser *p){
int err = 0;
ParserState *s = p->state;
p->state = s->parent;
if (p->start_state == s)
if (p->start_state == s) {
p->start_state = NULL;
}
ParserState_free(s);
return err;
}
+18 -6
View File
@@ -1,5 +1,13 @@
export LINUX_RELEASE ?=2.6
export LINUX_SERIES ?=2.6
# Root path to install in.
# Set to '/' to install relative to filesystem root.
export prefix?=$(shell cd ../../dist/install && pwd)
.PHONY: all compile
.PHONY: gc-install gc-clean gc-prstine
.PHONY: vnetd vnet-module install dist clean pristine
all: compile
@@ -12,8 +20,12 @@ gc: gc.tar.gz
tar xfz gc.tar.gz
ln -sf gc?.? gc
gc-install: gc
(cd gc && ./configure --prefix=`pwd`/install && make && make install)
gc/Makefile:
(cd gc && ./configure --prefix=`pwd`/install)
gc-install: gc gc/Makefile
make -C gc
make -C gc install
gc-clean:
-$(MAKE) -C gc clean
@@ -21,8 +33,6 @@ gc-clean:
gc-pristine:
-rm -rf gc?.? gc
.PHONY: vnetd vnet-module install dist clean
vnetd: gc-install
$(MAKE) -C vnetd
@@ -35,8 +45,10 @@ install: compile
$(MAKE) -C examples install
dist: $(TARGET)
$(MAKE) prefix=`pwd`/../../install dist=yes install
$(MAKE) install
clean:
-$(MAKE) -C vnetd clean
-$(MAKE) -C vnet-module clean
pristine: clean gc-pristine
+8 -10
View File
@@ -6,36 +6,34 @@ The vnet module can be compiled for 2.4 or 2.6 series kernels.
The makefiles use the following variables, which
can be set in your env or on the make command line:
LINUX_RELEASE: linux release to compile for, 2.4 (default), or 2.6.
XENO_ROOT: root of the xen tree containing kernel source. Default '..'.
ROOT: root path to install in, default is XENO_ROOT/install.
Set to '/' to install relative to filesystem root.
KERNEL_VERSION: kernel version, default got from XENO_ROOT.
LINUX_SERIES: linux release to compile for, 2.4 (default), or 2.6.
XEN_ROOT: root of the xen tree containing kernel source.
KERNEL_VERSION: kernel version, default got from XEN_ROOT.
KERNEL_MINOR: kernel minor version, default -xen0.
KERNEL_SRC: path to kernel source, default linux-<VERSION> under XENO_ROOT.
KERNEL_SRC: path to kernel source, default linux-<VERSION> under XEN_ROOT.
*) For 2.4 kernel
To compile from scratch:
make clean
make
make LINUX_SERIES=2.4
This will build vnet_module.o in the current directory.
To install the module use
make install
make LINUX_SERIES=2.4 install
*) For 2.6 kernel
To compile from scratch:
make clean
make LINUX_RELEASE=2.6
make
This will build vnet_module.ko in the current directory.
To install the module use
make LINUX_RELEASE=2.6 install
make install
+2 -2
View File
@@ -20,9 +20,9 @@
#============================================================================
ifeq ($(src),)
LINUX_RELEASE ?=2.6
LINUX_SERIES ?=2.6
include Makefile-$(LINUX_RELEASE)
include Makefile-$(LINUX_SERIES)
#============================================================================
else
+1
View File
@@ -21,6 +21,7 @@
#============================================================================
# Vnet module makefile for 2.4 series kernels.
LINUX_SERIES ?=2.4
include Makefile.ver
KERNEL_MODULE := vnet_module.o
+1 -1
View File
@@ -21,7 +21,7 @@
#============================================================================
# Vnet module makefile for 2.6 series kernels.
LINUX_RELEASE ?= 2.6
LINUX_SERIES ?=2.6
include Makefile.ver
KERNEL_MODULE = vnet_module.ko
+3 -3
View File
@@ -29,14 +29,14 @@ XEN_ROOT ?=../../..
prefix ?=$(XEN_ROOT)/install/
#----------------------------------------------------------------------------
LINUX_RELEASE ?=2.6
LINUX_SERIES ?=2.6
KERNEL_MINOR ?=-xen0
LINUX_VERSION ?= $(shell ( /bin/ls -ld $(XEN_ROOT)/linux-$(LINUX_RELEASE).*-xen-sparse ) 2>/dev/null | \
LINUX_VERSION ?= $(shell ( /bin/ls -ld $(XEN_ROOT)/linux-$(LINUX_SERIES).*-xen-sparse ) 2>/dev/null | \
sed -e 's!^.*linux-\(.\+\)-xen-sparse!\1!' )
ifeq ($(LINUX_VERSION),)
$(error Kernel source for linux $(LINUX_RELEASE) not found)
$(error Kernel source for linux $(LINUX_SERIES) not found)
endif
KERNEL_VERSION =$(LINUX_VERSION)$(KERNEL_MINOR)
+22 -7
View File
@@ -32,6 +32,7 @@
#include <asm/shadow.h>
#include <xen/console.h>
#include <xen/elf.h>
#include <xen/multicall.h>
#if !defined(CONFIG_X86_64BITMODE)
/* No ring-3 access in initial page tables. */
@@ -431,17 +432,31 @@ long do_iopl(domid_t domain, unsigned int new_io_pl)
void hypercall_create_continuation(unsigned int op, unsigned int nr_args, ...)
{
execution_context_t *ec = get_execution_context();
unsigned long *preg = &ec->ebx;
struct mc_state *mcs = &mc_state[smp_processor_id()];
execution_context_t *ec;
unsigned long *preg;
unsigned int i;
va_list args;
ec->eax = op;
ec->eip -= 2; /* re-execute 'int 0x82' */
va_start(args, nr_args);
for ( i = 0; i < nr_args; i++ )
*preg++ = va_arg(args, unsigned long);
if ( test_bit(_MCSF_in_multicall, &mcs->flags) )
{
__set_bit(_MCSF_call_preempted, &mcs->flags);
for ( i = 0; i < nr_args; i++ )
mcs->call.args[i] = va_arg(args, unsigned long);
}
else
{
ec = get_execution_context();
ec->eax = op;
ec->eip -= 2; /* re-execute 'int 0x82' */
for ( i = 0, preg = &ec->ebx; i < nr_args; i++, preg++ )
*preg = va_arg(args, unsigned long);
}
va_end(args);
}
+44 -17
View File
@@ -1279,14 +1279,20 @@ static int do_extended_command(unsigned long ptr, unsigned long val)
return okay;
}
int do_mmu_update(mmu_update_t *ureqs, int count, int *success_count)
int do_mmu_update(
mmu_update_t *ureqs, unsigned int count, unsigned int *pdone)
{
/*
* We steal the m.s.b. of the @count parameter to indicate whether this
* invocation of do_mmu_update() is resuming a previously preempted call.
*/
#define MMU_UPDATE_PREEMPTED (~(~0U>>1))
mmu_update_t req;
unsigned long va = 0, deferred_ops, pfn, prev_pfn = 0;
struct pfn_info *page;
int rc = 0, okay = 1, i, cpu = smp_processor_id();
unsigned int cmd;
unsigned int cmd, done = 0;
unsigned long prev_spfn = 0;
l1_pgentry_t *prev_spl1e = 0;
struct exec_domain *ed = current;
@@ -1300,15 +1306,32 @@ int do_mmu_update(mmu_update_t *ureqs, int count, int *success_count)
cleanup_writable_pagetable(d, PTWR_CLEANUP_ACTIVE | PTWR_CLEANUP_INACTIVE);
if ( unlikely(!access_ok(VERIFY_READ, ureqs, count * sizeof(req))) ) {
/*
* If we are resuming after preemption, read how much work we have already
* done. This allows us to set the @done output parameter correctly.
*/
if ( unlikely(count & MMU_UPDATE_PREEMPTED) )
{
count &= ~MMU_UPDATE_PREEMPTED;
if ( unlikely(pdone != NULL) )
(void)get_user(done, pdone);
}
if ( unlikely(!array_access_ok(VERIFY_READ, ureqs, count, sizeof(req))) )
UNLOCK_BIGLOCK(d);
return -EFAULT;
}
for ( i = 0; i < count; i++ )
{
locked_hypercall_may_preempt(d,
__HYPERVISOR_mmu_update, 3, ureqs, count-i, success_count);
if ( hypercall_preempt_check() )
{
hypercall_create_continuation(
__HYPERVISOR_mmu_update, 3, ureqs,
(count - i) | MMU_UPDATE_PREEMPTED, pdone);
rc = __HYPERVISOR_mmu_update;
break;
}
if ( unlikely(__copy_from_user(&req, ureqs, sizeof(req)) != 0) )
{
@@ -1464,8 +1487,9 @@ int do_mmu_update(mmu_update_t *ureqs, int count, int *success_count)
percpu_info[cpu].foreign = NULL;
}
if ( unlikely(success_count != NULL) )
put_user(i, success_count);
/* Add incremental work we have done to the @done output parameter. */
if ( unlikely(pdone != NULL) )
__put_user(done + i, pdone);
UNLOCK_BIGLOCK(d);
return rc;
@@ -1787,17 +1811,20 @@ int ptwr_do_page_fault(unsigned long addr)
which = PTWR_PT_INACTIVE;
if ( (l2e >> PAGE_SHIFT) == pfn )
{
/*
* If the PRESENT bit is clear, we may be conflicting with the current
* ACTIVE p.t. (it may be the same p.t. mapped at another virt addr).
*/
if ( unlikely(!(l2e & _PAGE_PRESENT)) &&
ptwr_info[cpu].ptinfo[PTWR_PT_ACTIVE].l1va )
ptwr_flush(PTWR_PT_ACTIVE);
/* Now do a final check of the PRESENT bit to set ACTIVE. */
/* Check the PRESENT bit to set ACTIVE. */
if ( likely(l2e & _PAGE_PRESENT) )
which = PTWR_PT_ACTIVE;
else {
/*
* If the PRESENT bit is clear, we may be conflicting with
* the current ACTIVE p.t. (it may be the same p.t. mapped
* at another virt addr).
* The ptwr_flush call below will restore the PRESENT bit.
*/
if ( ptwr_info[cpu].ptinfo[PTWR_PT_ACTIVE].l1va &&
l2_idx == ptwr_info[cpu].ptinfo[PTWR_PT_ACTIVE].l2_idx )
which = PTWR_PT_ACTIVE;
}
}
PTWR_PRINTK("[%c] page_fault on l1 pt at va %08lx, pt for %08x, "
+7 -2
View File
@@ -814,8 +814,13 @@ long do_set_trap_table(trap_info_t *traps)
for ( ; ; )
{
locked_hypercall_may_preempt(current->domain,
__HYPERVISOR_set_trap_table, 1, traps);
if ( hypercall_preempt_check() )
{
hypercall_create_continuation(
__HYPERVISOR_set_trap_table, 1, traps);
UNLOCK_BIGLOCK(current->domain);
return __HYPERVISOR_set_trap_table;
}
if ( copy_from_user(&cur, traps, sizeof(cur)) ) return -EFAULT;
+8
View File
@@ -57,4 +57,12 @@ void __dummy__(void)
OFFSET(TRAPBOUNCE_cs, struct trap_bounce, cs);
OFFSET(TRAPBOUNCE_eip, struct trap_bounce, eip);
BLANK();
OFFSET(MULTICALL_op, multicall_entry_t, op);
OFFSET(MULTICALL_arg0, multicall_entry_t, args[0]);
OFFSET(MULTICALL_arg1, multicall_entry_t, args[1]);
OFFSET(MULTICALL_arg2, multicall_entry_t, args[2]);
OFFSET(MULTICALL_arg3, multicall_entry_t, args[3]);
OFFSET(MULTICALL_arg4, multicall_entry_t, args[4]);
OFFSET(MULTICALL_result, multicall_entry_t, args[5]);
}
-101
View File
@@ -69,107 +69,6 @@ ENTRY(continue_nonidle_task)
GET_CURRENT(%ebx)
jmp test_all_events
ALIGN
/*
* HYPERVISOR_multicall(call_list, nr_calls)
* Execute a list of 'nr_calls' hypercalls, pointed at by 'call_list'.
* This is fairly easy except that:
* 1. We may fault reading the call list, and must patch that up; and
* 2. We cannot recursively call HYPERVISOR_multicall, or a malicious
* caller could cause our stack to blow up.
*/
#define MULTICALL_ENTRY_ORDER 5
do_multicall:
popl %eax
cmpl $SYMBOL_NAME(multicall_return_from_call),%eax
je multicall_return_from_call
pushl %ebx
movl 4(%esp),%ebx /* EBX == call_list */
movl 8(%esp),%ecx /* ECX == nr_calls */
/* Ensure the entire multicall list is below HYPERVISOR_VIRT_START. */
movl %ecx,%eax
shll $MULTICALL_ENTRY_ORDER,%eax
addl %ebx,%eax /* EAX == end of multicall list */
jc bad_multicall_address
cmpl $__HYPERVISOR_VIRT_START,%eax
jnc bad_multicall_address
multicall_loop:
pushl %ecx
movl 4(%esp),%ecx # %ecx = struct domain
movl EDOMAIN_processor(%ecx),%eax
shl $6,%eax # sizeof(irq_cpustat) == 64
#testl $~0,SYMBOL_NAME(irq_stat)(%eax,1)
#jnz multicall_preempt
multicall_fault1:
pushl 20(%ebx) # args[4]
multicall_fault2:
pushl 16(%ebx) # args[3]
multicall_fault3:
pushl 12(%ebx) # args[2]
multicall_fault4:
pushl 8(%ebx) # args[1]
multicall_fault5:
pushl 4(%ebx) # args[0]
multicall_fault6:
movl (%ebx),%eax # op
andl $(NR_hypercalls-1),%eax
call *SYMBOL_NAME(hypercall_table)(,%eax,4)
multicall_return_from_call:
multicall_fault7:
movl %eax,24(%ebx) # args[5] == result
addl $20,%esp
popl %ecx
addl $(1<<MULTICALL_ENTRY_ORDER),%ebx
loop multicall_loop
popl %ebx
xorl %eax,%eax
jmp ret_from_hypercall
multicall_preempt:
# NB. remaining nr_calls is already at top of stack
pushl %ebx # call_list
pushl $2 # nr_args == 2
pushl $__HYPERVISOR_multicall # op == __HYPERVISOR_multicall
call hypercall_create_continuation
addl $16,%esp
popl %ebx
movl $__HYPERVISOR_multicall,%eax
jmp ret_from_hypercall
bad_multicall_address:
popl %ebx
movl $-EFAULT,%eax
jmp ret_from_hypercall
.section __ex_table,"a"
.align 4
.long multicall_fault1, multicall_fixup1
.long multicall_fault2, multicall_fixup2
.long multicall_fault3, multicall_fixup3
.long multicall_fault4, multicall_fixup4
.long multicall_fault5, multicall_fixup5
.long multicall_fault6, multicall_fixup6
.long multicall_fault7, multicall_fixup6
.previous
.section .fixup,"ax"
multicall_fixup6:
addl $4,%esp
multicall_fixup5:
addl $4,%esp
multicall_fixup4:
addl $4,%esp
multicall_fixup3:
addl $4,%esp
multicall_fixup2:
addl $4,%esp
multicall_fixup1:
addl $4,%esp
popl %ebx
movl $-EFAULT,%eax
jmp ret_from_hypercall
.previous
ALIGN
restore_all_guest:
testb $TF_failsafe_return,EDOMAIN_thread_flags(%ebx)
Loaded 100 of 111 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.