All of lore.kernel.org
 help / color / mirror / Atom feed
From: Rusty Russell <rusty@rustcorp.com.au>
To: David Laight <David.Laight@ACULAB.COM>,
	'Madhavan Srinivasan' <maddy@linux.vnet.ibm.com>,
	"mpe\@ellerman.id.au" <mpe@ellerman.id.au>
Cc: "paulus@samba.org" <paulus@samba.org>,
	"linuxppc-dev@lists.ozlabs.org" <linuxppc-dev@lists.ozlabs.org>,
	"anton@samba.org" <anton@samba.org>
Subject: RE: [RFC PATCH 0/2] powerpc: CR based local atomic operation implementation
Date: Thu, 18 Dec 2014 21:23:56 +1030	[thread overview]
Message-ID: <87egrxteij.fsf@rustcorp.com.au> (raw)
In-Reply-To: <063D6719AE5E284EB5DD2968C1650D6D1CA0E993@AcuExch.aculab.com>

David Laight <David.Laight@ACULAB.COM> writes:
> From: Rusty Russell
>> David Laight <David.Laight@ACULAB.COM> writes:
>> > From: Madhavan Srinivasan [mailto:maddy@linux.vnet.ibm.com]
>> > ...
>> >> >>> I also wonder if it is possible to inspect the interrupted
>> >> >>> code to determine the start/end of the RAS block.
>> >> >>> (Easiest if you assume that there is a single 'write' instruction
>> >> >>> as the last entry in the block.)
>> >> >>>
>> >> >> So each local_* function also have code in the __ex_table section. IIUC,
>> >> >> __ex_table contains two address. So if the return address found in the
>> >> >> first column of the _ex_table, use the corresponding address in the
>> >> >> second column to continue from.
>> >> >
>> >> > That really doesn't scale.
>> >> > I don't know how many 1000 address pairs you table will have (and the
>> >> > ones in each loadable module), but the search isn't going to be cheap.
>> >> >
>> >> > If these sequences are restartable then they can only have one write
>> >> > to memory.
> ...
>> >> 2) resulting code with lot of condition and branch (for opcode decode)
>> >> will be lot messy and may be an issue incase of maintenance,
>> >
>> > You don't need to decode the instructions.
>> > Just look for the two specific instructions used as markers.
>> > This is only really possible with fixed-size instructions.
>> >
>> > It might also be that the 'interrupt entry' path is easier to
>> > modify than the 'interrupt exit' one (fewer code paths) and
>> > you just need to modify the 'pc' in the stack frame.
>> > You are only interested in interrupts from kernel space.
>> 
>> It's an overoptimization for case that statistically never happens.
>> You won't even be able to measure the difference.
>> 
>> The question of bloat remains, but that's also easily measured.  In
>> practice, I'd guess less than 1k.
>
> IIRC they were 'static inline' so the table of addresses is generated
> for every use site.
> (copyin/out generates a similarly enormous table of addresses on amd64)

There are about 20 callers in the entire kernel.

Cheers,
Rusty.

      reply	other threads:[~2014-12-18 23:39 UTC|newest]

Thread overview: 29+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2014-11-27 12:18 [RFC PATCH 0/2] powerpc: CR based local atomic operation implementation Madhavan Srinivasan
2014-11-27 12:18 ` [RFC PATCH 1/2]powerpc: foundation code to handle CR5 for local_t Madhavan Srinivasan
2014-11-27 16:56   ` Segher Boessenkool
2014-11-28  1:58     ` Benjamin Herrenschmidt
2014-11-28  3:00       ` Madhavan Srinivasan
2014-11-28 15:57       ` Segher Boessenkool
2014-11-28  2:57     ` Madhavan Srinivasan
2014-11-28 16:00       ` Segher Boessenkool
2014-11-28  0:56   ` Benjamin Herrenschmidt
2014-11-28  3:15     ` Madhavan Srinivasan
2014-11-28  3:21       ` Benjamin Herrenschmidt
2014-11-28 10:53         ` David Laight
2014-11-30  9:01           ` Benjamin Herrenschmidt
2014-12-01 21:35   ` Gabriel Paubert
2014-12-03 14:59     ` Madhavan Srinivasan
2014-12-03 17:07       ` Gabriel Paubert
2014-12-02  2:04   ` Scott Wood
2014-12-03 14:49     ` Madhavan Srinivasan
2014-11-27 12:18 ` [RFC PATCH 2/2]powerpc: rewrite local_* to use CR5 flag Madhavan Srinivasan
2014-12-01 18:01   ` Gabriel Paubert
2014-12-03 15:05     ` Madhavan Srinivasan
2014-11-27 14:05 ` [RFC PATCH 0/2] powerpc: CR based local atomic operation implementation David Laight
2014-11-28  8:27   ` Madhavan Srinivasan
2014-11-28 10:09     ` David Laight
2014-12-01 15:35       ` Madhavan Srinivasan
2014-12-01 15:53         ` David Laight
2014-12-18  4:18           ` Rusty Russell
2014-12-18  9:52             ` David Laight
2014-12-18 10:53               ` Rusty Russell [this message]

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=87egrxteij.fsf@rustcorp.com.au \
    --to=rusty@rustcorp.com.au \
    --cc=David.Laight@ACULAB.COM \
    --cc=anton@samba.org \
    --cc=linuxppc-dev@lists.ozlabs.org \
    --cc=maddy@linux.vnet.ibm.com \
    --cc=mpe@ellerman.id.au \
    --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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.