:: Re: [DNG] [WARNING] Intel Skylake/K…
Top Page
Delete this message
Reply to this message
Author: Andrew McGlashan
Date:  
To: Devuan DNG
Subject: Re: [DNG] [WARNING] Intel Skylake/Kaby Lake processors: broken hyper-threading
Just re-sending this from the Debian User's list.... FYI
 - originally from: "Henrique de Moraes Holschuh <hmh@???>"
 - this email with the perl script....
      (I'll post that one here too)



On Sun, 25 Jun 2017, Henrique de Moraes Holschuh wrote:
> This warning advisory is relevant for users of systems with the Intel
> processors code-named "Skylake" and "Kaby Lake". These are: the 6th and
> 7th generation Intel Core processors (desktop, embedded, mobile and
> HEDT), their related server processors (such as Xeon v5 and Xeon v6), as
> well as select Intel Pentium processor models.


Attached, you will find a perl script that can help detect if your
system is affected or not. Many thanks to Uwe Kleine-König for
suggesting, and writing this script.

--
Henrique Holschuh

#!/usr/bin/perl
# Copyright 2017 Uwe Kleine-König
#
# This program is free software; you can redistribute it and/or modify it under
# the terms of the GNU General Public License version 2 as published by the
# Free Software Foundation.

open(my $cpuinfo, "</proc/cpuinfo") or die "failed to open cpuinfo\n";

my $cpunum, $vendor, $family, $model, $stepping, $microcoderev, $hyperthreading;

while (<$cpuinfo>) {
    if (/^$/) {
        print "cpu $cpunum: ";
        if ($vendor eq "GenuineIntel" and $family == 6) {
            if ($model == 78 or $model == 94) {
                if ($stepping eq "3") {
                    print "Your CPU is affected, ";
                    if (hex($microcoderev) >= 0xb9) {
                        print "but your microcode is new enough\n";
                    } elsif ($hyperthreading ne "on") {
                        print "but hyper threading is off, which works around the problem\n";
                    } else {
                        print "you should install the latest intel-microcode\n";
                    }
                } else {
                    print "You may need a BIOS/UEFI update (unknown Skylake-Y/H/U/S stepping)\n";
                }
            } elsif ($model == 85 or $model == 142 or $model == 158) {
                print "You may need a BIOS/UEFI update (Kaby Lake, or Skylake-X processor)\n";
            } else {
                print "You're likely not affected\n";
            }
        } else {
            print "You're not affected\n";
        }


        $cpunum = undef;
        $vendor = undef;
        $family = undef;
        $stepping = undef;
        $microcoderev = undef;
        $hyperthreading = undef;


        next;
    }


    $cpunum = $1 if /^processor\s*:\s(.*)/;
    $vendor = $1 if /^vendor_id\s*:\s(.*)/;
    $family = $1 if /^cpu family\s*:\s(.*)/;
    $model = $1 if /^model\s*:\s(.*)/;
    $stepping = $1 if /^stepping\s*:\s(.*)/;
    $microcoderev = $1 if /^microcode\s*:\s(.*)/;


    if (/^flags\s*:/) {
        if (/^flags\s*:.*\bht\b/) {
            $hyperthreading = "on";
        } else {
            $hyperthreading = "off";
        }
    }
}