linuxppc-dev.lists.ozlabs.org archive mirror
 help / color / mirror / Atom feed
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

  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).