Received: by 2002:a05:6358:11c7:b0:104:8066:f915 with SMTP id i7csp2611571rwl; Mon, 27 Mar 2023 02:44:13 -0700 (PDT) X-Google-Smtp-Source: AKy350aRnvPssgL0avtZHFBWhcNH3zAkEMnDNGs6+w8vDzcZV2/I0+CcG5YYbRsXBpiT+BFu2noQ X-Received: by 2002:a17:90a:4bca:b0:234:b4a7:2abd with SMTP id u10-20020a17090a4bca00b00234b4a72abdmr13378599pjl.12.1679910253392; Mon, 27 Mar 2023 02:44:13 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1679910253; cv=none; d=google.com; s=arc-20160816; b=xa/Lp1C+JuISbR15p1HspwxbaHBtzK+CswNUu3JS4y+FB4uk57tQqfddjx7yIbocyP 4t34paTVBQDXXD/OBIJhx4WbMHsC2HpajvYaVmW4dT5k+VSS5JaWmptvzzCtDQbshXJg 5IKt/x2tM7auX4kBuTxpaj3OXWN+AL74vhiJBAfgzH1yz36WUiHdYmufTJ9T1ZSVl7vX oVKfLPIteq6bIK796sshm2vG0fOZo7Etw3RLDvCVIo4wmwEKbazfL0E6zXIuALi5hKA5 YdbdSNV543arYfu2KC28H7xXwK1M3SS0NA4UrnsQDMRmSEtkSMQt3sXvHPs5gy1y+Jhj Zgqg== 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:content-language:subject:user-agent:mime-version :date:message-id; bh=dX0sYmoCzHhhdgRhdgBYtvC3zqKtyMozXmJd/4tG7Dg=; b=cUWqBBO60KHl36eXf/V1dRbfN9Co+6PedwgKWQjbb18fTADaf1qfdcPl1xf0Ys1w2h iIiVHseCqsdqBc5t8C6qz/wsZPmIvtLDGijosATJSTwA1HLyLpdjtOBXpAVuM50K44ZV Vc4Z4b5kuOfCozvHu5e4Rtnf+7TWYsFB03ypRok96I3PUr15xYDIDXRVqJ16fsx4q83Y nAoO0igDAAC2mucwMZQUalyCYEhpzLIVMmgKU3y1nK4wIWGlB+FOOHIH63Vv4vEqAE4R WEhRhr461O6awMDCYbbEQsbYvVKHpd+5vwgId5U//r8avUyMYI5zmxXUMNEqzxYV5LkC 2xrg== ARC-Authentication-Results: i=1; mx.google.com; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 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 out1.vger.email (out1.vger.email. [2620:137:e000::1:20]) by mx.google.com with ESMTP id j6-20020a17090ac48600b0023b56d6c9adsi5762658pjt.37.2023.03.27.02.44.02; Mon, 27 Mar 2023 02:44:13 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) client-ip=2620:137:e000::1:20; Authentication-Results: mx.google.com; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=arm.com Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S232983AbjC0Jnq (ORCPT + 99 others); Mon, 27 Mar 2023 05:43:46 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:40268 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S232614AbjC0Jnh (ORCPT ); Mon, 27 Mar 2023 05:43:37 -0400 Received: from foss.arm.com (foss.arm.com [217.140.110.172]) by lindbergh.monkeyblade.net (Postfix) with ESMTP id 6087555AF; Mon, 27 Mar 2023 02:43:29 -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 3586D4B3; Mon, 27 Mar 2023 02:44:13 -0700 (PDT) Received: from [10.1.197.1] (ewhatever.cambridge.arm.com [10.1.197.1]) by usa-sjc-imap-foss1.foss.arm.com (Postfix) with ESMTPSA id 8F14B3F6C4; Mon, 27 Mar 2023 02:43:26 -0700 (PDT) Message-ID: <6f8b087d-77a7-512e-6504-e4841447eda9@arm.com> Date: Mon, 27 Mar 2023 10:43:25 +0100 MIME-Version: 1.0 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:102.0) Gecko/20100101 Thunderbird/102.7.1 Subject: Re: [PATCH v3 02/11] coresight-tpda: Add DSB dataset support Content-Language: en-US To: Tao Zhang , Mathieu Poirier , Alexander Shishkin , Konrad Dybcio , Mike Leach , Rob Herring , Krzysztof Kozlowski , James Clark Cc: Jinlong Mao , Leo Yan , Greg Kroah-Hartman , coresight@lists.linaro.org, linux-arm-kernel@lists.infradead.org, linux-kernel@vger.kernel.org, devicetree@vger.kernel.org, Tingwei Zhang , Yuanfang Zhang , Trilok Soni , Hao Zhang , linux-arm-msm@vger.kernel.org, Bjorn Andersson References: <1679551448-19160-1-git-send-email-quic_taozha@quicinc.com> <1679551448-19160-3-git-send-email-quic_taozha@quicinc.com> <51ad3cb3-bd83-51c9-52bc-f700cd17103c@quicinc.com> <48f31b84-573f-fe1d-bcd7-e55ec7f47831@arm.com> <595568c3-d2bc-e37e-83b3-2adfd3fa4193@quicinc.com> From: Suzuki K Poulose In-Reply-To: <595568c3-d2bc-e37e-83b3-2adfd3fa4193@quicinc.com> Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 8bit X-Spam-Status: No, score=-2.3 required=5.0 tests=NICE_REPLY_A, RCVD_IN_DNSWL_MED,SPF_HELO_NONE,SPF_NONE autolearn=unavailable autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on lindbergh.monkeyblade.net Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org On 27/03/2023 04:31, Tao Zhang wrote: > > On 3/26/2023 3:31 AM, Suzuki K Poulose wrote: >> On 24/03/2023 14:58, Tao Zhang wrote: >>> Hi Suzuki, >>> >>> 在 3/23/2023 7:51 PM, Suzuki K Poulose 写道: >>>> On 23/03/2023 06:03, Tao Zhang wrote: >>>>> Read the DSB element size from the device tree. Set the register >>>>> bit that controls the DSB element size of the corresponding port. >>>>> >>>>> Signed-off-by: Tao Zhang >>>>> --- >>>>>   drivers/hwtracing/coresight/coresight-tpda.c | 58 >>>>> ++++++++++++++++++++++++++++ >>>>>   drivers/hwtracing/coresight/coresight-tpda.h |  4 ++ >>>>>   2 files changed, 62 insertions(+) >>>>> >>>>> diff --git a/drivers/hwtracing/coresight/coresight-tpda.c >>>>> b/drivers/hwtracing/coresight/coresight-tpda.c >>>>> index f712e11..8dcfc4a 100644 >>>>> --- a/drivers/hwtracing/coresight/coresight-tpda.c >>>>> +++ b/drivers/hwtracing/coresight/coresight-tpda.c >>>>> @@ -21,6 +21,47 @@ >>>>>     DEFINE_CORESIGHT_DEVLIST(tpda_devs, "tpda"); >>>>>   +/* Search and read element data size from the TPDM node in >>>>> + * the devicetree. Each input port of TPDA is connected to >>>>> + * a TPDM. Different TPDM supports different types of dataset, >>>>> + * and some may support more than one type of dataset. >>>>> + * Parameter "inport" is used to pass in the input port number >>>>> + * of TPDA, and it is set to 0 in the recursize call. >>>>> + * Parameter "parent" is used to pass in the original call. >>>>> + */ >>>> >>>> I am still not clear why we need to do this recursively ? >>> >>> Some TPDMs are not directly output connected to the TPDAs. So here I >>> >>> use a recursive method to check from the TPDA input port until I find >>> >>> the connected TPDM. >>> >>> Do you have a better suggestion besides a recursive method? >>> >>>> >>>>> +static int tpda_set_element_size(struct tpda_drvdata *drvdata, >>>>> +               struct coresight_device *csdev, int inport, bool >>>>> parent) >>>> >>>> Please could we renamse csdev => tpda_dev >>> >>> Since this is a recursively called function, this Coresight device is >>> not >>> >>> necessarily TPDA, it can be other Coresight device. >>> >>>> >>>>> +{ >>>>> +    static int nr_inport; >>>>> +    int i; >>>>> +    struct coresight_device *in_csdev; >>>> >>>> similarly tpdm_dev ? >>> Same as above, this variable may not necessarily be a TPDM. >>>> >>>> Could we not add a check here to see if the dsb_esize[inport] is >>>> already >>>> set and then bail out, reading this over and over ? >>>> >>> I will update this in the next patch series. >>>>> + >>>>> +    if (inport > (TPDA_MAX_INPORTS - 1)) >>>>> +        return -EINVAL; >>>>> + >>>>> +    if (parent) >>>>> +        nr_inport = inport; >>>>> + >>>>> +    for (i = 0; i < csdev->pdata->nr_inconns; i++) { >>>>> +        in_csdev = csdev->pdata->in_conns[i].remote_dev; >>>> >>>> Please note, the names of the structure field might change in the >>>> next version of James' series >>> Got it. I will keep an eye out for the James' patch series. >>>> >>>>> +        if (!in_csdev) >>>>> +            break; >>>>> + >>>>> +        if (parent) >>>>> +            if (csdev->pdata->in_conns[i].port != inport) >>>>> +                continue; >>>>> + >>>>> +        if (in_csdev && strstr(dev_name(&in_csdev->dev), "tpdm")) { >>>> >>>> Isn't there a better way to distinguish a device to be TPDM ? May be we >>>> could even add a source_sub_type - SOURCE_TPDM instead of using >>>> SOURCE_OTHERS ? Do you expect other sources to be connected to TPDA? >>>> e.g., STMs ? >>> >>> I can add "SOURCE_TPDM" as a source_sub_type, but SOURCE_OTHERS needs >>> >>> to be kept since the other Coresight component we will upstream later >>> may >>> >>> need it. >>> >>>> >>>>> + of_property_read_u32(in_csdev->dev.parent->of_node, >>>>> +                    "qcom,dsb-element-size", >>>>> &drvdata->dsb_esize[nr_inport]); >>>>> +            break; >>>>> +        } >>>>> +        tpda_set_element_size(drvdata, in_csdev, 0, false); >>>> >>>> What is the point of this ? Is this for covering the a TPDA >>>> connected to >>>> another TPDA ? >>>> >>>> e.g., { TPDM0, TPDM1 } -> TPDA0 -> TPDA1 ? >>> >>> A TPDM may not connect to the TPDA directly, for example, >>> >>> TPDM0 ->FUNNEL0->FUNNEL1->TPDA0 >>> >>> And many TPDMs can connect to one TPDA, one input port on TPDA only has >>> >>> one TPDM connected. Therefore, we use a recursive method to find the >>> TPDM >>> >>> corresponding to the input port of TPDA. >> >> How do you find out decide what to choose, if there are multiple TPDMs >> connected to FUNNEL0 or even FUNNEL1 ? >> >> e.g >> >> TPDM0->FUNNEL0->FUNNEL1->TPDA0 >>                 / >>           TPDM1 > > We can find out the corresponding TPDM by the input port number of TPDA. > > Each input port is connected to a TPDM. So we have an input port number in > > the input parameter of the recursive lookup function > "tpda_set_element_size". I don't understand, how you would figure out, in the above situation. i.e., FUNNEL1 is connected to TPDA0, but there are two TPDMs that could be pumping the trace. They both arrive via FUNNEL1. So, how does that solve your problem ? Suzuki > >> Suzuki >> >>