From 11ae3daf79de84f2dbe912ffaeb0d71464d3b176 Mon Sep 17 00:00:00 2001 From: "vh249@arcadians.cl.cam.ac.uk" Date: Tue, 5 Apr 2005 09:07:08 +0000 Subject: [PATCH 1/2] bitkeeper revision 1.1236.57.1 (4252553cg_fYLV1TD86ca_IbSyJ_8w) unnecessary difference between vanilla and xen Signed-off-by: Vincent Hanquez --- linux-2.6.11-xen-sparse/arch/xen/i386/kernel/process.c | 2 +- linux-2.6.11-xen-sparse/arch/xen/i386/mm/init.c | 2 +- linux-2.6.11-xen-sparse/include/asm-xen/asm-i386/pgalloc.h | 7 +++---- 3 files changed, 5 insertions(+), 6 deletions(-) diff --git a/linux-2.6.11-xen-sparse/arch/xen/i386/kernel/process.c b/linux-2.6.11-xen-sparse/arch/xen/i386/kernel/process.c index 99cba038fc..771208d00c 100644 --- a/linux-2.6.11-xen-sparse/arch/xen/i386/kernel/process.c +++ b/linux-2.6.11-xen-sparse/arch/xen/i386/kernel/process.c @@ -167,7 +167,7 @@ void show_regs(struct pt_regs * regs) if (regs->xcs & 2) printk(" ESP: %04x:%08lx",0xffff & regs->xss,regs->esp); printk(" EFLAGS: %08lx %s (%s)\n", - regs->eflags, print_tainted(),UTS_RELEASE); + regs->eflags, print_tainted(), system_utsname.release); printk("EAX: %08lx EBX: %08lx ECX: %08lx EDX: %08lx\n", regs->eax,regs->ebx,regs->ecx,regs->edx); printk("ESI: %08lx EDI: %08lx EBP: %08lx", diff --git a/linux-2.6.11-xen-sparse/arch/xen/i386/mm/init.c b/linux-2.6.11-xen-sparse/arch/xen/i386/mm/init.c index e22c3e1932..5a474646d6 100644 --- a/linux-2.6.11-xen-sparse/arch/xen/i386/mm/init.c +++ b/linux-2.6.11-xen-sparse/arch/xen/i386/mm/init.c @@ -194,7 +194,7 @@ static void __init kernel_physical_mapping_init(pgd_t *pgd_base) } } pmd_idx = 0; - } + } } static inline int page_kills_ppro(unsigned long pagenr) diff --git a/linux-2.6.11-xen-sparse/include/asm-xen/asm-i386/pgalloc.h b/linux-2.6.11-xen-sparse/include/asm-xen/asm-i386/pgalloc.h index e278d7098e..42fde5da54 100644 --- a/linux-2.6.11-xen-sparse/include/asm-xen/asm-i386/pgalloc.h +++ b/linux-2.6.11-xen-sparse/include/asm-xen/asm-i386/pgalloc.h @@ -9,13 +9,12 @@ #include /* for phys_to_virt and page_to_pseudophys */ #define pmd_populate_kernel(mm, pmd, pte) \ - set_pmd(pmd, __pmd(_PAGE_TABLE + __pa(pte))) + set_pmd(pmd, __pmd(_PAGE_TABLE + __pa(pte))) -#define pmd_populate(mm, pmd, pte) do { \ +#define pmd_populate(mm, pmd, pte) \ set_pmd(pmd, __pmd(_PAGE_TABLE + \ ((unsigned long long)page_to_pfn(pte) << \ - (unsigned long long) PAGE_SHIFT))); \ -} while (0) + (unsigned long long) PAGE_SHIFT))) /* * Allocate and free page tables. */ From 90522d3b361ca2e3c424cc76afad22926377e53f Mon Sep 17 00:00:00 2001 From: "vh249@arcadians.cl.cam.ac.uk" Date: Tue, 5 Apr 2005 10:11:54 +0000 Subject: [PATCH 2/2] bitkeeper revision 1.1236.57.2 (4252646a-w2lxhow-zRG4FwNSoDk5A) add support for memory suffix in user tools and in kernel Signed-off-by: Vincent Hanquez --- tools/python/xen/xm/main.py | 29 +++++++++++++++++++++++++++-- xen/arch/x86/domain_build.c | 2 +- xen/common/kernel.c | 18 ++++++++++++++++++ xen/include/xen/init.h | 6 +++++- 4 files changed, 51 insertions(+), 4 deletions(-) diff --git a/tools/python/xen/xm/main.py b/tools/python/xen/xm/main.py index 43e12e3892..6fe3535ff3 100644 --- a/tools/python/xen/xm/main.py +++ b/tools/python/xen/xm/main.py @@ -14,6 +14,31 @@ from xen.xend.XendClient import main as xend_client_main from xen.xm import create, destroy, migrate, shutdown, sysrq from xen.xm.opts import * +def unit(c): + if not c.isalpha(): + return 0 + base = 1 + if c == 'G' or c == 'g': base = 1024 * 1024 * 1024 + elif c == 'M' or c == 'm': base = 1024 * 1024 + elif c == 'K' or c == 'k': base = 1024 + else: + print 'ignoring unknown unit' + return base + +def int_unit(str, dest): + base = unit(str[-1]) + if not base: + return int(str) + + value = int(str[:-1]) + dst_base = unit(dest) + if dst_base == 0: + dst_base = 1 + if dst_base > base: + return value / (dst_base / base) + else: + return value * (base / dst_base) + class Group: name = "" @@ -475,7 +500,7 @@ class ProgMaxmem(Prog): def main(self, args): if len(args) != 3: self.err("%s: Invalid argument(s)" % args[0]) dom = args[1] - mem = int(args[2]) + mem = int_unit(args[2], 'm') server.xend_domain_maxmem_set(dom, mem) xm.prog(ProgMaxmem) @@ -493,7 +518,7 @@ MEMORY_TARGET megabytes""" def main(self, args): if len(args) != 3: self.err("%s: Invalid argument(s)" % args[0]) dom = args[1] - mem_target = int(args[2]) + mem_target = int_unit(args[2], 'm') server.xend_domain_mem_target_set(dom, mem_target) xm.prog(ProgBalloon) diff --git a/xen/arch/x86/domain_build.c b/xen/arch/x86/domain_build.c index b7c8156dfd..ff19962606 100644 --- a/xen/arch/x86/domain_build.c +++ b/xen/arch/x86/domain_build.c @@ -23,7 +23,7 @@ /* opt_dom0_mem: Kilobytes of memory allocated to domain 0. */ static unsigned int opt_dom0_mem = 0; -integer_param("dom0_mem", opt_dom0_mem); +integer_unit_param("dom0_mem", opt_dom0_mem); #if defined(__i386__) /* No ring-3 access in initial leaf page tables. */ diff --git a/xen/common/kernel.c b/xen/common/kernel.c index e27a10a76b..33122e9333 100644 --- a/xen/common/kernel.c +++ b/xen/common/kernel.c @@ -55,6 +55,24 @@ void cmdline_parse(char *cmdline) *(unsigned int *)param->var = simple_strtol(opt, (char **)&opt, 0); break; + case OPT_UINT_UNIT: + if ( opt != NULL ) + { + int base = 1; + unsigned int value; + + value = simple_strtoul(opt, (char **)&opt, 0); + if (*opt == 'G' || *opt == 'g') { + base = 1024 * 1024; + opt++; + } if (*opt == 'M' || *opt == 'm') { + base = 1024; + opt++; + } else if (*opt == 'K' || *opt == 'k') + opt++; + *(unsigned int *) param->var = value * base; + } + break; case OPT_BOOL: *(int *)param->var = 1; break; diff --git a/xen/include/xen/init.h b/xen/include/xen/init.h index 6df189f980..991abc6c24 100644 --- a/xen/include/xen/init.h +++ b/xen/include/xen/init.h @@ -59,7 +59,7 @@ extern initcall_t __initcall_start, __initcall_end; */ struct kernel_param { const char *name; - enum { OPT_STR, OPT_UINT, OPT_BOOL } type; + enum { OPT_STR, OPT_UINT, OPT_UINT_UNIT, OPT_BOOL } type; void *var; unsigned int len; }; @@ -74,6 +74,10 @@ extern struct kernel_param __setup_start, __setup_end; static char __setup_str_##_var[] __initdata = _name; \ static struct kernel_param __setup_##_var __attribute_used__ \ __initsetup = { __setup_str_##_var, OPT_UINT, &_var, sizeof(_var) } +#define integer_unit_param(_name, _var) \ + static char __setup_str_##_var[] __initdata = _name; \ + static struct kernel_param __setup_##_var __attribute_used__ \ + __initsetup = { __setup_str_##_var, OPT_UINT_UNIT, &_var, sizeof(_var) } #define string_param(_name, _var) \ static char __setup_str_##_var[] __initdata = _name; \ static struct kernel_param __setup_##_var __attribute_used__ \