lkml.org 
[lkml]   [2022]   [Jan]   [31]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCH 5.16 089/200] sched/membarrier: Fix membarrier-rseq fence command missing from query bitmask
    Date
    From: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>

    commit 809232619f5b15e31fb3563985e705454f32621f upstream.

    The membarrier command MEMBARRIER_CMD_QUERY allows querying the
    available membarrier commands. When the membarrier-rseq fence commands
    were added, a new MEMBARRIER_CMD_PRIVATE_EXPEDITED_RSEQ_BITMASK was
    introduced with the intent to expose them with the MEMBARRIER_CMD_QUERY
    command, the but it was never added to MEMBARRIER_CMD_BITMASK.

    The membarrier-rseq fence commands are therefore not wired up with the
    query command.

    Rename MEMBARRIER_CMD_PRIVATE_EXPEDITED_RSEQ_BITMASK to
    MEMBARRIER_PRIVATE_EXPEDITED_RSEQ_BITMASK (the bitmask is not a command
    per-se), and change the erroneous
    MEMBARRIER_CMD_REGISTER_PRIVATE_EXPEDITED_RSEQ_BITMASK (which does not
    actually exist) to MEMBARRIER_CMD_REGISTER_PRIVATE_EXPEDITED_RSEQ.

    Wire up MEMBARRIER_PRIVATE_EXPEDITED_RSEQ_BITMASK in
    MEMBARRIER_CMD_BITMASK. Fixing this allows discovering availability of
    the membarrier-rseq fence feature.

    Fixes: 2a36ab717e8f ("rseq/membarrier: Add MEMBARRIER_CMD_PRIVATE_EXPEDITED_RSEQ")
    Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
    Signed-off-by: Peter Zijlstra (Intel) <peterz@infradead.org>
    Cc: <stable@vger.kernel.org> # 5.10+
    Link: https://lkml.kernel.org/r/20220117203010.30129-1-mathieu.desnoyers@efficios.com
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    ---
    kernel/sched/membarrier.c | 9 +++++----
    1 file changed, 5 insertions(+), 4 deletions(-)

    --- a/kernel/sched/membarrier.c
    +++ b/kernel/sched/membarrier.c
    @@ -147,11 +147,11 @@
    #endif

    #ifdef CONFIG_RSEQ
    -#define MEMBARRIER_CMD_PRIVATE_EXPEDITED_RSEQ_BITMASK \
    +#define MEMBARRIER_PRIVATE_EXPEDITED_RSEQ_BITMASK \
    (MEMBARRIER_CMD_PRIVATE_EXPEDITED_RSEQ \
    - | MEMBARRIER_CMD_REGISTER_PRIVATE_EXPEDITED_RSEQ_BITMASK)
    + | MEMBARRIER_CMD_REGISTER_PRIVATE_EXPEDITED_RSEQ)
    #else
    -#define MEMBARRIER_CMD_PRIVATE_EXPEDITED_RSEQ_BITMASK 0
    +#define MEMBARRIER_PRIVATE_EXPEDITED_RSEQ_BITMASK 0
    #endif

    #define MEMBARRIER_CMD_BITMASK \
    @@ -159,7 +159,8 @@
    | MEMBARRIER_CMD_REGISTER_GLOBAL_EXPEDITED \
    | MEMBARRIER_CMD_PRIVATE_EXPEDITED \
    | MEMBARRIER_CMD_REGISTER_PRIVATE_EXPEDITED \
    - | MEMBARRIER_PRIVATE_EXPEDITED_SYNC_CORE_BITMASK)
    + | MEMBARRIER_PRIVATE_EXPEDITED_SYNC_CORE_BITMASK \
    + | MEMBARRIER_PRIVATE_EXPEDITED_RSEQ_BITMASK)

    static void ipi_mb(void *info)
    {

    \
     
     \ /
      Last update: 2022-01-31 12:41    [W:5.309 / U:0.088 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site