hc
2023-10-25 6c2073b7aa40e29d0eca7d571dd7bc590c7ecaa7
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
#
# For a description of the syntax of this configuration file,
# see Documentation/kbuild/kconfig-language.txt.
#
 
config 64BIT
   bool
 
config 32BIT
   bool
 
config RISCV
   def_bool y
   # even on 32-bit, physical (and DMA) addresses are > 32-bits
   select PHYS_ADDR_T_64BIT
   select OF
   select OF_EARLY_FLATTREE
   select OF_IRQ
   select ARCH_WANT_FRAME_POINTERS
   select CLONE_BACKWARDS
   select COMMON_CLK
   select DMA_DIRECT_OPS
   select GENERIC_CLOCKEVENTS
   select GENERIC_CPU_DEVICES
   select GENERIC_IRQ_SHOW
   select GENERIC_PCI_IOMAP
   select GENERIC_STRNCPY_FROM_USER
   select GENERIC_STRNLEN_USER
   select GENERIC_SMP_IDLE_THREAD
   select GENERIC_ATOMIC64 if !64BIT || !RISCV_ISA_A
   select HAVE_MEMBLOCK
   select HAVE_MEMBLOCK_NODE_MAP
   select HAVE_DMA_CONTIGUOUS
   select HAVE_GENERIC_DMA_COHERENT
   select HAVE_PERF_EVENTS
   select IRQ_DOMAIN
   select NO_BOOTMEM
   select RISCV_ISA_A if SMP
   select SPARSE_IRQ
   select SYSCTL_EXCEPTION_TRACE
   select HAVE_ARCH_TRACEHOOK
   select MODULES_USE_ELF_RELA if MODULES
   select THREAD_INFO_IN_TASK
   select RISCV_TIMER
   select GENERIC_IRQ_MULTI_HANDLER
   select ARCH_HAS_PTE_SPECIAL
 
config MMU
   def_bool y
 
config ZONE_DMA32
   bool
   default y if 64BIT
 
config PAGE_OFFSET
   hex
   default 0xC0000000 if 32BIT && MAXPHYSMEM_2GB
   default 0xffffffff80000000 if 64BIT && MAXPHYSMEM_2GB
   default 0xffffffe000000000 if 64BIT && MAXPHYSMEM_128GB
 
config STACKTRACE_SUPPORT
   def_bool y
 
config TRACE_IRQFLAGS_SUPPORT
   def_bool y
 
config RWSEM_GENERIC_SPINLOCK
   def_bool y
 
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
 
config PGTABLE_LEVELS
   int
   default 3 if 64BIT
   default 2
 
config HAVE_KPROBES
   def_bool n
 
menu "Platform type"
 
choice
   prompt "Base ISA"
   default ARCH_RV64I
   help
     This selects the base ISA that this kernel will traget and must match
     the target platform.
 
config ARCH_RV32I
   bool "RV32I"
   select 32BIT
   select GENERIC_LIB_ASHLDI3
   select GENERIC_LIB_ASHRDI3
   select GENERIC_LIB_LSHRDI3
   select GENERIC_LIB_UCMPDI2
 
config ARCH_RV64I
   bool "RV64I"
   select 64BIT
   select HAVE_FUNCTION_TRACER
   select HAVE_FUNCTION_GRAPH_TRACER
   select HAVE_FTRACE_MCOUNT_RECORD
   select HAVE_DYNAMIC_FTRACE
   select HAVE_DYNAMIC_FTRACE_WITH_REGS
   select SWIOTLB
 
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
 
config MODULE_SECTIONS
   bool
   select HAVE_MOD_ARCH_SPECIFIC
 
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
       select MODULE_SECTIONS if MODULES
       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.
 
config RISCV_ISA_A
   def_bool y
 
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
 
endmenu
 
menu "Kernel type"
 
source "kernel/Kconfig.hz"
 
endmenu
 
menu "Bus support"
 
config PCI
   bool "PCI support"
   select PCI_MSI
   help
     This feature enables support for PCI bus system. If you say Y
     here, the kernel will include drivers and infrastructure code
     to support PCI bus devices.
 
     If you don't know what to do here, say Y.
 
config PCI_DOMAINS
   def_bool PCI
 
config PCI_DOMAINS_GENERIC
   def_bool PCI
 
source "drivers/pci/Kconfig"
 
endmenu
 
menu "Power management options"
 
source kernel/power/Kconfig
 
endmenu