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