All the mail mirrored from lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH 1/3] mmc: sh_mmcif: Make sure the device stays active when needed in ->probe()
@ 2016-02-11 12:59 Ulf Hansson
  2016-02-11 12:59 ` [PATCH 2/3] mmc: sh_mmcif: Restructure ->set_ios() Ulf Hansson
                   ` (2 more replies)
  0 siblings, 3 replies; 8+ messages in thread
From: Ulf Hansson @ 2016-02-11 12:59 UTC (permalink / raw
  To: linux-mmc, Ulf Hansson
  Cc: Kuninori Morimoto, Geert Uytterhoeven, Nguyen Viet Dung,
	Magnus Damm, Simon Horman, Laurent Pinchart

While accessing the device, make sure it stays active by increasing the
runtime PM usage count for it.

Let's also defer to enable runtime PM until we really need access to the
device. This also enables the error path in ->probe() to become simpler.

Signed-off-by: Ulf Hansson <ulf.hansson@linaro.org>
---
 drivers/mmc/host/sh_mmcif.c | 15 ++++++++-------
 1 file changed, 8 insertions(+), 7 deletions(-)

diff --git a/drivers/mmc/host/sh_mmcif.c b/drivers/mmc/host/sh_mmcif.c
index 8d870ce..c6c2a08 100644
--- a/drivers/mmc/host/sh_mmcif.c
+++ b/drivers/mmc/host/sh_mmcif.c
@@ -1519,23 +1519,23 @@ static int sh_mmcif_probe(struct platform_device *pdev)
 
 	platform_set_drvdata(pdev, host);
 
-	pm_runtime_enable(dev);
-	host->power = false;
-
 	host->clk = devm_clk_get(dev, NULL);
 	if (IS_ERR(host->clk)) {
 		ret = PTR_ERR(host->clk);
 		dev_err(dev, "cannot get clock: %d\n", ret);
-		goto err_pm;
+		goto err_host;
 	}
 
 	ret = clk_prepare_enable(host->clk);
 	if (ret < 0)
-		goto err_pm;
+		goto err_host;
 
 	sh_mmcif_clk_setup(host);
 
-	ret = pm_runtime_resume(dev);
+	pm_runtime_enable(dev);
+	host->power = false;
+
+	ret = pm_runtime_get_sync(dev);
 	if (ret < 0)
 		goto err_clk;
 
@@ -1579,12 +1579,13 @@ static int sh_mmcif_probe(struct platform_device *pdev)
 		 sh_mmcif_readl(host->addr, MMCIF_CE_VERSION) & 0xffff,
 		 clk_get_rate(host->clk) / 1000000UL);
 
+	pm_runtime_put(dev);
 	clk_disable_unprepare(host->clk);
 	return ret;
 
 err_clk:
 	clk_disable_unprepare(host->clk);
-err_pm:
+	pm_runtime_put_sync(dev);
 	pm_runtime_disable(dev);
 err_host:
 	mmc_free_host(mmc);
-- 
1.9.1


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

* [PATCH 2/3] mmc: sh_mmcif: Restructure ->set_ios()
  2016-02-11 12:59 [PATCH 1/3] mmc: sh_mmcif: Make sure the device stays active when needed in ->probe() Ulf Hansson
@ 2016-02-11 12:59 ` Ulf Hansson
  2016-02-11 12:59 ` [PATCH 3/3] mmc: sh_mmci: Get rid of wrapper function for regulators Ulf Hansson
  2016-03-03 14:59 ` [PATCH 1/3] mmc: sh_mmcif: Make sure the device stays active when needed in ->probe() Ulf Hansson
  2 siblings, 0 replies; 8+ messages in thread
From: Ulf Hansson @ 2016-02-11 12:59 UTC (permalink / raw
  To: linux-mmc, Ulf Hansson
  Cc: Kuninori Morimoto, Geert Uytterhoeven, Nguyen Viet Dung,
	Magnus Damm, Simon Horman, Laurent Pinchart

Both from a runtime PM and clock management point of view, the ->set_ios()
code is unnecessary complex.

A suboptimal path is also executed when the mmc core requests a clock rate
of zero. As that happens during the card initialization phase, trying to
save power by decreasing the runtime PM usage count and gating the clock
via clk_disable_unprepare() is just superfluous.

Moreover, from a runtime PM point of view the core will anyway keep the
device active during the entire card initialization phase.

Restructure the code to rely on the ios->power_mode to understand when the
runtime PM usage count needs to be increased. Let's also deal with clock
rate changes by simply applying the rate.

Signed-off-by: Ulf Hansson <ulf.hansson@linaro.org>
---
 drivers/mmc/host/sh_mmcif.c | 45 ++++++++++++++++-----------------------------
 1 file changed, 16 insertions(+), 29 deletions(-)

diff --git a/drivers/mmc/host/sh_mmcif.c b/drivers/mmc/host/sh_mmcif.c
index c6c2a08..1c84c62 100644
--- a/drivers/mmc/host/sh_mmcif.c
+++ b/drivers/mmc/host/sh_mmcif.c
@@ -248,7 +248,6 @@ struct sh_mmcif_host {
 	int sg_idx;
 	int sg_blkidx;
 	bool power;
-	bool card_present;
 	bool ccs_enable;		/* Command Completion Signal support */
 	bool clk_ctrl2_enable;
 	struct mutex thread_lock;
@@ -1091,42 +1090,30 @@ static void sh_mmcif_set_ios(struct mmc_host *mmc, struct mmc_ios *ios)
 	host->state = STATE_IOS;
 	spin_unlock_irqrestore(&host->lock, flags);
 
-	if (ios->power_mode == MMC_POWER_UP) {
-		if (!host->card_present) {
-			/* See if we also get DMA */
+	switch (ios->power_mode) {
+	case MMC_POWER_UP:
+		sh_mmcif_set_power(host, ios);
+		if (!host->power) {
+			clk_prepare_enable(host->clk);
+			pm_runtime_get_sync(dev);
+			sh_mmcif_sync_reset(host);
 			sh_mmcif_request_dma(host);
-			host->card_present = true;
+			host->power = true;
 		}
+		break;
+	case MMC_POWER_OFF:
 		sh_mmcif_set_power(host, ios);
-	} else if (ios->power_mode == MMC_POWER_OFF || !ios->clock) {
-		/* clock stop */
-		sh_mmcif_clock_control(host, 0);
-		if (ios->power_mode == MMC_POWER_OFF) {
-			if (host->card_present) {
-				sh_mmcif_release_dma(host);
-				host->card_present = false;
-			}
-		}
 		if (host->power) {
-			pm_runtime_put_sync(dev);
+			sh_mmcif_clock_control(host, 0);
+			sh_mmcif_release_dma(host);
+			pm_runtime_put(dev);
 			clk_disable_unprepare(host->clk);
 			host->power = false;
-			if (ios->power_mode == MMC_POWER_OFF)
-				sh_mmcif_set_power(host, ios);
-		}
-		host->state = STATE_IDLE;
-		return;
-	}
-
-	if (ios->clock) {
-		if (!host->power) {
-			clk_prepare_enable(host->clk);
-
-			pm_runtime_get_sync(dev);
-			host->power = true;
-			sh_mmcif_sync_reset(host);
 		}
+		break;
+	case MMC_POWER_ON:
 		sh_mmcif_clock_control(host, ios->clock);
+		break;
 	}
 
 	host->timing = ios->timing;
-- 
1.9.1


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

* [PATCH 3/3] mmc: sh_mmci: Get rid of wrapper function for regulators
  2016-02-11 12:59 [PATCH 1/3] mmc: sh_mmcif: Make sure the device stays active when needed in ->probe() Ulf Hansson
  2016-02-11 12:59 ` [PATCH 2/3] mmc: sh_mmcif: Restructure ->set_ios() Ulf Hansson
@ 2016-02-11 12:59 ` Ulf Hansson
  2016-03-03 14:59 ` [PATCH 1/3] mmc: sh_mmcif: Make sure the device stays active when needed in ->probe() Ulf Hansson
  2 siblings, 0 replies; 8+ messages in thread
From: Ulf Hansson @ 2016-02-11 12:59 UTC (permalink / raw
  To: linux-mmc, Ulf Hansson
  Cc: Kuninori Morimoto, Geert Uytterhoeven, Nguyen Viet Dung,
	Magnus Damm, Simon Horman, Laurent Pinchart

As there are two callers of sh_mmcif_set_power() and because its only
additional action is to check for a valid regulator, let's just remove it.

Signed-off-by: Ulf Hansson <ulf.hansson@linaro.org>
---
 drivers/mmc/host/sh_mmcif.c | 16 ++++------------
 1 file changed, 4 insertions(+), 12 deletions(-)

diff --git a/drivers/mmc/host/sh_mmcif.c b/drivers/mmc/host/sh_mmcif.c
index 1c84c62..e0328b4 100644
--- a/drivers/mmc/host/sh_mmcif.c
+++ b/drivers/mmc/host/sh_mmcif.c
@@ -1063,16 +1063,6 @@ static void sh_mmcif_clk_setup(struct sh_mmcif_host *host)
 		host->mmc->f_max, host->mmc->f_min);
 }
 
-static void sh_mmcif_set_power(struct sh_mmcif_host *host, struct mmc_ios *ios)
-{
-	struct mmc_host *mmc = host->mmc;
-
-	if (!IS_ERR(mmc->supply.vmmc))
-		/* Errors ignored... */
-		mmc_regulator_set_ocr(mmc, mmc->supply.vmmc,
-				      ios->power_mode ? ios->vdd : 0);
-}
-
 static void sh_mmcif_set_ios(struct mmc_host *mmc, struct mmc_ios *ios)
 {
 	struct sh_mmcif_host *host = mmc_priv(mmc);
@@ -1092,7 +1082,8 @@ static void sh_mmcif_set_ios(struct mmc_host *mmc, struct mmc_ios *ios)
 
 	switch (ios->power_mode) {
 	case MMC_POWER_UP:
-		sh_mmcif_set_power(host, ios);
+		if (!IS_ERR(mmc->supply.vmmc))
+			mmc_regulator_set_ocr(mmc, mmc->supply.vmmc, ios->vdd);
 		if (!host->power) {
 			clk_prepare_enable(host->clk);
 			pm_runtime_get_sync(dev);
@@ -1102,7 +1093,8 @@ static void sh_mmcif_set_ios(struct mmc_host *mmc, struct mmc_ios *ios)
 		}
 		break;
 	case MMC_POWER_OFF:
-		sh_mmcif_set_power(host, ios);
+		if (!IS_ERR(mmc->supply.vmmc))
+			mmc_regulator_set_ocr(mmc, mmc->supply.vmmc, 0);
 		if (host->power) {
 			sh_mmcif_clock_control(host, 0);
 			sh_mmcif_release_dma(host);
-- 
1.9.1


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

* Re: [PATCH 1/3] mmc: sh_mmcif: Make sure the device stays active when needed in ->probe()
  2016-02-11 12:59 [PATCH 1/3] mmc: sh_mmcif: Make sure the device stays active when needed in ->probe() Ulf Hansson
  2016-02-11 12:59 ` [PATCH 2/3] mmc: sh_mmcif: Restructure ->set_ios() Ulf Hansson
  2016-02-11 12:59 ` [PATCH 3/3] mmc: sh_mmci: Get rid of wrapper function for regulators Ulf Hansson
@ 2016-03-03 14:59 ` Ulf Hansson
  2016-03-07  3:17   ` Nguyen Viet Dung
  2 siblings, 1 reply; 8+ messages in thread
From: Ulf Hansson @ 2016-03-03 14:59 UTC (permalink / raw
  To: Nguyen Viet Dung
  Cc: Kuninori Morimoto, Geert Uytterhoeven, Magnus Damm, Simon Horman,
	linux-mmc, Laurent Pinchart

On 11 February 2016 at 13:59, Ulf Hansson <ulf.hansson@linaro.org> wrote:
> While accessing the device, make sure it stays active by increasing the
> runtime PM usage count for it.
>
> Let's also defer to enable runtime PM until we really need access to the
> device. This also enables the error path in ->probe() to become simpler.
>
> Signed-off-by: Ulf Hansson <ulf.hansson@linaro.org>

Nguyen, sorry for bothering you. Did you manage to test out these three patches?

Even if it doesn't solve the original issue that you reported [1],
perhaps these can anyway be useful as cleanups?

Kind regards
Uffe

[1]
http://www.spinics.net/lists/linux-sh/msg47766.html

> ---
>  drivers/mmc/host/sh_mmcif.c | 15 ++++++++-------
>  1 file changed, 8 insertions(+), 7 deletions(-)
>
> diff --git a/drivers/mmc/host/sh_mmcif.c b/drivers/mmc/host/sh_mmcif.c
> index 8d870ce..c6c2a08 100644
> --- a/drivers/mmc/host/sh_mmcif.c
> +++ b/drivers/mmc/host/sh_mmcif.c
> @@ -1519,23 +1519,23 @@ static int sh_mmcif_probe(struct platform_device *pdev)
>
>         platform_set_drvdata(pdev, host);
>
> -       pm_runtime_enable(dev);
> -       host->power = false;
> -
>         host->clk = devm_clk_get(dev, NULL);
>         if (IS_ERR(host->clk)) {
>                 ret = PTR_ERR(host->clk);
>                 dev_err(dev, "cannot get clock: %d\n", ret);
> -               goto err_pm;
> +               goto err_host;
>         }
>
>         ret = clk_prepare_enable(host->clk);
>         if (ret < 0)
> -               goto err_pm;
> +               goto err_host;
>
>         sh_mmcif_clk_setup(host);
>
> -       ret = pm_runtime_resume(dev);
> +       pm_runtime_enable(dev);
> +       host->power = false;
> +
> +       ret = pm_runtime_get_sync(dev);
>         if (ret < 0)
>                 goto err_clk;
>
> @@ -1579,12 +1579,13 @@ static int sh_mmcif_probe(struct platform_device *pdev)
>                  sh_mmcif_readl(host->addr, MMCIF_CE_VERSION) & 0xffff,
>                  clk_get_rate(host->clk) / 1000000UL);
>
> +       pm_runtime_put(dev);
>         clk_disable_unprepare(host->clk);
>         return ret;
>
>  err_clk:
>         clk_disable_unprepare(host->clk);
> -err_pm:
> +       pm_runtime_put_sync(dev);
>         pm_runtime_disable(dev);
>  err_host:
>         mmc_free_host(mmc);
> --
> 1.9.1
>

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

* Re: [PATCH 1/3] mmc: sh_mmcif: Make sure the device stays active when needed in ->probe()
  2016-03-03 14:59 ` [PATCH 1/3] mmc: sh_mmcif: Make sure the device stays active when needed in ->probe() Ulf Hansson
@ 2016-03-07  3:17   ` Nguyen Viet Dung
  2016-03-16  9:53     ` Ulf Hansson
  0 siblings, 1 reply; 8+ messages in thread
From: Nguyen Viet Dung @ 2016-03-07  3:17 UTC (permalink / raw
  To: Ulf Hansson
  Cc: Kuninori Morimoto, Geert Uytterhoeven, Magnus Damm, Simon Horman,
	linux-mmc, Laurent Pinchart

[-- Attachment #1: Type: text/plain, Size: 2970 bytes --]

Hi Ulf

I have testted two cases use these patchs that you send.

case01:
[PATCH 1/3] mmc: sh_mmcif: Make sure the device stays active when needed 
in ->probe()
[PATCH 2/3] mmc: sh_mmcif: Restructure ->set_ios()
[PATCH 3/3] mmc: sh_mmci: Get rid of wrapper function for regulators

case02:
[PATCH 1/3] mmc: sh_mmcif: Make sure the device stays active when needed 
in ->probe()

The problem of mmcif is not resolved by both two cases.

Please tell me if you have new solution

Best regards,
Nguyen Viet Dung

On 2016年03月03日 23:59, Ulf Hansson wrote:
> On 11 February 2016 at 13:59, Ulf Hansson <ulf.hansson@linaro.org> wrote:
>> While accessing the device, make sure it stays active by increasing the
>> runtime PM usage count for it.
>>
>> Let's also defer to enable runtime PM until we really need access to the
>> device. This also enables the error path in ->probe() to become simpler.
>>
>> Signed-off-by: Ulf Hansson <ulf.hansson@linaro.org>
> Nguyen, sorry for bothering you. Did you manage to test out these three patches?
>
> Even if it doesn't solve the original issue that you reported [1],
> perhaps these can anyway be useful as cleanups?
>
> Kind regards
> Uffe
>
> [1]
> http://www.spinics.net/lists/linux-sh/msg47766.html
>
>> ---
>>   drivers/mmc/host/sh_mmcif.c | 15 ++++++++-------
>>   1 file changed, 8 insertions(+), 7 deletions(-)
>>
>> diff --git a/drivers/mmc/host/sh_mmcif.c b/drivers/mmc/host/sh_mmcif.c
>> index 8d870ce..c6c2a08 100644
>> --- a/drivers/mmc/host/sh_mmcif.c
>> +++ b/drivers/mmc/host/sh_mmcif.c
>> @@ -1519,23 +1519,23 @@ static int sh_mmcif_probe(struct platform_device *pdev)
>>
>>          platform_set_drvdata(pdev, host);
>>
>> -       pm_runtime_enable(dev);
>> -       host->power = false;
>> -
>>          host->clk = devm_clk_get(dev, NULL);
>>          if (IS_ERR(host->clk)) {
>>                  ret = PTR_ERR(host->clk);
>>                  dev_err(dev, "cannot get clock: %d\n", ret);
>> -               goto err_pm;
>> +               goto err_host;
>>          }
>>
>>          ret = clk_prepare_enable(host->clk);
>>          if (ret < 0)
>> -               goto err_pm;
>> +               goto err_host;
>>
>>          sh_mmcif_clk_setup(host);
>>
>> -       ret = pm_runtime_resume(dev);
>> +       pm_runtime_enable(dev);
>> +       host->power = false;
>> +
>> +       ret = pm_runtime_get_sync(dev);
>>          if (ret < 0)
>>                  goto err_clk;
>>
>> @@ -1579,12 +1579,13 @@ static int sh_mmcif_probe(struct platform_device *pdev)
>>                   sh_mmcif_readl(host->addr, MMCIF_CE_VERSION) & 0xffff,
>>                   clk_get_rate(host->clk) / 1000000UL);
>>
>> +       pm_runtime_put(dev);
>>          clk_disable_unprepare(host->clk);
>>          return ret;
>>
>>   err_clk:
>>          clk_disable_unprepare(host->clk);
>> -err_pm:
>> +       pm_runtime_put_sync(dev);
>>          pm_runtime_disable(dev);
>>   err_host:
>>          mmc_free_host(mmc);
>> --
>> 1.9.1
>>


[-- Attachment #2: mmc log --]
[-- Type: text/plain, Size: 32041 bytes --]

U-Boot 2013.01.01-gcb82c56 (Jul 17 2015 - 16:32:07)

CPU: Renesas Electronics R8A7790 rev 2.0
Board: Lager Board

DRAM:  2 GiB
MMC:   sh_mmcif: 0, sh-sdhi: 1, sh-sdhi: 2
SF: Detected S25FL512S with page size 256 KiB, total 64 MiB
In:    serial
Out:   serial
Err:   serial
Net:   sh_eth
=> 
=> 
=> 
=> bootp;bootm
sh_eth Waiting for PHY auto negotiation to complete.. done
sh_eth: 100Base/Full
BOOTP broadcast 1
DHCP client bound to address 172.16.1.215
Using sh_eth device
TFTP from server 172.16.1.205; our IP address is 172.16.1.215
Filename 'lager/uImage.dtb'.
Load address: 0x40007fc0
Loading: #################################################################
         #################################################################
         #################################################################
         ###############################################
         7.7 MiB/s
done
Bytes transferred = 3545742 (361a8e hex)
## Booting kernel from Legacy Image at 40007fc0 ...
   Image Name:   Linux-LTSI-4.1.17
   Image Type:   ARM Linux Kernel Image (uncompressed)
   Data Size:    3545678 Bytes = 3.4 MiB
   Load Address: 40008000
   Entry Point:  40008000
   Verifying Checksum ... OK
   XIP Kernel Image ... OK
OK

Starting kernel ...

Booting Linux on physical CPU 0x0
Linux version 4.1.17-ltsi-00406-gc9cf65c-dirty (duclm@le-minh-duc) (gcc version 4.9.2 20140904 (prere6
CPU: ARMv7 Processor [413fc0f2] revision 2 (ARMv7), cr=10c5307d
CPU: PIPT / VIPT nonaliasing data cache, PIPT instruction cache
Machine model: Lager
Ignoring memory block 0x140000000 - 0x200000000
debug: ignoring loglevel setting.
Memory policy: Data cache writealloc
On node 0 totalpages: 262144
free_area_init_node: node 0, pgdat c06f1280, node_mem_map eeff9000
  Normal zone: 1520 pages used for memmap
  Normal zone: 0 pages reserved
  Normal zone: 194560 pages, LIFO batch:31
  HighMem zone: 67584 pages, LIFO batch:15
PERCPU: Embedded 9 pages/cpu @eef8c000 s15872 r0 d20992 u36864
pcpu-alloc: s15872 r0 d20992 u36864 alloc=9*4096
pcpu-alloc: [0] 0 [0] 1 [0] 2 [0] 3 [0] 4 [0] 5 [0] 6 [0] 7 
Built 1 zonelists in Zone order, mobility grouping on.  Total pages: 260624
Kernel command line: console=ttySC0, ignore_loglevel rw root=/dev/nfs ip=dhcp
PID hash table entries: 4096 (order: 2, 16384 bytes)
Dentry cache hash table entries: 131072 (order: 7, 524288 bytes)
Inode-cache hash table entries: 65536 (order: 6, 262144 bytes)
Memory: 1031796K/1048576K available (5132K kernel code, 186K rwdata, 1468K rodata, 288K init, 194K bs)
Virtual kernel memory layout:
    vector  : 0xffff0000 - 0xffff1000   (   4 kB)
    fixmap  : 0xffc00000 - 0xfff00000   (3072 kB)
    vmalloc : 0xf0000000 - 0xff000000   ( 240 MB)
    lowmem  : 0xc0000000 - 0xef800000   ( 760 MB)
    pkmap   : 0xbfe00000 - 0xc0000000   (   2 MB)
      .text : 0xc0008000 - 0xc067b03c   (6605 kB)
      .init : 0xc067c000 - 0xc06c4000   ( 288 kB)
      .data : 0xc06c4000 - 0xc06f2b80   ( 187 kB)
       .bss : 0xc06f5000 - 0xc0725b94   ( 195 kB)
Hierarchical RCU implementation.
        Additional per-CPU info printed with stalls.
NR_IRQS:16 nr_irqs:16 16
Architected cp15 timer(s) running at 10.00MHz (virt).
clocksource arch_sys_counter: mask: 0xffffffffffffff max_cycles: 0x24e6a1710, max_idle_ns: 4407952021s
sched_clock: 56 bits at 10MHz, resolution 100ns, wraps every 4398046511100ns
Switching to timer-based delay loop, resolution 100ns
Console: colour dummy device 80x30
Calibrating delay loop (skipped), value calculated using timer frequency.. 20.00 BogoMIPS (lpj=100000)
pid_max: default: 32768 minimum: 301
Mount-cache hash table entries: 2048 (order: 1, 8192 bytes)
Mountpoint-cache hash table entries: 2048 (order: 1, 8192 bytes)
CPU: Testing write buffer coherency: ok
CPU0: update cpu_capacity 1535
CPU0: thread -1, cpu 0, socket 0, mpidr 80000000
Setting up static identity map for 0x40009000 - 0x40009058
CPU1: update cpu_capacity 1535
CPU1: thread -1, cpu 1, socket 0, mpidr 80000001
CPU2: update cpu_capacity 1535
CPU2: thread -1, cpu 2, socket 0, mpidr 80000002
CPU3: update cpu_capacity 1535
CPU3: thread -1, cpu 3, socket 0, mpidr 80000003
CPU4: failed to boot: -22
CPU5: failed to boot: -22
CPU6: failed to boot: -22
CPU7: failed to boot: -22
Brought up 4 CPUs
SMP: Total of 4 processors activated (80.00 BogoMIPS).
CPU: All CPU(s) started in SVC mode.
devtmpfs: initialized
VFP support v0.3: implementor 41 architecture 4 part 30 variant f rev 0
clocksource jiffies: mask: 0xffffffff max_cycles: 0xffffffff, max_idle_ns: 19112604462750000 ns
pinctrl core: initialized pinctrl subsystem
NET: Registered protocol family 16
DMA: preallocated 256 KiB pool for atomic coherent allocations
renesas_irqc e61c0000.interrupt-controller: driving 4 irqs
sh-pfc e6060000.pfc: r8a77900_pfc support registered
No ATAGs?
hw-breakpoint: Failed to enable monitor mode on CPU 2.
IRQ2 is asserted, installing da9063/da9210 regulator quirk
gpio-regulator regulator@2: Could not obtain regulator setting GPIOs: -517
gpio-regulator regulator@4: Could not obtain regulator setting GPIOs: -517
vgaarb: loaded
SCSI subsystem initialized
libata version 3.00 loaded.
usbcore: registered new interface driver usbfs
usbcore: registered new interface driver hub
usbcore: registered new device driver usb
i2c-sh_mobile e6500000.i2c: I2C adapter 4, bus speed 100000 Hz
i2c-sh_mobile e6510000.i2c: I2C adapter 5, bus speed 100000 Hz
i2c-sh_mobile e6520000.i2c: I2C adapter 6, bus speed 100000 Hz
i2c 7-0058: Masking da9063 interrupt sources
i2c 7-0068: Masking da9210 interrupt sources
i2c 7-0068: IRQ2 is not asserted, removing quirk
i2c-sh_mobile e60b0000.i2c: I2C adapter 7, bus speed 100000 Hz
media: Linux media interface: v0.10
Linux video capture interface: v2.00
sh_cmt ffca0000.timer: ch0: used for clock events
sh_cmt ffca0000.timer: ch1: used as clock source
clocksource ffca0000.timer: mask: 0xffffffff max_cycles: 0xffffffff, max_idle_ns: 1911260446275000000s
Advanced Linux Sound Architecture Driver Initialized.
Switched to clocksource arch_sys_counter
NET: Registered protocol family 2
TCP established hash table entries: 8192 (order: 3, 32768 bytes)
TCP bind hash table entries: 8192 (order: 4, 65536 bytes)
TCP: Hash tables configured (established 8192 bind 8192)
UDP hash table entries: 512 (order: 2, 16384 bytes)
UDP-Lite hash table entries: 512 (order: 2, 16384 bytes)
NET: Registered protocol family 1
RPC: Registered named UNIX socket transport module.
RPC: Registered udp transport module.
RPC: Registered tcp transport module.
RPC: Registered tcp NFSv4.1 backchannel transport module.
PCI: CLS 0 bytes, default 64
futex hash table entries: 2048 (order: 5, 131072 bytes)
NFS: Registering the id_resolver key type
Key type id_resolver registered
Key type id_legacy registered
nfs4filelayout_init: NFSv4 File Layout Driver Registering...
nfs4flexfilelayout_init: NFSv4 Flexfile Layout Driver Registering...
bounce: pool size: 64 pages
Block layer SCSI generic (bsg) driver version 0.4 loaded (major 250)
io scheduler noop registered
io scheduler deadline registered
io scheduler cfq registered (default)
gpio_rcar e6050000.gpio: driving 32 GPIOs
gpio_rcar e6051000.gpio: driving 32 GPIOs
gpio_rcar e6052000.gpio: driving 32 GPIOs
gpio_rcar e6053000.gpio: driving 32 GPIOs
gpio_rcar e6054000.gpio: driving 32 GPIOs
gpio_rcar e6055000.gpio: driving 32 GPIOs
pci-rcar-gen2 ee090000.pci: PCI: bus0 revision 11
pci-rcar-gen2 ee090000.pci: PCI host bridge to bus 0000:00
pci_bus 0000:00: root bus resource [io  0xee080000-0xee0810ff]
pci_bus 0000:00: root bus resource [mem 0xee080000-0xee0810ff]
pci_bus 0000:00: No busn resource found for root bus, will use [bus 00-ff]
pci 0000:00:00.0: [1033:0000] type 00 class 0x060000
pci 0000:00:00.0: reg 0x10: [mem 0xee090800-0xee090bff]
pci 0000:00:00.0: reg 0x14: [mem 0x40000000-0x7fffffff pref]
pci 0000:00:01.0: [1033:0035] type 00 class 0x0c0310
pci 0000:00:01.0: reg 0x10: [mem 0x00000000-0x00000fff]
pci 0000:00:01.0: supports D1 D2
pci 0000:00:01.0: PME# supported from D0 D1 D2 D3hot
pci 0000:00:02.0: [1033:00e0] type 00 class 0x0c0320
pci 0000:00:02.0: reg 0x10: [mem 0x00000000-0x000000ff]
pci 0000:00:02.0: supports D1 D2
pci 0000:00:02.0: PME# supported from D0 D1 D2 D3hot
PCI: bus0: Fast back to back transfers disabled
pci_bus 0000:00: busn_res: [bus 00-ff] end is updated to 00
pci 0000:00:01.0: BAR 0: assigned [mem 0xee080000-0xee080fff]
pci 0000:00:02.0: BAR 0: assigned [mem 0xee081000-0xee0810ff]
pci 0000:00:01.0: enabling device (0140 -> 0142)
pci 0000:00:02.0: enabling device (0140 -> 0142)
pci-rcar-gen2 ee0b0000.pci: PCI: bus0 revision 11
pci-rcar-gen2 ee0b0000.pci: PCI host bridge to bus 0001:01
pci_bus 0001:01: root bus resource [io  0xee0a0000-0xee0a10ff]
pci_bus 0001:01: root bus resource [mem 0xee0a0000-0xee0a10ff]
pci_bus 0001:01: No busn resource found for root bus, will use [bus 01-ff]
pci 0001:01:00.0: [1033:0000] type 00 class 0x060000
pci 0001:01:00.0: reg 0x10: [mem 0xee0b0800-0xee0b0bff]
pci 0001:01:00.0: reg 0x14: [mem 0x40000000-0x7fffffff pref]
pci 0001:01:01.0: [1033:0035] type 00 class 0x0c0310
pci 0001:01:01.0: reg 0x10: [mem 0x00000000-0x00000fff]
pci 0001:01:01.0: supports D1 D2
pci 0001:01:01.0: PME# supported from D0 D1 D2 D3hot
pci 0001:01:02.0: [1033:00e0] type 00 class 0x0c0320
pci 0001:01:02.0: reg 0x10: [mem 0x00000000-0x000000ff]
pci 0001:01:02.0: supports D1 D2
pci 0001:01:02.0: PME# supported from D0 D1 D2 D3hot
PCI: bus1: Fast back to back transfers disabled
pci_bus 0001:01: busn_res: [bus 01-ff] end is updated to 01
pci 0001:01:01.0: BAR 0: assigned [mem 0xee0a0000-0xee0a0fff]
pci 0001:01:02.0: BAR 0: assigned [mem 0xee0a1000-0xee0a10ff]
pci 0001:01:01.0: enabling device (0140 -> 0142)
pci 0001:01:02.0: enabling device (0140 -> 0142)
pci-rcar-gen2 ee0d0000.pci: PCI: bus0 revision 11
pci-rcar-gen2 ee0d0000.pci: PCI host bridge to bus 0002:02
pci_bus 0002:02: root bus resource [io  0xee0c0000-0xee0c10ff]
pci_bus 0002:02: root bus resource [mem 0xee0c0000-0xee0c10ff]
pci_bus 0002:02: No busn resource found for root bus, will use [bus 02-ff]
pci 0002:02:00.0: [1033:0000] type 00 class 0x060000
pci 0002:02:00.0: reg 0x10: [mem 0xee0d0800-0xee0d0bff]
pci 0002:02:00.0: reg 0x14: [mem 0x40000000-0x7fffffff pref]
pci 0002:02:01.0: [1033:0035] type 00 class 0x0c0310
pci 0002:02:01.0: reg 0x10: [mem 0x00000000-0x00000fff]
pci 0002:02:01.0: supports D1 D2
pci 0002:02:01.0: PME# supported from D0 D1 D2 D3hot
pci 0002:02:02.0: [1033:00e0] type 00 class 0x0c0320
pci 0002:02:02.0: reg 0x10: [mem 0x00000000-0x000000ff]
pci 0002:02:02.0: supports D1 D2
pci 0002:02:02.0: PME# supported from D0 D1 D2 D3hot
PCI: bus2: Fast back to back transfers disabled
pci_bus 0002:02: busn_res: [bus 02-ff] end is updated to 02
pci 0002:02:01.0: BAR 0: assigned [mem 0xee0c0000-0xee0c0fff]
pci 0002:02:02.0: BAR 0: assigned [mem 0xee0c1000-0xee0c10ff]
pci 0002:02:01.0: enabling device (0140 -> 0142)
pci 0002:02:02.0: enabling device (0140 -> 0142)
Serial: 8250/16550 driver, 4 ports, IRQ sharing disabled
SuperH (H)SCI(F) driver initialized
e6c40000.serial: ttySC0 at MMIO 0xe6c40000 (irq = 103, base_baud = 0) is a scifa
console [ttySC0] enabled
e6c50000.serial: ttySC1 at MMIO 0xe6c50000 (irq = 104, base_baud = 0) is a scifa
[drm] Initialized drm 1.1.0 20060810
[drm] Supports vblank timestamp caching Rev 2 (21.10.2013).
[drm] No driver support for vblank timestamp query.
rcar-du feb00000.display: failed to initialize encoder /i2c@e6520000/hdmi@39 (-38), skipping
rcar-du feb00000.display: fb0:  frame buffer device
rcar-du feb00000.display: registered panic notifier
[drm] Initialized rcar-du 1.0.0 20130110 on minor 0
da9063 7-0058: Device detected (chip-ID: 0x61, var-ID: 0x30)
scsi host0: sata_rcar
ata1: SATA max UDMA/133 irq 106
renesas_spi e6b10000.spi: DMA available
m25p80 spi0.0: s25fl512s (65536 Kbytes)
3 ofpart partitions found on MTD device spi0.0
Creating 3 MTD partitions on "spi0.0":
0x000000000000-0x000000040000 : "loader"
0x000000040000-0x000000440000 : "user"
0x000000440000-0x000004000000 : "flash"
renesas_spi e6b10000.spi: probed
spi_sh_msiof e6e10000.spi: DMA available
libphy: sh_mii: probed
sh-eth ee700000.ethernet eth0: Base address at 0xee700000, 2e:09:0a:00:3d:c8, IRQ 105.
ehci_hcd: USB 2.0 'Enhanced' Host Controller (EHCI) Driver
ehci-pci: EHCI PCI platform driver
ehci-pci 0000:00:02.0: EHCI Host Controller
ehci-pci 0000:00:02.0: new USB bus registered, assigned bus number 1
ehci-pci 0000:00:02.0: irq 120, io mem 0xee081000
ehci-pci 0000:00:02.0: USB 2.0 started, EHCI 1.00
hub 1-0:1.0: USB hub found
hub 1-0:1.0: 1 port detected
ehci-pci 0001:01:02.0: EHCI Host Controller
ehci-pci 0001:01:02.0: new USB bus registered, assigned bus number 2
ehci-pci 0001:01:02.0: irq 121, io mem 0xee0a1000
ehci-pci 0001:01:02.0: USB 2.0 started, EHCI 1.00
hub 2-0:1.0: USB hub found
hub 2-0:1.0: 1 port detected
ehci-pci 0002:02:02.0: EHCI Host Controller
ehci-pci 0002:02:02.0: new USB bus registered, assigned bus number 3
ehci-pci 0002:02:02.0: irq 122, io mem 0xee0c1000
ehci-pci 0002:02:02.0: USB 2.0 started, EHCI 1.00
hub 3-0:1.0: USB hub found
hub 3-0:1.0: 1 port detected
ohci_hcd: USB 1.1 'Open' Host Controller (OHCI) Driver
ata1: link resume succeeded after 1 retries
ohci-pci: OHCI PCI platform driver
ohci-pci 0000:00:01.0: OHCI PCI host controller
ohci-pci 0000:00:01.0: new USB bus registered, assigned bus number 4
ohci-pci 0000:00:01.0: irq 120, io mem 0xee080000
ata1: SATA link down (SStatus 0 SControl 300)
hub 4-0:1.0: USB hub found
hub 4-0:1.0: 1 port detected
ohci-pci 0001:01:01.0: OHCI PCI host controller
ohci-pci 0001:01:01.0: new USB bus registered, assigned bus number 5
ohci-pci 0001:01:01.0: irq 121, io mem 0xee0a0000
hub 5-0:1.0: USB hub found
hub 5-0:1.0: 1 port detected
ohci-pci 0002:02:01.0: OHCI PCI host controller
ohci-pci 0002:02:01.0: new USB bus registered, assigned bus number 6
ohci-pci 0002:02:01.0: irq 122, io mem 0xee0c0000
hub 6-0:1.0: USB hub found
hub 6-0:1.0: 1 port detected
sh-pfc e6060000.pfc: pin GP_5_19 already requested by ee090000.pci; cannot claim for e6590000.usb
sh-pfc e6060000.pfc: pin-179 (e6590000.usb) status -22
sh-pfc e6060000.pfc: could not request pin 179 (GP_5_19) from group usb0_ovc_vbus  on device sh-pfc
renesas_usbhs e6590000.usb: Error applying setting, reverse things back
renesas_usbhs e6590000.usb: transceiver found
renesas_usbhs e6590000.usb: gadget probed
phy phy-e6590100.usb-phy.1: phy init failed --> -16
renesas_usbhs e6590000.usb: probed
using random self ethernet address
using random host ethernet address
usb0: HOST MAC ae:03:c0:35:bb:9e
usb0: MAC 06:cc:d7:7f:24:17
using random self ethernet address
using random host ethernet address
g_ether gadget: Ethernet Gadget, version: Memorial Day 2008
g_ether gadget: g_ether ready
mousedev: PS/2 mouse device common for all mice
renesas_usbhs e6590000.usb: fifo select error
i2c /dev entries driver
adv7180 6-0020: chip found @ 0x20 (e6520000.i2c)
soc-camera-pdrv soc-camera-pdrv.0: Probing soc-camera-pdrv.0
rcar_vin e6ef1000.video: group probe failed: -6
rcar_thermal e61f0000.thermal: 1 sensor probed
sh_mobile_sdhi ee100000.sd: Got CD GPIO
sh_mobile_sdhi ee140000.sd: Got CD GPIO
sh_mmcif ee220000.mmc: No vqmmc regulator found
sh_mmcif ee220000.mmc: Chip version 0x0003, clock rate 12MHz
usbcore: registered new interface driver usbhid
usbhid: USB HID core driver
rcar_sound ec500000.sound: probed
NET: Registered protocol family 10
sit: IPv6 over IPv4 tunneling driver
NET: Registered protocol family 17
Key type dns_resolver registered
Registering SWP/SWPB emulation handler
sh_mobile_sdhi ee100000.sd: Got CD GPIO
sh_mobile_sdhi ee100000.sd: mmc1 base at 0xee100000 clock rate 97 MHz
sh_mobile_sdhi ee140000.sd: Got CD GPIO
mmc0: MAN_BKOPS_EN bit is not set
mmc0: new high speed MMC card at address 0001
mmcblk0: mmc0:0001 MMC08G 7.32 GiB 
mmcblk0boot0: mmc0:0001 MMC08G partition 1 2.00 MiB
mmcblk0boot1: mmc0:0001 MMC08G partition 2 2.00 MiB
 mmcblk0: p1 p2
sh_mobile_sdhi ee140000.sd: mmc2 base at 0xee140000 clock rate 97 MHz
asoc-simple-card sound: ak4642-hifi <-> ec500000.sound mapping ok
input: keyboard as /devices/platform/keyboard/input/input0
hctosys: unable to open rtc device (rtc0)
sh-eth ee700000.ethernet eth0: attached PHY 1 (IRQ 344) to driver Micrel KSZ8041RNLI
IPv6: ADDRCONF(NETDEV_UP): usb0: link is not ready
Sending DHCP requests ..
sh-eth ee700000.ethernet eth0: Link is Up - 100Mbps/Full - flow control off
., OK
IP-Config: Got DHCP answer from 172.16.1.205, my address is 172.16.1.215
IP-Config: Complete:
     device=eth0, hwaddr=2e:09:0a:00:3d:c8, ipaddr=172.16.1.215, mask=255.255.255.0, gw=172.16.1.205
     host=172.16.1.215, domain=, nis-domain=(none)
     bootserver=172.16.1.205, rootserver=172.16.1.205, rootpath=
     nameserver0=172.16.1.30, nameserver1=172.16.1.40, nameserver2=8.8.8.8
SDHI2 VccQ: disabling
SDHI0 VccQ: disabling
SDHI2 Vcc: disabling
SDHI0 Vcc: disabling
ALSA device list:
  #0: rsnd-dai.0-ak4642-hifi
VFS: Mounted root (nfs filesystem) on device 0:14.
devtmpfs: mounted
Freeing unused kernel memory: 288K (c067c000 - c06c4000)
Mount failed for selinuxfs on /sys/fs/selinux:  No such file or directory
random: init urandom read with 50 bits of entropy available
init: plymouth-upstart-bridge main process (919) terminated with status 1
init: plymouth-upstart-bridge main process ended, respawning
init: plymouth-upstart-bridge main process (928) terminated with status 1
init: plymouth-upstart-bridge main process ended, respawning
random: nonblocking pool is initialized
systemd-udevd[1022]: starting version 204
systemd-udevd[1129]: could not open moddep file '/lib/modules/4.1.17-ltsi-00406-gc9cf65c-dirty/module'
CPU4: failed to boot: -22
CPU5: failed to boot: -22
CPU7: failed to boot: -22
CPU6: failed to boot: -22
init: systemd-logind pre-start process (1550) terminated with status 32
init: udev-fallback-graphics main process (1671) terminated with status 1
 * Stopping Send an event to indicate plymouth is up[ OK ]
 * Starting Mount filesystems on boot[ OK ]
 * Starting Signal sysvinit that the rootfs is mounted[ OK ]
 * Starting Clean /tmp directory[ OK ]
 * Stopping Clean /tmp directory[ OK ]
 * Starting Populate and link to /run filesystem[ OK ]
 * Stopping Populate and link to /run filesystem[ OK ]
 * Stopping Track if upstart is running in a container[ OK ]
 * Starting set console keymap[ OK ]
 * Starting Signal sysvinit that virtual filesystems are mounted[ OK ]
 * Starting Signal sysvinit that virtual filesystems are mounted[ OK ]
 * Starting Bridge udev events into upstart[ OK ]
 * Starting Signal sysvinit that local filesystems are mounted[ OK ]
 * Stopping set console keymap[ OK ]
 * Starting Signal sysvinit that remote filesystems are mounted[ OK ]
 * Starting device node and kernel event manager[ OK ]
 * Stopping Mount filesystems on boot[ OK ]
 * Starting D-Bus system message bus[ OK ]
 * Starting Enabling additional executable binary formats[ OK ]
 * Starting flush early job output to logs[ OK ]
 * Starting cold plug devices[ OK ]
 * Starting log initial device creation[ OK ]
 * Starting SystemD login management service[fail]
 * Stopping flush early job output to logs[ OK ]
 * Stopping SystemD login management service[ OK ]
 * Starting configure network device security[ OK ]
 * Starting system logging daemon[ OK ]
 * Starting configure network device[ OK ]
 * Stopping cold plug devices[ OK ]
 * Starting configure network device security[ OK ]
 * Stopping log initial device creation[ OK ]
 * Starting load fallback graphics devices[ OK ]
 * Starting configure network device security[ OK ]
 * Starting configure network device[ OK ]
 * Starting load fallback graphics devices[fail]
 * Starting save udev log and update rules[ OK ]
 * Starting set console font[ OK ]
 * Stopping set console font[ OK ]
 * Starting userspace bootsplash[ OK ]
 * Stopping save udev log and update rules[ OK ]
 * Stopping userspace bootsplash[ OK ]
 * Starting Send an event to indicate plymouth is up[ OK ]
 * Stopping Send an event to indicate plymouth is up[ OK ]
 * Starting System V initialisation compatibility[ OK ]
 * Starting configure virtual network devices[ OK ]
 * Starting configure network device security[ OK ]
 * Starting configure network device security[ OK ]
 * Starting configure network device[ OK ]
 * Starting configure network device[ OK ]
 * Starting Mount network filesystems[ OK ]
 * Starting Failsafe Boot Delay[ OK ]
 * Stopping Mount network filesystems[ OK ]
No sensors found!
Make sure you loaded all the kernel drivers you need.
Try sensors-detect to find out which these are.
No sensors found!
Make sure you loaded all the kernel drivers you need.
Try sensors-detect to find out which these are.
[ OK ]ting sensors limits        
 * Starting Bridge socket events into upstart[ OK ]
 * Starting Bridge file events into upstart[ OK ]
[ OK ]ting up X socket directories...        
 * Stopping System V initialisation compatibility[ OK ]
 * Starting System V runlevel compatibility[ OK ]
 * Starting Restore Sound Card State[ OK ]
 * Starting reinit: alsa-restore main process (1880) terminated with status 99
gular background program processing daemon[ OK ]
 * Starting save kernel messages[ OK ]
 * Starting Restore Sound Card State[fail]
 * Starting OpenSSH server[ OK ]
 * Stopping Restore Sound Card State[ OK ]
 * Stopping System V runlevel compatibility[ OK ]

init: tty1 main process (1934) killed by TERM signal
Last login: Thu Jan  1 00:00:17 UTC 1970 on tty1
init: plymouth-upstart-bridge main process ended, respawning
Welcome to Linaro 14.04 (GNU/Linux 4.1.17-ltsi-00406-gc9cf65c-dirty armv7l)

 * Documentation:  https://wiki.linaro.org/
root@linaro-nano:~# 
root@linaro-nano:~# 
root@linaro-nano:~# 
root@linaro-nano:~# 
root@linaro-nano:~# stty cols 150
root@linaro-nano:~# 
root@linaro-nano:~# echo enabled > /sys/devices/platform/e6c40000.serial/tty/ttySC0/power/wakeup
root@linaro-nano:~# 
root@linaro-nano:~# mkdir -p /tmp/temp
root@linaro-nano:~# 
root@linaro-nano:~# mkdir -p /mnt/sd0
root@linaro-nano:~# 
root@linaro-nano:~# mount -t tmpfs -o size=400M tmpfs /tmp/temp
root@linaro-nano:~# 
root@linaro-nano:~# mount /dev/mmcblk0p1 /mnt/sd0
EXT4-fs (mmcblk0p1): mounted filesystem with ordered data mode. Opts: (null)
root@linaro-nano:~# 
root@linaro-nano:~# dd if=/dev/urandom of=/tmp/temp/file-100mb bs=1M count=100
100+0 records in
100+0 records out
104857600 bytes (105 MB) copied, 22.8268 s, 4.6 MB/s
root@linaro-nano:~# cp /tmp/temp/file-100mb /mnt/sd0
root@linaro-nano:~# 
root@linaro-nano:~# sync
root@linaro-nano:~#  * Setting sensors limits        No sensors found!
Make sure you loaded all the kernel drivers you need.
Try sensors-detect to find out which these are.

No sensors found!
Make sure you loaded all the kernel drivers you need.
Try sensors-detect to find out which these are.
[ OK ]
[ OK ]inaro-nano:~#  * Setting up X socket directories...        
init: alsa-restore main process (2076) terminated with status 99
init: plymouth-stop pre-start process (2118) terminated with status 1

root@linaro-nano:~# 
root@linaro-nano:~# cmp /tmp/temp/file-100mb /mnt/sd0/file-100mb
root@linaro-nano:~# 
root@linaro-nano:~# 
root@linaro-nano:~# echo mem > /sys/power/state
PM: Syncing filesystems ... done.
Freezing user space processes ... (elapsed 0.024 seconds) done.
Freezing remaining freezable tasks ... (elapsed 0.011 seconds) done.
Suspending console(s) (use no_console_suspend to debug)

PM: suspend of devices complete after 122.590 msecs
PM: late suspend of devices complete after 5.860 msecs
PM: noirq suspend of devices complete after 25.915 msecs
Disabling non-boot CPUs ...
CPU1: shutdown
CPU2: shutdown
CPU3: shutdown
Enabling non-boot CPUs ...
CPU1 is up
CPU2 is up
CPU3 is up
PM: noirq resume of devices complete after 15.858 msecs
PM: early resume of devices complete after 4.079 msecs
sh-eth ee700000.ethernet eth0: attached PHY 1 (IRQ 344) to driver Micrel KSZ8041RNLI
renesas_usbhs e6590000.usb: fifo select error
PM: resume of devices complete after 204.693 msecs
Restarting tasks ... done.
root@linaro-nano:~# 
root@linaro-nano:~# ata1: link resume succeeded after 1 retries
ata1: SATA link down (SStatus 0 SControl 300)

root@linaro-nano:~# sh-eth ee700000.ethernet eth0: Link is Up - 100Mbps/Full - flow control off

root@linaro-nano:~# 
root@linaro-nano:~# rm -rf /tmp/temp/file-100mb 
root@linaro-nano:~# 
root@linaro-nano:~# dd if=/dev/urandom of=/tmp/temp/file-100mb bs=1M count=100
100+0 records in
100+0 records out
104857600 bytes (105 MB) copied, 22.8354 s, 4.6 MB/s
root@linaro-nano:~# cp /tmp/temp/file-100mb /mnt/sd0
Unable to handle kernel NULL pointer dereference at virtual address 00000000
pgd = c0004000
[00000000] *pgd=00000000
Internal error: Oops: 17 [#1] SMP ARM
CPU: 0 PID: 854 Comm: irq/100-ee22000 Not tainted 4.1.17-ltsi-00406-gc9cf65c-dirty #33
Hardware name: Generic R8A7790 (Flattened Device Tree)
task: eeb23640 ti: ee170000 task.ti: ee170000
PC is at sh_mmcif_irqt+0x8c0/0xbc4
LR is at sh_mmcif_irqt+0x50/0xbc4
pc : [<c03c663c>]    lr : [<c03c5dcc>]    psr: 80000013
sp : ee171eb8  ip : ee171eb8  fp : ee171f04
r10: 00000000  r9 : 00000001  r8 : edbdc820
r7 : edbdc800  r6 : ee1b98f8  r5 : ee1b9834  r4 : edbde6c0
r3 : 00000000  r2 : 00000200  r1 : 00000000  r0 : edbde738
Flags: Nzcv  IRQs on  FIQs on  Mode SVC_32  ISA ARM  Segment kernel
Control: 10c5307d  Table: 6d14c06a  DAC: 00000015
Process irq/100-ee22000 (pid: 854, stack limit = 0xee170210)
Stack: (0xee171eb8 to 0xee172000)
1ea0:                                                       ee171f0c ee171ec8
1ec0: c050650c c004222c 00000003 00000001 edbde6f4 edbde738 ee171f14 edbdc800
1ee0: ee170000 eea77a00 edbdc800 edbdc820 00000001 00000000 ee171f24 ee171f08
1f00: c005e040 c03c5d88 eea77a00 ee170000 c005e01c edbdc800 ee171f5c ee171f28
1f20: c005e320 c005e028 00000000 c005e178 00000000 edbdc7c0 00000000 edbdc800
1f40: c005e22c 00000000 00000000 00000000 ee171fac ee171f60 c003e288 c005e238
1f60: c00369dc 00000000 c000b3a8 edbdc800 00000000 00000000 ee171f78 ee171f78
1f80: 00000000 00000000 ee171f88 ee171f88 edbdc7c0 c003e1a8 00000000 00000000
1fa0: 00000000 ee171fb0 c000fc88 c003e1b4 00000000 00000000 00000000 00000000
1fc0: 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000
1fe0: 00000000 00000000 00000000 00000000 00000013 00000000 5cd0050a 10084ac0
Backtrace: 
[<c03c5d7c>] (sh_mmcif_irqt) from [<c005e040>] (irq_thread_fn+0x24/0x3c)
 r10:00000000 r9:00000001 r8:edbdc820 r7:edbdc800 r6:eea77a00 r5:ee170000
 r4:edbdc800
[<c005e01c>] (irq_thread_fn) from [<c005e320>] (irq_thread+0xf4/0x16c)
 r7:edbdc800 r6:c005e01c r5:ee170000 r4:eea77a00
[<c005e22c>] (irq_thread) from [<c003e288>] (kthread+0xe0/0xf4)
 r10:00000000 r9:00000000 r8:00000000 r7:c005e22c r6:edbdc800 r5:00000000
 r4:edbdc7c0
[<c003e1a8>] (kthread) from [<c000fc88>] (ret_from_fork+0x14/0x2c)
 r7:00000000 r6:00000000 r5:c003e1a8 r4:edbdc7c0
Code: e7f001f2 e5942068 e1530122 2a000004 (e4910004) 
---[ end trace 868aecf2db5e9844 ]---
Unable to handle kernel paging request at virtual address ffffffec
pgd = c0004000
[ffffffec] *pgd=6f7fd821, *pte=00000000, *ppte=00000000
Internal error: Oops: 17 [#2] SMP ARM
CPU: 0 PID: 854 Comm: irq/100-ee22000 Tainted: G      D         4.1.17-ltsi-00406-gc9cf65c-dirty #33
Hardware name: Generic R8A7790 (Flattened Device Tree)
task: eeb23640 ti: ee170000 task.ti: ee170000
PC is at kthread_data+0x10/0x18
LR is at irq_thread_dtor+0x58/0xb4
pc : [<c003e46c>]    lr : [<c005e1d0>]    psr: 20000113
sp : ee171c60  ip : ee171c70  fp : ee171c6c
r10: c06ca56c  r9 : ee171d22  r8 : 00000001
r7 : ee171cb8  r6 : c06f61a8  r5 : eeb23640  r4 : eeb23640
r3 : 00000000  r2 : ee171f28  r1 : ee171f28  r0 : eeb23640
Flags: nzCv  IRQs on  FIQs on  Mode SVC_32  ISA ARM  Segment user
Control: 10c5307d  Table: 6d14c06a  DAC: 00000015
Process irq/100-ee22000 (pid: 854, stack limit = 0xee170210)
Stack: (0xee171c60 to 0xee172000)
1c60: ee171c84 ee171c70 c005e1d0 c003e468 eeb23640 00000000 ee171ca4 ee171c88
1c80: c003d1fc c005e184 eeb23640 00000000 0000000b ee171cb8 ee171cd4 ee171ca8
1ca0: c002870c c003d14c ee171e70 0000000b c03c663e 00000000 ee171cd4 ee171cc8
1cc0: c00262cc c03c663e ee171d54 ee171cd8 c0013420 c0028358 ee170210 0000000b
1ce0: c03c663c 60000113 00000008 00000000 6505c48c 30306637 20326631 34393565
1d00: 38363032 35316520 32313033 61322032 30303030 28203430 31393465 34303030
1d20: c0002029 c05047bc c061d633 00000000 ee171e70 00000017 00000000 00000000
1d40: 00000017 00000000 ee171d6c ee171d58 c050451c c0013140 ee171e70 eeb23640
1d60: ee171dc4 ee171d70 c001c7dc c05044cc c005dbe4 c005ff08 eefaa4c0 eefaa4c0
1d80: ee171da4 eea77a00 eea77a60 c06c0be4 ee806000 00000001 00000001 00000017
1da0: 00000000 c06ca9a4 ee171e70 edbdc820 00000001 00000000 ee171e6c ee171dc8
1dc0: c000a24c c001c534 c06c0be4 ee806000 00000001 00000001 ee171dfc ee171de8
1de0: c00295e0 c0066fd0 ee171e14 ee171df8 c0069220 c0509aec c07086bc edbde6f4
1e00: edbde704 ee171e6c ee171e64 ee171e18 c003a15c c0037624 c0077d2c a0000093
1e20: c06c24c0 edbde6f4 edbde6f4 00000003 ee171e64 ee171e40 c0038f34 c0069dc8
1e40: 00000001 ffffffe0 edbde6f4 00000001 c03c663c 80000013 ffffffff ee171ea4
1e60: ee171f04 ee171e70 c0013c58 c000a21c edbde738 00000000 00000200 00000000
1e80: edbde6c0 ee1b9834 ee1b98f8 edbdc800 edbdc820 00000001 00000000 ee171f04
1ea0: ee171eb8 ee171eb8 c03c5dcc c03c663c 80000013 ffffffff ee171f0c ee171ec8
1ec0: c050650c c004222c 00000003 00000001 edbde6f4 edbde738 ee171f14 edbdc800
1ee0: ee170000 eea77a00 edbdc800 edbdc820 00000001 00000000 ee171f24 ee171f08
1f00: c005e040 c03c5d88 eea77a00 ee170000 c005e01c edbdc800 ee171f5c ee171f28
1f20: c005e320 c005e028 00000000 c005e178 00000000 edbdc7c0 00000000 edbdc800
1f40: c005e22c 00000000 00000000 00000000 ee171fac ee171f60 c003e288 c005e238
1f60: c00369dc 00000000 c000b3a8 edbdc800 00000000 00000000 ee171f78 ee171f78
1f80: 00000001 00010001 ee171f88 ee171f88 edbdc7c0 c003e1a8 00000000 00000000
1fa0: 00000000 ee171fb0 c000fc88 c003e1b4 00000000 00000000 00000000 00000000
1fc0: 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000
1fe0: 00000000 00000000 00000000 00000000 00000013 00000000 5cd0050a 10084ac0
Backtrace: 
[<c003e45c>] (kthread_data) from [<c005e1d0>] (irq_thread_dtor+0x58/0xb4)
[<c005e178>] (irq_thread_dtor) from [<c003d1fc>] (task_work_run+0xbc/0xd0)
 r5:00000000 r4:eeb23640
[<c003d140>] (task_work_run) from [<c002870c>] (do_exit+0x3c0/0x870)
 r7:ee171cb8 r6:0000000b r5:00000000 r4:eeb23640
[<c002834c>] (do_exit) from [<c0013420>] (die+0x2ec/0x3ec)
 r7:c03c663e
[<c0013134>] (die) from [<c050451c>] (__do_kernel_fault.part.0+0x5c/0x7c)
 r10:00000000 r9:00000017 r8:00000000 r7:00000000 r6:00000017 r5:ee171e70
 r4:00000000
[<c05044c0>] (__do_kernel_fault.part.0) from [<c001c7dc>] (do_page_fault+0x2b4/0x33c)
 r7:eeb23640 r4:ee171e70
[<c001c528>] (do_page_fault) from [<c000a24c>] (do_DataAbort+0x3c/0xbc)
 r10:00000000 r9:00000001 r8:edbdc820 r7:ee171e70 r6:c06ca9a4 r5:00000000
 r4:00000017
[<c000a210>] (do_DataAbort) from [<c0013c58>] (__dabt_svc+0x38/0x60)
Exception stack(0xee171e70 to 0xee171eb8)
1e60:                                     edbde738 00000000 00000200 00000000
1e80: edbde6c0 ee1b9834 ee1b98f8 edbdc800 edbdc820 00000001 00000000 ee171f04
1ea0: ee171eb8 ee171eb8 c03c5dcc c03c663c 80000013 ffffffff
 r7:ee171ea4 r6:ffffffff r5:80000013 r4:c03c663c
[<c03c5d7c>] (sh_mmcif_irqt) from [<c005e040>] (irq_thread_fn+0x24/0x3c)
 r10:00000000 r9:00000001 r8:edbdc820 r7:edbdc800 r6:eea77a00 r5:ee170000
 r4:edbdc800
[<c005e01c>] (irq_thread_fn) from [<c005e320>] (irq_thread+0xf4/0x16c)
 r7:edbdc800 r6:c005e01c r5:ee170000 r4:eea77a00
[<c005e22c>] (irq_thread) from [<c003e288>] (kthread+0xe0/0xf4)
 r10:00000000 r9:00000000 r8:00000000 r7:c005e22c r6:edbdc800 r5:00000000
 r4:edbdc7c0
[<c003e1a8>] (kthread) from [<c000fc88>] (ret_from_fork+0x14/0x2c)
 r7:00000000 r6:00000000 r5:c003e1a8 r4:edbdc7c0
Code: e1a0c00d e92dd800 e24cb004 e5903270 (e5130014) 
sched: RT throttling activated
---[ end trace 868aecf2db5e9845 ]---
Fixing recursive fault but reboot is needed!


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

* Re: [PATCH 1/3] mmc: sh_mmcif: Make sure the device stays active when needed in ->probe()
  2016-03-07  3:17   ` Nguyen Viet Dung
@ 2016-03-16  9:53     ` Ulf Hansson
  2016-03-17  7:36       ` Nguyen Viet Dung
  0 siblings, 1 reply; 8+ messages in thread
From: Ulf Hansson @ 2016-03-16  9:53 UTC (permalink / raw
  To: Nguyen Viet Dung
  Cc: Kuninori Morimoto, Geert Uytterhoeven, Magnus Damm, Simon Horman,
	linux-mmc, Laurent Pinchart

On 7 March 2016 at 04:17, Nguyen Viet Dung <nv-dung@jinso.co.jp> wrote:
> Hi Ulf
>
> I have testted two cases use these patchs that you send.
>
> case01:
> [PATCH 1/3] mmc: sh_mmcif: Make sure the device stays active when needed in
> ->probe()
> [PATCH 2/3] mmc: sh_mmcif: Restructure ->set_ios()
> [PATCH 3/3] mmc: sh_mmci: Get rid of wrapper function for regulators
>
> case02:
> [PATCH 1/3] mmc: sh_mmcif: Make sure the device stays active when needed in
> ->probe()
>
> The problem of mmcif is not resolved by both two cases.

Okay, thanks for testing!

Even if it doesn't solve you original issue after a system PM resumed
has been accomplished, does the driver still works as before? In other
words are cards detected properly and can data transfers be done?

The reason for my question, is that I think these patches makes some
nice cleanups of some of the PM related code in the driver. So unless
you see a *new* regression, I would like to apply them.

[...]

Kind regards
Uffe

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

* Re: [PATCH 1/3] mmc: sh_mmcif: Make sure the device stays active when needed in ->probe()
  2016-03-16  9:53     ` Ulf Hansson
@ 2016-03-17  7:36       ` Nguyen Viet Dung
  2016-04-05 11:11         ` Ulf Hansson
  0 siblings, 1 reply; 8+ messages in thread
From: Nguyen Viet Dung @ 2016-03-17  7:36 UTC (permalink / raw
  To: Ulf Hansson
  Cc: Kuninori Morimoto, Geert Uytterhoeven, Magnus Damm, Simon Horman,
	linux-mmc, Laurent Pinchart

Hi Ulf,

Thank for your reply.

On 2016年03月16日 18:53, Ulf Hansson wrote:
> On 7 March 2016 at 04:17, Nguyen Viet Dung <nv-dung@jinso.co.jp> wrote:
>> Hi Ulf
>>
>> I have testted two cases use these patchs that you send.
>>
>> case01:
>> [PATCH 1/3] mmc: sh_mmcif: Make sure the device stays active when needed in
>> ->probe()
>> [PATCH 2/3] mmc: sh_mmcif: Restructure ->set_ios()
>> [PATCH 3/3] mmc: sh_mmci: Get rid of wrapper function for regulators
>>
>> case02:
>> [PATCH 1/3] mmc: sh_mmcif: Make sure the device stays active when needed in
>> ->probe()
>>
>> The problem of mmcif is not resolved by both two cases.
> Okay, thanks for testing!
>
> Even if it doesn't solve you original issue after a system PM resumed
> has been accomplished, does the driver still works as before? In other
> words are cards detected properly and can data transfers be done?
After a system PM resumed has been accomplished,if write data to mmc then
happen kernel panic.
> The reason for my question, is that I think these patches makes some
> nice cleanups of some of the PM related code in the driver. So unless
> you see a *new* regression, I would like to apply them.
If see only this problem of mmc,i can not know effect of these patchs.

Best regards,
Nguyen Viet Dung.

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

* Re: [PATCH 1/3] mmc: sh_mmcif: Make sure the device stays active when needed in ->probe()
  2016-03-17  7:36       ` Nguyen Viet Dung
@ 2016-04-05 11:11         ` Ulf Hansson
  0 siblings, 0 replies; 8+ messages in thread
From: Ulf Hansson @ 2016-04-05 11:11 UTC (permalink / raw
  To: Nguyen Viet Dung
  Cc: Kuninori Morimoto, Geert Uytterhoeven, Magnus Damm, Simon Horman,
	linux-mmc, Laurent Pinchart

On 17 March 2016 at 08:36, Nguyen Viet Dung <nv-dung@jinso.co.jp> wrote:
> Hi Ulf,
>
> Thank for your reply.
>
> On 2016年03月16日 18:53, Ulf Hansson wrote:
>>
>> On 7 March 2016 at 04:17, Nguyen Viet Dung <nv-dung@jinso.co.jp> wrote:
>>>
>>> Hi Ulf
>>>
>>> I have testted two cases use these patchs that you send.
>>>
>>> case01:
>>> [PATCH 1/3] mmc: sh_mmcif: Make sure the device stays active when needed
>>> in
>>> ->probe()
>>> [PATCH 2/3] mmc: sh_mmcif: Restructure ->set_ios()
>>> [PATCH 3/3] mmc: sh_mmci: Get rid of wrapper function for regulators
>>>
>>> case02:
>>> [PATCH 1/3] mmc: sh_mmcif: Make sure the device stays active when needed
>>> in
>>> ->probe()
>>>
>>> The problem of mmcif is not resolved by both two cases.
>>
>> Okay, thanks for testing!
>>
>> Even if it doesn't solve you original issue after a system PM resumed
>> has been accomplished, does the driver still works as before? In other
>> words are cards detected properly and can data transfers be done?
>
> After a system PM resumed has been accomplished,if write data to mmc then
> happen kernel panic.
>>
>> The reason for my question, is that I think these patches makes some
>> nice cleanups of some of the PM related code in the driver. So unless
>> you see a *new* regression, I would like to apply them.
>
> If see only this problem of mmc,i can not know effect of these patchs.

As I understand your test, there are no new issues observed. For that
reason, I am going to apply patch 1->3 for next to give them some more
testing. Please tell me if any new issues pops up.

Regarding the issue you reported as a regression, unfortunate it seems
like someone with the hardware at hand needs to some debugging.

Kind regards
Uffe

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

end of thread, other threads:[~2016-04-05 11:11 UTC | newest]

Thread overview: 8+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2016-02-11 12:59 [PATCH 1/3] mmc: sh_mmcif: Make sure the device stays active when needed in ->probe() Ulf Hansson
2016-02-11 12:59 ` [PATCH 2/3] mmc: sh_mmcif: Restructure ->set_ios() Ulf Hansson
2016-02-11 12:59 ` [PATCH 3/3] mmc: sh_mmci: Get rid of wrapper function for regulators Ulf Hansson
2016-03-03 14:59 ` [PATCH 1/3] mmc: sh_mmcif: Make sure the device stays active when needed in ->probe() Ulf Hansson
2016-03-07  3:17   ` Nguyen Viet Dung
2016-03-16  9:53     ` Ulf Hansson
2016-03-17  7:36       ` Nguyen Viet Dung
2016-04-05 11:11         ` 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.