Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1754894AbbGQQ6I (ORCPT ); Fri, 17 Jul 2015 12:58:08 -0400 Received: from mga01.intel.com ([192.55.52.88]:10244 "EHLO mga01.intel.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1754490AbbGQQ6E (ORCPT ); Fri, 17 Jul 2015 12:58:04 -0400 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.15,497,1432623600"; d="scan'208";a="766453034" Message-ID: <55A9341B.2050401@linux.intel.com> Date: Fri, 17 Jul 2015 09:58:03 -0700 From: Dave Hansen User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:31.0) Gecko/20100101 Thunderbird/31.7.0 MIME-Version: 1.0 To: Ingo Molnar CC: linux-kernel@vger.kernel.org, Andy Lutomirski , Borislav Petkov , Fenghua Yu , "H. Peter Anvin" , Linus Torvalds , Oleg Nesterov , Thomas Gleixner , Ross Zwisler Subject: Re: [REGRESSION] 4.2-rc2: early boot memory corruption from FPU rework References: <1430848300-27877-1-git-send-email-mingo@kernel.org> <1430848300-27877-19-git-send-email-mingo@kernel.org> <55A56709.6020201@linux.intel.com> <20150715110726.GA26611@gmail.com> <55A6FC31.5010102@linux.intel.com> <20150717074555.GA31873@gmail.com> In-Reply-To: <20150717074555.GA31873@gmail.com> Content-Type: text/plain; charset=windows-1252 Content-Transfer-Encoding: 7bit Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Length: 2436 Lines: 52 On 07/17/2015 12:45 AM, Ingo Molnar wrote: > Just curious: does any released hardware have AVX-512? I went by Wikipedia, which > seems to list pre-release hw: >> We might know the size and composition of the individual components, but we do >> not know the size of the buffer. Different implementations of a given feature >> are quite free to have different data stored in the buffer, or even to rearrange >> or pad it. That's why the sizes are not explicitly called out by the >> architecture and why we enumerated them before your patch that caused this >> regression. > > But we _have_ to know their structure and layout of the XSAVE context for any > reasonable ptrace and signal frame support. There are two different things here. One is the structure and layout inside of the state components. That obviously needs full kernel knowledge and can not be opaque, especially when the kernel needs to go looking at it (like with MPX's BNDCSR for instance). But, the relative layout of the components is up for grabs. The CPU is completely free (architecturally) to pad components or rearrange things. It's not opaque (it's fully enumerated in CPUID), but it's far from something which is static or which we can realistically represent in a static structure. > Can you set/get AVX-512 registers via ptrace? MPX state? The xsave buffer is just copied out to userspace with REGSET_XSTATE. Userspace needs to do the same song and dance with CPUID to parse it that the kernel does. >> This came out a lot more complicated than I would have liked. >> >> Instead of simply enabling all of the XSAVE features that we both know about and >> the CPU supports, we have to be careful to not overflow our buffer in >> 'init_fpstate.xsave'. > > Yeah, and this can be fixed separately and on top of your fix: my plan during the > FPU rework was to move the context area to the end of task_struct and size it > dynamically. > > This needs some (very minor) changes to kernel/fork.c to allow an architecture to > determine the full task_struct size dynamically - but looks very doable and clean. > Wanna try this, or should I? I think you already did this later in the thread. -- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/