From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1754306Ab1I2MF0 (ORCPT ); Thu, 29 Sep 2011 08:05:26 -0400 Received: from mtagate2.uk.ibm.com ([194.196.100.162]:56976 "EHLO mtagate2.uk.ibm.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1751000Ab1I2MFZ (ORCPT ); Thu, 29 Sep 2011 08:05:25 -0400 Subject: Re: Jump Label initialization From: Jan Glauber To: Jeremy Fitzhardinge Cc: Jason Baron , Peter Zijlstra , Steven Rostedt , Linux Kernel Mailing List , Michael Ellerman , David Daney , "David S. Miller" In-Reply-To: <4E83D49C.9080809@goop.org> References: <4E83D49C.9080809@goop.org> Content-Type: text/plain; charset="UTF-8" Date: Thu, 29 Sep 2011 14:04:54 +0200 Message-ID: <1317297894.23938.9.camel@localhost.localdomain> Mime-Version: 1.0 X-Mailer: Evolution 2.30.3 Content-Transfer-Encoding: 7bit Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org On Wed, 2011-09-28 at 19:14 -0700, Jeremy Fitzhardinge wrote: > Hi all, > > I'm trying to use the jump label machinery as part of the pv ticketlock > work I'm doing on x86. > > The problem I'm having at the moment is that I do my spinlock setup in > smp_prepare_boot_cpu(), which happens before jump_label_init() gets > called, and so the latter goes and nops out all my enabled jump label key. > > I'm experimenting at the moment with a patch to allow > jump_label_enable() to be called fairly early, and have that be > respected by jump_label_init(). I'm doing this by replacing > arch_jump_label_poke_text_early() with > arch_jump_label_transform_early(), which shares most of its code with > its non-early variant, except that it expects to run in a pre-SMP > environment. > > Does this seem plausible? (I haven't tested it yet.) > > The x86, mips and sparc patches are fairly simple; I forgot to look at > powerpc, and I didn't fully investigate s390. s390 does not have the early() variant since it didn't need it. On pre-SMP we probably don't need stop_machine() so creating arch_jump_label_transform_early() by leaving out stop_machine() and patching the code directly should be fine.