From 5ef2b0f4fcbf859227598e4d62d5021d870817b8 Mon Sep 17 00:00:00 2001 From: "mjw@wray-m-3.hpl.hp.com" Date: Wed, 24 Nov 2004 12:44:27 +0000 Subject: [PATCH 01/10] bitkeeper revision 1.1159.188.1 (41a4822bOXytSqfi2JTuq_ydBfUFRw) Add braces. --- tools/libxutil/sxpr_parser.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/tools/libxutil/sxpr_parser.c b/tools/libxutil/sxpr_parser.c index f7a19a45f7..472088936d 100644 --- a/tools/libxutil/sxpr_parser.c +++ b/tools/libxutil/sxpr_parser.c @@ -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; } From 1197d871ab27fd8ff0f5b3e0ff10929ae10948a1 Mon Sep 17 00:00:00 2001 From: "iap10@labyrinth.cl.cam.ac.uk" Date: Wed, 24 Nov 2004 23:46:11 +0000 Subject: [PATCH 02/10] bitkeeper revision 1.1159.187.8 (41a51d432HR76Y8JHARv_4I0VHYPYg) Upgrade to Linux 2.4.28 --- .rootkeys | 166 +++++++++--------- .../Makefile | 4 +- .../arch/xen/Makefile | 4 + .../arch/xen/boot/Makefile | 0 .../arch/xen/config.in | 2 +- .../arch/xen/defconfig-xen0 | 42 ++++- .../arch/xen/defconfig-xenU | 27 ++- .../arch/xen/drivers/balloon/Makefile | 0 .../arch/xen/drivers/blkif/Makefile | 0 .../arch/xen/drivers/blkif/backend/Makefile | 0 .../arch/xen/drivers/blkif/frontend/Makefile | 0 .../arch/xen/drivers/blkif/frontend/common.h | 0 .../arch/xen/drivers/blkif/frontend/vbd.c | 0 .../arch/xen/drivers/console/Makefile | 0 .../arch/xen/drivers/dom0/Makefile | 0 .../arch/xen/drivers/evtchn/Makefile | 0 .../arch/xen/drivers/netif/Makefile | 0 .../arch/xen/drivers/netif/backend/Makefile | 0 .../arch/xen/drivers/netif/frontend/Makefile | 0 .../arch/xen/kernel/Makefile | 0 .../arch/xen/kernel/entry.S | 0 .../arch/xen/kernel/head.S | 0 .../arch/xen/kernel/i386_ksyms.c | 0 .../arch/xen/kernel/irq.c | 0 .../arch/xen/kernel/ldt.c | 0 .../arch/xen/kernel/pci-pc.c | 0 .../arch/xen/kernel/process.c | 2 +- .../arch/xen/kernel/setup.c | 0 .../arch/xen/kernel/signal.c | 2 +- .../arch/xen/kernel/time.c | 0 .../arch/xen/kernel/traps.c | 0 .../arch/xen/lib/Makefile | 0 .../arch/xen/lib/delay.c | 0 .../arch/xen/mm/Makefile | 0 .../arch/xen/mm/fault.c | 0 .../arch/xen/mm/init.c | 0 .../arch/xen/mm/ioremap.c | 0 .../arch/xen/vmlinux.lds | 0 .../drivers/block/ll_rw_blk.c | 22 ++- .../drivers/char/Makefile | 0 .../drivers/char/mem.c | 0 .../drivers/char/tty_io.c | 6 +- .../drivers/scsi/aic7xxx/Makefile | 0 .../fs/exec.c | 0 .../include/asm-xen/bugs.h | 0 .../include/asm-xen/desc.h | 0 .../include/asm-xen/fixmap.h | 0 .../include/asm-xen/highmem.h | 0 .../include/asm-xen/hw_irq.h | 0 .../include/asm-xen/io.h | 0 .../include/asm-xen/irq.h | 0 .../include/asm-xen/keyboard.h | 0 .../include/asm-xen/mmu_context.h | 0 .../include/asm-xen/module.h | 0 .../include/asm-xen/msr.h | 0 .../include/asm-xen/page.h | 0 .../include/asm-xen/pci.h | 0 .../include/asm-xen/pgalloc.h | 0 .../include/asm-xen/pgtable-2level.h | 0 .../include/asm-xen/pgtable.h | 0 .../include/asm-xen/processor.h | 0 .../include/asm-xen/queues.h | 0 .../include/asm-xen/segment.h | 0 .../include/asm-xen/smp.h | 2 +- .../include/asm-xen/synch_bitops.h | 0 .../include/asm-xen/system.h | 0 .../include/asm-xen/vga.h | 0 .../include/asm-xen/xor.h | 0 .../include/linux/blk.h | 0 .../include/linux/mm.h | 8 +- .../include/linux/sched.h | 2 +- .../include/linux/skbuff.h | 0 .../include/linux/timer.h | 0 .../kernel/time.c | 0 .../kernel/timer.c | 0 .../mkbuildtree | 0 .../mm/highmem.c | 4 +- .../mm/memory.c | 4 +- .../mm/mprotect.c | 0 .../mm/mremap.c | 0 .../mm/page_alloc.c | 18 +- .../mm/swapfile.c | 4 +- .../mm/vmalloc.c | 0 .../net/core/skbuff.c | 0 84 files changed, 194 insertions(+), 125 deletions(-) rename {linux-2.4.27-xen-sparse => linux-2.4.28-xen-sparse}/Makefile (99%) rename {linux-2.4.27-xen-sparse => linux-2.4.28-xen-sparse}/arch/xen/Makefile (96%) rename {linux-2.4.27-xen-sparse => linux-2.4.28-xen-sparse}/arch/xen/boot/Makefile (100%) rename {linux-2.4.27-xen-sparse => linux-2.4.28-xen-sparse}/arch/xen/config.in (99%) rename {linux-2.4.27-xen-sparse => linux-2.4.28-xen-sparse}/arch/xen/defconfig-xen0 (96%) rename {linux-2.4.27-xen-sparse => linux-2.4.28-xen-sparse}/arch/xen/defconfig-xenU (97%) rename {linux-2.4.27-xen-sparse => linux-2.4.28-xen-sparse}/arch/xen/drivers/balloon/Makefile (100%) rename {linux-2.4.27-xen-sparse => linux-2.4.28-xen-sparse}/arch/xen/drivers/blkif/Makefile (100%) rename {linux-2.4.27-xen-sparse => linux-2.4.28-xen-sparse}/arch/xen/drivers/blkif/backend/Makefile (100%) rename {linux-2.4.27-xen-sparse => linux-2.4.28-xen-sparse}/arch/xen/drivers/blkif/frontend/Makefile (100%) rename {linux-2.4.27-xen-sparse => linux-2.4.28-xen-sparse}/arch/xen/drivers/blkif/frontend/common.h (100%) rename {linux-2.4.27-xen-sparse => linux-2.4.28-xen-sparse}/arch/xen/drivers/blkif/frontend/vbd.c (100%) rename {linux-2.4.27-xen-sparse => linux-2.4.28-xen-sparse}/arch/xen/drivers/console/Makefile (100%) rename {linux-2.4.27-xen-sparse => linux-2.4.28-xen-sparse}/arch/xen/drivers/dom0/Makefile (100%) rename {linux-2.4.27-xen-sparse => linux-2.4.28-xen-sparse}/arch/xen/drivers/evtchn/Makefile (100%) rename {linux-2.4.27-xen-sparse => linux-2.4.28-xen-sparse}/arch/xen/drivers/netif/Makefile (100%) rename {linux-2.4.27-xen-sparse => linux-2.4.28-xen-sparse}/arch/xen/drivers/netif/backend/Makefile (100%) rename {linux-2.4.27-xen-sparse => linux-2.4.28-xen-sparse}/arch/xen/drivers/netif/frontend/Makefile (100%) rename {linux-2.4.27-xen-sparse => linux-2.4.28-xen-sparse}/arch/xen/kernel/Makefile (100%) rename {linux-2.4.27-xen-sparse => linux-2.4.28-xen-sparse}/arch/xen/kernel/entry.S (100%) rename {linux-2.4.27-xen-sparse => linux-2.4.28-xen-sparse}/arch/xen/kernel/head.S (100%) rename {linux-2.4.27-xen-sparse => linux-2.4.28-xen-sparse}/arch/xen/kernel/i386_ksyms.c (100%) rename {linux-2.4.27-xen-sparse => linux-2.4.28-xen-sparse}/arch/xen/kernel/irq.c (100%) rename {linux-2.4.27-xen-sparse => linux-2.4.28-xen-sparse}/arch/xen/kernel/ldt.c (100%) rename {linux-2.4.27-xen-sparse => linux-2.4.28-xen-sparse}/arch/xen/kernel/pci-pc.c (100%) rename {linux-2.4.27-xen-sparse => linux-2.4.28-xen-sparse}/arch/xen/kernel/process.c (99%) rename {linux-2.4.27-xen-sparse => linux-2.4.28-xen-sparse}/arch/xen/kernel/setup.c (100%) rename {linux-2.4.27-xen-sparse => linux-2.4.28-xen-sparse}/arch/xen/kernel/signal.c (99%) rename {linux-2.4.27-xen-sparse => linux-2.4.28-xen-sparse}/arch/xen/kernel/time.c (100%) rename {linux-2.4.27-xen-sparse => linux-2.4.28-xen-sparse}/arch/xen/kernel/traps.c (100%) rename {linux-2.4.27-xen-sparse => linux-2.4.28-xen-sparse}/arch/xen/lib/Makefile (100%) rename {linux-2.4.27-xen-sparse => linux-2.4.28-xen-sparse}/arch/xen/lib/delay.c (100%) rename {linux-2.4.27-xen-sparse => linux-2.4.28-xen-sparse}/arch/xen/mm/Makefile (100%) rename {linux-2.4.27-xen-sparse => linux-2.4.28-xen-sparse}/arch/xen/mm/fault.c (100%) rename {linux-2.4.27-xen-sparse => linux-2.4.28-xen-sparse}/arch/xen/mm/init.c (100%) rename {linux-2.4.27-xen-sparse => linux-2.4.28-xen-sparse}/arch/xen/mm/ioremap.c (100%) rename {linux-2.4.27-xen-sparse => linux-2.4.28-xen-sparse}/arch/xen/vmlinux.lds (100%) rename {linux-2.4.27-xen-sparse => linux-2.4.28-xen-sparse}/drivers/block/ll_rw_blk.c (98%) rename {linux-2.4.27-xen-sparse => linux-2.4.28-xen-sparse}/drivers/char/Makefile (100%) rename {linux-2.4.27-xen-sparse => linux-2.4.28-xen-sparse}/drivers/char/mem.c (100%) rename {linux-2.4.27-xen-sparse => linux-2.4.28-xen-sparse}/drivers/char/tty_io.c (99%) rename {linux-2.4.27-xen-sparse => linux-2.4.28-xen-sparse}/drivers/scsi/aic7xxx/Makefile (100%) rename {linux-2.4.27-xen-sparse => linux-2.4.28-xen-sparse}/fs/exec.c (100%) rename {linux-2.4.27-xen-sparse => linux-2.4.28-xen-sparse}/include/asm-xen/bugs.h (100%) rename {linux-2.4.27-xen-sparse => linux-2.4.28-xen-sparse}/include/asm-xen/desc.h (100%) rename {linux-2.4.27-xen-sparse => linux-2.4.28-xen-sparse}/include/asm-xen/fixmap.h (100%) rename {linux-2.4.27-xen-sparse => linux-2.4.28-xen-sparse}/include/asm-xen/highmem.h (100%) rename {linux-2.4.27-xen-sparse => linux-2.4.28-xen-sparse}/include/asm-xen/hw_irq.h (100%) rename {linux-2.4.27-xen-sparse => linux-2.4.28-xen-sparse}/include/asm-xen/io.h (100%) rename {linux-2.4.27-xen-sparse => linux-2.4.28-xen-sparse}/include/asm-xen/irq.h (100%) rename {linux-2.4.27-xen-sparse => linux-2.4.28-xen-sparse}/include/asm-xen/keyboard.h (100%) rename {linux-2.4.27-xen-sparse => linux-2.4.28-xen-sparse}/include/asm-xen/mmu_context.h (100%) rename {linux-2.4.27-xen-sparse => linux-2.4.28-xen-sparse}/include/asm-xen/module.h (100%) rename {linux-2.4.27-xen-sparse => linux-2.4.28-xen-sparse}/include/asm-xen/msr.h (100%) rename {linux-2.4.27-xen-sparse => linux-2.4.28-xen-sparse}/include/asm-xen/page.h (100%) rename {linux-2.4.27-xen-sparse => linux-2.4.28-xen-sparse}/include/asm-xen/pci.h (100%) rename {linux-2.4.27-xen-sparse => linux-2.4.28-xen-sparse}/include/asm-xen/pgalloc.h (100%) rename {linux-2.4.27-xen-sparse => linux-2.4.28-xen-sparse}/include/asm-xen/pgtable-2level.h (100%) rename {linux-2.4.27-xen-sparse => linux-2.4.28-xen-sparse}/include/asm-xen/pgtable.h (100%) rename {linux-2.4.27-xen-sparse => linux-2.4.28-xen-sparse}/include/asm-xen/processor.h (100%) rename {linux-2.4.27-xen-sparse => linux-2.4.28-xen-sparse}/include/asm-xen/queues.h (100%) rename {linux-2.4.27-xen-sparse => linux-2.4.28-xen-sparse}/include/asm-xen/segment.h (100%) rename {linux-2.4.27-xen-sparse => linux-2.4.28-xen-sparse}/include/asm-xen/smp.h (98%) rename {linux-2.4.27-xen-sparse => linux-2.4.28-xen-sparse}/include/asm-xen/synch_bitops.h (100%) rename {linux-2.4.27-xen-sparse => linux-2.4.28-xen-sparse}/include/asm-xen/system.h (100%) rename {linux-2.4.27-xen-sparse => linux-2.4.28-xen-sparse}/include/asm-xen/vga.h (100%) rename {linux-2.4.27-xen-sparse => linux-2.4.28-xen-sparse}/include/asm-xen/xor.h (100%) rename {linux-2.4.27-xen-sparse => linux-2.4.28-xen-sparse}/include/linux/blk.h (100%) rename {linux-2.4.27-xen-sparse => linux-2.4.28-xen-sparse}/include/linux/mm.h (99%) rename {linux-2.4.27-xen-sparse => linux-2.4.28-xen-sparse}/include/linux/sched.h (99%) rename {linux-2.4.27-xen-sparse => linux-2.4.28-xen-sparse}/include/linux/skbuff.h (100%) rename {linux-2.4.27-xen-sparse => linux-2.4.28-xen-sparse}/include/linux/timer.h (100%) rename {linux-2.4.27-xen-sparse => linux-2.4.28-xen-sparse}/kernel/time.c (100%) rename {linux-2.4.27-xen-sparse => linux-2.4.28-xen-sparse}/kernel/timer.c (100%) rename {linux-2.4.27-xen-sparse => linux-2.4.28-xen-sparse}/mkbuildtree (100%) rename {linux-2.4.27-xen-sparse => linux-2.4.28-xen-sparse}/mm/highmem.c (98%) rename {linux-2.4.27-xen-sparse => linux-2.4.28-xen-sparse}/mm/memory.c (99%) rename {linux-2.4.27-xen-sparse => linux-2.4.28-xen-sparse}/mm/mprotect.c (100%) rename {linux-2.4.27-xen-sparse => linux-2.4.28-xen-sparse}/mm/mremap.c (100%) rename {linux-2.4.27-xen-sparse => linux-2.4.28-xen-sparse}/mm/page_alloc.c (97%) rename {linux-2.4.27-xen-sparse => linux-2.4.28-xen-sparse}/mm/swapfile.c (99%) rename {linux-2.4.27-xen-sparse => linux-2.4.28-xen-sparse}/mm/vmalloc.c (100%) rename {linux-2.4.27-xen-sparse => linux-2.4.28-xen-sparse}/net/core/skbuff.c (100%) diff --git a/.rootkeys b/.rootkeys index 493a8f6933..94adf6c091 100644 --- a/.rootkeys +++ b/.rootkeys @@ -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 diff --git a/linux-2.4.27-xen-sparse/Makefile b/linux-2.4.28-xen-sparse/Makefile similarity index 99% rename from linux-2.4.27-xen-sparse/Makefile rename to linux-2.4.28-xen-sparse/Makefile index 73d5da2372..97aa39b068 100644 --- a/linux-2.4.27-xen-sparse/Makefile +++ b/linux-2.4.28-xen-sparse/Makefile @@ -1,7 +1,7 @@ VERSION = 2 PATCHLEVEL = 4 -SUBLEVEL = 27 -EXTRAVERSION = +SUBLEVEL = 28 +EXTRAVERSION =-xenU KERNELRELEASE=$(VERSION).$(PATCHLEVEL).$(SUBLEVEL)$(EXTRAVERSION) diff --git a/linux-2.4.27-xen-sparse/arch/xen/Makefile b/linux-2.4.28-xen-sparse/arch/xen/Makefile similarity index 96% rename from linux-2.4.27-xen-sparse/arch/xen/Makefile rename to linux-2.4.28-xen-sparse/arch/xen/Makefile index 2693373aad..df13c06a6e 100644 --- a/linux-2.4.27-xen-sparse/arch/xen/Makefile +++ b/linux-2.4.28-xen-sparse/arch/xen/Makefile @@ -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 diff --git a/linux-2.4.27-xen-sparse/arch/xen/boot/Makefile b/linux-2.4.28-xen-sparse/arch/xen/boot/Makefile similarity index 100% rename from linux-2.4.27-xen-sparse/arch/xen/boot/Makefile rename to linux-2.4.28-xen-sparse/arch/xen/boot/Makefile diff --git a/linux-2.4.27-xen-sparse/arch/xen/config.in b/linux-2.4.28-xen-sparse/arch/xen/config.in similarity index 99% rename from linux-2.4.27-xen-sparse/arch/xen/config.in rename to linux-2.4.28-xen-sparse/arch/xen/config.in index d71446081d..b69fbf5930 100644 --- a/linux-2.4.27-xen-sparse/arch/xen/config.in +++ b/linux-2.4.28-xen-sparse/arch/xen/config.in @@ -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 diff --git a/linux-2.4.27-xen-sparse/arch/xen/defconfig-xen0 b/linux-2.4.28-xen-sparse/arch/xen/defconfig-xen0 similarity index 96% rename from linux-2.4.27-xen-sparse/arch/xen/defconfig-xen0 rename to linux-2.4.28-xen-sparse/arch/xen/defconfig-xen0 index 44a4e87ef7..b2d4e8dc91 100644 --- a/linux-2.4.27-xen-sparse/arch/xen/defconfig-xen0 +++ b/linux-2.4.28-xen-sparse/arch/xen/defconfig-xen0 @@ -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 diff --git a/linux-2.4.27-xen-sparse/arch/xen/defconfig-xenU b/linux-2.4.28-xen-sparse/arch/xen/defconfig-xenU similarity index 97% rename from linux-2.4.27-xen-sparse/arch/xen/defconfig-xenU rename to linux-2.4.28-xen-sparse/arch/xen/defconfig-xenU index 2842481292..555f7e82f9 100644 --- a/linux-2.4.27-xen-sparse/arch/xen/defconfig-xenU +++ b/linux-2.4.28-xen-sparse/arch/xen/defconfig-xenU @@ -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 diff --git a/linux-2.4.27-xen-sparse/arch/xen/drivers/balloon/Makefile b/linux-2.4.28-xen-sparse/arch/xen/drivers/balloon/Makefile similarity index 100% rename from linux-2.4.27-xen-sparse/arch/xen/drivers/balloon/Makefile rename to linux-2.4.28-xen-sparse/arch/xen/drivers/balloon/Makefile diff --git a/linux-2.4.27-xen-sparse/arch/xen/drivers/blkif/Makefile b/linux-2.4.28-xen-sparse/arch/xen/drivers/blkif/Makefile similarity index 100% rename from linux-2.4.27-xen-sparse/arch/xen/drivers/blkif/Makefile rename to linux-2.4.28-xen-sparse/arch/xen/drivers/blkif/Makefile diff --git a/linux-2.4.27-xen-sparse/arch/xen/drivers/blkif/backend/Makefile b/linux-2.4.28-xen-sparse/arch/xen/drivers/blkif/backend/Makefile similarity index 100% rename from linux-2.4.27-xen-sparse/arch/xen/drivers/blkif/backend/Makefile rename to linux-2.4.28-xen-sparse/arch/xen/drivers/blkif/backend/Makefile diff --git a/linux-2.4.27-xen-sparse/arch/xen/drivers/blkif/frontend/Makefile b/linux-2.4.28-xen-sparse/arch/xen/drivers/blkif/frontend/Makefile similarity index 100% rename from linux-2.4.27-xen-sparse/arch/xen/drivers/blkif/frontend/Makefile rename to linux-2.4.28-xen-sparse/arch/xen/drivers/blkif/frontend/Makefile diff --git a/linux-2.4.27-xen-sparse/arch/xen/drivers/blkif/frontend/common.h b/linux-2.4.28-xen-sparse/arch/xen/drivers/blkif/frontend/common.h similarity index 100% rename from linux-2.4.27-xen-sparse/arch/xen/drivers/blkif/frontend/common.h rename to linux-2.4.28-xen-sparse/arch/xen/drivers/blkif/frontend/common.h diff --git a/linux-2.4.27-xen-sparse/arch/xen/drivers/blkif/frontend/vbd.c b/linux-2.4.28-xen-sparse/arch/xen/drivers/blkif/frontend/vbd.c similarity index 100% rename from linux-2.4.27-xen-sparse/arch/xen/drivers/blkif/frontend/vbd.c rename to linux-2.4.28-xen-sparse/arch/xen/drivers/blkif/frontend/vbd.c diff --git a/linux-2.4.27-xen-sparse/arch/xen/drivers/console/Makefile b/linux-2.4.28-xen-sparse/arch/xen/drivers/console/Makefile similarity index 100% rename from linux-2.4.27-xen-sparse/arch/xen/drivers/console/Makefile rename to linux-2.4.28-xen-sparse/arch/xen/drivers/console/Makefile diff --git a/linux-2.4.27-xen-sparse/arch/xen/drivers/dom0/Makefile b/linux-2.4.28-xen-sparse/arch/xen/drivers/dom0/Makefile similarity index 100% rename from linux-2.4.27-xen-sparse/arch/xen/drivers/dom0/Makefile rename to linux-2.4.28-xen-sparse/arch/xen/drivers/dom0/Makefile diff --git a/linux-2.4.27-xen-sparse/arch/xen/drivers/evtchn/Makefile b/linux-2.4.28-xen-sparse/arch/xen/drivers/evtchn/Makefile similarity index 100% rename from linux-2.4.27-xen-sparse/arch/xen/drivers/evtchn/Makefile rename to linux-2.4.28-xen-sparse/arch/xen/drivers/evtchn/Makefile diff --git a/linux-2.4.27-xen-sparse/arch/xen/drivers/netif/Makefile b/linux-2.4.28-xen-sparse/arch/xen/drivers/netif/Makefile similarity index 100% rename from linux-2.4.27-xen-sparse/arch/xen/drivers/netif/Makefile rename to linux-2.4.28-xen-sparse/arch/xen/drivers/netif/Makefile diff --git a/linux-2.4.27-xen-sparse/arch/xen/drivers/netif/backend/Makefile b/linux-2.4.28-xen-sparse/arch/xen/drivers/netif/backend/Makefile similarity index 100% rename from linux-2.4.27-xen-sparse/arch/xen/drivers/netif/backend/Makefile rename to linux-2.4.28-xen-sparse/arch/xen/drivers/netif/backend/Makefile diff --git a/linux-2.4.27-xen-sparse/arch/xen/drivers/netif/frontend/Makefile b/linux-2.4.28-xen-sparse/arch/xen/drivers/netif/frontend/Makefile similarity index 100% rename from linux-2.4.27-xen-sparse/arch/xen/drivers/netif/frontend/Makefile rename to linux-2.4.28-xen-sparse/arch/xen/drivers/netif/frontend/Makefile diff --git a/linux-2.4.27-xen-sparse/arch/xen/kernel/Makefile b/linux-2.4.28-xen-sparse/arch/xen/kernel/Makefile similarity index 100% rename from linux-2.4.27-xen-sparse/arch/xen/kernel/Makefile rename to linux-2.4.28-xen-sparse/arch/xen/kernel/Makefile diff --git a/linux-2.4.27-xen-sparse/arch/xen/kernel/entry.S b/linux-2.4.28-xen-sparse/arch/xen/kernel/entry.S similarity index 100% rename from linux-2.4.27-xen-sparse/arch/xen/kernel/entry.S rename to linux-2.4.28-xen-sparse/arch/xen/kernel/entry.S diff --git a/linux-2.4.27-xen-sparse/arch/xen/kernel/head.S b/linux-2.4.28-xen-sparse/arch/xen/kernel/head.S similarity index 100% rename from linux-2.4.27-xen-sparse/arch/xen/kernel/head.S rename to linux-2.4.28-xen-sparse/arch/xen/kernel/head.S diff --git a/linux-2.4.27-xen-sparse/arch/xen/kernel/i386_ksyms.c b/linux-2.4.28-xen-sparse/arch/xen/kernel/i386_ksyms.c similarity index 100% rename from linux-2.4.27-xen-sparse/arch/xen/kernel/i386_ksyms.c rename to linux-2.4.28-xen-sparse/arch/xen/kernel/i386_ksyms.c diff --git a/linux-2.4.27-xen-sparse/arch/xen/kernel/irq.c b/linux-2.4.28-xen-sparse/arch/xen/kernel/irq.c similarity index 100% rename from linux-2.4.27-xen-sparse/arch/xen/kernel/irq.c rename to linux-2.4.28-xen-sparse/arch/xen/kernel/irq.c diff --git a/linux-2.4.27-xen-sparse/arch/xen/kernel/ldt.c b/linux-2.4.28-xen-sparse/arch/xen/kernel/ldt.c similarity index 100% rename from linux-2.4.27-xen-sparse/arch/xen/kernel/ldt.c rename to linux-2.4.28-xen-sparse/arch/xen/kernel/ldt.c diff --git a/linux-2.4.27-xen-sparse/arch/xen/kernel/pci-pc.c b/linux-2.4.28-xen-sparse/arch/xen/kernel/pci-pc.c similarity index 100% rename from linux-2.4.27-xen-sparse/arch/xen/kernel/pci-pc.c rename to linux-2.4.28-xen-sparse/arch/xen/kernel/pci-pc.c diff --git a/linux-2.4.27-xen-sparse/arch/xen/kernel/process.c b/linux-2.4.28-xen-sparse/arch/xen/kernel/process.c similarity index 99% rename from linux-2.4.27-xen-sparse/arch/xen/kernel/process.c rename to linux-2.4.28-xen-sparse/arch/xen/kernel/process.c index 4e81bfe877..f2e32dcfd4 100644 --- a/linux-2.4.27-xen-sparse/arch/xen/kernel/process.c +++ b/linux-2.4.28-xen-sparse/arch/xen/kernel/process.c @@ -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; diff --git a/linux-2.4.27-xen-sparse/arch/xen/kernel/setup.c b/linux-2.4.28-xen-sparse/arch/xen/kernel/setup.c similarity index 100% rename from linux-2.4.27-xen-sparse/arch/xen/kernel/setup.c rename to linux-2.4.28-xen-sparse/arch/xen/kernel/setup.c diff --git a/linux-2.4.27-xen-sparse/arch/xen/kernel/signal.c b/linux-2.4.28-xen-sparse/arch/xen/kernel/signal.c similarity index 99% rename from linux-2.4.27-xen-sparse/arch/xen/kernel/signal.c rename to linux-2.4.28-xen-sparse/arch/xen/kernel/signal.c index f646c5c0ca..6f2a2ac11d 100644 --- a/linux-2.4.27-xen-sparse/arch/xen/kernel/signal.c +++ b/linux-2.4.28-xen-sparse/arch/xen/kernel/signal.c @@ -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; diff --git a/linux-2.4.27-xen-sparse/arch/xen/kernel/time.c b/linux-2.4.28-xen-sparse/arch/xen/kernel/time.c similarity index 100% rename from linux-2.4.27-xen-sparse/arch/xen/kernel/time.c rename to linux-2.4.28-xen-sparse/arch/xen/kernel/time.c diff --git a/linux-2.4.27-xen-sparse/arch/xen/kernel/traps.c b/linux-2.4.28-xen-sparse/arch/xen/kernel/traps.c similarity index 100% rename from linux-2.4.27-xen-sparse/arch/xen/kernel/traps.c rename to linux-2.4.28-xen-sparse/arch/xen/kernel/traps.c diff --git a/linux-2.4.27-xen-sparse/arch/xen/lib/Makefile b/linux-2.4.28-xen-sparse/arch/xen/lib/Makefile similarity index 100% rename from linux-2.4.27-xen-sparse/arch/xen/lib/Makefile rename to linux-2.4.28-xen-sparse/arch/xen/lib/Makefile diff --git a/linux-2.4.27-xen-sparse/arch/xen/lib/delay.c b/linux-2.4.28-xen-sparse/arch/xen/lib/delay.c similarity index 100% rename from linux-2.4.27-xen-sparse/arch/xen/lib/delay.c rename to linux-2.4.28-xen-sparse/arch/xen/lib/delay.c diff --git a/linux-2.4.27-xen-sparse/arch/xen/mm/Makefile b/linux-2.4.28-xen-sparse/arch/xen/mm/Makefile similarity index 100% rename from linux-2.4.27-xen-sparse/arch/xen/mm/Makefile rename to linux-2.4.28-xen-sparse/arch/xen/mm/Makefile diff --git a/linux-2.4.27-xen-sparse/arch/xen/mm/fault.c b/linux-2.4.28-xen-sparse/arch/xen/mm/fault.c similarity index 100% rename from linux-2.4.27-xen-sparse/arch/xen/mm/fault.c rename to linux-2.4.28-xen-sparse/arch/xen/mm/fault.c diff --git a/linux-2.4.27-xen-sparse/arch/xen/mm/init.c b/linux-2.4.28-xen-sparse/arch/xen/mm/init.c similarity index 100% rename from linux-2.4.27-xen-sparse/arch/xen/mm/init.c rename to linux-2.4.28-xen-sparse/arch/xen/mm/init.c diff --git a/linux-2.4.27-xen-sparse/arch/xen/mm/ioremap.c b/linux-2.4.28-xen-sparse/arch/xen/mm/ioremap.c similarity index 100% rename from linux-2.4.27-xen-sparse/arch/xen/mm/ioremap.c rename to linux-2.4.28-xen-sparse/arch/xen/mm/ioremap.c diff --git a/linux-2.4.27-xen-sparse/arch/xen/vmlinux.lds b/linux-2.4.28-xen-sparse/arch/xen/vmlinux.lds similarity index 100% rename from linux-2.4.27-xen-sparse/arch/xen/vmlinux.lds rename to linux-2.4.28-xen-sparse/arch/xen/vmlinux.lds diff --git a/linux-2.4.27-xen-sparse/drivers/block/ll_rw_blk.c b/linux-2.4.28-xen-sparse/drivers/block/ll_rw_blk.c similarity index 98% rename from linux-2.4.27-xen-sparse/drivers/block/ll_rw_blk.c rename to linux-2.4.28-xen-sparse/drivers/block/ll_rw_blk.c index 605debf128..b1b1fef9b5 100644 --- a/linux-2.4.27-xen-sparse/drivers/block/ll_rw_blk.c +++ b/linux-2.4.28-xen-sparse/drivers/block/ll_rw_blk.c @@ -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 " diff --git a/linux-2.4.27-xen-sparse/drivers/char/Makefile b/linux-2.4.28-xen-sparse/drivers/char/Makefile similarity index 100% rename from linux-2.4.27-xen-sparse/drivers/char/Makefile rename to linux-2.4.28-xen-sparse/drivers/char/Makefile diff --git a/linux-2.4.27-xen-sparse/drivers/char/mem.c b/linux-2.4.28-xen-sparse/drivers/char/mem.c similarity index 100% rename from linux-2.4.27-xen-sparse/drivers/char/mem.c rename to linux-2.4.28-xen-sparse/drivers/char/mem.c diff --git a/linux-2.4.27-xen-sparse/drivers/char/tty_io.c b/linux-2.4.28-xen-sparse/drivers/char/tty_io.c similarity index 99% rename from linux-2.4.27-xen-sparse/drivers/char/tty_io.c rename to linux-2.4.28-xen-sparse/drivers/char/tty_io.c index 53fb06b465..3a568eb5bc 100644 --- a/linux-2.4.27-xen-sparse/drivers/char/tty_io.c +++ b/linux-2.4.28-xen-sparse/drivers/char/tty_io.c @@ -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; diff --git a/linux-2.4.27-xen-sparse/drivers/scsi/aic7xxx/Makefile b/linux-2.4.28-xen-sparse/drivers/scsi/aic7xxx/Makefile similarity index 100% rename from linux-2.4.27-xen-sparse/drivers/scsi/aic7xxx/Makefile rename to linux-2.4.28-xen-sparse/drivers/scsi/aic7xxx/Makefile diff --git a/linux-2.4.27-xen-sparse/fs/exec.c b/linux-2.4.28-xen-sparse/fs/exec.c similarity index 100% rename from linux-2.4.27-xen-sparse/fs/exec.c rename to linux-2.4.28-xen-sparse/fs/exec.c diff --git a/linux-2.4.27-xen-sparse/include/asm-xen/bugs.h b/linux-2.4.28-xen-sparse/include/asm-xen/bugs.h similarity index 100% rename from linux-2.4.27-xen-sparse/include/asm-xen/bugs.h rename to linux-2.4.28-xen-sparse/include/asm-xen/bugs.h diff --git a/linux-2.4.27-xen-sparse/include/asm-xen/desc.h b/linux-2.4.28-xen-sparse/include/asm-xen/desc.h similarity index 100% rename from linux-2.4.27-xen-sparse/include/asm-xen/desc.h rename to linux-2.4.28-xen-sparse/include/asm-xen/desc.h diff --git a/linux-2.4.27-xen-sparse/include/asm-xen/fixmap.h b/linux-2.4.28-xen-sparse/include/asm-xen/fixmap.h similarity index 100% rename from linux-2.4.27-xen-sparse/include/asm-xen/fixmap.h rename to linux-2.4.28-xen-sparse/include/asm-xen/fixmap.h diff --git a/linux-2.4.27-xen-sparse/include/asm-xen/highmem.h b/linux-2.4.28-xen-sparse/include/asm-xen/highmem.h similarity index 100% rename from linux-2.4.27-xen-sparse/include/asm-xen/highmem.h rename to linux-2.4.28-xen-sparse/include/asm-xen/highmem.h diff --git a/linux-2.4.27-xen-sparse/include/asm-xen/hw_irq.h b/linux-2.4.28-xen-sparse/include/asm-xen/hw_irq.h similarity index 100% rename from linux-2.4.27-xen-sparse/include/asm-xen/hw_irq.h rename to linux-2.4.28-xen-sparse/include/asm-xen/hw_irq.h diff --git a/linux-2.4.27-xen-sparse/include/asm-xen/io.h b/linux-2.4.28-xen-sparse/include/asm-xen/io.h similarity index 100% rename from linux-2.4.27-xen-sparse/include/asm-xen/io.h rename to linux-2.4.28-xen-sparse/include/asm-xen/io.h diff --git a/linux-2.4.27-xen-sparse/include/asm-xen/irq.h b/linux-2.4.28-xen-sparse/include/asm-xen/irq.h similarity index 100% rename from linux-2.4.27-xen-sparse/include/asm-xen/irq.h rename to linux-2.4.28-xen-sparse/include/asm-xen/irq.h diff --git a/linux-2.4.27-xen-sparse/include/asm-xen/keyboard.h b/linux-2.4.28-xen-sparse/include/asm-xen/keyboard.h similarity index 100% rename from linux-2.4.27-xen-sparse/include/asm-xen/keyboard.h rename to linux-2.4.28-xen-sparse/include/asm-xen/keyboard.h diff --git a/linux-2.4.27-xen-sparse/include/asm-xen/mmu_context.h b/linux-2.4.28-xen-sparse/include/asm-xen/mmu_context.h similarity index 100% rename from linux-2.4.27-xen-sparse/include/asm-xen/mmu_context.h rename to linux-2.4.28-xen-sparse/include/asm-xen/mmu_context.h diff --git a/linux-2.4.27-xen-sparse/include/asm-xen/module.h b/linux-2.4.28-xen-sparse/include/asm-xen/module.h similarity index 100% rename from linux-2.4.27-xen-sparse/include/asm-xen/module.h rename to linux-2.4.28-xen-sparse/include/asm-xen/module.h diff --git a/linux-2.4.27-xen-sparse/include/asm-xen/msr.h b/linux-2.4.28-xen-sparse/include/asm-xen/msr.h similarity index 100% rename from linux-2.4.27-xen-sparse/include/asm-xen/msr.h rename to linux-2.4.28-xen-sparse/include/asm-xen/msr.h diff --git a/linux-2.4.27-xen-sparse/include/asm-xen/page.h b/linux-2.4.28-xen-sparse/include/asm-xen/page.h similarity index 100% rename from linux-2.4.27-xen-sparse/include/asm-xen/page.h rename to linux-2.4.28-xen-sparse/include/asm-xen/page.h diff --git a/linux-2.4.27-xen-sparse/include/asm-xen/pci.h b/linux-2.4.28-xen-sparse/include/asm-xen/pci.h similarity index 100% rename from linux-2.4.27-xen-sparse/include/asm-xen/pci.h rename to linux-2.4.28-xen-sparse/include/asm-xen/pci.h diff --git a/linux-2.4.27-xen-sparse/include/asm-xen/pgalloc.h b/linux-2.4.28-xen-sparse/include/asm-xen/pgalloc.h similarity index 100% rename from linux-2.4.27-xen-sparse/include/asm-xen/pgalloc.h rename to linux-2.4.28-xen-sparse/include/asm-xen/pgalloc.h diff --git a/linux-2.4.27-xen-sparse/include/asm-xen/pgtable-2level.h b/linux-2.4.28-xen-sparse/include/asm-xen/pgtable-2level.h similarity index 100% rename from linux-2.4.27-xen-sparse/include/asm-xen/pgtable-2level.h rename to linux-2.4.28-xen-sparse/include/asm-xen/pgtable-2level.h diff --git a/linux-2.4.27-xen-sparse/include/asm-xen/pgtable.h b/linux-2.4.28-xen-sparse/include/asm-xen/pgtable.h similarity index 100% rename from linux-2.4.27-xen-sparse/include/asm-xen/pgtable.h rename to linux-2.4.28-xen-sparse/include/asm-xen/pgtable.h diff --git a/linux-2.4.27-xen-sparse/include/asm-xen/processor.h b/linux-2.4.28-xen-sparse/include/asm-xen/processor.h similarity index 100% rename from linux-2.4.27-xen-sparse/include/asm-xen/processor.h rename to linux-2.4.28-xen-sparse/include/asm-xen/processor.h diff --git a/linux-2.4.27-xen-sparse/include/asm-xen/queues.h b/linux-2.4.28-xen-sparse/include/asm-xen/queues.h similarity index 100% rename from linux-2.4.27-xen-sparse/include/asm-xen/queues.h rename to linux-2.4.28-xen-sparse/include/asm-xen/queues.h diff --git a/linux-2.4.27-xen-sparse/include/asm-xen/segment.h b/linux-2.4.28-xen-sparse/include/asm-xen/segment.h similarity index 100% rename from linux-2.4.27-xen-sparse/include/asm-xen/segment.h rename to linux-2.4.28-xen-sparse/include/asm-xen/segment.h diff --git a/linux-2.4.27-xen-sparse/include/asm-xen/smp.h b/linux-2.4.28-xen-sparse/include/asm-xen/smp.h similarity index 98% rename from linux-2.4.27-xen-sparse/include/asm-xen/smp.h rename to linux-2.4.28-xen-sparse/include/asm-xen/smp.h index 804b93c332..025a93a890 100644 --- a/linux-2.4.27-xen-sparse/include/asm-xen/smp.h +++ b/linux-2.4.28-xen-sparse/include/asm-xen/smp.h @@ -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); diff --git a/linux-2.4.27-xen-sparse/include/asm-xen/synch_bitops.h b/linux-2.4.28-xen-sparse/include/asm-xen/synch_bitops.h similarity index 100% rename from linux-2.4.27-xen-sparse/include/asm-xen/synch_bitops.h rename to linux-2.4.28-xen-sparse/include/asm-xen/synch_bitops.h diff --git a/linux-2.4.27-xen-sparse/include/asm-xen/system.h b/linux-2.4.28-xen-sparse/include/asm-xen/system.h similarity index 100% rename from linux-2.4.27-xen-sparse/include/asm-xen/system.h rename to linux-2.4.28-xen-sparse/include/asm-xen/system.h diff --git a/linux-2.4.27-xen-sparse/include/asm-xen/vga.h b/linux-2.4.28-xen-sparse/include/asm-xen/vga.h similarity index 100% rename from linux-2.4.27-xen-sparse/include/asm-xen/vga.h rename to linux-2.4.28-xen-sparse/include/asm-xen/vga.h diff --git a/linux-2.4.27-xen-sparse/include/asm-xen/xor.h b/linux-2.4.28-xen-sparse/include/asm-xen/xor.h similarity index 100% rename from linux-2.4.27-xen-sparse/include/asm-xen/xor.h rename to linux-2.4.28-xen-sparse/include/asm-xen/xor.h diff --git a/linux-2.4.27-xen-sparse/include/linux/blk.h b/linux-2.4.28-xen-sparse/include/linux/blk.h similarity index 100% rename from linux-2.4.27-xen-sparse/include/linux/blk.h rename to linux-2.4.28-xen-sparse/include/linux/blk.h diff --git a/linux-2.4.27-xen-sparse/include/linux/mm.h b/linux-2.4.28-xen-sparse/include/linux/mm.h similarity index 99% rename from linux-2.4.27-xen-sparse/include/linux/mm.h rename to linux-2.4.28-xen-sparse/include/linux/mm.h index bd7d65c77c..7efbd0adf0 100644 --- a/linux-2.4.27-xen-sparse/include/linux/mm.h +++ b/linux-2.4.28-xen-sparse/include/linux/mm.h @@ -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) diff --git a/linux-2.4.27-xen-sparse/include/linux/sched.h b/linux-2.4.28-xen-sparse/include/linux/sched.h similarity index 99% rename from linux-2.4.27-xen-sparse/include/linux/sched.h rename to linux-2.4.28-xen-sparse/include/linux/sched.h index 73ac9b3fe4..da2f49dfcf 100644 --- a/linux-2.4.27-xen-sparse/include/linux/sched.h +++ b/linux-2.4.28-xen-sparse/include/linux/sched.h @@ -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)) diff --git a/linux-2.4.27-xen-sparse/include/linux/skbuff.h b/linux-2.4.28-xen-sparse/include/linux/skbuff.h similarity index 100% rename from linux-2.4.27-xen-sparse/include/linux/skbuff.h rename to linux-2.4.28-xen-sparse/include/linux/skbuff.h diff --git a/linux-2.4.27-xen-sparse/include/linux/timer.h b/linux-2.4.28-xen-sparse/include/linux/timer.h similarity index 100% rename from linux-2.4.27-xen-sparse/include/linux/timer.h rename to linux-2.4.28-xen-sparse/include/linux/timer.h diff --git a/linux-2.4.27-xen-sparse/kernel/time.c b/linux-2.4.28-xen-sparse/kernel/time.c similarity index 100% rename from linux-2.4.27-xen-sparse/kernel/time.c rename to linux-2.4.28-xen-sparse/kernel/time.c diff --git a/linux-2.4.27-xen-sparse/kernel/timer.c b/linux-2.4.28-xen-sparse/kernel/timer.c similarity index 100% rename from linux-2.4.27-xen-sparse/kernel/timer.c rename to linux-2.4.28-xen-sparse/kernel/timer.c diff --git a/linux-2.4.27-xen-sparse/mkbuildtree b/linux-2.4.28-xen-sparse/mkbuildtree similarity index 100% rename from linux-2.4.27-xen-sparse/mkbuildtree rename to linux-2.4.28-xen-sparse/mkbuildtree diff --git a/linux-2.4.27-xen-sparse/mm/highmem.c b/linux-2.4.28-xen-sparse/mm/highmem.c similarity index 98% rename from linux-2.4.27-xen-sparse/mm/highmem.c rename to linux-2.4.28-xen-sparse/mm/highmem.c index a68937452c..6ff48a0cac 100644 --- a/linux-2.4.27-xen-sparse/mm/highmem.c +++ b/linux-2.4.28-xen-sparse/mm/highmem.c @@ -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; diff --git a/linux-2.4.27-xen-sparse/mm/memory.c b/linux-2.4.28-xen-sparse/mm/memory.c similarity index 99% rename from linux-2.4.27-xen-sparse/mm/memory.c rename to linux-2.4.28-xen-sparse/mm/memory.c index 6bdb08afe7..0dc91c305b 100644 --- a/linux-2.4.27-xen-sparse/mm/memory.c +++ b/linux-2.4.28-xen-sparse/mm/memory.c @@ -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; diff --git a/linux-2.4.27-xen-sparse/mm/mprotect.c b/linux-2.4.28-xen-sparse/mm/mprotect.c similarity index 100% rename from linux-2.4.27-xen-sparse/mm/mprotect.c rename to linux-2.4.28-xen-sparse/mm/mprotect.c diff --git a/linux-2.4.27-xen-sparse/mm/mremap.c b/linux-2.4.28-xen-sparse/mm/mremap.c similarity index 100% rename from linux-2.4.27-xen-sparse/mm/mremap.c rename to linux-2.4.28-xen-sparse/mm/mremap.c diff --git a/linux-2.4.27-xen-sparse/mm/page_alloc.c b/linux-2.4.28-xen-sparse/mm/page_alloc.c similarity index 97% rename from linux-2.4.27-xen-sparse/mm/page_alloc.c rename to linux-2.4.28-xen-sparse/mm/page_alloc.c index 6b613a537a..621b209a87 100644 --- a/linux-2.4.27-xen-sparse/mm/page_alloc.c +++ b/linux-2.4.28-xen-sparse/mm/page_alloc.c @@ -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); diff --git a/linux-2.4.27-xen-sparse/mm/swapfile.c b/linux-2.4.28-xen-sparse/mm/swapfile.c similarity index 99% rename from linux-2.4.27-xen-sparse/mm/swapfile.c rename to linux-2.4.28-xen-sparse/mm/swapfile.c index 8345e27146..6457f19b74 100644 --- a/linux-2.4.27-xen-sparse/mm/swapfile.c +++ b/linux-2.4.28-xen-sparse/mm/swapfile.c @@ -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; diff --git a/linux-2.4.27-xen-sparse/mm/vmalloc.c b/linux-2.4.28-xen-sparse/mm/vmalloc.c similarity index 100% rename from linux-2.4.27-xen-sparse/mm/vmalloc.c rename to linux-2.4.28-xen-sparse/mm/vmalloc.c diff --git a/linux-2.4.27-xen-sparse/net/core/skbuff.c b/linux-2.4.28-xen-sparse/net/core/skbuff.c similarity index 100% rename from linux-2.4.27-xen-sparse/net/core/skbuff.c rename to linux-2.4.28-xen-sparse/net/core/skbuff.c From 2a91f00708bc947915d54351b57772044e2e9397 Mon Sep 17 00:00:00 2001 From: "mafetter@fleming.research" Date: Thu, 25 Nov 2004 10:38:14 +0000 Subject: [PATCH 03/10] bitkeeper revision 1.1159.192.1 (41a5b616PKr3oSl-gLQrEOCfYSXbTw) Don't flip a segment unless it will actually help fix the problem. Also made the insn decoder slightly more real. Bug fix in detecting expand-down segments. --- xen/arch/x86/x86_32/mm.c | 2 +- xen/arch/x86/x86_32/seg_fixup.c | 53 ++++++++++++++++++++------------- xen/include/asm-x86/desc.h | 5 +++- 3 files changed, 37 insertions(+), 23 deletions(-) diff --git a/xen/arch/x86/x86_32/mm.c b/xen/arch/x86/x86_32/mm.c index d90a60c520..ed95ca77e9 100644 --- a/xen/arch/x86/x86_32/mm.c +++ b/xen/arch/x86/x86_32/mm.c @@ -191,7 +191,7 @@ int check_descriptor(unsigned long *d) if ( (b & _SEGMENT_G) ) limit <<= 12; - if ( (b & (3<<10)) == 1 ) + if ( (b & (_SEGMENT_CODE | _SEGMENT_EC)) == _SEGMENT_EC ) { /* * Grows-down limit check. diff --git a/xen/arch/x86/x86_32/seg_fixup.c b/xen/arch/x86/x86_32/seg_fixup.c index 85d7d75def..a102508c83 100644 --- a/xen/arch/x86/x86_32/seg_fixup.c +++ b/xen/arch/x86/x86_32/seg_fixup.c @@ -169,7 +169,7 @@ int linearise_address(u16 seg, unsigned long off, unsigned long *linear) return 1; } -int fixup_seg(u16 seg, int positive_access) +int fixup_seg(u16 seg, unsigned long offset) { struct domain *d = current; unsigned long *table, a, b, base, limit; @@ -208,7 +208,7 @@ int fixup_seg(u16 seg, int positive_access) /* We only parse 32-bit page-granularity non-privileged data segments. */ if ( (b & (_SEGMENT_P|_SEGMENT_S|_SEGMENT_DB| - _SEGMENT_G|(1<<11)|_SEGMENT_DPL)) != + _SEGMENT_G|_SEGMENT_CODE|_SEGMENT_DPL)) != (_SEGMENT_P|_SEGMENT_S|_SEGMENT_DB|_SEGMENT_G|_SEGMENT_DPL) ) { DPRINTK("Bad segment %08lx:%08lx\n", a, b); @@ -219,10 +219,10 @@ int fixup_seg(u16 seg, int positive_access) base = (b&(0xff<<24)) | ((b&0xff)<<16) | (a>>16); limit = (((b & 0xf0000) | (a & 0x0ffff)) + 1) << 12; - if ( b & (1 << 10) ) + if ( b & _SEGMENT_EC ) { /* Expands-down: All the way to zero? Assume 4GB if so. */ - if ( ((base + limit) < PAGE_SIZE) && positive_access ) + if ( ((base + limit) < PAGE_SIZE) && (offset <= limit) ) { /* Flip to expands-up. */ limit = PAGE_OFFSET - base; @@ -231,8 +231,16 @@ int fixup_seg(u16 seg, int positive_access) } else { - /* Expands-up: All the way to Xen space? Assume 4GB if so. */ - if ( ((PAGE_OFFSET - (base + limit)) < PAGE_SIZE) && !positive_access ) + /* + * Expands-up: All the way to Xen space? Assume 4GB if so. + * NB: we compare offset with limit-15, instead of the "real" + * comparison of offset+15 (worst case) with limit, + * to avoid possible unsigned int overflow of offset+15. + * limit-15 will not underflow here because we don't allow expand-up + * segments with maxlimit. + */ + if ( ((PAGE_OFFSET - (base + limit)) < PAGE_SIZE) && + ((offset) > (limit-15)) ) { /* Flip to expands-down. */ limit = -(base & PAGE_MASK); @@ -250,7 +258,7 @@ int fixup_seg(u16 seg, int positive_access) limit = (limit >> 12) - 1; a &= ~0x0ffff; a |= limit & 0x0ffff; b &= ~0xf0000; b |= limit & 0xf0000; - b ^= 1 << 10; /* grows-up <-> grows-down */ + b ^= _SEGMENT_EC; /* grows-up <-> grows-down */ /* NB. These can't fault. Checked readable above; must also be writable. */ table[2*idx+0] = a; table[2*idx+1] = b; @@ -317,37 +325,40 @@ int gpf_emulate_4gb(struct xen_regs *regs) goto fail; } - if ( (pb - eip) == 4 ) - break; - + if ( (pb - eip) >= 15 ) + { + DPRINTK("Too many instruction prefixes for a legal instruction\n"); + goto fail; + } + switch ( b ) { - case 0xf0: /* LOCK */ - case 0xf2: /* REPNE/REPNZ */ - case 0xf3: /* REP/REPE/REPZ */ case 0x67: /* Address-size override */ DPRINTK("Unhandleable prefix byte %02x\n", b); goto fixme; case 0x66: /* Operand-size override */ - break; + case 0xf0: /* LOCK */ + case 0xf2: /* REPNE/REPNZ */ + case 0xf3: /* REP/REPE/REPZ */ + continue; case 0x2e: /* CS override */ pseg = ®s->cs; - break; + continue; case 0x3e: /* DS override */ pseg = ®s->ds; - break; + continue; case 0x26: /* ES override */ pseg = ®s->es; - break; + continue; case 0x64: /* FS override */ pseg = ®s->fs; - break; + continue; case 0x65: /* GS override */ pseg = ®s->gs; - break; + continue; case 0x36: /* SS override */ pseg = ®s->ss; - break; + continue; default: /* Not a prefix byte */ goto done_prefix; } @@ -455,7 +466,7 @@ int gpf_emulate_4gb(struct xen_regs *regs) offset += *(u32 *)memreg; skip_modrm: - if ( !fixup_seg((u16)(*pseg), (signed long)offset >= 0) ) + if ( !fixup_seg((u16)(*pseg), offset) ) goto fail; /* Success! */ diff --git a/xen/include/asm-x86/desc.h b/xen/include/asm-x86/desc.h index 0e2967c4f8..0d6fc65b32 100644 --- a/xen/include/asm-x86/desc.h +++ b/xen/include/asm-x86/desc.h @@ -27,8 +27,11 @@ (((_s)&3) == 1)) #define VALID_CODESEL(_s) ((_s) == FLAT_RING1_CS || VALID_SEL(_s)) -/* These are bitmasks for the first 32 bits of a descriptor table entry. */ +/* These are bitmasks for the high 32 bits of a descriptor table entry. */ #define _SEGMENT_TYPE (15<< 8) +#define _SEGMENT_EC ( 1<<10) /* Expand-down or Conforming segment */ +#define _SEGMENT_CODE ( 1<<11) /* Code (vs data) segment for non-system + segments */ #define _SEGMENT_S ( 1<<12) /* System descriptor (yes iff S==0) */ #define _SEGMENT_DPL ( 3<<13) /* Descriptor Privilege Level */ #define _SEGMENT_P ( 1<<15) /* Segment Present */ From 502e58b97303e5565339eed04abc0a965624bd50 Mon Sep 17 00:00:00 2001 From: "mjw@wray-m-3.hpl.hp.com" Date: Thu, 25 Nov 2004 11:41:30 +0000 Subject: [PATCH 04/10] bitkeeper revision 1.1159.193.2 (41a5c4ea-QO7fPUkeH3KKO5W7upn-w) Fix 'make dist' to install in xen install dir and not remake gc every time. --- tools/vnet/Makefile | 24 ++++++++++++++++++------ tools/vnet/vnet-module/00README | 18 ++++++++---------- tools/vnet/vnet-module/Makefile | 4 ++-- tools/vnet/vnet-module/Makefile-2.4 | 1 + tools/vnet/vnet-module/Makefile-2.6 | 2 +- tools/vnet/vnet-module/Makefile.ver | 6 +++--- 6 files changed, 33 insertions(+), 22 deletions(-) diff --git a/tools/vnet/Makefile b/tools/vnet/Makefile index 346adb99d3..1eddeb44cc 100644 --- a/tools/vnet/Makefile +++ b/tools/vnet/Makefile @@ -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 diff --git a/tools/vnet/vnet-module/00README b/tools/vnet/vnet-module/00README index 8dfaf00bbd..3a798985b3 100644 --- a/tools/vnet/vnet-module/00README +++ b/tools/vnet/vnet-module/00README @@ -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- under XENO_ROOT. +KERNEL_SRC: path to kernel source, default linux- 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 diff --git a/tools/vnet/vnet-module/Makefile b/tools/vnet/vnet-module/Makefile index a9bf9afea9..9d33c70981 100644 --- a/tools/vnet/vnet-module/Makefile +++ b/tools/vnet/vnet-module/Makefile @@ -20,9 +20,9 @@ #============================================================================ ifeq ($(src),) -LINUX_RELEASE ?=2.6 +LINUX_SERIES ?=2.6 -include Makefile-$(LINUX_RELEASE) +include Makefile-$(LINUX_SERIES) #============================================================================ else diff --git a/tools/vnet/vnet-module/Makefile-2.4 b/tools/vnet/vnet-module/Makefile-2.4 index e0dad1a8c8..4a512aaa3b 100644 --- a/tools/vnet/vnet-module/Makefile-2.4 +++ b/tools/vnet/vnet-module/Makefile-2.4 @@ -21,6 +21,7 @@ #============================================================================ # Vnet module makefile for 2.4 series kernels. +LINUX_SERIES ?=2.4 include Makefile.ver KERNEL_MODULE := vnet_module.o diff --git a/tools/vnet/vnet-module/Makefile-2.6 b/tools/vnet/vnet-module/Makefile-2.6 index a46db54da4..698644a1f4 100644 --- a/tools/vnet/vnet-module/Makefile-2.6 +++ b/tools/vnet/vnet-module/Makefile-2.6 @@ -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 diff --git a/tools/vnet/vnet-module/Makefile.ver b/tools/vnet/vnet-module/Makefile.ver index ddd3541ee3..586c26ee8e 100644 --- a/tools/vnet/vnet-module/Makefile.ver +++ b/tools/vnet/vnet-module/Makefile.ver @@ -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) From e502f6705c29010eb9f43bc405fe245e2c0679e5 Mon Sep 17 00:00:00 2001 From: "iap10@labyrinth.cl.cam.ac.uk" Date: Thu, 25 Nov 2004 14:38:33 +0000 Subject: [PATCH 05/10] bitkeeper revision 1.1159.187.9 (41a5ee69KVaFjE-ukpNOYoRAXKxWvQ) trivial fix to 2.4.28 --- linux-2.4.28-xen-sparse/Makefile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/linux-2.4.28-xen-sparse/Makefile b/linux-2.4.28-xen-sparse/Makefile index 97aa39b068..70df708495 100644 --- a/linux-2.4.28-xen-sparse/Makefile +++ b/linux-2.4.28-xen-sparse/Makefile @@ -1,7 +1,7 @@ VERSION = 2 PATCHLEVEL = 4 SUBLEVEL = 28 -EXTRAVERSION =-xenU +EXTRAVERSION = KERNELRELEASE=$(VERSION).$(PATCHLEVEL).$(SUBLEVEL)$(EXTRAVERSION) From e42012022b3e2431cd180e9983a0503ffeb74d1a Mon Sep 17 00:00:00 2001 From: "iap10@labyrinth.cl.cam.ac.uk" Date: Thu, 25 Nov 2004 15:07:48 +0000 Subject: [PATCH 06/10] bitkeeper revision 1.1159.187.11 (41a5f544EJGqYIJJBOFjrPctFG4vhA) Add wildcard capability to the KERNELS= input to the top-level Makefile. e.g. make KERNELS=*2.4* world --- Makefile | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/Makefile b/Makefile index a3675f7634..83a844202e 100644 --- a/Makefile +++ b/Makefile @@ -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: From ed59407a6d66473e123cfba0485ee1e5219c9c4f Mon Sep 17 00:00:00 2001 From: "kaf24@scramble.cl.cam.ac.uk" Date: Thu, 25 Nov 2004 15:49:16 +0000 Subject: [PATCH 07/10] bitkeeper revision 1.1159.196.1 (41a5fefcFQhZEJPIqPpQEw0opKThFw) Remove MMU_UPDATE_DEBUG stuff. --- .../arch/xen/i386/mm/hypervisor.c | 76 ----------------- .../include/asm-xen/asm-i386/page.h | 9 -- .../include/asm-xen/hypervisor.h | 85 ------------------- 3 files changed, 170 deletions(-) diff --git a/linux-2.6.9-xen-sparse/arch/xen/i386/mm/hypervisor.c b/linux-2.6.9-xen-sparse/arch/xen/i386/mm/hypervisor.c index c6078aa5cd..d950b8a8e2 100644 --- a/linux-2.6.9-xen-sparse/arch/xen/i386/mm/hypervisor.c +++ b/linux-2.6.9-xen-sparse/arch/xen/i386/mm/hypervisor.c @@ -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(); diff --git a/linux-2.6.9-xen-sparse/include/asm-xen/asm-i386/page.h b/linux-2.6.9-xen-sparse/include/asm-xen/asm-i386/page.h index dcea67475a..0c8c031705 100644 --- a/linux-2.6.9-xen-sparse/include/asm-xen/asm-i386/page.h +++ b/linux-2.6.9-xen-sparse/include/asm-xen/asm-i386/page.h @@ -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 diff --git a/linux-2.6.9-xen-sparse/include/asm-xen/hypervisor.h b/linux-2.6.9-xen-sparse/include/asm-xen/hypervisor.h index caca29bd86..235c4fc5a6 100644 --- a/linux-2.6.9-xen-sparse/include/asm-xen/hypervisor.h +++ b/linux-2.6.9-xen-sparse/include/asm-xen/hypervisor.h @@ -94,91 +94,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); static inline int flush_page_update_queue(void) From f9eff6091d66f73e924810edfb4466a00a566e33 Mon Sep 17 00:00:00 2001 From: "kaf24@scramble.cl.cam.ac.uk" Date: Thu, 25 Nov 2004 15:50:36 +0000 Subject: [PATCH 08/10] bitkeeper revision 1.1159.196.2 (41a5ff4ct8PP91KB-eAf60440PriAA) Get rid of MMU_UPDATE_DEBUG in Linux 2.4. --- linux-2.4.27-xen-sparse/arch/xen/mm/fault.c | 21 --------------------- 1 file changed, 21 deletions(-) diff --git a/linux-2.4.27-xen-sparse/arch/xen/mm/fault.c b/linux-2.4.27-xen-sparse/arch/xen/mm/fault.c index 8aeb7fa173..76d95ff03a 100644 --- a/linux-2.4.27-xen-sparse/arch/xen/mm/fault.c +++ b/linux-2.4.27-xen-sparse/arch/xen/mm/fault.c @@ -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; From a8bcd6b668d01a28f6a14e4f2a96c84861605617 Mon Sep 17 00:00:00 2001 From: "kaf24@scramble.cl.cam.ac.uk" Date: Thu, 25 Nov 2004 17:24:07 +0000 Subject: [PATCH 09/10] bitkeeper revision 1.1159.187.15 (41a61537tODn12flBND8W6jum0b79Q) Fix hypercall preemption. At the same time I reimplemented most of the multi-hypercall in arch-independent C code. --- .rootkeys | 3 + xen/arch/x86/domain.c | 29 ++++++-- xen/arch/x86/memory.c | 40 ++++++++--- xen/arch/x86/traps.c | 7 +- xen/arch/x86/x86_32/asm-offsets.c | 8 +++ xen/arch/x86/x86_32/entry.S | 101 --------------------------- xen/common/dom_mem_ops.c | 96 +++++++++++++++---------- xen/common/grant_table.c | 8 +-- xen/common/multicall.c | 76 ++++++++++++++++++++ xen/include/asm-x86/mm.h | 3 - xen/include/asm-x86/multicall.h | 26 +++++++ xen/include/asm-x86/x86_32/uaccess.h | 3 + xen/include/xen/multicall.h | 21 ++++++ xen/include/xen/sched.h | 8 +-- 14 files changed, 263 insertions(+), 166 deletions(-) create mode 100644 xen/common/multicall.c create mode 100644 xen/include/asm-x86/multicall.h create mode 100644 xen/include/xen/multicall.h diff --git a/.rootkeys b/.rootkeys index 94adf6c091..80ab5c2c8f 100644 --- a/.rootkeys +++ b/.rootkeys @@ -697,6 +697,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 @@ -792,6 +793,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 @@ -853,6 +855,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 diff --git a/xen/arch/x86/domain.c b/xen/arch/x86/domain.c index 77a39a2a97..f5627a1ebd 100644 --- a/xen/arch/x86/domain.c +++ b/xen/arch/x86/domain.c @@ -32,6 +32,7 @@ #include #include #include +#include #if !defined(CONFIG_X86_64BITMODE) /* No ring-3 access in initial page tables. */ @@ -428,17 +429,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); } diff --git a/xen/arch/x86/memory.c b/xen/arch/x86/memory.c index c6d9951bc5..f1cf17cec2 100644 --- a/xen/arch/x86/memory.c +++ b/xen/arch/x86/memory.c @@ -1277,14 +1277,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 domain *d = current; @@ -1295,13 +1301,30 @@ 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))) ) return -EFAULT; for ( i = 0; i < count; i++ ) { - hypercall_may_preempt( - __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) ) { @@ -1457,8 +1480,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); return rc; } diff --git a/xen/arch/x86/traps.c b/xen/arch/x86/traps.c index 3a8f8cdd15..5662a6388e 100644 --- a/xen/arch/x86/traps.c +++ b/xen/arch/x86/traps.c @@ -804,7 +804,12 @@ long do_set_trap_table(trap_info_t *traps) for ( ; ; ) { - hypercall_may_preempt(__HYPERVISOR_set_trap_table, 1, traps); + if ( hypercall_preempt_check() ) + { + hypercall_create_continuation( + __HYPERVISOR_set_trap_table, 1, traps); + return __HYPERVISOR_set_trap_table; + } if ( copy_from_user(&cur, traps, sizeof(cur)) ) return -EFAULT; diff --git a/xen/arch/x86/x86_32/asm-offsets.c b/xen/arch/x86/x86_32/asm-offsets.c index 33cfd2e04c..f187acbc4c 100644 --- a/xen/arch/x86/x86_32/asm-offsets.c +++ b/xen/arch/x86/x86_32/asm-offsets.c @@ -59,4 +59,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]); } diff --git a/xen/arch/x86/x86_32/entry.S b/xen/arch/x86/x86_32/entry.S index c92090a141..b235f710f9 100644 --- a/xen/arch/x86/x86_32/entry.S +++ b/xen/arch/x86/x86_32/entry.S @@ -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 DOMAIN_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< #include -static long alloc_dom_mem(struct domain *d, - unsigned long *extent_list, - unsigned long nr_extents, - unsigned int extent_order) +/* + * To allow safe resume of do_dom_mem_op() after preemption, we need to know + * at what point in the page list to resume. For this purpose I steal the + * high-order bits of the @op parameter, which are otherwise unused and zero. + */ +#define START_EXTENT_SHIFT 4 /* op[:4] == start_extent */ + +#define PREEMPT_CHECK(_op) \ + if ( hypercall_preempt_check() ) { \ + hypercall_create_continuation( \ + __HYPERVISOR_dom_mem_op, 5, \ + (_op) | (i << START_EXTENT_SHIFT), \ + extent_list, nr_extents, extent_order, \ + (d == current) ? DOMID_SELF : d->id); \ + return __HYPERVISOR_dom_mem_op; \ + } + +static long +alloc_dom_mem(struct domain *d, + unsigned long *extent_list, + unsigned long start_extent, + unsigned long nr_extents, + unsigned int extent_order) { struct pfn_info *page; unsigned long i; - if ( unlikely(!access_ok(VERIFY_WRITE, extent_list, - nr_extents*sizeof(*extent_list))) ) - return 0; + if ( unlikely(!array_access_ok(VERIFY_WRITE, extent_list, + nr_extents, sizeof(*extent_list))) ) + return start_extent; if ( (extent_order != 0) && !IS_CAPABLE_PHYSDEV(current) ) { DPRINTK("Only I/O-capable domains may allocate > order-0 memory.\n"); - return 0; + return start_extent; } - for ( i = 0; i < nr_extents; i++ ) + for ( i = start_extent; i < nr_extents; i++ ) { - hypercall_may_preempt( - __HYPERVISOR_dom_mem_op, 5, - MEMOP_increase_reservation, - &extent_list[i], nr_extents-i, extent_order, - (d == current) ? DOMID_SELF : d->id); + PREEMPT_CHECK(MEMOP_increase_reservation); if ( unlikely((page = alloc_domheap_pages(d, extent_order)) == NULL) ) { @@ -55,25 +70,23 @@ static long alloc_dom_mem(struct domain *d, return i; } -static long free_dom_mem(struct domain *d, - unsigned long *extent_list, - unsigned long nr_extents, - unsigned int extent_order) +static long +free_dom_mem(struct domain *d, + unsigned long *extent_list, + unsigned long start_extent, + unsigned long nr_extents, + unsigned int extent_order) { struct pfn_info *page; unsigned long i, j, mpfn; - if ( unlikely(!access_ok(VERIFY_READ, extent_list, - nr_extents*sizeof(*extent_list))) ) - return 0; + if ( unlikely(!array_access_ok(VERIFY_READ, extent_list, + nr_extents, sizeof(*extent_list))) ) + return start_extent; - for ( i = 0; i < nr_extents; i++ ) + for ( i = start_extent; i < nr_extents; i++ ) { - hypercall_may_preempt( - __HYPERVISOR_dom_mem_op, 5, - MEMOP_decrease_reservation, - &extent_list[i], nr_extents-i, extent_order, - (d == current) ? DOMID_SELF : d->id); + PREEMPT_CHECK(MEMOP_decrease_reservation); if ( unlikely(__get_user(mpfn, &extent_list[i]) != 0) ) return i; @@ -106,15 +119,24 @@ static long free_dom_mem(struct domain *d, return i; } - -long do_dom_mem_op(unsigned int op, - unsigned long *extent_list, - unsigned long nr_extents, - unsigned int extent_order, - domid_t domid) + +long +do_dom_mem_op(unsigned long op, + unsigned long *extent_list, + unsigned long nr_extents, + unsigned int extent_order, + domid_t domid) { struct domain *d; - long rc; + unsigned long rc, start_extent; + + /* Extract @start_extent from @op. */ + start_extent = op >> START_EXTENT_SHIFT; + op &= (1 << START_EXTENT_SHIFT) - 1; + + if ( unlikely(start_extent > nr_extents) || + unlikely(nr_extents > (~0UL >> START_EXTENT_SHIFT)) ) + return -EINVAL; if ( likely(domid == DOMID_SELF) ) d = current; @@ -126,10 +148,12 @@ long do_dom_mem_op(unsigned int op, switch ( op ) { case MEMOP_increase_reservation: - rc = alloc_dom_mem(d, extent_list, nr_extents, extent_order); + rc = alloc_dom_mem( + d, extent_list, start_extent, nr_extents, extent_order); break; case MEMOP_decrease_reservation: - rc = free_dom_mem(d, extent_list, nr_extents, extent_order); + rc = free_dom_mem( + d, extent_list, start_extent, nr_extents, extent_order); break; default: rc = -ENOSYS; diff --git a/xen/common/grant_table.c b/xen/common/grant_table.c index e01cad9e80..1a207711e2 100644 --- a/xen/common/grant_table.c +++ b/xen/common/grant_table.c @@ -446,14 +446,14 @@ do_grant_table_op( switch ( cmd ) { case GNTTABOP_map_grant_ref: - if ( unlikely(!access_ok(VERIFY_WRITE, uop, - count * sizeof(gnttab_map_grant_ref_t))) ) + if ( unlikely(!array_access_ok( + VERIFY_WRITE, uop, count, sizeof(gnttab_map_grant_ref_t))) ) return -EFAULT; rc = gnttab_map_grant_ref((gnttab_map_grant_ref_t *)uop, count); break; case GNTTABOP_unmap_grant_ref: - if ( unlikely(!access_ok(VERIFY_WRITE, uop, - count * sizeof(gnttab_unmap_grant_ref_t))) ) + if ( unlikely(!array_access_ok( + VERIFY_WRITE, uop, count, sizeof(gnttab_unmap_grant_ref_t))) ) return -EFAULT; rc = gnttab_unmap_grant_ref((gnttab_unmap_grant_ref_t *)uop, count); break; diff --git a/xen/common/multicall.c b/xen/common/multicall.c new file mode 100644 index 0000000000..04b5a7bdd2 --- /dev/null +++ b/xen/common/multicall.c @@ -0,0 +1,76 @@ +/****************************************************************************** + * multicall.c + */ + +#include +#include +#include +#include +#include +#include +#include +#include + +struct mc_state mc_state[NR_CPUS]; + +long do_multicall(multicall_entry_t *call_list, unsigned int nr_calls) +{ + struct mc_state *mcs = &mc_state[smp_processor_id()]; + unsigned int i; + + if ( unlikely(__test_and_set_bit(_MCSF_in_multicall, &mcs->flags)) ) + { + DPRINTK("Multicall reentry is disallowed.\n"); + return -EINVAL; + } + + if ( unlikely(!array_access_ok(VERIFY_WRITE, call_list, + nr_calls, sizeof(*call_list))) ) + { + DPRINTK("Bad memory range %p for %u*%u bytes.\n", + call_list, nr_calls, sizeof(*call_list)); + goto fault; + } + + for ( i = 0; i < nr_calls; i++ ) + { + if ( unlikely(__copy_from_user(&mcs->call, &call_list[i], + sizeof(*call_list))) ) + { + DPRINTK("Error copying from user range %p for %u bytes.\n", + &call_list[i], sizeof(*call_list)); + goto fault; + } + + do_multicall_call(&mcs->call); + + if ( unlikely(__put_user(mcs->call.args[5], &call_list[i].args[5])) ) + { + DPRINTK("Error writing result back to multicall block.\n"); + goto fault; + } + + if ( hypercall_preempt_check() ) + { + /* If the sub-call wasn't preempted, skip over it. */ + if ( !test_bit(_MCSF_call_preempted, &mcs->flags) ) + i++; + + /* Only create a continuation if there is work left to be done. */ + if ( i < nr_calls ) + { + mcs->flags = 0; + hypercall_create_continuation( + __HYPERVISOR_multicall, 2, &call_list[i], nr_calls-i); + return __HYPERVISOR_multicall; + } + } + } + + mcs->flags = 0; + return 0; + + fault: + mcs->flags = 0; + return -EFAULT; +} diff --git a/xen/include/asm-x86/mm.h b/xen/include/asm-x86/mm.h index 31a669c08d..87ffe1ecc1 100644 --- a/xen/include/asm-x86/mm.h +++ b/xen/include/asm-x86/mm.h @@ -221,9 +221,6 @@ extern unsigned long *machine_to_phys_mapping; #define machine_to_phys_mapping ((unsigned long *)RDWR_MPT_VIRT_START) #endif -/* Part of the domain API. */ -int do_mmu_update(mmu_update_t *updates, int count, int *success_count); - #define DEFAULT_GDT_ENTRIES (LAST_RESERVED_GDT_ENTRY+1) #define DEFAULT_GDT_ADDRESS ((unsigned long)gdt_table) diff --git a/xen/include/asm-x86/multicall.h b/xen/include/asm-x86/multicall.h new file mode 100644 index 0000000000..e1a7770354 --- /dev/null +++ b/xen/include/asm-x86/multicall.h @@ -0,0 +1,26 @@ +/****************************************************************************** + * asm-x86/multicall.h + */ + +#ifndef __ASM_X86_MULTICALL_H__ +#define __ASM_X86_MULTICALL_H__ + +#include + +#define do_multicall_call(_call) \ + do { \ + __asm__ __volatile__ ( \ + "pushl "STR(MULTICALL_arg4)"(%0); " \ + "pushl "STR(MULTICALL_arg3)"(%0); " \ + "pushl "STR(MULTICALL_arg2)"(%0); " \ + "pushl "STR(MULTICALL_arg1)"(%0); " \ + "pushl "STR(MULTICALL_arg0)"(%0); " \ + "movl "STR(MULTICALL_op)"(%0),%%eax; " \ + "andl $("STR(NR_hypercalls)"-1),%%eax; " \ + "call *hypercall_table(,%%eax,4); " \ + "movl %%eax,"STR(MULTICALL_result)"(%0); "\ + "addl $20,%%esp; " \ + : : "b" (_call) : "eax", "ecx", "edx" ); \ + } while ( 0 ) + +#endif /* __ASM_X86_MULTICALL_H__ */ diff --git a/xen/include/asm-x86/x86_32/uaccess.h b/xen/include/asm-x86/x86_32/uaccess.h index 7531a29445..650492d59e 100644 --- a/xen/include/asm-x86/x86_32/uaccess.h +++ b/xen/include/asm-x86/x86_32/uaccess.h @@ -66,6 +66,9 @@ extern struct movsl_mask { */ #define access_ok(type,addr,size) (likely(__range_ok(addr,size) == 0)) +#define array_access_ok(type,addr,count,size) \ + (likely(count < (~0UL/size)) && access_ok(type,addr,count*size)) + /* * The exception table consists of pairs of addresses: the first is the * address of an instruction that is allowed to fault, and the second is diff --git a/xen/include/xen/multicall.h b/xen/include/xen/multicall.h new file mode 100644 index 0000000000..5982471330 --- /dev/null +++ b/xen/include/xen/multicall.h @@ -0,0 +1,21 @@ +/****************************************************************************** + * multicall.h + */ + +#ifndef __XEN_MULTICALL_H__ +#define __XEN_MULTICALL_H__ + +#include + +#define _MCSF_in_multicall 0 +#define _MCSF_call_preempted 1 +#define MCSF_in_multicall (1<<_MCSF_in_multicall) +#define MCSF_call_preempted (1<<_MCSF_call_preempted) +struct mc_state { + unsigned long flags; + multicall_entry_t call; +} __cacheline_aligned; + +extern struct mc_state mc_state[NR_CPUS]; + +#endif /* __XEN_MULTICALL_H__ */ diff --git a/xen/include/xen/sched.h b/xen/include/xen/sched.h index a67547e6b9..b0c8d70397 100644 --- a/xen/include/xen/sched.h +++ b/xen/include/xen/sched.h @@ -219,12 +219,8 @@ void continue_cpu_idle_loop(void); void continue_nonidle_task(void); void hypercall_create_continuation(unsigned int op, unsigned int nr_args, ...); -#define hypercall_may_preempt(_op, _nr_args, _args...) \ - do { \ - if ( unlikely(softirq_pending(smp_processor_id())) ) { \ - hypercall_create_continuation(_op , _nr_args , ##_args); \ - return _op; \ - } } while ( 0 ) +#define hypercall_preempt_check() \ + (unlikely(softirq_pending(smp_processor_id()))) /* This domain_hash and domain_list are protected by the domlist_lock. */ #define DOMAIN_HASH_SIZE 256 From 7d2c65d2e32650375095511ddf6a09f2cc2b9918 Mon Sep 17 00:00:00 2001 From: "cl349@arcadians.cl.cam.ac.uk" Date: Thu, 25 Nov 2004 17:45:30 +0000 Subject: [PATCH 10/10] bitkeeper revision 1.1159.194.5 (41a61a3a3tGHnMob5s6YpzKC0ZK3aA) memory.c: Fix case where we have a conflicting current active p.t. Also simplify code flow. --- xen/arch/x86/memory.c | 21 ++++++++++++--------- 1 file changed, 12 insertions(+), 9 deletions(-) diff --git a/xen/arch/x86/memory.c b/xen/arch/x86/memory.c index c6d9951bc5..ba6efa0de4 100644 --- a/xen/arch/x86/memory.c +++ b/xen/arch/x86/memory.c @@ -1757,17 +1757,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, "