From: Steven Rostedt <rostedt@goodmis.org>
To: Daniel Bristot de Oliveira <bristot@redhat.com>
Cc: linux-kernel@vger.kernel.org,
Thomas Gleixner <tglx@linutronix.de>,
Ingo Molnar <mingo@redhat.com>, Borislav Petkov <bp@alien8.de>,
"H. Peter Anvin" <hpa@zytor.com>,
Greg Kroah-Hartman <gregkh@linuxfoundation.org>,
Pavel Tatashin <pasha.tatashin@oracle.com>,
Masami Hiramatsu <mhiramat@kernel.org>,
Zhou Chengming <zhouchengming1@huawei.com>,
Jiri Kosina <jkosina@suse.cz>,
Josh Poimboeuf <jpoimboe@redhat.com>,
"Peter Zijlstra (Intel)" <peterz@infradead.org>,
Chris von Recklinghausen <crecklin@redhat.com>,
Jason Baron <jbaron@akamai.com>, Scott Wood <swood@redhat.com>,
Marcelo Tosatti <mtosatti@redhat.com>,
Clark Williams <williams@redhat.com>,
x86@kernel.org
Subject: Re: [PATCH V2 7/9] x86/alternative: Batch of patch operations
Date: Tue, 18 Dec 2018 12:31:34 -0500 [thread overview]
Message-ID: <20181218123134.2bdcc042@gandalf.local.home> (raw)
In-Reply-To: <327a30e43e27ed3a0300952126bf36fae6652b74.1545149539.git.bristot@redhat.com>
On Tue, 18 Dec 2018 17:46:36 +0100
Daniel Bristot de Oliveira <bristot@redhat.com> wrote:
> +void text_poke_bp_batch(struct text_to_poke *tp, unsigned int nr_entries)
> +{
> + unsigned int i;
> + unsigned char int3 = 0xcc;
> + int patched_all_but_first = 0;
> +
> + bp_int3_tpv = tp;
> + bp_int3_tpv_nr = nr_entries;
> + bp_patching_in_progress = true;
> + /*
> + * Corresponding read barrier in int3 notifier for making sure the
> + * in_progress and handler are correctly ordered wrt. patching.
> + */
> + smp_wmb();
> +
> + for (i = 0; i < nr_entries; i++)
> + text_poke_bp_set_handler(tp[i].addr, tp[i].handler, int3);
> +
> + on_each_cpu(do_sync_core, NULL, 1);
> +
> + for (i = 0; i < nr_entries; i++) {
> + if (tp->len - sizeof(int3) > 0) {
Should this be:
if (tp[i].len - sizeof(int3) > 0) {
?
-- Steve
> + patch_all_but_first_byte(tp[i].addr, tp[i].opcode,
> + tp[i].len, int3);
> + patched_all_but_first++;
> + }
> + }
> +
> + if (patched_all_but_first) {
> + /*
> + * According to Intel, this core syncing is very likely
> + * not necessary and we'd be safe even without it. But
> + * better safe than sorry (plus there's not only Intel).
> + */
> + on_each_cpu(do_sync_core, NULL, 1);
> + }
> +
> + for (i = 0; i < nr_entries; i++)
> + patch_first_byte(tp[i].addr, tp[i].opcode, int3);
> +
> + on_each_cpu(do_sync_core, NULL, 1);
> + /*
> + * sync_core() implies an smp_mb() and orders this store against
> + * the writing of the new instruction.
> + */
> + bp_int3_tpv_nr = 0;
> + bp_int3_tpv = NULL;
> + bp_patching_in_progress = false;
> +}
next prev parent reply other threads:[~2018-12-18 17:31 UTC|newest]
Thread overview: 24+ messages / expand[flat|nested] mbox.gz Atom feed top
2018-12-18 16:46 [PATCH V2 0/9] x86/jump_label: Bound IPIs sent when updating a static key Daniel Bristot de Oliveira
2018-12-18 16:46 ` [PATCH V2 1/9] jump_label: Add for_each_label_entry helper Daniel Bristot de Oliveira
2018-12-18 21:19 ` Borislav Petkov
2018-12-19 7:38 ` Daniel Bristot de Oliveira
2018-12-19 10:37 ` Borislav Petkov
2018-12-18 16:46 ` [PATCH V2 2/9] jump_label: Add the jump_label_can_update_check() helper Daniel Bristot de Oliveira
2018-12-18 16:46 ` [PATCH V2 3/9] x86/jump_label: Move checking code away from __jump_label_transform() Daniel Bristot de Oliveira
2018-12-19 8:43 ` Jiri Kosina
2018-12-19 8:49 ` Thomas Gleixner
2018-12-19 10:14 ` Daniel Bristot de Oliveira
2018-12-18 16:46 ` [PATCH V2 4/9] x86/jump_label: Add __jump_label_set_jump_code() helper Daniel Bristot de Oliveira
2018-12-18 16:46 ` [PATCH V2 5/9] x86/alternative: Split text_poke_bp() into tree steps Daniel Bristot de Oliveira
2018-12-18 17:25 ` Steven Rostedt
2018-12-19 8:44 ` Jiri Kosina
2018-12-18 16:46 ` [PATCH V2 6/9] jump_label: Sort entries of the same key by the code Daniel Bristot de Oliveira
2018-12-18 16:46 ` [PATCH V2 7/9] x86/alternative: Batch of patch operations Daniel Bristot de Oliveira
2018-12-18 17:31 ` Steven Rostedt [this message]
2018-12-18 19:27 ` Daniel Bristot de Oliveira
2018-12-18 16:46 ` [PATCH V2 8/9] x86/jump_label: Batch jump label updates Daniel Bristot de Oliveira
2018-12-18 16:46 ` [PATCH V2 9/9] jump_label: Batch up if arch supports it Daniel Bristot de Oliveira
2018-12-18 17:35 ` Steven Rostedt
2018-12-18 19:33 ` Daniel Bristot de Oliveira
2018-12-18 20:32 ` Steven Rostedt
2018-12-18 21:06 ` Daniel Bristot de Oliveira
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=20181218123134.2bdcc042@gandalf.local.home \
--to=rostedt@goodmis.org \
--cc=bp@alien8.de \
--cc=bristot@redhat.com \
--cc=crecklin@redhat.com \
--cc=gregkh@linuxfoundation.org \
--cc=hpa@zytor.com \
--cc=jbaron@akamai.com \
--cc=jkosina@suse.cz \
--cc=jpoimboe@redhat.com \
--cc=linux-kernel@vger.kernel.org \
--cc=mhiramat@kernel.org \
--cc=mingo@redhat.com \
--cc=mtosatti@redhat.com \
--cc=pasha.tatashin@oracle.com \
--cc=peterz@infradead.org \
--cc=swood@redhat.com \
--cc=tglx@linutronix.de \
--cc=williams@redhat.com \
--cc=x86@kernel.org \
--cc=zhouchengming1@huawei.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®