Received: by 10.223.176.46 with SMTP id f43csp2593227wra; Thu, 25 Jan 2018 12:15:42 -0800 (PST) X-Google-Smtp-Source: AH8x226R1sbEHfN597sj5aZ3932/RIt1OlZ5bvC7xOdq0/4XYgpuqlVi7oefJ34sSacmQbrkGzLF X-Received: by 2002:a17:902:67c5:: with SMTP id g5-v6mr8410596pln.106.1516911342592; Thu, 25 Jan 2018 12:15:42 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1516911342; cv=none; d=google.com; s=arc-20160816; b=mXwM0pAzaoXhDd6hwKVKY4dc9gHdsj3JhrerMZ5sPEK+wEzi90QAnkIAqtCllUin1L lUd5XU7nlOGXwY/+Fx1OYC/5ncmby0S6OtOyDVnY6EfquD+ugAMR1HZqslUFLwhJNjaM mpWRfr6zurofy3WEEcw19B1SrpcTYYmeCIHcykGHHf1lFalTE3iqey02UVX/U+dVYYeJ jxkVSG3XLiLUqNG8t+TEDA6yGMygRlrBGJzvdJCkOB18TdduQiuu4McQDwP/6lbXDeky QjXSb9/hfsrZpH492E1QtPgOEWxCXv3OBxDBfGBp76tc4i4cJUq3E1ysZJZv2afPbjEJ yZUQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:references:in-reply-to:message-id:date :subject:cc:to:from:arc-authentication-results; bh=+Y4VMowdhNYOUX+c+dwwUCO8NxfaovfuNQWpFLstGzM=; b=TQzooer9W0Z+I2v0H07Rd3avXp0oB5COnZpgF9GgYqtXySdgMsNEc2jfvUqfGNTgrU 1D57ZAewJJof7HqO/DH8a0wCqjH08ijdC8Ulm2Gwwo4FlYFTfjtYw53y/D1D456J0GrO O0upGZHhFNUwyo6SGmGFtlczsiEPZgIPaV18ygfbAlnPJLqQC9dd75Bd8bZ0pOi0nrbi TBxiYB+rTO4qiw1kR7R0ZaCN4aCZmz07yFFqTd1s/8lUNnm9KXxS55RZWJGxHJbyqhfX TA7xfizuHO2AkLMJjST54LHwpnYdflIuU9Z38hHqfAdoNpRMQ7UF0gVqhsn/F773jl85 6aKQ== ARC-Authentication-Results: i=1; mx.google.com; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Return-Path: Received: from vger.kernel.org (vger.kernel.org. [209.132.180.67]) by mx.google.com with ESMTP id t14si1966301pgn.157.2018.01.25.12.15.26; Thu, 25 Jan 2018 12:15:42 -0800 (PST) Received-SPF: pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) client-ip=209.132.180.67; Authentication-Results: mx.google.com; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1751385AbeAYUOb (ORCPT + 99 others); Thu, 25 Jan 2018 15:14:31 -0500 Received: from mga14.intel.com ([192.55.52.115]:52329 "EHLO mga14.intel.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1751342AbeAYUO2 (ORCPT ); Thu, 25 Jan 2018 15:14:28 -0500 X-Amp-Result: SKIPPED(no attachment in message) X-Amp-File-Uploaded: False Received: from orsmga004.jf.intel.com ([10.7.209.38]) by fmsmga103.fm.intel.com with ESMTP/TLS/DHE-RSA-AES256-GCM-SHA384; 25 Jan 2018 12:14:22 -0800 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.46,413,1511856000"; d="scan'208";a="169164989" Received: from otc-lr-04.jf.intel.com ([10.54.39.128]) by orsmga004.jf.intel.com with ESMTP; 25 Jan 2018 12:14:21 -0800 From: kan.liang@intel.com To: tglx@linutronix.de, peterz@infradead.org, mingo@redhat.com, linux-kernel@vger.kernel.org Cc: acme@kernel.org, eranian@google.com, ak@linux.intel.com, Kan Liang Subject: [PATCH V6 6/8] perf/x86/intel/uncore: SKX support for IIO free running counters Date: Thu, 25 Jan 2018 12:13:46 -0800 Message-Id: <1516911228-5293-6-git-send-email-kan.liang@intel.com> X-Mailer: git-send-email 2.7.4 In-Reply-To: <1516911228-5293-1-git-send-email-kan.liang@intel.com> References: <1516911228-5293-1-git-send-email-kan.liang@intel.com> Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org From: Kan Liang As of Skylake Server, there are a number of free-running counters in each IIO Box that collect counts for per box IO clocks and per Port Input/Output x BW/Utilization. The free running counter is read-only and always active. Counting will be suspended only when the IIO Box is powered down. There are three types of IIO free running counters on Skylake server, IO CLOCKS counter, BANDWIDTH counters and UTILIZATION counters. IO CLOCKS counter is to count IO clocks. BANDWIDTH counters are to count inbound(PCIe->CPU)/outbound(CPU->PCIe) bandwidth. UTILIZATION counters are to count input/output utilization. The bit width of the free running counters is 36-bits. Reviewed-by: Thomas Gleixner Signed-off-by: Kan Liang --- No changes since V5 arch/x86/events/intel/uncore_snbep.c | 58 ++++++++++++++++++++++++++++++++++++ 1 file changed, 58 insertions(+) diff --git a/arch/x86/events/intel/uncore_snbep.c b/arch/x86/events/intel/uncore_snbep.c index 6d8044a..0e2daca 100644 --- a/arch/x86/events/intel/uncore_snbep.c +++ b/arch/x86/events/intel/uncore_snbep.c @@ -3468,6 +3468,61 @@ static struct intel_uncore_ops skx_uncore_iio_ops = { .read_counter = uncore_msr_read_counter, }; +enum perf_uncore_iio_freerunning_type_id { + SKX_IIO_MSR_IOCLK = 0, + SKX_IIO_MSR_BW = 1, + SKX_IIO_MSR_UTIL = 2, + + SKX_IIO_FREERUNNING_TYPE_MAX, +}; + + +static struct freerunning_counters skx_iio_freerunning[] = { + [SKX_IIO_MSR_IOCLK] = { 0xa45, 0x1, 0x20, 1, 36 }, + [SKX_IIO_MSR_BW] = { 0xb00, 0x1, 0x10, 8, 36 }, + [SKX_IIO_MSR_UTIL] = { 0xb08, 0x1, 0x10, 8, 36 }, +}; + +static struct uncore_event_desc skx_uncore_iio_events[] = { + /* Free-Running IO CLOCKS Counter */ + INTEL_UNCORE_EVENT_DESC(ioclk, "event=0xff,umask=0x10"), + /* Free-Running IIO BANDWIDTH Counters */ + INTEL_UNCORE_EVENT_DESC(bw_in_port0, "event=0xff,umask=0x20"), + INTEL_UNCORE_EVENT_DESC(bw_in_port0.scale, "3.814697266e-6"), + INTEL_UNCORE_EVENT_DESC(bw_in_port0.unit, "MiB"), + INTEL_UNCORE_EVENT_DESC(bw_in_port1, "event=0xff,umask=0x21"), + INTEL_UNCORE_EVENT_DESC(bw_in_port1.scale, "3.814697266e-6"), + INTEL_UNCORE_EVENT_DESC(bw_in_port1.unit, "MiB"), + INTEL_UNCORE_EVENT_DESC(bw_in_port2, "event=0xff,umask=0x22"), + INTEL_UNCORE_EVENT_DESC(bw_in_port2.scale, "3.814697266e-6"), + INTEL_UNCORE_EVENT_DESC(bw_in_port2.unit, "MiB"), + INTEL_UNCORE_EVENT_DESC(bw_in_port3, "event=0xff,umask=0x23"), + INTEL_UNCORE_EVENT_DESC(bw_in_port3.scale, "3.814697266e-6"), + INTEL_UNCORE_EVENT_DESC(bw_in_port3.unit, "MiB"), + INTEL_UNCORE_EVENT_DESC(bw_out_port0, "event=0xff,umask=0x24"), + INTEL_UNCORE_EVENT_DESC(bw_out_port0.scale, "3.814697266e-6"), + INTEL_UNCORE_EVENT_DESC(bw_out_port0.unit, "MiB"), + INTEL_UNCORE_EVENT_DESC(bw_out_port1, "event=0xff,umask=0x25"), + INTEL_UNCORE_EVENT_DESC(bw_out_port1.scale, "3.814697266e-6"), + INTEL_UNCORE_EVENT_DESC(bw_out_port1.unit, "MiB"), + INTEL_UNCORE_EVENT_DESC(bw_out_port2, "event=0xff,umask=0x26"), + INTEL_UNCORE_EVENT_DESC(bw_out_port2.scale, "3.814697266e-6"), + INTEL_UNCORE_EVENT_DESC(bw_out_port2.unit, "MiB"), + INTEL_UNCORE_EVENT_DESC(bw_out_port3, "event=0xff,umask=0x27"), + INTEL_UNCORE_EVENT_DESC(bw_out_port3.scale, "3.814697266e-6"), + INTEL_UNCORE_EVENT_DESC(bw_out_port3.unit, "MiB"), + /* Free-running IIO UTILIZATION Counters */ + INTEL_UNCORE_EVENT_DESC(util_in_port0, "event=0xff,umask=0x30"), + INTEL_UNCORE_EVENT_DESC(util_out_port0, "event=0xff,umask=0x31"), + INTEL_UNCORE_EVENT_DESC(util_in_port1, "event=0xff,umask=0x32"), + INTEL_UNCORE_EVENT_DESC(util_out_port1, "event=0xff,umask=0x33"), + INTEL_UNCORE_EVENT_DESC(util_in_port2, "event=0xff,umask=0x34"), + INTEL_UNCORE_EVENT_DESC(util_out_port2, "event=0xff,umask=0x35"), + INTEL_UNCORE_EVENT_DESC(util_in_port3, "event=0xff,umask=0x36"), + INTEL_UNCORE_EVENT_DESC(util_out_port3, "event=0xff,umask=0x37"), + { /* end: all zeroes */ }, +}; + static struct intel_uncore_type skx_uncore_iio = { .name = "iio", .num_counters = 4, @@ -3479,8 +3534,11 @@ static struct intel_uncore_type skx_uncore_iio = { .event_mask_ext = SKX_IIO_PMON_RAW_EVENT_MASK_EXT, .box_ctl = SKX_IIO0_MSR_PMON_BOX_CTL, .msr_offset = SKX_IIO_MSR_OFFSET, + .num_freerunning_types = SKX_IIO_FREERUNNING_TYPE_MAX, + .freerunning = skx_iio_freerunning, .constraints = skx_uncore_iio_constraints, .ops = &skx_uncore_iio_ops, + .event_descs = skx_uncore_iio_events, .format_group = &skx_uncore_iio_format_group, }; -- 2.7.4