On Fri, Aug 1, 2014 at 8:18 AM, Gopalasubramanian, Ganesh <ganesh.gopalasubraman...@amd.com> wrote:
>> I would like to have a check for a family at the beginning, something like: > >> if (name == signature_NSC_ebx) >> processor = PROCESSOR_GEODE; >> else if (family == 22) >> { >> if (has_movbe) > > I get your idea of having the family checked first and then differentiating > with cpuid info later. > But, this case is getting interesting because, BTVER1 and BTVER2 are two > variants but don't really have same family numbers. > BTVER1 is family 14h and BTVER2 is family 16h. I don't see near term plans > for any additional cpus to either 14h or 16h. > Given that fact, this particular check is applicable only for BTVER2. > In that case, having > > else if (family == 22) > if (has_movbe) > processor = PROCESSOR_BTVER2; > > looks odd. In this case, having only check for family ID should be enough. If BTVER1 and BTVER2 can be uniquely determined by their family IDs , then: ... (signature checks) else if (family == 0x16h) processor = PROCESSOR_BTVER2; else if (family == 0x14h) processor = PROCESSOR_BTVER1; else ... (detect processor in a generic way by its cpuid features.) IMO, this would be the most future-proof approach. Signature checks will override family id checks which will override cpuid checks. Uros.