Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1752717AbcD1BGG (ORCPT ); Wed, 27 Apr 2016 21:06:06 -0400 Received: from relay3.sgi.com ([192.48.152.1]:41896 "EHLO relay.sgi.com" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S1751550AbcD1BGC (ORCPT ); Wed, 27 Apr 2016 21:06:02 -0400 Message-Id: <20160428005457.471061412@asylum.americas.sgi.com> User-Agent: quilt/0.46-1 Date: Wed, 27 Apr 2016 19:54:57 -0500 From: Mike Travis To: Ingo Molnar , "H. Peter Anvin" , Thomas Gleixner , Andrew Morton , Len Brown Cc: x86@kernel.org, linux-kernel@vger.kernel.org, uv4-kernel@sgi.com Subject: [PATCH 00/21] X86_64, UV: Update kernel for SGI UV4 support Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Length: 2885 Lines: 61 This patch set primarily updates the Linux kernel to support the next generation SGI Ultraviolet system, UV4. This architecture change is a larger incremental change than previous UV updates because of a major change to the addressing scheme. Previous UV architectures used a fixed address width per node which was entirely appropriate, since the size of RAM memory usually did not deviate very much between nodes. Now on UV4 non-volatile memories can be added to any or all of the nodes. The available sizes can be both smaller and much larger than that of volatile memory on the same node. To accommodate this configuration change, the architecture was updated to support a varying per node memory width (or total per node memory). And since this removed a key conversion factor known as "M" (the number of address space bits per node), the kernel also had to change to support the new address conversion functions. Other changes in addition to this basic overhaul of the internal logic include support for the increasing number of cores and thus CPU threads per node. Another inevitable architecture change will be the increase of the system addressing space supported in future processors, upward from the current 46 bits. One other aspect, because these are somewhat extensive changes to the UV kernel support system, we've also done extensive testing on current UV architectures to insure that these changes do not break existing functionality. Since we do not have actual UV4 hardware yet, the UV4 simulator has been used to test and debug UV4 specific changes. Specific changes that support the updates are: * Add support for UV4 specific hardware changes. This was done in a way to maintain source code compatibility with supported external modules, for distros with kernel releases prior to the UV4 changes. * Add new UV4 MMR definitions from automated verilog to MMR defines scripts. Add control info to select UV4 in "UV common" functions. * Migrate from using per cpu information structures to consolidating information common to nodes (move per cpu UVHUB info to per node info). * Migrate more information look up from lists allocated on node 0 to structures allocated on the local node (move per blade info to per node info). * Use more "soft" information that is collected by UV BIOS to control conversion routines instead of relying on information in MMR fields (gather more info from the EFI UVsystab system table.) * Add high speed physical address to node/pnode/NASID conversion look ups. * Add "soft" support for undefined MMR access to aid debugging the UV common functions. * Remove support for UV1 going forward. Remove obsolete GRU support from the GRU/XP drivers. Fix an ongoing problem determining the correct physical placement of nodes containing either no cpus or no memory ("headless/memoryless nodes"). --