From: "mika.westerberg@linux.intel.com" <mika.westerberg@linux.intel.com>
To: "Khandelwal, Rajat" <rajat.khandelwal@intel.com>
Cc: "linux-kernel@vger.kernel.org" <linux-kernel@vger.kernel.org>,
"platform-driver-x86@vger.kernel.org"
<platform-driver-x86@vger.kernel.org>
Subject: Re: [PATCH] Keep polling IPC status if it reads IPC_STATUS_BUSY or IPC_STATUS_ERR until timeout expires
Date: Wed, 29 Dec 2021 18:19:45 +0200 [thread overview]
Message-ID: <YcyKoZyBFzRtwRMm@lahna> (raw)
In-Reply-To: <CO1PR11MB4835D217B78F17BA6AD79F0096449@CO1PR11MB4835.namprd11.prod.outlook.com>
Hi,
Now I got it.
Please run checkpatch.pl and fix all the issues it reports, and change
the $subject line to match the style in that file and then re-send.
Thanks!
On Wed, Dec 29, 2021 at 06:13:56PM +0200, Khandelwal, Rajat wrote:
> Hi @Westerberg, Mika
> This was the original message!
>
> -----Original Message-----
> From: Khandelwal, Rajat <rajat.khandelwal@intel.com>
> Sent: Wednesday, December 29, 2021 7:00 PM
> To: mika.westerberg@linux.intel.com
> Cc: Khandelwal, Rajat <rajat.khandelwal@intel.com>; linux-kernel@vger.kernel.org; platform-driver-x86@vger.kernel.org
> Subject: [PATCH] Keep polling IPC status if it reads IPC_STATUS_BUSY or IPC_STATUS_ERR until timeout expires
>
> The current implementation returns -EIO if and when IPC_STATUS_ERR is returned and returns -ETIMEDOUT even if the status is busy.
> This patch polls the IPC status even if IPC_STATUS_ERR is returned until timeout expires and returns -EBUSY if the status shows busy.
> Observed in multiple scenarios, trying to fetch the status of IPC after it shows ERR sometimes eradicates the ERR status.
>
> Signed-off-by: Rajat-Khandelwal <rajat.khandelwal@intel.com>
> ---
> drivers/platform/x86/intel_scu_ipc.c | 8 +++++---
> 1 file changed, 5 insertions(+), 3 deletions(-)
>
> diff --git a/drivers/platform/x86/intel_scu_ipc.c b/drivers/platform/x86/intel_scu_ipc.c
> index 7cc9089d1e14..91f716e84474 100644
> --- a/drivers/platform/x86/intel_scu_ipc.c
> +++ b/drivers/platform/x86/intel_scu_ipc.c
> @@ -233,17 +233,19 @@ static inline u32 ipc_data_readl(struct intel_scu_ipc_dev *scu, u32 offset) static inline int busy_loop(struct intel_scu_ipc_dev *scu) {
> unsigned long end = jiffies + IPC_TIMEOUT;
> + u32 status;
>
> do {
> - u32 status;
> -
> status = ipc_read_status(scu);
> if (!(status & IPC_STATUS_BUSY)) {
> - return (status & IPC_STATUS_ERR) ? -EIO : 0;
> + if (!(status & IPC_STATUS_ERR))
> + return 0;
> + }
>
> usleep_range(50, 100);
> } while (time_before(jiffies, end));
>
> + if (status & IPC_STATUS_BUSY)
> + return -EBUSY;
> + if (status & IPC_STATUS_ERR)
> + return -EIO;
> +
> return -ETIMEDOUT;
> }
>
> --
> 2.17.1
prev parent reply other threads:[~2021-12-29 16:19 UTC|newest]
Thread overview: 2+ messages / expand[flat|nested] mbox.gz Atom feed top
[not found] <20211229132948.4738-1-rajat.khandelwal@intel.com>
2021-12-29 16:13 ` [PATCH] Keep polling IPC status if it reads IPC_STATUS_BUSY or IPC_STATUS_ERR until timeout expires Khandelwal, Rajat
2021-12-29 16:19 ` mika.westerberg [this message]
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=YcyKoZyBFzRtwRMm@lahna \
--to=mika.westerberg@linux.intel.com \
--cc=linux-kernel@vger.kernel.org \
--cc=platform-driver-x86@vger.kernel.org \
--cc=rajat.khandelwal@intel.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.