[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID: <20200904122827.GA591744@ulmo>
Date: Fri, 4 Sep 2020 14:28:27 +0200
From: Thierry Reding <thierry.reding@...il.com>
To: Jason Gunthorpe <jgg@...dia.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 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, that sounds like a good idea. It seems to work fine without, but
that may just be a coincidence.
Thierry
Download attachment "signature.asc" of type "application/pgp-signature" (834 bytes)
Powered by blists - more mailing lists