linux-kernel.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* [PATCH v2 0/2] Fixes for command errors during tuning
@ 2019-03-01  8:38 Faiz Abbas
  2019-03-01  8:38 ` [PATCH v2 1/2] mmc: sdhci: Add platform_cmd_err() to sdhci_ops Faiz Abbas
                   ` (2 more replies)
  0 siblings, 3 replies; 7+ messages in thread
From: Faiz Abbas @ 2019-03-01  8:38 UTC (permalink / raw)
  To: linux-kernel, linux-mmc, linux-omap
  Cc: ulf.hansson, kishon, adrian.hunter, faiz_abbas

These patches fix the following error message in dra7xx boards:

[4.833198] mmc1: Got data interrupt 0x00000002 even though no data
operation was in progress.

Tested with 100 times boot tests on dra71x-evm, dra72x-evm and
dra7xx-evm.

v2:
Added EXPORT_SYMBOL_GPL for sdhci_cmd_err and sdhci_send_command to fix
errors when built as module.

Faiz Abbas (2):
  mmc: sdhci: Add platform_cmd_err() to sdhci_ops
  mmc: sdhci-omap: Don't finish_mrq() on a command error during tuning

 drivers/mmc/host/sdhci-omap.c | 24 +++++++++++++++++++++
 drivers/mmc/host/sdhci.c      | 40 +++++++++++++++++++++++------------
 drivers/mmc/host/sdhci.h      |  4 ++++
 3 files changed, 54 insertions(+), 14 deletions(-)

-- 
2.19.2


^ permalink raw reply	[flat|nested] 7+ messages in thread

* [PATCH v2 1/2] mmc: sdhci: Add platform_cmd_err() to sdhci_ops
  2019-03-01  8:38 [PATCH v2 0/2] Fixes for command errors during tuning Faiz Abbas
@ 2019-03-01  8:38 ` Faiz Abbas
  2019-03-01  8:38 ` [PATCH v2 2/2] mmc: sdhci-omap: Don't finish_mrq() on a command error during tuning Faiz Abbas
  2019-03-06 10:18 ` [PATCH v2 0/2] Fixes for command errors " Faiz Abbas
  2 siblings, 0 replies; 7+ messages in thread
From: Faiz Abbas @ 2019-03-01  8:38 UTC (permalink / raw)
  To: linux-kernel, linux-mmc, linux-omap
  Cc: ulf.hansson, kishon, adrian.hunter, faiz_abbas

Some platforms might need a custom method for handling command error
interrupts. Add a callback to sdhci_ops to facilitate the same. Move
default command error handling to its own non-static function so it can
be called from platform drivers. Also make sdhci_finish_command()
non-static.

Fixes: 5b0d62108b46 ("mmc: sdhci-omap: Add platform specific reset
callback")
Signed-off-by: Faiz Abbas <faiz_abbas@ti.com>
---
 drivers/mmc/host/sdhci.c | 40 ++++++++++++++++++++++++++--------------
 drivers/mmc/host/sdhci.h |  4 ++++
 2 files changed, 30 insertions(+), 14 deletions(-)

diff --git a/drivers/mmc/host/sdhci.c b/drivers/mmc/host/sdhci.c
index a8141ff9be03..ff60b1830896 100644
--- a/drivers/mmc/host/sdhci.c
+++ b/drivers/mmc/host/sdhci.c
@@ -1445,7 +1445,7 @@ static void sdhci_read_rsp_136(struct sdhci_host *host, struct mmc_command *cmd)
 	}
 }
 
-static void sdhci_finish_command(struct sdhci_host *host)
+void sdhci_finish_command(struct sdhci_host *host)
 {
 	struct mmc_command *cmd = host->cmd;
 
@@ -1495,6 +1495,8 @@ static void sdhci_finish_command(struct sdhci_host *host)
 			sdhci_finish_mrq(host, cmd->mrq);
 	}
 }
+EXPORT_SYMBOL_GPL(sdhci_finish_command);
+
 
 static u16 sdhci_get_preset_value(struct sdhci_host *host)
 {
@@ -2780,6 +2782,26 @@ static void sdhci_timeout_data_timer(struct timer_list *t)
  *                                                                           *
 \*****************************************************************************/
 
+void sdhci_cmd_err(struct sdhci_host *host, u32 intmask, u32 *intmask_p)
+{
+		if (intmask & SDHCI_INT_TIMEOUT)
+			host->cmd->error = -ETIMEDOUT;
+		else
+			host->cmd->error = -EILSEQ;
+
+		/* Treat data command CRC error the same as data CRC error */
+		if (host->cmd->data &&
+		    (intmask & (SDHCI_INT_CRC | SDHCI_INT_TIMEOUT)) ==
+		     SDHCI_INT_CRC) {
+			host->cmd = NULL;
+			*intmask_p |= SDHCI_INT_DATA_CRC;
+			return;
+		}
+
+		sdhci_finish_mrq(host, host->cmd->mrq);
+}
+EXPORT_SYMBOL_GPL(sdhci_cmd_err);
+
 static void sdhci_cmd_irq(struct sdhci_host *host, u32 intmask, u32 *intmask_p)
 {
 	/* Handle auto-CMD12 error */
@@ -2813,21 +2835,11 @@ static void sdhci_cmd_irq(struct sdhci_host *host, u32 intmask, u32 *intmask_p)
 
 	if (intmask & (SDHCI_INT_TIMEOUT | SDHCI_INT_CRC |
 		       SDHCI_INT_END_BIT | SDHCI_INT_INDEX)) {
-		if (intmask & SDHCI_INT_TIMEOUT)
-			host->cmd->error = -ETIMEDOUT;
+		if (host->ops->platform_cmd_err)
+			host->ops->platform_cmd_err(host, intmask, intmask_p);
 		else
-			host->cmd->error = -EILSEQ;
-
-		/* Treat data command CRC error the same as data CRC error */
-		if (host->cmd->data &&
-		    (intmask & (SDHCI_INT_CRC | SDHCI_INT_TIMEOUT)) ==
-		     SDHCI_INT_CRC) {
-			host->cmd = NULL;
-			*intmask_p |= SDHCI_INT_DATA_CRC;
-			return;
-		}
+			sdhci_cmd_err(host, intmask, intmask_p);
 
-		sdhci_finish_mrq(host, host->cmd->mrq);
 		return;
 	}
 
diff --git a/drivers/mmc/host/sdhci.h b/drivers/mmc/host/sdhci.h
index 01002cba1359..ca427d8efc29 100644
--- a/drivers/mmc/host/sdhci.h
+++ b/drivers/mmc/host/sdhci.h
@@ -645,6 +645,8 @@ struct sdhci_ops {
 	void	(*voltage_switch)(struct sdhci_host *host);
 	void	(*adma_write_desc)(struct sdhci_host *host, void **desc,
 				   dma_addr_t addr, int len, unsigned int cmd);
+	void	(*platform_cmd_err)(struct sdhci_host *host, u32 intmask,
+				    u32 *intmask_p);
 };
 
 #ifdef CONFIG_MMC_SDHCI_IO_ACCESSORS
@@ -798,5 +800,7 @@ void sdhci_start_tuning(struct sdhci_host *host);
 void sdhci_end_tuning(struct sdhci_host *host);
 void sdhci_reset_tuning(struct sdhci_host *host);
 void sdhci_send_tuning(struct sdhci_host *host, u32 opcode);
+void sdhci_cmd_err(struct sdhci_host *host, u32 intmask, u32 *intmask_p);
+void sdhci_finish_command(struct sdhci_host *host);
 
 #endif /* __SDHCI_HW_H */
-- 
2.19.2


^ permalink raw reply related	[flat|nested] 7+ messages in thread

* [PATCH v2 2/2] mmc: sdhci-omap: Don't finish_mrq() on a command error during tuning
  2019-03-01  8:38 [PATCH v2 0/2] Fixes for command errors during tuning Faiz Abbas
  2019-03-01  8:38 ` [PATCH v2 1/2] mmc: sdhci: Add platform_cmd_err() to sdhci_ops Faiz Abbas
@ 2019-03-01  8:38 ` Faiz Abbas
  2019-03-06 12:09   ` Adrian Hunter
  2019-03-06 10:18 ` [PATCH v2 0/2] Fixes for command errors " Faiz Abbas
  2 siblings, 1 reply; 7+ messages in thread
From: Faiz Abbas @ 2019-03-01  8:38 UTC (permalink / raw)
  To: linux-kernel, linux-mmc, linux-omap
  Cc: ulf.hansson, kishon, adrian.hunter, faiz_abbas

commit 5b0d62108b46 ("mmc: sdhci-omap: Add platform specific reset
callback") skips data resets during tuning operation. Because of this,
a data error or data finish interrupt might still arrive after a command
error has been handled and the mrq ended. This ends up with a "mmc0: Got
data interrupt 0x00000002 even though no data operation was in progress"
error message.

Fix this by adding a platform specific callback for command errors. Mark
the mrq as a failure but wait for a data interrupt instead of calling
finish_mrq().

Fixes: 5b0d62108b46 ("mmc: sdhci-omap: Add platform specific reset
callback")
Signed-off-by: Faiz Abbas <faiz_abbas@ti.com>
---
 drivers/mmc/host/sdhci-omap.c | 24 ++++++++++++++++++++++++
 1 file changed, 24 insertions(+)

diff --git a/drivers/mmc/host/sdhci-omap.c b/drivers/mmc/host/sdhci-omap.c
index b1a66ca3821a..67b361a403bc 100644
--- a/drivers/mmc/host/sdhci-omap.c
+++ b/drivers/mmc/host/sdhci-omap.c
@@ -797,6 +797,29 @@ void sdhci_omap_reset(struct sdhci_host *host, u8 mask)
 	sdhci_reset(host, mask);
 }
 
+void sdhci_omap_cmd_err(struct sdhci_host *host, u32 intmask, u32 *intmask_p)
+{
+	struct sdhci_pltfm_host *pltfm_host = sdhci_priv(host);
+	struct sdhci_omap_host *omap_host = sdhci_pltfm_priv(pltfm_host);
+
+	if (omap_host->is_tuning) {
+		/*
+		 * Since we are not resetting data lines during tuning
+		 * operation, data error or data complete interrupts
+		 * might still arrive. Mark this request as a failure
+		 * but still wait for the data interrupt
+		 */
+		if (intmask & SDHCI_INT_TIMEOUT)
+			host->cmd->error = -ETIMEDOUT;
+		else
+			host->cmd->error = -EILSEQ;
+
+		sdhci_finish_command(host);
+	} else {
+		sdhci_cmd_err(host, intmask, intmask_p);
+	}
+}
+
 static struct sdhci_ops sdhci_omap_ops = {
 	.set_clock = sdhci_omap_set_clock,
 	.set_power = sdhci_omap_set_power,
@@ -807,6 +830,7 @@ static struct sdhci_ops sdhci_omap_ops = {
 	.platform_send_init_74_clocks = sdhci_omap_init_74_clocks,
 	.reset = sdhci_omap_reset,
 	.set_uhs_signaling = sdhci_omap_set_uhs_signaling,
+	.platform_cmd_err = sdhci_omap_cmd_err,
 };
 
 static int sdhci_omap_set_capabilities(struct sdhci_omap_host *omap_host)
-- 
2.19.2


^ permalink raw reply related	[flat|nested] 7+ messages in thread

* Re: [PATCH v2 0/2] Fixes for command errors during tuning
  2019-03-01  8:38 [PATCH v2 0/2] Fixes for command errors during tuning Faiz Abbas
  2019-03-01  8:38 ` [PATCH v2 1/2] mmc: sdhci: Add platform_cmd_err() to sdhci_ops Faiz Abbas
  2019-03-01  8:38 ` [PATCH v2 2/2] mmc: sdhci-omap: Don't finish_mrq() on a command error during tuning Faiz Abbas
@ 2019-03-06 10:18 ` Faiz Abbas
  2 siblings, 0 replies; 7+ messages in thread
From: Faiz Abbas @ 2019-03-06 10:18 UTC (permalink / raw)
  To: linux-kernel, linux-mmc, linux-omap; +Cc: ulf.hansson, kishon, adrian.hunter

Hi,

On 01/03/19 2:08 PM, Faiz Abbas wrote:
> These patches fix the following error message in dra7xx boards:
> 
> [4.833198] mmc1: Got data interrupt 0x00000002 even though no data
> operation was in progress.
> 
> Tested with 100 times boot tests on dra71x-evm, dra72x-evm and
> dra7xx-evm.
> 
> v2:
> Added EXPORT_SYMBOL_GPL for sdhci_cmd_err and sdhci_send_command to fix
> errors when built as module.
> 
> Faiz Abbas (2):
>   mmc: sdhci: Add platform_cmd_err() to sdhci_ops
>   mmc: sdhci-omap: Don't finish_mrq() on a command error during tuning
> 
>  drivers/mmc/host/sdhci-omap.c | 24 +++++++++++++++++++++
>  drivers/mmc/host/sdhci.c      | 40 +++++++++++++++++++++++------------
>  drivers/mmc/host/sdhci.h      |  4 ++++
>  3 files changed, 54 insertions(+), 14 deletions(-)
>

Gentle ping.

Thanks,
Faiz


^ permalink raw reply	[flat|nested] 7+ messages in thread

* Re: [PATCH v2 2/2] mmc: sdhci-omap: Don't finish_mrq() on a command error during tuning
  2019-03-01  8:38 ` [PATCH v2 2/2] mmc: sdhci-omap: Don't finish_mrq() on a command error during tuning Faiz Abbas
@ 2019-03-06 12:09   ` Adrian Hunter
  2019-03-12 17:34     ` Rizvi, Mohammad Faiz Abbas
  0 siblings, 1 reply; 7+ messages in thread
From: Adrian Hunter @ 2019-03-06 12:09 UTC (permalink / raw)
  To: Faiz Abbas, linux-kernel, linux-mmc, linux-omap; +Cc: ulf.hansson, kishon

On 1/03/19 10:38 AM, Faiz Abbas wrote:
> commit 5b0d62108b46 ("mmc: sdhci-omap: Add platform specific reset
> callback") skips data resets during tuning operation. Because of this,
> a data error or data finish interrupt might still arrive after a command
> error has been handled and the mrq ended. This ends up with a "mmc0: Got
> data interrupt 0x00000002 even though no data operation was in progress"
> error message.
> 
> Fix this by adding a platform specific callback for command errors. Mark
> the mrq as a failure but wait for a data interrupt instead of calling
> finish_mrq().
> 
> Fixes: 5b0d62108b46 ("mmc: sdhci-omap: Add platform specific reset
> callback")
> Signed-off-by: Faiz Abbas <faiz_abbas@ti.com>
> ---
>  drivers/mmc/host/sdhci-omap.c | 24 ++++++++++++++++++++++++
>  1 file changed, 24 insertions(+)
> 
> diff --git a/drivers/mmc/host/sdhci-omap.c b/drivers/mmc/host/sdhci-omap.c
> index b1a66ca3821a..67b361a403bc 100644
> --- a/drivers/mmc/host/sdhci-omap.c
> +++ b/drivers/mmc/host/sdhci-omap.c
> @@ -797,6 +797,29 @@ void sdhci_omap_reset(struct sdhci_host *host, u8 mask)
>  	sdhci_reset(host, mask);
>  }
>  
> +void sdhci_omap_cmd_err(struct sdhci_host *host, u32 intmask, u32 *intmask_p)
> +{
> +	struct sdhci_pltfm_host *pltfm_host = sdhci_priv(host);
> +	struct sdhci_omap_host *omap_host = sdhci_pltfm_priv(pltfm_host);
> +
> +	if (omap_host->is_tuning) {
> +		/*
> +		 * Since we are not resetting data lines during tuning
> +		 * operation, data error or data complete interrupts
> +		 * might still arrive. Mark this request as a failure
> +		 * but still wait for the data interrupt
> +		 */
> +		if (intmask & SDHCI_INT_TIMEOUT)
> +			host->cmd->error = -ETIMEDOUT;
> +		else
> +			host->cmd->error = -EILSEQ;
> +
> +		sdhci_finish_command(host);
> +	} else {
> +		sdhci_cmd_err(host, intmask, intmask_p);
> +	}
> +}

Could this be done by the existing ->irq() callback? i.e. mask the error
bits in intmask (have to write them back to SDHCI_INT_STATUS also) but set
cmd->error.

^ permalink raw reply	[flat|nested] 7+ messages in thread

* Re: [PATCH v2 2/2] mmc: sdhci-omap: Don't finish_mrq() on a command error during tuning
  2019-03-06 12:09   ` Adrian Hunter
@ 2019-03-12 17:34     ` Rizvi, Mohammad Faiz Abbas
  2019-03-13  9:35       ` Hunter, Adrian
  0 siblings, 1 reply; 7+ messages in thread
From: Rizvi, Mohammad Faiz Abbas @ 2019-03-12 17:34 UTC (permalink / raw)
  To: Adrian Hunter, linux-kernel, linux-mmc, linux-omap; +Cc: ulf.hansson, kishon

Hi Adrian,

On 3/6/2019 5:39 PM, Adrian Hunter wrote:
> On 1/03/19 10:38 AM, Faiz Abbas wrote:
>> commit 5b0d62108b46 ("mmc: sdhci-omap: Add platform specific reset
>> callback") skips data resets during tuning operation. Because of this,
>> a data error or data finish interrupt might still arrive after a command
>> error has been handled and the mrq ended. This ends up with a "mmc0: Got
>> data interrupt 0x00000002 even though no data operation was in progress"
>> error message.
>>
>> Fix this by adding a platform specific callback for command errors. Mark
>> the mrq as a failure but wait for a data interrupt instead of calling
>> finish_mrq().
>>
>> Fixes: 5b0d62108b46 ("mmc: sdhci-omap: Add platform specific reset
>> callback")
>> Signed-off-by: Faiz Abbas <faiz_abbas@ti.com>
>> ---
>>  drivers/mmc/host/sdhci-omap.c | 24 ++++++++++++++++++++++++
>>  1 file changed, 24 insertions(+)
>>
>> diff --git a/drivers/mmc/host/sdhci-omap.c b/drivers/mmc/host/sdhci-omap.c
>> index b1a66ca3821a..67b361a403bc 100644
>> --- a/drivers/mmc/host/sdhci-omap.c
>> +++ b/drivers/mmc/host/sdhci-omap.c
>> @@ -797,6 +797,29 @@ void sdhci_omap_reset(struct sdhci_host *host, u8 mask)
>>  	sdhci_reset(host, mask);
>>  }
>>  
>> +void sdhci_omap_cmd_err(struct sdhci_host *host, u32 intmask, u32 *intmask_p)
>> +{
>> +	struct sdhci_pltfm_host *pltfm_host = sdhci_priv(host);
>> +	struct sdhci_omap_host *omap_host = sdhci_pltfm_priv(pltfm_host);
>> +
>> +	if (omap_host->is_tuning) {
>> +		/*
>> +		 * Since we are not resetting data lines during tuning
>> +		 * operation, data error or data complete interrupts
>> +		 * might still arrive. Mark this request as a failure
>> +		 * but still wait for the data interrupt
>> +		 */
>> +		if (intmask & SDHCI_INT_TIMEOUT)
>> +			host->cmd->error = -ETIMEDOUT;
>> +		else
>> +			host->cmd->error = -EILSEQ;
>> +
>> +		sdhci_finish_command(host);
>> +	} else {
>> +		sdhci_cmd_err(host, intmask, intmask_p);
>> +	}
>> +}
> 
> Could this be done by the existing ->irq() callback? i.e. mask the error
> bits in intmask (have to write them back to SDHCI_INT_STATUS also) but set
> cmd->error.
> 

It is possible but I really don't want the callback to be unnecessarily
called for every single interrupt that happens. I think we should only
use the callback in the case of an actual error interrupt :-)

Thanks,
Faiz

^ permalink raw reply	[flat|nested] 7+ messages in thread

* RE: [PATCH v2 2/2] mmc: sdhci-omap: Don't finish_mrq() on a command error during tuning
  2019-03-12 17:34     ` Rizvi, Mohammad Faiz Abbas
@ 2019-03-13  9:35       ` Hunter, Adrian
  0 siblings, 0 replies; 7+ messages in thread
From: Hunter, Adrian @ 2019-03-13  9:35 UTC (permalink / raw)
  To: Rizvi, Mohammad Faiz Abbas, linux-kernel, linux-mmc, linux-omap
  Cc: ulf.hansson, kishon

> -----Original Message-----
> From: Rizvi, Mohammad Faiz Abbas [mailto:faiz_abbas@ti.com]
> Sent: Tuesday, March 12, 2019 7:35 PM
> To: Hunter, Adrian <adrian.hunter@intel.com>; linux-
> kernel@vger.kernel.org; linux-mmc@vger.kernel.org; linux-
> omap@vger.kernel.org
> Cc: ulf.hansson@linaro.org; kishon@ti.com
> Subject: Re: [PATCH v2 2/2] mmc: sdhci-omap: Don't finish_mrq() on a
> command error during tuning
> 
> Hi Adrian,
> 
> On 3/6/2019 5:39 PM, Adrian Hunter wrote:
> > On 1/03/19 10:38 AM, Faiz Abbas wrote:
> >> commit 5b0d62108b46 ("mmc: sdhci-omap: Add platform specific reset
> >> callback") skips data resets during tuning operation. Because of
> >> this, a data error or data finish interrupt might still arrive after
> >> a command error has been handled and the mrq ended. This ends up with
> >> a "mmc0: Got data interrupt 0x00000002 even though no data operation
> was in progress"
> >> error message.
> >>
> >> Fix this by adding a platform specific callback for command errors.
> >> Mark the mrq as a failure but wait for a data interrupt instead of
> >> calling finish_mrq().
> >>
> >> Fixes: 5b0d62108b46 ("mmc: sdhci-omap: Add platform specific reset
> >> callback")
> >> Signed-off-by: Faiz Abbas <faiz_abbas@ti.com>
> >> ---
> >>  drivers/mmc/host/sdhci-omap.c | 24 ++++++++++++++++++++++++
> >>  1 file changed, 24 insertions(+)
> >>
> >> diff --git a/drivers/mmc/host/sdhci-omap.c
> >> b/drivers/mmc/host/sdhci-omap.c index b1a66ca3821a..67b361a403bc
> >> 100644
> >> --- a/drivers/mmc/host/sdhci-omap.c
> >> +++ b/drivers/mmc/host/sdhci-omap.c
> >> @@ -797,6 +797,29 @@ void sdhci_omap_reset(struct sdhci_host *host,
> u8 mask)
> >>  	sdhci_reset(host, mask);
> >>  }
> >>
> >> +void sdhci_omap_cmd_err(struct sdhci_host *host, u32 intmask, u32
> >> +*intmask_p) {
> >> +	struct sdhci_pltfm_host *pltfm_host = sdhci_priv(host);
> >> +	struct sdhci_omap_host *omap_host =
> sdhci_pltfm_priv(pltfm_host);
> >> +
> >> +	if (omap_host->is_tuning) {
> >> +		/*
> >> +		 * Since we are not resetting data lines during tuning
> >> +		 * operation, data error or data complete interrupts
> >> +		 * might still arrive. Mark this request as a failure
> >> +		 * but still wait for the data interrupt
> >> +		 */
> >> +		if (intmask & SDHCI_INT_TIMEOUT)
> >> +			host->cmd->error = -ETIMEDOUT;
> >> +		else
> >> +			host->cmd->error = -EILSEQ;
> >> +
> >> +		sdhci_finish_command(host);
> >> +	} else {
> >> +		sdhci_cmd_err(host, intmask, intmask_p);
> >> +	}
> >> +}
> >
> > Could this be done by the existing ->irq() callback? i.e. mask the
> > error bits in intmask (have to write them back to SDHCI_INT_STATUS
> > also) but set
> > cmd->error.
> >
> 
> It is possible but I really don't want the callback to be unnecessarily called for
> every single interrupt that happens. I think we should only use the callback in
> the case of an actual error interrupt :-)

You mean for performance reasons?  I would have thought it would be
only a handful of cycles to call into a function, find nothing to do, and return.
That should be negligible compared to the rest of the interrupt handler.
If that is the concern, then it might be worth measuring it.


^ permalink raw reply	[flat|nested] 7+ messages in thread

end of thread, other threads:[~2019-03-13  9:35 UTC | newest]

Thread overview: 7+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2019-03-01  8:38 [PATCH v2 0/2] Fixes for command errors during tuning Faiz Abbas
2019-03-01  8:38 ` [PATCH v2 1/2] mmc: sdhci: Add platform_cmd_err() to sdhci_ops Faiz Abbas
2019-03-01  8:38 ` [PATCH v2 2/2] mmc: sdhci-omap: Don't finish_mrq() on a command error during tuning Faiz Abbas
2019-03-06 12:09   ` Adrian Hunter
2019-03-12 17:34     ` Rizvi, Mohammad Faiz Abbas
2019-03-13  9:35       ` Hunter, Adrian
2019-03-06 10:18 ` [PATCH v2 0/2] Fixes for command errors " Faiz Abbas

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).