Received: by 2002:a25:31c3:0:0:0:0:0 with SMTP id x186csp905994ybx; Wed, 30 Oct 2019 07:02:48 -0700 (PDT) X-Google-Smtp-Source: APXvYqwXAvCKUQDxJkHZyEI5NGlPHVk5ynsFhTT042/iVD6OAnyJFCytjUReAr0gsElpXy7g+UfE X-Received: by 2002:a50:aad2:: with SMTP id r18mr32416612edc.44.1572444168094; Wed, 30 Oct 2019 07:02:48 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1572444168; cv=none; d=google.com; s=arc-20160816; b=nhOHkAqWg0qANNKDg/HtgaKYO02eWBUCsdQdI32SzeINst0F9Gkyi+YMzHx/Lvs+uO DJdTYpb/+b44LoaeTmMYEh17FqQ/l5TWgItdjE8euF3Y+c1KUJVYeHfWvOhE+0UbQ/gH PkgJOZMN+/85E+JBkElMdAwm09H4CwwoLBAmv/V7lGN4wANLh9wFjCwK07sho4h/y0Iy E8uxufu73b0dL4xkF3bWzYy2MnnG3+1tU8Xn+IeV4G5AWW5JHL4aPcWOco0Q6Z/WUbbk Pxd1c7qhSBnONkuxNxPut4gmfkiHBJvn4FSILbZUuFzb/guGM8E8DUDYNhTr/6D+8q7f ESWQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:content-transfer-encoding:cc:to:subject :message-id:date:from:in-reply-to:references:mime-version :dkim-signature; bh=cVJv645KW/uv7h76Ba0ewr9mG8QGO5Jwkd0ndgqEd6M=; b=s/AFqbkQvKwshiTg4fmGF80BWchKPuq1kX2aA4zOfgOcqaK2PPH4P8t6GHl5IWXHv7 gnvyoPQdDYzqp6CmYmm8vx91m6G6w9zFIWomvKxRSwetdtkKJIRh7mN+DbuVf7CHbaGV VdAmFjQ0wz+ZMAgJNBM20y8Dyn8u4kHIWBUOs1L+2VTcyHbcKH5ObV2by2Xm20h+2T9Y vCO5YO0bFUuTXwKOLGjBJVfifO3PDbvdtVQ+LctSkoxy6aqcu9C5Sifv3aX/ixi/ryPv odOrGjKJii9YrUq8qC8fjrII2jOvqqVS/k/XyjmM+YSKSUTkkKWCQm1H+hAR+bRYgMoR yv5Q== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@kernel.org header.s=default header.b=e6CXjjqM; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=kernel.org Return-Path: Received: from vger.kernel.org (vger.kernel.org. [209.132.180.67]) by mx.google.com with ESMTP id c8si1661549edf.79.2019.10.30.07.02.15; Wed, 30 Oct 2019 07:02:48 -0700 (PDT) Received-SPF: pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) client-ip=209.132.180.67; Authentication-Results: mx.google.com; dkim=pass header.i=@kernel.org header.s=default header.b=e6CXjjqM; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=kernel.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1726506AbfJ3OBb (ORCPT + 99 others); Wed, 30 Oct 2019 10:01:31 -0400 Received: from mail.kernel.org ([198.145.29.99]:45868 "EHLO mail.kernel.org" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1726269AbfJ3OBb (ORCPT ); Wed, 30 Oct 2019 10:01:31 -0400 Received: from mail-qt1-f177.google.com (mail-qt1-f177.google.com [209.85.160.177]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by mail.kernel.org (Postfix) with ESMTPSA id 789F120874; Wed, 30 Oct 2019 14:01:29 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=default; t=1572444089; bh=lXeBrsoGwbrHUEyuVcJ6e9ZMV6k2zzz99NYZRYVb6nE=; h=References:In-Reply-To:From:Date:Subject:To:Cc:From; b=e6CXjjqMOYdLjcBDetcUv/if56bQ/wXrFkJkY9HPgaYO79A4tXWkywX87haz9xNVR 2zn1EqQ/w2u07bX4t2NDaYrZuLXAQkisJWyBqyI2lmLtWfFpXVjrbbG8YDUedtAGA1 OQ69hvJAT1Elb/pes4vsHZEaiY7aI6QX9Lh7pdko= Received: by mail-qt1-f177.google.com with SMTP id u22so3285197qtq.13; Wed, 30 Oct 2019 07:01:29 -0700 (PDT) X-Gm-Message-State: APjAAAXDBUy7a2EaG+XZxiwoL41QPhcpQFC5XJ/fx3BmtdlhtBZq0d6T 3YFWJwacrdvXBPsvWE9xRZaRNW9oDoNZT9Fhkg== X-Received: by 2002:ac8:65d5:: with SMTP id t21mr149541qto.300.1572444088414; Wed, 30 Oct 2019 07:01:28 -0700 (PDT) MIME-Version: 1.0 References: <20191021021035.7032-1-afaerber@suse.de> <20191021021035.7032-4-afaerber@suse.de> <20191029154129.GA24908@bogus> <6e6087af-6a62-f0ff-07af-48e4836c38e6@suse.de> <63c3b9b5-e409-7f43-cd03-9b4b2ee57056@suse.de> In-Reply-To: <63c3b9b5-e409-7f43-cd03-9b4b2ee57056@suse.de> From: Rob Herring Date: Wed, 30 Oct 2019 09:01:17 -0500 X-Gmail-Original-Message-ID: Message-ID: Subject: Re: [PATCH 3/3] ARM: dts: Prepare Realtek RTD1195 and MeLE X1000 To: =?UTF-8?Q?Andreas_F=C3=A4rber?= Cc: linux-realtek-soc@lists.infradead.org, LAKML , Mark Rutland , devicetree@vger.kernel.org, "linux-kernel@vger.kernel.org" Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org On Tue, Oct 29, 2019 at 10:49 PM Andreas F=C3=A4rber wro= te: > > Am 29.10.19 um 21:40 schrieb Rob Herring: > > On Tue, Oct 29, 2019 at 10:52 AM Andreas F=C3=A4rber = wrote: > >> Am 29.10.19 um 16:41 schrieb Rob Herring: > >>> On Mon, Oct 21, 2019 at 04:10:35AM +0200, Andreas F=C3=A4rber wrote: > >>>> Add Device Trees for Realtek RTD1195 SoC and MeLE X1000 TV box. > >>>> > >>>> Reuse the existing RTD1295 watchdog compatible for now. > >>>> > >>>> Signed-off-by: Andreas F=C3=A4rber > >>>> --- > >>>> arch/arm/boot/dts/Makefile | 2 + > >>>> arch/arm/boot/dts/rtd1195-mele-x1000.dts | 30 ++++++++ > >>>> arch/arm/boot/dts/rtd1195.dtsi | 128 ++++++++++++++++++++= +++++++++++ > >>>> 3 files changed, 160 insertions(+) > >>>> create mode 100644 arch/arm/boot/dts/rtd1195-mele-x1000.dts > >>>> create mode 100644 arch/arm/boot/dts/rtd1195.dtsi > >>>> > >>>> diff --git a/arch/arm/boot/dts/Makefile b/arch/arm/boot/dts/Makefile > >>>> index 73d33611c372..89a951485da8 100644 > >>>> --- a/arch/arm/boot/dts/Makefile > >>>> +++ b/arch/arm/boot/dts/Makefile > >>>> @@ -858,6 +858,8 @@ dtb-$(CONFIG_ARCH_QCOM) +=3D \ > >>>> dtb-$(CONFIG_ARCH_RDA) +=3D \ > >>>> rda8810pl-orangepi-2g-iot.dtb \ > >>>> rda8810pl-orangepi-i96.dtb > >>>> +dtb-$(CONFIG_ARCH_REALTEK) +=3D \ > >>>> + rtd1195-mele-x1000.dtb > >>>> dtb-$(CONFIG_ARCH_REALVIEW) +=3D \ > >>>> arm-realview-pb1176.dtb \ > >>>> arm-realview-pb11mp.dtb \ > >>>> diff --git a/arch/arm/boot/dts/rtd1195-mele-x1000.dts b/arch/arm/boo= t/dts/rtd1195-mele-x1000.dts > >>>> new file mode 100644 > >>>> index 000000000000..ce9a255950d3 > >>>> --- /dev/null > >>>> +++ b/arch/arm/boot/dts/rtd1195-mele-x1000.dts > >>>> @@ -0,0 +1,30 @@ > >>>> +// SPDX-License-Identifier: (GPL-2.0-or-later OR BSD-2-Clause) > >>>> +/* > >>>> + * Copyright (c) 2017 Andreas F=C3=A4rber > >>> > >>> 2019? > >> > >> Nope, I am flushing out old queues, and updating SPDX line does not > >> really warrant a copyright bump IMO. The changes below would though. > > Updated here, but not yet for the .dtsi. > > >>>> + */ > >>>> + > >>>> +/dts-v1/; > >>>> + > >>>> +#include "rtd1195.dtsi" > >>>> + > >>>> +/ { > >>>> + compatible =3D "mele,x1000", "realtek,rtd1195"; > >>>> + model =3D "MeLE X1000"; > >>>> + > >>>> + aliases { > >>>> + serial0 =3D &uart0; > >>>> + }; > >>>> + > >>>> + chosen { > >>>> + stdout-path =3D "serial0:115200n8"; > >>>> + }; > >>>> + > >>>> + memory { > >>> > >>> memory@0 > >> > >> Will test. > > Fixed. (No duplicate node from U-Boot.) > > >>>> + device_type =3D "memory"; > >>>> + reg =3D <0x0 0x40000000>; > >>>> + }; > >>>> +}; > >>>> + > >>>> +&uart0 { > >>>> + status =3D "okay"; > >>>> +}; > >>>> diff --git a/arch/arm/boot/dts/rtd1195.dtsi b/arch/arm/boot/dts/rtd1= 195.dtsi > >>>> new file mode 100644 > >>>> index 000000000000..475740c67d26 > >>>> --- /dev/null > >>>> +++ b/arch/arm/boot/dts/rtd1195.dtsi > >>>> @@ -0,0 +1,128 @@ > >>>> +// SPDX-License-Identifier: (GPL-2.0-or-later OR BSD-2-Clause) > >>>> +/* > >>>> + * Copyright (c) 2017 Andreas F=C3=A4rber > >>>> + */ > >>>> + > >>>> +/memreserve/ 0x00000000 0x0000c000; /* boot code */ > >>>> +/memreserve/ 0x0000c000 0x000f4000; > >>>> +/memreserve/ 0x01b00000 0x00400000; /* audio */ > >>>> +/memreserve/ 0x01ffe000 0x00004000; /* rpc ringbuf */ > >>>> +/memreserve/ 0x10000000 0x00100000; /* secure */ > >>>> +/memreserve/ 0x17fff000 0x00001000; > >>>> +/memreserve/ 0x18000000 0x00100000; /* rbus */ > >>>> +/memreserve/ 0x18100000 0x01000000; /* nor */ > >>> > >>> You shouldn't have the same entries here and in /reserved-memory. The= re > >>> was a time before /reserved-memory was fully supported, but we should= be > >>> well past that now. > >> > >> I am dealing with a v2012.07 based downstream U-Boot that I do not hav= e > >> sources for, so I wouldn't be so sure there... It will only respect > >> memreserve I think, whereas reserved-memory below is for the kernel, n= o? > > > > Sigh... Well, that may be too old. :( > > > > I could be wrong too and no one ever added /reserved-memory support > > for u-boot. The intent was never that one was for u-boot and the other > > for the kernel. The kernel handles both. reserved-memory was to > > overcome the limitations of memreserve. > > What I meant was that some versions of U-Boot process and print > memreserve regions _before_ booting into the kernel, i.e. we don't want > U-Boot's bootX commands to write data into the reserved regions. > /reserved-memory allows the kernel/bootloader to associate memory > regions with drivers via memory-region node references and to steer > whether or not the reserved memory remains mapped. > > >>>> +#include > >>>> + > >>>> +/ { > >>>> + compatible =3D "realtek,rtd1195"; > >>>> + interrupt-parent =3D <&gic>; > >>>> + #address-cells =3D <1>; > >>>> + #size-cells =3D <1>; > >>>> + > >>>> + cpus { > >>>> + #address-cells =3D <1>; > >>>> + #size-cells =3D <0>; > >>>> + > >>>> + cpu0: cpu@0 { > >>>> + device_type =3D "cpu"; > >>>> + compatible =3D "arm,cortex-a7"; > >>>> + reg =3D <0x0>; > >>>> + clock-frequency =3D <1000000000>; > >>>> + }; > >>>> + > >>>> + cpu1: cpu@1 { > >>>> + device_type =3D "cpu"; > >>>> + compatible =3D "arm,cortex-a7"; > >>>> + reg =3D <0x1>; > >>>> + clock-frequency =3D <1000000000>; > >>>> + }; > >>>> + }; > >>>> + > >>>> + reserved-memory { > >>>> + #address-cells =3D <1>; > >>>> + #size-cells =3D <1>; > >>>> + ranges; > >>>> + > >>>> + secure@10000000 { > >>>> + reg =3D <0x10000000 0x100000>; > >>>> + no-map; > >>>> + }; > >>>> + > >>>> + rbus@18000000 { > >>>> + reg =3D <0x18000000 0x100000>; > >>>> + no-map; > >>> > >>> This doesn't look right as it overlaps the register space. > >> > >> Will try dropping it. James? > > My testing (with irqchip patches) shows that leaving the memreserve in > place and dropping this node leads to the following error: > > [ 0.000000] NR_IRQS: 16, nr_irqs: 16, preallocated irqs: 16 > [ 0.000000] ------------[ cut here ]------------ > [ 0.000000] WARNING: CPU: 0 PID: 0 at arch/arm/mm/ioremap.c:304 > __arm_ioremap_pfn_caller+0x1e4/0x208 > [ 0.000000] Modules linked in: > [ 0.000000] CPU: 0 PID: 0 Comm: swapper/0 Not tainted > 5.4.0-rc5-next-20191029+ #152 > [ 0.000000] Hardware name: Generic DT based system > [ 0.000000] [] (unwind_backtrace) from [] > (show_stack+0x10/0x14) > [ 0.000000] [] (show_stack) from [] > (dump_stack+0x78/0x8c) > [ 0.000000] [] (dump_stack) from [] > (__warn+0xbc/0xd8) > [ 0.000000] [] (__warn) from [] > (warn_slowpath_fmt+0x64/0xc4) > [ 0.000000] [] (warn_slowpath_fmt) from [] > (__arm_ioremap_pfn_caller+0x1e4/0x208) > [ 0.000000] [] (__arm_ioremap_pfn_caller) from [] > (ioremap+0x20/0x28) > [ 0.000000] [] (ioremap) from [] (of_iomap+0x40/0x= 64) > [ 0.000000] [] (of_iomap) from [] > (rtd119x_irq_mux_init+0x3c/0x134) > [ 0.000000] [] (rtd119x_irq_mux_init) from [] > (of_irq_init+0x194/0x2b4) > [ 0.000000] [] (of_irq_init) from [] > (init_IRQ+0x24/0x78) > [ 0.000000] [] (init_IRQ) from [] > (start_kernel+0x29c/0x488) > [ 0.000000] [] (start_kernel) from [<00000000>] (0x0) > [ 0.000000] random: get_random_bytes called from > print_oops_end_marker+0x24/0x4c with crng_init=3D0 > [ 0.000000] ---[ end trace 0000000000000000 ]--- > [ 0.000000] 8<--- cut here --- > [ 0.000000] Unable to handle kernel NULL pointer dereference at > virtual address 00000040 > [ 0.000000] pgd =3D (ptrval) > [ 0.000000] [00000040] *pgd=3D80000000104003, *pmd=3D00000000 > [ 0.000000] Internal error: Oops: a06 [#1] PREEMPT SMP ARM > [ 0.000000] Modules linked in: > [ 0.000000] CPU: 0 PID: 0 Comm: swapper/0 Tainted: G W > 5.4.0-rc5-next-20191029+ #152 > [ 0.000000] Hardware name: Generic DT based system > [ 0.000000] PC is at rtd119x_irq_mux_init+0x94/0x134 > [ 0.000000] LR is at 0x0 > [ 0.000000] pc : [] lr : [<00000000>] psr: a00000d3 > [ 0.000000] sp : c1001f38 ip : eb001d80 fp : c0bdb7d0 > [ 0.000000] r10: 00000100 r9 : 00000122 r8 : 00000000 > [ 0.000000] r7 : c0a4dd8c r6 : ef5f8fbc r5 : eb001d40 r4 : 00000040 > [ 0.000000] r3 : 00000004 r2 : 00000000 r1 : 00000000 r0 : 00000040 > [ 0.000000] Flags: NzCv IRQs off FIQs off Mode SVC_32 ISA ARM > Segment user > [ 0.000000] Control: 30c5387d Table: 00103000 DAC: fffffffd > [ 0.000000] Process swapper/0 (pid: 0, stack limit =3D 0x(ptrval)) > [ 0.000000] Stack: (0xc1001f38 to 0xc1002000) > [ 0.000000] 1f20: > 00000122 00000100 > [ 0.000000] 1f40: eb001cc0 ef5f9a20 c1001f64 c1001f6c eb001d00 > c0e21e48 c105b2ec c0284348 > [ 0.000000] 1f60: 00000000 eb001d00 eb001d00 c1001f6c c1001f6c > c1003e50 00000001 c0e32a30 > [ 0.000000] 1f80: c1003e40 c10617dc c1035d80 ffffffff cccccccd > 00000001 c0e32a40 c0e029f4 > [ 0.000000] 1fa0: cccccccd c0e00c00 ffffffff ffffffff 00000000 > c0e00584 00000000 ef5f7e00 > [ 0.000000] 1fc0: 00000000 c0e32a40 00000000 c1003e50 00000000 > c0e00330 00000000 30c0387d > [ 0.000000] 1fe0: 0000138a 01ff2000 410fc075 30c5387d 00000000 > 00000000 00000000 00000000 > [ 0.000000] [] (rtd119x_irq_mux_init) from [] > (of_irq_init+0x194/0x2b4) > [ 0.000000] [] (of_irq_init) from [] > (init_IRQ+0x24/0x78) > [ 0.000000] [] (init_IRQ) from [] > (start_kernel+0x29c/0x488) > [ 0.000000] [] (start_kernel) from [<00000000>] (0x0) > [ 0.000000] Code: e5853004 e5970008 e0844000 e5854008 (e5848000) > [ 0.000000] ---[ end trace f68728a0d3053b52 ]--- > [ 0.000000] Kernel panic - not syncing: Attempted to kill the idle tas= k! > [ 0.000000] ---[ end Kernel panic - not syncing: Attempted to kill > the idle task! ]--- > > This appears to be in part a bug in my error handling of of_iomap - it > returns NULL, not PTR_ERR(). But even with that fixed I get fatal errors > at some point. > > The workaround I have is a custom mach-realtek machine_desc with .map_io > assigning explicit .virtual addresses and MT_DEVICE for these ranges. I > also experimented with .reserve removing three memblocks, so we have a > puzzle of four places messing with the same memory regions and some > combinations working in the end, unclear why exactly. The problem is the memory node range is overlapping with with peripheral space. Using reserved regions is not the way to fix that. The memory node should be fixed. Unfortunately, u-boot probably overwrites whatever you put in the dts (at least it used to) and if you can't change u-boot, then a fixup in .reserve should be the right fix. Rob