Kconfig (976e3645923bdd2fe7893aae33fd7a21098bfb28) Kconfig (7af710d988775aadf440222ecbe0c10eecf3eb54)
1# SPDX-License-Identifier: GPL-2.0
2config XTENSA
3 def_bool y
4 select ARCH_32BIT_OFF_T
5 select ARCH_HAS_BINFMT_FLAT if !MMU
6 select ARCH_HAS_SYNC_DMA_FOR_CPU
7 select ARCH_HAS_SYNC_DMA_FOR_DEVICE
8 select ARCH_USE_QUEUED_RWLOCKS

--- 5 unchanged lines hidden (view full) ---

14 select COMMON_CLK
15 select DMA_REMAP if MMU
16 select GENERIC_ATOMIC64
17 select GENERIC_CLOCKEVENTS
18 select GENERIC_IRQ_SHOW
19 select GENERIC_PCI_IOMAP
20 select GENERIC_SCHED_CLOCK
21 select GENERIC_STRNCPY_FROM_USER if KASAN
1# SPDX-License-Identifier: GPL-2.0
2config XTENSA
3 def_bool y
4 select ARCH_32BIT_OFF_T
5 select ARCH_HAS_BINFMT_FLAT if !MMU
6 select ARCH_HAS_SYNC_DMA_FOR_CPU
7 select ARCH_HAS_SYNC_DMA_FOR_DEVICE
8 select ARCH_USE_QUEUED_RWLOCKS

--- 5 unchanged lines hidden (view full) ---

14 select COMMON_CLK
15 select DMA_REMAP if MMU
16 select GENERIC_ATOMIC64
17 select GENERIC_CLOCKEVENTS
18 select GENERIC_IRQ_SHOW
19 select GENERIC_PCI_IOMAP
20 select GENERIC_SCHED_CLOCK
21 select GENERIC_STRNCPY_FROM_USER if KASAN
22 select HAVE_ARCH_JUMP_LABEL
23 select HAVE_ARCH_KASAN if MMU
22 select HAVE_ARCH_JUMP_LABEL if !XIP_KERNEL
23 select HAVE_ARCH_KASAN if MMU && !XIP_KERNEL
24 select HAVE_ARCH_TRACEHOOK
25 select HAVE_DEBUG_KMEMLEAK
26 select HAVE_DMA_CONTIGUOUS
27 select HAVE_EXIT_THREAD
28 select HAVE_FUNCTION_TRACER
29 select HAVE_FUTEX_CMPXCHG if !MMU
30 select HAVE_HW_BREAKPOINT if PERF_EVENTS
31 select HAVE_IRQ_TIME_ACCOUNTING

--- 176 unchanged lines hidden (view full) ---

208 bool "Enable CPU hotplug support"
209 depends on SMP
210 help
211 Say Y here to allow turning CPUs off and on. CPUs can be
212 controlled through /sys/devices/system/cpu.
213
214 Say N if you want to disable CPU hotplug.
215
24 select HAVE_ARCH_TRACEHOOK
25 select HAVE_DEBUG_KMEMLEAK
26 select HAVE_DMA_CONTIGUOUS
27 select HAVE_EXIT_THREAD
28 select HAVE_FUNCTION_TRACER
29 select HAVE_FUTEX_CMPXCHG if !MMU
30 select HAVE_HW_BREAKPOINT if PERF_EVENTS
31 select HAVE_IRQ_TIME_ACCOUNTING

--- 176 unchanged lines hidden (view full) ---

208 bool "Enable CPU hotplug support"
209 depends on SMP
210 help
211 Say Y here to allow turning CPUs off and on. CPUs can be
212 controlled through /sys/devices/system/cpu.
213
214 Say N if you want to disable CPU hotplug.
215
216config INITIALIZE_XTENSA_MMU_INSIDE_VMLINUX
217 bool "Initialize Xtensa MMU inside the Linux kernel code"
218 depends on !XTENSA_VARIANT_FSF && !XTENSA_VARIANT_DC232B
219 default y if XTENSA_VARIANT_DC233C || XTENSA_VARIANT_CUSTOM
220 help
221 Earlier version initialized the MMU in the exception vector
222 before jumping to _startup in head.S and had an advantage that
223 it was possible to place a software breakpoint at 'reset' and
224 then enter your normal kernel breakpoints once the MMU was mapped
225 to the kernel mappings (0XC0000000).
226
227 This unfortunately won't work for U-Boot and likely also wont
228 work for using KEXEC to have a hot kernel ready for doing a
229 KDUMP.
230
231 So now the MMU is initialized in head.S but it's necessary to
232 use hardware breakpoints (gdb 'hbreak' cmd) to break at _startup.
233 xt-gdb can't place a Software Breakpoint in the 0XD region prior
234 to mapping the MMU and after mapping even if the area of low memory
235 was mapped gdb wouldn't remove the breakpoint on hitting it as the
236 PC wouldn't match. Since Hardware Breakpoints are recommended for
237 Linux configurations it seems reasonable to just assume they exist
238 and leave this older mechanism for unfortunate souls that choose
239 not to follow Tensilica's recommendation.
240
241 Selecting this will cause U-Boot to set the KERNEL Load and Entry
242 address at 0x00003000 instead of the mapped std of 0xD0003000.
243
244 If in doubt, say Y.
245
246config MEMMAP_CACHEATTR
247 hex "Cache attributes for the memory address space"
248 depends on !MMU
249 default 0x22222222
250 help
251 These cache attributes are set up for noMMU systems. Each hex digit
252 specifies cache attributes for the corresponding 512MB memory
253 region: bits 0..3 -- for addresses 0x00000000..0x1fffffff,
254 bits 4..7 -- for addresses 0x20000000..0x3fffffff, and so on.
255
256 Cache attribute values are specific for the MMU type.
257 For region protection MMUs:
258 1: WT cached,
259 2: cache bypass,
260 4: WB cached,
261 f: illegal.
262 For ful MMU:
263 bit 0: executable,
264 bit 1: writable,
265 bits 2..3:
266 0: cache bypass,
267 1: WB cache,
268 2: WT cache,
269 3: special (c and e are illegal, f is reserved).
270 For MPU:
271 0: illegal,
272 1: WB cache,
273 2: WB, no-write-allocate cache,
274 3: WT cache,
275 4: cache bypass.
276
277config KSEG_PADDR
278 hex "Physical address of the KSEG mapping"
279 depends on INITIALIZE_XTENSA_MMU_INSIDE_VMLINUX && MMU
280 default 0x00000000
281 help
282 This is the physical address where KSEG is mapped. Please refer to
283 the chosen KSEG layout help for the required address alignment.
284 Unpacked kernel image (including vectors) must be located completely
285 within KSEG.
286 Physical memory below this address is not available to linux.
287
288 If unsure, leave the default value here.
289
290config KERNEL_LOAD_ADDRESS
291 hex "Kernel load address"
292 default 0x60003000 if !MMU
293 default 0x00003000 if MMU && INITIALIZE_XTENSA_MMU_INSIDE_VMLINUX
294 default 0xd0003000 if MMU && !INITIALIZE_XTENSA_MMU_INSIDE_VMLINUX
295 help
296 This is the address where the kernel is loaded.
297 It is virtual address for MMUv2 configurations and physical address
298 for all other configurations.
299
300 If unsure, leave the default value here.
301
302config VECTORS_OFFSET
303 hex "Kernel vectors offset"
304 default 0x00003000
305 help
306 This is the offset of the kernel image from the relocatable vectors
307 base.
308
309 If unsure, leave the default value here.
310
311choice
312 prompt "KSEG layout"
313 depends on MMU
314 default XTENSA_KSEG_MMU_V2
315
316config XTENSA_KSEG_MMU_V2
317 bool "MMUv2: 128MB cached + 128MB uncached"
318 help
319 MMUv2 compatible kernel memory map: TLB way 5 maps 128MB starting
320 at KSEG_PADDR to 0xd0000000 with cache and to 0xd8000000
321 without cache.
322 KSEG_PADDR must be aligned to 128MB.
323
324config XTENSA_KSEG_256M
325 bool "256MB cached + 256MB uncached"
326 depends on INITIALIZE_XTENSA_MMU_INSIDE_VMLINUX
327 help
328 TLB way 6 maps 256MB starting at KSEG_PADDR to 0xb0000000
329 with cache and to 0xc0000000 without cache.
330 KSEG_PADDR must be aligned to 256MB.
331
332config XTENSA_KSEG_512M
333 bool "512MB cached + 512MB uncached"
334 depends on INITIALIZE_XTENSA_MMU_INSIDE_VMLINUX
335 help
336 TLB way 6 maps 512MB starting at KSEG_PADDR to 0xa0000000
337 with cache and to 0xc0000000 without cache.
338 KSEG_PADDR must be aligned to 256MB.
339
340endchoice
341
342config HIGHMEM
343 bool "High Memory Support"
344 depends on MMU
345 help
346 Linux can use the full amount of RAM in the system by
347 default. However, the default MMUv2 setup only maps the
348 lowermost 128 MB of memory linearly to the areas starting
349 at 0xd0000000 (cached) and 0xd8000000 (uncached).
350 When there are more than 128 MB memory in the system not
351 all of it can be "permanently mapped" by the kernel.
352 The physical memory that's not permanently mapped is called
353 "high memory".
354
355 If you are compiling a kernel which will never run on a
356 machine with more than 128 MB total physical RAM, answer
357 N here.
358
359 If unsure, say Y.
360
361config FAST_SYSCALL_XTENSA
362 bool "Enable fast atomic syscalls"
363 default n
364 help
365 fast_syscall_xtensa is a syscall that can make atomic operations
366 on UP kernel when processor has no s32c1i support.
367
368 This syscall is deprecated. It may have issues when called with

--- 70 unchanged lines hidden (view full) ---

439 help
440 On some platforms (XT2000, for example), the CPU clock rate can
441 vary. The frequency can be determined, however, by measuring
442 against a well known, fixed frequency, such as an UART oscillator.
443
444config SERIAL_CONSOLE
445 def_bool n
446
216config FAST_SYSCALL_XTENSA
217 bool "Enable fast atomic syscalls"
218 default n
219 help
220 fast_syscall_xtensa is a syscall that can make atomic operations
221 on UP kernel when processor has no s32c1i support.
222
223 This syscall is deprecated. It may have issues when called with

--- 70 unchanged lines hidden (view full) ---

294 help
295 On some platforms (XT2000, for example), the CPU clock rate can
296 vary. The frequency can be determined, however, by measuring
297 against a well known, fixed frequency, such as an UART oscillator.
298
299config SERIAL_CONSOLE
300 def_bool n
301
302config PLATFORM_HAVE_XIP
303 def_bool n
304
447menu "Platform options"
448
449choice
450 prompt "Xtensa System Type"
451 default XTENSA_PLATFORM_ISS
452
453config XTENSA_PLATFORM_ISS
454 bool "ISS"

--- 10 unchanged lines hidden (view full) ---

465 This hardware is capable of running a full Linux distribution.
466
467config XTENSA_PLATFORM_XTFPGA
468 bool "XTFPGA"
469 select ETHOC if ETHERNET
470 select PLATFORM_WANT_DEFAULT_MEM if !MMU
471 select SERIAL_CONSOLE
472 select XTENSA_CALIBRATE_CCOUNT
305menu "Platform options"
306
307choice
308 prompt "Xtensa System Type"
309 default XTENSA_PLATFORM_ISS
310
311config XTENSA_PLATFORM_ISS
312 bool "ISS"

--- 10 unchanged lines hidden (view full) ---

323 This hardware is capable of running a full Linux distribution.
324
325config XTENSA_PLATFORM_XTFPGA
326 bool "XTFPGA"
327 select ETHOC if ETHERNET
328 select PLATFORM_WANT_DEFAULT_MEM if !MMU
329 select SERIAL_CONSOLE
330 select XTENSA_CALIBRATE_CCOUNT
331 select PLATFORM_HAVE_XIP
473 help
474 XTFPGA is the name of Tensilica board family (LX60, LX110, LX200, ML605).
475 This hardware is capable of running a full Linux distribution.
476
477endchoice
478
479config PLATFORM_NR_IRQS
480 int

--- 75 unchanged lines hidden (view full) ---

556config SIMDISK1_FILENAME
557 string "Host filename for the second simulated device"
558 depends on BLK_DEV_SIMDISK = y && BLK_DEV_SIMDISK_COUNT != 1
559 default ""
560 help
561 Another simulated disk in a host file for a buildroot-independent
562 storage.
563
332 help
333 XTFPGA is the name of Tensilica board family (LX60, LX110, LX200, ML605).
334 This hardware is capable of running a full Linux distribution.
335
336endchoice
337
338config PLATFORM_NR_IRQS
339 int

--- 75 unchanged lines hidden (view full) ---

415config SIMDISK1_FILENAME
416 string "Host filename for the second simulated device"
417 depends on BLK_DEV_SIMDISK = y && BLK_DEV_SIMDISK_COUNT != 1
418 default ""
419 help
420 Another simulated disk in a host file for a buildroot-independent
421 storage.
422
564config FORCE_MAX_ZONEORDER
565 int "Maximum zone order"
566 default "11"
567 help
568 The kernel memory allocator divides physically contiguous memory
569 blocks into "zones", where each zone is a power of two number of
570 pages. This option selects the largest power of two that the kernel
571 keeps in the memory allocator. If you need to allocate very large
572 blocks of physically contiguous memory, then you may need to
573 increase this value.
574
575 This config option is actually maximum order plus one. For example,
576 a value of 11 means that the largest free memory block is 2^10 pages.
577
578config PLATFORM_WANT_DEFAULT_MEM
579 def_bool n
580
581config DEFAULT_MEM_START
582 hex
583 prompt "PAGE_OFFSET/PHYS_OFFSET" if !MMU && PLATFORM_WANT_DEFAULT_MEM
584 default 0x60000000 if PLATFORM_WANT_DEFAULT_MEM
585 default 0x00000000
586 help
587 This is the base address used for both PAGE_OFFSET and PHYS_OFFSET
588 in noMMU configurations.
589
590 If unsure, leave the default value here.
591
592config XTFPGA_LCD
593 bool "Enable XTFPGA LCD driver"
594 depends on XTENSA_PLATFORM_XTFPGA
595 default n
596 help
597 There's a 2x16 LCD on most of XTFPGA boards, kernel may output
598 progress messages there during bootup/shutdown. It may be useful
599 during board bringup.

--- 14 unchanged lines hidden (view full) ---

614 bool "Use 8-bit access to XTFPGA LCD"
615 depends on XTFPGA_LCD
616 default n
617 help
618 LCD may be connected with 4- or 8-bit interface, 8-bit access may
619 only be used with 8-bit interface. Please consult prototyping user
620 guide for your board for the correct interface width.
621
423config XTFPGA_LCD
424 bool "Enable XTFPGA LCD driver"
425 depends on XTENSA_PLATFORM_XTFPGA
426 default n
427 help
428 There's a 2x16 LCD on most of XTFPGA boards, kernel may output
429 progress messages there during bootup/shutdown. It may be useful
430 during board bringup.

--- 14 unchanged lines hidden (view full) ---

445 bool "Use 8-bit access to XTFPGA LCD"
446 depends on XTFPGA_LCD
447 default n
448 help
449 LCD may be connected with 4- or 8-bit interface, 8-bit access may
450 only be used with 8-bit interface. Please consult prototyping user
451 guide for your board for the correct interface width.
452
453comment "Kernel memory layout"
454
455config INITIALIZE_XTENSA_MMU_INSIDE_VMLINUX
456 bool "Initialize Xtensa MMU inside the Linux kernel code"
457 depends on !XTENSA_VARIANT_FSF && !XTENSA_VARIANT_DC232B
458 default y if XTENSA_VARIANT_DC233C || XTENSA_VARIANT_CUSTOM
459 help
460 Earlier version initialized the MMU in the exception vector
461 before jumping to _startup in head.S and had an advantage that
462 it was possible to place a software breakpoint at 'reset' and
463 then enter your normal kernel breakpoints once the MMU was mapped
464 to the kernel mappings (0XC0000000).
465
466 This unfortunately won't work for U-Boot and likely also wont
467 work for using KEXEC to have a hot kernel ready for doing a
468 KDUMP.
469
470 So now the MMU is initialized in head.S but it's necessary to
471 use hardware breakpoints (gdb 'hbreak' cmd) to break at _startup.
472 xt-gdb can't place a Software Breakpoint in the 0XD region prior
473 to mapping the MMU and after mapping even if the area of low memory
474 was mapped gdb wouldn't remove the breakpoint on hitting it as the
475 PC wouldn't match. Since Hardware Breakpoints are recommended for
476 Linux configurations it seems reasonable to just assume they exist
477 and leave this older mechanism for unfortunate souls that choose
478 not to follow Tensilica's recommendation.
479
480 Selecting this will cause U-Boot to set the KERNEL Load and Entry
481 address at 0x00003000 instead of the mapped std of 0xD0003000.
482
483 If in doubt, say Y.
484
485config XIP_KERNEL
486 bool "Kernel Execute-In-Place from ROM"
487 depends on PLATFORM_HAVE_XIP
488 help
489 Execute-In-Place allows the kernel to run from non-volatile storage
490 directly addressable by the CPU, such as NOR flash. This saves RAM
491 space since the text section of the kernel is not loaded from flash
492 to RAM. Read-write sections, such as the data section and stack,
493 are still copied to RAM. The XIP kernel is not compressed since
494 it has to run directly from flash, so it will take more space to
495 store it. The flash address used to link the kernel object files,
496 and for storing it, is configuration dependent. Therefore, if you
497 say Y here, you must know the proper physical address where to
498 store the kernel image depending on your own flash memory usage.
499
500 Also note that the make target becomes "make xipImage" rather than
501 "make Image" or "make uImage". The final kernel binary to put in
502 ROM memory will be arch/xtensa/boot/xipImage.
503
504 If unsure, say N.
505
506config MEMMAP_CACHEATTR
507 hex "Cache attributes for the memory address space"
508 depends on !MMU
509 default 0x22222222
510 help
511 These cache attributes are set up for noMMU systems. Each hex digit
512 specifies cache attributes for the corresponding 512MB memory
513 region: bits 0..3 -- for addresses 0x00000000..0x1fffffff,
514 bits 4..7 -- for addresses 0x20000000..0x3fffffff, and so on.
515
516 Cache attribute values are specific for the MMU type.
517 For region protection MMUs:
518 1: WT cached,
519 2: cache bypass,
520 4: WB cached,
521 f: illegal.
522 For ful MMU:
523 bit 0: executable,
524 bit 1: writable,
525 bits 2..3:
526 0: cache bypass,
527 1: WB cache,
528 2: WT cache,
529 3: special (c and e are illegal, f is reserved).
530 For MPU:
531 0: illegal,
532 1: WB cache,
533 2: WB, no-write-allocate cache,
534 3: WT cache,
535 4: cache bypass.
536
537config KSEG_PADDR
538 hex "Physical address of the KSEG mapping"
539 depends on INITIALIZE_XTENSA_MMU_INSIDE_VMLINUX && MMU
540 default 0x00000000
541 help
542 This is the physical address where KSEG is mapped. Please refer to
543 the chosen KSEG layout help for the required address alignment.
544 Unpacked kernel image (including vectors) must be located completely
545 within KSEG.
546 Physical memory below this address is not available to linux.
547
548 If unsure, leave the default value here.
549
550config KERNEL_VIRTUAL_ADDRESS
551 hex "Kernel virtual address"
552 depends on MMU && XIP_KERNEL
553 default 0xd0003000
554 help
555 This is the virtual address where the XIP kernel is mapped.
556 XIP kernel may be mapped into KSEG or KIO region, virtual address
557 provided here must match kernel load address provided in
558 KERNEL_LOAD_ADDRESS.
559
560config KERNEL_LOAD_ADDRESS
561 hex "Kernel load address"
562 default 0x60003000 if !MMU
563 default 0x00003000 if MMU && INITIALIZE_XTENSA_MMU_INSIDE_VMLINUX
564 default 0xd0003000 if MMU && !INITIALIZE_XTENSA_MMU_INSIDE_VMLINUX
565 help
566 This is the address where the kernel is loaded.
567 It is virtual address for MMUv2 configurations and physical address
568 for all other configurations.
569
570 If unsure, leave the default value here.
571
572config VECTORS_OFFSET
573 hex "Kernel vectors offset"
574 default 0x00003000
575 depends on !XIP_KERNEL
576 help
577 This is the offset of the kernel image from the relocatable vectors
578 base.
579
580 If unsure, leave the default value here.
581
582config XIP_DATA_ADDR
583 hex "XIP kernel data virtual address"
584 depends on XIP_KERNEL
585 default 0x00000000
586 help
587 This is the virtual address where XIP kernel data is copied.
588 It must be within KSEG if MMU is used.
589
590config PLATFORM_WANT_DEFAULT_MEM
591 def_bool n
592
593config DEFAULT_MEM_START
594 hex
595 prompt "PAGE_OFFSET/PHYS_OFFSET" if !MMU && PLATFORM_WANT_DEFAULT_MEM
596 default 0x60000000 if PLATFORM_WANT_DEFAULT_MEM
597 default 0x00000000
598 help
599 This is the base address used for both PAGE_OFFSET and PHYS_OFFSET
600 in noMMU configurations.
601
602 If unsure, leave the default value here.
603
604choice
605 prompt "KSEG layout"
606 depends on MMU
607 default XTENSA_KSEG_MMU_V2
608
609config XTENSA_KSEG_MMU_V2
610 bool "MMUv2: 128MB cached + 128MB uncached"
611 help
612 MMUv2 compatible kernel memory map: TLB way 5 maps 128MB starting
613 at KSEG_PADDR to 0xd0000000 with cache and to 0xd8000000
614 without cache.
615 KSEG_PADDR must be aligned to 128MB.
616
617config XTENSA_KSEG_256M
618 bool "256MB cached + 256MB uncached"
619 depends on INITIALIZE_XTENSA_MMU_INSIDE_VMLINUX
620 help
621 TLB way 6 maps 256MB starting at KSEG_PADDR to 0xb0000000
622 with cache and to 0xc0000000 without cache.
623 KSEG_PADDR must be aligned to 256MB.
624
625config XTENSA_KSEG_512M
626 bool "512MB cached + 512MB uncached"
627 depends on INITIALIZE_XTENSA_MMU_INSIDE_VMLINUX
628 help
629 TLB way 6 maps 512MB starting at KSEG_PADDR to 0xa0000000
630 with cache and to 0xc0000000 without cache.
631 KSEG_PADDR must be aligned to 256MB.
632
633endchoice
634
635config HIGHMEM
636 bool "High Memory Support"
637 depends on MMU
638 help
639 Linux can use the full amount of RAM in the system by
640 default. However, the default MMUv2 setup only maps the
641 lowermost 128 MB of memory linearly to the areas starting
642 at 0xd0000000 (cached) and 0xd8000000 (uncached).
643 When there are more than 128 MB memory in the system not
644 all of it can be "permanently mapped" by the kernel.
645 The physical memory that's not permanently mapped is called
646 "high memory".
647
648 If you are compiling a kernel which will never run on a
649 machine with more than 128 MB total physical RAM, answer
650 N here.
651
652 If unsure, say Y.
653
654config FORCE_MAX_ZONEORDER
655 int "Maximum zone order"
656 default "11"
657 help
658 The kernel memory allocator divides physically contiguous memory
659 blocks into "zones", where each zone is a power of two number of
660 pages. This option selects the largest power of two that the kernel
661 keeps in the memory allocator. If you need to allocate very large
662 blocks of physically contiguous memory, then you may need to
663 increase this value.
664
665 This config option is actually maximum order plus one. For example,
666 a value of 11 means that the largest free memory block is 2^10 pages.
667
622endmenu
623
624menu "Power management options"
625
626source "kernel/power/Kconfig"
627
628endmenu
668endmenu
669
670menu "Power management options"
671
672source "kernel/power/Kconfig"
673
674endmenu