All of lore.kernel.org
 help / color / mirror / Atom feed
* Unreachable code about cpu features
@ 2013-03-28 14:40 Choonho Son
  2013-03-28 15:08 ` Andrew Cooper
  2013-03-28 15:09 ` Jan Beulich
  0 siblings, 2 replies; 5+ messages in thread
From: Choonho Son @ 2013-03-28 14:40 UTC (permalink / raw)
  To: xen-devel


[-- Attachment #1.1: Type: text/plain, Size: 2033 bytes --]

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?

##############################
# 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,
         ...

[-- Attachment #1.2: Type: text/html, Size: 2835 bytes --]

[-- Attachment #2: Type: text/plain, Size: 126 bytes --]

_______________________________________________
Xen-devel mailing list
Xen-devel@lists.xen.org
http://lists.xen.org/xen-devel

^ permalink raw reply	[flat|nested] 5+ messages in thread

end of thread, other threads:[~2013-03-28 15:40 UTC | newest]

Thread overview: 5+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2013-03-28 14:40 Unreachable code about cpu features Choonho Son
2013-03-28 15:08 ` Andrew Cooper
2013-03-28 15:30   ` Choonho Son
2013-03-28 15:40     ` Andrew Cooper
2013-03-28 15:09 ` Jan Beulich

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.