linux-arm-kernel.lists.infradead.org archive mirror
 help / color / mirror / Atom feed
From: f.fainelli@gmail.com (Florian Fainelli)
To: linux-arm-kernel@lists.infradead.org
Subject: [PATCH] ARM: owl: smp: Drop owl_secondary_boot()
Date: Thu, 6 Jul 2017 14:16:44 -0700	[thread overview]
Message-ID: <663f99ab-85bf-4a8e-67a1-e84f59e7bdcc@gmail.com> (raw)
In-Reply-To: <20170706173949.GC2068@leverpostej>

On 07/06/2017 10:39 AM, Mark Rutland wrote:
> On Thu, Jul 06, 2017 at 07:17:28PM +0200, Andreas F?rber wrote:
>> Am 05.07.2017 um 04:36 schrieb Florian Fainelli:
>>> On July 4, 2017 4:32:18 PM PDT, "Andreas F?rber" <afaerber@suse.de> wrote:
>>>> Commit 18cfd9429d8a82c49add8f3ca9d366599bfcac45 ("ARM: owl: smp: Drop
>>>> bogus holding pen") simplified the S500 SMP code by removing a loop for
>>>> pen_release in owl_secondary_boot(). Since then it is only calling
>>>> owl_v7_invalidate_l1() before branching to secondary_startup().
>>>>
>>>> The owl_v7_invalidate_l1() assembler function is superfluous, too.
>>>> Therefore drop owl_secondary_boot() and use secondary_boot() directly.
>>>>
>>>> Cc: David Liu <liuwei@actions-semi.com>
>>>> Signed-off-by: Andreas F?rber <afaerber@suse.de>
>>>> ---
>>>
>>>> -	writel(virt_to_phys(owl_secondary_startup),
>>>> +	writel(virt_to_phys(secondary_startup),
>>>> 	       timer_base_addr + OWL_CPU1_ADDR + (cpu - 1) * 4);
>>>
>>> This is a kernel symbol so please use __pa_symbol() here, also you might want to build with CONFIG_DEBUG_VIRTUAL and see if you get other warnings about using virt_to_phys() in the owl platform code (I did not check if there are other uses)
>>
>> Thanks for the report. There are no other such uses in mach-actions, but
>> git-grep'ing for virt_to_phys in arch/arm/mach-* I spot at least one
>> other such usage in mach-oxnas:
>>
>> arch/arm/mach-oxnas/platsmp.c:
>> writel(virt_to_phys(ox820_secondary_startup),
>>
>> as well as this in mach-mvebu:
>>
>> arch/arm/mach-mvebu/platsmp.c:  writel(virt_to_phys(boot_addr), base +
>> MV98DX3236_CPU_RESUME_ADDR_REG);
>>
>> and these in mach-at91:
>>
>> arch/arm/mach-at91/pm.c:        pm_bu->canary = virt_to_phys(&canary);
>> arch/arm/mach-at91/pm.c:        pm_bu->resume = virt_to_phys(cpu_resume);
>>
>> What exactly is the difference between the two macros that makes it
>> wrong despite apparently working? 
> 
> virt_to_phys() is intended to operate on the linear/direct mapping of
> RAM.
> 
> __pa_symbol() is intended to operate on the kernel mapping, which may
> not be in the linear/direct mapping on all architectures. e.g. arm64 and
> x86_64 map the kernel image and RAM separately.
> 
> On 32-bit ARM the kernel image mapping is tied to the linear/direct
> mapping, so that works, but as it's semantically wrong (and broken for
> generic code), the DEBUG_VIRTUAL checks complain.
> 
>> In particular I am wondering whether
>> the SoC/board vendors in CC need to fix it in their 3.10 trees, too.
>>
>> In any case if this is a bug, I would rather fix it in a separate patch
>> for 4.13 and leave the name swap (this patch) for 4.14.
> 
> To the best of my knowledge there's no functional problem in this
> particular case, though it should be cleaned up so as to keep
> DEBUG_VRITUAL useful.

Exactly, it just happened to catch my eye while looking at this patch
series. I am wondering if there is a way we could check whether it makes
sense to use virt_to_phys() vs. __pa_symbol() at compile time and
produce an appropriate warning would that be the case. checkpatch.pl
would not be able to do this unless there is a prior build of the kernel
image, and a GCC plugin would not necessarily have global visibility
about other translation units either... hmmm.
-- 
Florian

  reply	other threads:[~2017-07-06 21:16 UTC|newest]

Thread overview: 99+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2017-06-06  0:53 [PATCH v4 00/28] ARM: Initial Actions Semi S500 and S900 enablement Andreas Färber
2017-06-06  0:53 ` [PATCH v4 01/28] dt-bindings: Add vendor prefix for Actions Semi Andreas Färber
2017-06-18 18:46   ` Andreas Färber
2017-06-06  0:54 ` [PATCH v4 02/28] dt-bindings: arm: Document Actions Semi S500 Andreas Färber
2017-06-18 18:48   ` Andreas Färber
2017-06-06  0:54 ` [PATCH v4 03/28] dt-bindings: timer: Document Owl timer Andreas Färber
2017-06-18 20:18   ` Andreas Färber
2017-06-06  0:54 ` [PATCH v4 04/28] clocksource: Add " Andreas Färber
2017-06-06 16:33   ` Daniel Lezcano
2017-06-18 20:43     ` Andreas Färber
2017-06-19 13:53       ` Daniel Lezcano
2017-06-19 14:31         ` Andreas Färber
2017-06-21 11:57           ` Daniel Lezcano
2017-06-06  0:54 ` [PATCH v4 05/28] clocksource: owl: Add S900 support Andreas Färber
2017-06-06 16:34   ` Daniel Lezcano
2017-06-18 20:50     ` Andreas Färber
2017-06-06  0:54 ` [PATCH v4 06/28] ARM: Prepare Actions Semi S500 Andreas Färber
2017-06-18 21:21   ` Andreas Färber
2017-07-01 21:41     ` [PATCH] ARM: owl: Drop custom machine Andreas Färber
2017-06-06  0:54 ` [PATCH v4 07/28] ARM64: Prepare Actions Semi S900 Andreas Färber
2017-06-11 13:04   ` Andreas Färber
2017-06-06  0:54 ` [PATCH v4 08/28] dt-bindings: serial: Document Actions Semi Owl UARTs Andreas Färber
2017-06-06  0:54 ` [PATCH v4 09/28] tty: serial: Add Actions Semi Owl UART earlycon Andreas Färber
2017-06-18 21:45   ` Andreas Färber
2017-06-19  1:16     ` Greg Kroah-Hartman
2017-06-19  1:24       ` Andreas Färber
2017-06-19  1:46         ` [PATCH v5 07/26] dt-bindings: serial: Document Actions Semi Owl UARTs Andreas Färber
2017-06-19  1:46           ` [PATCH v5 08/26] tty: serial: Add Actions Semi Owl UART earlycon Andreas Färber
2017-06-19  2:12         ` [PATCH v4 09/28] " Greg Kroah-Hartman
2017-06-19  2:26           ` Andreas Färber
2017-06-06  0:54 ` [PATCH v4 10/28] Documentation: kernel-parameters: Document owl earlycon Andreas Färber
2017-06-06  0:54 ` [PATCH v4 11/28] ARM: dts: Add Actions Semi S500 and LeMaker Guitar Andreas Färber
2017-06-18 22:10   ` Andreas Färber
2017-06-19  1:08     ` [PATCH v5 10/27] " Andreas Färber
2017-06-19  2:01       ` Andreas Färber
2017-06-06  0:54 ` [PATCH v4 12/28] dt-bindings: Add vendor prefix for uCRobotics Andreas Färber
2017-06-18 22:19   ` Andreas Färber
2017-06-06  0:54 ` [PATCH v4 13/28] dt-bindings: arm: Document Actions Semi S900 Andreas Färber
2017-06-18 22:29   ` Andreas Färber
2017-06-06  0:54 ` [PATCH v4 14/28] ARM64: dts: Add Actions Semi S900 and Bubblegum-96 Andreas Färber
2017-06-18 22:40   ` Andreas Färber
2017-06-06  0:54 ` [PATCH v4 15/28] MAINTAINERS: Add Actions Semi Owl section Andreas Färber
2017-06-18 22:49   ` Andreas Färber
2017-06-19  2:44     ` [PATCH v5 13/26] " Andreas Färber
2017-06-26  6:56       ` 答复: " 张天益
2017-06-06  0:54 ` [PATCH v4 16/28] tty: serial: owl: Implement console driver Andreas Färber
2017-06-06 13:34   ` Alan Cox
2017-07-02 20:27     ` Andreas Färber
2017-06-07 14:37   ` Andy Shevchenko
2017-07-02 22:36     ` Andreas Färber
2017-06-06  0:54 ` [PATCH v4 17/28] ARM64: dts: actions: s900-bubblegum-96: Add fake uart5 clock Andreas Färber
2017-09-05 21:29   ` Andreas Färber
2017-06-06  0:54 ` [PATCH v4 18/28] ARM: dts: s500-guitar-bb-rev-b: Add fake uart3 clock Andreas Färber
2017-09-05 21:37   ` Andreas Färber
2017-06-06  0:54 ` [PATCH v4 19/28] dt-bindings: arm: cpus: Add S500 enable-method Andreas Färber
2017-06-19  2:09   ` Andreas Färber
2017-06-06  0:54 ` [PATCH v4 20/28] ARM: owl: Implement CPU enable-method for S500 Andreas Färber
2017-06-19  2:11   ` Andreas Färber
2017-06-21  8:16   ` Arnd Bergmann
2017-06-21 10:25     ` Arnd Bergmann
2017-06-21 16:48       ` Andreas Färber
2017-06-21 18:02         ` Arnd Bergmann
2017-06-29 15:07     ` Arnd Bergmann
2017-06-29 15:22       ` Andreas Färber
2017-06-29 15:50         ` Arnd Bergmann
2017-07-01 21:29           ` [PATCH] ARM: owl: smp: Drop bogus holding pen Andreas Färber
2017-07-03 12:35             ` Arnd Bergmann
2017-07-01  4:42         ` 答复: [PATCH v4 20/28] ARM: owl: Implement CPU enable-method for S500 刘炜
2017-07-01 19:56           ` Andreas Färber
2017-07-03  8:13             ` 刘炜
2017-07-04 23:32               ` [PATCH] ARM: owl: smp: Drop owl_secondary_boot() Andreas Färber
2017-07-05  2:36                 ` Florian Fainelli
2017-07-06 17:17                   ` Andreas Färber
2017-07-06 17:38                     ` Alexandre Belloni
2017-07-06 19:47                       ` Florian Fainelli
2017-07-07  7:34                         ` Gregory CLEMENT
2017-07-07 17:32                           ` Florian Fainelli
2017-07-06 17:39                     ` Mark Rutland
2017-07-06 21:16                       ` Florian Fainelli [this message]
2017-07-09 21:55                     ` Andreas Färber
2017-07-10  4:27                       ` Florian Fainelli
2017-06-06  0:54 ` [PATCH v4 21/28] ARM: dts: s500: Set CPU enable-method Andreas Färber
2017-06-19  2:09   ` Andreas Färber
2017-06-06  0:54 ` [PATCH v4 22/28] dt-bindings: power: Add Owl SPS power domains Andreas Färber
2017-06-19  3:36   ` [PATCH v5 20/26] " Andreas Färber
2017-06-19  3:57     ` Andreas Färber
2017-06-06  0:54 ` [PATCH v4 23/28] soc: actions: Add Owl SPS Andreas Färber
2017-06-19  3:40   ` [PATCH v5 21/26] " Andreas Färber
2017-06-19  3:59     ` Andreas Färber
2017-06-06  0:54 ` [PATCH v4 24/28] MAINTAINERS: Update Actions Semi section with SPS Andreas Färber
2017-06-19  3:44   ` [PATCH v5 22/26] " Andreas Färber
2017-06-19  4:00     ` Andreas Färber
2017-06-06  0:54 ` [PATCH v4 25/28] ARM: dts: s500: Add SPS node Andreas Färber
2017-06-19  4:01   ` Andreas Färber
2017-06-06  0:54 ` [PATCH v4 26/28] ARM: dts: s500: Set power domains for CPU2 and CPU3 Andreas Färber
2017-07-27 20:58   ` Andreas Färber
2017-06-06  0:54 ` [PATCH v4 27/28] soc: actions: owl-sps: Factor out owl_sps_set_pg() for power-gating Andreas Färber
2017-06-19  4:12   ` Andreas Färber
2017-06-06  0:54 ` [PATCH v4 28/28] ARM: owl: smp: Implement SPS power-gating for CPU2 and CPU3 Andreas Färber

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=663f99ab-85bf-4a8e-67a1-e84f59e7bdcc@gmail.com \
    --to=f.fainelli@gmail.com \
    --cc=linux-arm-kernel@lists.infradead.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).