KASAN is supported on powerpc on 32-bit and Radix 64-bit only.

32 bit support
==============

KASAN is supported on both hash and nohash MMUs on 32-bit.

The shadow area sits at the top of the kernel virtual memory space above the
fixmap area and occupies one eighth of the total kernel virtual memory space.

Instrumentation of the vmalloc area is optional, unless built with modules,
in which case it is required.

64 bit support
==============

Currently, only the radix MMU is supported. There have been versions for hash
and Book3E processors floating around on the mailing list, but nothing has been
merged.

KASAN support on Book3S is a bit tricky to get right:

 - It would be good to support inline instrumentation so as to be able to catch
   stack issues that cannot be caught with outline mode.

 - Inline instrumentation requires a fixed offset.

 - Book3S runs code with translations off ("real mode") during boot, including a
   lot of generic device-tree parsing code which is used to determine MMU
   features.

 - Some code - most notably a lot of KVM code - also runs with translations off
   after boot.

 - Therefore any offset has to point to memory that is valid with
   translations on or off.

One approach is just to give up on inline instrumentation. This way boot-time
checks can be delayed until after the MMU is set is up, and we can just not
instrument any code that runs with translations off after booting. This is the
current approach.

To avoid this limitation, the KASAN shadow would have to be placed inside the
linear mapping, using the same high-bits trick we use for the rest of the linear
mapping. This is tricky:

 - We'd like to place it near the start of physical memory. In theory we can do
   this at run-time based on how much physical memory we have, but this requires
   being able to arbitrarily relocate the kernel, which is basically the tricky
   part of KASLR. Not being game to implement both tricky things at once, this
   is hopefully something we can revisit once we get KASLR for Book3S.

 - Alternatively, we can place the shadow at the _end_ of memory, but this
   requires knowing how much contiguous physical memory a system has _at compile
   time_. This is a big hammer, and has some unfortunate consequences: inablity
   to handle discontiguous physical memory, total failure to boot on machines
   with less memory than specified, and that machines with more memory than
   specified can't use it. This was deemed unacceptable.
