[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID: <20200904123056.GP1152540@nvidia.com>
Date: Fri, 4 Sep 2020 09:30:56 -0300
From: Jason Gunthorpe <jgg@...dia.com>
To: Thierry Reding <thierry.reding@...il.com>
CC: Bjorn Helgaas <bhelgaas@...gle.com>,
Lorenzo Pieralisi <lorenzo.pieralisi@....com>,
Jonathan Hunter <jonathanh@...dia.com>,
"Marc Zyngier" <maz@...nel.org>,
Thomas Gleixner <tglx@...utronix.de>,
<linux-pci@...r.kernel.org>, <linux-tegra@...r.kernel.org>,
<linux-kernel@...r.kernel.org>
Subject: Re: [PATCH] PCI: tegra: Convert to MSI domains
On Fri, Sep 04, 2020 at 02:28:27PM +0200, Thierry Reding wrote:
> On Fri, Sep 04, 2020 at 08:45:01AM -0300, Jason Gunthorpe wrote:
> > On Fri, Sep 04, 2020 at 12:56:13PM +0200, Thierry Reding wrote:
> > > +static void tegra_msi_irq_mask(struct irq_data *d)
> > > +{
> > > + struct tegra_msi *msi = irq_data_get_irq_chip_data(d);
> > > + struct tegra_pcie *pcie = msi_to_pcie(msi);
> > > + unsigned int index = d->hwirq / 32;
> > > + u32 value;
> > > +
> > > + value = afi_readl(pcie, AFI_MSI_EN_VEC(index));
> > > + value &= ~BIT(d->hwirq % 32);
> > > + afi_writel(pcie, value, AFI_MSI_EN_VEC(index));
> > > +}
> >
> > Do these need a flushing write? The Mask operation should be synchronous?
>
> Did you mean a flushing read? We typically flush out writes by reading
> from the same register. Another write wouldn't guarantee that both
> writes are actually flushed to hardware, would it?
Yes ready, sorry :)
The read should 'pull back' any in flight MSIs and ensure that no MSI
is delivered to the GIC after the tegra_msi_irq_mask() completes.
Jason
Powered by blists - more mailing lists