From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-2.1 required=3.0 tests=DKIM_INVALID,DKIM_SIGNED, HEADER_FROM_DIFFERENT_DOMAINS,MAILING_LIST_MULTI,SPF_HELO_NONE,SPF_PASS, USER_AGENT_SANE_1 autolearn=no autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id CCC76C33CB1 for ; Wed, 15 Jan 2020 06:17:44 +0000 (UTC) Received: from lists.ozlabs.org (lists.ozlabs.org [203.11.71.2]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mail.kernel.org (Postfix) with ESMTPS id 425EF24671 for ; Wed, 15 Jan 2020 06:17:43 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=fail reason="signature verification failed" (1024-bit key) header.d=c-s.fr header.i=@c-s.fr header.b="UntR+ovd" DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org 425EF24671 Authentication-Results: mail.kernel.org; dmarc=none (p=none dis=none) header.from=c-s.fr Authentication-Results: mail.kernel.org; spf=pass smtp.mailfrom=linuxppc-dev-bounces+linuxppc-dev=archiver.kernel.org@lists.ozlabs.org Received: from lists.ozlabs.org (lists.ozlabs.org [IPv6:2401:3900:2:1::3]) by lists.ozlabs.org (Postfix) with ESMTP id 47yHDh15rCzDqSG for ; Wed, 15 Jan 2020 17:17:40 +1100 (AEDT) Authentication-Results: lists.ozlabs.org; spf=pass (sender SPF authorized) smtp.mailfrom=c-s.fr (client-ip=93.17.236.30; helo=pegase1.c-s.fr; envelope-from=christophe.leroy@c-s.fr; receiver=) Authentication-Results: lists.ozlabs.org; dmarc=none (p=none dis=none) header.from=c-s.fr Authentication-Results: lists.ozlabs.org; dkim=pass (1024-bit key; unprotected) header.d=c-s.fr header.i=@c-s.fr header.a=rsa-sha256 header.s=mail header.b=UntR+ovd; dkim-atps=neutral Received: from pegase1.c-s.fr (pegase1.c-s.fr [93.17.236.30]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by lists.ozlabs.org (Postfix) with ESMTPS id 47yHBZ0Rq3zDqRN for ; Wed, 15 Jan 2020 17:15:49 +1100 (AEDT) Received: from localhost (mailhub1-int [192.168.12.234]) by localhost (Postfix) with ESMTP id 47yHBT0bNKz9v9Dm; Wed, 15 Jan 2020 07:15:45 +0100 (CET) Authentication-Results: localhost; dkim=pass reason="1024-bit key; insecure key" header.d=c-s.fr header.i=@c-s.fr header.b=UntR+ovd; dkim-adsp=pass; dkim-atps=neutral X-Virus-Scanned: Debian amavisd-new at c-s.fr Received: from pegase1.c-s.fr ([192.168.12.234]) by localhost (pegase1.c-s.fr [192.168.12.234]) (amavisd-new, port 10024) with ESMTP id uRhu0hEJc6dc; Wed, 15 Jan 2020 07:15:45 +0100 (CET) Received: from messagerie.si.c-s.fr (messagerie.si.c-s.fr [192.168.25.192]) by pegase1.c-s.fr (Postfix) with ESMTP id 47yHBS5m1Pz9v9Dk; Wed, 15 Jan 2020 07:15:44 +0100 (CET) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=c-s.fr; s=mail; t=1579068944; bh=dLb+n74DT6jZUD4ec0gfhmKuZ7wdMUymXTZD+f3ESjs=; h=Subject:To:Cc:References:From:Date:In-Reply-To:From; b=UntR+ovdUgNuiOCdaG492qpGkB1inQlUzwXmUjovM/oqM/Vp3a/K3ppEYvczfO2ls w8S4Mabi06ZQ75T5HTmKpob6aRUwzfUY5vsQRUL7Zw5MJvFZAX1RNry5Mv2FWFVr5b rxL2XadbeDGNcEyFm+pdcDnM/FQoG26VHqpC1L64= Received: from localhost (localhost [127.0.0.1]) by messagerie.si.c-s.fr (Postfix) with ESMTP id 9A0E88B77E; Wed, 15 Jan 2020 07:15:45 +0100 (CET) X-Virus-Scanned: amavisd-new at c-s.fr Received: from messagerie.si.c-s.fr ([127.0.0.1]) by localhost (messagerie.si.c-s.fr [127.0.0.1]) (amavisd-new, port 10023) with ESMTP id 3sLM6Sb2GP2Q; Wed, 15 Jan 2020 07:15:45 +0100 (CET) Received: from [172.25.230.100] (po15451.idsi0.si.c-s.fr [172.25.230.100]) by messagerie.si.c-s.fr (Postfix) with ESMTP id 6976D8B774; Wed, 15 Jan 2020 07:15:45 +0100 (CET) Subject: Re: [RFC PATCH v3 08/12] lib: vdso: allow arches to provide vdso data pointer To: Thomas Gleixner , Benjamin Herrenschmidt , Paul Mackerras , Michael Ellerman , arnd@arndb.de, vincenzo.frascino@arm.com, luto@kernel.org References: <381e547dbb3c48fd39d6cf208033bba38ad048fb.1578934751.git.christophe.leroy@c-s.fr> <87ftghbpuu.fsf@nanos.tec.linutronix.de> From: Christophe Leroy Message-ID: Date: Wed, 15 Jan 2020 07:15:44 +0100 User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64; rv:60.0) Gecko/20100101 Thunderbird/60.9.1 MIME-Version: 1.0 In-Reply-To: <87ftghbpuu.fsf@nanos.tec.linutronix.de> Content-Type: text/plain; charset=utf-8; format=flowed Content-Language: fr Content-Transfer-Encoding: 8bit X-BeenThere: linuxppc-dev@lists.ozlabs.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: Linux on PowerPC Developers Mail List List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: x86@kernel.org, linuxppc-dev@lists.ozlabs.org, linux-kernel@vger.kernel.org, linux-arm-kernel@lists.infradead.org, linux-mips@vger.kernel.org Errors-To: linuxppc-dev-bounces+linuxppc-dev=archiver.kernel.org@lists.ozlabs.org Sender: "Linuxppc-dev" Le 15/01/2020 à 00:06, Thomas Gleixner a écrit : > Christophe Leroy writes: >> >> static __maybe_unused int >> +#ifdef VDSO_GETS_VD_PTR_FROM_ARCH >> +__cvdso_clock_gettime_common(const struct vdso_data *vd, clockid_t clock, >> + struct __kernel_timespec *ts) >> +{ >> +#else >> __cvdso_clock_gettime_common(clockid_t clock, struct __kernel_timespec *ts) >> { >> const struct vdso_data *vd = __arch_get_vdso_data(); >> +#endif >> u32 msk; > > If we do that, then there is no point in propagating this to the inner > functions. It's perfectly fine to have this distinction at the outermost > level. In v2, I did it at the arch level (see https://patchwork.ozlabs.org/patch/1214983/). Andy was concerned about it being suboptimal for arches which (unlike powerpc) have PC related data addressing mode. Wouldn't it be the same issue if doing it at the outermost level of generic VDSO ? > > As a related question, I noticed that you keep all that ASM voodoo in > the PPC specific code which provides the actual entry points. Is that > ASM code really still necessary? All current users of the generic VDSO > just do something like: > > int __vdso_clock_gettime(clockid_t clock, struct __kernel_timespec *ts) > { > return __cvdso_clock_gettime(clock, ts); > } > > in the architecture code. Is there a reason why this can't work on PPC? The problem with powerpc is that VDSO functions have to (just like system calls) set the SO bit in CR register in case of error, or clear it if no error. There is no way to do that from the C function, because there is no way to tell GCC to not play up with CR register on function return. Refer discussion at https://gcc.gnu.org/bugzilla/show_bug.cgi?id=92769 Christophe