From: "Cédric Le Goater" <clg@kaod.org>
To: <linuxppc-dev@lists.ozlabs.org>
Cc: Brian King <brking@linux.vnet.ibm.com>,
Wen Xiong <wenxiong@linux.vnet.ibm.com>,
Douglas Miller <dougmill@linux.vnet.ibm.com>
Subject: Re: [PATCH] powerpc/pseries/msi: Add an empty irq_write_msi_msg() handler
Date: Thu, 30 Sep 2021 14:17:54 +0200 [thread overview]
Message-ID: <9e322894-1854-fd7f-51e6-82b08ed8f6d7@kaod.org> (raw)
In-Reply-To: <20210930102535.1047230-1-clg@kaod.org>
On 9/30/21 12:25, Cédric Le Goater wrote:
> The IPR drivers tests for MSI support at probe time with MSI vector 0
> and when done, frees the IRQ with free_irq(). This test was introduced
> by 95fecd90397e ("ipr: add test for MSI interrupt support") as an
> improvement of commit 5a9ef25b14d3 ("[SCSI] ipr: add MSI support")
> because a boot failure was reported on a Bimini PowerPC system :
>
> https://x-lore.kernel.org/all/1242926159.3007.5.camel@localhost.localdomain/
>
> It was finally decided to remove MSI support on Bimini systems in
> 6eb0ac03899a ("powerpc/maple: Add a quirk to disable MSI for IPR on
> Bimini").
>
> Linux 5.15-rc1 added MSI domain support to the pseries machine and
> when free_irq is called() in the driver, msi_domain_deactivate() also
> is. This resets the MSI table entry of the associate vector by calling
> __pci_write_msi_msg() with an empty message and breaks any further
> activation of the same vector. In the case of the IPR driver, it
> breaks the initialization sequence of the IOA.
>
> Introduce an empty irq_write_msi_msg() handler in the MSI domain of
> the pseries machine to avoid clearing the MSI vector entry. Updating
> the entry is not strictly necessary since it is initialized by the
> underlying hypervisor, PowerVM or QEMU/KVM.
>
> Cc: Wen Xiong <wenxiong@linux.vnet.ibm.com>
> Cc: Douglas Miller <dougmill@linux.vnet.ibm.com>
> Cc: Brian King <brking@linux.vnet.ibm.com>
> Fixes: a5f3d2c17b07 ("powerpc/pseries/pci: Add MSI domains")
> Signed-off-by: Cédric Le Goater <clg@kaod.org>
This is missing :
Reported-by: Abdul Haleem <abdhalee@linux.vnet.ibm.com>
Thanks,
C.
> ---
>
> We could also revert commit 95fecd90397e ("ipr: add test for MSI
> interrupt support") which doesn't seem very useful nowdays. Or
> rewrite the test to improve how MSI vectors are used.
>
> Please advise !
>
> Thanks,
>
>
> arch/powerpc/platforms/pseries/msi.c | 15 +++++++++++++++
> 1 file changed, 15 insertions(+)
>
> diff --git a/arch/powerpc/platforms/pseries/msi.c b/arch/powerpc/platforms/pseries/msi.c
> index 1b305e411862..37eb35f5194d 100644
> --- a/arch/powerpc/platforms/pseries/msi.c
> +++ b/arch/powerpc/platforms/pseries/msi.c
> @@ -507,12 +507,27 @@ static void pseries_msi_unmask(struct irq_data *d)
> irq_chip_unmask_parent(d);
> }
>
> +static void pseries_msi_write_msg(struct irq_data *data, struct msi_msg *msg)
> +{
> + struct msi_desc *entry = irq_data_get_msi_desc(data);
> +
> + /* Do not update the MSIx vector table. This is not strictly
> + * necessary since the table is initialized by the underlying
> + * hypervisor, PowerVM or QEMU/KVM. However, if the MSIx
> + * vector entry is cleared, any further activation will fail.
> + * This can happen in some drivers (IPR) which deactivate the
> + * IRQ used for testing MSI support.
> + */
> + entry->msg = *msg;
> +}
> +
> static struct irq_chip pseries_pci_msi_irq_chip = {
> .name = "pSeries-PCI-MSI",
> .irq_shutdown = pseries_msi_shutdown,
> .irq_mask = pseries_msi_mask,
> .irq_unmask = pseries_msi_unmask,
> .irq_eoi = irq_chip_eoi_parent,
> + .irq_write_msi_msg = pseries_msi_write_msg,
> };
>
> static struct msi_domain_info pseries_msi_domain_info = {
>
next prev parent reply other threads:[~2021-09-30 12:56 UTC|newest]
Thread overview: 4+ messages / expand[flat|nested] mbox.gz Atom feed top
2021-09-30 10:25 [PATCH] powerpc/pseries/msi: Add an empty irq_write_msi_msg() handler Cédric Le Goater
2021-09-30 12:17 ` Cédric Le Goater [this message]
2021-09-30 13:32 ` Mahesh J Salgaonkar
2021-10-08 13:23 ` Michael Ellerman
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=9e322894-1854-fd7f-51e6-82b08ed8f6d7@kaod.org \
--to=clg@kaod.org \
--cc=brking@linux.vnet.ibm.com \
--cc=dougmill@linux.vnet.ibm.com \
--cc=linuxppc-dev@lists.ozlabs.org \
--cc=wenxiong@linux.vnet.ibm.com \
/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).