All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH] mmc: dw_mmc: fix the spamming log message
@ 2016-09-22  5:12 ` Jaehoon Chung
  2016-09-22  5:14   ` Jaehoon Chung
  2016-09-22  9:39   ` Ulf Hansson
  0 siblings, 2 replies; 3+ messages in thread
From: Jaehoon Chung @ 2016-09-22  5:12 UTC (permalink / raw)
  To: linux-mmc; +Cc: ulf.hansson, Jaehoon Chung

When there is no Card which is set to "broken-cd", it's displayed a clock
information continuously. Because it's polling for detecting card.
This patch is fixed this problem.

Fixed 'commit 65257a0deed5
("mmc: dw_mmc: remove UBSAN warning in dw_mci_setup_bus()")'

Reported-by: Tobias Jakobi <tjakobi@math.uni-bielefeld.de>
Signed-off-by: Jaehoon Chung <jh80.chung@samsung.com>
---
 drivers/mmc/host/dw_mmc.c | 14 +++++++++-----
 drivers/mmc/host/dw_mmc.h |  3 +++
 2 files changed, 12 insertions(+), 5 deletions(-)

diff --git a/drivers/mmc/host/dw_mmc.c b/drivers/mmc/host/dw_mmc.c
index 32380d5..767af20 100644
--- a/drivers/mmc/host/dw_mmc.c
+++ b/drivers/mmc/host/dw_mmc.c
@@ -1112,11 +1112,12 @@ static void dw_mci_setup_bus(struct dw_mci_slot *slot, bool force_clkinit)
 
 		div = (host->bus_hz != clock) ? DIV_ROUND_UP(div, 2) : 0;
 
-		dev_info(&slot->mmc->class_dev,
-			 "Bus speed (slot %d) = %dHz (slot req %dHz, actual %dHZ div = %d)\n",
-			 slot->id, host->bus_hz, clock,
-			 div ? ((host->bus_hz / div) >> 1) :
-			 host->bus_hz, div);
+		if (clock != slot->__clk_old || force_clkinit)
+			dev_info(&slot->mmc->class_dev,
+				 "Bus speed (slot %d) = %dHz (slot req %dHz, actual %dHZ div = %d)\n",
+				 slot->id, host->bus_hz, clock,
+				 div ? ((host->bus_hz / div) >> 1) :
+				 host->bus_hz, div);
 
 		/* disable clock */
 		mci_writel(host, CLKENA, 0);
@@ -1139,6 +1140,9 @@ static void dw_mci_setup_bus(struct dw_mci_slot *slot, bool force_clkinit)
 
 		/* inform CIU */
 		mci_send_cmd(slot, sdmmc_cmd_bits, 0);
+
+		/* keep the last clock value that was requested from core */
+		slot->__clk_old = clock;
 	}
 
 	host->current_speed = clock;
diff --git a/drivers/mmc/host/dw_mmc.h b/drivers/mmc/host/dw_mmc.h
index 9e740bc..e8cd2de 100644
--- a/drivers/mmc/host/dw_mmc.h
+++ b/drivers/mmc/host/dw_mmc.h
@@ -249,6 +249,8 @@ extern int dw_mci_resume(struct dw_mci *host);
  * @queue_node: List node for placing this node in the @queue list of
  *	&struct dw_mci.
  * @clock: Clock rate configured by set_ios(). Protected by host->lock.
+ * @__clk_old: The last clock value that was requested from core.
+ *	Keeping track of this helps us to avoid spamming the console.
  * @flags: Random state bits associated with the slot.
  * @id: Number of this slot.
  * @sdio_id: Number of this slot in the SDIO interrupt registers.
@@ -263,6 +265,7 @@ struct dw_mci_slot {
 	struct list_head	queue_node;
 
 	unsigned int		clock;
+	unsigned int		__clk_old;
 
 	unsigned long		flags;
 #define DW_MMC_CARD_PRESENT	0
-- 
1.9.1


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

* Re: [PATCH] mmc: dw_mmc: fix the spamming log message
  2016-09-22  5:12 ` [PATCH] mmc: dw_mmc: fix the spamming log message Jaehoon Chung
@ 2016-09-22  5:14   ` Jaehoon Chung
  2016-09-22  9:39   ` Ulf Hansson
  1 sibling, 0 replies; 3+ messages in thread
From: Jaehoon Chung @ 2016-09-22  5:14 UTC (permalink / raw)
  To: linux-mmc; +Cc: ulf.hansson

Dear Ulf,

On 09/22/2016 02:12 PM, Jaehoon Chung wrote:
> When there is no Card which is set to "broken-cd", it's displayed a clock
> information continuously. Because it's polling for detecting card.
> This patch is fixed this problem.

Could you pick this on your fixes branch? (Is it too late?)

Best Regards,
Jaehoon Chung

> 
> Fixed 'commit 65257a0deed5
> ("mmc: dw_mmc: remove UBSAN warning in dw_mci_setup_bus()")'
> 
> Reported-by: Tobias Jakobi <tjakobi@math.uni-bielefeld.de>
> Signed-off-by: Jaehoon Chung <jh80.chung@samsung.com>
> ---
>  drivers/mmc/host/dw_mmc.c | 14 +++++++++-----
>  drivers/mmc/host/dw_mmc.h |  3 +++
>  2 files changed, 12 insertions(+), 5 deletions(-)
> 
> diff --git a/drivers/mmc/host/dw_mmc.c b/drivers/mmc/host/dw_mmc.c
> index 32380d5..767af20 100644
> --- a/drivers/mmc/host/dw_mmc.c
> +++ b/drivers/mmc/host/dw_mmc.c
> @@ -1112,11 +1112,12 @@ static void dw_mci_setup_bus(struct dw_mci_slot *slot, bool force_clkinit)
>  
>  		div = (host->bus_hz != clock) ? DIV_ROUND_UP(div, 2) : 0;
>  
> -		dev_info(&slot->mmc->class_dev,
> -			 "Bus speed (slot %d) = %dHz (slot req %dHz, actual %dHZ div = %d)\n",
> -			 slot->id, host->bus_hz, clock,
> -			 div ? ((host->bus_hz / div) >> 1) :
> -			 host->bus_hz, div);
> +		if (clock != slot->__clk_old || force_clkinit)
> +			dev_info(&slot->mmc->class_dev,
> +				 "Bus speed (slot %d) = %dHz (slot req %dHz, actual %dHZ div = %d)\n",
> +				 slot->id, host->bus_hz, clock,
> +				 div ? ((host->bus_hz / div) >> 1) :
> +				 host->bus_hz, div);
>  
>  		/* disable clock */
>  		mci_writel(host, CLKENA, 0);
> @@ -1139,6 +1140,9 @@ static void dw_mci_setup_bus(struct dw_mci_slot *slot, bool force_clkinit)
>  
>  		/* inform CIU */
>  		mci_send_cmd(slot, sdmmc_cmd_bits, 0);
> +
> +		/* keep the last clock value that was requested from core */
> +		slot->__clk_old = clock;
>  	}
>  
>  	host->current_speed = clock;
> diff --git a/drivers/mmc/host/dw_mmc.h b/drivers/mmc/host/dw_mmc.h
> index 9e740bc..e8cd2de 100644
> --- a/drivers/mmc/host/dw_mmc.h
> +++ b/drivers/mmc/host/dw_mmc.h
> @@ -249,6 +249,8 @@ extern int dw_mci_resume(struct dw_mci *host);
>   * @queue_node: List node for placing this node in the @queue list of
>   *	&struct dw_mci.
>   * @clock: Clock rate configured by set_ios(). Protected by host->lock.
> + * @__clk_old: The last clock value that was requested from core.
> + *	Keeping track of this helps us to avoid spamming the console.
>   * @flags: Random state bits associated with the slot.
>   * @id: Number of this slot.
>   * @sdio_id: Number of this slot in the SDIO interrupt registers.
> @@ -263,6 +265,7 @@ struct dw_mci_slot {
>  	struct list_head	queue_node;
>  
>  	unsigned int		clock;
> +	unsigned int		__clk_old;
>  
>  	unsigned long		flags;
>  #define DW_MMC_CARD_PRESENT	0
> 


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

* Re: [PATCH] mmc: dw_mmc: fix the spamming log message
  2016-09-22  5:12 ` [PATCH] mmc: dw_mmc: fix the spamming log message Jaehoon Chung
  2016-09-22  5:14   ` Jaehoon Chung
@ 2016-09-22  9:39   ` Ulf Hansson
  1 sibling, 0 replies; 3+ messages in thread
From: Ulf Hansson @ 2016-09-22  9:39 UTC (permalink / raw)
  To: Jaehoon Chung; +Cc: linux-mmc

On 22 September 2016 at 07:12, Jaehoon Chung <jh80.chung@samsung.com> wrote:
> When there is no Card which is set to "broken-cd", it's displayed a clock
> information continuously. Because it's polling for detecting card.
> This patch is fixed this problem.
>
> Fixed 'commit 65257a0deed5
> ("mmc: dw_mmc: remove UBSAN warning in dw_mci_setup_bus()")'
>
> Reported-by: Tobias Jakobi <tjakobi@math.uni-bielefeld.de>
> Signed-off-by: Jaehoon Chung <jh80.chung@samsung.com>

Thanks, applied for fixes!

I added a formal fixes tag from above.
Fixes: 65257a0deed5 ("mmc: dw_mmc: remove UBSAN warning in dw_mci_setup_bus()")

Kind regards
Uffe

> ---
>  drivers/mmc/host/dw_mmc.c | 14 +++++++++-----
>  drivers/mmc/host/dw_mmc.h |  3 +++
>  2 files changed, 12 insertions(+), 5 deletions(-)
>
> diff --git a/drivers/mmc/host/dw_mmc.c b/drivers/mmc/host/dw_mmc.c
> index 32380d5..767af20 100644
> --- a/drivers/mmc/host/dw_mmc.c
> +++ b/drivers/mmc/host/dw_mmc.c
> @@ -1112,11 +1112,12 @@ static void dw_mci_setup_bus(struct dw_mci_slot *slot, bool force_clkinit)
>
>                 div = (host->bus_hz != clock) ? DIV_ROUND_UP(div, 2) : 0;
>
> -               dev_info(&slot->mmc->class_dev,
> -                        "Bus speed (slot %d) = %dHz (slot req %dHz, actual %dHZ div = %d)\n",
> -                        slot->id, host->bus_hz, clock,
> -                        div ? ((host->bus_hz / div) >> 1) :
> -                        host->bus_hz, div);
> +               if (clock != slot->__clk_old || force_clkinit)
> +                       dev_info(&slot->mmc->class_dev,
> +                                "Bus speed (slot %d) = %dHz (slot req %dHz, actual %dHZ div = %d)\n",
> +                                slot->id, host->bus_hz, clock,
> +                                div ? ((host->bus_hz / div) >> 1) :
> +                                host->bus_hz, div);
>
>                 /* disable clock */
>                 mci_writel(host, CLKENA, 0);
> @@ -1139,6 +1140,9 @@ static void dw_mci_setup_bus(struct dw_mci_slot *slot, bool force_clkinit)
>
>                 /* inform CIU */
>                 mci_send_cmd(slot, sdmmc_cmd_bits, 0);
> +
> +               /* keep the last clock value that was requested from core */
> +               slot->__clk_old = clock;
>         }
>
>         host->current_speed = clock;
> diff --git a/drivers/mmc/host/dw_mmc.h b/drivers/mmc/host/dw_mmc.h
> index 9e740bc..e8cd2de 100644
> --- a/drivers/mmc/host/dw_mmc.h
> +++ b/drivers/mmc/host/dw_mmc.h
> @@ -249,6 +249,8 @@ extern int dw_mci_resume(struct dw_mci *host);
>   * @queue_node: List node for placing this node in the @queue list of
>   *     &struct dw_mci.
>   * @clock: Clock rate configured by set_ios(). Protected by host->lock.
> + * @__clk_old: The last clock value that was requested from core.
> + *     Keeping track of this helps us to avoid spamming the console.
>   * @flags: Random state bits associated with the slot.
>   * @id: Number of this slot.
>   * @sdio_id: Number of this slot in the SDIO interrupt registers.
> @@ -263,6 +265,7 @@ struct dw_mci_slot {
>         struct list_head        queue_node;
>
>         unsigned int            clock;
> +       unsigned int            __clk_old;
>
>         unsigned long           flags;
>  #define DW_MMC_CARD_PRESENT    0
> --
> 1.9.1
>

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

end of thread, other threads:[~2016-09-22  9:39 UTC | newest]

Thread overview: 3+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
     [not found] <CGME20160922051213epcas1p23484f9ac7e16656922b9f91028c565ff@epcas1p2.samsung.com>
2016-09-22  5:12 ` [PATCH] mmc: dw_mmc: fix the spamming log message Jaehoon Chung
2016-09-22  5:14   ` Jaehoon Chung
2016-09-22  9:39   ` Ulf Hansson

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.