Re: [PATCH v8 00/10] PCI: qcom: Fix higher MSI vectors handling

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On Fri, 13 May 2022 at 12:36, Johan Hovold <johan@xxxxxxxxxx> wrote:
>
> On Fri, May 13, 2022 at 12:28:40PM +0300, Dmitry Baryshkov wrote:
> > On Fri, 13 May 2022 at 11:58, Johan Hovold <johan@xxxxxxxxxx> wrote:
> > >
> > > On Thu, May 12, 2022 at 01:45:35PM +0300, Dmitry Baryshkov wrote:
> > > > I have replied with my Tested-by to the patch at [2], which has landed
> > > > in the linux-next as the commit 20f1bfb8dd62 ("PCI: qcom:
> > > > Add support for handling MSIs from 8 endpoints"). However lately I
> > > > noticed that during the tests I still had 'pcie_pme=nomsi', so the
> > > > device was not forced to use higher MSI vectors.
> > > >
> > > > After removing this option I noticed that hight MSI vectors are not
> > > > delivered on tested platforms. After additional research I stumbled upon
> > > > a patch in msm-4.14 ([1]), which describes that each group of MSI
> > > > vectors is mapped to the separate interrupt. Implement corresponding
> > > > mapping.
> > > >
> > > > The first patch in the series is a revert of  [2] (landed in pci-next).
> > > > Either both patches should be applied or both should be dropped.
> > > >
> > > > Patchseries dependecies: [3] (for the schema change).
> > > >
> > > > Changes since v7:
> > > >  - Move code back to the dwc core driver (as required by Rob),
> > > >  - Change dt schema to require either a single "msi" interrupt or an
> > > >    array of "msi0", "msi1", ... "msi7" IRQs. Disallow specifying a
> > > >    part of the array (the DT should specify the exact amount of MSI IRQs
> > > >    allowing fallback to a single "msi" IRQ),
> > >
> > > Why this new constraint?
> > >
> > > I've been using your v7 with an sc8280xp which only has four IRQs (and
> > > hence 128 MSIs).
> > >
> > > Looks like this version of the series would not allow that anymore.
> >
> > It allows it, provided that you set pp->num_vectors correctly (to 128
> > in your case).
> > The main idea was to disallow mistakes in the platform configuration.
> > If the platform says that it supports 256 vectors (and 8 groups),
> > there must be 8 groups. Or a single backwards-compatible group.
>
> But you also added
>
> +        - properties:
> +            interrupts:
> +              minItems: 8
> +            interrupt-names:
> +              minItems: 8
> +              items:
> +                - const: msi0
> +                - const: msi1
> +                - const: msi2
> +                - const: msi3
> +                - const: msi4
> +                - const: msi5
> +                - const: msi6
> +                - const: msi7
>
> which means that I can no longer describe the four interrupts in DT.
>
> I didn't check the implementation, but it seems you should derive the
> number of MSIs based on the devicetree as I guess you did in v7.

It is a conditional, so you can add another conditional for the
sc8280xp platform describing just 4 interrupts. And as you don't have
legacy DTS, you can completely omit the backwards compatible clause in
your case.
So, something like:
 - if:
   properties:
      contains:
         enum:
            - qcom,pcie-sc8280xp
  then:
    properties:
       interrupts:
          minItems: 4
          maxItems: 4
       interrupt-names:
           items:
              - const: msi0
              - const: msi1
              - const: msi2
              - const: msi3

-- 
With best wishes
Dmitry



[Index of Archives]     [DMA Engine]     [Linux Coverity]     [Linux USB]     [Video for Linux]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]     [Greybus]

  Powered by Linux