| 
  
  
     On 28/03/2013 15:30, Choonho Son wrote: 
     
    Thanks for quick response.
       
       
      How can I overwrite values using command line? 
      I want to hide AVX flag even though my CPU is sandybridge. 
       
       
      Thanks, 
     
     
    Dropping xen-devel to bcc as this is a xen-users question 
     
    http://xenbits.xen.org/docs/unstable/misc/xen-command-line.html 
     
    From memory, you probably want  
     
    cpuid_mask_ext_ecx=fffeffff 
     
    ~Andrew 
     
    
      
        
        
          2013/3/29 Andrew Cooper  <andrew.cooper3@xxxxxxxxxx>
          
            On 28/03/2013 14:40, Choonho Son wrote: 
              > Hi all, 
              > 
              > I still have some questions about cpu flags. 
              > - 
              > Reference:  http://lists.xen.org/archives/html/xen-devel/2013-03/msg00891.html
              > 
              > I printed the values about following code: 
              >  if (!~(opt_cpuid_mask_ecx & opt_cpuid_mask_edx
              & 
              >                opt_cpuid_mask_ext_ecx &
              opt_cpuid_mask_ext_edx & 
              >                opt_cpuid_mask_xsave_eax)) 
              >                 return; 
              > 
              > Above code is always true, so the next "switch" code
              is not reachable. 
              > Is it correct code?
              
              
            No - these variables can be specified on the command line,
            as is the 
            convention with variable beginning "opt_". 
             
            The result is that if the user specifies any of them, we
            enter the 
            switch statement and apply the appropriate feature masking. 
             
                ~Andrew 
              
            
               
                > 
                > ############################## 
                > # Source: xen/arch/x86/cpu/intel.c 
                > ############################## 
                > 
                > ################# 
                > # debugging result 
                > ################# 
                > (XEN) opt_cpuid_mask_ecx:-1 opt_cpuid_mask_edx:-1 
                > opt_cpuid_mask_ext_ecx:-1 opt_cpuid_mask_ext_edx:-1 
                > opt_cpuid_mask_xsave_eax:-1 
                > 
                > /* 
                >  * opt_cpuid_mask_ecx/edx: cpuid.1[ecx, edx]
                feature mask. 
                >  * For example, E8400[Intel Core 2 Duo Processor
                series] ecx = 0x0008E3FD, 
                >  * edx = 0xBFEBFBFF when executing CPUID.EAX = 1
                normally. If you want to 
                >  * 'rev down' to E8400, you can set these values in
                these Xen boot 
                > parameters. 
                >  */ 
                > static void __devinit set_cpuidmask(const struct
                cpuinfo_x86 *c) 
                > { 
                >         u32 eax, edx; 
                >         const char *extra = ""; 
                > 
                > 
                >         printk(XENLOG_INFO  "opt_cpuid_mask_ecx:%d 
                > opt_cpuid_mask_edx:%d opt_cpuid_mask_ext_ecx:%d 
                > opt_cpuid_mask_ext_edx:%d
                opt_cpuid_mask_xsave_eax:%d\n", 
                > opt_cpuid_mask_ecx, opt_cpuid_mask_edx,
                opt_cpuid_mask_ext_ecx, 
                > opt_cpuid_mask_ext_edx,opt_cpuid_mask_xsave_eax); 
                >         if (!~(opt_cpuid_mask_ecx &
                opt_cpuid_mask_edx & 
                >                opt_cpuid_mask_ext_ecx &
                opt_cpuid_mask_ext_edx & 
                >                opt_cpuid_mask_xsave_eax)) 
                >                 return; 
                > 
                >         /************************** 
                >          * Unreachable code (?) 
                >          **************************/ 
                > 
                >         /* Only family 6 supports this feature  */ 
                >         switch ((c->x86 == 6) * c->x86_model)
                { 
                >         case 0x17: 
                >                 if ((c->x86_mask & 0x0f)
                < 4) 
                >                         break; 
                >                 /* fall through */ 
                >         case 0x1d: 
                >                 wrmsr(MSR_INTEL_CPUID_FEATURE_MASK, 
                >          ... 
                 
               
             
           
         
        
       
     
     
  
 |