From: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
To: Charlie Jenkins <charlie@rivosinc.com>,
Andrea Parri <parri.andrea@gmail.com>
Cc: Palmer Dabbelt <palmer@dabbelt.com>,
rehn@rivosinc.com, paulmck@kernel.org,
Paul Walmsley <paul.walmsley@sifive.com>,
aou@eecs.berkeley.edu, linux-riscv@lists.infradead.org,
linux-kernel@vger.kernel.org, mmaas@google.com,
hboehm@google.com, striker@us.ibm.com
Subject: Re: [RFC PATCH] membarrier: riscv: Provide core serializing command
Date: Wed, 22 Nov 2023 21:13:43 -0500 [thread overview]
Message-ID: <790b8b57-43ac-447a-96b9-150e5b3a4237@efficios.com> (raw)
In-Reply-To: <ZV6lxsRmuN7bYFnD@ghost>
On 2023-11-22 20:07, Charlie Jenkins wrote:
> On Thu, Nov 09, 2023 at 08:24:58PM +0100, Andrea Parri wrote:
>> Mathieu, all,
>>
>> Sorry for the delay,
>>
>>> AFAIR this patch implements sync_core_before_usermode which gets used by
>>> membarrier_mm_sync_core_before_usermode() to handle the uthread->kthread->uthread
>>> case. It relies on switch_mm issuing a core serializing instruction as well.
>>>
>>> Looking at RISC-V switch_mm(), I see that switch_mm() calls:
>>>
>>> flush_icache_deferred(next, cpu);
>>>
>>> which only issues a fence.i if a deferred icache flush was required. We're
>>> missing the part that sets the icache_stale_mask cpumask bits when a
>>> MEMBARRIER_CMD_PRIVATE_EXPEDITED_SYNC_CORE is invoked.
>>
>> [...]
>>
>>> The only part where I think you may want to keep some level of deferred
>>> icache flushing as you do now is as follows:
>>>
>>> - when membarrier MEMBARRIER_CMD_PRIVATE_EXPEDITED_SYNC_CORE is invoked,
>>> call a new architecture hook which sets cpumask bits in the mm context
>>> that tells the next switch_mm on each cpu to issue fence.i for that mm.
>>> - keep something like flush_icache_deferred as you have now.
>>>
>>> Otherwise, I fear the overhead of a very expensive fence.i would be too
>>> much when processes registering with MEMBARRIER_CMD_REGISTER_PRIVATE_EXPEDITED_SYNC_CORE
>>> and start doing fence.i on each and every switch_mm().
>>>
>>> So you'd basically rely on membarrier to only issue IPIs to the CPUs which are
>>> currently running threads belonging to the mm, and handle the switch_mm with
>>> the sync_core_before_usermode() for uthread->kthread->uthread case, and implement
>>> a deferred icache flush for the typical switch_mm() case.
>>
>> I've (tried to) put this together and obtained the two patches reported below.
>> Please let me know if this aligns with your intentions and/or there's interest
>> in a proper submission.
>
> This looks good to me, can you send out a non-RFC? I just sent out
> patches to support userspace fence.i:
>
https://lore.kernel.org/linux-riscv/20231122-fencei-v1-0-bec0811cb212@rivosinc.com/T/#t.
>
> - Charlie
>
Hi Andrea,
Yes, please send those as non-RFC patches. They align well with my
intentions.
Thanks!
Mathieu
--
Mathieu Desnoyers
EfficiOS Inc.
https://www.efficios.com
next prev parent reply other threads:[~2023-11-23 2:13 UTC|newest]
Thread overview: 19+ messages / expand[flat|nested] mbox.gz Atom feed top
2023-08-03 4:01 Andrea Parri
2023-08-03 15:45 ` Andrea Parri
2023-08-03 20:28 ` Mathieu Desnoyers
2023-08-04 0:16 ` Andrea Parri
2023-08-04 14:20 ` Mathieu Desnoyers
2023-08-04 14:59 ` Andrea Parri
2023-08-04 18:05 ` Mathieu Desnoyers
2023-08-04 19:16 ` Andrea Parri
2023-08-04 20:06 ` Mathieu Desnoyers
2023-08-07 13:19 ` Andrea Parri
2023-10-13 17:29 ` Palmer Dabbelt
2023-10-13 18:49 ` Mathieu Desnoyers
2023-10-16 18:27 ` Robbin Ehn
2023-11-09 19:24 ` Andrea Parri
2023-11-10 6:33 ` [PATCH 1/2] locking: Introduce prepare_sync_core_cmd() kernel test robot
2023-11-23 1:07 ` [RFC PATCH] membarrier: riscv: Provide core serializing command Charlie Jenkins
2023-11-23 2:13 ` Mathieu Desnoyers [this message]
2023-11-27 10:44 ` Andrea Parri
2023-11-23 6:52 ` Robbin Ehn
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=790b8b57-43ac-447a-96b9-150e5b3a4237@efficios.com \
--to=mathieu.desnoyers@efficios.com \
--cc=aou@eecs.berkeley.edu \
--cc=charlie@rivosinc.com \
--cc=hboehm@google.com \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-riscv@lists.infradead.org \
--cc=mmaas@google.com \
--cc=palmer@dabbelt.com \
--cc=parri.andrea@gmail.com \
--cc=paul.walmsley@sifive.com \
--cc=paulmck@kernel.org \
--cc=rehn@rivosinc.com \
--cc=striker@us.ibm.com \
/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
all inboxes | Powered by JetHome®