mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git
synced 2024-10-31 16:38:12 +00:00
24d33ac5b8
When we boot from open firmware (OF) using PPC_OF_BOOT_TRAMPOLINE, aka. prom_init, we run parts of the kernel at an address other than the link address. That happens because OF loads the kernel above zero (OF is at zero) and we run prom_init before copying the kernel down to zero. Currently that works even for non-relocatable kernels, because we do various fixups to the prom_init code to make it run where it's loaded. However those fixups are not sufficient if the kernel becomes large enough. In that case prom_init()'s final call to __start() can end up generating a plt branch: bl c000000002000018 <00000078.plt_branch.__start> That results in the kernel jumping to the linked address of __start, 0xc000000000000000, when really it needs to jump to the 0xc000000000000000 + the runtime address because the kernel is still running at the load address. We could do further shenanigans to handle that, see Jordan's patch for example: https://lore.kernel.org/linuxppc-dev/20210421021721.1539289-1-jniethe5@gmail.com However it is much simpler to just require a kernel with prom_init() to be built relocatable. The result works in all configurations without further work, and requires less code. This should have no effect on most people, as our defconfigs and essentially all distro configs already have RELOCATABLE enabled. Signed-off-by: Michael Ellerman <mpe@ellerman.id.au> Link: https://lore.kernel.org/r/20210623130454.2542945-1-mpe@ellerman.id.au
302 lines
8.1 KiB
Text
302 lines
8.1 KiB
Text
# SPDX-License-Identifier: GPL-2.0
|
|
menu "Platform support"
|
|
|
|
source "arch/powerpc/platforms/powernv/Kconfig"
|
|
source "arch/powerpc/platforms/pseries/Kconfig"
|
|
source "arch/powerpc/platforms/chrp/Kconfig"
|
|
source "arch/powerpc/platforms/512x/Kconfig"
|
|
source "arch/powerpc/platforms/52xx/Kconfig"
|
|
source "arch/powerpc/platforms/powermac/Kconfig"
|
|
source "arch/powerpc/platforms/maple/Kconfig"
|
|
source "arch/powerpc/platforms/pasemi/Kconfig"
|
|
source "arch/powerpc/platforms/ps3/Kconfig"
|
|
source "arch/powerpc/platforms/cell/Kconfig"
|
|
source "arch/powerpc/platforms/8xx/Kconfig"
|
|
source "arch/powerpc/platforms/82xx/Kconfig"
|
|
source "arch/powerpc/platforms/83xx/Kconfig"
|
|
source "arch/powerpc/platforms/85xx/Kconfig"
|
|
source "arch/powerpc/platforms/86xx/Kconfig"
|
|
source "arch/powerpc/platforms/embedded6xx/Kconfig"
|
|
source "arch/powerpc/platforms/44x/Kconfig"
|
|
source "arch/powerpc/platforms/40x/Kconfig"
|
|
source "arch/powerpc/platforms/amigaone/Kconfig"
|
|
source "arch/powerpc/platforms/book3s/Kconfig"
|
|
source "arch/powerpc/platforms/microwatt/Kconfig"
|
|
|
|
config KVM_GUEST
|
|
bool "KVM Guest support"
|
|
select EPAPR_PARAVIRT
|
|
help
|
|
This option enables various optimizations for running under the KVM
|
|
hypervisor. Overhead for the kernel when not running inside KVM should
|
|
be minimal.
|
|
|
|
In case of doubt, say Y
|
|
|
|
config EPAPR_PARAVIRT
|
|
bool "ePAPR para-virtualization support"
|
|
help
|
|
Enables ePAPR para-virtualization support for guests.
|
|
|
|
In case of doubt, say Y
|
|
|
|
config PPC_NATIVE
|
|
bool
|
|
depends on PPC_BOOK3S_32 || PPC64
|
|
help
|
|
Support for running natively on the hardware, i.e. without
|
|
a hypervisor. This option is not user-selectable but should
|
|
be selected by all platforms that need it.
|
|
|
|
config PPC_OF_BOOT_TRAMPOLINE
|
|
bool "Support booting from Open Firmware or yaboot"
|
|
depends on PPC_BOOK3S_32 || PPC64
|
|
select RELOCATABLE if PPC64
|
|
default y
|
|
help
|
|
Support from booting from Open Firmware or yaboot using an
|
|
Open Firmware client interface. This enables the kernel to
|
|
communicate with open firmware to retrieve system information
|
|
such as the device tree.
|
|
|
|
In case of doubt, say Y
|
|
|
|
config PPC_DT_CPU_FTRS
|
|
bool "Device-tree based CPU feature discovery & setup"
|
|
depends on PPC_BOOK3S_64
|
|
default y
|
|
help
|
|
This enables code to use a new device tree binding for describing CPU
|
|
compatibility and features. Saying Y here will attempt to use the new
|
|
binding if the firmware provides it. Currently only the skiboot
|
|
firmware provides this binding.
|
|
If you're not sure say Y.
|
|
|
|
config UDBG_RTAS_CONSOLE
|
|
bool "RTAS based debug console"
|
|
depends on PPC_RTAS
|
|
|
|
config PPC_SMP_MUXED_IPI
|
|
bool
|
|
help
|
|
Select this option if your platform supports SMP and your
|
|
interrupt controller provides less than 4 interrupts to each
|
|
cpu. This will enable the generic code to multiplex the 4
|
|
messages on to one ipi.
|
|
|
|
config IPIC
|
|
bool
|
|
|
|
config MPIC
|
|
bool
|
|
|
|
config MPIC_TIMER
|
|
bool "MPIC Global Timer"
|
|
depends on MPIC && FSL_SOC
|
|
help
|
|
The MPIC global timer is a hardware timer inside the
|
|
Freescale PIC complying with OpenPIC standard. When the
|
|
specified interval times out, the hardware timer generates
|
|
an interrupt. The driver currently is only tested on fsl
|
|
chip, but it can potentially support other global timers
|
|
complying with the OpenPIC standard.
|
|
|
|
config FSL_MPIC_TIMER_WAKEUP
|
|
tristate "Freescale MPIC global timer wakeup driver"
|
|
depends on FSL_SOC && MPIC_TIMER && PM
|
|
help
|
|
The driver provides a way to wake up the system by MPIC
|
|
timer.
|
|
e.g. "echo 5 > /sys/devices/system/mpic/timer_wakeup"
|
|
|
|
config PPC_EPAPR_HV_PIC
|
|
bool
|
|
select EPAPR_PARAVIRT
|
|
|
|
config MPIC_WEIRD
|
|
bool
|
|
|
|
config MPIC_MSGR
|
|
bool "MPIC message register support"
|
|
depends on MPIC
|
|
help
|
|
Enables support for the MPIC message registers. These
|
|
registers are used for inter-processor communication.
|
|
|
|
config PPC_I8259
|
|
bool
|
|
|
|
config U3_DART
|
|
bool
|
|
depends on PPC64
|
|
|
|
config PPC_RTAS
|
|
bool
|
|
|
|
config RTAS_ERROR_LOGGING
|
|
bool
|
|
depends on PPC_RTAS
|
|
|
|
config PPC_RTAS_DAEMON
|
|
bool
|
|
depends on PPC_RTAS
|
|
|
|
config RTAS_PROC
|
|
bool "Proc interface to RTAS"
|
|
depends on PPC_RTAS && PROC_FS
|
|
default y
|
|
|
|
config RTAS_FLASH
|
|
tristate "Firmware flash interface"
|
|
depends on PPC64 && RTAS_PROC
|
|
|
|
config MMIO_NVRAM
|
|
bool
|
|
|
|
config MPIC_U3_HT_IRQS
|
|
bool
|
|
|
|
config MPIC_BROKEN_REGREAD
|
|
bool
|
|
depends on MPIC
|
|
help
|
|
This option enables a MPIC driver workaround for some chips
|
|
that have a bug that causes some interrupt source information
|
|
to not read back properly. It is safe to use on other chips as
|
|
well, but enabling it uses about 8KB of memory to keep copies
|
|
of the register contents in software.
|
|
|
|
config EEH
|
|
bool
|
|
depends on (PPC_POWERNV || PPC_PSERIES) && PCI
|
|
default y
|
|
|
|
config PPC_MPC106
|
|
bool
|
|
|
|
config PPC_970_NAP
|
|
bool
|
|
|
|
config PPC_P7_NAP
|
|
bool
|
|
|
|
config PPC_BOOK3S_IDLE
|
|
def_bool y
|
|
depends on (PPC_970_NAP || PPC_P7_NAP)
|
|
|
|
config PPC_INDIRECT_PIO
|
|
bool
|
|
select GENERIC_IOMAP
|
|
|
|
config PPC_INDIRECT_MMIO
|
|
bool
|
|
|
|
config PPC_IO_WORKAROUNDS
|
|
bool
|
|
|
|
source "drivers/cpufreq/Kconfig"
|
|
|
|
menu "CPUIdle driver"
|
|
|
|
source "drivers/cpuidle/Kconfig"
|
|
|
|
endmenu
|
|
|
|
config TAU
|
|
bool "On-chip CPU temperature sensor support"
|
|
depends on PPC_BOOK3S_32
|
|
help
|
|
G3 and G4 processors have an on-chip temperature sensor called the
|
|
'Thermal Assist Unit (TAU)', which, in theory, can measure the on-die
|
|
temperature within 2-4 degrees Celsius. This option shows the current
|
|
on-die temperature in /proc/cpuinfo if the cpu supports it.
|
|
|
|
Unfortunately, this sensor is very inaccurate when uncalibrated, so
|
|
don't assume the cpu temp is actually what /proc/cpuinfo says it is.
|
|
|
|
config TAU_INT
|
|
bool "Interrupt driven TAU driver (EXPERIMENTAL)"
|
|
depends on TAU
|
|
help
|
|
The TAU supports an interrupt driven mode which causes an interrupt
|
|
whenever the temperature goes out of range. This is the fastest way
|
|
to get notified the temp has exceeded a range. With this option off,
|
|
a timer is used to re-check the temperature periodically.
|
|
|
|
If in doubt, say N here.
|
|
|
|
config TAU_AVERAGE
|
|
bool "Average high and low temp"
|
|
depends on TAU
|
|
help
|
|
The TAU hardware can compare the temperature to an upper and lower
|
|
bound. The default behavior is to show both the upper and lower
|
|
bound in /proc/cpuinfo. If the range is large, the temperature is
|
|
either changing a lot, or the TAU hardware is broken (likely on some
|
|
G4's). If the range is small (around 4 degrees), the temperature is
|
|
relatively stable. If you say Y here, a single temperature value,
|
|
halfway between the upper and lower bounds, will be reported in
|
|
/proc/cpuinfo.
|
|
|
|
If in doubt, say N here.
|
|
|
|
config QE_GPIO
|
|
bool "QE GPIO support"
|
|
depends on QUICC_ENGINE
|
|
select GPIOLIB
|
|
help
|
|
Say Y here if you're going to use hardware that connects to the
|
|
QE GPIOs.
|
|
|
|
config CPM2
|
|
bool "Enable support for the CPM2 (Communications Processor Module)"
|
|
depends on (FSL_SOC_BOOKE && PPC32) || 8260
|
|
select CPM
|
|
select HAVE_PCI
|
|
select GPIOLIB
|
|
help
|
|
The CPM2 (Communications Processor Module) is a coprocessor on
|
|
embedded CPUs made by Freescale. Selecting this option means that
|
|
you wish to build a kernel for a machine with a CPM2 coprocessor
|
|
on it (826x, 827x, 8560).
|
|
|
|
config FSL_ULI1575
|
|
bool
|
|
select GENERIC_ISA_DMA
|
|
help
|
|
Supports for the ULI1575 PCIe south bridge that exists on some
|
|
Freescale reference boards. The boards all use the ULI in pretty
|
|
much the same way.
|
|
|
|
config CPM
|
|
bool
|
|
select GENERIC_ALLOCATOR
|
|
|
|
config OF_RTC
|
|
bool
|
|
help
|
|
Uses information from the OF or flattened device tree to instantiate
|
|
platform devices for direct mapped RTC chips like the DS1742 or DS1743.
|
|
|
|
config GEN_RTC
|
|
bool "Use the platform RTC operations from user space"
|
|
select RTC_CLASS
|
|
select RTC_DRV_GENERIC
|
|
help
|
|
This option provides backwards compatibility with the old gen_rtc.ko
|
|
module that was traditionally used for old PowerPC machines.
|
|
Platforms should migrate to enabling the RTC_DRV_GENERIC by hand
|
|
replacing their get_rtc_time/set_rtc_time callbacks with
|
|
a proper RTC device driver.
|
|
|
|
config MCU_MPC8349EMITX
|
|
bool "MPC8349E-mITX MCU driver"
|
|
depends on I2C=y && PPC_83xx
|
|
select GPIOLIB
|
|
help
|
|
Say Y here to enable soft power-off functionality on the Freescale
|
|
boards with the MPC8349E-mITX-compatible MCU chips. This driver will
|
|
also register MCU GPIOs with the generic GPIO API, so you'll able
|
|
to use MCU pins as GPIOs.
|
|
|
|
endmenu
|