On 03/07/2018 13:07, Robert Hoo wrote: >> FEAT_XSAVE_COMP_LO, /* CPUID[EAX=0xd,ECX=0].EAX */ >> FEAT_XSAVE_COMP_HI, /* CPUID[EAX=0xd,ECX=0].EDX */ >> + FEATURE_WORDS_NUM_CPUID, >> + FEATURE_WORDS_FIRST_MSR = FEATURE_WORDS_NUM_CPUID, >> + FEAT_MSR_ARCH_CAPABILITIES = FEATURE_WORDS_FIRST_MSR, >> FEATURE_WORDS, >> }; >> >> #define FEATURE_WORDS_NUM_MSRS (FEATURE_WORDS - \ >> FEATURE_WORDS_FIRST_MSR) >> >> Then the existing loops that use FeatureWordInfo can go up to >> FEATURE_WORDS_NUM_CPUID. > Emm... Understand your point now. It is a little risky, all references > to FEATURE_WORDS need to be updated carefully. > OK, let me try to think in this way. > Perhaps, I'll need to define a new 'struct FeautureWordMsrInfo' to > describe feature words from MSR, in parallel to current FeatureWordInfo > (or better rename it to FeatureWordCpuidInfo).
Yes, probably. The plan seems fine. Paolo