From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1753292AbbCKNI3 (ORCPT ); Wed, 11 Mar 2015 09:08:29 -0400 Received: from e23smtp07.au.ibm.com ([202.81.31.140]:37639 "EHLO e23smtp07.au.ibm.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1753040AbbCKNIZ (ORCPT ); Wed, 11 Mar 2015 09:08:25 -0400 From: Madhavan Srinivasan To: mpe@ellerman.id.au, benh@kernel.crashing.org, paulus@samba.org Cc: linux-kernel@vger.kernel.org, linuxppc-dev@lists.ozlabs.org, linuxppc-dev@ozlabs.org, eranian@google.com, ak@linux.intel.com, srivatsa@mit.edu, Madhavan Srinivasan Subject: [RFC PATCH 1/7] powerpc/powernv: Data structure and macros definition Date: Wed, 11 Mar 2015 18:37:07 +0530 Message-Id: <1426079233-16720-2-git-send-email-maddy@linux.vnet.ibm.com> X-Mailer: git-send-email 1.9.1 In-Reply-To: <1426079233-16720-1-git-send-email-maddy@linux.vnet.ibm.com> References: <1426079233-16720-1-git-send-email-maddy@linux.vnet.ibm.com> X-TM-AS-MML: disable X-Content-Scanned: Fidelis XPS MAILER x-cbid: 15031113-0025-0000-0000-00000124F5AD Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Patch adds the data structures and macros needed for nest pmu support. "type" structure will hold each nest unit and sub-unit information. Signed-off-by: Madhavan Srinivasan --- arch/powerpc/perf/uncore_pmu.h | 89 ++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 89 insertions(+) create mode 100644 arch/powerpc/perf/uncore_pmu.h diff --git a/arch/powerpc/perf/uncore_pmu.h b/arch/powerpc/perf/uncore_pmu.h new file mode 100644 index 0000000..ba4b3f4 --- /dev/null +++ b/arch/powerpc/perf/uncore_pmu.h @@ -0,0 +1,89 @@ +/* + * Uncore Performance Monitor counter support. + * + * Derived from Intel's uncore framework + * written by: Liang,Kan + * Zheng, Yan + * Andi Keen + * + * Copyright Intel Corporation. + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License + * as published by the Free Software Foundation; under version + * 2 of the License. + */ + +#include +#include +#include +#include +#include +#include +#include + +/* + * Macros for pmu groups + */ +#define pmu_group attr_groups[0] +#define format_group attr_groups[1] +#define events_group attr_groups[2] + +/* + * uncore specific macros + */ +#define P8_MAX_CHIP 256 +#define MAX_PMU_NAME_LEN 128 +#define MAX_UNITS_SUPPORTED 16 +#define MAX_SUB_UNITS 8 +#define MAX_TYPE_EVENTS 16 +#define MAX_EVENTS_SUPPORTED 256 + +/* + * Structure to hold event information for a + * uncore pmu type. Device-Tree contain events + * and memory offsets to access the counter for + * a gievn event. Some events will also carry + * unit and scale. + */ +struct ppc64_uncore_type_events { + int ev_offset[MAX_EVENTS_SUPPORTED]; + const char *ev_name[MAX_EVENTS_SUPPORTED]; + const char *ev_value[MAX_EVENTS_SUPPORTED]; +}; + +/* + * Structure to hold per chip specific memory address + * information for uncore pmus, since uncore pmus are + * per-chip. + */ +struct ppc64_uncore_unit { + uint32_t chip_id; + uint64_t preg_base; + uint64_t vreg_base; + uint32_t size; +}; + +/* + * Structure for each uncore unit. + */ +struct ppc64_uncore_type { + const char *name; + int num_boxes; + struct pmu *pmu; + struct ppc64_uncore_pmu *pmus; + struct attribute **event_attrs; + const struct attribute_group *attr_groups[4]; + struct ppc64_uncore_type_events event_arry[MAX_SUB_UNITS]; +}; + + +struct ppc64_uncore_pmu { + struct pmu pmu; + char name[MAX_PMU_NAME_LEN]; + int pmu_idx; + struct ppc64_uncore_type *type; +}; + +struct ppc64_uncore_pmu *uncore_event_to_pmu(struct perf_event *event); +extern int uncore_p8_init(void); -- 1.9.1