linux-tegra.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
From: Stephen Warren <swarren-3lzwWm7+Weoh9ZMKESR00Q@public.gmane.org>
To: Catalin Marinas <catalin.marinas-5wv7dgnIgG8@public.gmane.org>
Cc: Olof Johansson <olof-nZhT3qVonbNeoWH0uzbU5w@public.gmane.org>,
	"paul-DWxLp4Yu+b8AvxtiuMwx3w@public.gmane.org"
	<paul-DWxLp4Yu+b8AvxtiuMwx3w@public.gmane.org>,
	Arnd Bergmann <arnd-r2nGTMty4D4@public.gmane.org>,
	Greg Kroah-Hartman
	<gregkh-hQyY1W1yCW8ekmWlsbkhG0B+6BGkLq7r@public.gmane.org>,
	Peter De Schrijver
	<pdeschrijver-DDmLM1+adcrQT0dZR+AlfA@public.gmane.org>,
	"arm-DgEjT+Ai2ygdnm+yROfE0A@public.gmane.org"
	<arm-DgEjT+Ai2ygdnm+yROfE0A@public.gmane.org>,
	"linux-tegra-u79uwXL29TY76Z2rM5mHXA@public.gmane.org"
	<linux-tegra-u79uwXL29TY76Z2rM5mHXA@public.gmane.org>,
	"linux-arm-kernel-IAPFreCvJWM7uuMidbF8XUB+6BGkLq7r@public.gmane.org"
	<linux-arm-kernel-IAPFreCvJWM7uuMidbF8XUB+6BGkLq7r@public.gmane.org>,
	Pawel Moll <pawel.moll-5wv7dgnIgG8@public.gmane.org>
Subject: Re: [GIT PULL 2/3] ARM: tegra: move fuse code out of arch/arm
Date: Mon, 21 Jul 2014 10:38:25 -0600	[thread overview]
Message-ID: <53CD4201.5070705@wwwdotorg.org> (raw)
In-Reply-To: <20140721155451.GF32578-5wv7dgnIgG8@public.gmane.org>

On 07/21/2014 09:54 AM, Catalin Marinas wrote:
> On Mon, Jul 21, 2014 at 09:06:00AM -0600, Stephen Warren wrote:
>> On 07/17/2014 11:33 PM, Olof Johansson wrote:
>>> On Thu, Jul 17, 2014 at 7:45 PM, Stephen Warren <swarren-3lzwWm7+Weoh9ZMKESR00Q@public.gmane.org> wrote:
>>>> On 07/08/2014 11:47 AM, Olof Johansson wrote:
>>>>> On Tue, Jul 8, 2014 at 6:43 AM, Peter De Schrijver
>>>>> <pdeschrijver-DDmLM1+adcrQT0dZR+AlfA@public.gmane.org> wrote:
>>>>>> On Mon, Jul 07, 2014 at 02:44:17AM +0200, Olof Johansson wrote:
>>>>>>> On Mon, Jun 23, 2014 at 03:23:45PM -0600, Stephen Warren wrote:
>>>>>>>> This branch moves code related to the Tegra fuses out of arch/arm and
>>>>>>>> into a centralized location which could be shared with ARM64. It also
>>>>>>>> adds support for reading the fuse data through sysfs.
>>>>>>>
>>>>>>> The new/moved misc driver isn't acked by any misc maintainer, so I can't
>>>>>>> take this branch.
>>>>>>>
>>>>>>> I saw no indication from searching the mailing list of that either,
>>>>>>> so it wasn't just a missed acked-by.
>>>>>>>
>>>>>>> I wonder if this code should go under drivers/soc/ instead?
>>>>>>
>>>>>> It's modelled after sunxi_sid.c which lives in drivers/misc/eeprom/.
>>>>>> Originally this driver was also in drivers/misc/eeprom/, but Stephen objected
>>>>>> and therefore it was moved to drivers/misc/fuse. I think that's the right
>>>>>> place still.
>>>>>
>>>>> I disagree, I think this belongs under drivers/soc. Especially since
>>>>> you're adding dependencies on this misc driver from other parts of the
>>>>> kernel / other drivers.
>>>>>
>>>>> I also don't like seeing init calls form platform code down into
>>>>> drivers/misc like you're adding here. Can you please look at doing
>>>>> that as a regular init call setup?
>>>>
>>>> I strongly disagree with using init calls for this kind of thing. There
>>>> are ordering dependencies between the initialization code that can only
>>>> be sanely managed by explicitly calling functions in a particular order;
>>>> there's simply no way to manage this using initcalls. This is exactly
>>>> why the hooks in the ARM machine descriptors exist...
>>>
>>> Right, but there are non on 64-bit, so you need to solve it for there
>>> anyway. And once it's solved there, you might as well keep it common
>>> with 32-bit.
>>
>> My assertion is that we should just do it directly on 64-bit too.
>> There's no reason for arm64 to deviate from what arch/arm does already.
> 
> On arm64, I really want to get away from any SoC specific early
> initcall. One of the main reason is for things like SCU, interconnects,
> system cache configurations (even certain clocks) to be enabled in
> firmware before Linux starts (it's an education process but that's a way
> for example to prevent people sending patches to enable SoC coherency
> because they haven't thought about it before upstreaming).
> 
> It would be nice to be able to initialise SoC stuff at device_initcall()
> level (and even keep such code as modules in initramfs) but one of the
> problems we have is dependency on clocks (and the clock model which
> doesn't follow the device/driver model). The of_platform_populate() is
> called at arch_initcall_sync (after arch_initcall to still allow some
> SoC code, if needed, to run at arch_initcall).

The main thing I want to avoid is a ton of separate drivers that all
rely on each-other getting resolved by deferred probe. While that might
work out, it seems pointless to make the kernel try and probe a bunch of
stuff just to have it fail and get repeated, when we know exactly which
order everything should get initialized in.

Another issue is that we have SoCs which only differ in the CPU. I want
the code to work identically on both SoCs so the CPU has limited affect
on the low-level IO code. If we're going to enforce a "no machine
descriptors" rule on arch/arm64, I think we should do the same thing in
arch/arm for consistency.

> We have a similar issue with arm64 vexpress (well, just on the model)
> where vexpress_sysreg_init() is a core_initcall (should be fine as
> arch_initcall) as it needs to be done before of_platform_populate().
> Pawel on cc should know more of the history here.
> 
> I recall there were also some discussions about a SoC driver model which
> hangs off the top compatible string in the DT (e.g. "arm,vexpress") and
> allow (minimal) code to be run slightly earlier, though still not
> earlier than arch_initcall.

I guess that would work out OK; if we force the driver that binds to a
top-level compatible value of "nvidia,tegraNNN" to probe first, and it
then calls out to all the low-level init code in a sane order, that
would solve the problem. I'm not sure that's any better than having a
machine descriptor with an "init" function though; wrapping all this in
a driver just seems like overhead, but it would work out OK.

  parent reply	other threads:[~2014-07-21 16:38 UTC|newest]

Thread overview: 48+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2014-06-23 21:23 [GIT PULL 1/3] ARM: tegra: rework PCIe regulators Stephen Warren
     [not found] ` <1403558626-13422-1-git-send-email-swarren-3lzwWm7+Weoh9ZMKESR00Q@public.gmane.org>
2014-06-23 21:23   ` [GIT PULL 2/3] ARM: tegra: move fuse code out of arch/arm Stephen Warren
     [not found]     ` <1403558626-13422-2-git-send-email-swarren-3lzwWm7+Weoh9ZMKESR00Q@public.gmane.org>
2014-07-07  0:44       ` Olof Johansson
     [not found]         ` <20140707004417.GE8469-O5ziIzlqnXUVNXGz7ipsyg@public.gmane.org>
2014-07-08 13:43           ` Peter De Schrijver
     [not found]             ` <20140708134359.GA23218-Rysk9IDjsxmJz7etNGeUX8VPkgjIgRvpAL8bYrjMMd8@public.gmane.org>
2014-07-08 17:47               ` Olof Johansson
     [not found]                 ` <CAOesGMhoqvqf-dktp-OfUNTPLahPwkyAPiTeDngr4QjH=VfOGA-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>
2014-07-09 11:16                   ` Peter De Schrijver
     [not found]                     ` <20140709111633.GG23218-Rysk9IDjsxmJz7etNGeUX8VPkgjIgRvpAL8bYrjMMd8@public.gmane.org>
2014-07-09 12:50                       ` Arnd Bergmann
2014-07-11 12:56                   ` Thierry Reding
2014-07-18  2:45                   ` Stephen Warren
     [not found]                     ` <53C88A4C.3070304-3lzwWm7+Weoh9ZMKESR00Q@public.gmane.org>
2014-07-18  5:33                       ` Olof Johansson
     [not found]                         ` <CAOesGMh+zLV781wzdR5=_Bpzh+XMwJfWL-5XMDP6DwG_Hg80kw-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>
2014-07-21 15:06                           ` Stephen Warren
     [not found]                             ` <53CD2C58.6060601-3lzwWm7+Weoh9ZMKESR00Q@public.gmane.org>
2014-07-21 15:54                               ` Catalin Marinas
     [not found]                                 ` <20140721155451.GF32578-5wv7dgnIgG8@public.gmane.org>
2014-07-21 16:14                                   ` Pawel Moll
2014-07-21 16:38                                   ` Stephen Warren [this message]
     [not found]                                     ` <53CD4201.5070705-3lzwWm7+Weoh9ZMKESR00Q@public.gmane.org>
2014-07-21 16:46                                       ` Olof Johansson
     [not found]                                         ` <CAOesGMgvd1HbjywN7BDPtr8ZU7vucWH48B=AW3TZjng73YA8WA-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>
2014-07-21 17:00                                           ` [PATCH] platform: Make platform_bus device a platform device Pawel Moll
     [not found]                                             ` <1405962034-25482-1-git-send-email-pawel.moll-5wv7dgnIgG8@public.gmane.org>
2014-07-21 18:40                                               ` Greg Kroah-Hartman
     [not found]                                                 ` <20140721184007.GB572-U8xfFu+wG4EAvxtiuMwx3w@public.gmane.org>
2014-07-22 10:02                                                   ` [PATCH v2] " Pawel Moll
     [not found]                                                     ` <1406023327-18525-1-git-send-email-pawel.moll-5wv7dgnIgG8@public.gmane.org>
2014-07-22 17:10                                                       ` Greg Kroah-Hartman
     [not found]                                                         ` <20140722171013.GA6605-U8xfFu+wG4EAvxtiuMwx3w@public.gmane.org>
2014-07-22 17:30                                                           ` Pawel Moll
2014-07-22 17:37                                                             ` Greg Kroah-Hartman
     [not found]                                                               ` <20140722173713.GA8959-U8xfFu+wG4EAvxtiuMwx3w@public.gmane.org>
2014-07-22 17:55                                                                 ` [PATCH v3] " Pawel Moll
     [not found]                                                                   ` <1406051719-17354-1-git-send-email-pawel.moll-5wv7dgnIgG8@public.gmane.org>
2014-07-22 18:01                                                                     ` Pawel Moll
2014-07-22 18:15                                                                       ` Greg Kroah-Hartman
     [not found]                                                                         ` <20140722181505.GA9898-U8xfFu+wG4EAvxtiuMwx3w@public.gmane.org>
2014-07-23 17:16                                                                           ` Pawel Moll
2014-07-23 19:34                                                                             ` Greg Kroah-Hartman
     [not found]                                                                               ` <20140723193434.GA31983-U8xfFu+wG4EAvxtiuMwx3w@public.gmane.org>
2014-07-24 17:12                                                                                 ` Pawel Moll
2014-07-22 19:46                                                                     ` Olof Johansson
     [not found]                                                                       ` <CAOesGMgya9i=zc_AVO_mgrC_FjYz-RWxwXguNueVA=7gpq=5sA-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>
2014-07-23 14:26                                                                         ` Pawel Moll
2014-07-22 22:16                                                                     ` Greg Kroah-Hartman
     [not found]                                                                       ` <20140722221619.GA15781-U8xfFu+wG4EAvxtiuMwx3w@public.gmane.org>
2014-07-23 14:27                                                                         ` Pawel Moll
2014-07-22 10:27                                           ` [GIT PULL 2/3] ARM: tegra: move fuse code out of arch/arm Catalin Marinas
     [not found]                                             ` <20140722102749.GB2219-5wv7dgnIgG8@public.gmane.org>
2014-07-22 16:27                                               ` Stephen Warren
     [not found]                                                 ` <53CE90ED.8030900-3lzwWm7+Weoh9ZMKESR00Q@public.gmane.org>
2014-07-22 16:54                                                   ` Catalin Marinas
2014-07-22 11:26                                       ` Catalin Marinas
     [not found]                                         ` <20140722112651.GC2219-5wv7dgnIgG8@public.gmane.org>
2014-07-22 16:22                                           ` Stephen Warren
     [not found]                                             ` <53CE8FB1.4060307-3lzwWm7+Weoh9ZMKESR00Q@public.gmane.org>
2014-07-22 17:04                                               ` Catalin Marinas
2014-07-18  2:44               ` Stephen Warren
     [not found]                 ` <53C889FF.4070206-3lzwWm7+Weoh9ZMKESR00Q@public.gmane.org>
2014-07-18  5:33                   ` Olof Johansson
2014-06-23 21:23   ` [GIT PULL 3/3] ARM: tegra: use us counter as delay timer Stephen Warren
     [not found]     ` <1403558626-13422-3-git-send-email-swarren-3lzwWm7+Weoh9ZMKESR00Q@public.gmane.org>
2014-07-07  0:49       ` Olof Johansson
2014-07-07  0:38   ` [GIT PULL 1/3] ARM: tegra: rework PCIe regulators Olof Johansson
     [not found]     ` <20140707003854.GD8469-O5ziIzlqnXUVNXGz7ipsyg@public.gmane.org>
2014-07-07  5:52       ` Thierry Reding
2014-07-08  4:45         ` Olof Johansson
     [not found]           ` <CAOesGMjwE=xThuUwmBF02YaQ32_uFogryW5anNoGc8yfkuN_Pg-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>
2014-07-10 10:15             ` Thierry Reding
2014-07-17 14:20               ` Thierry Reding
2014-07-17 17:52                 ` Olof Johansson
2014-07-18  2:47       ` Stephen Warren

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=53CD4201.5070705@wwwdotorg.org \
    --to=swarren-3lzwwm7+weoh9zmkesr00q@public.gmane.org \
    --cc=arm-DgEjT+Ai2ygdnm+yROfE0A@public.gmane.org \
    --cc=arnd-r2nGTMty4D4@public.gmane.org \
    --cc=catalin.marinas-5wv7dgnIgG8@public.gmane.org \
    --cc=gregkh-hQyY1W1yCW8ekmWlsbkhG0B+6BGkLq7r@public.gmane.org \
    --cc=linux-arm-kernel-IAPFreCvJWM7uuMidbF8XUB+6BGkLq7r@public.gmane.org \
    --cc=linux-tegra-u79uwXL29TY76Z2rM5mHXA@public.gmane.org \
    --cc=olof-nZhT3qVonbNeoWH0uzbU5w@public.gmane.org \
    --cc=paul-DWxLp4Yu+b8AvxtiuMwx3w@public.gmane.org \
    --cc=pawel.moll-5wv7dgnIgG8@public.gmane.org \
    --cc=pdeschrijver-DDmLM1+adcrQT0dZR+AlfA@public.gmane.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
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).