From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 14438 invoked by alias); 17 Dec 2012 16:02:42 -0000 Received: (qmail 14267 invoked by uid 22791); 17 Dec 2012 16:02:35 -0000 X-SWARE-Spam-Status: No, hits=-7.8 required=5.0 tests=AWL,BAYES_00,KHOP_RCVD_UNTRUST,KHOP_THREADED,RCVD_IN_DNSWL_HI,RCVD_IN_HOSTKARMA_W,T_RP_MATCHES_RCVD X-Spam-Check-By: sourceware.org Received: from mga02.intel.com (HELO mga02.intel.com) (134.134.136.20) by sourceware.org (qpsmtpd/0.43rc1) with ESMTP; Mon, 17 Dec 2012 16:02:26 +0000 Received: from orsmga002.jf.intel.com ([10.7.209.21]) by orsmga101.jf.intel.com with ESMTP; 17 Dec 2012 08:02:01 -0800 X-ExtLoop1: 1 Received: from swsutil001.isw.intel.com ([10.237.237.11]) by orsmga002.jf.intel.com with ESMTP; 17 Dec 2012 08:01:58 -0800 Received: from ulslx001.iul.intel.com (ulslx001.iul.intel.com [172.28.207.63]) by swsutil001.isw.intel.com (8.13.6/8.13.6/MailSET/Hub) with ESMTP id qBHG1uBp019729; Mon, 17 Dec 2012 16:01:57 GMT Received: from ulslx001.iul.intel.com (localhost [127.0.0.1]) by ulslx001.iul.intel.com with ESMTP id qBHG1u6C026560; Mon, 17 Dec 2012 17:01:56 +0100 Received: (from mmetzger@localhost) by ulslx001.iul.intel.com with id qBHG1uor026556; Mon, 17 Dec 2012 17:01:56 +0100 From: markus.t.metzger@intel.com To: jan.kratochvil@redhat.com, palves@redhat.com, tromey@redhat.com, kettenis@gnu.org Cc: gdb-patches@sourceware.org, markus.t.metzger@gmail.com, Markus Metzger Subject: [patch v6 12/12] btrace, x86: disable on some processors Date: Mon, 17 Dec 2012 16:02:00 -0000 Message-Id: <1355760101-26237-13-git-send-email-markus.t.metzger@intel.com> In-Reply-To: <1355760101-26237-1-git-send-email-markus.t.metzger@intel.com> References: <1355760101-26237-1-git-send-email-markus.t.metzger@intel.com> X-IsSubscribed: yes Mailing-List: contact gdb-patches-help@sourceware.org; run by ezmlm Precedence: bulk List-Id: List-Subscribe: List-Archive: List-Post: List-Help: , Sender: gdb-patches-owner@sourceware.org X-SW-Source: 2012-12/txt/msg00561.txt.bz2 From: Markus Metzger LBR, BTM, or BTS records may have incorrect branch "from" information afer an EIST transition, T-states, C1E, or Adaptive Thermal Throttling (AAJ122). This results in sporadic test fails. Disable btrace on those processors. 2012-12-17 Markus Metzger * common/linux-btrace.c (linux_supports_btrace): Add cpuid check. --- gdb/common/linux-btrace.c | 43 +++++++++++++++++++++++++++++++++++++++++++ 1 files changed, 43 insertions(+), 0 deletions(-) diff --git a/gdb/common/linux-btrace.c b/gdb/common/linux-btrace.c index 1231ccc..b5a41a5 100644 --- a/gdb/common/linux-btrace.c +++ b/gdb/common/linux-btrace.c @@ -247,7 +247,50 @@ perf_event_read_bts (struct btrace_target_info* tinfo, const uint8_t *begin, int linux_supports_btrace (void) { +#if defined(__i386__) || defined(__x86_64__) + { + unsigned int cpuid, model, family; + + __asm__ __volatile__ ("movl $1, %%eax;" + "cpuid;" + : "=a" (cpuid) + :: "%ebx", "%ecx", "%edx"); + + family = (cpuid >> 8) & 0xf; + model = (cpuid >> 4) & 0xf; + + switch (family) + { + case 6: + model += (cpuid >> 12) & 0xf0; + + switch (model) + { + case 26: /* Nehalem */ + case 30: + case 46: + case 37: /* Westmere */ + case 44: + case 47: + case 42: /* Sandy Bridge */ + case 45: + case 58: /* Ivy Bridge */ + + /* AAJ122: LBR, BTM, or BTS records may have incorrect branch + "from" information afer an EIST transition, T-states, C1E, or + Adaptive Thermal Throttling. */ + return 0; + } + } + } + return 1; + +#else /* defined(__i386__) || defined(__x86_64__) */ + + return 0; + +#endif /* defined(__i386__) || defined(__x86_64__) */ } /* See linux-btrace.h. */ -- 1.7.6.5