[linux-yocto] [PATCH 1/1] dma: xilinx: dpdma: alloc xilinx_dpdma_tx_desc using GFP_ATOMIC

2019-10-22 Thread quanyang.wang
From: Quanyang Wang 

The function xilinx_dpdma_chan_alloc_tx_desc can be called
from atomic context, hence use GFP_ATOMIC instead of GFP_KERNEL,
or else it will cause the calltrace as below:

BUG: sleeping function called from invalid context at mm/slab.h:418
in_atomic(): 1, irqs_disabled(): 128, pid: 416, name: alsa-sink-(null 
Preemption disabled at:
[] snd_pcm_stream_lock_irq+0x40/0x50
CPU: 2 PID: 416 Comm: alsa-sink-(null Tainted: G O 5.2.17-yocto-standard #1
Hardware name: ZynqMP ZCU102 Rev1.0 (DT) Call trace:
dump_backtrace+0x0/0x138
show_stack+0x24/0x30
dump_stack+0x94/0xbc
___might_sleep+0x14c/0x178
__might_sleep+0x58/0x90
kmem_cache_alloc_trace+0x1a4/0x300
xilinx_dpdma_chan_alloc_tx_desc.isra.0+0x24/0x40
xilinx_dpdma_prep_dma_cyclic+0xc0/0x208
snd_dmaengine_pcm_trigger+0xf8/0x198
soc_pcm_trigger+0xb4/0x128
snd_pcm_do_start+0x48/0x58
snd_pcm_action_single+0x4c/0xa0
snd_pcm_action+0x78/0x90
snd_pcm_action_lock_irq+0x3c/0x60
snd_pcm_common_ioctl+0x4ac/0x10c8
snd_pcm_ioctl+0x48/0x68
do_vfs_ioctl+0x6d4/0x968
ksys_ioctl+0x84/0xb8
__arm64_sys_ioctl+0x28/0x38
el0_svc_common.constprop.0+0x74/0x180
el0_svc_handler+0x70/0x90
el0_svc+0x8/0xc

Signed-off-by: Quanyang Wang 
Reviewed-by: Hyun Kwon 
---
There are two available flags which can be used here: GFP_ATOMIC
and GFP_NOWAIT. The difference is that GFP_ATOMIC may grab memory
from emergency pools but GFP_NOWAIT not. Since struct xilinx_dpdma_tx_desc
is small, use GFP_ATOMIC is better.

 drivers/dma/xilinx/xilinx_dpdma.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/drivers/dma/xilinx/xilinx_dpdma.c 
b/drivers/dma/xilinx/xilinx_dpdma.c
index 1ea509e00742..89ade893f51c 100644
--- a/drivers/dma/xilinx/xilinx_dpdma.c
+++ b/drivers/dma/xilinx/xilinx_dpdma.c
@@ -797,7 +797,7 @@ xilinx_dpdma_chan_alloc_tx_desc(struct xilinx_dpdma_chan 
*chan)
 {
struct xilinx_dpdma_tx_desc *tx_desc;
 
-   tx_desc = kzalloc(sizeof(*tx_desc), GFP_KERNEL);
+   tx_desc = kzalloc(sizeof(*tx_desc), GFP_ATOMIC);
if (!tx_desc)
return NULL;
 
-- 
2.17.1

-- 
___
linux-yocto mailing list
linux-yocto@yoctoproject.org
https://lists.yoctoproject.org/listinfo/linux-yocto


[linux-yocto] [kernel v5.2/standard/xlnx-soc][PATCH 0/1] [V2] xilinx-zynqmp: fix calltrace

2019-10-22 Thread quanyang.wang
From: Quanyang Wang 

Hi Bruce,

This patch is a V2 patch but no change against V1. Just add some comments
in the temporary section of the patch.

Would you please help merge these patches to linux-yocto v5.2/standard/xlnx-soc 
branch?

Quanyang Wang (1):
  dma: xilinx: dpdma: alloc xilinx_dpdma_tx_desc using GFP_ATOMIC

 drivers/dma/xilinx/xilinx_dpdma.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

-- 
2.17.1

-- 
___
linux-yocto mailing list
linux-yocto@yoctoproject.org
https://lists.yoctoproject.org/listinfo/linux-yocto


Re: [linux-yocto] [PATCH] arm64: dts: r8a7795: Add CPUIdle support for all CPU core

2019-10-22 Thread Bruce Ashfield
This should already be on the branches:

Author: Takeshi Kihara 
Date:   Tue Oct 15 13:46:44 2019 +0800

arm64: dts: r8a7795: Add CPUIdle support for all CPU core

commit 3c3b44c752c4eef9a29694f4262934445c5f5da9 from
git://git.kernel.org/pub/scm/linux/kernel/git/horms/renesas-bsp.git

This patch enables CPUIdle (Core shutdown) support for R-Car H3.

Signed-off-by: Takeshi Kihara 
Signed-off-by: Meng Li 
Signed-off-by: Bruce Ashfield 

:100644 100644 097538cc4b1f 7596216409cd M
arch/arm64/boot/dts/renesas/r8a7795.dtsi

On Tue, Oct 22, 2019 at 10:47 PM  wrote:
>
> From: Takeshi Kihara 
>
> commit 3c3b44c752c4eef9a29694f4262934445c5f5da9 from
> git://git.kernel.org/pub/scm/linux/kernel/git/horms/renesas-bsp.git
>
> This patch enables CPUIdle (Core shutdown) support for R-Car H3.
>
> Signed-off-by: Takeshi Kihara 
> Signed-off-by: Meng Li 
> ---
>  arch/arm64/boot/dts/renesas/r8a7795.dtsi | 32 
> 
>  1 file changed, 32 insertions(+)
>
> diff --git a/arch/arm64/boot/dts/renesas/r8a7795.dtsi 
> b/arch/arm64/boot/dts/renesas/r8a7795.dtsi
> index e8c3d5f..7fe7428 100644
> --- a/arch/arm64/boot/dts/renesas/r8a7795.dtsi
> +++ b/arch/arm64/boot/dts/renesas/r8a7795.dtsi
> @@ -123,6 +123,7 @@
> power-domains = < R8A7795_PD_CA57_CPU0>;
> next-level-cache = <_CA57>;
> enable-method = "psci";
> +   cpu-idle-states = <_SLEEP_0>;
> clocks = < CPG_CORE R8A7795_CLK_Z>;
> operating-points-v2 = <_opp>;
> capacity-dmips-mhz = <1024>;
> @@ -135,6 +136,7 @@
> power-domains = < R8A7795_PD_CA57_CPU1>;
> next-level-cache = <_CA57>;
> enable-method = "psci";
> +   cpu-idle-states = <_SLEEP_0>;
> clocks = < CPG_CORE R8A7795_CLK_Z>;
> operating-points-v2 = <_opp>;
> capacity-dmips-mhz = <1024>;
> @@ -147,6 +149,7 @@
> power-domains = < R8A7795_PD_CA57_CPU2>;
> next-level-cache = <_CA57>;
> enable-method = "psci";
> +   cpu-idle-states = <_SLEEP_0>;
> clocks = < CPG_CORE R8A7795_CLK_Z>;
> operating-points-v2 = <_opp>;
> capacity-dmips-mhz = <1024>;
> @@ -159,6 +162,7 @@
> power-domains = < R8A7795_PD_CA57_CPU3>;
> next-level-cache = <_CA57>;
> enable-method = "psci";
> +   cpu-idle-states = <_SLEEP_0>;
> clocks = < CPG_CORE R8A7795_CLK_Z>;
> operating-points-v2 = <_opp>;
> capacity-dmips-mhz = <1024>;
> @@ -171,6 +175,7 @@
> power-domains = < R8A7795_PD_CA53_CPU0>;
> next-level-cache = <_CA53>;
> enable-method = "psci";
> +   cpu-idle-states = <_SLEEP_1>;
> clocks = < CPG_CORE R8A7795_CLK_Z2>;
> operating-points-v2 = <_opp>;
> capacity-dmips-mhz = <535>;
> @@ -182,6 +187,7 @@
> power-domains = < R8A7795_PD_CA53_CPU1>;
> next-level-cache = <_CA53>;
> enable-method = "psci";
> +   cpu-idle-states = <_SLEEP_1>;
> clocks = < CPG_CORE R8A7795_CLK_Z2>;
> operating-points-v2 = <_opp>;
> capacity-dmips-mhz = <535>;
> @@ -193,6 +199,7 @@
> power-domains = < R8A7795_PD_CA53_CPU2>;
> next-level-cache = <_CA53>;
> enable-method = "psci";
> +   cpu-idle-states = <_SLEEP_1>;
> clocks = < CPG_CORE R8A7795_CLK_Z2>;
> operating-points-v2 = <_opp>;
> capacity-dmips-mhz = <535>;
> @@ -204,6 +211,7 @@
> power-domains = < R8A7795_PD_CA53_CPU3>;
> next-level-cache = <_CA53>;
> enable-method = "psci";
> +   cpu-idle-states = <_SLEEP_1>;
> clocks = < CPG_CORE R8A7795_CLK_Z2>;
> operating-points-v2 = <_opp>;
> capacity-dmips-mhz = <535>;
> @@ -221,6 +229,30 @@
> cache-unified;
> cache-level = <2>;
> };
> +
> +   idle-states {
> +   entry-method = "psci";
> +
> +   CPU_SLEEP_0: cpu-sleep-0 {
> +   compatible = "arm,idle-state";
> +   

Re: [linux-yocto] [PATCH] arm64: dts: r8a7795: Add CPUIdle support for all CPU core

2019-10-22 Thread Bruce Ashfield
On Tue, Oct 22, 2019 at 10:57 PM Bruce Ashfield
 wrote:
>
> This should already be on the branches:
>

.. and I forgot the commit id:

c93bf81feabf89b5ee77838d3bb62825d04dab09

Bruce

> Author: Takeshi Kihara 
> Date:   Tue Oct 15 13:46:44 2019 +0800
>
> arm64: dts: r8a7795: Add CPUIdle support for all CPU core
>
> commit 3c3b44c752c4eef9a29694f4262934445c5f5da9 from
> git://git.kernel.org/pub/scm/linux/kernel/git/horms/renesas-bsp.git
>
> This patch enables CPUIdle (Core shutdown) support for R-Car H3.
>
> Signed-off-by: Takeshi Kihara 
> Signed-off-by: Meng Li 
> Signed-off-by: Bruce Ashfield 
>
> :100644 100644 097538cc4b1f 7596216409cd M
> arch/arm64/boot/dts/renesas/r8a7795.dtsi
>
> On Tue, Oct 22, 2019 at 10:47 PM  wrote:
> >
> > From: Takeshi Kihara 
> >
> > commit 3c3b44c752c4eef9a29694f4262934445c5f5da9 from
> > git://git.kernel.org/pub/scm/linux/kernel/git/horms/renesas-bsp.git
> >
> > This patch enables CPUIdle (Core shutdown) support for R-Car H3.
> >
> > Signed-off-by: Takeshi Kihara 
> > Signed-off-by: Meng Li 
> > ---
> >  arch/arm64/boot/dts/renesas/r8a7795.dtsi | 32 
> > 
> >  1 file changed, 32 insertions(+)
> >
> > diff --git a/arch/arm64/boot/dts/renesas/r8a7795.dtsi 
> > b/arch/arm64/boot/dts/renesas/r8a7795.dtsi
> > index e8c3d5f..7fe7428 100644
> > --- a/arch/arm64/boot/dts/renesas/r8a7795.dtsi
> > +++ b/arch/arm64/boot/dts/renesas/r8a7795.dtsi
> > @@ -123,6 +123,7 @@
> > power-domains = < R8A7795_PD_CA57_CPU0>;
> > next-level-cache = <_CA57>;
> > enable-method = "psci";
> > +   cpu-idle-states = <_SLEEP_0>;
> > clocks = < CPG_CORE R8A7795_CLK_Z>;
> > operating-points-v2 = <_opp>;
> > capacity-dmips-mhz = <1024>;
> > @@ -135,6 +136,7 @@
> > power-domains = < R8A7795_PD_CA57_CPU1>;
> > next-level-cache = <_CA57>;
> > enable-method = "psci";
> > +   cpu-idle-states = <_SLEEP_0>;
> > clocks = < CPG_CORE R8A7795_CLK_Z>;
> > operating-points-v2 = <_opp>;
> > capacity-dmips-mhz = <1024>;
> > @@ -147,6 +149,7 @@
> > power-domains = < R8A7795_PD_CA57_CPU2>;
> > next-level-cache = <_CA57>;
> > enable-method = "psci";
> > +   cpu-idle-states = <_SLEEP_0>;
> > clocks = < CPG_CORE R8A7795_CLK_Z>;
> > operating-points-v2 = <_opp>;
> > capacity-dmips-mhz = <1024>;
> > @@ -159,6 +162,7 @@
> > power-domains = < R8A7795_PD_CA57_CPU3>;
> > next-level-cache = <_CA57>;
> > enable-method = "psci";
> > +   cpu-idle-states = <_SLEEP_0>;
> > clocks = < CPG_CORE R8A7795_CLK_Z>;
> > operating-points-v2 = <_opp>;
> > capacity-dmips-mhz = <1024>;
> > @@ -171,6 +175,7 @@
> > power-domains = < R8A7795_PD_CA53_CPU0>;
> > next-level-cache = <_CA53>;
> > enable-method = "psci";
> > +   cpu-idle-states = <_SLEEP_1>;
> > clocks = < CPG_CORE R8A7795_CLK_Z2>;
> > operating-points-v2 = <_opp>;
> > capacity-dmips-mhz = <535>;
> > @@ -182,6 +187,7 @@
> > power-domains = < R8A7795_PD_CA53_CPU1>;
> > next-level-cache = <_CA53>;
> > enable-method = "psci";
> > +   cpu-idle-states = <_SLEEP_1>;
> > clocks = < CPG_CORE R8A7795_CLK_Z2>;
> > operating-points-v2 = <_opp>;
> > capacity-dmips-mhz = <535>;
> > @@ -193,6 +199,7 @@
> > power-domains = < R8A7795_PD_CA53_CPU2>;
> > next-level-cache = <_CA53>;
> > enable-method = "psci";
> > +   cpu-idle-states = <_SLEEP_1>;
> > clocks = < CPG_CORE R8A7795_CLK_Z2>;
> > operating-points-v2 = <_opp>;
> > capacity-dmips-mhz = <535>;
> > @@ -204,6 +211,7 @@
> > power-domains = < R8A7795_PD_CA53_CPU3>;
> > next-level-cache = <_CA53>;
> > enable-method = "psci";
> > +   cpu-idle-states = <_SLEEP_1>;
> > clocks = < CPG_CORE R8A7795_CLK_Z2>;
> > operating-points-v2 = <_opp>;
> > capacity-dmips-mhz = <535>;
> > @@ -221,6 +229,30 @@
> > 

Re: [linux-yocto] [kernel v5.2/standard/xlnx-soc][PATCH 0/1] xilinx-zynqmp: fix calltrace

2019-10-22 Thread Bruce Ashfield
In message: [linux-yocto][kernel v5.2/standard/xlnx-soc][PATCH 0/1] 
xilinx-zynqmp: fix calltrace
on 15/10/2019 quanyang.w...@windriver.com wrote:

> From: Quanyang Wang 
> 
> Hi Bruce, Michal,
> 
> This patch fixes a calltrace when enable CONFIG_TRACING kernel option.
> 
> Would you please help review and merge these patches to linux-yocto
> v5.2/standard/xlnx-soc branch?

I've dropped this from my pending queue. Can you send a v2 (clearly
marked .. these series are starting to get tangled) with the comments
of this thread summarized in the temporary section of the patch.

That way, I'll know that I'm merging the proper version.

Bruce

> 
> Quanyang Wang (1):
>   dma: xilinx: dpdma: alloc xilinx_dpdma_tx_desc using GFP_ATOMIC
> 
>  drivers/dma/xilinx/xilinx_dpdma.c | 2 +-
>  1 file changed, 1 insertion(+), 1 deletion(-)
> 
> -- 
> 2.17.1
> 
-- 
___
linux-yocto mailing list
linux-yocto@yoctoproject.org
https://lists.yoctoproject.org/listinfo/linux-yocto


Re: [linux-yocto] [yocto-kernel-cache master/yocto-5.2][PATCH] marvell-cn96xx: Add profiling feature

2019-10-22 Thread Bruce Ashfield
In message: [linux-yocto][yocto-kernel-cache master/yocto-5.2][PATCH] 
marvell-cn96xx: Add profiling feature
on 21/10/2019 zhe...@windriver.com wrote:

> From: He Zhe 
> 
> Add profiling related options for convenience for perf and etc.

merged.

Bruce

> 
> Signed-off-by: He Zhe 
> ---
>  bsp/marvell-cn96xx/marvell-cn96xx.scc | 1 +
>  1 file changed, 1 insertion(+)
> 
> diff --git a/bsp/marvell-cn96xx/marvell-cn96xx.scc 
> b/bsp/marvell-cn96xx/marvell-cn96xx.scc
> index b98c442f..08d2e721 100644
> --- a/bsp/marvell-cn96xx/marvell-cn96xx.scc
> +++ b/bsp/marvell-cn96xx/marvell-cn96xx.scc
> @@ -5,3 +5,4 @@ kconf hardware features/edac/edac.cfg
>  include cfg/usb-mass-storage.scc
>  
>  include features/hugetlb/hugetlb.scc
> +include features/profiling/profiling.scc
> -- 
> 2.17.1
> 
-- 
___
linux-yocto mailing list
linux-yocto@yoctoproject.org
https://lists.yoctoproject.org/listinfo/linux-yocto


[linux-yocto] [PATCH] arm64: dts: r8a7795: Add CPUIdle support for all CPU core

2019-10-22 Thread Meng.Li
From: Takeshi Kihara 

commit 3c3b44c752c4eef9a29694f4262934445c5f5da9 from
git://git.kernel.org/pub/scm/linux/kernel/git/horms/renesas-bsp.git

This patch enables CPUIdle (Core shutdown) support for R-Car H3.

Signed-off-by: Takeshi Kihara 
Signed-off-by: Meng Li 
---
 arch/arm64/boot/dts/renesas/r8a7795.dtsi | 32 
 1 file changed, 32 insertions(+)

diff --git a/arch/arm64/boot/dts/renesas/r8a7795.dtsi 
b/arch/arm64/boot/dts/renesas/r8a7795.dtsi
index e8c3d5f..7fe7428 100644
--- a/arch/arm64/boot/dts/renesas/r8a7795.dtsi
+++ b/arch/arm64/boot/dts/renesas/r8a7795.dtsi
@@ -123,6 +123,7 @@
power-domains = < R8A7795_PD_CA57_CPU0>;
next-level-cache = <_CA57>;
enable-method = "psci";
+   cpu-idle-states = <_SLEEP_0>;
clocks = < CPG_CORE R8A7795_CLK_Z>;
operating-points-v2 = <_opp>;
capacity-dmips-mhz = <1024>;
@@ -135,6 +136,7 @@
power-domains = < R8A7795_PD_CA57_CPU1>;
next-level-cache = <_CA57>;
enable-method = "psci";
+   cpu-idle-states = <_SLEEP_0>;
clocks = < CPG_CORE R8A7795_CLK_Z>;
operating-points-v2 = <_opp>;
capacity-dmips-mhz = <1024>;
@@ -147,6 +149,7 @@
power-domains = < R8A7795_PD_CA57_CPU2>;
next-level-cache = <_CA57>;
enable-method = "psci";
+   cpu-idle-states = <_SLEEP_0>;
clocks = < CPG_CORE R8A7795_CLK_Z>;
operating-points-v2 = <_opp>;
capacity-dmips-mhz = <1024>;
@@ -159,6 +162,7 @@
power-domains = < R8A7795_PD_CA57_CPU3>;
next-level-cache = <_CA57>;
enable-method = "psci";
+   cpu-idle-states = <_SLEEP_0>;
clocks = < CPG_CORE R8A7795_CLK_Z>;
operating-points-v2 = <_opp>;
capacity-dmips-mhz = <1024>;
@@ -171,6 +175,7 @@
power-domains = < R8A7795_PD_CA53_CPU0>;
next-level-cache = <_CA53>;
enable-method = "psci";
+   cpu-idle-states = <_SLEEP_1>;
clocks = < CPG_CORE R8A7795_CLK_Z2>;
operating-points-v2 = <_opp>;
capacity-dmips-mhz = <535>;
@@ -182,6 +187,7 @@
power-domains = < R8A7795_PD_CA53_CPU1>;
next-level-cache = <_CA53>;
enable-method = "psci";
+   cpu-idle-states = <_SLEEP_1>;
clocks = < CPG_CORE R8A7795_CLK_Z2>;
operating-points-v2 = <_opp>;
capacity-dmips-mhz = <535>;
@@ -193,6 +199,7 @@
power-domains = < R8A7795_PD_CA53_CPU2>;
next-level-cache = <_CA53>;
enable-method = "psci";
+   cpu-idle-states = <_SLEEP_1>;
clocks = < CPG_CORE R8A7795_CLK_Z2>;
operating-points-v2 = <_opp>;
capacity-dmips-mhz = <535>;
@@ -204,6 +211,7 @@
power-domains = < R8A7795_PD_CA53_CPU3>;
next-level-cache = <_CA53>;
enable-method = "psci";
+   cpu-idle-states = <_SLEEP_1>;
clocks = < CPG_CORE R8A7795_CLK_Z2>;
operating-points-v2 = <_opp>;
capacity-dmips-mhz = <535>;
@@ -221,6 +229,30 @@
cache-unified;
cache-level = <2>;
};
+
+   idle-states {
+   entry-method = "psci";
+
+   CPU_SLEEP_0: cpu-sleep-0 {
+   compatible = "arm,idle-state";
+   arm,psci-suspend-param = <0x001>;
+   local-timer-stop;
+   entry-latency-us = <400>;
+   exit-latency-us = <500>;
+   min-residency-us = <4000>;
+   status = "okay";
+   };
+
+   CPU_SLEEP_1: cpu-sleep-1 {
+   compatible = "arm,idle-state";
+   arm,psci-suspend-param = <0x001>;
+   local-timer-stop;
+   entry-latency-us = <700>;
+   exit-latency-us = <700>;
+   min-residency-us = <5000>;
+   status = 

[linux-yocto] [linux-yocto-v5.2]: [kernel standard/base]: renesas-rcar: arm64: dts: r8a7795: Add CPUIdle support for all CPU core

2019-10-22 Thread Meng.Li
From: Limeng 

Hi Bruce,

I get below patch from SDK kernel to support cpu idle feature, and intend to 
merge it into yocto community.

0001-arm64-dts-r8a7795-Add-CPUIdle-support-for-all-CPU-co.patch

Could you please merge this patch into linux-yocto, branch is 
v5.2/standard/base?

 r8a7795.dtsi |   32 
 1 file changed, 32 insertions(+)


thanks,
Limeng
-- 
___
linux-yocto mailing list
linux-yocto@yoctoproject.org
https://lists.yoctoproject.org/listinfo/linux-yocto


Re: [linux-yocto] [PATCH 1/1] xilinx-zyqn: Move disable_nonboot_cpus() in front of local_irq_disable()

2019-10-22 Thread Bruce Ashfield
On Mon, Oct 21, 2019 at 11:27 PM Quanyang Wang
 wrote:
>
>
> On 10/21/19 8:05 PM, Bruce Ashfield wrote:
> > On Mon, Oct 21, 2019 at 6:45 AM Michal Simek  
> > wrote:
> >> On 21. 10. 19 10:45, Quanyang Wang wrote:
> >>> Hi Michal,
> >>>
> >>> On 10/21/19 4:16 PM, Michal Simek wrote:
>  On 21. 10. 19 7:50, quanyang.w...@windriver.com wrote:
> > From: Quanyang Wang 
> >
> > When run kdump with enabling CONFIG_DEBUG_PREEMPT, there is a calltrace
> > as below:
> >
> > BUG: using smp_processor_id() in preemptible [] code: sh/303
> > caller is machine_crash_shutdown+0x2c/0xe8
> > CPU: 0 PID: 303 Comm: sh Kdump: loaded Not tainted
> > 5.2.20-yocto-standard #1
> > Hardware name: Xilinx Zynq Platform
> > [<80112ff4>] (unwind_backtrace) from [<8010ca4c>] (show_stack+0x18/0x1c)
> > [<8010ca4c>] (show_stack) from [<809b000c>] (dump_stack+0x70/0x8c)
> > [<809b000c>] (dump_stack) from [<80549a14>]
> > (debug_smp_processor_id+0xd4/0x118)
> > [<80549a14>] (debug_smp_processor_id) from [<80111428>]
> > (machine_crash_shutdown+0x2c/0xe8)
> > [<80111428>] (machine_crash_shutdown) from [<801afe24>]
> > (__crash_kexec+0x70/0xd0)
> > [<801afe24>] (__crash_kexec) from [<801259b4>] (panic+0x110/0x324)
> > [<801259b4>] (panic) from [<805f7018>] (sysrq_handle_crash+0x18/0x1c)
> > [<805f7018>] (sysrq_handle_crash) from [<805f7584>]
> > (__handle_sysrq+0x9c/0x14c)
> > [<805f7584>] (__handle_sysrq) from [<805f79e8>]
> > (write_sysrq_trigger+0x5c/0x6c)
> > [<805f79e8>] (write_sysrq_trigger) from [<8031e850>]
> > (proc_reg_write+0x78/0x8c)
> > [<8031e850>] (proc_reg_write) from [<802b1b28>] (vfs_write+0xc0/0x154)
> > [<802b1b28>] (vfs_write) from [<802b2a64>] (ksys_write+0x6c/0xd4)
> > [<802b2a64>] (ksys_write) from [<80101000>] (ret_fast_syscall+0x0/0x54)
> > Exception stack(0xba157fa8 to 0xba157ff0)
> > 7fa0: 0002 005ab930 0001 005ab930 0002 
> > 7fc0: 0002 005ab930 76fa2290 0004 76f3d124 76f3cc8c 
> > 
> > 7fe0: 0004 7edec940 76edbfff 76e67d16
> >
> > This is because that the function disable_nonboot_cpus is called in
> > order to make sure that the crash kernel runs in the boot CPU(cpu0).
> > And it will enable local irq by calling as below:
> >
> > disable_nonboot_cpus
> >-> freeze_secondary_cpus
> > -> _cpu_down
> >  -> percpu_down_write
> >   -> rcu_sync_enter
> >-> spin_unlock_irq(>rss_lock)
> > -> local_irq_enable()
> >
> > Then the functions including smp_processor_id() behind
> > disable_nonboot_cpus
> > will run at the irq-enabled context, and this will trigger the
> > calltrace.
> >
> > So move disable_nonboot_cpus() in front of local_irq_disable() to avoid
> > it since disable_nonboot_cpus() not need run at an atomic context.
> >
> > Signed-off-by: Quanyang Wang 
> > ---
> >arch/arm/kernel/machine_kexec.c | 3 ++-
> >1 file changed, 2 insertions(+), 1 deletion(-)
> >
> > diff --git a/arch/arm/kernel/machine_kexec.c
> > b/arch/arm/kernel/machine_kexec.c
> > index 654f2b1f9ac0..83d2025a4ab1 100644
> > --- a/arch/arm/kernel/machine_kexec.c
> > +++ b/arch/arm/kernel/machine_kexec.c
> > @@ -145,9 +145,10 @@ static void machine_kexec_mask_interrupts(void)
> >  void machine_crash_shutdown(struct pt_regs *regs)
> >{
> > -local_irq_disable();
> >disable_nonboot_cpus();
> >+local_irq_disable();
> > +
> >crash_smp_send_stop();
> >  crash_save_cpu(regs, smp_processor_id());
> >
>  ok. Can you please check before this if your usecases work without
>  disable_nonboot_cpus(). This patch was done pretty long time ago where
>  there was an issue with kexec. Long time ago I was talking to arm-soc
>  maintainers about this and they told me that mainline code should work
>  fine without any need to call disable_nonboot_cpus().
>  It means if kexec is working fine we can revert origin patch and use
>  what mainline is using.
> >>> It seems that the issue is still there. When crash at cpu1 and crash
> >>> kernel runs at cpu1,
> >>>
> >>> it will hang, the log is as below:
> >>>
> >>> root@xilinx-zynq:~# sh 1.sh
> >>> syscall kexec_file_load not available.
> >>> sysrq: Trigger a crash
> >>> Kernel panic - not syncing: sysrq triggered crash
> >>> CPU: 1 PID: 308 Comm: sh Kdump: loaded Not tainted 5.2.20-yocto-standard 
> >>> #4
> >>> Hardware name: Xilinx Zynq Platform
> >>> [<80112eb0>] (unwind_backtrace) from [<8010cc04>] (show_stack+0x18/0x1c)
> >>> [<8010cc04>] (show_stack) from [<8094f8f4>] (dump_stack+0x70/0x8c)
> >>> [<8094f8f4>] (dump_stack) from [<801256f4>] (panic+0xf8/0x320)
> >>> [<801256f4>] (panic) from [<805dbeb0>] (sysrq_handle_crash+0x18/0x1c)
> >>> [<805dbeb0>] 

Re: [linux-yocto] [linux-yocto-dev]: [kernel standard/base]: renesas-rcar: arm64: dts: r8a7795: Add CPUIdle support for all CPU core

2019-10-22 Thread Li, Meng



> -Original Message-
> From: Bruce Ashfield [mailto:bruce.ashfi...@gmail.com]
> Sent: Wednesday, October 23, 2019 10:39 AM
> To: Li, Meng
> Cc: linux-yocto@yoctoproject.org; He, Zhe
> Subject: Re: [linux-yocto-dev]: [kernel standard/base]: renesas-rcar: arm64:
> dts: r8a7795: Add CPUIdle support for all CPU core
> 
> On Tue, Oct 22, 2019 at 8:06 AM Bruce Ashfield 
> wrote:
> >
> > On Tue, Oct 22, 2019 at 3:06 AM Li, Meng  wrote:
> > >
> > >
> > >
> > > > -Original Message-
> > > > From: Bruce Ashfield [mailto:bruce.ashfi...@gmail.com]
> > > > Sent: Saturday, October 19, 2019 12:51 PM
> > > > To: Li, Meng
> > > > Cc: linux-yocto@yoctoproject.org
> > > > Subject: Re: [linux-yocto-dev]: [kernel standard/base]: renesas-rcar:
> arm64:
> > > > dts: r8a7795: Add CPUIdle support for all CPU core
> > > >
> > > > In message: [linux-yocto-dev]: [kernel standard/base]: renesas-rcar:
> arm64:
> > > > dts: r8a7795: Add CPUIdle support for all CPU core
> > > > on 15/10/2019 meng...@windriver.com wrote:
> > > >
> > > > > From: Limeng 
> > > > >
> > > > > Hi Bruce,
> > > > >
> > > > > I get below patch from SDK kernel to support cpu idle feature, and
> intend
> > > > to merge it into yocto community.
> > > > >
> > > > > 0001-arm64-dts-r8a7795-Add-CPUIdle-support-for-all-CPU-co.patch
> > > > >
> > > > > Could you please merge this patch into linux-yocto-dev, branch is
> > > > standard/base?
> > > >
> > > > Looks fine to me, this is now merged.
> > > >
> > >
> > > Hi Bruce,
> > >
> > > I found a strange thing.
> > > When build project, this patch existed yesterday.
> > >  But now, the patch is missed.
> > > Could you please help to check it?
> >
> > linux-yocto-dev is now 5.4, so all existing branches are gone, support
> > and work in -dev now needs to rebased and sent as pull requests.
> >
> > >
> > > I also another similar patch that is requested to be merged into linux-
> yocto-5.2, branch is v5.2/standard/base, could you please help to check
> whether it is merged, too?
> >
> > I'll double check 5.2.
> 
> I'm not sure where the patch went .. but I just added it to
> v5.2/standard/base and merged it to the BSPs.
> 

Hi Bruce, 

Thanks! You merged my yesterday pull request for reserve memory, not the patch 
for CPU idle that I sent to you some days ago.
I will send a pull request for CPU idle feature again, wait a moment.

Regards,
Limeng

> Bruce
> 
> >
> > Bruce
> >
> > >
> > > Thanks,
> > > Limeng
> > >
> > >
> > > > Bruce
> > > >
> > > > >
> > > > >  r8a7795.dtsi |   32 
> > > > >  1 file changed, 32 insertions(+)
> > > > >
> > > > >
> > > > > thanks,
> > > > > Limeng
> >
> >
> >
> > --
> > - Thou shalt not follow the NULL pointer, for chaos and madness await
> > thee at its end
> > - "Use the force Harry" - Gandalf, Star Trek II
> 
> 
> 
> --
> - Thou shalt not follow the NULL pointer, for chaos and madness await
> thee at its end
> - "Use the force Harry" - Gandalf, Star Trek II
-- 
___
linux-yocto mailing list
linux-yocto@yoctoproject.org
https://lists.yoctoproject.org/listinfo/linux-yocto


Re: [linux-yocto] [linux-yocto-v5.2/dev]: [kernel v5.2/standard/base and standard/base]: renesas-rcar: arm64: dts: r8a7795-h3ulcb: Add reserved memory regions

2019-10-22 Thread Bruce Ashfield
merged

Bruce

On Tue, Oct 22, 2019 at 1:07 AM  wrote:
>
> From: Limeng 
>
> Hi Bruce,
>
> I get below patch from SDK kernel to support reserved memory for renesas 
> platform firmware that is integrated in bootloader, and intend to merge it 
> into yocto community.
>
> 0001-arm64-dts-r8a7795-h3ulcb-Add-reserved-memory-regions.patch
>
> Could you please merge this patch into linux-yocto and linux-yocto-dev, 
> branch are v5.2/standard/base and standard/base?
>
>  r8a7795-h3ulcb.dts |   29 -
>  1 file changed, 28 insertions(+), 1 deletion(-)
>
>
> thanks,
> Limeng



-- 
- Thou shalt not follow the NULL pointer, for chaos and madness await
thee at its end
- "Use the force Harry" - Gandalf, Star Trek II
-- 
___
linux-yocto mailing list
linux-yocto@yoctoproject.org
https://lists.yoctoproject.org/listinfo/linux-yocto


Re: [linux-yocto] [linux-yocto-dev]: [kernel standard/base]: renesas-rcar: arm64: dts: r8a7795: Add CPUIdle support for all CPU core

2019-10-22 Thread Bruce Ashfield
On Tue, Oct 22, 2019 at 8:06 AM Bruce Ashfield  wrote:
>
> On Tue, Oct 22, 2019 at 3:06 AM Li, Meng  wrote:
> >
> >
> >
> > > -Original Message-
> > > From: Bruce Ashfield [mailto:bruce.ashfi...@gmail.com]
> > > Sent: Saturday, October 19, 2019 12:51 PM
> > > To: Li, Meng
> > > Cc: linux-yocto@yoctoproject.org
> > > Subject: Re: [linux-yocto-dev]: [kernel standard/base]: renesas-rcar: 
> > > arm64:
> > > dts: r8a7795: Add CPUIdle support for all CPU core
> > >
> > > In message: [linux-yocto-dev]: [kernel standard/base]: renesas-rcar: 
> > > arm64:
> > > dts: r8a7795: Add CPUIdle support for all CPU core
> > > on 15/10/2019 meng...@windriver.com wrote:
> > >
> > > > From: Limeng 
> > > >
> > > > Hi Bruce,
> > > >
> > > > I get below patch from SDK kernel to support cpu idle feature, and 
> > > > intend
> > > to merge it into yocto community.
> > > >
> > > > 0001-arm64-dts-r8a7795-Add-CPUIdle-support-for-all-CPU-co.patch
> > > >
> > > > Could you please merge this patch into linux-yocto-dev, branch is
> > > standard/base?
> > >
> > > Looks fine to me, this is now merged.
> > >
> >
> > Hi Bruce,
> >
> > I found a strange thing.
> > When build project, this patch existed yesterday.
> >  But now, the patch is missed.
> > Could you please help to check it?
>
> linux-yocto-dev is now 5.4, so all existing branches are gone, support
> and work in -dev now needs to rebased and sent as pull requests.
>
> >
> > I also another similar patch that is requested to be merged into 
> > linux-yocto-5.2, branch is v5.2/standard/base, could you please help to 
> > check whether it is merged, too?
>
> I'll double check 5.2.

I'm not sure where the patch went .. but I just added it to
v5.2/standard/base and merged it to the BSPs.

Bruce

>
> Bruce
>
> >
> > Thanks,
> > Limeng
> >
> >
> > > Bruce
> > >
> > > >
> > > >  r8a7795.dtsi |   32 
> > > >  1 file changed, 32 insertions(+)
> > > >
> > > >
> > > > thanks,
> > > > Limeng
>
>
>
> --
> - Thou shalt not follow the NULL pointer, for chaos and madness await
> thee at its end
> - "Use the force Harry" - Gandalf, Star Trek II



-- 
- Thou shalt not follow the NULL pointer, for chaos and madness await
thee at its end
- "Use the force Harry" - Gandalf, Star Trek II
-- 
___
linux-yocto mailing list
linux-yocto@yoctoproject.org
https://lists.yoctoproject.org/listinfo/linux-yocto


Re: [linux-yocto] [linux-yocto-dev]: [kernel standard/base]: renesas-rcar: arm64: dts: r8a7795: Add CPUIdle support for all CPU core

2019-10-22 Thread Bruce Ashfield
On Tue, Oct 22, 2019 at 3:06 AM Li, Meng  wrote:
>
>
>
> > -Original Message-
> > From: Bruce Ashfield [mailto:bruce.ashfi...@gmail.com]
> > Sent: Saturday, October 19, 2019 12:51 PM
> > To: Li, Meng
> > Cc: linux-yocto@yoctoproject.org
> > Subject: Re: [linux-yocto-dev]: [kernel standard/base]: renesas-rcar: arm64:
> > dts: r8a7795: Add CPUIdle support for all CPU core
> >
> > In message: [linux-yocto-dev]: [kernel standard/base]: renesas-rcar: arm64:
> > dts: r8a7795: Add CPUIdle support for all CPU core
> > on 15/10/2019 meng...@windriver.com wrote:
> >
> > > From: Limeng 
> > >
> > > Hi Bruce,
> > >
> > > I get below patch from SDK kernel to support cpu idle feature, and intend
> > to merge it into yocto community.
> > >
> > > 0001-arm64-dts-r8a7795-Add-CPUIdle-support-for-all-CPU-co.patch
> > >
> > > Could you please merge this patch into linux-yocto-dev, branch is
> > standard/base?
> >
> > Looks fine to me, this is now merged.
> >
>
> Hi Bruce,
>
> I found a strange thing.
> When build project, this patch existed yesterday.
>  But now, the patch is missed.
> Could you please help to check it?

linux-yocto-dev is now 5.4, so all existing branches are gone, support
and work in -dev now needs to rebased and sent as pull requests.

>
> I also another similar patch that is requested to be merged into 
> linux-yocto-5.2, branch is v5.2/standard/base, could you please help to check 
> whether it is merged, too?

I'll double check 5.2.

Bruce

>
> Thanks,
> Limeng
>
>
> > Bruce
> >
> > >
> > >  r8a7795.dtsi |   32 
> > >  1 file changed, 32 insertions(+)
> > >
> > >
> > > thanks,
> > > Limeng



-- 
- Thou shalt not follow the NULL pointer, for chaos and madness await
thee at its end
- "Use the force Harry" - Gandalf, Star Trek II
-- 
___
linux-yocto mailing list
linux-yocto@yoctoproject.org
https://lists.yoctoproject.org/listinfo/linux-yocto


Re: [linux-yocto] [linux-yocto preempt-rt v5.2][PATCH 0/1] kmemleak: Change the lock of kmemleak_object to raw_spinlock_t

2019-10-22 Thread Bruce Ashfield
I already have the latest 5.2 -stable and -rt under test, so I'll
finish those rather than merging this.

Bruce

On Tue, Oct 22, 2019 at 3:23 AM Yongxin Liu  wrote:
>
> Hi Bruce,
>
> Could you help to merge this patch to linux-yocto v5.2/standard/preempt-rt?
> This patch is only for RT kernel.
> It was added in v5.2 rt11.
> I know you periodically pull RT patches. But could you help to merge this 
> patch in advance?
>
>
> Liu Haitao (1):
>   kmemleak: Change the lock of kmemleak_object to raw_spinlock_t
>
>  mm/kmemleak.c | 72 
> +--
>  1 file changed, 36 insertions(+), 36 deletions(-)
>
>
> Thanks,
> Yongxin



-- 
- Thou shalt not follow the NULL pointer, for chaos and madness await
thee at its end
- "Use the force Harry" - Gandalf, Star Trek II
-- 
___
linux-yocto mailing list
linux-yocto@yoctoproject.org
https://lists.yoctoproject.org/listinfo/linux-yocto


[linux-yocto] [linux-yocto preempt-rt v5.2][PATCH 0/1] kmemleak: Change the lock of kmemleak_object to raw_spinlock_t

2019-10-22 Thread Yongxin Liu
Hi Bruce,

Could you help to merge this patch to linux-yocto v5.2/standard/preempt-rt?
This patch is only for RT kernel.
It was added in v5.2 rt11.
I know you periodically pull RT patches. But could you help to merge this patch 
in advance?


Liu Haitao (1):
  kmemleak: Change the lock of kmemleak_object to raw_spinlock_t

 mm/kmemleak.c | 72 +--
 1 file changed, 36 insertions(+), 36 deletions(-)


Thanks,
Yongxin
-- 
___
linux-yocto mailing list
linux-yocto@yoctoproject.org
https://lists.yoctoproject.org/listinfo/linux-yocto


[linux-yocto] [linux-yocto preempt-rt v5.2][PATCH 1/1] kmemleak: Change the lock of kmemleak_object to raw_spinlock_t

2019-10-22 Thread Yongxin Liu
From: Liu Haitao 

commit 217847f57119b5fdd377bfa3d344613ddb98d9fc upstream.

The commit ("kmemleak: Turn kmemleak_lock to raw spinlock on RT")
changed the kmemleak_lock to raw spinlock. However the
kmemleak_object->lock is held after the kmemleak_lock is held in
scan_block().

Make the object->lock a raw_spinlock_t.

Cc: stable...@vger.kernel.org
Link: https://lkml.kernel.org/r/20190927082230.34152-1-yongxin@windriver.com
Signed-off-by: Liu Haitao 
Signed-off-by: Yongxin Liu 
Signed-off-by: Sebastian Andrzej Siewior 
---
 mm/kmemleak.c | 72 +--
 1 file changed, 36 insertions(+), 36 deletions(-)

diff --git a/mm/kmemleak.c b/mm/kmemleak.c
index aaee59c0306a..355dd95d0611 100644
--- a/mm/kmemleak.c
+++ b/mm/kmemleak.c
@@ -135,7 +135,7 @@ struct kmemleak_scan_area {
  * (use_count) and freed using the RCU mechanism.
  */
 struct kmemleak_object {
-   spinlock_t lock;
+   raw_spinlock_t lock;
unsigned int flags; /* object status flags */
struct list_head object_list;
struct list_head gray_list;
@@ -560,7 +560,7 @@ static struct kmemleak_object *create_object(unsigned long 
ptr, size_t size,
INIT_LIST_HEAD(>object_list);
INIT_LIST_HEAD(>gray_list);
INIT_HLIST_HEAD(>area_list);
-   spin_lock_init(>lock);
+   raw_spin_lock_init(>lock);
atomic_set(>use_count, 1);
object->flags = OBJECT_ALLOCATED;
object->pointer = ptr;
@@ -642,9 +642,9 @@ static void __delete_object(struct kmemleak_object *object)
 * Locking here also ensures that the corresponding memory block
 * cannot be freed when it is being scanned.
 */
-   spin_lock_irqsave(>lock, flags);
+   raw_spin_lock_irqsave(>lock, flags);
object->flags &= ~OBJECT_ALLOCATED;
-   spin_unlock_irqrestore(>lock, flags);
+   raw_spin_unlock_irqrestore(>lock, flags);
put_object(object);
 }
 
@@ -716,9 +716,9 @@ static void paint_it(struct kmemleak_object *object, int 
color)
 {
unsigned long flags;
 
-   spin_lock_irqsave(>lock, flags);
+   raw_spin_lock_irqsave(>lock, flags);
__paint_it(object, color);
-   spin_unlock_irqrestore(>lock, flags);
+   raw_spin_unlock_irqrestore(>lock, flags);
 }
 
 static void paint_ptr(unsigned long ptr, int color)
@@ -778,7 +778,7 @@ static void add_scan_area(unsigned long ptr, size_t size, 
gfp_t gfp)
goto out;
}
 
-   spin_lock_irqsave(>lock, flags);
+   raw_spin_lock_irqsave(>lock, flags);
if (size == SIZE_MAX) {
size = object->pointer + object->size - ptr;
} else if (ptr + size > object->pointer + object->size) {
@@ -794,7 +794,7 @@ static void add_scan_area(unsigned long ptr, size_t size, 
gfp_t gfp)
 
hlist_add_head(>node, >area_list);
 out_unlock:
-   spin_unlock_irqrestore(>lock, flags);
+   raw_spin_unlock_irqrestore(>lock, flags);
 out:
put_object(object);
 }
@@ -817,9 +817,9 @@ static void object_set_excess_ref(unsigned long ptr, 
unsigned long excess_ref)
return;
}
 
-   spin_lock_irqsave(>lock, flags);
+   raw_spin_lock_irqsave(>lock, flags);
object->excess_ref = excess_ref;
-   spin_unlock_irqrestore(>lock, flags);
+   raw_spin_unlock_irqrestore(>lock, flags);
put_object(object);
 }
 
@@ -839,9 +839,9 @@ static void object_no_scan(unsigned long ptr)
return;
}
 
-   spin_lock_irqsave(>lock, flags);
+   raw_spin_lock_irqsave(>lock, flags);
object->flags |= OBJECT_NO_SCAN;
-   spin_unlock_irqrestore(>lock, flags);
+   raw_spin_unlock_irqrestore(>lock, flags);
put_object(object);
 }
 
@@ -902,11 +902,11 @@ static void early_alloc(struct early_log *log)
   log->min_count, GFP_ATOMIC);
if (!object)
goto out;
-   spin_lock_irqsave(>lock, flags);
+   raw_spin_lock_irqsave(>lock, flags);
for (i = 0; i < log->trace_len; i++)
object->trace[i] = log->trace[i];
object->trace_len = log->trace_len;
-   spin_unlock_irqrestore(>lock, flags);
+   raw_spin_unlock_irqrestore(>lock, flags);
 out:
rcu_read_unlock();
 }
@@ -1096,9 +1096,9 @@ void __ref kmemleak_update_trace(const void *ptr)
return;
}
 
-   spin_lock_irqsave(>lock, flags);
+   raw_spin_lock_irqsave(>lock, flags);
object->trace_len = __save_stack_trace(object->trace);
-   spin_unlock_irqrestore(>lock, flags);
+   raw_spin_unlock_irqrestore(>lock, flags);
 
put_object(object);
 }
@@ -1346,7 +1346,7 @@ static void scan_block(void *_start, void *_end,
 * previously acquired in scan_object(). These locks are
 * enclosed by scan_mutex.
 */
-   spin_lock_nested(>lock, SINGLE_DEPTH_NESTING);
+   

[linux-yocto] Next Sync-up

2019-10-22 Thread He Zhe
Hi Bruce,

When will the next sync-up with stable and RT trees happen?

Thanks,
Zhe
-- 
___
linux-yocto mailing list
linux-yocto@yoctoproject.org
https://lists.yoctoproject.org/listinfo/linux-yocto


Re: [linux-yocto] [linux-yocto-dev]: [kernel standard/base]: renesas-rcar: arm64: dts: r8a7795: Add CPUIdle support for all CPU core

2019-10-22 Thread Li, Meng



> -Original Message-
> From: Bruce Ashfield [mailto:bruce.ashfi...@gmail.com]
> Sent: Saturday, October 19, 2019 12:51 PM
> To: Li, Meng
> Cc: linux-yocto@yoctoproject.org
> Subject: Re: [linux-yocto-dev]: [kernel standard/base]: renesas-rcar: arm64:
> dts: r8a7795: Add CPUIdle support for all CPU core
> 
> In message: [linux-yocto-dev]: [kernel standard/base]: renesas-rcar: arm64:
> dts: r8a7795: Add CPUIdle support for all CPU core
> on 15/10/2019 meng...@windriver.com wrote:
> 
> > From: Limeng 
> >
> > Hi Bruce,
> >
> > I get below patch from SDK kernel to support cpu idle feature, and intend
> to merge it into yocto community.
> >
> > 0001-arm64-dts-r8a7795-Add-CPUIdle-support-for-all-CPU-co.patch
> >
> > Could you please merge this patch into linux-yocto-dev, branch is
> standard/base?
> 
> Looks fine to me, this is now merged.
>

Hi Bruce,

I found a strange thing.
When build project, this patch existed yesterday. 
 But now, the patch is missed.
Could you please help to check it?

I also another similar patch that is requested to be merged into 
linux-yocto-5.2, branch is v5.2/standard/base, could you please help to check 
whether it is merged, too?

Thanks,
Limeng

 
> Bruce
> 
> >
> >  r8a7795.dtsi |   32 
> >  1 file changed, 32 insertions(+)
> >
> >
> > thanks,
> > Limeng
-- 
___
linux-yocto mailing list
linux-yocto@yoctoproject.org
https://lists.yoctoproject.org/listinfo/linux-yocto


Re: [linux-yocto] [PATCH 1/1] dma: xilinx: dpdma: alloc xilinx_dpdma_tx_desc using GFP_ATOMIC

2019-10-22 Thread Quanyang Wang


On 10/18/19 10:42 PM, Radhey Shyam Pandey wrote:

-Original Message-
From: Hyun Kwon 
Sent: Thursday, October 17, 2019 11:01 PM
To: Quanyang Wang 
Cc: Hyun Kwon ; Michal Simek ;
Bruce ; linux-yocto@yoctoproject.org; Radhey
Shyam Pandey 
Subject: Re: [linux-yocto][PATCH 1/1] dma: xilinx: dpdma: alloc
xilinx_dpdma_tx_desc using GFP_ATOMIC

Hi Quanyang,

+ Radhey

On Wed, 2019-10-16 at 20:11:39 -0700, Quanyang Wang wrote:

On 10/17/19 1:01 AM, Hyun Kwon wrote:

Hi Quanyang,

Thanks for the patch.

On Tue, 2019-10-15 at 22:49:41 -0700, Michal Simek wrote:

+Hyun,

On 15. 10. 19 16:56, quanyang.w...@windriver.com wrote:

From: Quanyang Wang 

The function xilinx_dpdma_chan_alloc_tx_desc can be called
from atomic context, hence use GFP_ATOMIC instead of GFP_KERNEL,
or else it will cause the calltrace as below:

BUG: sleeping function called from invalid context at mm/slab.h:418
in_atomic(): 1, irqs_disabled(): 128, pid: 416, name: alsa-sink-(null

Preemption disabled at:

[] snd_pcm_stream_lock_irq+0x40/0x50
CPU: 2 PID: 416 Comm: alsa-sink-(null Tainted: G O 5.2.17-yocto-

standard #1

Hardware name: ZynqMP ZCU102 Rev1.0 (DT) Call trace:
dump_backtrace+0x0/0x138
show_stack+0x24/0x30
dump_stack+0x94/0xbc
___might_sleep+0x14c/0x178
__might_sleep+0x58/0x90
kmem_cache_alloc_trace+0x1a4/0x300
xilinx_dpdma_chan_alloc_tx_desc.isra.0+0x24/0x40
xilinx_dpdma_prep_dma_cyclic+0xc0/0x208
snd_dmaengine_pcm_trigger+0xf8/0x198
soc_pcm_trigger+0xb4/0x128
snd_pcm_do_start+0x48/0x58
snd_pcm_action_single+0x4c/0xa0
snd_pcm_action+0x78/0x90
snd_pcm_action_lock_irq+0x3c/0x60
snd_pcm_common_ioctl+0x4ac/0x10c8
snd_pcm_ioctl+0x48/0x68
do_vfs_ioctl+0x6d4/0x968
ksys_ioctl+0x84/0xb8
__arm64_sys_ioctl+0x28/0x38
el0_svc_common.constprop.0+0x74/0x180
el0_svc_handler+0x70/0x90
el0_svc+0x8/0xc

Signed-off-by: Quanyang Wang 

Maybe the 'nonatomic' can be set to true in xilinx_dp_dai_links? But I

don't

know much about the flag, ex what's required, and I don't see any

problem with

this change. So,

   Reviewed-by: Hyun Kwon 

Hi Hyun,

Thank you for looking this patch over.

I test and the "nonatomic" can also eliminate the calltrace.  But I
don't know if there is any

problem with alsa driver running in a nonatomic context.

Me neither, so maybe changing gfp flag seems safer in that aspect. :-)


And do you think it's better using GFP_NOWAIT instead of GFP_ATOMIC ?
This can save some atomic memory.

In my limited view, GFP_ATOMIC seems better as the allocation is relatively
small but related to IO, rather than relying only on page reclaim. I see both
are quite commonly used for dma descriptor allocation, so it doesn't seem
like
one is clearly better than the other. But I may be wrong. Radhey may have
better answer.

_NOWAIT is like _ATOMIC except that no wait will not fall back to emergency
pools. http://lkml.iu.edu/hypermail/linux/kernel/0911.1/02316.html
IMO if allocation is in critical path and small then GFP_ATOMIC can be used
else switching to _NOWAIT might be preferred.


Hi Radhey,

Thank you for your suggestion.

Since xilinx_dpdma_tx_desc is small, it seems that GFP_ATOMIC is better.

Thanks,

Quanyang




Thanks,
-hyun

--
___
linux-yocto mailing list
linux-yocto@yoctoproject.org
https://lists.yoctoproject.org/listinfo/linux-yocto