Suraj Jaiswal (3):
dt-bindings: net: qcom,ethqos: add binding doc for fault IRQ for
sa8775p
arm64: dts: qcom: sa8775p: enable Fault IRQ
net: stmmac: Add driver support for DWMAC5 fault IRQ Support
.../devicetree/bindings/net/qcom,ethqos.yaml | 7 +++++--
arch/arm64/boot/dts/qcom/sa8775p.dtsi | 10 ++++++----
drivers/net/ethernet/stmicro/stmmac/common.h | 1 +
drivers/net/ethernet/stmicro/stmmac/stmmac.h | 2 ++
.../net/ethernet/stmicro/stmmac/stmmac_main.c | 18 +++++++++++++++++
.../ethernet/stmicro/stmmac/stmmac_platform.c | 20 +++++++++++++++++++
6 files changed, 52 insertions(+), 6 deletions(-)
--
2.25.1
Add changes to support fault IRQ Handling
Support for ethernet.
Signed-off-by: Suraj Jaiswal <[email protected]>
---
arch/arm64/boot/dts/qcom/sa8775p.dtsi | 10 ++++++----
1 file changed, 6 insertions(+), 4 deletions(-)
diff --git a/arch/arm64/boot/dts/qcom/sa8775p.dtsi b/arch/arm64/boot/dts/qcom/sa8775p.dtsi
index 13dd44dd9ed1..15155adcd200 100644
--- a/arch/arm64/boot/dts/qcom/sa8775p.dtsi
+++ b/arch/arm64/boot/dts/qcom/sa8775p.dtsi
@@ -2394,8 +2394,9 @@ ethernet1: ethernet@23000000 {
<0x0 0x23016000 0x0 0x100>;
reg-names = "stmmaceth", "rgmii";
- interrupts = <GIC_SPI 929 IRQ_TYPE_LEVEL_HIGH>;
- interrupt-names = "macirq";
+ interrupts = <GIC_SPI 929 IRQ_TYPE_LEVEL_HIGH>
+ <GIC_SPI 781 IRQ_TYPE_LEVEL_HIGH>;
+ interrupt-names = "macirq", "safety";
clocks = <&gcc GCC_EMAC1_AXI_CLK>,
<&gcc GCC_EMAC1_SLV_AHB_CLK>,
@@ -2427,8 +2428,9 @@ ethernet0: ethernet@23040000 {
<0x0 0x23056000 0x0 0x100>;
reg-names = "stmmaceth", "rgmii";
- interrupts = <GIC_SPI 946 IRQ_TYPE_LEVEL_HIGH>;
- interrupt-names = "macirq";
+ interrupts = <GIC_SPI 946 IRQ_TYPE_LEVEL_HIGH>,
+ <GIC_SPI 782 IRQ_TYPE_LEVEL_HIGH>;
+ interrupt-names = "macirq", "safety";
clocks = <&gcc GCC_EMAC0_AXI_CLK>,
<&gcc GCC_EMAC0_SLV_AHB_CLK>,
--
2.25.1
Add binding doc for fault IRQ. The fault IRQ will be
trigger for ECC,DPP,FSM error.
Signed-off-by: Suraj Jaiswal <[email protected]>
---
Documentation/devicetree/bindings/net/qcom,ethqos.yaml | 7 +++++--
1 file changed, 5 insertions(+), 2 deletions(-)
diff --git a/Documentation/devicetree/bindings/net/qcom,ethqos.yaml b/Documentation/devicetree/bindings/net/qcom,ethqos.yaml
index 7bdb412a0185..e013cb51fb07 100644
--- a/Documentation/devicetree/bindings/net/qcom,ethqos.yaml
+++ b/Documentation/devicetree/bindings/net/qcom,ethqos.yaml
@@ -37,12 +37,14 @@ properties:
items:
- description: Combined signal for various interrupt events
- description: The interrupt that occurs when Rx exits the LPI state
+ - description: The interrupt that occurs when HW fault occurs
interrupt-names:
minItems: 1
items:
- const: macirq
- const: eth_lpi
+ - const: safety
clocks:
maxItems: 4
@@ -89,8 +91,9 @@ examples:
<&gcc GCC_ETH_PTP_CLK>,
<&gcc GCC_ETH_RGMII_CLK>;
interrupts = <GIC_SPI 56 IRQ_TYPE_LEVEL_HIGH>,
- <GIC_SPI 55 IRQ_TYPE_LEVEL_HIGH>;
- interrupt-names = "macirq", "eth_lpi";
+ <GIC_SPI 55 IRQ_TYPE_LEVEL_HIGH>,
+ <GIC_SPI 782 IRQ_TYPE_LEVEL_HIGH>;
+ interrupt-names = "macirq", "eth_lpi", "safety";
rx-fifo-depth = <4096>;
tx-fifo-depth = <4096>;
--
2.25.1
Add IRQ support to listen HW fault like ECC,DPP,FSM
fault and print the fault information in the kernel
log.
Signed-off-by: Suraj Jaiswal <[email protected]>
---
drivers/net/ethernet/stmicro/stmmac/common.h | 1 +
drivers/net/ethernet/stmicro/stmmac/stmmac.h | 2 ++
.../net/ethernet/stmicro/stmmac/stmmac_main.c | 18 +++++++++++++++++
.../ethernet/stmicro/stmmac/stmmac_platform.c | 20 +++++++++++++++++++
4 files changed, 41 insertions(+)
diff --git a/drivers/net/ethernet/stmicro/stmmac/common.h b/drivers/net/ethernet/stmicro/stmmac/common.h
index 6b935922054d..c4821c7ab674 100644
--- a/drivers/net/ethernet/stmicro/stmmac/common.h
+++ b/drivers/net/ethernet/stmicro/stmmac/common.h
@@ -347,6 +347,7 @@ enum request_irq_err {
REQ_IRQ_ERR_SFTY_UE,
REQ_IRQ_ERR_SFTY_CE,
REQ_IRQ_ERR_LPI,
+ REQ_IRQ_ERR_SAFETY,
REQ_IRQ_ERR_WOL,
REQ_IRQ_ERR_MAC,
REQ_IRQ_ERR_NO,
diff --git a/drivers/net/ethernet/stmicro/stmmac/stmmac.h b/drivers/net/ethernet/stmicro/stmmac/stmmac.h
index cd7a9768de5f..8893d4b7fa38 100644
--- a/drivers/net/ethernet/stmicro/stmmac/stmmac.h
+++ b/drivers/net/ethernet/stmicro/stmmac/stmmac.h
@@ -33,6 +33,7 @@ struct stmmac_resources {
int irq;
int sfty_ce_irq;
int sfty_ue_irq;
+ int safety_common_intr;
int rx_irq[MTL_MAX_RX_QUEUES];
int tx_irq[MTL_MAX_TX_QUEUES];
};
@@ -331,6 +332,7 @@ struct stmmac_priv {
/* XDP BPF Program */
unsigned long *af_xdp_zc_qps;
struct bpf_prog *xdp_prog;
+ int safety_common_intr;
};
enum stmmac_state {
diff --git a/drivers/net/ethernet/stmicro/stmmac/stmmac_main.c b/drivers/net/ethernet/stmicro/stmmac/stmmac_main.c
index 8964fc8a955f..2ae4f34444de 100644
--- a/drivers/net/ethernet/stmicro/stmmac/stmmac_main.c
+++ b/drivers/net/ethernet/stmicro/stmmac/stmmac_main.c
@@ -3530,6 +3530,10 @@ static void stmmac_free_irq(struct net_device *dev,
if (priv->wol_irq > 0 && priv->wol_irq != dev->irq)
free_irq(priv->wol_irq, dev);
fallthrough;
+ case REQ_IRQ_ERR_SAFETY:
+ if (priv->safety_common_intr > 0 && priv->safety_common_intr != dev->irq)
+ free_irq(priv->safety_common_intr, dev);
+ fallthrough;
case REQ_IRQ_ERR_WOL:
free_irq(dev->irq, dev);
fallthrough;
@@ -3736,6 +3740,18 @@ static int stmmac_request_irq_single(struct net_device *dev)
}
}
+ if (priv->safety_common_intr > 0 && priv->safety_common_intr != dev->irq) {
+ ret = request_irq(priv->safety_common_intr, stmmac_safety_interrupt,
+ 0, "safety", dev);
+ if (unlikely(ret < 0)) {
+ netdev_err(priv->dev,
+ "%s: alloc safety failed %d (error: %d)\n",
+ __func__, priv->safety_common_intr, ret);
+ irq_err = REQ_IRQ_ERR_SAFETY;
+ goto irq_error;
+ }
+ }
+
return 0;
irq_error:
@@ -7398,6 +7414,8 @@ int stmmac_dvr_probe(struct device *device,
priv->lpi_irq = res->lpi_irq;
priv->sfty_ce_irq = res->sfty_ce_irq;
priv->sfty_ue_irq = res->sfty_ue_irq;
+ priv->safety_common_intr = res->safety_common_intr;
+
for (i = 0; i < MTL_MAX_RX_QUEUES; i++)
priv->rx_irq[i] = res->rx_irq[i];
for (i = 0; i < MTL_MAX_TX_QUEUES; i++)
diff --git a/drivers/net/ethernet/stmicro/stmmac/stmmac_platform.c b/drivers/net/ethernet/stmicro/stmmac/stmmac_platform.c
index 1ffde555da47..bae1704d5f4b 100644
--- a/drivers/net/ethernet/stmicro/stmmac/stmmac_platform.c
+++ b/drivers/net/ethernet/stmicro/stmmac/stmmac_platform.c
@@ -690,9 +690,25 @@ devm_stmmac_probe_config_dt(struct platform_device *pdev, u8 *mac)
#endif /* CONFIG_OF */
EXPORT_SYMBOL_GPL(devm_stmmac_probe_config_dt);
+int stmmac_get_fault_intr_config(struct platform_device *pdev, struct stmmac_resources *res)
+{
+ int ret = 0;
+
+ res->safety_common_intr = platform_get_irq_byname(pdev, "safety");
+
+ if (res->safety_common_intr < 0) {
+ if (res->safety_common_intr != -EPROBE_DEFER)
+ dev_err(&pdev->dev, "safety IRQ configuration information not found\n");
+ ret = 1;
+ }
+
+ return ret;
+}
+
int stmmac_get_platform_resources(struct platform_device *pdev,
struct stmmac_resources *stmmac_res)
{
+ int ret = 0;
memset(stmmac_res, 0, sizeof(*stmmac_res));
/* Get IRQ information early to have an ability to ask for deferred
@@ -702,6 +718,10 @@ int stmmac_get_platform_resources(struct platform_device *pdev,
if (stmmac_res->irq < 0)
return stmmac_res->irq;
+ ret = stmmac_get_fault_intr_config(pdev, stmmac_res);
+ if (ret)
+ dev_err(&pdev->dev, "Fault interrupt not present\n");
+
/* On some platforms e.g. SPEAr the wake up irq differs from the mac irq
* The external wake up irq can be passed through the platform code
* named as "eth_wake_irq"
--
2.25.1
On 11/23/23 12:38, Suraj Jaiswal wrote:
> Add binding doc for fault IRQ. The fault IRQ will be
> trigger for ECC,DPP,FSM error.
trigerred
spaces after commas
>
> Signed-off-by: Suraj Jaiswal <[email protected]>
> ---
You refer to the IRQ as "fault" in the commit messages, but call
it "safety" in dt.. Any reason to that?
Konrad
On 11/23/23 12:38, Suraj Jaiswal wrote:
> Add IRQ support to listen HW fault like ECC,DPP,FSM
> fault and print the fault information in the kernel
> log.
>
> Signed-off-by: Suraj Jaiswal <[email protected]>
> ---
> drivers/net/ethernet/stmicro/stmmac/common.h | 1 +
> drivers/net/ethernet/stmicro/stmmac/stmmac.h | 2 ++
> .../net/ethernet/stmicro/stmmac/stmmac_main.c | 18 +++++++++++++++++
> .../ethernet/stmicro/stmmac/stmmac_platform.c | 20 +++++++++++++++++++
> 4 files changed, 41 insertions(+)
>
> diff --git a/drivers/net/ethernet/stmicro/stmmac/common.h b/drivers/net/ethernet/stmicro/stmmac/common.h
> index 6b935922054d..c4821c7ab674 100644
> --- a/drivers/net/ethernet/stmicro/stmmac/common.h
> +++ b/drivers/net/ethernet/stmicro/stmmac/common.h
> @@ -347,6 +347,7 @@ enum request_irq_err {
> REQ_IRQ_ERR_SFTY_UE,
> REQ_IRQ_ERR_SFTY_CE,
> REQ_IRQ_ERR_LPI,
> + REQ_IRQ_ERR_SAFETY,
> REQ_IRQ_ERR_WOL,
> REQ_IRQ_ERR_MAC,
> REQ_IRQ_ERR_NO,
> diff --git a/drivers/net/ethernet/stmicro/stmmac/stmmac.h b/drivers/net/ethernet/stmicro/stmmac/stmmac.h
> index cd7a9768de5f..8893d4b7fa38 100644
> --- a/drivers/net/ethernet/stmicro/stmmac/stmmac.h
> +++ b/drivers/net/ethernet/stmicro/stmmac/stmmac.h
> @@ -33,6 +33,7 @@ struct stmmac_resources {
> int irq;
> int sfty_ce_irq;
> int sfty_ue_irq;
> + int safety_common_intr;
> int rx_irq[MTL_MAX_RX_QUEUES];
> int tx_irq[MTL_MAX_TX_QUEUES];
> };
> @@ -331,6 +332,7 @@ struct stmmac_priv {
> /* XDP BPF Program */
> unsigned long *af_xdp_zc_qps;
> struct bpf_prog *xdp_prog;
> + int safety_common_intr;
other interrupts use _irq yet you seem to use _intr, plus the
aforementioned "safety" vs "fault" naming
[...]
>
> +int stmmac_get_fault_intr_config(struct platform_device *pdev, struct stmmac_resources *res)
> +{
> + int ret = 0;
get rid of ret and return directly
> +
> + res->safety_common_intr = platform_get_irq_byname(pdev, "safety");
> +
stray newline?
> + if (res->safety_common_intr < 0) {
> + if (res->safety_common_intr != -EPROBE_DEFER)
> + dev_err(&pdev->dev, "safety IRQ configuration information not found\n");
> + ret = 1;
> + }
> +
> + return ret;
> +}
> +
> int stmmac_get_platform_resources(struct platform_device *pdev,
> struct stmmac_resources *stmmac_res)
> {
> + int ret = 0;
Missing newline between declarations and code
Unnecessary initialization
> memset(stmmac_res, 0, sizeof(*stmmac_res));
>
> /* Get IRQ information early to have an ability to ask for deferred
> @@ -702,6 +718,10 @@ int stmmac_get_platform_resources(struct platform_device *pdev,
> if (stmmac_res->irq < 0)
> return stmmac_res->irq;
>
> + ret = stmmac_get_fault_intr_config(pdev, stmmac_res);
> + if (ret)
> + dev_err(&pdev->dev, "Fault interrupt not present\n");
Since you're getting the return value, perhaps the errno should
be propagated
Konrad
On 11/23/23 12:38, Suraj Jaiswal wrote:
> Suraj Jaiswal (3):
> dt-bindings: net: qcom,ethqos: add binding doc for fault IRQ for
> sa8775p
> arm64: dts: qcom: sa8775p: enable Fault IRQ
> net: stmmac: Add driver support for DWMAC5 fault IRQ Support
Missing cover letter with explanations/an abstract
Konrad
On 11/23/23 12:53, Suraj Jaiswal wrote:
> Suraj Jaiswal (3):
> dt-bindings: net: qcom,ethqos: add binding doc for fault IRQ for
> sa8775p
> arm64: dts: qcom: sa8775p: enable Fault IRQ
> net: stmmac: Add driver support for DWMAC5 fault IRQ Support
You resent this series 15 minutes after the last submission,
with no changelog, with no increased revision number and no explanations.
Please refer to the following documents:
[1] https://www.kernel.org/doc/html/latest/process/submitting-patches.html
[2] https://b4.docs.kernel.org/
Konrad
@Andrew getting warning as part of below check . Need to explore more why this is coming .
below warning is coming becuase of " interrupt-names = "macirq", "eth_lpi", "safety";" safety added here . If I remove safety they warning gone.
Looks like we have to define property "safety" somewhere else as well . I have already added safety in "interrupt-names:" list but still no help .
# make DT_CHECKER_FLAGS=-m DT_SCHEMA_FILES=net/qcom,ethqos.yaml dt_binding_check
LINT Documentation/devicetree/bindings
invalid config: unknown option "required" for rule "quoted-strings"
xargs: /usr/bin/yamllint: exited with status 255; aborting
CHKDT Documentation/devicetree/bindings/processed-schema.json
SCHEMA Documentation/devicetree/bindings/processed-schema.json
DTEX Documentation/devicetree/bindings/net/qcom,ethqos.example.dts
DTC_CHK Documentation/devicetree/bindings/net/qcom,ethqos.example.dtb
/local/mnt/workspace/andrew/linux-next/Documentation/devicetree/bindings/net/qcom,ethqos.example.dtb: ethernet@7a80000: interrupt-names:2: 'eth_lpi' was expected
from schema $id: http://devicetree.org/schemas/net/qcom,ethqos.yaml#
/local/mnt/workspace/andrew/linux-next/Documentation/devicetree/bindings/net/qcom,ethqos.example.dtb: ethernet@7a80000: Unevaluated properties are not allowed ('mdio', 'phy-handle', 'phy-mode', 'rx-fifo-depth', 'snps,reset-active-low', 'snps,reset-delays-us', 'snps,reset-gpio', 'snps,tso', 'tx-fifo-depth' were unexpected)
from schema $id: http://devicetree.org/schemas/net/qcom,ethqos.yaml#
On 11/23/2023 5:23 PM, Suraj Jaiswal wrote:
> Add binding doc for fault IRQ. The fault IRQ will be
> triggered for ECC, DPP, FSM error.
>
> Signed-off-by: Suraj Jaiswal <[email protected]>
> ---
> Documentation/devicetree/bindings/net/qcom,ethqos.yaml | 7 +++++--
> 1 file changed, 5 insertions(+), 2 deletions(-)
>
> diff --git a/Documentation/devicetree/bindings/net/qcom,ethqos.yaml b/Documentation/devicetree/bindings/net/qcom,ethqos.yaml
> index 7bdb412a0185..e013cb51fb07 100644
> --- a/Documentation/devicetree/bindings/net/qcom,ethqos.yaml
> +++ b/Documentation/devicetree/bindings/net/qcom,ethqos.yaml
> @@ -37,12 +37,14 @@ properties:
> items:
> - description: Combined signal for various interrupt events
> - description: The interrupt that occurs when Rx exits the LPI state
> + - description: The interrupt that occurs when HW fault occurs
>
> interrupt-names:
> minItems: 1
> items:
> - const: macirq
> - const: eth_lpi
> + - const: safety
>
> clocks:
> maxItems: 4
> @@ -89,8 +91,9 @@ examples:
> <&gcc GCC_ETH_PTP_CLK>,
> <&gcc GCC_ETH_RGMII_CLK>;
> interrupts = <GIC_SPI 56 IRQ_TYPE_LEVEL_HIGH>,
> - <GIC_SPI 55 IRQ_TYPE_LEVEL_HIGH>;
> - interrupt-names = "macirq", "eth_lpi";
> + <GIC_SPI 55 IRQ_TYPE_LEVEL_HIGH>,
> + <GIC_SPI 782 IRQ_TYPE_LEVEL_HIGH>;
> + interrupt-names = "macirq", "eth_lpi", "safety";
>
> rx-fifo-depth = <4096>;
> tx-fifo-depth = <4096>;
On Thu, 23 Nov 2023 17:23:20 +0530, Suraj Jaiswal wrote:
> Add binding doc for fault IRQ. The fault IRQ will be
> triggered for ECC, DPP, FSM error.
>
> Signed-off-by: Suraj Jaiswal <[email protected]>
> ---
> Documentation/devicetree/bindings/net/qcom,ethqos.yaml | 7 +++++--
> 1 file changed, 5 insertions(+), 2 deletions(-)
>
My bot found errors running 'make DT_CHECKER_FLAGS=-m dt_binding_check'
on your patch (DT_CHECKER_FLAGS is new in v5.13):
yamllint warnings/errors:
dtschema/dtc warnings/errors:
/builds/robherring/dt-review-ci/linux/Documentation/devicetree/bindings/net/qcom,ethqos.example.dtb: ethernet@7a80000: interrupt-names:2: 'eth_lpi' was expected
from schema $id: http://devicetree.org/schemas/net/qcom,ethqos.yaml#
/builds/robherring/dt-review-ci/linux/Documentation/devicetree/bindings/net/qcom,ethqos.example.dtb: ethernet@7a80000: Unevaluated properties are not allowed ('mdio', 'phy-handle', 'phy-mode', 'rx-fifo-depth', 'snps,reset-active-low', 'snps,reset-delays-us', 'snps,reset-gpio', 'snps,tso', 'tx-fifo-depth' were unexpected)
from schema $id: http://devicetree.org/schemas/net/qcom,ethqos.yaml#
doc reference errors (make refcheckdocs):
See https://patchwork.ozlabs.org/project/devicetree-bindings/patch/ff458955a24c0cb4ba41158b8b53fbef00c8237d.1700737841.git.quic_jsuraj@quicinc.com
The base for the series is generally the latest rc1. A different dependency
should be noted in *this* patch.
If you already ran 'make dt_binding_check' and didn't see the above
error(s), then make sure 'yamllint' is installed and dt-schema is up to
date:
pip3 install dtschema --upgrade
Please check and re-submit after running the above command yourself. Note
that DT_SCHEMA_FILES can be set to your schema file to speed up checking
your schema. However, it must be unset to test all examples with your schema.
On Thu, Nov 23, 2023 at 05:08:15PM +0530, Suraj Jaiswal wrote:
> Add IRQ support to listen HW fault like ECC,DPP,FSM
> fault and print the fault information in the kernel
> log.
>
> Signed-off-by: Suraj Jaiswal <[email protected]>
...
> diff --git a/drivers/net/ethernet/stmicro/stmmac/stmmac_platform.c b/drivers/net/ethernet/stmicro/stmmac/stmmac_platform.c
> index 1ffde555da47..bae1704d5f4b 100644
> --- a/drivers/net/ethernet/stmicro/stmmac/stmmac_platform.c
> +++ b/drivers/net/ethernet/stmicro/stmmac/stmmac_platform.c
> @@ -690,9 +690,25 @@ devm_stmmac_probe_config_dt(struct platform_device *pdev, u8 *mac)
> #endif /* CONFIG_OF */
> EXPORT_SYMBOL_GPL(devm_stmmac_probe_config_dt);
>
> +int stmmac_get_fault_intr_config(struct platform_device *pdev, struct stmmac_resources *res)
Hi Suraj,
stmmac_get_fault_intr_config() appears to only be used in this function.
If so it should be static.
Also, please consider limiting Networking code to 80 columns wide.
static int stmmac_get_fault_intr_config(struct platform_device *pdev,
struct stmmac_resources *res)
...
--
pw-bot: changes-requested
On Thu, Nov 23, 2023 at 05:08:12PM +0530, Suraj Jaiswal wrote:
> Suraj Jaiswal (3):
> dt-bindings: net: qcom,ethqos: add binding doc for fault IRQ for
> sa8775p
> arm64: dts: qcom: sa8775p: enable Fault IRQ
> net: stmmac: Add driver support for DWMAC5 fault IRQ Support
The purpose of 0/X patch is to explain the big picture. What does this
patch series do?
Please add some text here.
Andrew
> @@ -702,6 +718,10 @@ int stmmac_get_platform_resources(struct platform_device *pdev,
> if (stmmac_res->irq < 0)
> return stmmac_res->irq;
>
> + ret = stmmac_get_fault_intr_config(pdev, stmmac_res);
> + if (ret)
> + dev_err(&pdev->dev, "Fault interrupt not present\n");
This fault/saftey/foobar interrupt is optional? So printing any error
message it is missing does not seem like a good idea.
Andrew
On 23/11/2023 12:38, Suraj Jaiswal wrote:
> Add binding doc for fault IRQ. The fault IRQ will be
> trigger for ECC,DPP,FSM error.
>
> Signed-off-by: Suraj Jaiswal <[email protected]>
> ---
> Documentation/devicetree/bindings/net/qcom,ethqos.yaml | 7 +++++--
> 1 file changed, 5 insertions(+), 2 deletions(-)
>
> diff --git a/Documentation/devicetree/bindings/net/qcom,ethqos.yaml b/Documentation/devicetree/bindings/net/qcom,ethqos.yaml
> index 7bdb412a0185..e013cb51fb07 100644
> --- a/Documentation/devicetree/bindings/net/qcom,ethqos.yaml
> +++ b/Documentation/devicetree/bindings/net/qcom,ethqos.yaml
> @@ -37,12 +37,14 @@ properties:
> items:
> - description: Combined signal for various interrupt events
> - description: The interrupt that occurs when Rx exits the LPI state
> + - description: The interrupt that occurs when HW fault occurs
Adding required items is breaking the ABI and introducing new dtbs_check
warnings. I don't see rationale for this in the commit msg.
I don't see any fixes for the warnings, either. I am quite picky on this
part, so to avoid wasting my time - are you 100% sure you do not
introduce any new warning?
Best regards,
Krzysztof
On 23/11/2023 12:38, Suraj Jaiswal wrote:
> Add changes to support fault IRQ Handling
> Support for ethernet.
>
> Signed-off-by: Suraj Jaiswal <[email protected]>
> ---
> arch/arm64/boot/dts/qcom/sa8775p.dtsi | 10 ++++++----
> 1 file changed, 6 insertions(+), 4 deletions(-)
>
> diff --git a/arch/arm64/boot/dts/qcom/sa8775p.dtsi b/arch/arm64/boot/dts/qcom/sa8775p.dtsi
> index 13dd44dd9ed1..15155adcd200 100644
> --- a/arch/arm64/boot/dts/qcom/sa8775p.dtsi
> +++ b/arch/arm64/boot/dts/qcom/sa8775p.dtsi
> @@ -2394,8 +2394,9 @@ ethernet1: ethernet@23000000 {
> <0x0 0x23016000 0x0 0x100>;
> reg-names = "stmmaceth", "rgmii";
>
> - interrupts = <GIC_SPI 929 IRQ_TYPE_LEVEL_HIGH>;
> - interrupt-names = "macirq";
> + interrupts = <GIC_SPI 929 IRQ_TYPE_LEVEL_HIGH>
> + <GIC_SPI 781 IRQ_TYPE_LEVEL_HIGH>;
> + interrupt-names = "macirq", "safety";
This was not tested... so as I expected - you do introduce new warnings. :/
Best regards,
Krzysztof
On 23/11/2023 12:53, Suraj Jaiswal wrote:
> Add changes to support fault IRQ Handling
> Support for ethernet.
>
You duplicated all the patches. I already responded to previous
duplicates set, so also here:
NAK, you did not test your patchset.
Best regards,
Krzysztof
hi Krzysztof,
Sure . Will take care of dtbs_check warnings in the next patch .
Thanks
Suraj
On 11/24/2023 1:48 PM, Krzysztof Kozlowski wrote:
> On 23/11/2023 12:38, Suraj Jaiswal wrote:
>> Add binding doc for fault IRQ. The fault IRQ will be
>> trigger for ECC,DPP,FSM error.
>>
>> Signed-off-by: Suraj Jaiswal <[email protected]>
>> ---
>> Documentation/devicetree/bindings/net/qcom,ethqos.yaml | 7 +++++--
>> 1 file changed, 5 insertions(+), 2 deletions(-)
>>
>> diff --git a/Documentation/devicetree/bindings/net/qcom,ethqos.yaml b/Documentation/devicetree/bindings/net/qcom,ethqos.yaml
>> index 7bdb412a0185..e013cb51fb07 100644
>> --- a/Documentation/devicetree/bindings/net/qcom,ethqos.yaml
>> +++ b/Documentation/devicetree/bindings/net/qcom,ethqos.yaml
>> @@ -37,12 +37,14 @@ properties:
>> items:
>> - description: Combined signal for various interrupt events
>> - description: The interrupt that occurs when Rx exits the LPI state
>> + - description: The interrupt that occurs when HW fault occurs
>
> Adding required items is breaking the ABI and introducing new dtbs_check
> warnings. I don't see rationale for this in the commit msg.
>
> I don't see any fixes for the warnings, either. I am quite picky on this
> part, so to avoid wasting my time - are you 100% sure you do not
> introduce any new warning?
>
> Best regards,
> Krzysztof
>
Hi Suraj,
kernel test robot noticed the following build warnings:
[auto build test WARNING on net-next/main]
url: https://github.com/intel-lab-lkp/linux/commits/Suraj-Jaiswal/dt-bindings-net-qcom-ethqos-add-binding-doc-for-fault-IRQ-for-sa8775p/20231123-202252
base: net-next/main
patch link: https://lore.kernel.org/r/62eaaace3713751cb1ecac3163e857737107ca0e.1700737841.git.quic_jsuraj%40quicinc.com
patch subject: [PATCH net-next v3 3/3] net: stmmac: Add driver support for DWMAC5 fault IRQ Support
config: csky-randconfig-r081-20231124 (https://download.01.org/0day-ci/archive/20231124/[email protected]/config)
compiler: csky-linux-gcc (GCC) 13.2.0
reproduce (this is a W=1 build): (https://download.01.org/0day-ci/archive/20231124/[email protected]/reproduce)
If you fix the issue in a separate patch/commit (i.e. not just a new version of
the same patch/commit), kindly add following tags
| Reported-by: kernel test robot <[email protected]>
| Closes: https://lore.kernel.org/oe-kbuild-all/[email protected]/
All warnings (new ones prefixed by >>):
>> drivers/net/ethernet/stmicro/stmmac/stmmac_platform.c:693:5: warning: no previous prototype for 'stmmac_get_fault_intr_config' [-Wmissing-prototypes]
693 | int stmmac_get_fault_intr_config(struct platform_device *pdev, struct stmmac_resources *res)
| ^~~~~~~~~~~~~~~~~~~~~~~~~~~~
vim +/stmmac_get_fault_intr_config +693 drivers/net/ethernet/stmicro/stmmac/stmmac_platform.c
692
> 693 int stmmac_get_fault_intr_config(struct platform_device *pdev, struct stmmac_resources *res)
694 {
695 int ret = 0;
696
697 res->safety_common_intr = platform_get_irq_byname(pdev, "safety");
698
699 if (res->safety_common_intr < 0) {
700 if (res->safety_common_intr != -EPROBE_DEFER)
701 dev_err(&pdev->dev, "safety IRQ configuration information not found\n");
702 ret = 1;
703 }
704
705 return ret;
706 }
707
--
0-DAY CI Kernel Test Service
https://github.com/intel/lkp-tests/wiki
Hi Suraj,
kernel test robot noticed the following build warnings:
[auto build test WARNING on net-next/main]
url: https://github.com/intel-lab-lkp/linux/commits/Suraj-Jaiswal/dt-bindings-net-qcom-ethqos-add-binding-doc-for-fault-IRQ-for-sa8775p/20231123-202252
base: net-next/main
patch link: https://lore.kernel.org/r/62eaaace3713751cb1ecac3163e857737107ca0e.1700737841.git.quic_jsuraj%40quicinc.com
patch subject: [PATCH net-next v3 3/3] net: stmmac: Add driver support for DWMAC5 fault IRQ Support
config: arm-defconfig (https://download.01.org/0day-ci/archive/20231124/[email protected]/config)
compiler: clang version 14.0.6 (https://github.com/llvm/llvm-project.git f28c006a5895fc0e329fe15fead81e37457cb1d1)
reproduce (this is a W=1 build): (https://download.01.org/0day-ci/archive/20231124/[email protected]/reproduce)
If you fix the issue in a separate patch/commit (i.e. not just a new version of
the same patch/commit), kindly add following tags
| Reported-by: kernel test robot <[email protected]>
| Closes: https://lore.kernel.org/oe-kbuild-all/[email protected]/
All warnings (new ones prefixed by >>):
>> drivers/net/ethernet/stmicro/stmmac/stmmac_platform.c:693:5: warning: no previous prototype for function 'stmmac_get_fault_intr_config' [-Wmissing-prototypes]
int stmmac_get_fault_intr_config(struct platform_device *pdev, struct stmmac_resources *res)
^
drivers/net/ethernet/stmicro/stmmac/stmmac_platform.c:693:1: note: declare 'static' if the function is not intended to be used outside of this translation unit
int stmmac_get_fault_intr_config(struct platform_device *pdev, struct stmmac_resources *res)
^
static
1 warning generated.
vim +/stmmac_get_fault_intr_config +693 drivers/net/ethernet/stmicro/stmmac/stmmac_platform.c
692
> 693 int stmmac_get_fault_intr_config(struct platform_device *pdev, struct stmmac_resources *res)
694 {
695 int ret = 0;
696
697 res->safety_common_intr = platform_get_irq_byname(pdev, "safety");
698
699 if (res->safety_common_intr < 0) {
700 if (res->safety_common_intr != -EPROBE_DEFER)
701 dev_err(&pdev->dev, "safety IRQ configuration information not found\n");
702 ret = 1;
703 }
704
705 return ret;
706 }
707
--
0-DAY CI Kernel Test Service
https://github.com/intel/lkp-tests/wiki
Hi Suraj,
kernel test robot noticed the following build errors:
[auto build test ERROR on net-next/main]
url: https://github.com/intel-lab-lkp/linux/commits/Suraj-Jaiswal/dt-bindings-net-qcom-ethqos-add-binding-doc-for-fault-IRQ-for-sa8775p/20231123-202252
base: net-next/main
patch link: https://lore.kernel.org/r/66690488f08912698301a2c203d7c562798806a2.1700737841.git.quic_jsuraj%40quicinc.com
patch subject: [PATCH net-next v3 2/3] arm64: dts: qcom: sa8775p: enable Fault IRQ
config: arm64-defconfig (https://download.01.org/0day-ci/archive/20231124/[email protected]/config)
compiler: aarch64-linux-gcc (GCC) 13.2.0
reproduce (this is a W=1 build): (https://download.01.org/0day-ci/archive/20231124/[email protected]/reproduce)
If you fix the issue in a separate patch/commit (i.e. not just a new version of
the same patch/commit), kindly add following tags
| Reported-by: kernel test robot <[email protected]>
| Closes: https://lore.kernel.org/oe-kbuild-all/[email protected]/
All errors (new ones prefixed by >>):
>> Error: arch/arm64/boot/dts/qcom/sa8775p.dtsi:2344.10-11 syntax error
FATAL ERROR: Unable to parse input tree
--
0-DAY CI Kernel Test Service
https://github.com/intel/lkp-tests/wiki
On Thu, Nov 23, 2023 at 05:08:15PM +0530, Suraj Jaiswal wrote:
> Add IRQ support to listen HW fault like ECC,DPP,FSM
> fault and print the fault information in the kernel
> log.
>
> Signed-off-by: Suraj Jaiswal <[email protected]>
> ---
> drivers/net/ethernet/stmicro/stmmac/common.h | 1 +
> drivers/net/ethernet/stmicro/stmmac/stmmac.h | 2 ++
> .../net/ethernet/stmicro/stmmac/stmmac_main.c | 18 +++++++++++++++++
> .../ethernet/stmicro/stmmac/stmmac_platform.c | 20 +++++++++++++++++++
> 4 files changed, 41 insertions(+)
>
> diff --git a/drivers/net/ethernet/stmicro/stmmac/common.h b/drivers/net/ethernet/stmicro/stmmac/common.h
> index 6b935922054d..c4821c7ab674 100644
> --- a/drivers/net/ethernet/stmicro/stmmac/common.h
> +++ b/drivers/net/ethernet/stmicro/stmmac/common.h
> @@ -347,6 +347,7 @@ enum request_irq_err {
> REQ_IRQ_ERR_SFTY_UE,
> REQ_IRQ_ERR_SFTY_CE,
> REQ_IRQ_ERR_LPI,
> + REQ_IRQ_ERR_SAFETY,
> REQ_IRQ_ERR_WOL,
> REQ_IRQ_ERR_MAC,
> REQ_IRQ_ERR_NO,
> diff --git a/drivers/net/ethernet/stmicro/stmmac/stmmac.h b/drivers/net/ethernet/stmicro/stmmac/stmmac.h
> index cd7a9768de5f..8893d4b7fa38 100644
> --- a/drivers/net/ethernet/stmicro/stmmac/stmmac.h
> +++ b/drivers/net/ethernet/stmicro/stmmac/stmmac.h
> @@ -33,6 +33,7 @@ struct stmmac_resources {
> int irq;
> int sfty_ce_irq;
> int sfty_ue_irq;
> + int safety_common_intr;
> int rx_irq[MTL_MAX_RX_QUEUES];
> int tx_irq[MTL_MAX_TX_QUEUES];
> };
> @@ -331,6 +332,7 @@ struct stmmac_priv {
> /* XDP BPF Program */
> unsigned long *af_xdp_zc_qps;
> struct bpf_prog *xdp_prog;
> + int safety_common_intr;
> };
>
> enum stmmac_state {
> diff --git a/drivers/net/ethernet/stmicro/stmmac/stmmac_main.c b/drivers/net/ethernet/stmicro/stmmac/stmmac_main.c
> index 8964fc8a955f..2ae4f34444de 100644
> --- a/drivers/net/ethernet/stmicro/stmmac/stmmac_main.c
> +++ b/drivers/net/ethernet/stmicro/stmmac/stmmac_main.c
> @@ -3530,6 +3530,10 @@ static void stmmac_free_irq(struct net_device *dev,
> if (priv->wol_irq > 0 && priv->wol_irq != dev->irq)
> free_irq(priv->wol_irq, dev);
> fallthrough;
> + case REQ_IRQ_ERR_SAFETY:
> + if (priv->safety_common_intr > 0 && priv->safety_common_intr != dev->irq)
> + free_irq(priv->safety_common_intr, dev);
> + fallthrough;
> case REQ_IRQ_ERR_WOL:
> free_irq(dev->irq, dev);
> fallthrough;
> @@ -3736,6 +3740,18 @@ static int stmmac_request_irq_single(struct net_device *dev)
> }
> }
>
> + if (priv->safety_common_intr > 0 && priv->safety_common_intr != dev->irq) {
> + ret = request_irq(priv->safety_common_intr, stmmac_safety_interrupt,
> + 0, "safety", dev);
> + if (unlikely(ret < 0)) {
> + netdev_err(priv->dev,
> + "%s: alloc safety failed %d (error: %d)\n",
> + __func__, priv->safety_common_intr, ret);
> + irq_err = REQ_IRQ_ERR_SAFETY;
> + goto irq_error;
> + }
> + }
> +
> return 0;
>
> irq_error:
> @@ -7398,6 +7414,8 @@ int stmmac_dvr_probe(struct device *device,
> priv->lpi_irq = res->lpi_irq;
> priv->sfty_ce_irq = res->sfty_ce_irq;
> priv->sfty_ue_irq = res->sfty_ue_irq;
> + priv->safety_common_intr = res->safety_common_intr;
> +
> for (i = 0; i < MTL_MAX_RX_QUEUES; i++)
> priv->rx_irq[i] = res->rx_irq[i];
> for (i = 0; i < MTL_MAX_TX_QUEUES; i++)
> diff --git a/drivers/net/ethernet/stmicro/stmmac/stmmac_platform.c b/drivers/net/ethernet/stmicro/stmmac/stmmac_platform.c
> index 1ffde555da47..bae1704d5f4b 100644
> --- a/drivers/net/ethernet/stmicro/stmmac/stmmac_platform.c
> +++ b/drivers/net/ethernet/stmicro/stmmac/stmmac_platform.c
> @@ -690,9 +690,25 @@ devm_stmmac_probe_config_dt(struct platform_device *pdev, u8 *mac)
> #endif /* CONFIG_OF */
> EXPORT_SYMBOL_GPL(devm_stmmac_probe_config_dt);
>
> +int stmmac_get_fault_intr_config(struct platform_device *pdev, struct stmmac_resources *res)
> +{
> + int ret = 0;
> +
> + res->safety_common_intr = platform_get_irq_byname(pdev, "safety");
> +
> + if (res->safety_common_intr < 0) {
> + if (res->safety_common_intr != -EPROBE_DEFER)
> + dev_err(&pdev->dev, "safety IRQ configuration information not found\n");
> + ret = 1;
> + }
> +
> + return ret;
> +}
I think other reviewers have covered most of what I want to say, but
I think this doesn't deserve its own function and should just be done
directly, as is done for eth_lpi for example. I think it also should be
considered an optional interrupt based on my understanding of its
purpose (just like eth_lpi).
> +
> int stmmac_get_platform_resources(struct platform_device *pdev,
> struct stmmac_resources *stmmac_res)
> {
> + int ret = 0;
> memset(stmmac_res, 0, sizeof(*stmmac_res));
>
> /* Get IRQ information early to have an ability to ask for deferred
> @@ -702,6 +718,10 @@ int stmmac_get_platform_resources(struct platform_device *pdev,
> if (stmmac_res->irq < 0)
> return stmmac_res->irq;
>
> + ret = stmmac_get_fault_intr_config(pdev, stmmac_res);
> + if (ret)
> + dev_err(&pdev->dev, "Fault interrupt not present\n");
> +
> /* On some platforms e.g. SPEAr the wake up irq differs from the mac irq
> * The external wake up irq can be passed through the platform code
> * named as "eth_wake_irq"
> --
> 2.25.1
>