Re: [PATCH v7 3/9] PCI: endpoint: functions/pci-epf-test: Add second entry

From: Lorenzo Pieralisi
Date: Tue May 01 2018 - 07:54:28 EST


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 <gustavo.pimentel@xxxxxxxxxxxx>
> >> Acked-by: Kishon Vijay Abraham I <kishon@xxxxxx>
> >> ---
> >> 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.

Lorenzo