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
next prev parent 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).