2019-05-19 20:07:45 +08:00
|
|
|
# SPDX-License-Identifier: GPL-2.0-only
|
2017-07-11 09:08:08 +08:00
|
|
|
#
|
|
|
|
# For a description of the syntax of this configuration file,
|
2019-06-13 01:52:48 +08:00
|
|
|
# see Documentation/kbuild/kconfig-language.rst.
|
2017-07-11 09:08:08 +08:00
|
|
|
#
|
|
|
|
|
2018-04-27 14:38:23 +08:00
|
|
|
config 64BIT
|
|
|
|
bool
|
|
|
|
|
|
|
|
config 32BIT
|
|
|
|
bool
|
|
|
|
|
2017-07-11 09:08:08 +08:00
|
|
|
config RISCV
|
|
|
|
def_bool y
|
2018-04-03 22:24:20 +08:00
|
|
|
# even on 32-bit, physical (and DMA) addresses are > 32-bits
|
|
|
|
select PHYS_ADDR_T_64BIT
|
2017-07-11 09:08:08 +08:00
|
|
|
select OF
|
|
|
|
select OF_EARLY_FLATTREE
|
|
|
|
select OF_IRQ
|
2019-06-13 15:09:03 +08:00
|
|
|
select ARCH_HAS_BINFMT_FLAT
|
2017-07-11 09:08:08 +08:00
|
|
|
select ARCH_WANT_FRAME_POINTERS
|
|
|
|
select CLONE_BACKWARDS
|
|
|
|
select COMMON_CLK
|
|
|
|
select GENERIC_CLOCKEVENTS
|
|
|
|
select GENERIC_CPU_DEVICES
|
|
|
|
select GENERIC_IRQ_SHOW
|
|
|
|
select GENERIC_PCI_IOMAP
|
2018-12-04 18:29:51 +08:00
|
|
|
select GENERIC_SCHED_CLOCK
|
2017-07-11 09:08:08 +08:00
|
|
|
select GENERIC_STRNCPY_FROM_USER
|
|
|
|
select GENERIC_STRNLEN_USER
|
|
|
|
select GENERIC_SMP_IDLE_THREAD
|
2019-04-15 17:14:35 +08:00
|
|
|
select GENERIC_ATOMIC64 if !64BIT
|
2018-10-29 18:48:53 +08:00
|
|
|
select HAVE_ARCH_AUDITSYSCALL
|
2019-08-19 13:54:20 +08:00
|
|
|
select HAVE_ASM_MODVERSIONS
|
2018-01-16 16:37:50 +08:00
|
|
|
select HAVE_MEMBLOCK_NODE_MAP
|
2017-07-11 09:08:08 +08:00
|
|
|
select HAVE_DMA_CONTIGUOUS
|
RISC-V: Add futex support.
Here is an attempt to add the missing futex support. I started with the MIPS
version of futex.h and modified it until I got it working. I tested it on
a HiFive Unleashed running Fedora Core 29 using the fc29 4.15 version of the
kernel. This was tested against the glibc testsuite, where it fixes 14 nptl
related testsuite failures. That unfortunately only tests the cmpxchg support,
so I also used the testcase at the end of
https://lwn.net/Articles/148830/
which tests the atomic_op functionality, except that it doesn't verify that
the operations are atomic, which they obviously are. This testcase runs
successfully with the patch and fails without it.
I'm not a kernel expert, so there could be details I got wrong here. I wasn't
sure about the memory model support, so I used aqrl which seemed safest, and
didn't add fences which seemed unnecessary. I'm not sure about the copyright
statements, I left in Ralf Baechle's line because I started with his code.
Checkpatch reports some style problems, but it is the same style as the MIPS
futex.h, and the uses of ENOSYS appear correct even though it complains about
them. I don't know if any of that matters.
This patch was tested on qemu with the glibc nptl/tst-cond-except
testcase, and the wake_op testcase from above.
Signed-off-by: Jim Wilson <jimw@sifive.com>
Reviewed-by: Christoph Hellwig <hch@lst.de>
Signed-off-by: Palmer Dabbelt <palmer@sifive.com>
2018-10-17 05:42:59 +08:00
|
|
|
select HAVE_FUTEX_CMPXCHG if FUTEX
|
2018-04-20 07:27:49 +08:00
|
|
|
select HAVE_PERF_EVENTS
|
2019-09-05 11:46:35 +08:00
|
|
|
select HAVE_PERF_REGS
|
|
|
|
select HAVE_PERF_USER_STACK_DUMP
|
2018-12-06 23:26:35 +08:00
|
|
|
select HAVE_SYSCALL_TRACEPOINTS
|
2017-07-11 09:08:08 +08:00
|
|
|
select IRQ_DOMAIN
|
|
|
|
select SPARSE_IRQ
|
|
|
|
select SYSCTL_EXCEPTION_TRACE
|
|
|
|
select HAVE_ARCH_TRACEHOOK
|
2018-11-16 03:05:32 +08:00
|
|
|
select HAVE_PCI
|
2017-07-11 09:08:08 +08:00
|
|
|
select MODULES_USE_ELF_RELA if MODULES
|
RISC-V: Support MODULE_SECTIONS mechanism on RV32
This patch supports dynamic generate got and plt sections mechanism on
rv32. It contains the modification as follows:
- Always enable MODULE_SECTIONS (both rv64 and rv32)
- Change the fixed size type.
This patch had been tested by following modules:
btrfs 6795991 0 - Live 0xa544b000
test_static_keys 17304 0 - Live 0xa28be000
zstd_compress 1198986 1 btrfs, Live 0xa2a25000
zstd_decompress 608112 1 btrfs, Live 0xa24e7000
lzo 8787 0 - Live 0xa2049000
xor 27461 1 btrfs, Live 0xa2041000
zram 78849 0 - Live 0xa2276000
netdevsim 55909 0 - Live 0xa202d000
tun 211534 0 - Live 0xa21b5000
fuse 566049 0 - Live 0xa25fb000
nfs_layout_flexfiles 192597 0 - Live 0xa229b000
ramoops 74895 0 - Live 0xa2019000
xfs 3973221 0 - Live 0xa507f000
libcrc32c 3053 2 btrfs,xfs, Live 0xa34af000
lzo_compress 17302 2 btrfs,lzo, Live 0xa347d000
lzo_decompress 7178 2 btrfs,lzo, Live 0xa3451000
raid6_pq 142086 1 btrfs, Live 0xa33a4000
reed_solomon 31022 1 ramoops, Live 0xa31eb000
test_bitmap 3734 0 - Live 0xa31af000
test_bpf 1588736 0 - Live 0xa2c11000
test_kmod 41161 0 - Live 0xa29f8000
test_module 1356 0 - Live 0xa299e000
test_printf 6024 0 [permanent], Live 0xa2971000
test_static_key_base 5797 1 test_static_keys, Live 0xa2931000
test_user_copy 4382 0 - Live 0xa28c9000
xxhash 70501 2 zstd_compress,zstd_decompress, Live 0xa2055000
Signed-off-by: Zong Li <zong@andestech.com>
Signed-off-by: Palmer Dabbelt <palmer@sifive.com>
2018-12-07 17:02:16 +08:00
|
|
|
select MODULE_SECTIONS if MODULES
|
2017-07-11 09:08:08 +08:00
|
|
|
select THREAD_INFO_IN_TASK
|
2018-11-16 03:05:33 +08:00
|
|
|
select PCI_DOMAINS_GENERIC if PCI
|
2018-11-16 03:05:32 +08:00
|
|
|
select PCI_MSI if PCI
|
2017-07-11 09:08:08 +08:00
|
|
|
select RISCV_TIMER
|
2018-03-08 07:57:28 +08:00
|
|
|
select GENERIC_IRQ_MULTI_HANDLER
|
2019-06-28 03:53:00 +08:00
|
|
|
select GENERIC_ARCH_TOPOLOGY if SMP
|
2018-06-08 08:06:08 +08:00
|
|
|
select ARCH_HAS_PTE_SPECIAL
|
2019-02-22 22:45:42 +08:00
|
|
|
select ARCH_HAS_MMIOWB
|
bpf, riscv: add BPF JIT for RV64G
This commit adds a BPF JIT for RV64G.
The JIT is a two-pass JIT, and has a dynamic prolog/epilogue (similar
to the MIPS64 BPF JIT) instead of static ones (e.g. x86_64).
At the moment the RISC-V Linux port does not support
CONFIG_HAVE_KPROBES, which means that CONFIG_BPF_EVENTS is not
supported. Thus, no tests involving BPF_PROG_TYPE_TRACEPOINT,
BPF_PROG_TYPE_PERF_EVENT, BPF_PROG_TYPE_KPROBE and
BPF_PROG_TYPE_RAW_TRACEPOINT passes.
The implementation does not support "far branching" (>4KiB).
Test results:
# modprobe test_bpf
test_bpf: Summary: 378 PASSED, 0 FAILED, [366/366 JIT'ed]
# echo 1 > /proc/sys/kernel/unprivileged_bpf_disabled
# ./test_verifier
...
Summary: 761 PASSED, 507 SKIPPED, 2 FAILED
Note that "test_verifier" was run with one build with
CONFIG_HAVE_EFFICIENT_UNALIGNED_ACCESS=y and one without, otherwise
many of the the tests that require unaligned access were skipped.
CONFIG_HAVE_EFFICIENT_UNALIGNED_ACCESS=y:
# echo 1 > /proc/sys/kernel/unprivileged_bpf_disabled
# ./test_verifier | grep -c 'NOTE.*unknown align'
0
No CONFIG_HAVE_EFFICIENT_UNALIGNED_ACCESS:
# echo 1 > /proc/sys/kernel/unprivileged_bpf_disabled
# ./test_verifier | grep -c 'NOTE.*unknown align'
59
The two failing test_verifier tests are:
"ld_abs: vlan + abs, test 1"
"ld_abs: jump around ld_abs"
This is due to that "far branching" involved in those tests.
All tests where done on QEMU (QEMU emulator version 3.1.50
(v3.1.0-688-g8ae951fbc106)).
Signed-off-by: Björn Töpel <bjorn.topel@gmail.com>
Signed-off-by: Daniel Borkmann <daniel@iogearbox.net>
2019-02-05 20:41:22 +08:00
|
|
|
select HAVE_EBPF_JIT if 64BIT
|
2019-05-06 19:27:06 +08:00
|
|
|
select EDAC_SUPPORT
|
2019-05-26 20:50:38 +08:00
|
|
|
select ARCH_HAS_GIGANTIC_PAGE
|
|
|
|
select ARCH_WANT_HUGE_PMD_SHARE if 64BIT
|
2019-08-29 05:40:54 +08:00
|
|
|
select SPARSEMEM_STATIC if 32BIT
|
2019-09-24 06:39:21 +08:00
|
|
|
select ARCH_WANT_DEFAULT_TOPDOWN_MMAP_LAYOUT if MMU
|
|
|
|
select HAVE_ARCH_MMAP_RND_BITS
|
|
|
|
|
|
|
|
config ARCH_MMAP_RND_BITS_MIN
|
|
|
|
default 18 if 64BIT
|
|
|
|
default 8
|
|
|
|
|
|
|
|
# max bits determined by the following formula:
|
|
|
|
# VA_BITS - PAGE_SHIFT - 3
|
|
|
|
config ARCH_MMAP_RND_BITS_MAX
|
|
|
|
default 24 if 64BIT # SV39 based
|
|
|
|
default 17
|
2017-07-11 09:08:08 +08:00
|
|
|
|
|
|
|
config MMU
|
|
|
|
def_bool y
|
|
|
|
|
2018-01-16 16:37:50 +08:00
|
|
|
config ZONE_DMA32
|
|
|
|
bool
|
2018-04-27 14:41:09 +08:00
|
|
|
default y if 64BIT
|
2018-01-16 16:37:50 +08:00
|
|
|
|
2019-08-29 05:40:54 +08:00
|
|
|
config VA_BITS
|
|
|
|
int
|
|
|
|
default 32 if 32BIT
|
|
|
|
default 39 if 64BIT
|
|
|
|
|
|
|
|
config PA_BITS
|
|
|
|
int
|
|
|
|
default 34 if 32BIT
|
|
|
|
default 56 if 64BIT
|
|
|
|
|
2017-07-11 09:08:08 +08:00
|
|
|
config PAGE_OFFSET
|
|
|
|
hex
|
|
|
|
default 0xC0000000 if 32BIT && MAXPHYSMEM_2GB
|
|
|
|
default 0xffffffff80000000 if 64BIT && MAXPHYSMEM_2GB
|
|
|
|
default 0xffffffe000000000 if 64BIT && MAXPHYSMEM_128GB
|
|
|
|
|
2019-08-29 05:40:54 +08:00
|
|
|
config ARCH_FLATMEM_ENABLE
|
|
|
|
def_bool y
|
|
|
|
|
|
|
|
config ARCH_SPARSEMEM_ENABLE
|
|
|
|
def_bool y
|
|
|
|
select SPARSEMEM_VMEMMAP_ENABLE
|
|
|
|
|
|
|
|
config ARCH_SELECT_MEMORY_MODEL
|
|
|
|
def_bool ARCH_SPARSEMEM_ENABLE
|
|
|
|
|
2019-05-26 20:50:38 +08:00
|
|
|
config ARCH_WANT_GENERAL_HUGETLB
|
|
|
|
def_bool y
|
|
|
|
|
|
|
|
config SYS_SUPPORTS_HUGETLBFS
|
|
|
|
def_bool y
|
|
|
|
|
2017-07-11 09:08:08 +08:00
|
|
|
config STACKTRACE_SUPPORT
|
|
|
|
def_bool y
|
|
|
|
|
2017-12-18 17:52:48 +08:00
|
|
|
config TRACE_IRQFLAGS_SUPPORT
|
|
|
|
def_bool y
|
|
|
|
|
2017-07-11 09:08:08 +08:00
|
|
|
config GENERIC_BUG
|
|
|
|
def_bool y
|
|
|
|
depends on BUG
|
|
|
|
select GENERIC_BUG_RELATIVE_POINTERS if 64BIT
|
|
|
|
|
|
|
|
config GENERIC_BUG_RELATIVE_POINTERS
|
|
|
|
bool
|
|
|
|
|
|
|
|
config GENERIC_CALIBRATE_DELAY
|
|
|
|
def_bool y
|
|
|
|
|
|
|
|
config GENERIC_CSUM
|
|
|
|
def_bool y
|
|
|
|
|
|
|
|
config GENERIC_HWEIGHT
|
|
|
|
def_bool y
|
|
|
|
|
2019-01-07 23:27:01 +08:00
|
|
|
config FIX_EARLYCON_MEM
|
|
|
|
def_bool y
|
|
|
|
|
2017-07-11 09:08:08 +08:00
|
|
|
config PGTABLE_LEVELS
|
|
|
|
int
|
|
|
|
default 3 if 64BIT
|
|
|
|
default 2
|
|
|
|
|
2019-06-18 03:29:48 +08:00
|
|
|
source "arch/riscv/Kconfig.socs"
|
|
|
|
|
2017-07-11 09:08:08 +08:00
|
|
|
menu "Platform type"
|
|
|
|
|
|
|
|
choice
|
|
|
|
prompt "Base ISA"
|
|
|
|
default ARCH_RV64I
|
|
|
|
help
|
2019-01-09 03:45:57 +08:00
|
|
|
This selects the base ISA that this kernel will target and must match
|
2017-07-11 09:08:08 +08:00
|
|
|
the target platform.
|
|
|
|
|
|
|
|
config ARCH_RV32I
|
|
|
|
bool "RV32I"
|
|
|
|
select 32BIT
|
2018-04-11 15:50:17 +08:00
|
|
|
select GENERIC_LIB_ASHLDI3
|
|
|
|
select GENERIC_LIB_ASHRDI3
|
|
|
|
select GENERIC_LIB_LSHRDI3
|
2018-06-25 16:49:38 +08:00
|
|
|
select GENERIC_LIB_UCMPDI2
|
2017-07-11 09:08:08 +08:00
|
|
|
|
|
|
|
config ARCH_RV64I
|
|
|
|
bool "RV64I"
|
|
|
|
select 64BIT
|
2018-08-24 16:33:53 +08:00
|
|
|
select ARCH_SUPPORTS_INT128 if GCC_VERSION >= 50000
|
2017-12-18 17:52:48 +08:00
|
|
|
select HAVE_FUNCTION_TRACER
|
|
|
|
select HAVE_FUNCTION_GRAPH_TRACER
|
2018-02-13 13:13:16 +08:00
|
|
|
select HAVE_FTRACE_MCOUNT_RECORD
|
2018-02-13 13:13:17 +08:00
|
|
|
select HAVE_DYNAMIC_FTRACE
|
2018-02-13 13:13:20 +08:00
|
|
|
select HAVE_DYNAMIC_FTRACE_WITH_REGS
|
2018-04-27 14:43:14 +08:00
|
|
|
select SWIOTLB
|
2017-07-11 09:08:08 +08:00
|
|
|
|
|
|
|
endchoice
|
|
|
|
|
|
|
|
# We must be able to map all physical memory into the kernel, but the compiler
|
|
|
|
# is still a bit more efficient when generating code if it's setup in a manner
|
|
|
|
# such that it can only map 2GiB of memory.
|
|
|
|
choice
|
|
|
|
prompt "Kernel Code Model"
|
|
|
|
default CMODEL_MEDLOW if 32BIT
|
|
|
|
default CMODEL_MEDANY if 64BIT
|
|
|
|
|
|
|
|
config CMODEL_MEDLOW
|
|
|
|
bool "medium low code model"
|
|
|
|
config CMODEL_MEDANY
|
|
|
|
bool "medium any code model"
|
|
|
|
endchoice
|
|
|
|
|
2018-03-15 16:50:41 +08:00
|
|
|
config MODULE_SECTIONS
|
|
|
|
bool
|
|
|
|
select HAVE_MOD_ARCH_SPECIFIC
|
|
|
|
|
2017-07-11 09:08:08 +08:00
|
|
|
choice
|
|
|
|
prompt "Maximum Physical Memory"
|
|
|
|
default MAXPHYSMEM_2GB if 32BIT
|
|
|
|
default MAXPHYSMEM_2GB if 64BIT && CMODEL_MEDLOW
|
|
|
|
default MAXPHYSMEM_128GB if 64BIT && CMODEL_MEDANY
|
|
|
|
|
|
|
|
config MAXPHYSMEM_2GB
|
|
|
|
bool "2GiB"
|
|
|
|
config MAXPHYSMEM_128GB
|
|
|
|
depends on 64BIT && CMODEL_MEDANY
|
|
|
|
bool "128GiB"
|
|
|
|
endchoice
|
|
|
|
|
|
|
|
|
|
|
|
config SMP
|
|
|
|
bool "Symmetric Multi-Processing"
|
|
|
|
help
|
|
|
|
This enables support for systems with more than one CPU. If
|
|
|
|
you say N here, the kernel will run on single and
|
|
|
|
multiprocessor machines, but will use only one CPU of a
|
|
|
|
multiprocessor machine. If you say Y here, the kernel will run
|
|
|
|
on many, but not all, single processor machines. On a single
|
|
|
|
processor machine, the kernel will run faster if you say N
|
|
|
|
here.
|
|
|
|
|
|
|
|
If you don't know what to do here, say N.
|
|
|
|
|
|
|
|
config NR_CPUS
|
|
|
|
int "Maximum number of CPUs (2-32)"
|
|
|
|
range 2 32
|
|
|
|
depends on SMP
|
|
|
|
default "8"
|
|
|
|
|
|
|
|
choice
|
|
|
|
prompt "CPU Tuning"
|
|
|
|
default TUNE_GENERIC
|
|
|
|
|
|
|
|
config TUNE_GENERIC
|
|
|
|
bool "generic"
|
|
|
|
|
|
|
|
endchoice
|
|
|
|
|
|
|
|
config RISCV_ISA_C
|
|
|
|
bool "Emit compressed instructions when building Linux"
|
|
|
|
default y
|
|
|
|
help
|
|
|
|
Adds "C" to the ISA subsets that the toolchain is allowed to emit
|
|
|
|
when building Linux, which results in compressed instructions in the
|
|
|
|
Linux binary.
|
|
|
|
|
|
|
|
If you don't know what to do here, say Y.
|
|
|
|
|
2018-04-20 07:27:49 +08:00
|
|
|
menu "supported PMU type"
|
|
|
|
depends on PERF_EVENTS
|
|
|
|
|
|
|
|
config RISCV_BASE_PMU
|
|
|
|
bool "Base Performance Monitoring Unit"
|
|
|
|
def_bool y
|
|
|
|
help
|
|
|
|
A base PMU that serves as a reference implementation and has limited
|
|
|
|
feature of perf. It can run on any RISC-V machines so serves as the
|
|
|
|
fallback, but this option can also be disable to reduce kernel size.
|
|
|
|
|
|
|
|
endmenu
|
|
|
|
|
2018-10-09 10:18:33 +08:00
|
|
|
config FPU
|
|
|
|
bool "FPU support"
|
|
|
|
default y
|
|
|
|
help
|
|
|
|
Say N here if you want to disable all floating-point related procedure
|
|
|
|
in the kernel.
|
|
|
|
|
|
|
|
If you don't know what to do here, say Y.
|
|
|
|
|
2017-07-11 09:08:08 +08:00
|
|
|
endmenu
|
|
|
|
|
2018-09-20 06:48:15 +08:00
|
|
|
menu "Kernel features"
|
2017-07-11 09:08:08 +08:00
|
|
|
|
|
|
|
source "kernel/Kconfig.hz"
|
|
|
|
|
|
|
|
endmenu
|
|
|
|
|
2018-09-20 06:48:15 +08:00
|
|
|
menu "Boot options"
|
|
|
|
|
2018-11-18 08:06:56 +08:00
|
|
|
config CMDLINE
|
|
|
|
string "Built-in kernel command line"
|
2018-09-20 06:48:15 +08:00
|
|
|
help
|
2018-11-18 08:06:56 +08:00
|
|
|
For most platforms, the arguments for the kernel's command line
|
|
|
|
are provided at run-time, during boot. However, there are cases
|
|
|
|
where either no arguments are being provided or the provided
|
|
|
|
arguments are insufficient or even invalid.
|
2018-09-20 06:48:15 +08:00
|
|
|
|
2018-11-18 08:06:56 +08:00
|
|
|
When that occurs, it is possible to define a built-in command
|
|
|
|
line here and choose how the kernel should use it later on.
|
2018-09-20 06:48:15 +08:00
|
|
|
|
2018-11-18 08:06:56 +08:00
|
|
|
choice
|
|
|
|
prompt "Built-in command line usage" if CMDLINE != ""
|
|
|
|
default CMDLINE_FALLBACK
|
|
|
|
help
|
|
|
|
Choose how the kernel will handle the provided built-in command
|
|
|
|
line.
|
2018-09-20 06:48:15 +08:00
|
|
|
|
2018-11-18 08:06:56 +08:00
|
|
|
config CMDLINE_FALLBACK
|
|
|
|
bool "Use bootloader kernel arguments if available"
|
2018-09-20 06:48:15 +08:00
|
|
|
help
|
2018-11-18 08:06:56 +08:00
|
|
|
Use the built-in command line as fallback in case we get nothing
|
|
|
|
during boot. This is the default behaviour.
|
|
|
|
|
|
|
|
config CMDLINE_EXTEND
|
|
|
|
bool "Extend bootloader kernel arguments"
|
|
|
|
help
|
|
|
|
The command-line arguments provided during boot will be
|
|
|
|
appended to the built-in command line. This is useful in
|
|
|
|
cases where the provided arguments are insufficient and
|
|
|
|
you don't want to or cannot modify them.
|
|
|
|
|
2018-09-20 06:48:15 +08:00
|
|
|
|
|
|
|
config CMDLINE_FORCE
|
2018-11-18 08:06:56 +08:00
|
|
|
bool "Always use the default kernel command string"
|
2018-09-20 06:48:15 +08:00
|
|
|
help
|
2018-11-18 08:06:56 +08:00
|
|
|
Always use the built-in command line, even if we get one during
|
|
|
|
boot. This is useful in case you need to override the provided
|
|
|
|
command line on systems where you don't have or want control
|
|
|
|
over it.
|
2018-09-20 06:48:15 +08:00
|
|
|
|
2018-11-18 08:06:56 +08:00
|
|
|
endchoice
|
2018-09-20 06:48:15 +08:00
|
|
|
|
|
|
|
endmenu
|
|
|
|
|
2017-07-11 09:08:08 +08:00
|
|
|
menu "Power management options"
|
|
|
|
|
2018-12-11 19:01:04 +08:00
|
|
|
source "kernel/power/Kconfig"
|
2017-07-11 09:08:08 +08:00
|
|
|
|
|
|
|
endmenu
|