6137fed082
For the architectures that do not implement their own tlb_flush() but do already use the generic mmu_gather, there are two options: 1) the platform has an efficient flush_tlb_range() and asm-generic/tlb.h doesn't need any overrides at all. 2) the platform lacks an efficient flush_tlb_range() and we select MMU_GATHER_NO_RANGE to minimize full invalidates. Convert all 'simple' architectures to one of these two forms. alpha: has no range invalidate -> 2 arc: already used flush_tlb_range() -> 1 c6x: has no range invalidate -> 2 hexagon: has an efficient flush_tlb_range() -> 1 (flush_tlb_mm() is in fact a full range invalidate, so no need to shoot down everything) m68k: has inefficient flush_tlb_range() -> 2 microblaze: has no flush_tlb_range() -> 2 mips: has efficient flush_tlb_range() -> 1 (even though it currently seems to use flush_tlb_mm()) nds32: already uses flush_tlb_range() -> 1 nios2: has inefficient flush_tlb_range() -> 2 (no limit on range iteration) openrisc: has inefficient flush_tlb_range() -> 2 (no limit on range iteration) parisc: already uses flush_tlb_range() -> 1 sparc32: already uses flush_tlb_range() -> 1 unicore32: has inefficient flush_tlb_range() -> 2 (no limit on range iteration) xtensa: has efficient flush_tlb_range() -> 1 Note this also fixes a bug in the existing code for a number platforms. Those platforms that did: tlb_end_vma() -> if (!full_mm) flush_tlb_*() tlb_flush -> if (full_mm) flush_tlb_mm() missed the case of shift_arg_pages(), which doesn't have @fullmm set, nor calls into tlb_*vma(), but still frees page-tables and thus needs an invalidate. The new code handles this by detecting a non-empty range, and either issuing the matching range invalidate or a full invalidate, depending on the capabilities. No change in behavior intended. Signed-off-by: Peter Zijlstra (Intel) <peterz@infradead.org> Cc: Andrew Morton <akpm@linux-foundation.org> Cc: Andy Lutomirski <luto@kernel.org> Cc: Aneesh Kumar K.V <aneesh.kumar@linux.vnet.ibm.com> Cc: Borislav Petkov <bp@alien8.de> Cc: Dave Hansen <dave.hansen@linux.intel.com> Cc: David S. Miller <davem@davemloft.net> Cc: Greentime Hu <green.hu@gmail.com> Cc: Guan Xuetao <gxt@pku.edu.cn> Cc: H. Peter Anvin <hpa@zytor.com> Cc: Helge Deller <deller@gmx.de> Cc: Jonas Bonn <jonas@southpole.se> Cc: Ley Foon Tan <lftan@altera.com> Cc: Linus Torvalds <torvalds@linux-foundation.org> Cc: Mark Salter <msalter@redhat.com> Cc: Max Filippov <jcmvbkbc@gmail.com> Cc: Michal Simek <monstr@monstr.eu> Cc: Nick Piggin <npiggin@gmail.com> Cc: Paul Burton <paul.burton@mips.com> Cc: Peter Zijlstra <peterz@infradead.org> Cc: Richard Henderson <rth@twiddle.net> Cc: Richard Kuo <rkuo@codeaurora.org> Cc: Rik van Riel <riel@surriel.com> Cc: Thomas Gleixner <tglx@linutronix.de> Cc: Vineet Gupta <vgupta@synopsys.com> Cc: Will Deacon <will.deacon@arm.com> Signed-off-by: Ingo Molnar <mingo@kernel.org>
207 lines
3.7 KiB
Plaintext
207 lines
3.7 KiB
Plaintext
# SPDX-License-Identifier: GPL-2.0
|
|
config UNICORE32
|
|
def_bool y
|
|
select ARCH_32BIT_OFF_T
|
|
select ARCH_HAS_DEVMEM_IS_ALLOWED
|
|
select ARCH_MIGHT_HAVE_PC_PARPORT
|
|
select ARCH_MIGHT_HAVE_PC_SERIO
|
|
select HAVE_KERNEL_GZIP
|
|
select HAVE_KERNEL_BZIP2
|
|
select GENERIC_ATOMIC64
|
|
select HAVE_KERNEL_LZO
|
|
select HAVE_KERNEL_LZMA
|
|
select HAVE_PCI
|
|
select VIRT_TO_BUS
|
|
select ARCH_HAVE_CUSTOM_GPIO_H
|
|
select GENERIC_FIND_FIRST_BIT
|
|
select GENERIC_IRQ_PROBE
|
|
select GENERIC_IRQ_SHOW
|
|
select ARCH_WANT_FRAME_POINTERS
|
|
select GENERIC_IOMAP
|
|
select MODULES_USE_ELF_REL
|
|
select NEED_DMA_MAP_STATE
|
|
select MMU_GATHER_NO_RANGE if MMU
|
|
help
|
|
UniCore-32 is 32-bit Instruction Set Architecture,
|
|
including a series of low-power-consumption RISC chip
|
|
designs licensed by PKUnity Ltd.
|
|
Please see web page at <http://www.pkunity.com/>.
|
|
|
|
config GENERIC_CSUM
|
|
def_bool y
|
|
|
|
config NO_IOPORT_MAP
|
|
bool
|
|
|
|
config STACKTRACE_SUPPORT
|
|
def_bool y
|
|
|
|
config LOCKDEP_SUPPORT
|
|
def_bool y
|
|
|
|
config RWSEM_GENERIC_SPINLOCK
|
|
def_bool y
|
|
|
|
config RWSEM_XCHGADD_ALGORITHM
|
|
bool
|
|
|
|
config ARCH_HAS_ILOG2_U32
|
|
bool
|
|
|
|
config ARCH_HAS_ILOG2_U64
|
|
bool
|
|
|
|
config GENERIC_HWEIGHT
|
|
def_bool y
|
|
|
|
config GENERIC_CALIBRATE_DELAY
|
|
def_bool y
|
|
|
|
config ARCH_MAY_HAVE_PC_FDC
|
|
bool
|
|
|
|
config ZONE_DMA
|
|
def_bool y
|
|
|
|
menu "System Type"
|
|
|
|
config MMU
|
|
def_bool y
|
|
|
|
config ARCH_FPGA
|
|
bool
|
|
|
|
config ARCH_PUV3
|
|
def_bool y
|
|
select CPU_UCV2
|
|
select GENERIC_CLOCKEVENTS
|
|
select HAVE_CLK
|
|
select GPIOLIB
|
|
|
|
# CONFIGs for ARCH_PUV3
|
|
|
|
if ARCH_PUV3
|
|
|
|
choice
|
|
prompt "Board Selection"
|
|
default PUV3_DB0913
|
|
|
|
config PUV3_FPGA_DLX200
|
|
select ARCH_FPGA
|
|
bool "FPGA board"
|
|
|
|
config PUV3_DB0913
|
|
bool "DEBUG board (0913)"
|
|
|
|
config PUV3_NB0916
|
|
bool "NetBook board (0916)"
|
|
select PWM
|
|
select PWM_PUV3
|
|
|
|
config PUV3_SMW0919
|
|
bool "Security Mini-Workstation board (0919)"
|
|
|
|
endchoice
|
|
|
|
config PUV3_PM
|
|
def_bool y if !ARCH_FPGA
|
|
|
|
endif
|
|
|
|
source "arch/unicore32/mm/Kconfig"
|
|
|
|
comment "Floating point support"
|
|
|
|
config UNICORE_FPU_F64
|
|
def_bool y if !ARCH_FPGA
|
|
|
|
endmenu
|
|
|
|
menu "Kernel Features"
|
|
|
|
source "kernel/Kconfig.hz"
|
|
|
|
config LEDS
|
|
def_bool y
|
|
depends on GPIOLIB
|
|
|
|
config ALIGNMENT_TRAP
|
|
def_bool y
|
|
help
|
|
Unicore processors can not fetch/store information which is not
|
|
naturally aligned on the bus, i.e., a 4 byte fetch must start at an
|
|
address divisible by 4. On 32-bit Unicore processors, these non-aligned
|
|
fetch/store instructions will be emulated in software if you say
|
|
here, which has a severe performance impact. This is necessary for
|
|
correct operation of some network protocols. With an IP-only
|
|
configuration it is safe to say N, otherwise say Y.
|
|
|
|
endmenu
|
|
|
|
menu "Boot options"
|
|
|
|
config CMDLINE
|
|
string "Default kernel command string"
|
|
default ""
|
|
|
|
config CMDLINE_FORCE
|
|
bool "Always use the default kernel command string"
|
|
depends on CMDLINE != ""
|
|
help
|
|
Always use the default kernel command string, even if the boot
|
|
loader passes other arguments to the kernel.
|
|
This is useful if you cannot or don't want to change the
|
|
command-line options your boot loader passes to the kernel.
|
|
|
|
If unsure, say N.
|
|
|
|
endmenu
|
|
|
|
menu "Power management options"
|
|
|
|
source "kernel/power/Kconfig"
|
|
|
|
source "drivers/cpufreq/Kconfig"
|
|
|
|
config ARCH_SUSPEND_POSSIBLE
|
|
def_bool y if !ARCH_FPGA
|
|
|
|
config ARCH_HIBERNATION_POSSIBLE
|
|
def_bool y if !ARCH_FPGA
|
|
|
|
endmenu
|
|
|
|
if ARCH_PUV3
|
|
|
|
config PUV3_GPIO
|
|
bool
|
|
depends on !ARCH_FPGA
|
|
select GPIO_SYSFS
|
|
default y
|
|
|
|
if PUV3_NB0916
|
|
|
|
menu "PKUnity NetBook-0916 Features"
|
|
|
|
config I2C_BATTERY_BQ27200
|
|
tristate "I2C Battery BQ27200 Support"
|
|
select I2C_PUV3
|
|
select POWER_SUPPLY
|
|
select BATTERY_BQ27XXX
|
|
|
|
config I2C_EEPROM_AT24
|
|
tristate "I2C EEPROMs AT24 support"
|
|
select I2C_PUV3
|
|
select EEPROM_AT24
|
|
|
|
config LCD_BACKLIGHT
|
|
tristate "LCD Backlight support"
|
|
select BACKLIGHT_LCD_SUPPORT
|
|
select BACKLIGHT_PWM
|
|
|
|
endmenu
|
|
|
|
endif
|
|
|
|
endif
|