From: Balbir Singh <bsingharora@gmail.com>
To: Benjamin Herrenschmidt <benh@kernel.crashing.org>,
Madhavan Srinivasan <maddy@linux.vnet.ibm.com>,
mpe@ellerman.id.au
Cc: linuxppc-dev@lists.ozlabs.org, paulus@samba.org, anton@samba.org,
npiggin@gmail.com
Subject: Re: [PATCH v4 02/12] powerpc: move set_soft_enabled() and rename
Date: Wed, 21 Dec 2016 00:58:47 +1100 [thread overview]
Message-ID: <b9aa1f9a-4df0-0816-8cf9-ec38dec7d13e@gmail.com> (raw)
In-Reply-To: <1482226347.15937.44.camel@kernel.crashing.org>
On 20/12/16 20:32, Benjamin Herrenschmidt wrote:
> On Tue, 2016-12-20 at 20:03 +1100, Balbir Singh wrote:
>>
>> On 19/12/16 19:06, Madhavan Srinivasan wrote:
>>> Move set_soft_enabled() from powerpc/kernel/irq.c to
>>> asm/hw_irq.c, to force updates to paca-soft_enabled
>>> done via these access function. Add "memory" clobber
>>> to hint compiler since paca->soft_enabled memory is the target
>>> here
>>> +static inline notrace void soft_enabled_set(unsigned long enable)
>>> +{
>>> + __asm__ __volatile__("stb %0,%1(13)"
>>> + : : "r" (enable), "i" (offsetof(struct paca_struct,
>>> soft_enabled))
>>> + : "memory");
>>> +}
>>> +
>>
>> Can't we just rewrite this in "C"?
>>
>> local_paca->soft_enabled = enable
>
> Well, this is digging out another bloody can of baby eating worms...
>
> So the reason we wrote it like that is because we had gcc playing
> tricks to us.
>
> It has been proved to move around references to local_paca, even
> accross preempt_disable boundaries.
>
> The above prevents it.
>
> I'm about 100% sure we have a bunch of other issues related to PACA
> access and gcc playing games though. I remember grepping the kernel
> disassembly once for gcc doing funny things with r13 such as copying it
> into another register or even saving and restoring it and my grep
> didn't come up empty ...
>
I checked for arch_local_irq_restore before suggesting it, not all
functions. I tried a quick audit of disassembly not using load/stores
on r13 and most of it was in hand written disassembly in the exception
handling paths, secondary processor initialization, wake up from idle.
Having said that I audited with one version of gcc on a little endian
vmlinux.
> Something we need to seriously look into one day. I have some ideas on
> how to clean that up in the code to make hardening it easier, let's
> talk next time Nick is in town.
>
Sure lets leave it as is for now
Balbir
next prev parent reply other threads:[~2016-12-20 13:59 UTC|newest]
Thread overview: 24+ messages / expand[flat|nested] mbox.gz Atom feed top
2016-12-19 8:06 [PATCH v4 00/12]powerpc: "paca->soft_enabled" based local atomic operation implementation Madhavan Srinivasan
2016-12-19 8:06 ` [PATCH v4 01/12] powerpc: Add #defs for paca->soft_enabled flags Madhavan Srinivasan
2016-12-20 7:31 ` Balbir Singh
2016-12-21 3:22 ` Madhavan Srinivasan
2016-12-19 8:06 ` [PATCH v4 02/12] powerpc: move set_soft_enabled() and rename Madhavan Srinivasan
2016-12-20 9:03 ` Balbir Singh
2016-12-20 9:32 ` Benjamin Herrenschmidt
2016-12-20 13:58 ` Balbir Singh [this message]
2016-12-21 3:32 ` Madhavan Srinivasan
2016-12-19 8:06 ` [PATCH v4 03/12] powerpc: Use soft_enabled_set api to update paca->soft_enabled Madhavan Srinivasan
2016-12-19 8:07 ` [PATCH v4 04/12] powerpc: Add soft_enabled manipulation functions Madhavan Srinivasan
2016-12-19 8:07 ` [PATCH v4 05/12] powerpc: reverse the soft_enable logic Madhavan Srinivasan
2016-12-19 8:07 ` [PATCH v4 06/12] powerpc: Avoid using EXCEPTION_PROLOG_1 macro in MASKABLE_* Madhavan Srinivasan
2016-12-19 8:07 ` [PATCH v4 07/12] powerpc: Add support to take additional parameter in MASKABLE_* macro Madhavan Srinivasan
2016-12-20 2:36 ` Nicholas Piggin
2016-12-21 6:14 ` Madhavan Srinivasan
2016-12-19 8:07 ` [PATCH v4 08/12] powerpc: Add support to mask perf interrupts and replay them Madhavan Srinivasan
2016-12-19 8:07 ` [PATCH v4 09/12] powerpc:Add new kconfig IRQ_DEBUG_SUPPORT Madhavan Srinivasan
2016-12-19 8:07 ` [PATCH v4 10/12] powerpc: Add new set of soft_enabled_ functions Madhavan Srinivasan
2016-12-20 2:42 ` Nicholas Piggin
2016-12-19 8:07 ` [PATCH v4 11/12] powerpc: rewrite local_t using soft_irq Madhavan Srinivasan
2016-12-19 8:07 ` [PATCH v4 12/12] powerpc: Rename soft_enabled to soft_disabled_mask Madhavan Srinivasan
2016-12-20 2:58 ` Nicholas Piggin
2017-01-04 9:33 ` Madhavan Srinivasan
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=b9aa1f9a-4df0-0816-8cf9-ec38dec7d13e@gmail.com \
--to=bsingharora@gmail.com \
--cc=anton@samba.org \
--cc=benh@kernel.crashing.org \
--cc=linuxppc-dev@lists.ozlabs.org \
--cc=maddy@linux.vnet.ibm.com \
--cc=mpe@ellerman.id.au \
--cc=npiggin@gmail.com \
--cc=paulus@samba.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).