linux-acpi.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
From: Bjorn Helgaas <helgaas@kernel.org>
To: Jianmin Lv <lvjianmin@loongson.cn>
Cc: Thomas Gleixner <tglx@linutronix.de>,
	Marc Zyngier <maz@kernel.org>,
	linux-kernel@vger.kernel.org, loongarch@lists.linux.dev,
	Jiaxun Yang <jiaxun.yang@flygoat.com>,
	Huacai Chen <chenhuacai@loongson.cn>,
	Bjorn Helgaas <bhelgaas@google.com>, Len Brown <lenb@kernel.org>,
	rafael@kernel.org, linux-pci@vger.kernel.org,
	linux-acpi@vger.kernel.org
Subject: Re: [PATCH V4 1/4] ACPI / PCI: fix LPIC IRQ model default PCI IRQ polarity
Date: Thu, 20 Oct 2022 11:47:18 -0500	[thread overview]
Message-ID: <20221020164718.GA127832@bhelgaas> (raw)
In-Reply-To: <20221020082205.20505-2-lvjianmin@loongson.cn>

On Thu, Oct 20, 2022 at 04:22:02PM +0800, Jianmin Lv wrote:
> On LoongArch ACPI based systems, the PCI devices (e.g. sata
> controlers and PCI-to-to PCI bridge controlers) existed in
> Loongson chipsets output high-level interrupt signal to the
> interrupt controller they connected to,

I assume the active high behavior is hardware behavior that is
independent of the fact that you're using ACPI firmware on the
hardware.  If so, I would omit "ACPI based".

s/sata/SATA/
s/controlers/controllers/ (twice)
s/PCI-to-to PCI/PCI-to-PCI/
s/existed in/in/
s/they connected/they are connected/

> while the IRQs are
> active low from the perspective of PCI(in 2.2.6. Interrupt
> Pins, "Interrupts on PCI are optional and defined as level
> sensitive, asserted low),

I don't think you need this spec reference, since "asserted low" is
the standard thing that happens everywhere.  But if you do want it, it
needs to specify which spec it refers to, e.g., "Conventional PCI
r3.0, sec 2.2.6" so it's not confused with the PCIe spec.

The quote from the spec itself should be terminated with a close quote
("), i.e., 

  "Interrupts on PCI ... asserted low"

> which means that the interrupt
> output of PCI devices plugged into PCI-to-to PCI bridges of
> Loongson chipset will be also converted to high-level. So
> high level triggered type is required to be passed to
> acpi_register_gsi() when creating mappings for PCI devices.

This is the part where I was hoping for a reference to a spec that
talks about how PCI interrupts are inverted.  The inverter is the part
that's special here.

I see that ACPI r6.5, sec 5.2.12, mentions LPIC, but it doesn't
mention the inverter.  It has a lot more mentions of GIC, but also no
details about an inverter.  I suppose that would be in the GIC spec,
which I'm not familiar with.

The point is that one should be able to write this code from a spec,
without having to empirically discover the interrupt polarity.  What
spec tells you about using ACTIVE_HIGH here?

s/PCI-to-to PCI/PCI-to-PCI/ again

Rewrap the log to fill 75 columns like the rest of the history.

> Signed-off-by: Jianmin Lv <lvjianmin@loongson.cn>
> ---
>  drivers/acpi/pci_irq.c | 6 ++++--
>  1 file changed, 4 insertions(+), 2 deletions(-)
> 
> diff --git a/drivers/acpi/pci_irq.c b/drivers/acpi/pci_irq.c
> index 08e15774fb9f..ff30ceca2203 100644
> --- a/drivers/acpi/pci_irq.c
> +++ b/drivers/acpi/pci_irq.c
> @@ -387,13 +387,15 @@ int acpi_pci_irq_enable(struct pci_dev *dev)
>  	u8 pin;
>  	int triggering = ACPI_LEVEL_SENSITIVE;
>  	/*
> -	 * On ARM systems with the GIC interrupt model, level interrupts
> +	 * On ARM systems with the GIC interrupt model, or LoongArch
> +	 * systems with the LPIC interrupt model, level interrupts

Is "LoongArch" required in this comment?  Might the LPIC model be used
on non-LoongArch systems?

I see it follows the example of "ARM systems".  In my opinion, "ARM"
probably should be removed, too, because the code checks only for GIC
or LPIC; it doesn't check for ARM or LoongArch.

If GIC is restricted to ARM and LPIC is restricted to LoongArch,
that's fine, but that constraint should be expressed somewhere else
and doesn't need to be repeated here.

>  	 * are always polarity high by specification; PCI legacy
>  	 * IRQs lines are inverted before reaching the interrupt
>  	 * controller and must therefore be considered active high
>  	 * as default.
>  	 */
> -	int polarity = acpi_irq_model == ACPI_IRQ_MODEL_GIC ?
> +	int polarity = acpi_irq_model == ACPI_IRQ_MODEL_GIC ||
> +		       acpi_irq_model == ACPI_IRQ_MODEL_LPIC ?
>  				      ACPI_ACTIVE_HIGH : ACPI_ACTIVE_LOW;
>  	char *link = NULL;
>  	char link_desc[16];
> -- 
> 2.31.1
> 

  reply	other threads:[~2022-10-20 16:47 UTC|newest]

Thread overview: 9+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2022-10-20  8:22 [PATCH V4 0/4] irqchip: Support to set irq type for ACPI path Jianmin Lv
2022-10-20  8:22 ` [PATCH V4 1/4] ACPI / PCI: fix LPIC IRQ model default PCI IRQ polarity Jianmin Lv
2022-10-20 16:47   ` Bjorn Helgaas [this message]
2022-10-21  1:58     ` Jianmin Lv
2022-10-21 12:01       ` Bjorn Helgaas
2022-10-22  2:05         ` Jianmin Lv
2022-10-20  8:22 ` [PATCH V4 2/4] irqchip/loongson-pch-pic: fix translate callback for DT path Jianmin Lv
2022-10-20  8:22 ` [PATCH V4 3/4] irqchip/loongson-pch-pic: Support to set IRQ type for ACPI path Jianmin Lv
2022-10-20  8:22 ` [PATCH V4 4/4] irqchip/loongson-liointc: " Jianmin Lv

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=20221020164718.GA127832@bhelgaas \
    --to=helgaas@kernel.org \
    --cc=bhelgaas@google.com \
    --cc=chenhuacai@loongson.cn \
    --cc=jiaxun.yang@flygoat.com \
    --cc=lenb@kernel.org \
    --cc=linux-acpi@vger.kernel.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-pci@vger.kernel.org \
    --cc=loongarch@lists.linux.dev \
    --cc=lvjianmin@loongson.cn \
    --cc=maz@kernel.org \
    --cc=rafael@kernel.org \
    --cc=tglx@linutronix.de \
    /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).