[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID: <868su7gi9q.wl-marc.zyngier@arm.com>
Date: Wed, 12 Jun 2019 12:22:41 +0100
From: Marc Zyngier <marc.zyngier@....com>
To: Lorenzo Pieralisi <lorenzo.pieralisi@....com>,
"Z.q. Hou" <zhiqiang.hou@....com>
Cc: "mark.rutland@....com" <mark.rutland@....com>,
"devicetree@...r.kernel.org" <devicetree@...r.kernel.org>,
Xiaowei Bao <xiaowei.bao@....com>,
"linux-pci@...r.kernel.org" <linux-pci@...r.kernel.org>,
"l.subrahmanya@...iveil.co.in" <l.subrahmanya@...iveil.co.in>,
"will.deacon@....com" <will.deacon@....com>,
"linux-kernel@...r.kernel.org" <linux-kernel@...r.kernel.org>,
Leo Li <leoyang.li@....com>,
"M.h. Lian" <minghuan.lian@....com>,
"robh+dt@...nel.org" <robh+dt@...nel.org>,
Mingkai Hu <mingkai.hu@....com>,
"catalin.marinas@....com" <catalin.marinas@....com>,
"bhelgaas@...gle.com" <bhelgaas@...gle.com>,
"shawnguo@...nel.org" <shawnguo@...nel.org>,
"linux-arm-kernel@...ts.infradead.org"
<linux-arm-kernel@...ts.infradead.org>
Subject: Re: [PATCHv5 04/20] PCI: mobiveil: Remove the flag MSI_FLAG_MULTI_PCI_MSI
On Tue, 11 Jun 2019 18:29:49 +0100,
Marc Zyngier <marc.zyngier@....com> wrote:
>
> On 11/06/2019 17:59, Lorenzo Pieralisi wrote:
> > On Fri, Apr 12, 2019 at 08:35:36AM +0000, Z.q. Hou wrote:
> >> From: Hou Zhiqiang <Zhiqiang.Hou@....com>
> >>
> >> The current code does not support multiple MSIs, so remove
> >> the corresponding flag from the msi_domain_info structure.
> >
> > Please explain me what's the problem before removing multi MSI
> > support.
>
> The reason seems to be the following code in the allocator:
>
> WARN_ON(nr_irqs != 1);
> mutex_lock(&msi->lock);
>
> bit = find_first_zero_bit(msi->msi_irq_in_use, msi->num_of_vectors);
> if (bit >= msi->num_of_vectors) {
> mutex_unlock(&msi->lock);
> return -ENOSPC;
> }
>
> set_bit(bit, msi->msi_irq_in_use);
>
> So instead of fixing the allocator, the author prefers disabling
> the feature. I'm not sure whether that is an acceptable outcome...
Actually, there is a much deeper issue, and the compose_msi_msg
callback gives a clue:
phys_addr_t addr = pcie->pcie_reg_base + (data->hwirq * sizeof(int));
This thing is using a separate target address per MSI, which is the
killer argument. Bad hardware...
Thanks,
M.
--
Jazz is not dead, it just smells funny.
Powered by blists - more mailing lists