From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1752773AbbAEQON (ORCPT ); Mon, 5 Jan 2015 11:14:13 -0500 Received: from mail-la0-f50.google.com ([209.85.215.50]:37048 "EHLO mail-la0-f50.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1751011AbbAEQOL (ORCPT ); Mon, 5 Jan 2015 11:14:11 -0500 MIME-Version: 1.0 In-Reply-To: <20150105140754.GF29390@twins.programming.kicks-ass.net> References: <20150105140754.GF29390@twins.programming.kicks-ass.net> From: Andy Lutomirski Date: Mon, 5 Jan 2015 08:13:49 -0800 Message-ID: Subject: Re: [PATCH 1/2] perf: Move task_pt_regs sampling into arch code To: Peter Zijlstra Cc: Stephane Eranian , Ingo Molnar , Jiri Olsa , root , Andrew Morton , =?UTF-8?B?56em5om/5YiaKOaJv+WImik=?= , Wu Fengguang , Mike Galbraith , Namhyung Kim , Arjan van de Ven , linux-kernel , David Ahern , Paul Mackerras , =?UTF-8?B?56em5om/5YiaKOaJv+WImik=?= , Yanmin Zhang Content-Type: text/plain; charset=UTF-8 Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org n Jan 5, 2015 6:08 AM, "Peter Zijlstra" wrote: > > On Sun, Jan 04, 2015 at 10:36:19AM -0800, Andy Lutomirski wrote: > > On x86_64, at least, task_pt_regs may be only partially initialized > > in many contexts, so x86_64 should not use it without extra care > > from interrupt context, let alone NMI context. > > > > This will allow x86_64 to override the logic and will supply some > > scratch space to use to make a cleaner copy of user regs. > > Just wondering how bad it would be to fill out the actual pt_regs that > was previously partially initialized? Bad, for at least two reasons. One is that we don't actually know which regs are initialized. bx, bp, r12 etc are particularly bad in this regard, due to the FORK_LIKE mechanism and similar optimizations. The other is that the uninitialized part of task_pt_regs can be used for something else entirely. If we have a syscall instruction immediately followed by a regular interrupt, then the interrupt's hardware frame will overlap task_pt_regs. (I'm not going to claim that this design is sensible, but it is what it is. IIRC Denys Vlasenko had some patches to partially clean this up.) It would be possible to rework the code to avoid an extra pt_regs copy, but I don't see an obvious way to do it cleanly. --Andy