Move xen-pm options from dom0 cmdline option to start info. Thus to avoid xen-pm being manually enforced by end user in dom0 cmdline but without enabling them in xen. signed-off-by: Wei Gang diff -r 7299346111fb tools/include/xen-foreign/reference.size --- a/tools/include/xen-foreign/reference.size Wed Jul 23 16:39:46 2008 +0100 +++ b/tools/include/xen-foreign/reference.size Fri Jul 25 11:00:44 2008 +0800 @@ -1,7 +1,7 @@ structs | x86_32 x86_64 ia64 -start_info | 1104 1152 1152 +start_info | 1108 1160 1160 trap_info | 8 16 - pt_fpreg | - - 16 cpu_user_regs | 68 200 - diff -r 7299346111fb xen/arch/x86/domain_build.c --- a/xen/arch/x86/domain_build.c Wed Jul 23 16:39:46 2008 +0100 +++ b/xen/arch/x86/domain_build.c Fri Jul 25 11:00:44 2008 +0800 @@ -808,6 +808,8 @@ int __init construct_dom0( if ( cmdline != NULL ) strlcpy((char *)si->cmd_line, cmdline, sizeof(si->cmd_line)); + si->xen_processor_pmbits = xen_processor_pmbits; + if ( fill_console_start_info((void *)(si + 1)) ) { si->console.dom0.info_off = sizeof(struct start_info); diff -r 7299346111fb xen/arch/x86/setup.c --- a/xen/arch/x86/setup.c Wed Jul 23 16:39:46 2008 +0100 +++ b/xen/arch/x86/setup.c Fri Jul 25 11:00:44 2008 +0800 @@ -997,7 +997,6 @@ void __init __start_xen(unsigned long mb if ( (cmdline != NULL) || (kextra != NULL) ) { static char dom0_cmdline[MAX_GUEST_CMDLINE]; - char xen_pm_param[32]; cmdline = cmdline_cook(cmdline); safe_strcpy(dom0_cmdline, cmdline); @@ -1022,14 +1021,6 @@ void __init __start_xen(unsigned long mb safe_strcat(dom0_cmdline, " acpi="); safe_strcat(dom0_cmdline, acpi_param); } - if ( xen_cpuidle ) - xen_processor_pmbits |= XEN_PROCESSOR_PM_CX; - - snprintf(xen_pm_param, sizeof(xen_pm_param), - " xen_processor_pmbits=%d", xen_processor_pmbits); - - if ( !strstr(dom0_cmdline, "xen_processor_pmbits=") ) - safe_strcat(dom0_cmdline, xen_pm_param); cmdline = dom0_cmdline; } @@ -1040,6 +1031,9 @@ void __init __start_xen(unsigned long mb (mod[initrdidx].mod_start - mod[0].mod_start); _initrd_len = mod[initrdidx].mod_end - mod[initrdidx].mod_start; } + + if ( xen_cpuidle ) + xen_processor_pmbits |= XEN_PROCESSOR_PM_CX; /* * We're going to setup domain0 using the module(s) that we stashed safely diff -r 7299346111fb xen/include/public/xen.h --- a/xen/include/public/xen.h Wed Jul 23 16:39:46 2008 +0100 +++ b/xen/include/public/xen.h Fri Jul 25 11:00:44 2008 +0800 @@ -542,6 +542,7 @@ struct start_info { unsigned long mod_start; /* VIRTUAL address of pre-loaded module. */ unsigned long mod_len; /* Size (bytes) of pre-loaded module. */ int8_t cmd_line[MAX_GUEST_CMDLINE]; + unsigned int xen_processor_pmbits; /* cpu pm flags, XEN_PROCESSOR_PM_x */ }; typedef struct start_info start_info_t;