From nobody@FreeBSD.org  Fri Jun 13 22:02:56 2008
Return-Path: <nobody@FreeBSD.org>
Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34])
	by hub.freebsd.org (Postfix) with ESMTP id F174D1065670
	for <freebsd-gnats-submit@FreeBSD.org>; Fri, 13 Jun 2008 22:02:56 +0000 (UTC)
	(envelope-from nobody@FreeBSD.org)
Received: from www.freebsd.org (www.freebsd.org [IPv6:2001:4f8:fff6::21])
	by mx1.freebsd.org (Postfix) with ESMTP id E94B68FC15
	for <freebsd-gnats-submit@FreeBSD.org>; Fri, 13 Jun 2008 22:02:56 +0000 (UTC)
	(envelope-from nobody@FreeBSD.org)
Received: from www.freebsd.org (localhost [127.0.0.1])
	by www.freebsd.org (8.14.2/8.14.2) with ESMTP id m5DM2ufA014247
	for <freebsd-gnats-submit@FreeBSD.org>; Fri, 13 Jun 2008 22:02:56 GMT
	(envelope-from nobody@www.freebsd.org)
Received: (from nobody@localhost)
	by www.freebsd.org (8.14.2/8.14.1/Submit) id m5DM2u26014246;
	Fri, 13 Jun 2008 22:02:56 GMT
	(envelope-from nobody)
Message-Id: <200806132202.m5DM2u26014246@www.freebsd.org>
Date: Fri, 13 Jun 2008 22:02:56 GMT
From: pluknet <pluknet@gmail.com>
To: freebsd-gnats-submit@FreeBSD.org
Subject: add CPUID bits to ident phenom processor
X-Send-Pr-Version: www-3.1
X-GNATS-Notify:

>Number:         124564
>Category:       kern
>Synopsis:       [kernel] [patch] add CPUID bits to ident phenom processor
>Confidential:   no
>Severity:       non-critical
>Priority:       low
>Responsible:    freebsd-bugs
>State:          closed
>Quarter:        
>Keywords:       
>Date-Required:  
>Class:          sw-bug
>Submitter-Id:   current-users
>Arrival-Date:   Fri Jun 13 22:10:01 UTC 2008
>Closed-Date:    Sun Feb 07 18:57:31 UTC 2010
>Last-Modified:  Sun Feb 07 18:57:31 UTC 2010
>Originator:     pluknet
>Release:        8.0-CURRENT
>Organization:
n/a
>Environment:
FreeBSD 8.0-CURRENT #6: Wed Apr 30 00:29:35 MSD 2008
>Description:
There are several new CPUIDs to recognize AMD Extended Features, ECX 07FFh for Phenom processor.
According to [1], they are:

Bit 0: LAHF/SAHF
Bit 1: CMP
Bit 2: SVM (Secure Virtual Mode)
Bit 3: APIC
Bit 4: MOV CR8
*Bit 5: Advanced Bit Manipulation (LZCNT)
*Bit 6: SSE4A (EXTRQ, INSERTQ, MOVNTSS, MOVNTSD)
*Bit 7: Misalign SSE
Bit 8: 3DNow! (PREFETCH &#1080; PREFTECHW)
*Bit 9: OS Visible Workaround
*Bit 10: Instruction Based Sampling

* - missing bits in amd64/identcpu.c
[1]http://www.amd.com/us-en/assets/content_type/white_papers_and_tech_docs/31116.pdf
>How-To-Repeat:
Look at "AMD Features2" in dmesg.
>Fix:
Apply the patch.

Patch attached with submission follows:

--- identcpu.c.orig	2008-06-14 01:45:28.000000000 +0400
+++ identcpu.c	2008-06-14 02:04:48.000000000 +0400
@@ -39,7 +39,7 @@
  */
 
 #include <sys/cdefs.h>
-__FBSDID("$FreeBSD: src/sys/amd64/amd64/identcpu.c,v 1.159 2008/05/23 04:03:52 alc Exp $");
+__FBSDID("$FreeBSD$");
 
 #include "opt_cpu.h"
 
@@ -263,6 +263,9 @@
 			 * General-Purpose and System Instructions
 			 * http://www.amd.com/us-en/assets/content_type/white_papers_and_tech_docs/24594.pdf
 			 *
+			 * BIOS and Kernel Developer's Guide (BKDG) For AMD Family 10h Processors
+			 * http://www.amd.com/us-en/assets/content_type/white_papers_and_tech_docs/31116.pdf
+			 *
 			 * IA-32 Intel Architecture Software Developer's Manual,
 			 * Volume 2A: Instruction Set Reference, A-M
 			 * ftp://download.intel.com/design/Pentium4/manuals/25366617.pdf
@@ -313,12 +316,12 @@
 				"\003SVM"	/* Secure Virtual Mode */
 				"\004ExtAPIC"	/* Extended APIC register */
 				"\005CR8"	/* CR8 in legacy mode */
-				"\006<b5>"
-				"\007<b6>"
-				"\010<b7>"
+				"\006ABM"	/* LZCNT Instruction */
+				"\007SSE4A"	/* SSE4A Instructions */
+				"\010MisAlign"	/* Misaligned SSE Mode */
 				"\011Prefetch"	/* 3DNow! Prefetch/PrefetchW */
-				"\012<b9>"
-				"\013<b10>"
+				"\012OSVW"	/* OS Visible Work-around */
+				"\013IBS"	/* Instruction Based Sampling */
 				"\014<b11>"
 				"\015<b12>"
 				"\016<b13>"


>Release-Note:
>Audit-Trail:

From: pluknet <pluknet@gmail.com>
To: bug-followup@freebsd.org, pluknet <pluknet@gmail.com>
Cc:  
Subject: Re: kern/124564: add CPUID bits to ident phenom processor
Date: Sat, 14 Jun 2008 02:31:52 +0400

 ------=_Part_32965_23424683.1213396312031
 Content-Type: text/plain; charset=ISO-8859-1
 Content-Transfer-Encoding: 7bit
 Content-Disposition: inline
 
 Forgot this.
 
 ------=_Part_32965_23424683.1213396312031
 Content-Type: text/x-diff; name=specialreg.h.diff
 Content-Transfer-Encoding: base64
 X-Attachment-Id: f_fhfcx0au0
 Content-Disposition: attachment; filename=specialreg.h.diff
 
 LS0tIHNwZWNpYWxyZWcuaC5vcmlnCTIwMDgtMDYtMTQgMDI6MjU6NDguMDAwMDAwMDAwICswNDAw
 CisrKyBzcGVjaWFscmVnLmgJMjAwOC0wNi0xNCAwMjozMDoyOC4wMDAwMDAwMDAgKzA0MDAKQEAg
 LTI3LDcgKzI3LDcgQEAKICAqIFNVQ0ggREFNQUdFLgogICoKICAqCWZyb206IEAoIylzcGVjaWFs
 cmVnLmgJNy4xIChCZXJrZWxleSkgNS85LzkxCi0gKiAkRnJlZUJTRDogc3JjL3N5cy9hbWQ2NC9p
 bmNsdWRlL3NwZWNpYWxyZWcuaCx2IDEuNDUgMjAwOC8wMy8xMiAyMjowOToxOSBqaGIgRXhwICQK
 KyAqICRGcmVlQlNEJAogICovCiAKICNpZm5kZWYgX01BQ0hJTkVfU1BFQ0lBTFJFR19IXwpAQCAt
 MTUwLDcgKzE1MCwxMiBAQAogI2RlZmluZQlBTURJRDJfU1ZNCTB4MDAwMDAwMDQKICNkZWZpbmUJ
 QU1ESUQyX0VYVF9BUElDCTB4MDAwMDAwMDgKICNkZWZpbmUJQU1ESUQyX0NSOAkweDAwMDAwMDEw
 CisjZGVmaW5lCUFNRElEMl9BQk0JMHgwMDAwMDAyMAorI2RlZmluZQlBTURJRDJfU1NFNEEJMHgw
 MDAwMDA0MAorI2RlZmluZQlBTURJRDJfTUlTQUxJR04JMHgwMDAwMDA4MAogI2RlZmluZQlBTURJ
 RDJfUFJFRkVUQ0gJMHgwMDAwMDEwMAorI2RlZmluZQlBTURJRDJfT1NWVwkweDAwMDAwMjAwCisj
 ZGVmaW5lCUFNRElEMl9JQlMJMHgwMDAwMDQwMAogCiAvKgogICogQ1BVSUQgaW5zdHJ1Y3Rpb24g
 MSBlYnggaW5mbwo=
 ------=_Part_32965_23424683.1213396312031--

From: pluknet <pluknet@gmail.com>
To: FreeBSD-gnats-submit@freebsd.org, freebsd-bugs@freebsd.org
Cc:  
Subject: Re: kern/124564: add CPUID bits to ident phenom processor
Date: Sat, 14 Jun 2008 02:52:47 +0400

 ------=_Part_33013_22424494.1213397567637
 Content-Type: text/plain; charset=ISO-8859-1
 Content-Transfer-Encoding: 7bit
 Content-Disposition: inline
 
 Forgot this.
 
 ------=_Part_33013_22424494.1213397567637
 Content-Type: text/x-diff; name=specialreg.h.diff
 Content-Transfer-Encoding: base64
 X-Attachment-Id: f_fhfdop0d0
 Content-Disposition: attachment; filename=specialreg.h.diff
 
 LS0tIHNwZWNpYWxyZWcuaC5vcmlnCTIwMDgtMDYtMTQgMDI6MjU6NDguMDAwMDAwMDAwICswNDAw
 CisrKyBzcGVjaWFscmVnLmgJMjAwOC0wNi0xNCAwMjozMDoyOC4wMDAwMDAwMDAgKzA0MDAKQEAg
 LTI3LDcgKzI3LDcgQEAKICAqIFNVQ0ggREFNQUdFLgogICoKICAqCWZyb206IEAoIylzcGVjaWFs
 cmVnLmgJNy4xIChCZXJrZWxleSkgNS85LzkxCi0gKiAkRnJlZUJTRDogc3JjL3N5cy9hbWQ2NC9p
 bmNsdWRlL3NwZWNpYWxyZWcuaCx2IDEuNDUgMjAwOC8wMy8xMiAyMjowOToxOSBqaGIgRXhwICQK
 KyAqICRGcmVlQlNEJAogICovCiAKICNpZm5kZWYgX01BQ0hJTkVfU1BFQ0lBTFJFR19IXwpAQCAt
 MTUwLDcgKzE1MCwxMiBAQAogI2RlZmluZQlBTURJRDJfU1ZNCTB4MDAwMDAwMDQKICNkZWZpbmUJ
 QU1ESUQyX0VYVF9BUElDCTB4MDAwMDAwMDgKICNkZWZpbmUJQU1ESUQyX0NSOAkweDAwMDAwMDEw
 CisjZGVmaW5lCUFNRElEMl9BQk0JMHgwMDAwMDAyMAorI2RlZmluZQlBTURJRDJfU1NFNEEJMHgw
 MDAwMDA0MAorI2RlZmluZQlBTURJRDJfTUlTQUxJR04JMHgwMDAwMDA4MAogI2RlZmluZQlBTURJ
 RDJfUFJFRkVUQ0gJMHgwMDAwMDEwMAorI2RlZmluZQlBTURJRDJfT1NWVwkweDAwMDAwMjAwCisj
 ZGVmaW5lCUFNRElEMl9JQlMJMHgwMDAwMDQwMAogCiAvKgogICogQ1BVSUQgaW5zdHJ1Y3Rpb24g
 MSBlYnggaW5mbwo=
 ------=_Part_33013_22424494.1213397567637--

From: pluknet <pluknet@gmail.com>
To: bug-followup@freebsd.org, pluknet <pluknet@gmail.com>
Cc:  
Subject: Re: kern/124564: add CPUID bits to ident phenom processor
Date: Sat, 14 Jun 2008 03:43:01 +0400

 Err.. paste the missing diff inline.
 
 --- specialreg.h.orig   2008-06-14 02:25:48.000000000 +0400
 +++ specialreg.h        2008-06-14 02:30:28.000000000 +0400
 @@ -27,7 +27,7 @@
   * SUCH DAMAGE.
   *
   *     from: @(#)specialreg.h  7.1 (Berkeley) 5/9/91
 - * $FreeBSD: src/sys/amd64/include/specialreg.h,v 1.45 2008/03/12
 22:09:19 jhb             Exp $
 + * $FreeBSD$
   */
 
  #ifndef _MACHINE_SPECIALREG_H_
 @@ -150,7 +150,12 @@
  #define        AMDID2_SVM      0x00000004
  #define        AMDID2_EXT_APIC 0x00000008
  #define        AMDID2_CR8      0x00000010
 +#define        AMDID2_ABM      0x00000020
 +#define        AMDID2_SSE4A    0x00000040
 +#define        AMDID2_MISALIGN 0x00000080
  #define        AMDID2_PREFETCH 0x00000100
 +#define        AMDID2_OSVW     0x00000200
 +#define        AMDID2_IBS      0x00000400
 
  /*
   * CPUID instruction 1 ebx info
State-Changed-From-To: open->closed 
State-Changed-By: gavin 
State-Changed-When: Sun Feb 7 18:49:15 UTC 2010 
State-Changed-Why:  
A similar patch was applied in r186009.  Thanks for your submission! 

http://www.freebsd.org/cgi/query-pr.cgi?pr=124564 
>Unformatted:
