On Wed, Jan 18, 2017 at 10:48 PM, Uros Bizjak <ubiz...@gmail.com> wrote:
> Hello!
>
>> This fix follows the same approach that glibc uses to disable TSX on
>> processors on which it is broken.  TSX can also be disabled through a
>> microcode update on these processors, but glibc consensus is that it
>> cannot be detected reliably whether the microcode update has been
>> applied.  Thus, we just look for affected models/steppings.
>>
>> Tested on x86_64-linux (but I don't have a machine with broken TSX
>> available).
>>
>>        libitm/ChangeLog
>>
>>        * config/x86/target.h (htm_available): Add check for some processors
>>        on which TSX is broken.
>
> +      __cpuid (0, a, b, c, d);
> +      if (b == 0x756e6547 && c == 0x6c65746e && d == 0x49656e69)
>
> You can use:
>
> #define signature_INTEL_ebx    0x756e6547
> #define signature_INTEL_ecx    0x6c65746e
> #define signature_INTEL_edx    0x49656e69
>
> defines from cpuid.h here.

Also, the comment:

+      /* TSX is broken on some processors.  This can be fixed by microcode,
+ but we cannot reliably detect whether the microcode has been
+ updated.  Therefore, do not report availability of TSX on these
+ processors.  We use the same approach here as in glibc (see
+ https://sourceware.org/ml/libc-alpha/2016-12/msg00470.html).  */

implies that TSX was fixed by microcode, but microcode update just
disabled TSX feature and cleared relevant cpuid bit.

Uros.

Reply via email to