From owner-freebsd-bugs@FreeBSD.ORG Fri Apr 16 08:20:21 2004 Return-Path: Delivered-To: freebsd-bugs@hub.freebsd.org Received: from mx1.FreeBSD.org (mx1.freebsd.org [216.136.204.125]) by hub.freebsd.org (Postfix) with ESMTP id 91B0E16A4CE for ; Fri, 16 Apr 2004 08:20:21 -0700 (PDT) Received: from freefall.freebsd.org (freefall.freebsd.org [216.136.204.21]) by mx1.FreeBSD.org (Postfix) with ESMTP id 75C1843D49 for ; Fri, 16 Apr 2004 08:20:21 -0700 (PDT) (envelope-from gnats@FreeBSD.org) Received: from freefall.freebsd.org (gnats@localhost [127.0.0.1]) i3GFKLbv094375 for ; Fri, 16 Apr 2004 08:20:21 -0700 (PDT) (envelope-from gnats@freefall.freebsd.org) Received: (from gnats@localhost) by freefall.freebsd.org (8.12.10/8.12.10/Submit) id i3GFKLK7094374; Fri, 16 Apr 2004 08:20:21 -0700 (PDT) (envelope-from gnats) Resent-Date: Fri, 16 Apr 2004 08:20:21 -0700 (PDT) Resent-Message-Id: <200404161520.i3GFKLK7094374@freefall.freebsd.org> Resent-From: FreeBSD-gnats-submit@FreeBSD.org (GNATS Filer) Resent-To: freebsd-bugs@FreeBSD.org Resent-Reply-To: FreeBSD-gnats-submit@FreeBSD.org, Gavin Atkinson Received: from mx1.FreeBSD.org (mx1.freebsd.org [216.136.204.125]) by hub.freebsd.org (Postfix) with ESMTP id 0BC2616A4CE for ; Fri, 16 Apr 2004 08:15:22 -0700 (PDT) Received: from mail-gw0.york.ac.uk (mail-gw0.york.ac.uk [144.32.128.245]) by mx1.FreeBSD.org (Postfix) with ESMTP id 5F29D43D5A for ; Fri, 16 Apr 2004 08:15:21 -0700 (PDT) (envelope-from ga9@buffy.york.ac.uk) Received: from kimiko.york.ac.uk (kimiko.york.ac.uk [144.32.226.167]) by mail-gw0.york.ac.uk (8.12.10/8.12.10) with ESMTP id i3GFFAhx012507; Fri, 16 Apr 2004 16:15:10 +0100 (BST) Received: from buffy.york.ac.uk (buffy.york.ac.uk [IPv6:2001:630:61:0:20c:f1ff:fe85:e351]) by kimiko.york.ac.uk (8.12.11/8.12.11) with ESMTP id i3GFFAdi004542; Fri, 16 Apr 2004 16:15:10 +0100 (BST) (envelope-from ga9@buffy.york.ac.uk) Received: from buffy.york.ac.uk (localhost.york.ac.uk [127.0.0.1]) by buffy.york.ac.uk (8.12.11/8.12.11) with ESMTP id i3GFFAdW011326; Fri, 16 Apr 2004 16:15:10 +0100 (BST) (envelope-from ga9@buffy.york.ac.uk) Received: (from ga9@localhost) by buffy.york.ac.uk (8.12.11/8.12.11/Submit) id i3GFFAfM011325; Fri, 16 Apr 2004 16:15:10 +0100 (BST) (envelope-from ga9) Message-Id: <200404161515.i3GFFAfM011325@buffy.york.ac.uk> Date: Fri, 16 Apr 2004 16:15:10 +0100 (BST) From: Gavin Atkinson To: FreeBSD-gnats-submit@FreeBSD.org X-Send-Pr-Version: 3.113 cc: gavin@ury.york.ac.uk Subject: kern/65627: Patch to store P3 serial number in sysctl X-BeenThere: freebsd-bugs@freebsd.org X-Mailman-Version: 2.1.1 Precedence: list Reply-To: Gavin Atkinson List-Id: Bug reports List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 16 Apr 2004 15:20:21 -0000 >Number: 65627 >Category: kern >Synopsis: Patch to store P3 serial number in sysctl >Confidential: no >Severity: non-critical >Priority: low >Responsible: freebsd-bugs >State: open >Quarter: >Keywords: >Date-Required: >Class: sw-bug >Submitter-Id: current-users >Arrival-Date: Fri Apr 16 08:20:21 PDT 2004 >Closed-Date: >Last-Modified: >Originator: Gavin Atkinson >Release: FreeBSD 5.2-CURRENT i386 >Organization: >Environment: System: FreeBSD buffy.york.ac.uk 5.2-CURRENT FreeBSD 5.2-CURRENT #7: Tue Apr 13 19:45:13 BST 2004 root@buffy.york.ac.uk:/usr/obj/usr/src/sys/GENERIC i386 >Description: Pentium III processors have a serial number stored within them. If not disabled, this can be used to license software against, etc. This patch provides userland access to the serial number. It also includes a printf to show the serial number when bootverbose is set, but it may be preferable to not include that. >How-To-Repeat: n/a >Fix: (Patch also at http://www.devrandom.co.uk/freebsd/psn.diff) --- sys/i386/i386/identcpu.c.old Fri Apr 9 18:00:03 2004 +++ sys/i386/i386/identcpu.c Tue Apr 13 22:17:50 2004 @@ -94,6 +94,13 @@ SYSCTL_STRING(_hw, HW_MODEL, model, CTLFLAG_RD, cpu_model, 0, "Machine model"); +SYSCTL_NODE(_hw, OID_AUTO, cpu0, CTLFLAG_RD, + 0, "CPU 0 Information"); + +static char cpu_serial[32]; +SYSCTL_STRING(_hw_cpu0, OID_AUTO, serial, CTLFLAG_RD, + cpu_serial, 0, "CPU serial number"); + static int hw_clockrate; SYSCTL_INT(_hw, OID_AUTO, clockrate, CTLFLAG_RD, &hw_clockrate, 0, "CPU instruction clock rate"); @@ -695,6 +702,21 @@ (cpu_procinfo & CPUID_HTT_CORES) >> 16 > 1) printf("\n Hyperthreading: %d logical CPUs", (cpu_procinfo & CPUID_HTT_CORES) >> 16); + /* + * Obtain the serial number if the CPU supports it + */ + if (cpu_feature & CPUID_PSN) { + do_cpuid(3, regs); + snprintf(cpu_serial, + sizeof(cpu_serial), + "%04x-%04x-%04x-%04x-%04x-%04x", + (cpu_id >> 16), (cpu_id & 0xffff), + (regs[3] >> 16), (regs[3] & 0xffff), + (regs[2] >> 16), (regs[2] & 0xffff)); + if (bootverbose) + printf("\n Processor Serial Number: %s", + cpu_serial); + } } if (strcmp(cpu_vendor, "AuthenticAMD") == 0 && cpu_exthigh >= 0x80000001) >Release-Note: >Audit-Trail: >Unformatted: