RE: [PATCH] mmc: renesas_sdhi: increase suspend/resume latency limit

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Hi Wolfram-san, Ulrich-san,

> From: Wolfram Sang, Sent: Saturday, July 31, 2021 12:28 AM
> 
> On Fri, May 14, 2021 at 05:53:18PM +0200, Ulrich Hecht wrote:
> > The TMIO core sets a very low latency limit (100 us), but when using R-Car
> > SDHI hosts with SD cards, I have observed typical latencies of around 20-30
> > ms. This prevents runtime PM from working properly, and the devices remain
> > on continuously.
> >
> > This patch sets the default latency limit to 100 ms to avoid that.
> >
> > Signed-off-by: Ulrich Hecht <uli+renesas@xxxxxxxx>
> 
> Adding Shimoda-san to CC.
> 
> Shimoda-san: can you kindly run your SDHI tests with this patch applied?

Sure!

However, I have a question about this patch.
Would you know how to measure the latencies?
I enabled function trace of rpm and checked the log, but I could not observe
any behavior changes with and without applying this patch.

---
echo 1 > /sys/kernel/debug/tracing/events/rpm/enable
dd if=/dev/mmcblk1 of=/dev/null bs=4k count=1
cat /sys/kernel/debug/tracing/trace

# /root/trace/read.sh
# tracer: nop
#
# entries-in-buffer/entries-written: 36/36   #P:8
#
#                                _-----=> irqs-off
#                               / _----=> need-resched
#                              | / _---=> hardirq/softirq
#                              || / _--=> preempt-depth
#                              ||| /     delay
#           TASK-PID     CPU#  ||||   TIMESTAMP  FUNCTION
#              | |         |   ||||      |         |
    kworker/4:1H-307     [004] d..1   125.845356: rpm_resume: mmc0:0001 flags-4 cnt-1  dep-0  auto-1 p-0 irq-0 child-0
    kworker/4:1H-307     [004] d..1   125.845401: rpm_resume: ee140000.mmc flags-4 cnt-1  dep-0  auto-1 p-0 irq-0 child-0
    kworker/4:1H-307     [004] d..1   125.867766: rpm_idle: ee140000.mmc flags-1 cnt-1  dep-0  auto-1 p-0 irq-0 child-0
    kworker/4:1H-307     [004] d..1   125.867774: rpm_return_int: rpm_idle+0x40/0x3d0:ee140000.mmc ret=-11
    kworker/4:1H-307     [004] d..1   125.867785: rpm_idle: soc flags-5 cnt-0  dep-1  auto-1 p-0 irq-0 child-27
    kworker/4:1H-307     [004] d..1   125.867788: rpm_return_int: rpm_idle+0x40/0x3d0:soc ret=-13
    kworker/4:1H-307     [004] d..1   125.867796: rpm_return_int: rpm_resume+0x124/0x6d8:ee140000.mmc ret=0
    kworker/4:1H-307     [004] d..1   125.867819: rpm_suspend: ee140000.mmc flags-d cnt-0  dep-0  auto-1 p-0 irq-0 child-0
    kworker/4:1H-307     [004] d..1   125.867948: rpm_return_int: rpm_suspend+0x150/0x620:ee140000.mmc ret=0
    kworker/4:1H-307     [004] d..1   125.867962: rpm_idle: mmc0:0001 flags-1 cnt-1  dep-0  auto-1 p-0 irq-0 child-0
    kworker/4:1H-307     [004] d..1   125.867965: rpm_return_int: rpm_idle+0x40/0x3d0:mmc0:0001 ret=-11
    kworker/4:1H-307     [004] d..1   125.867974: rpm_idle: mmc0 flags-5 cnt-0  dep-1  auto-1 p-0 irq-0 child-1
    kworker/4:1H-307     [004] d..1   125.867978: rpm_return_int: rpm_idle+0x40/0x3d0:mmc0 ret=-13
    kworker/4:1H-307     [004] d..1   125.867985: rpm_return_int: rpm_resume+0x124/0x6d8:mmc0:0001 ret=0
    kworker/4:1H-307     [004] d..1   125.868009: rpm_resume: ee140000.mmc flags-4 cnt-1  dep-0  auto-1 p-0 irq-0 child-0
    kworker/4:1H-307     [004] d..1   125.868013: rpm_return_int: rpm_resume+0x124/0x6d8:ee140000.mmc ret=1
    kworker/0:1H-295     [000] d..1   125.879823: rpm_suspend: ee140000.mmc flags-d cnt-0  dep-0  auto-1 p-0 irq-0 child-0
    kworker/0:1H-295     [000] d..1   125.879833: rpm_return_int: rpm_suspend+0x150/0x620:ee140000.mmc ret=0
    kworker/0:1H-295     [000] d..1   125.879843: rpm_suspend: mmc0:0001 flags-d cnt-0  dep-0  auto-1 p-0 irq-0 child-0
    kworker/0:1H-295     [000] d..1   125.879856: rpm_return_int: rpm_suspend+0x150/0x620:mmc0:0001 ret=0
    kworker/4:1H-307     [004] d..1   125.880562: rpm_resume: mmc0:0001 flags-4 cnt-1  dep-0  auto-1 p-0 irq-0 child-0
    kworker/4:1H-307     [004] d..1   125.880569: rpm_return_int: rpm_resume+0x124/0x6d8:mmc0:0001 ret=1
    kworker/4:1H-307     [004] d..1   125.880591: rpm_resume: ee140000.mmc flags-4 cnt-1  dep-0  auto-1 p-0 irq-0 child-0
    kworker/4:1H-307     [004] d..1   125.880594: rpm_return_int: rpm_resume+0x124/0x6d8:ee140000.mmc ret=1
    kworker/0:1H-295     [000] d..1   125.883242: rpm_suspend: ee140000.mmc flags-d cnt-0  dep-0  auto-1 p-0 irq-0 child-0
    kworker/0:1H-295     [000] d..1   125.883249: rpm_return_int: rpm_suspend+0x150/0x620:ee140000.mmc ret=0
    kworker/0:1H-295     [000] d..1   125.883258: rpm_suspend: mmc0:0001 flags-d cnt-0  dep-0  auto-1 p-0 irq-0 child-0
    kworker/0:1H-295     [000] d..1   125.883262: rpm_return_int: rpm_suspend+0x150/0x620:mmc0:0001 ret=0
          <idle>-0       [004] d.h2   125.928997: rpm_suspend: ee140000.mmc flags-9 cnt-0  dep-0  auto-1 p-0 irq-0 child-0
          <idle>-0       [004] d.h2   125.929015: rpm_return_int: rpm_suspend+0x150/0x620:ee140000.mmc ret=0
          <idle>-0       [004] d.h2   125.945766: rpm_suspend: ee140000.mmc flags-9 cnt-0  dep-0  auto-1 p-0 irq-0 child-0
          <idle>-0       [004] dNh2   125.945808: rpm_return_int: rpm_suspend+0x150/0x620:ee140000.mmc ret=0
     kworker/4:2-361     [004] d..1   125.945872: rpm_suspend: ee140000.mmc flags-a cnt-0  dep-0  auto-1 p-0 irq-0 child-0
     kworker/4:2-361     [004] d..1   125.945956: rpm_idle: soc flags-1 cnt-0  dep-1  auto-1 p-0 irq-0 child-26
     kworker/4:2-361     [004] d..1   125.945960: rpm_return_int: rpm_idle+0x40/0x3d0:soc ret=-13
     kworker/4:2-361     [004] d..1   125.945966: rpm_return_int: rpm_suspend+0x150/0x620:ee140000.mmc ret=0
---

Best regards,
Yoshihiro Shimoda

> That would be very kind, thank you!
> 
> > ---
> >  drivers/mmc/host/renesas_sdhi_core.c | 4 ++++
> >  1 file changed, 4 insertions(+)
> >
> > diff --git a/drivers/mmc/host/renesas_sdhi_core.c b/drivers/mmc/host/renesas_sdhi_core.c
> > index 635bf31a6735..4f41616cc6bb 100644
> > --- a/drivers/mmc/host/renesas_sdhi_core.c
> > +++ b/drivers/mmc/host/renesas_sdhi_core.c
> > @@ -32,6 +32,7 @@
> >  #include <linux/pinctrl/pinctrl-state.h>
> >  #include <linux/platform_device.h>
> >  #include <linux/pm_domain.h>
> > +#include <linux/pm_qos.h>
> >  #include <linux/regulator/consumer.h>
> >  #include <linux/reset.h>
> >  #include <linux/sh_dma.h>
> > @@ -1147,6 +1148,9 @@ int renesas_sdhi_probe(struct platform_device *pdev,
> >  		host->ops.hs400_complete = renesas_sdhi_hs400_complete;
> >  	}
> >
> > +	/* keep tmio_mmc_host_probe() from setting latency limit too low */
> > +	dev_pm_qos_expose_latency_limit(&pdev->dev, 100000);
> > +
> >  	ret = tmio_mmc_host_probe(host);
> >  	if (ret < 0)
> >  		goto edisclk;
> > --
> > 2.20.1
> >




[Index of Archives]     [Linux Samsung SOC]     [Linux Wireless]     [Linux Kernel]     [ATH6KL]     [Linux Bluetooth]     [Linux Netdev]     [Kernel Newbies]     [IDE]     [Security]     [Git]     [Netfilter]     [Bugtraq]     [Yosemite News]     [MIPS Linux]     [ARM Linux]     [Linux Security]     [Linux RAID]     [Linux ATA RAID]     [Samba]     [Device Mapper]

  Powered by Linux