dri-devel.lists.freedesktop.org archive mirror
 help / color / mirror / Atom feed
* [PATCH] ARM: dts: exynos: Increase minimal value of the Exynos4 mem buses to 160MHz
       [not found] <CGME20190320135051eucas1p19ce9f7ed28f72e43d331cae838915ed8@eucas1p1.samsung.com>
@ 2019-03-20 13:50 ` Marek Szyprowski
  2019-03-21  9:12   ` Krzysztof Kozlowski
  0 siblings, 1 reply; 2+ messages in thread
From: Marek Szyprowski @ 2019-03-20 13:50 UTC (permalink / raw)
  To: dri-devel, linux-samsung-soc
  Cc: Chanwoo Choi, Bartlomiej Zolnierkiewicz, Seung-Woo Kim, Marek Szyprowski

On Exynos 4, the 'DMC' and 'leftbus' buses feed the internal buses of the
TV display subsystem and the Exynos Mixer hardware modules. When those
buses are set below 160MHz, Exynos Mixer is not able to properly handle
two XRGB display planes at FullHD-60MHz. DMA underrun happens, which in
turn might result in reading data out of the configured buffer, what
causes IOMMU page fault and kernel panic.

This change fixes the following IOMMU fault, observed, when 2 Mixer planes
were enabled:

exynos-sysmmu 12e20000.sysmmu: 12c10000.mixer: PAGE FAULT occurred at 0x20fe9000
------------[ cut here ]------------
kernel BUG at drivers/iommu/exynos-iommu.c:450!
Internal error: Oops - BUG: 0 [#1] PREEMPT SMP ARM
Modules linked in:
CPU: 0 PID: 0 Comm: swapper/0 Not tainted 5.1.0-rc1-next-20190320-dirty #5628
Hardware name: SAMSUNG EXYNOS (Flattened Device Tree)
PC is at exynos_sysmmu_irq+0x1c8/0x244
LR is at lock_is_held_type+0x80/0x100
...
Process swapper/0 (pid: 0, stack limit = 0xf4b67ceb)
Stack: (0xc1001e18 to 0xc1002000)
...
[<c0500248>] (exynos_sysmmu_irq) from [<c0190ff8>] (__handle_irq_event_percpu+0x98/0x470)
[<c0190ff8>] (__handle_irq_event_percpu) from [<c01913ec>] (handle_irq_event_percpu+0x1c/0x58)
[<c01913ec>] (handle_irq_event_percpu) from [<c0191460>] (handle_irq_event+0x38/0x5c)
[<c0191460>] (handle_irq_event) from [<c01957d8>] (handle_level_irq+0xc0/0x134)
[<c01957d8>] (handle_level_irq) from [<c0190590>] (generic_handle_irq+0x18/0x28)
[<c0190590>] (generic_handle_irq) from [<c0472754>] (combiner_handle_cascade_irq+0x84/0xd4)
[<c0472754>] (combiner_handle_cascade_irq) from [<c0190590>] (generic_handle_irq+0x18/0x28)
[<c0190590>] (generic_handle_irq) from [<c01906ac>] (__handle_domain_irq+0x6c/0xe4)
[<c01906ac>] (__handle_domain_irq) from [<c04733e4>] (gic_handle_irq+0x54/0xa0)
[<c04733e4>] (gic_handle_irq) from [<c0101a70>] (__irq_svc+0x70/0xb0)
Exception stack(0xc1001f28 to 0xc1001f70)
...
[<c0101a70>] (__irq_svc) from [<c0109edc>] (arch_cpu_idle+0x20/0x44)
[<c0109edc>] (arch_cpu_idle) from [<c015b834>] (do_idle+0x154/0x284)
[<c015b834>] (do_idle) from [<c015bca4>] (cpu_startup_entry+0x18/0x1c)
[<c015bca4>] (cpu_startup_entry) from [<c0f00e1c>] (start_kernel+0x408/0x490)
Code: e7923103 e59f206c ebfdaa09 eaffffd8 (e7f001f2)
---[ end trace f8c3df0ee70697ef ]---
Kernel panic - not syncing: Fatal exception in interrupt

Signed-off-by: Marek Szyprowski <m.szyprowski@samsung.com>
---
 arch/arm/boot/dts/exynos4412.dtsi | 16 ----------------
 1 file changed, 16 deletions(-)

diff --git a/arch/arm/boot/dts/exynos4412.dtsi b/arch/arm/boot/dts/exynos4412.dtsi
index e5c041ec0756..f01c57cc895e 100644
--- a/arch/arm/boot/dts/exynos4412.dtsi
+++ b/arch/arm/boot/dts/exynos4412.dtsi
@@ -413,14 +413,6 @@
 			compatible = "operating-points-v2";
 			opp-shared;
 
-			opp-100000000 {
-				opp-hz = /bits/ 64 <100000000>;
-				opp-microvolt = <900000>;
-			};
-			opp-134000000 {
-				opp-hz = /bits/ 64 <134000000>;
-				opp-microvolt = <900000>;
-			};
 			opp-160000000 {
 				opp-hz = /bits/ 64 <160000000>;
 				opp-microvolt = <900000>;
@@ -506,14 +498,6 @@
 			compatible = "operating-points-v2";
 			opp-shared;
 
-			opp-100000000 {
-				opp-hz = /bits/ 64 <100000000>;
-				opp-microvolt = <900000>;
-			};
-			opp-134000000 {
-				opp-hz = /bits/ 64 <134000000>;
-				opp-microvolt = <925000>;
-			};
 			opp-160000000 {
 				opp-hz = /bits/ 64 <160000000>;
 				opp-microvolt = <950000>;
-- 
2.17.1

_______________________________________________
dri-devel mailing list
dri-devel@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/dri-devel

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

* Re: [PATCH] ARM: dts: exynos: Increase minimal value of the Exynos4 mem buses to 160MHz
  2019-03-20 13:50 ` [PATCH] ARM: dts: exynos: Increase minimal value of the Exynos4 mem buses to 160MHz Marek Szyprowski
@ 2019-03-21  9:12   ` Krzysztof Kozlowski
  0 siblings, 0 replies; 2+ messages in thread
From: Krzysztof Kozlowski @ 2019-03-21  9:12 UTC (permalink / raw)
  To: Marek Szyprowski
  Cc: linux-samsung-soc, Chanwoo Choi, Bartlomiej Zolnierkiewicz,
	Seung-Woo Kim, dri-devel

On Wed, 20 Mar 2019 at 14:51, Marek Szyprowski <m.szyprowski@samsung.com> wrote:
>
> On Exynos 4, the 'DMC' and 'leftbus' buses feed the internal buses of the
> TV display subsystem and the Exynos Mixer hardware modules. When those
> buses are set below 160MHz, Exynos Mixer is not able to properly handle
> two XRGB display planes at FullHD-60MHz. DMA underrun happens, which in
> turn might result in reading data out of the configured buffer, what
> causes IOMMU page fault and kernel panic.
>
> This change fixes the following IOMMU fault, observed, when 2 Mixer planes
> were enabled:
>
> exynos-sysmmu 12e20000.sysmmu: 12c10000.mixer: PAGE FAULT occurred at 0x20fe9000
> ------------[ cut here ]------------
> kernel BUG at drivers/iommu/exynos-iommu.c:450!
> Internal error: Oops - BUG: 0 [#1] PREEMPT SMP ARM
> Modules linked in:
> CPU: 0 PID: 0 Comm: swapper/0 Not tainted 5.1.0-rc1-next-20190320-dirty #5628
> Hardware name: SAMSUNG EXYNOS (Flattened Device Tree)
> PC is at exynos_sysmmu_irq+0x1c8/0x244
> LR is at lock_is_held_type+0x80/0x100
> ...
> Process swapper/0 (pid: 0, stack limit = 0xf4b67ceb)
> Stack: (0xc1001e18 to 0xc1002000)
> ...
> [<c0500248>] (exynos_sysmmu_irq) from [<c0190ff8>] (__handle_irq_event_percpu+0x98/0x470)
> [<c0190ff8>] (__handle_irq_event_percpu) from [<c01913ec>] (handle_irq_event_percpu+0x1c/0x58)
> [<c01913ec>] (handle_irq_event_percpu) from [<c0191460>] (handle_irq_event+0x38/0x5c)
> [<c0191460>] (handle_irq_event) from [<c01957d8>] (handle_level_irq+0xc0/0x134)
> [<c01957d8>] (handle_level_irq) from [<c0190590>] (generic_handle_irq+0x18/0x28)
> [<c0190590>] (generic_handle_irq) from [<c0472754>] (combiner_handle_cascade_irq+0x84/0xd4)
> [<c0472754>] (combiner_handle_cascade_irq) from [<c0190590>] (generic_handle_irq+0x18/0x28)
> [<c0190590>] (generic_handle_irq) from [<c01906ac>] (__handle_domain_irq+0x6c/0xe4)
> [<c01906ac>] (__handle_domain_irq) from [<c04733e4>] (gic_handle_irq+0x54/0xa0)
> [<c04733e4>] (gic_handle_irq) from [<c0101a70>] (__irq_svc+0x70/0xb0)
> Exception stack(0xc1001f28 to 0xc1001f70)
> ...
> [<c0101a70>] (__irq_svc) from [<c0109edc>] (arch_cpu_idle+0x20/0x44)
> [<c0109edc>] (arch_cpu_idle) from [<c015b834>] (do_idle+0x154/0x284)
> [<c015b834>] (do_idle) from [<c015bca4>] (cpu_startup_entry+0x18/0x1c)
> [<c015bca4>] (cpu_startup_entry) from [<c0f00e1c>] (start_kernel+0x408/0x490)
> Code: e7923103 e59f206c ebfdaa09 eaffffd8 (e7f001f2)
> ---[ end trace f8c3df0ee70697ef ]---
> Kernel panic - not syncing: Fatal exception in interrupt
>
> Signed-off-by: Marek Szyprowski <m.szyprowski@samsung.com>

This looks like a workaround for real problem. Workaround for only
this specific case and specific device. Other components might hit you
later... other boards might experience this as well. These are valid
OPP and they probably could be used when Mixer is not used (e.g. no
DRM or no HDMI cable plugged in) or when lower resolution is being
used.

Instead PM QoS interface should be used:
Documentation/power/pm_qos_interface.txt

Best regards,
Krzysztof

> ---
>  arch/arm/boot/dts/exynos4412.dtsi | 16 ----------------
>  1 file changed, 16 deletions(-)
>
> diff --git a/arch/arm/boot/dts/exynos4412.dtsi b/arch/arm/boot/dts/exynos4412.dtsi
> index e5c041ec0756..f01c57cc895e 100644
> --- a/arch/arm/boot/dts/exynos4412.dtsi
> +++ b/arch/arm/boot/dts/exynos4412.dtsi
> @@ -413,14 +413,6 @@
>                         compatible = "operating-points-v2";
>                         opp-shared;
>
> -                       opp-100000000 {
> -                               opp-hz = /bits/ 64 <100000000>;
> -                               opp-microvolt = <900000>;
> -                       };
> -                       opp-134000000 {
> -                               opp-hz = /bits/ 64 <134000000>;
> -                               opp-microvolt = <900000>;
> -                       };
>                         opp-160000000 {
>                                 opp-hz = /bits/ 64 <160000000>;
>                                 opp-microvolt = <900000>;
> @@ -506,14 +498,6 @@
>                         compatible = "operating-points-v2";
>                         opp-shared;
>
> -                       opp-100000000 {
> -                               opp-hz = /bits/ 64 <100000000>;
> -                               opp-microvolt = <900000>;
> -                       };
> -                       opp-134000000 {
> -                               opp-hz = /bits/ 64 <134000000>;
> -                               opp-microvolt = <925000>;
> -                       };
>                         opp-160000000 {
>                                 opp-hz = /bits/ 64 <160000000>;
>                                 opp-microvolt = <950000>;
> --
> 2.17.1
>
_______________________________________________
dri-devel mailing list
dri-devel@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/dri-devel

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

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

Thread overview: 2+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
     [not found] <CGME20190320135051eucas1p19ce9f7ed28f72e43d331cae838915ed8@eucas1p1.samsung.com>
2019-03-20 13:50 ` [PATCH] ARM: dts: exynos: Increase minimal value of the Exynos4 mem buses to 160MHz Marek Szyprowski
2019-03-21  9:12   ` Krzysztof Kozlowski

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).