From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S933294AbcGLMyu (ORCPT ); Tue, 12 Jul 2016 08:54:50 -0400 Received: from mx1.redhat.com ([209.132.183.28]:37345 "EHLO mx1.redhat.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1751588AbcGLMyt (ORCPT ); Tue, 12 Jul 2016 08:54:49 -0400 Date: Tue, 12 Jul 2016 14:59:47 +0200 From: Alexander Gordeev To: Christoph Hellwig Cc: linux-pci@vger.kernel.org, linux-kernel@vger.kernel.org Subject: Re: [PATCH 1/5] pci: add a pci_msix_desc_addr helper Message-ID: <20160712125946.GF26969@agordeev.lab.eng.brq.redhat.com> References: <1468315218-20490-1-git-send-email-hch@lst.de> <1468315218-20490-2-git-send-email-hch@lst.de> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <1468315218-20490-2-git-send-email-hch@lst.de> User-Agent: Mutt/1.5.21 (2010-09-15) X-Greylist: Sender IP whitelisted, not delayed by milter-greylist-4.5.16 (mx1.redhat.com [10.5.110.25]); Tue, 12 Jul 2016 12:54:48 +0000 (UTC) Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org On Tue, Jul 12, 2016 at 06:20:14PM +0900, Christoph Hellwig wrote: > To factor out the calculation of the base address for a given MSI-X vector. > > Signed-off-by: Christoph Hellwig > --- > drivers/pci/msi.c | 17 +++++++++-------- > 1 file changed, 9 insertions(+), 8 deletions(-) > > diff --git a/drivers/pci/msi.c b/drivers/pci/msi.c > index a080f44..0d94fbf 100644 > --- a/drivers/pci/msi.c > +++ b/drivers/pci/msi.c > @@ -207,6 +207,12 @@ static void msi_mask_irq(struct msi_desc *desc, u32 mask, u32 flag) > desc->masked = __pci_msi_desc_mask_irq(desc, mask, flag); > } > > +static void __iomem *pci_msix_desc_addr(struct msi_desc *desc) > +{ > + return desc->mask_base + > + desc->msi_attrib.entry_nr * PCI_MSIX_ENTRY_SIZE; > +} > + > /* > * This internal function does not flush PCI writes to the device. > * All users must ensure that they read from the device before either > @@ -217,8 +223,6 @@ static void msi_mask_irq(struct msi_desc *desc, u32 mask, u32 flag) > u32 __pci_msix_desc_mask_irq(struct msi_desc *desc, u32 flag) > { > u32 mask_bits = desc->masked; > - unsigned offset = desc->msi_attrib.entry_nr * PCI_MSIX_ENTRY_SIZE + > - PCI_MSIX_ENTRY_VECTOR_CTRL; > > if (pci_msi_ignore_mask) > return 0; > @@ -226,7 +230,7 @@ u32 __pci_msix_desc_mask_irq(struct msi_desc *desc, u32 flag) > mask_bits &= ~PCI_MSIX_ENTRY_CTRL_MASKBIT; > if (flag) > mask_bits |= PCI_MSIX_ENTRY_CTRL_MASKBIT; > - writel(mask_bits, desc->mask_base + offset); > + writel(mask_bits, pci_msix_desc_addr(desc) + PCI_MSIX_ENTRY_VECTOR_CTRL); > > return mask_bits; > } > @@ -284,8 +288,7 @@ void __pci_read_msi_msg(struct msi_desc *entry, struct msi_msg *msg) > BUG_ON(dev->current_state != PCI_D0); > > if (entry->msi_attrib.is_msix) { > - void __iomem *base = entry->mask_base + > - entry->msi_attrib.entry_nr * PCI_MSIX_ENTRY_SIZE; > + void __iomem *base = pci_msix_desc_addr(entry); > > msg->address_lo = readl(base + PCI_MSIX_ENTRY_LOWER_ADDR); > msg->address_hi = readl(base + PCI_MSIX_ENTRY_UPPER_ADDR); > @@ -315,9 +318,7 @@ void __pci_write_msi_msg(struct msi_desc *entry, struct msi_msg *msg) > if (dev->current_state != PCI_D0) { > /* Don't touch the hardware now */ > } else if (entry->msi_attrib.is_msix) { > - void __iomem *base; > - base = entry->mask_base + > - entry->msi_attrib.entry_nr * PCI_MSIX_ENTRY_SIZE; > + void __iomem *base = pci_msix_desc_addr(entry); > > writel(msg->address_lo, base + PCI_MSIX_ENTRY_LOWER_ADDR); > writel(msg->address_hi, base + PCI_MSIX_ENTRY_UPPER_ADDR); > -- > 2.1.4 > Reviewed-by: Alexander Gordeev