linux-kernel.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* [PATCH 00/21] X86_64, UV: Update kernel for SGI UV4 support
@ 2016-04-28 23:10 Mike Travis
  2016-04-28 23:10 ` [PATCH 01/21] X86_64, UV: Add Initial UV4 definitions Mike Travis
                   ` (20 more replies)
  0 siblings, 21 replies; 25+ messages in thread
From: Mike Travis @ 2016-04-28 23:10 UTC (permalink / raw)
  To: Ingo Molnar, H. Peter Anvin, Thomas Gleixner, Andrew Morton,
	Len Brown, Dimitri Sivanich
  Cc: Russ Anderson, John Estabrook, Andrew Banman, Nathan Zimmer, x86,
	linux-kernel


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").

-- 

^ permalink raw reply	[flat|nested] 25+ messages in thread
* [PATCH 00/21] X86_64, UV: Update kernel for SGI UV4 support
@ 2016-04-29 21:54 Mike Travis
  2016-04-29 21:54 ` [PATCH 04/21] X86_64, UV: Add UV MMR Illegal Access Function Mike Travis
  0 siblings, 1 reply; 25+ messages in thread
From: Mike Travis @ 2016-04-29 21:54 UTC (permalink / raw)
  To: Ingo Molnar, H. Peter Anvin, Thomas Gleixner, Andrew Morton,
	Len Brown, Dimitri Sivanich
  Cc: Russ Anderson, John Estabrook, Andrew Banman, Nathan Zimmer, x86,
	linux-kernel


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").

--
V2:
  Put back in the UV1 code and select it with a Kconfig option.
  Clean up a comment.
  Remove redundant typedefs.
--
V3:
  Fix insertion errors of the UV1 code and further streamline it.
--

-- 

^ permalink raw reply	[flat|nested] 25+ messages in thread
* [PATCH 00/21] X86_64, UV: Update kernel for SGI UV4 support
@ 2016-04-28  0:54 Mike Travis
  2016-04-28  0:55 ` [PATCH 04/21] X86_64, UV: Add UV MMR Illegal Access Function Mike Travis
  0 siblings, 1 reply; 25+ messages in thread
From: Mike Travis @ 2016-04-28  0:54 UTC (permalink / raw)
  To: Ingo Molnar, H. Peter Anvin, Thomas Gleixner, Andrew Morton, Len Brown
  Cc: x86, linux-kernel, uv4-kernel


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").

-- 

^ permalink raw reply	[flat|nested] 25+ messages in thread

end of thread, other threads:[~2016-04-29 21:59 UTC | newest]

Thread overview: 25+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2016-04-28 23:10 [PATCH 00/21] X86_64, UV: Update kernel for SGI UV4 support Mike Travis
2016-04-28 23:10 ` [PATCH 01/21] X86_64, UV: Add Initial UV4 definitions Mike Travis
2016-04-28 23:10 ` [PATCH 02/21] X86_64, UV: Add UV Architecture Defines Mike Travis
2016-04-28 23:10 ` [PATCH 03/21] X86_64, UV: Add UV4 Specific Defines Mike Travis
2016-04-28 23:10 ` [PATCH 04/21] X86_64, UV: Add UV MMR Illegal Access Function Mike Travis
2016-04-28 23:10 ` [PATCH 05/21] X86_64, UV: Prep for UV4 MMR updates Mike Travis
2016-04-28 23:10 ` [PATCH 06/21] X86_64, UV: Add UV4 Specific MMR definitions Mike Travis
2016-04-28 23:10 ` [PATCH 07/21] X86_64, UV: Enable/Disable UV1 only workaround code Mike Travis
2016-04-29  7:40   ` Ingo Molnar
2016-04-28 23:10 ` [PATCH 08/21] X86_64, UV: Clean up redunduncies after merge of UV4 MMR definitions Mike Travis
2016-04-28 23:10 ` [PATCH 09/21] X86_64, UV: Update MMIOH setup function to work for both UV3 and UV4 Mike Travis
2016-04-28 23:10 ` [PATCH 10/21] X86_64, UV: Create per cpu info structs to replace per hub info structs Mike Travis
2016-04-28 23:10 ` [PATCH 11/21] X86_64, UV: Move scir info to the per cpu info struct Mike Travis
2016-04-28 23:10 ` [PATCH 12/21] X86_64, UV: Move blade local processor ID " Mike Travis
2016-04-28 23:10 ` [PATCH 13/21] X86_64, UV: Allocate common per node hub info structs on local node Mike Travis
2016-04-28 23:10 ` [PATCH 14/21] X86_64, UV: Fold blade info into per node hub info structs Mike Travis
2016-04-28 23:10 ` [PATCH 15/21] X86_64, UV: Add UV4 addressing discovery function Mike Travis
2016-04-28 23:10 ` [PATCH 16/21] X86_64, UV: Add obtaining GAM Range Table from UV BIOS Mike Travis
2016-04-28 23:10 ` [PATCH 17/21] X86_64, UV: Support UV4 socket address changes Mike Travis
2016-04-28 23:10 ` [PATCH 18/21] X86_64, UV: Build GAM reference tables Mike Travis
2016-04-28 23:10 ` [PATCH 19/21] X86_64, UV: Update physical address conversions for UV4 Mike Travis
2016-04-28 23:10 ` [PATCH 20/21] X86_64, UV: Remove Obsolete GRU MMR address translation Mike Travis
2016-04-28 23:10 ` [PATCH 21/21] X86_64, UV: Fix incorrect nodes and pnodes for cpuless and memoryless nodes Mike Travis
  -- strict thread matches above, loose matches on Subject: below --
2016-04-29 21:54 [PATCH 00/21] X86_64, UV: Update kernel for SGI UV4 support Mike Travis
2016-04-29 21:54 ` [PATCH 04/21] X86_64, UV: Add UV MMR Illegal Access Function Mike Travis
2016-04-28  0:54 [PATCH 00/21] X86_64, UV: Update kernel for SGI UV4 support Mike Travis
2016-04-28  0:55 ` [PATCH 04/21] X86_64, UV: Add UV MMR Illegal Access Function Mike Travis

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).