From mboxrd@z Thu Jan 1 00:00:00 1970 Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1751913AbeAOSEO (ORCPT + 1 other); Mon, 15 Jan 2018 13:04:14 -0500 Received: from mx1.redhat.com ([209.132.183.28]:37422 "EHLO mx1.redhat.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1751680AbeAOSEM (ORCPT ); Mon, 15 Jan 2018 13:04:12 -0500 Date: Mon, 15 Jan 2018 12:04:05 -0600 From: Josh Poimboeuf To: Peter Zijlstra Cc: David Woodhouse , linux-kernel@vger.kernel.org, Dave Hansen , Ashok Raj , Thomas Gleixner , Tim Chen , Andy Lutomirski , Linus Torvalds , Greg KH , Andrea Arcangeli , Andi Kleen , Arjan Van De Ven , Dan Williams , Paolo Bonzini , Jun Nakajima , Asit Mallick , Borislav Petkov Subject: Re: [PATCH 2/4] objtool: Implement jump_assert for _static_cpu_has() Message-ID: <20180115180405.cdzdgw6tocbsmbrf@treble> References: <20180115164428.498966552@infradead.org> <20180115164909.836510626@infradead.org> MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Disposition: inline In-Reply-To: <20180115164909.836510626@infradead.org> User-Agent: Mutt/1.6.0.1 (2016-04-01) X-Greylist: Sender IP whitelisted, not delayed by milter-greylist-4.5.16 (mx1.redhat.com [10.5.110.26]); Mon, 15 Jan 2018 18:04:11 +0000 (UTC) Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Return-Path: On Mon, Jan 15, 2018 at 05:44:30PM +0100, Peter Zijlstra wrote: > Unlike the jump_label bits, static_cpu_has is implemented with > alternatives. Sadly it doesn't readily distinguish itself from any > other alternatives. > > Use a heuristic to guess at it :/ > > But like jump_labels, make static_cpu_has set br_static on the > instructions after the static branch such that we can assert on it. This seems a bit heavy handed and fragile, though maybe it is the best way. Still I wonder if there's a better way to do it. Some quick ideas: a) Somehow use __jump_table in the _static_cpu_has() macro? b) Add another special annotation to tell objtool where _static_cpu_has() locations are? May need to ruminate on this one a bit... -- Josh