Received: by 10.192.165.148 with SMTP id m20csp474140imm; Wed, 2 May 2018 03:40:57 -0700 (PDT) X-Google-Smtp-Source: AB8JxZpu9ZaVxfcYOVdV56jAStgfo1rhMujXmF5n+PWB1ziW9z7llzbX2sbmsEBfcE9a5GZMlnC3 X-Received: by 2002:a17:902:8345:: with SMTP id z5-v6mr19125380pln.311.1525257657873; Wed, 02 May 2018 03:40:57 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1525257657; cv=none; d=google.com; s=arc-20160816; b=TYW4f0IjKmndGRE+cPsK+G77ULfpE3gLzKpV+H4S8xl+5C5aX7y7/OJHOgvccrKr5t RGlU2Ahlvleaksy+eNmzrAypOAt5WaaRa2TYIcpOQE9r2E/PLq+ycqssX7mXYWsk7jNy 9gCgfd9B6/0EDvk/jmcEzgmFv0f4g5ggyjo4ZvJ9iaMK1vQnFkPsJb4xBhutGDIdB6J8 Ws2BavA6mrE01KXP+TCEMIgwsK8HfXfDpsF4Sc1vPqSDmWW7WQLuuve5YZczoMzRORGn 7Wspp0Rx5kUMYeL7/GJOd8FWNcgi0wTsJ3NCMNNTiUzBznDJmZv5mRjBdtI5ihB3VkHL Kx7g== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:content-transfer-encoding :content-language:in-reply-to:mime-version:user-agent:date :message-id:from:references:cc:to:subject:dkim-signature :arc-authentication-results; bh=SiECI8D8mK2XfPcN71bHU2M+4JmDvu7FsYSPBw/y4Go=; b=EwTi+uV9TavoQonz2BMHIO6mczFlQbDgcIqcReqaxevskTCn1SbQZKOXSOOn2Rwxh8 Y/FwmfGn0EsrOIQmikHtJ4KOOO/PAjCTP3rJc5YUVaVRWvLrBBxpmB/vOa4lRDDqq0+D Caf79lxHuGiKppUVwic8Zwho7YiCZT/hMQm4Zz/i9RKY5SwzGAL4EXbHSHOTCPwOl+rM nrSeSVddU67bUImr78xSiBjhTAK9/j6olRbeAFfiEyFX4CmQNUB1u1R4sZRqzT7vtjk7 JoX7A3Cy39x6U5IOZgMaoV/aWJ3ayWx4CbXSL7Q6dCy7NQT62ieSrhK8Ic01jqGFG3At sloQ== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@synopsys.com header.s=mail header.b=CmMyjyj6; 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=pass (p=NONE sp=NONE dis=NONE) header.from=synopsys.com Return-Path: Received: from vger.kernel.org (vger.kernel.org. [209.132.180.67]) by mx.google.com with ESMTP id b79si11164509pfm.104.2018.05.02.03.40.43; Wed, 02 May 2018 03:40:57 -0700 (PDT) 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; dkim=pass header.i=@synopsys.com header.s=mail header.b=CmMyjyj6; 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=pass (p=NONE sp=NONE dis=NONE) header.from=synopsys.com Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1751141AbeEBKkW (ORCPT + 99 others); Wed, 2 May 2018 06:40:22 -0400 Received: from smtprelay.synopsys.com ([198.182.37.59]:32819 "EHLO smtprelay.synopsys.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1750918AbeEBKkU (ORCPT ); Wed, 2 May 2018 06:40:20 -0400 Received: from mailhost.synopsys.com (mailhost1.synopsys.com [10.12.238.239]) by smtprelay.synopsys.com (Postfix) with ESMTP id DC6051E0179; Wed, 2 May 2018 12:40:18 +0200 (CEST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=synopsys.com; s=mail; t=1525257619; bh=A6vn3FxDtfDO67V2CiHYd3GsXi+aV4J2SI9Wm/6nuHY=; h=Subject:To:Cc:References:From:Date:In-Reply-To:From; b=CmMyjyj6UmhnLHmZvYJzzuCl45ciu1ND1SIsnEbzpeC+UNW1XYabYzKOuXlbiZVpJ K2hizr7F5lpXsMmBsolq0Xjwc0N38sgzwVhwgLdKcm4n07ASnlaXbgkNnwujFv1v7I 1p4P5Z97BHo2P9VEYuR5J85j9q4tDCCOcctF1wBrVH3lcn1x4CLBCdAsAI3zPmgITL FuSQl8lT1uEe+VmjWc4qxHhu6755UVzItjza/U5lmlEKUYptoOtXwBWT9mnxGzkmmW xpAZIsnWr4RFgD6/jd7hTumVUndhGfnE4R/DKcYmZ/pbuoUPBN0n7qpkl8UlEyIAJW VUVE7kFfkDsxA== Received: from pt02.synopsys.com (pt02.internal.synopsys.com [10.107.23.240]) by mailhost.synopsys.com (Postfix) with ESMTP id A3351536C; Wed, 2 May 2018 03:40:17 -0700 (PDT) Received: from [127.0.0.1] (gustavo-e7480.internal.synopsys.com [10.107.25.102]) by pt02.synopsys.com (Postfix) with ESMTP id AB7273D85B; Wed, 2 May 2018 11:40:15 +0100 (WEST) Subject: Re: [PATCH v7 3/9] PCI: endpoint: functions/pci-epf-test: Add second entry To: Lorenzo Pieralisi , Kishon Vijay Abraham I Cc: "bhelgaas@google.com" , "Joao.Pinto@synopsys.com" , "jingoohan1@gmail.com" , "robh+dt@kernel.org" , "mark.rutland@arm.com" , "linux-pci@vger.kernel.org" , "linux-kernel@vger.kernel.org" , "devicetree@vger.kernel.org" References: <20180426165605.GA6370@e107981-ln.cambridge.arm.com> <20180501115417.GD19391@e107981-ln.cambridge.arm.com> <5d625d04-38fe-7d5a-67fc-5ea92039474c@ti.com> <20180501142607.GA21911@e107981-ln.cambridge.arm.com> From: Gustavo Pimentel Message-ID: Date: Wed, 2 May 2018 11:39:00 +0100 User-Agent: Mozilla/5.0 (Windows NT 10.0; WOW64; rv:52.0) Gecko/20100101 Thunderbird/52.7.0 MIME-Version: 1.0 In-Reply-To: <20180501142607.GA21911@e107981-ln.cambridge.arm.com> Content-Type: text/plain; charset=utf-8 Content-Language: en-US Content-Transfer-Encoding: 7bit Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Hi Lorenzo, On 01/05/2018 15:26, Lorenzo Pieralisi wrote: > On Tue, May 01, 2018 at 05:53:59PM +0530, Kishon Vijay Abraham I wrote: >> Hi Lorenzo, >> >> On Tuesday 01 May 2018 05:24 PM, Lorenzo Pieralisi wrote: >>> On Tue, May 01, 2018 at 03:37:47PM +0530, Kishon Vijay Abraham I wrote: >>>> Hi Lorenzo, >>>> >>>> On Thursday 26 April 2018 10:26 PM, Lorenzo Pieralisi wrote: >>>>> On Tue, Apr 24, 2018 at 02:44:40PM +0100, Gustavo Pimentel wrote: >>>>>> Adds a seconds entry on the pci_epf_test_ids structure that disables the >>>>> >>>>> "Add a second entry to..." >>>>> >>>>>> linkup_notifier parameter on driver for the designware EP. >>>>>> >>>>>> This allows designware EPs that doesn't have linkup notification signal >>>>>> to work with pcitest. >>>>>> >>>>>> Updates the binding documentation accordingly. >>>>> >>>>> Valid for all the series: use imperative sentences. >>>>> >>>>> eg: >>>>> >>>>> "Update the binding documentation accordingly". >>>>> >>>>> not >>>>> >>>>> "Updates the binding documentation accordingly". >>>>> >>>>>> Signed-off-by: Gustavo Pimentel >>>>>> Acked-by: Kishon Vijay Abraham I >>>>>> --- >>>>>> Change v2->v3: >>>>>> - Added second entry in pci_epf_test_ids structure. >>>>>> - Remove test_reg_bar field assignment on second entry. >>>>>> Changes v3->v4: >>>>>> - Nothing changed, just to follow the patch set version. >>>>>> Changes v4->v5: >>>>>> - Changed pci_epf_test_cfg2 to pci_epf_test_designware. >>>>>> Changes v5->v6: >>>>>> - Changed name field from pci_epf_test_designware to pci_epf_test_dw. >>>>>> Changes v6->v7: >>>>>> - Changed variable name from data_cfg2 to data_linkup_notifier_disabled. >>>>>> >>>>>> Documentation/PCI/endpoint/function/binding/pci-test.txt | 2 ++ >>>>>> drivers/pci/endpoint/functions/pci-epf-test.c | 8 ++++++++ >>>>>> 2 files changed, 10 insertions(+) >>>>>> >>>>>> diff --git a/Documentation/PCI/endpoint/function/binding/pci-test.txt b/Documentation/PCI/endpoint/function/binding/pci-test.txt >>>>>> index 3b68b95..dc39f47 100644 >>>>>> --- a/Documentation/PCI/endpoint/function/binding/pci-test.txt >>>>>> +++ b/Documentation/PCI/endpoint/function/binding/pci-test.txt >>>>>> @@ -1,6 +1,8 @@ >>>>>> PCI TEST ENDPOINT FUNCTION >>>>>> >>>>>> name: Should be "pci_epf_test" to bind to the pci_epf_test driver. >>>>>> +name: Should be "pci_epf_test_dw" to bind to the pci_epf_test driver >>>>>> + with a custom configuration for the designware EP. >>>>> >>>>> The link between the "name" and the device created is quite obscure and >>>>> reading pci-test-howto.txt certainly does not clarify it. >>>>> >>>>> In pci-test-howto.txt an explanation should be added to the configs >>>>> device creation paragraph to clarify it. >>>>> >>>>>> Configurable Fields: >>>>>> vendorid : should be 0x104c >>>>>> diff --git a/drivers/pci/endpoint/functions/pci-epf-test.c b/drivers/pci/endpoint/functions/pci-epf-test.c >>>>>> index 7cef851..4ab463b 100644 >>>>>> --- a/drivers/pci/endpoint/functions/pci-epf-test.c >>>>>> +++ b/drivers/pci/endpoint/functions/pci-epf-test.c >>>>>> @@ -459,10 +459,18 @@ static int pci_epf_test_bind(struct pci_epf *epf) >>>>>> return 0; >>>>>> } >>>>>> >>>>>> +static const struct pci_epf_test_data data_linkup_notifier_disabled = { >>>>>> + .linkup_notifier = false >>>>>> +}; >>>>>> + >>>>>> static const struct pci_epf_device_id pci_epf_test_ids[] = { >>>>>> { >>>>>> .name = "pci_epf_test", >>>>>> }, >>>>>> + { >>>>>> + .name = "pci_epf_test_dw", >>>>>> + .driver_data = (kernel_ulong_t)&data_linkup_notifier_disabled, >>>>>> + }, >>>>>> {}, >>>>> >>>>> Should not this be a property derived from the controller compatible >>>>> property instead of the test device name written in configfs ? >>>> >>>> pci_epf_test is an independent driver on its own that operates in a layer above >>>> the controller driver. So it does not get the controller compatible (which is >>>> used in controller drivers like pcie-designware-plat.c). pci_epf_test uses >>>> "pci_epf_device_id" which is _similar_ to "of_device_id" used by platform drivers. >>> >>> I understand that, the problem is that the independent driver depends on >>> features of the related controller driver as this patch shows. This >>> patch basically says that if you use a specific path in configfs (that >>> includes pci_epf_test_dw) your device has specific HW features (eg >>> linkup notifier above), that obviously depends on the platform HW not on >>> the string you use in configfs. >>> >>> What I am questioning is a) if I understand this right and b) whether >>> this is the right approach. >> >> Your understanding is right. Ideally pci-epf-test driver shouldn't have any HW >> specific configuration. But different HW have different configurations and >> pci-epf-test should be informed of the configuration the HW supports. > > I am honestly very confused. First off, I do not understand what this > patch really does (or better what DW can't do so that it needs a > specific configfs string and therefore a specific configuration). > > What's the purpose of the linkup notifier ? What does it mean that > the DW HW can't handle it ? > > Are we referring to the pci_epf_linkup() function ? > > If it is a HW configuration (ie the DW HW does not have a signal to > report that the link is up ?) its enablement must depend on HW > controller properties not configfs entries, I do not like what this > patch does (probably because I am confused and I do not understand it). > > Please let me know your thoughts on this, thanks. On my setup, the EP is unable generate a signal which is responsible for notify that the link is established, being therefore necessary to emulate it, this is done by setting the linkup_notifier variable to false. This signal allows the pci-epf-test driver on the EP side to startup with a cyclic task defined on pci_epf_test_cmd_handler() that checks a command register located on the BAR (by default on BAR 0) settled by pci_endpoint_test driver on the RC side that defines, by his turn defines which type of command to perform. > > Lorenzo > >> >> configfs is just one way of creating epf_device and it was mainly added since >> pci-epf-test cannot have a dt entry because it doesn't represent anything in >> the HW. >> >> The other option was to have a callback to EPC driver to get the features it >> supports. But a particular feature that is required might be specific to a EPF >> driver. >> >> I find the driver_data approach in pci_epf_device_id to be more clean. Since the linkup notifier and BAR index (where auxiliary registers are located) may be configurable and is something platform dependent, perhaps the configuration of this variables should be done by module parameter and not by configfs, leaving this configuration responsibility in charge of each platform. I think this option is also a good alternative, simple and clean. What do you think? >> >> Thanks >> Kishon Regards, Gustavo