linux-s390.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
From: Konrad Rzeszutek Wilk <konrad.wilk@oracle.com>
To: Yijing Wang <wangyijing@huawei.com>
Cc: Bjorn Helgaas <bhelgaas@google.com>,
	linux-pci@vger.kernel.org, linux-kernel@vger.kernel.org,
	Xinwei Hu <huxinwei@huawei.com>, Wuyun <wuyun.wu@huawei.com>,
	linux-arm-kernel@lists.infradead.org,
	Russell King <linux@arm.linux.org.uk>,
	linux-arch@vger.kernel.org, arnab.basu@freescale.com,
	Bharat.Bhushan@freescale.com, x86@kernel.org,
	Arnd Bergmann <arnd@arndb.de>,
	Thomas Gleixner <tglx@linutronix.de>,
	xen-devel@lists.xenproject.org, Joerg Roedel <joro@8bytes.org>,
	iommu@lists.linux-foundation.org, linux-mips@linux-mips.org,
	Benjamin Herrenschmidt <benh@kernel.crashing.org>,
	linuxppc-dev@lists.ozlabs.org, linux-s390@vger.kernel.org,
	Sebastian Ott <sebott@linux.vnet.ibm.com>,
	Tony Luck <tony.luck@intel.com>,
	linux-ia64@vger.kernel.org,
	"David S. Miller" <davem@davemloft.net>,
	sparclinux@vger.kernel.org, Chris Metcalf <cmetcalf@tilera.com>,
	Ralf Baechle <ralf@linux-mips.org>,
	Lucas Stach <l.stach@pengutronix.de>,
	David Vrabel <david.vrabel@citrix.com>,
	Sergei Shtylyov <sergei.shtylyov@cogentembedded.com>,
	Michael Ellerman <mpe@ellerman.id.au>,
	Thierry Reding <thierry.reding@gmail.com>,
	Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
Subject: Re: [PATCH v2 04/22] x86/xen/MSI: Eliminate arch_msix_mask_irq() and arch_msi_mask_irq()
Date: Thu, 25 Sep 2014 10:33:46 -0400	[thread overview]
Message-ID: <20140925143346.GF20089@laptop.dumpdata.com> (raw)
Message-ID: <20140925143346.EhjefuZWPwzVA85NcdUTFHZEvVDK1YU4l6p7-ubohuo@z> (raw)
In-Reply-To: <1411614872-4009-5-git-send-email-wangyijing@huawei.com>

On Thu, Sep 25, 2014 at 11:14:14AM +0800, Yijing Wang wrote:
> Commit 0e4ccb150 added two __weak arch functions arch_msix_mask_irq()
> and arch_msi_mask_irq() to fix a bug found when running xen in x86.
> Introduced these two funcntions make MSI code complex. And mask/unmask

"These two functions made the MSI code more complex."
> is the irq actions related to interrupt controller, should not use
> weak arch functions to override mask/unmask interfaces. This patch

I am bit baffled of what you are saying.
> reverted commit 0e4ccb150 and export struct irq_chip msi_chip, modify
> msi_chip->irq_mask/irq_unmask() in xen init functions to fix this
> bug for simplicity. Also this is preparation for using struct
> msi_chip instead of weak arch MSI functions in all platforms.
> Keep default_msi_mask_irq() and default_msix_mask_irq() in
> linux/msi.h to make s390 MSI code compile happy, they wiil be removed

s/wiil/will.

> in the later patch.
> 
> Tested-by: Konrad Rzeszutek Wilk <konrad.wilk@oracle.com>

I don't even remember testing it - I guess I did the earlier version.

So a couple of questions since I've totally forgotten about this:

> diff --git a/drivers/pci/msi.c b/drivers/pci/msi.c
> index 50f67a3..5f8f3af 100644
> --- a/drivers/pci/msi.c
> +++ b/drivers/pci/msi.c
> @@ -162,7 +162,7 @@ static inline __attribute_const__ u32 msi_mask(unsigned x)
>   * reliably as devices without an INTx disable bit will then generate a
>   * level IRQ which will never be cleared.
>   */
> -u32 default_msi_mask_irq(struct msi_desc *desc, u32 mask, u32 flag)
> +u32 __msi_mask_irq(struct msi_desc *desc, u32 mask, u32 flag)
>  {
>  	u32 mask_bits = desc->masked;
>  
> @@ -176,14 +176,9 @@ u32 default_msi_mask_irq(struct msi_desc *desc, u32 mask, u32 flag)
>  	return mask_bits;
>  }
>  
> -__weak u32 arch_msi_mask_irq(struct msi_desc *desc, u32 mask, u32 flag)
> -{
> -	return default_msi_mask_irq(desc, mask, flag);
> -}
> -
>  static void msi_mask_irq(struct msi_desc *desc, u32 mask, u32 flag)
>  {
> -	desc->masked = arch_msi_mask_irq(desc, mask, flag);
> +	desc->masked = __msi_mask_irq(desc, mask, flag);
>  }
>  
>  /*
> @@ -193,7 +188,7 @@ static void msi_mask_irq(struct msi_desc *desc, u32 mask, u32 flag)
>   * file.  This saves a few milliseconds when initialising devices with lots
>   * of MSI-X interrupts.
>   */
> -u32 default_msix_mask_irq(struct msi_desc *desc, u32 flag)
> +u32 __msix_mask_irq(struct msi_desc *desc, u32 flag)
>  {
>  	u32 mask_bits = desc->masked;
>  	unsigned offset = desc->msi_attrib.entry_nr * PCI_MSIX_ENTRY_SIZE +
> @@ -206,14 +201,9 @@ u32 default_msix_mask_irq(struct msi_desc *desc, u32 flag)
>  	return mask_bits;
>  }
>  
> -__weak u32 arch_msix_mask_irq(struct msi_desc *desc, u32 flag)
> -{
> -	return default_msix_mask_irq(desc, flag);
> -}
> -
>  static void msix_mask_irq(struct msi_desc *desc, u32 flag)
>  {
> -	desc->masked = arch_msix_mask_irq(desc, flag);
> +	desc->masked = __msix_mask_irq(desc, flag);
>  }
>  
>  static void msi_set_mask_bit(struct irq_data *data, u32 flag)
> @@ -852,7 +842,7 @@ void pci_msi_shutdown(struct pci_dev *dev)
>  	/* Return the device with MSI unmasked as initial states */
>  	mask = msi_mask(desc->msi_attrib.multi_cap);
>  	/* Keep cached state to be restored */
> -	arch_msi_mask_irq(desc, mask, ~mask);
> +	__msi_mask_irq(desc, mask, ~mask);

If I am reading this right, it will call the old 'default_msi_mask_irq'
which is exactly what we don't want to do under Xen. We want to call
the NOP code.
>  
>  	/* Restore dev->irq to its default pin-assertion irq */
>  	dev->irq = desc->msi_attrib.default_irq;
> @@ -950,7 +940,7 @@ void pci_msix_shutdown(struct pci_dev *dev)
>  	/* Return the device with MSI-X masked as initial states */
>  	list_for_each_entry(entry, &dev->msi_list, list) {
>  		/* Keep cached states to be restored */
> -		arch_msix_mask_irq(entry, 1);
> +		__msix_mask_irq(entry, 1);

Ditto here.

Looking more at this code I have to retract my Reviewed-by and Tested-by
on the whole series.

Is it possible to get a git tree for this please?

>  	}
>  
>  	msix_clear_and_set_ctrl(dev, PCI_MSIX_FLAGS_ENABLE, 0);
> diff --git a/include/linux/msi.h b/include/linux/msi.h
> index 45ef8cb..cc46a62 100644
> --- a/include/linux/msi.h
> +++ b/include/linux/msi.h
> @@ -19,6 +19,8 @@ void read_msi_msg(struct msi_desc *entry, struct msi_msg *msg);
>  void get_cached_msi_msg(struct msi_desc *entry, struct msi_msg *msg);
>  void __write_msi_msg(struct msi_desc *entry, struct msi_msg *msg);
>  void write_msi_msg(unsigned int irq, struct msi_msg *msg);
> +u32 __msix_mask_irq(struct msi_desc *desc, u32 flag);
> +u32 __msi_mask_irq(struct msi_desc *desc, u32 mask, u32 flag);
>  
>  struct msi_desc {
>  	struct {
> @@ -59,8 +61,8 @@ void arch_restore_msi_irqs(struct pci_dev *dev);
>  
>  void default_teardown_msi_irqs(struct pci_dev *dev);
>  void default_restore_msi_irqs(struct pci_dev *dev);
> -u32 default_msi_mask_irq(struct msi_desc *desc, u32 mask, u32 flag);
> -u32 default_msix_mask_irq(struct msi_desc *desc, u32 flag);
> +#define default_msi_mask_irq	__msi_mask_irq
> +#define default_msix_mask_irq	__msix_mask_irq
>  
>  struct msi_chip {
>  	struct module *owner;
> -- 
> 1.7.1
> 

  reply	other threads:[~2014-09-25 14:33 UTC|newest]

Thread overview: 70+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2014-09-25  3:14 [PATCH v2 00/22] Use MSI chip framework to configure MSI/MSI-X in all platforms Yijing Wang
     [not found] ` <20140925031411.dXSlqIQAGHzIcJrwGWxNgc4a8J0t8X1u7WEkXGvhS64@z>
2014-09-25  3:14   ` [PATCH v2 01/22] PCI/MSI: Clean up struct msi_chip argument Yijing Wang
     [not found]     ` <20140925071538.LQW4BOf7xzTHdCu_4RuOALhF2_sTfvYngQuFJCRnTTI@z>
2014-09-25  7:15       ` Thierry Reding
     [not found]         ` <20140925102020.SiJqVJVgVVwFK4no49yonIqlKQsvPh5PiFZ7-snYl1g@z>
2014-09-25 10:20           ` Thomas Gleixner
2014-09-26  2:15             ` Yijing Wang
2014-09-26  1:58         ` Yijing Wang
     [not found] ` <20140925031412.mZDB6r2w2SJhBJWqXvCd77mAll-2AOiyVPlMdaXbS4o@z>
2014-09-25  3:14   ` [PATCH v2 02/22] PCI/MSI: Remove useless bus->msi assignment Yijing Wang
     [not found]     ` <20140925070601.4gyRz-1LY-1vzx8Zu6ZcQk1Zbx4cbNqBACw-DIPcQKc@z>
2014-09-25  7:06       ` Thierry Reding
2014-09-26  1:55         ` Yijing Wang
2014-09-25  3:14 ` [PATCH v2 03/22] MSI: Remove the redundant irq_set_chip_data() Yijing Wang
2014-09-25  7:19   ` Thierry Reding
2014-09-26  2:04     ` Yijing Wang
     [not found]       ` <20140926080922.yhZkLVFp9jBAGh_TisiFca8I9jLs8JeestvdGr9M7Go@z>
2014-09-26  8:09         ` Thierry Reding
     [not found]   ` <20140926080949.H1QMtT72Ync66YW9pYc0K1oHlig5ZtNcM2AdTWLxQEI@z>
2014-09-26  8:09     ` Thierry Reding
     [not found] ` <20140925031414.J0v7oBw7ziMu4yNiCIXMEN4y0todRHzU4z2IuV5k-7c@z>
2014-09-25  3:14   ` [PATCH v2 04/22] x86/xen/MSI: Eliminate arch_msix_mask_irq() and arch_msi_mask_irq() Yijing Wang
     [not found]     ` <20140925143346.EhjefuZWPwzVA85NcdUTFHZEvVDK1YU4l6p7-ubohuo@z>
2014-09-25 14:33       ` Konrad Rzeszutek Wilk [this message]
2014-09-26  3:12         ` Yijing Wang
     [not found] ` <20140925031415.blXeFNqrK9zIDsKn6OLTjryANiuzjvLWWdfvBOvRRHU@z>
2014-09-25  3:14   ` [PATCH v2 05/22] s390/MSI: Use __msi_mask_irq() instead of default_msi_mask_irq() Yijing Wang
     [not found] ` <20140925031416.MlR8yeDjLvqbro04ugTBGkaftINnrW-SCLwt47DdlKU@z>
2014-09-25  3:14   ` [PATCH v2 06/22] PCI/MSI: Introduce weak arch_find_msi_chip() to find MSI chip Yijing Wang
2014-09-25  7:26     ` Thierry Reding
2014-09-26  2:10       ` Yijing Wang
     [not found]     ` <20140925103834.yeMSMiQoE0WgdfmO7_o_pYpu8RGUG9MpKT6SBY3LUy8@z>
2014-09-25 10:38       ` Thomas Gleixner
2014-09-26  2:33         ` Yijing Wang
2014-09-26  2:44         ` Yijing Wang
     [not found]           ` <20140926103826.iQ_jvgSPvM3ufFUOCjIyscT_GVGfAtmfprdMJJ4Tjgs@z>
2014-09-26 10:38             ` Thomas Gleixner
2014-09-28  2:35               ` Yijing Wang
     [not found] ` <20140925031417.Kbpt8j5SM-pvG0FENHexW1zps6gDjyJmcBdh71iJJfI@z>
2014-09-25  3:14   ` [PATCH v2 07/22] PCI/MSI: Refactor struct msi_chip to make it become more common Yijing Wang
2014-09-25  3:14 ` [PATCH v2 08/22] x86/MSI: Use MSI chip framework to configure MSI/MSI-X irq Yijing Wang
2014-09-25  3:14 ` [PATCH v2 09/22] x86/xen/MSI: " Yijing Wang
2014-09-25  3:14 ` [PATCH v2 10/22] Irq_remapping/MSI: " Yijing Wang
     [not found] ` <20140925031421.j-Cq_j5u89dNa3dkdRHhfN-Lzv9CMaStHbzfXxtyi1g@z>
2014-09-25  3:14   ` [PATCH v2 11/22] x86/MSI: Remove unused MSI weak arch functions Yijing Wang
2014-09-25  3:14 ` [PATCH v2 12/22] MIPS/Octeon/MSI: Use MSI chip framework to configure MSI/MSI-X irq Yijing Wang
     [not found]   ` <20140925073436.FSUOh65UPDj0jKDQv7ER15sHZJOmfkjJwc9vapfilZg@z>
2014-09-25  7:34     ` Thierry Reding
2014-09-26  2:12       ` Yijing Wang
     [not found] ` <20140925031423.AtLW5kmrNKqoiEsHRnJjiAcIQb5AZ3SCUGlSZhG2ezk@z>
2014-09-25  3:14   ` [PATCH v2 13/22] MIPS/Xlp: Remove the dead function destroy_irq() to fix build error Yijing Wang
     [not found] ` <20140925031424.lKUrNSlY-DosLt7fj2szRJp9vn6KwC3ezAjM65fvMF8@z>
2014-09-25  3:14   ` [PATCH v2 14/22] MIPS/Xlp/MSI: Use MSI chip framework to configure MSI/MSI-X irq Yijing Wang
     [not found]     ` <20140925073609.ha_DV-DiRtx_m9UJBhiMWGZG2tzEOSvE1ec8SCQYcLE@z>
2014-09-25  7:36       ` Thierry Reding
2014-09-26  2:13         ` Yijing Wang
     [not found] ` <20140925031425.Dj36EwzxQhF0axvM9HsJ0cbjaSPq_mLoLzAxMALrUGA@z>
2014-09-25  3:14   ` [PATCH v2 15/22] MIPS/Xlr/MSI: " Yijing Wang
     [not found]     ` <20140925073701.QJP3_pR_7B2Fc70fwslykW6hLJKlR0ymxtNNkcvcMo4@z>
2014-09-25  7:37       ` Thierry Reding
2014-09-26  2:13         ` Yijing Wang
2014-09-25  3:14 ` [PATCH v2 16/22] Powerpc/MSI: " Yijing Wang
     [not found] ` <20140925031427.WqlqI-AH8oT9tFvcbIW33D08CNiwbt7gEtpnLqQsD2Q@z>
2014-09-25  3:14   ` [PATCH v2 17/22] s390/MSI: " Yijing Wang
     [not found]     ` <20140925073801.et5FuFdFt7qvGA7E9tZKfQnnyWLhBA0ttn2es-CJBkA@z>
2014-09-25  7:38       ` Thierry Reding
2014-09-26  2:14         ` Yijing Wang
     [not found] ` <20140925031428.dbs8p_YAq1e-XFL2AHX46vrGB36WfWcGEqT90X-WBvU@z>
2014-09-25  3:14   ` [PATCH v2 18/22] arm/iop13xx/MSI: " Yijing Wang
     [not found] ` <20140925031429.swkZJjniQ8s7nECYR3MY64w9euDkct_GvE6FUNCs0XU@z>
2014-09-25  3:14   ` [PATCH v2 19/22] IA64/MSI: " Yijing Wang
     [not found] ` <20140925031430.b8qo4JotAS2jyrXsf8tHpwsEC4j7_DcU-1hqiFZmZ3Y@z>
2014-09-25  3:14   ` [PATCH v2 20/22] Sparc/MSI: " Yijing Wang
     [not found] ` <20140925031431._3LbKf5WSoj1XWz3A3DGW8VC3MlwYHOSGCkUa5sLVp8@z>
2014-09-25  3:14   ` [PATCH v2 21/22] tile/MSI: " Yijing Wang
     [not found] ` <20140925031432.fEFI3LTQw8hyXhWYB4oSBL736i7HzkYMsgHOuHLilDk@z>
2014-09-25  3:14   ` [PATCH v2 22/22] PCI/MSI: Clean up unused MSI arch functions Yijing Wang
2014-09-25  7:42 ` [PATCH v2 00/22] Use MSI chip framework to configure MSI/MSI-X in all platforms Thierry Reding
2014-09-25 14:48   ` Liviu Dudau
     [not found]     ` <20140925164938.2wP3aORZ8lQU0lBmXCom7m6M33oqm4dcSB8FYm4_aO8@z>
2014-09-25 16:49       ` Thierry Reding
2014-09-25 17:16         ` Liviu Dudau
2014-09-26  6:20           ` Yijing Wang
     [not found]             ` <20140926085432.HJRBKenrAYV1DtF0GhoeJZ8x-J2HjPS7UG-Hbm9xii4@z>
2014-09-26  8:54               ` Thierry Reding
     [not found]                 ` <20140926090538.j6nkilEZBGk72pPAPbw8mnqVOM0BUHm14lwNB55FD_w@z>
2014-09-26  9:05                   ` Thierry Reding
2014-09-28  2:32                     ` Yijing Wang
2014-09-28  6:11                       ` Yijing Wang
2014-09-29  8:37                         ` Lucas Stach
2014-09-29 10:13                           ` Yijing Wang
2014-09-26  3:42         ` Yijing Wang
     [not found]           ` <20140926085030.B0x01EeZD9RwO-Wl7QmzAeZeDq5uZD8XyGFO6PERPxo@z>
2014-09-26  8:50             ` Liviu Dudau
2014-09-28  2:16               ` Yijing Wang
     [not found]                 ` <20140928112145.Hjt4cnOG62scseosyLzbg2FW-4qCaK4X8UcYd4H4DAo@z>
2014-09-28 11:21                   ` Liviu Dudau
2014-09-29  1:44                     ` Yijing Wang
     [not found]                       ` <20140929092600.Iq2AD3UazvObc0KotH5axmOiqSXuLuXg_Afgloo-bP0@z>
2014-09-29  9:26                         ` Liviu Dudau
2014-09-29 10:12                           ` Yijing Wang
2014-09-25 14:23 ` Konrad Rzeszutek Wilk
2014-09-26  2:47   ` Yijing Wang

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20140925143346.GF20089@laptop.dumpdata.com \
    --to=konrad.wilk@oracle.com \
    --cc=Bharat.Bhushan@freescale.com \
    --cc=arnab.basu@freescale.com \
    --cc=arnd@arndb.de \
    --cc=benh@kernel.crashing.org \
    --cc=bhelgaas@google.com \
    --cc=cmetcalf@tilera.com \
    --cc=davem@davemloft.net \
    --cc=david.vrabel@citrix.com \
    --cc=huxinwei@huawei.com \
    --cc=iommu@lists.linux-foundation.org \
    --cc=joro@8bytes.org \
    --cc=l.stach@pengutronix.de \
    --cc=linux-arch@vger.kernel.org \
    --cc=linux-arm-kernel@lists.infradead.org \
    --cc=linux-ia64@vger.kernel.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-mips@linux-mips.org \
    --cc=linux-pci@vger.kernel.org \
    --cc=linux-s390@vger.kernel.org \
    --cc=linux@arm.linux.org.uk \
    --cc=linuxppc-dev@lists.ozlabs.org \
    --cc=mpe@ellerman.id.au \
    --cc=ralf@linux-mips.org \
    --cc=sebott@linux.vnet.ibm.com \
    --cc=sergei.shtylyov@cogentembedded.com \
    --cc=sparclinux@vger.kernel.org \
    --cc=tglx@linutronix.de \
    --cc=thierry.reding@gmail.com \
    --cc=thomas.petazzoni@free-electrons.com \
    --cc=tony.luck@intel.com \
    --cc=wangyijing@huawei.com \
    --cc=wuyun.wu@huawei.com \
    --cc=x86@kernel.org \
    --cc=xen-devel@lists.xenproject.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).