[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID: <Y8Kv0GIk69MhcOjT@zn.tnic>
Date: Sat, 14 Jan 2023 14:36:16 +0100
From: Borislav Petkov <bp@...en8.de>
To: Manivannan Sadhasivam <manivannan.sadhasivam@...aro.org>
Cc: andersson@...nel.org, robh+dt@...nel.org,
krzysztof.kozlowski+dt@...aro.org, tony.luck@...el.com,
quic_saipraka@...cinc.com, konrad.dybcio@...aro.org,
linux-arm-msm@...r.kernel.org, linux-kernel@...r.kernel.org,
james.morse@....com, mchehab@...nel.org, rric@...nel.org,
linux-edac@...r.kernel.org, quic_ppareek@...cinc.com,
luca.weiss@...rphone.com, ahalaney@...hat.com, steev@...i.org
Subject: Re: [PATCH v5 16/17] qcom: llcc/edac: Support polling mode for ECC
handling
On Wed, Dec 28, 2022 at 02:10:27PM +0530, Manivannan Sadhasivam wrote:
> static int qcom_llcc_edac_probe(struct platform_device *pdev)
> {
> struct llcc_drv_data *llcc_driv_data = pdev->dev.platform_data;
> @@ -355,22 +361,31 @@ static int qcom_llcc_edac_probe(struct platform_device *pdev)
> edev_ctl->ctl_name = "llcc";
> edev_ctl->panic_on_ue = LLCC_ERP_PANIC_ON_UE;
>
> + /* Check if LLCC driver has passed ECC IRQ */
> + ecc_irq = llcc_driv_data->ecc_irq;
> + if (ecc_irq > 0) {
> + /* Use interrupt mode if IRQ is available */
> + edac_op_state = EDAC_OPSTATE_INT;
> + } else {
> + /* Fall back to polling mode otherwise */
> + edac_op_state = EDAC_OPSTATE_POLL;
> + edev_ctl->poll_msec = ECC_POLL_MSEC;
> + edev_ctl->edac_check = llcc_ecc_check;
> + }
> +
> rc = edac_device_add_device(edev_ctl);
> if (rc)
> goto out_mem;
>
> platform_set_drvdata(pdev, edev_ctl);
>
> - /* Request for ecc irq */
> - ecc_irq = llcc_driv_data->ecc_irq;
> - if (ecc_irq < 0) {
> - rc = -ENODEV;
> - goto out_dev;
> - }
> - rc = devm_request_irq(dev, ecc_irq, llcc_ecc_irq_handler,
> + /* Request ECC IRQ if available */
> + if (ecc_irq > 0) {
> + rc = devm_request_irq(dev, ecc_irq, llcc_ecc_irq_handler,
> IRQF_TRIGGER_HIGH, "llcc_ecc", edev_ctl);
You need to request the IRQ first and then set edac_op_state above. I.e., this
devm_request_irq() needs to move in the if (ecc_irq > 0) branch above.
--
Regards/Gruss,
Boris.
https://people.kernel.org/tglx/notes-about-netiquette
Powered by blists - more mailing lists