Received: by 2002:a05:6a10:9848:0:0:0:0 with SMTP id x8csp2404164pxf; Sat, 27 Mar 2021 10:25:02 -0700 (PDT) X-Google-Smtp-Source: ABdhPJxJPcopzpErQGj2HcL5oSRVzmljyXSueYNXBwCI+bzPMWkul7JrZtrFU063O8xSfpf16K4X X-Received: by 2002:a17:906:1113:: with SMTP id h19mr20628184eja.478.1616865902765; Sat, 27 Mar 2021 10:25:02 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1616865902; cv=none; d=google.com; s=arc-20160816; b=LJtpaE/LXsB4mos/gKl2HWTH/4GcXqzUb+5RYTePH+OB3cCTWZEy5dXuNCRlRTXPF4 TlbtPaXfvxc2caXbaNAM24AnRyv6p2EZ7IuvjJq7x72WgWGcQL4DZsFdFa78MWu+DQw+ sZayRVToNLb6Ml4tWCHuoJYsIC8azLuWUAYFUzG/1v5WI7deC/1V32HTPdPtXgAcTJKE PH9C9Jk942e6j5fEtlWo2DgN8LUfvtPrYYZ3wxj/7rmrNtpS4/F3Z3D4Gc+FXQykHtCG G9hUjyJZCKe4Yz2o/oSrS62MyWw5DfGa9FOGBh/9ORQptOEXyC0ERNLbYF7uHzlSVkuf gbXw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:content-transfer-encoding:content-language :in-reply-to:mime-version:user-agent:date:message-id:from:references :cc:to:subject; bh=9rbby+RVvCiKoaEZlQohQvzz1P9wr9bWIGmK8Xa3czc=; b=bjkeBJgWE5aJu8PYN/6ZA2R0VbkXb+PYyE5GIyTILMsj5+JtCL8xvin0ZXEAUXvCb+ B4FxaxEp/D0O/60tE9TZSkfH1HZcnYsAY6j9YMr3QrI/XbrIGkxADXdk+NZdoLdL0ep6 ypftyNgXrGGKogyDU+RWLnaFXPknSUm61MrVPYgqhsRaS8TLxFGTeLE+uHVBP0MFV+HI +XXGq0IoBirf2P+nVibWSGHJPmzjrQr7949oW+mHsdwa5YnAc+MQ3CBT3y9El4w5EocP 8z/Re3LIU0jf4dyBzD5AtLXyLeKJhBx2upEjiE5NW3tBMR4VpLPdiLJwoR2ylt7ryd9Y Iw0A== ARC-Authentication-Results: i=1; mx.google.com; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Return-Path: Received: from vger.kernel.org (vger.kernel.org. [23.128.96.18]) by mx.google.com with ESMTP id qh20si8897617ejb.749.2021.03.27.10.24.39; Sat, 27 Mar 2021 10:25:02 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) client-ip=23.128.96.18; Authentication-Results: mx.google.com; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S230086AbhC0RUZ (ORCPT + 99 others); Sat, 27 Mar 2021 13:20:25 -0400 Received: from pegase1.c-s.fr ([93.17.236.30]:41635 "EHLO pegase1.c-s.fr" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S230296AbhC0RUI (ORCPT ); Sat, 27 Mar 2021 13:20:08 -0400 Received: from localhost (mailhub1-int [192.168.12.234]) by localhost (Postfix) with ESMTP id 4F75FL0fb4z9ty5P; Sat, 27 Mar 2021 18:20:06 +0100 (CET) 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 X-4yeutIqUOF; Sat, 27 Mar 2021 18:20:06 +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 4F75FK6plhz9ty5N; Sat, 27 Mar 2021 18:20:05 +0100 (CET) Received: from localhost (localhost [127.0.0.1]) by messagerie.si.c-s.fr (Postfix) with ESMTP id 0E59F8B777; Sat, 27 Mar 2021 18:20:06 +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 BhNcRVEsIzab; Sat, 27 Mar 2021 18:20:05 +0100 (CET) Received: from [192.168.4.90] (unknown [192.168.4.90]) by messagerie.si.c-s.fr (Postfix) with ESMTP id 484DD8B771; Sat, 27 Mar 2021 18:20:05 +0100 (CET) Subject: Re: [PATCH] powerpc/vdso: Separate vvar vma from vdso To: Dmitry Safonov , linux-kernel@vger.kernel.org Cc: Dmitry Safonov <0x7f454c46@gmail.com>, Andrei Vagin , Andy Lutomirski , Benjamin Herrenschmidt , Laurent Dufour , Michael Ellerman , Paul Mackerras , linuxppc-dev@lists.ozlabs.org, stable@vger.kernel.org, Laurent Dufour References: <20210326191720.138155-1-dima@arista.com> From: Christophe Leroy Message-ID: <52562f46-6767-ba04-7301-04c6209fe4f1@csgroup.eu> Date: Sat, 27 Mar 2021 18:19:37 +0100 User-Agent: Mozilla/5.0 (Windows NT 6.1; Win64; x64; rv:78.0) Gecko/20100101 Thunderbird/78.9.0 MIME-Version: 1.0 In-Reply-To: <20210326191720.138155-1-dima@arista.com> Content-Type: text/plain; charset=utf-8; format=flowed Content-Language: fr Content-Transfer-Encoding: 8bit Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Le 26/03/2021 à 20:17, Dmitry Safonov a écrit : > Since commit 511157ab641e ("powerpc/vdso: Move vdso datapage up front") > VVAR page is in front of the VDSO area. In result it breaks CRIU > (Checkpoint Restore In Userspace) [1], where CRIU expects that "[vdso]" > from /proc/../maps points at ELF/vdso image, rather than at VVAR data page. > Laurent made a patch to keep CRIU working (by reading aux vector). > But I think it still makes sence to separate two mappings into different > VMAs. It will also make ppc64 less "special" for userspace and as > a side-bonus will make VVAR page un-writable by debugger (which previously > would COW page and can be unexpected). > > I opportunistically Cc stable on it: I understand that usually such > stuff isn't a stable material, but that will allow us in CRIU have > one workaround less that is needed just for one release (v5.11) on > one platform (ppc64), which we otherwise have to maintain. Why is that a workaround, and why for one release only ? I think the solution proposed by Laurentto use the aux vector AT_SYSINFO_EHDR should work with any past and future release. > I wouldn't go as far as to say that the commit 511157ab641e is ABI > regression as no other userspace got broken, but I'd really appreciate > if it gets backported to v5.11 after v5.12 is released, so as not > to complicate already non-simple CRIU-vdso code. Thanks! > > Cc: Andrei Vagin > Cc: Andy Lutomirski > Cc: Benjamin Herrenschmidt > Cc: Christophe Leroy > Cc: Laurent Dufour > Cc: Michael Ellerman > Cc: Paul Mackerras > Cc: linuxppc-dev@lists.ozlabs.org > Cc: stable@vger.kernel.org # v5.11 > [1]: https://github.com/checkpoint-restore/criu/issues/1417 > Signed-off-by: Dmitry Safonov > Tested-by: Christophe Leroy I tested it with sifreturn_vdso selftest and it worked, because that selftest doesn't involve VDSO data. But if I do a mremap() on the VDSO text vma without remapping VVAR to keep the same distance between the two vmas, gettimeofday() crashes. The reason is that the code obtains the address of the data by calculating a fix difference from its own address with the below macro, the delta being resolved at link time: .macro get_datapage ptr bcl 20, 31, .+4 999: mflr \ptr #if CONFIG_PPC_PAGE_SHIFT > 14 addis \ptr, \ptr, (_vdso_datapage - 999b)@ha #endif addi \ptr, \ptr, (_vdso_datapage - 999b)@l .endm So the datapage needs to remain at the same distance from the code at all time. Wondering how the other architectures do to have two independant VMAs and be able to move one independantly of the other. Christophe