Received: by 2002:a05:7412:da14:b0:e2:908c:2ebd with SMTP id fe20csp1859219rdb; Mon, 9 Oct 2023 05:28:08 -0700 (PDT) X-Google-Smtp-Source: AGHT+IHkpgkCjXIeZaMuOLP4jnvfymZ1cRRuwWr0I4havkV+Io0wJOmIqhHFTOirbyQ38f2+UYsJ X-Received: by 2002:a05:6a00:10c1:b0:68f:c1e0:a2a2 with SMTP id d1-20020a056a0010c100b0068fc1e0a2a2mr14902359pfu.2.1696854488111; Mon, 09 Oct 2023 05:28:08 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1696854488; cv=none; d=google.com; s=arc-20160816; b=D8surBLoq0vP2nj98F2ffIVX63sROzbAtH7eoTvgNlCK/w5ygZZlROMHa6vSF2PWmY lrEIJrg697VzY5gQwQrz3tThNUasakgLzGrXjMSrpA04cnhis24oscT2qZ4qpyu14R/8 KCjynhsiYVFV4vimrrqEWq6O7xs2aKXX+fTLYrwzTwMTwuvPx2S/XeRMbRs24HkpA8Ib aqS/blmxPEcGTKcX5ywp/uTsG5BhSduJHXbxwYI4ywJ7pDVUmu2ahStya8baoB9oSEp8 DBZ1ty0+UsI0gupK/R/VHnvLWQlOikHAFIJ5VrzL4xJjBZdWN+fjluFUGWhEAQ6ybHxQ sdoA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:content-transfer-encoding:in-reply-to:from :references:cc:to:subject:user-agent:mime-version:date:message-id; bh=2AlgvQF/Uedg69kung6Isu2iLk7pPqlKbX8+TRmdvjI=; fh=ypPYnC5JBCo0WzKsNSwdmtWDZ4SKhWEQUZqD0uQfJ0g=; b=XNeq4mA+JgcH0S9tumAG62PxdB840ApKCSxWUqziFvala20GinxJlXWGutDWmmOoKt UepT70g0M5k7G+Xf2vdgUdLwK4bIAJW9mk5ZurBNSvmMmnjXVOPSXD0NPzJQ1y4PAzkq dv/9SVnUo384NYhn1ULrXb5HSWqLfvgs+uZ25F0CxQj9vjLsJexBfQSSw249GAljVm0n x8nbIE0Ktr8g3wxfgG77iEUbMbG/lHGn2iRKDHmNUoVIgIPJ3hT5D+W3PLcFS5btWSHM lK9EB7Jsf9+/Mn9/6dBzjOx8sv5Mb6vB2CVEWpTWWQqCq+2t5rV6acjWBRDoxWYXE+dd 17mA== ARC-Authentication-Results: i=1; mx.google.com; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::3:5 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=arm.com Return-Path: Received: from groat.vger.email (groat.vger.email. [2620:137:e000::3:5]) by mx.google.com with ESMTPS id t16-20020a056a0021d000b00690cc6f6f38si7471707pfj.76.2023.10.09.05.28.07 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 09 Oct 2023 05:28:08 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::3:5 as permitted sender) client-ip=2620:137:e000::3:5; Authentication-Results: mx.google.com; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::3:5 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=arm.com Received: from out1.vger.email (depot.vger.email [IPv6:2620:137:e000::3:0]) by groat.vger.email (Postfix) with ESMTP id 9E3BD80A97FC; Mon, 9 Oct 2023 05:28:02 -0700 (PDT) X-Virus-Status: Clean X-Virus-Scanned: clamav-milter 0.103.10 at groat.vger.email Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1376322AbjJIM1w (ORCPT + 99 others); Mon, 9 Oct 2023 08:27:52 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:54460 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1346402AbjJIM1v (ORCPT ); Mon, 9 Oct 2023 08:27:51 -0400 Received: from foss.arm.com (foss.arm.com [217.140.110.172]) by lindbergh.monkeyblade.net (Postfix) with ESMTP id DD9F999 for ; Mon, 9 Oct 2023 05:27:48 -0700 (PDT) Received: from usa-sjc-imap-foss1.foss.arm.com (unknown [10.121.207.14]) by usa-sjc-mx-foss1.foss.arm.com (Postfix) with ESMTP id E8AA61FB; Mon, 9 Oct 2023 05:28:28 -0700 (PDT) Received: from [10.57.3.51] (unknown [10.57.3.51]) by usa-sjc-imap-foss1.foss.arm.com (Postfix) with ESMTPSA id 9F4363F762; Mon, 9 Oct 2023 05:27:46 -0700 (PDT) Message-ID: Date: Mon, 9 Oct 2023 13:27:45 +0100 MIME-Version: 1.0 User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10.15; rv:102.0) Gecko/20100101 Thunderbird/102.15.1 Subject: Re: [PATCH] coresight: Fix crash when Perf and sysfs modes are used concurrently To: James Clark , coresight@lists.linaro.org, hejunhao3@huawei.com Cc: Mike Leach , Leo Yan , Alexander Shishkin , linux-arm-kernel@lists.infradead.org, linux-kernel@vger.kernel.org References: <20231006131452.646721-1-james.clark@arm.com> From: Suzuki K Poulose In-Reply-To: <20231006131452.646721-1-james.clark@arm.com> Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 7bit X-Spam-Status: No, score=-0.5 required=5.0 tests=HEADER_FROM_DIFFERENT_DOMAINS, MAILING_LIST_MULTI,NICE_REPLY_A,RCVD_IN_SBL_CSS,SPF_HELO_NONE,SPF_PASS autolearn=unavailable autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on groat.vger.email Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org X-Greylist: Sender passed SPF test, not delayed by milter-greylist-4.6.4 (groat.vger.email [0.0.0.0]); Mon, 09 Oct 2023 05:28:03 -0700 (PDT) Junhao He, Please could you test the patch and let us know if it resolves the problem for you ? On 06/10/2023 14:14, James Clark wrote: > Partially revert the change in commit 6148652807ba ("coresight: Enable > and disable helper devices adjacent to the path") which changed the bare > call from source_ops(csdev)->enable() to coresight_enable_source() for > Perf sessions. It was missed that coresight_enable_source() is > specifically for the sysfs interface, rather than being a generic call. > This interferes with the sysfs reference counting to cause the following > crash: > > $ perf record -e cs_etm/@tmc_etr0/ -C 0 & > $ echo 1 > /sys/bus/coresight/devices/tmc_etr0/enable_sink > $ echo 1 > /sys/bus/coresight/devices/etm0/enable_source > $ echo 0 > /sys/bus/coresight/devices/etm0/enable_source > > Unable to handle kernel NULL pointer dereference at virtual > address 00000000000001d0 > Internal error: Oops: 0000000096000004 [#1] PREEMPT SMP > ... > Call trace: > etm4_disable+0x54/0x150 [coresight_etm4x] > coresight_disable_source+0x6c/0x98 [coresight] > coresight_disable+0x74/0x1c0 [coresight] > enable_source_store+0x88/0xa0 [coresight] > dev_attr_store+0x20/0x40 > sysfs_kf_write+0x4c/0x68 > kernfs_fop_write_iter+0x120/0x1b8 > vfs_write+0x2dc/0x3b0 > ksys_write+0x70/0x108 > __arm64_sys_write+0x24/0x38 > invoke_syscall+0x50/0x128 > el0_svc_common.constprop.0+0x104/0x130 > do_el0_svc+0x40/0xb8 > el0_svc+0x2c/0xb8 > el0t_64_sync_handler+0xc0/0xc8 > el0t_64_sync+0x1a4/0x1a8 > Code: d53cd042 91002000 b9402a81 b8626800 (f940ead5) > ---[ end trace 0000000000000000 ]--- > > This commit linked below also fixes the issue, but has unlocked updates > to the mode which could potentially race. So until we come up with a > more complete solution that takes all locking and interaction between > both modes into account, just revert back to the old behavior for Perf. > > Reported-by: Junhao He > Closes: https://lore.kernel.org/linux-arm-kernel/20230921132904.60996-1-hejunhao3@huawei.com/ > Fixes: 6148652807ba ("coresight: Enable and disable helper devices adjacent to the path") > Signed-off-by: James Clark The patch looks good to me. I will wait for Junhao to test this before pulling it in. Suzuki > --- > drivers/hwtracing/coresight/coresight-etm-perf.c | 4 ++-- > 1 file changed, 2 insertions(+), 2 deletions(-) > > diff --git a/drivers/hwtracing/coresight/coresight-etm-perf.c b/drivers/hwtracing/coresight/coresight-etm-perf.c > index 5ca6278baff4..89e8ed214ea4 100644 > --- a/drivers/hwtracing/coresight/coresight-etm-perf.c > +++ b/drivers/hwtracing/coresight/coresight-etm-perf.c > @@ -493,7 +493,7 @@ static void etm_event_start(struct perf_event *event, int flags) > goto fail_end_stop; > > /* Finally enable the tracer */ > - if (coresight_enable_source(csdev, CS_MODE_PERF, event)) > + if (source_ops(csdev)->enable(csdev, event, CS_MODE_PERF)) > goto fail_disable_path; > > /* > @@ -587,7 +587,7 @@ static void etm_event_stop(struct perf_event *event, int mode) > return; > > /* stop tracer */ > - coresight_disable_source(csdev, event); > + source_ops(csdev)->disable(csdev, event); > > /* tell the core */ > event->hw.state = PERF_HES_STOPPED;