Received: by 2002:ad5:474a:0:0:0:0:0 with SMTP id i10csp1839794imu; Fri, 14 Dec 2018 01:14:19 -0800 (PST) X-Google-Smtp-Source: AFSGD/WigsOhL3hLCy0o8c/Ptl4CRL5Gii1JFb1of/99LcsIFK+AG0vpZp/MiawICsv+8yUic/Tz X-Received: by 2002:a65:5387:: with SMTP id x7mr2020631pgq.412.1544778859536; Fri, 14 Dec 2018 01:14:19 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1544778859; cv=none; d=google.com; s=arc-20160816; b=aa+WWKFEGuDIPHdUsdwRjAUhwL7p5qdE8CA8qiILyUb6r+WW/Hd2fsTNyqSih79D8M AeEJAlSkodcszmS77sq+ygkocJ0KhBVW3RylFnq3pGndeNNt4zhWb3+/GkWBkwpBBPlk q6pnPCB0SuxJeV5sgaMZWLvsWO/0BsaD+10cyUKirAMmB4oP8RbG+ytbBMvCMztpk0+s nCqUERoT4vJGdM6lkgVJzmYWpj86xCv1iuUPSItbl4hejpoY77jp/VNKGppNP9wL4TK2 Dhrb2vjjvnOveLTE1kEKHfnKjKwhQZ6wlgQTMpkOkwatEfdwIlSC8h4HPclbzBUEfS4C As3g== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:message-id:references:in-reply-to:date :subject:cc:to:from; bh=oWuWoweYcWR29K9Bgv0SOnSp4t1HIhwTfEDDs60P0xo=; b=h/FIAhQSNsU40FhUlho2yljvYZg//fCSndGV9yWMWqd/otJ7oMm7a4ppjUBVaW5oMM n2vD6XC52dixKWHUwT8alzV9wiuoL11rA5n8vJ5JC/HQEPRG/LdpHdbln6LwGnu4Giox 99asefG3Ybvo34gP1QCxokjU94IXhHr0BpVmqxQbO1Zvp4NF/HGV191noCLdRNNg0Y4J 3ww2D+qiZZNlPIIaLy+yqSSizCcAbpl6Rtv8NpFo5bCmwyUBzihtzz94UmSL1JlxLYaT 3Dwwt5P7ZAQVwOWgTobblcheXPfwI1DzrEmqYDZVM1gbEOd1E/P7jxWMro3xHdouKZZp 1O7A== 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; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=ibm.com Return-Path: Received: from vger.kernel.org (vger.kernel.org. [209.132.180.67]) by mx.google.com with ESMTP id o27si3778471pgl.53.2018.12.14.01.14.04; Fri, 14 Dec 2018 01:14:19 -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; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=ibm.com Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1729409AbeLNJLi (ORCPT + 99 others); Fri, 14 Dec 2018 04:11:38 -0500 Received: from mx0a-001b2d01.pphosted.com ([148.163.156.1]:57702 "EHLO mx0a-001b2d01.pphosted.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1727579AbeLNJLh (ORCPT ); Fri, 14 Dec 2018 04:11:37 -0500 Received: from pps.filterd (m0098410.ppops.net [127.0.0.1]) by mx0a-001b2d01.pphosted.com (8.16.0.22/8.16.0.22) with SMTP id wBE99ewn031435 for ; Fri, 14 Dec 2018 04:11:36 -0500 Received: from e06smtp05.uk.ibm.com (e06smtp05.uk.ibm.com [195.75.94.101]) by mx0a-001b2d01.pphosted.com with ESMTP id 2pc8gbax1v-1 (version=TLSv1.2 cipher=AES256-GCM-SHA384 bits=256 verify=NOT) for ; Fri, 14 Dec 2018 04:11:35 -0500 Received: from localhost by e06smtp05.uk.ibm.com with IBM ESMTP SMTP Gateway: Authorized Use Only! Violators will be prosecuted for from ; Fri, 14 Dec 2018 09:11:33 -0000 Received: from b06cxnps4076.portsmouth.uk.ibm.com (9.149.109.198) by e06smtp05.uk.ibm.com (192.168.101.135) with IBM ESMTP SMTP Gateway: Authorized Use Only! Violators will be prosecuted; (version=TLSv1/SSLv3 cipher=AES256-GCM-SHA384 bits=256/256) Fri, 14 Dec 2018 09:11:29 -0000 Received: from d06av22.portsmouth.uk.ibm.com (d06av22.portsmouth.uk.ibm.com [9.149.105.58]) by b06cxnps4076.portsmouth.uk.ibm.com (8.14.9/8.14.9/NCO v10.0) with ESMTP id wBE9BSBh6357264 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-GCM-SHA384 bits=256 verify=FAIL); Fri, 14 Dec 2018 09:11:28 GMT Received: from d06av22.portsmouth.uk.ibm.com (unknown [127.0.0.1]) by IMSVA (Postfix) with ESMTP id A0EB84C052; Fri, 14 Dec 2018 09:11:28 +0000 (GMT) Received: from d06av22.portsmouth.uk.ibm.com (unknown [127.0.0.1]) by IMSVA (Postfix) with ESMTP id 9CB3E4C044; Fri, 14 Dec 2018 09:11:27 +0000 (GMT) Received: from localhost.in.ibm.com (unknown [9.124.31.22]) by d06av22.portsmouth.uk.ibm.com (Postfix) with ESMTP; Fri, 14 Dec 2018 09:11:27 +0000 (GMT) From: Anju T Sudhakar To: mpe@ellerman.id.au, linux-kernel@vger.kernel.org Cc: linuxppc-dev@lists.ozlabs.org, maddy@linux.vnet.ibm.com, anju@linux.vnet.ibm.com Subject: [PATCH v2 2/5] powerpc/perf: Rearrange setting of ldbar for thread-imc Date: Fri, 14 Dec 2018 14:41:19 +0530 X-Mailer: git-send-email 2.17.1 In-Reply-To: <20181214091122.20992-1-anju@linux.vnet.ibm.com> References: <20181214091122.20992-1-anju@linux.vnet.ibm.com> X-TM-AS-GCONF: 00 x-cbid: 18121409-0020-0000-0000-000002F6D6D8 X-IBM-AV-DETECTION: SAVI=unused REMOTE=unused XFE=unused x-cbparentid: 18121409-0021-0000-0000-000021470E30 Message-Id: <20181214091122.20992-3-anju@linux.vnet.ibm.com> X-Proofpoint-Virus-Version: vendor=fsecure engine=2.50.10434:,, definitions=2018-12-14_04:,, signatures=0 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 priorityscore=1501 malwarescore=0 suspectscore=0 phishscore=0 bulkscore=0 spamscore=0 clxscore=1015 lowpriorityscore=0 mlxscore=0 impostorscore=0 mlxlogscore=999 adultscore=0 classifier=spam adjust=0 reason=mlx scancount=1 engine=8.0.1-1810050000 definitions=main-1812140085 Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org LDBAR holds the memory address allocated for each cpu. For thread-imc the mode bit (i.e bit 1) of LDBAR is set to accumulation. Currently, ldbar is loaded with per cpu memory address and mode set to accumulation at boot time. To enable trace-imc, the mode bit of ldbar should be set to 'trace'. So to accommodate trace-mode of IMC, reposition setting of ldbar for thread-imc to thread_imc_event_add(). Also reset ldbar at thread_imc_event_del(). Signed-off-by: Anju T Sudhakar --- arch/powerpc/perf/imc-pmu.c | 28 +++++++++++++++++----------- 1 file changed, 17 insertions(+), 11 deletions(-) diff --git a/arch/powerpc/perf/imc-pmu.c b/arch/powerpc/perf/imc-pmu.c index f292a3f284f1..3bef46f8417d 100644 --- a/arch/powerpc/perf/imc-pmu.c +++ b/arch/powerpc/perf/imc-pmu.c @@ -806,8 +806,11 @@ static int core_imc_event_init(struct perf_event *event) } /* - * Allocates a page of memory for each of the online cpus, and write the - * physical base address of that page to the LDBAR for that cpu. + * Allocates a page of memory for each of the online cpus, and load + * LDBAR with 0. + * The physical base address of the page allocated for a cpu will be + * written to the LDBAR for that cpu, when the thread-imc event + * is added. * * LDBAR Register Layout: * @@ -825,7 +828,7 @@ static int core_imc_event_init(struct perf_event *event) */ static int thread_imc_mem_alloc(int cpu_id, int size) { - u64 ldbar_value, *local_mem = per_cpu(thread_imc_mem, cpu_id); + u64 *local_mem = per_cpu(thread_imc_mem, cpu_id); int nid = cpu_to_node(cpu_id); if (!local_mem) { @@ -842,9 +845,7 @@ static int thread_imc_mem_alloc(int cpu_id, int size) per_cpu(thread_imc_mem, cpu_id) = local_mem; } - ldbar_value = ((u64)local_mem & THREAD_IMC_LDBAR_MASK) | THREAD_IMC_ENABLE; - - mtspr(SPRN_LDBAR, ldbar_value); + mtspr(SPRN_LDBAR, 0); return 0; } @@ -995,6 +996,7 @@ static int thread_imc_event_add(struct perf_event *event, int flags) { int core_id; struct imc_pmu_ref *ref; + u64 ldbar_value, *local_mem = per_cpu(thread_imc_mem, smp_processor_id()); if (flags & PERF_EF_START) imc_event_start(event, flags); @@ -1003,6 +1005,9 @@ static int thread_imc_event_add(struct perf_event *event, int flags) return -EINVAL; core_id = smp_processor_id() / threads_per_core; + ldbar_value = ((u64)local_mem & THREAD_IMC_LDBAR_MASK) | THREAD_IMC_ENABLE; + mtspr(SPRN_LDBAR, ldbar_value); + /* * imc pmus are enabled only when it is used. * See if this is triggered for the first time. @@ -1034,11 +1039,7 @@ static void thread_imc_event_del(struct perf_event *event, int flags) int core_id; struct imc_pmu_ref *ref; - /* - * Take a snapshot and calculate the delta and update - * the event counter values. - */ - imc_event_update(event); + mtspr(SPRN_LDBAR, 0); core_id = smp_processor_id() / threads_per_core; ref = &core_imc_refc[core_id]; @@ -1057,6 +1058,11 @@ static void thread_imc_event_del(struct perf_event *event, int flags) ref->refc = 0; } mutex_unlock(&ref->lock); + /* + * Take a snapshot and calculate the delta and update + * the event counter values. + */ + imc_event_update(event); } /* update_pmu_ops : Populate the appropriate operations for "pmu" */ -- 2.17.1