From: Andrew Lunn <andrew@lunn.ch>
To: "Pali Rohár" <pali@kernel.org>
Cc: "Lorenzo Pieralisi" <lorenzo.pieralisi@arm.com>,
"Krzysztof Wilczyński" <kw@linux.com>,
"Bjorn Helgaas" <bhelgaas@google.com>,
"Rob Herring" <robh+dt@kernel.org>,
"Sebastian Hesselbarth" <sebastian.hesselbarth@gmail.com>,
"Gregory Clement" <gregory.clement@bootlin.com>,
"Thomas Petazzoni" <thomas.petazzoni@bootlin.com>,
linux-pci@vger.kernel.org, devicetree@vger.kernel.org,
linux-kernel@vger.kernel.org,
linux-arm-kernel@lists.infradead.org
Subject: Re: [PATCH 2/4] PCI: mvebu: Implement support for interrupts on emulated bridge
Date: Thu, 18 Aug 2022 21:51:21 +0200 [thread overview]
Message-ID: <Yv6YOZ2FuTn8D5qS@lunn.ch> (raw)
In-Reply-To: <20220817230036.817-3-pali@kernel.org>
> -static irqreturn_t mvebu_pcie_irq_handler(int irq, void *arg)
> +static irqreturn_t mvebu_pcie_error_irq_handler(int irq, void *arg)
> +{
> + struct mvebu_pcie_port *port = arg;
> + struct device *dev = &port->pcie->pdev->dev;
> + u32 cause, unmask, status;
> +
> + cause = mvebu_readl(port, PCIE_INT_CAUSE_OFF);
> + unmask = mvebu_readl(port, PCIE_INT_UNMASK_OFF);
> + status = cause & unmask;
> +
> + /* "error" interrupt handler does not process INTX interrupts */
> + status &= ~(PCIE_INT_INTX(0) | PCIE_INT_INTX(1) |
> + PCIE_INT_INTX(2) | PCIE_INT_INTX(3));
Just for my understanding...
There are two interrupts, but the status information what those
interrupts actually mean are all packed into one register? I assume
reading the clause register does not clear set bits? Otherwise there
would be a race condition. Are these actually level interrupts, and in
order to clear them you need to poke some other register?
> + /*
> + * Old DT bindings do not contain "error" interrupt
> + * so do not fail probing driver when interrupt does not exist.
> + */
> + port->error_irq = of_irq_get_byname(child, "error");
> + if (port->error_irq == -EPROBE_DEFER) {
> + ret = port->error_irq;
> + goto err;
> + }
> + if (port->error_irq <= 0) {
> + dev_warn(dev, "%s: interrupts on Root Port are unsupported, "
Maybe that should be "Error interrupts on Root..." ?
Andrew
WARNING: multiple messages have this Message-ID (diff)
From: Andrew Lunn <andrew@lunn.ch>
To: "Pali Rohár" <pali@kernel.org>
Cc: "Lorenzo Pieralisi" <lorenzo.pieralisi@arm.com>,
"Krzysztof Wilczyński" <kw@linux.com>,
"Bjorn Helgaas" <bhelgaas@google.com>,
"Rob Herring" <robh+dt@kernel.org>,
"Sebastian Hesselbarth" <sebastian.hesselbarth@gmail.com>,
"Gregory Clement" <gregory.clement@bootlin.com>,
"Thomas Petazzoni" <thomas.petazzoni@bootlin.com>,
linux-pci@vger.kernel.org, devicetree@vger.kernel.org,
linux-kernel@vger.kernel.org,
linux-arm-kernel@lists.infradead.org
Subject: Re: [PATCH 2/4] PCI: mvebu: Implement support for interrupts on emulated bridge
Date: Thu, 18 Aug 2022 21:51:21 +0200 [thread overview]
Message-ID: <Yv6YOZ2FuTn8D5qS@lunn.ch> (raw)
In-Reply-To: <20220817230036.817-3-pali@kernel.org>
> -static irqreturn_t mvebu_pcie_irq_handler(int irq, void *arg)
> +static irqreturn_t mvebu_pcie_error_irq_handler(int irq, void *arg)
> +{
> + struct mvebu_pcie_port *port = arg;
> + struct device *dev = &port->pcie->pdev->dev;
> + u32 cause, unmask, status;
> +
> + cause = mvebu_readl(port, PCIE_INT_CAUSE_OFF);
> + unmask = mvebu_readl(port, PCIE_INT_UNMASK_OFF);
> + status = cause & unmask;
> +
> + /* "error" interrupt handler does not process INTX interrupts */
> + status &= ~(PCIE_INT_INTX(0) | PCIE_INT_INTX(1) |
> + PCIE_INT_INTX(2) | PCIE_INT_INTX(3));
Just for my understanding...
There are two interrupts, but the status information what those
interrupts actually mean are all packed into one register? I assume
reading the clause register does not clear set bits? Otherwise there
would be a race condition. Are these actually level interrupts, and in
order to clear them you need to poke some other register?
> + /*
> + * Old DT bindings do not contain "error" interrupt
> + * so do not fail probing driver when interrupt does not exist.
> + */
> + port->error_irq = of_irq_get_byname(child, "error");
> + if (port->error_irq == -EPROBE_DEFER) {
> + ret = port->error_irq;
> + goto err;
> + }
> + if (port->error_irq <= 0) {
> + dev_warn(dev, "%s: interrupts on Root Port are unsupported, "
Maybe that should be "Error interrupts on Root..." ?
Andrew
_______________________________________________
linux-arm-kernel mailing list
linux-arm-kernel@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-arm-kernel
next prev parent reply other threads:[~2022-08-18 19:51 UTC|newest]
Thread overview: 32+ messages / expand[flat|nested] mbox.gz Atom feed top
2022-08-17 23:00 [PATCH 0/4] PCI: mvebu: Add support for error interrupt Pali Rohár
2022-08-17 23:00 ` Pali Rohár
2022-08-17 23:00 ` [PATCH 1/4] dt-bindings: PCI: mvebu: Update information about " Pali Rohár
2022-08-17 23:00 ` Pali Rohár
2022-08-18 16:32 ` Rob Herring
2022-08-18 16:32 ` Rob Herring
2022-08-18 19:34 ` Andrew Lunn
2022-08-18 19:34 ` Andrew Lunn
2022-08-17 23:00 ` [PATCH 2/4] PCI: mvebu: Implement support for interrupts on emulated bridge Pali Rohár
2022-08-17 23:00 ` Pali Rohár
2022-08-18 19:51 ` Andrew Lunn [this message]
2022-08-18 19:51 ` Andrew Lunn
2022-08-18 20:07 ` Pali Rohár
2022-08-18 20:07 ` Pali Rohár
2022-08-18 20:27 ` Andrew Lunn
2022-08-18 20:27 ` Andrew Lunn
2022-08-30 12:36 ` Pali Rohár
2022-08-30 12:36 ` Pali Rohár
2022-09-29 14:05 ` Pali Rohár
2022-09-29 14:05 ` Pali Rohár
2022-09-30 7:39 ` Lorenzo Pieralisi
2022-09-30 7:39 ` Lorenzo Pieralisi
2022-08-17 23:00 ` [PATCH 3/4] ARM: dts: kirkwood: Add definitions for PCIe error interrupts Pali Rohár
2022-08-17 23:00 ` Pali Rohár
2022-08-18 19:51 ` Andrew Lunn
2022-08-18 19:51 ` Andrew Lunn
2022-08-17 23:00 ` [PATCH 4/4] ARM: dts: dove: " Pali Rohár
2022-08-17 23:00 ` Pali Rohár
2022-08-18 19:52 ` Andrew Lunn
2022-08-18 19:52 ` Andrew Lunn
2022-09-02 14:54 ` [PATCH 0/4] PCI: mvebu: Add support for error interrupt Gregory CLEMENT
2022-09-02 14:54 ` Gregory CLEMENT
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=Yv6YOZ2FuTn8D5qS@lunn.ch \
--to=andrew@lunn.ch \
--cc=bhelgaas@google.com \
--cc=devicetree@vger.kernel.org \
--cc=gregory.clement@bootlin.com \
--cc=kw@linux.com \
--cc=linux-arm-kernel@lists.infradead.org \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-pci@vger.kernel.org \
--cc=lorenzo.pieralisi@arm.com \
--cc=pali@kernel.org \
--cc=robh+dt@kernel.org \
--cc=sebastian.hesselbarth@gmail.com \
--cc=thomas.petazzoni@bootlin.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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.