From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Google-Smtp-Source: AH8x225HVP3FJjGJkA88YoM/j7M5Up95GS1PPok6fCQDF9+3yzMz6ZJDsVzelclcp79Ovlio6CLT ARC-Seal: i=1; a=rsa-sha256; t=1516876019; cv=none; d=google.com; s=arc-20160816; b=Cdra5V1ZkdpkKhsJEKzcIl6ULWWebR4YHFStIv+CeKglchH++ncSWOxwSree+EoIKD Do76mbNUBQPZ/JdXiECdHWOVedO78QWGqbf9Dj0MHhgPt7986gcuGkR6hQ4QCihDGgYS 8fZd+lbLrK5x5cYcNhMPElpLwareUiEJ6CKgxImYybAphsPuVFkHjucVcU97Guhzn1S+ Z/YkoNYFJRNbAtdU5Z/vW75E7EZ1Zsy0lJmijPP1B5Zs1HN9rRvAKF07IbT1r3ZlDTGg uQbEIJWo1XWDatOo41jnzTdBnSTCn4WgPksVBy4ZrJewt+7+zIo0FKnJ1Zo2So5wUSZU YMSA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=content-transfer-encoding:content-language:in-reply-to:mime-version :user-agent:date:message-id:from:references:cc:to:subject :arc-authentication-results; bh=7+GRaxoj20fGRBdYQTk+9dIKdPGea5S+TsYWv/IgsCM=; b=qZ1w7H2nCUxRdOvV/8LkpNZK0SoWSQpPBKKzSZOsM9bxmzUtXjYrnxtX5C9yk4AXfQ lWKUHget+c9pnPXlB6uG+sR9i7/YGL+kp3uPS2oqgWxmYSL5r8dFj0zugooQVUrU35Oc PUOdaCeU1GPwKJ7oBhhh7NqXC7eyVlv79TZed38aeq8eiQqAEdo/F11r2V24mN++3c7G UbyxBQiLPgsz0NZ//HUkcpfsigjnzuAu0VJTInf9c+L8hr4Yerm9qA4kLDWlXelWg+C0 Alg1eWZVbebbSMiedH8eFpQcsQUmfKN2hbovImCfz1H1mvVesjoVeI1qICAtp2zUm9m7 DvGg== ARC-Authentication-Results: i=1; mx.google.com; spf=pass (google.com: domain of jgross@suse.com designates 195.135.220.15 as permitted sender) smtp.mailfrom=jgross@suse.com Authentication-Results: mx.google.com; spf=pass (google.com: domain of jgross@suse.com designates 195.135.220.15 as permitted sender) smtp.mailfrom=jgross@suse.com Subject: Re: [PATCH 03/24] x86/paravirt: Annotate indirect calls To: Peter Zijlstra , David Woodhouse Cc: Thomas Gleixner , Josh Poimboeuf , linux-kernel@vger.kernel.org, Dave Hansen , Ashok Raj , Tim Chen , Andy Lutomirski , Linus Torvalds , Greg KH , Andrea Arcangeli , Andi Kleen , Arjan Van De Ven , Dan Williams , Paolo Bonzini , Jun Nakajima , Asit Mallick , Jason Baron References: <20180123152539.374360046@infradead.org> <20180123152638.162540737@infradead.org> <1516874525.30244.41.camel@infradead.org> <20180125102253.GB2228@hirez.programming.kicks-ass.net> From: Juergen Gross Message-ID: <81ade568-6ab3-a62a-5026-5138f2313ab3@suse.com> Date: Thu, 25 Jan 2018 11:26:57 +0100 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:52.0) Gecko/20100101 Thunderbird/52.5.2 MIME-Version: 1.0 In-Reply-To: <20180125102253.GB2228@hirez.programming.kicks-ass.net> Content-Type: text/plain; charset=utf-8 Content-Language: de-DE Content-Transfer-Encoding: 7bit X-getmail-retrieved-from-mailbox: INBOX X-GMAIL-THRID: =?utf-8?q?1590397845189698377?= X-GMAIL-MSGID: =?utf-8?q?1590559789024988001?= X-Mailing-List: linux-kernel@vger.kernel.org List-ID: On 25/01/18 11:22, Peter Zijlstra wrote: > On Thu, Jan 25, 2018 at 10:02:05AM +0000, David Woodhouse wrote: >> On Tue, 2018-01-23 at 16:25 +0100, Peter Zijlstra wrote: >>> Paravirt emits indirect calls which get flagged by objtool retpoline >>> checks, annotate it away because all these indirect calls will be >>> patched out before we start userspace. >> >> I've seen this asserted repeatedly but I've never truly convinced >> myself of it. Is this absolutely unconditionally true in every case, >> even when we're running as a guest and there are *actual* calls to be >> made? We turn them into direct calls, never leave them indirect? > > That is my understanding; and when I worked on the paravirt spinlock > code and disassembled live guest code this seemed to have happend. > > But let me go read the paravirt code again to make a stronger argument > in favour. > paravirt_patch_default() is the function you want to look at: it either replaces the indirect call by some cutom code (which is never an indirect call) or by a call of the target function. Juergen