From owner-freebsd-current@FreeBSD.ORG Sun Mar 9 17:10:22 2008 Return-Path: Delivered-To: current@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 55CF2106567A for ; Sun, 9 Mar 2008 17:10:22 +0000 (UTC) (envelope-from adrian.chadd@gmail.com) Received: from wx-out-0506.google.com (wx-out-0506.google.com [66.249.82.239]) by mx1.freebsd.org (Postfix) with ESMTP id 052B18FC19 for ; Sun, 9 Mar 2008 17:10:21 +0000 (UTC) (envelope-from adrian.chadd@gmail.com) Received: by wx-out-0506.google.com with SMTP id i29so1589004wxd.7 for ; Sun, 09 Mar 2008 10:10:21 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=gamma; h=domainkey-signature:received:received:message-id:date:from:sender:to:subject:cc:mime-version:content-type:content-transfer-encoding:content-disposition:x-google-sender-auth; bh=OiEjIcHWAt3kujPDtsO+CQIvjTS53S2N5lq9TnEf6p4=; b=gN8+vkt2ts3xhhVRYJfR4r0vJC8vl49PecGkV7nSGYBE+V/hJl+o4YJeJ2DMWyb3u0SyWGAXoZw5FN0JgzrEXcm/sVTbM5V9Z4ePL1YHvG6mWBiLin8EWzd4Ky+z5wHdK7SaP+ZEG7hqVtWBlBfDOaTEQybiHBwyXk5ZszCjyp0= DomainKey-Signature: a=rsa-sha1; c=nofws; d=gmail.com; s=gamma; h=message-id:date:from:sender:to:subject:cc:mime-version:content-type:content-transfer-encoding:content-disposition:x-google-sender-auth; b=D7/JxwFlMQlhUv3SDew4cvLsTnGmctjKV+xO+mGV0Co7fmQnCVjtzWag8LTowEzeGqShxCZGrxOK10ZdVjKJgjDIs0LhxtfRe4XKuDMpmTNsC43JaIx5nCFEaG7RXj/y1lDUqcXeG46bOZvNlY/nwFthztN8Xy1O5YEw0X3KD+w= Received: by 10.150.199.21 with SMTP id w21mr2018792ybf.8.1205081163338; Sun, 09 Mar 2008 09:46:03 -0700 (PDT) Received: by 10.150.144.2 with HTTP; Sun, 9 Mar 2008 09:46:03 -0700 (PDT) Message-ID: Date: Mon, 10 Mar 2008 01:46:03 +0900 From: "Adrian Chadd" Sender: adrian.chadd@gmail.com To: jkoshy@freebsd.org MIME-Version: 1.0 Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: 7bit Content-Disposition: inline X-Google-Sender-Auth: 92efe1e3162d450e Cc: current@freebsd.org Subject: issues with hwpmc and athlon XP X-BeenThere: freebsd-current@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: Discussions about the use of FreeBSD-current List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sun, 09 Mar 2008 17:10:22 -0000 Between my Athlon XP box giving me no useful pmc stats and my new Core 2 duo box not even working with pmc, I decided to poke at the Athlon XP support a bit to see if I could figure out what was going on. It seems that at least my revision of the Athlon XP has 48 bit performance counters (AMD Athlon Processor x86 Code Optimisation Guide, page 235 (Performance-Monitoring Counters: Overview) and the top 16 bits read back 0x0000. Since the code is taking the 2's compliment of the stored PMC value (which is so the value is incremented to 0xffffffffffffffff and wraps over, generating an NMI - mentioned on page 240), negating the value gives humerous results: Mar 9 16:09:43 jacinta kernel: hwpmc: TSC/1/0x20 K7/4/0x1ff Mar 9 16:10:02 jacinta kernel: MDP:SWO:1: pc=0xc5814180 pp=0 enable-msr=0 Mar 9 16:10:02 jacinta kernel: local initial: ri 1: 65536 Mar 9 16:10:02 jacinta kernel: MDP:SWO:1: pc=0xc5814180 pp=0xc576a780 enable-msr=0 Mar 9 16:10:02 jacinta kernel: csw_in: ri 1; pmcval 65536 Mar 9 16:10:02 jacinta kernel: MDP:WRI:1: amd-write cpu=0 ri=1 v=ffffffffffff0000 Mar 9 16:10:02 jacinta kernel: MDP:SWI:1: pc=0xc5814180 pp=0xc576a780 enable-msr=0 Mar 9 16:10:02 jacinta kernel: MDP:REA:1: amd-read id=1 class=1 Mar 9 16:10:02 jacinta kernel: MDP:REA:2: amd-read id=1 -> ffff00000000ff01 Mar 9 16:10:02 jacinta kernel: read: ffff00000000ff01; saved 10000; diff -281474976710911 Mar 9 16:10:02 jacinta kernel: csw_out: ri 1: pp_pmcval 65536.. Mar 9 16:10:02 jacinta kernel: csw_out: ... ri 1: pp_pmcval now 281474976710911.. Mar 9 16:10:02 jacinta kernel: MDP:SWO:1: pc=0xc5814180 pp=0xc576a780 enable-msr=0 Mar 9 16:10:02 jacinta kernel: csw_in: ri 1; pmcval 281474976710911 Mar 9 16:10:02 jacinta kernel: MDP:WRI:1: amd-write cpu=0 ri=1 v=fffeffffffffff01 Mar 9 16:10:02 jacinta kernel: MDP:SWI:1: pc=0xc5814180 pp=0xc576a780 enable-msr=0 Mar 9 16:10:02 jacinta kernel: MDP:REA:1: amd-read id=1 class=1 Mar 9 16:10:02 jacinta kernel: MDP:REA:2: amd-read id=1 -> ffff00000000f47f Mar 9 16:10:02 jacinta kernel: read: ffff00000000f47f; saved 10000000000ff; diff -562949953358976 Mar 9 16:10:02 jacinta kernel: csw_out: ri 1: pp_pmcval 281474976710911.. Mar 9 16:10:02 jacinta kernel: csw_out: ... ri 1: pp_pmcval now 844424930004351.. The machine is currently updating to the latest -current (which has the same codepath, so I'm guessing it'll fail the same way here) so I can't provide any further accurate testing just yet. Fixing the amd_read_pmc() routine started providing per-process statistics but I still couldn't see anything relating to the current process. (Oh and whilst I'm at it; maybe some documentation relating to your pmc debugging features would be nice. :) Adrian -- Adrian Chadd - adrian@freebsd.org