linux_dsm_epyc7002/arch
Bernhard Walle 8a3360f06c [IA64] Don't reserve crashkernel memory > 4 GB
Some IA64 machines map all cell-local memory above 4 GB (32 bit limit).
However, in most cases, the kernel needs some memory below that limit that is
DMA-capable. So in this machine configuration, the crashkernel will be reserved
above 4 GB.

For machines that use SWIOTLB implementation because they lack an I/O MMU
the low memory is required by the SWIOTLB implementation. In that case,
it doesn't make sense to reserve the crashkernel at all because it's unusable
for kdump.

A special case is the "hpzx1" machine vector. In theory, it has a I/O MMU, so
it can be booted above 4 GB. However, in the kdump case that is not possible
because of changeset 51b58e3e26:

    On HP zx1 machines, the 'machvec=dig' parameter is needed for the kdump
    kernel to avoid problems with the HP sba iommu.  The problem is that during
    the boot of the kdump kernel, the iommu is re-initialized, so in-flight DMA
    from improperly shutdown drivers causes an IOTLB miss which leads to an
    MCA.  With kdump, the idea is to get into the kdump kernel with as little
    code as we can, so shutting down drivers properly is not an option.

    The workaround is to add 'machvec=dig' to the kdump kernel boot parameters.
    This makes the kdump kernel avoid using the sba iommu altogether, leaving
    the IOTLB intact.  Any ongoing DMA falls harmlessly outside the kdump
    kernel.  After the kdump kernel reboots, all devices will have been
    shutdown properly and DMA stopped.

This patch pushes that functionality into the sba iommu initialization
code, so that users won't have to find the obscure documentation telling
them about 'machvec=dig'.

This means that also for hpzx1 it's not possible to boot when all
memory is above the 4 GB limit. So the only machine vectors that can handle
this case are "sn2" and "uv".

Signed-off-by: Bernhard Walle <bwalle@suse.de>
Signed-off-by: Tony Luck <tony.luck@intel.com>
2008-05-14 15:40:40 -07:00
..
alpha [PATCH] make osf_select() use core_sys_select() 2008-05-01 13:07:28 -04:00
arm Merge branch 'for-rmk' of git://git.kernel.org/pub/scm/linux/kernel/git/nico/orion into fixes 2008-05-09 23:24:09 +01:00
avr32 unified (weak) sys_pipe implementation 2008-05-03 13:50:33 -07:00
blackfin [Blackfin] arch: protect linux/usb/musb.h include until the driver gets mainlined 2008-05-10 00:08:12 +08:00
cris cris: kill sys_pipe implementation 2008-05-09 08:03:03 -07:00
frv unified (weak) sys_pipe implementation 2008-05-03 13:50:33 -07:00
h8300 unified (weak) sys_pipe implementation 2008-05-03 13:50:33 -07:00
ia64 [IA64] Don't reserve crashkernel memory > 4 GB 2008-05-14 15:40:40 -07:00
m32r m32r: use generic sys_pipe 2008-05-09 08:04:56 -07:00
m68k m68k: remove old mac_esp cruft 2008-05-05 12:38:50 -07:00
m68knommu m68knommu: missing sections for linker script 2008-05-13 08:02:25 -07:00
mips [MIPS] Pb1000: bury the remnants of the PCI code 2008-05-12 16:46:56 +01:00
mn10300 mn10300: replace deprecated "TOPDIR" with newer "srctree" 2008-05-13 08:02:24 -07:00
parisc parisc: fix DISCONTIGMEM compile breakage 2008-05-13 08:02:24 -07:00
powerpc [POWERPC] ppc: More compile fixes 2008-05-12 22:57:51 +10:00
ppc [POWERPC] ppc: More compile fixes 2008-05-12 22:57:51 +10:00
s390 [S390] guest page hinting light 2008-05-07 09:23:02 +02:00
sh SH: catch negative denormal_subf1() retval in denormal_add() 2008-05-09 20:05:10 +09:00
sparc sparc32: fix rtrap.S typo 2008-05-11 18:05:20 -07:00
sparc64 sparc64: Work around memory probing bug in openfirmware. 2008-05-11 21:04:48 -07:00
um uml: track and make up lost ticks 2008-05-13 08:02:22 -07:00
v850 unified (weak) sys_pipe implementation 2008-05-03 13:50:33 -07:00
x86 Merge branch 'x86-fixes-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip 2008-05-13 12:33:56 -07:00
xtensa xtensa: use kbuild.h macros instead of defining them in asm-offsets.c 2008-04-29 08:06:29 -07:00
.gitignore
Kconfig dma: add dma_*map*_attrs() interfaces 2008-04-29 08:06:11 -07:00