mirror of
https://github.com/FEX-Emu/linux.git
synced 2024-12-14 21:01:29 +00:00
Merge branch 'fixes' of git://git.linaro.org/people/rmk/linux-arm
Pull ARM fixes from Russell King: "A random collection of various fixes, mainly from Arnd and a few other people. Not thing really stands out here." * 'fixes' of git://git.linaro.org/people/rmk/linux-arm: ARM: drop experimental status for hotplug and Thumb2 ARM: 7560/1: SMP_TWD: use DIV_ROUND_CLOSEST() for periodic mode ARM: 7559/1: smp: switch away from the idmap before updating init_mm.mm_count ARM: 7556/1: perf: fix updated event period in response to PERF_EVENT_IOC_PERIOD ARM: 7555/1: kexec: fix segment memory addresses check ARM: warnings in arch/arm/include/asm/uaccess.h ARM: binfmt_flat: unused variable 'persistent' ARM: be really quiet when building with 'make -s' ARM: pass -marm to gcc by default for both C and assembler ARM: Xen: fix initial build problems ARM: export default read_current_timer ARM: Fix another build warning in arch/arm/mm/alignment.c ARM: export set_irq_flags ARM: kprobes: make more tests conditional
This commit is contained in:
commit
6bb1e3819c
@ -1603,8 +1603,8 @@ config NR_CPUS
|
||||
default "4"
|
||||
|
||||
config HOTPLUG_CPU
|
||||
bool "Support for hot-pluggable CPUs (EXPERIMENTAL)"
|
||||
depends on SMP && HOTPLUG && EXPERIMENTAL
|
||||
bool "Support for hot-pluggable CPUs"
|
||||
depends on SMP && HOTPLUG
|
||||
help
|
||||
Say Y here to experiment with turning CPUs off and on. CPUs
|
||||
can be controlled through /sys/devices/system/cpu.
|
||||
@ -1645,8 +1645,8 @@ config HZ
|
||||
default 100
|
||||
|
||||
config THUMB2_KERNEL
|
||||
bool "Compile the kernel in Thumb-2 mode (EXPERIMENTAL)"
|
||||
depends on CPU_V7 && !CPU_V6 && !CPU_V6K && EXPERIMENTAL
|
||||
bool "Compile the kernel in Thumb-2 mode"
|
||||
depends on CPU_V7 && !CPU_V6 && !CPU_V6K
|
||||
select AEABI
|
||||
select ARM_ASM_UNIFIED
|
||||
select ARM_UNWIND
|
||||
@ -1850,6 +1850,7 @@ config XEN_DOM0
|
||||
config XEN
|
||||
bool "Xen guest support on ARM (EXPERIMENTAL)"
|
||||
depends on EXPERIMENTAL && ARM && OF
|
||||
depends on CPU_V7 && !CPU_V6
|
||||
help
|
||||
Say Y if you want to run Linux in a Virtual Machine on Xen on ARM.
|
||||
|
||||
|
@ -21,8 +21,6 @@ endif
|
||||
OBJCOPYFLAGS :=-O binary -R .comment -S
|
||||
GZFLAGS :=-9
|
||||
#KBUILD_CFLAGS +=-pipe
|
||||
# Explicitly specifiy 32-bit ARM ISA since toolchain default can be -mthumb:
|
||||
KBUILD_CFLAGS +=$(call cc-option,-marm,)
|
||||
|
||||
# Never generate .eh_frame
|
||||
KBUILD_CFLAGS += $(call cc-option,-fno-dwarf2-cfi-asm)
|
||||
@ -105,17 +103,20 @@ endif
|
||||
ifeq ($(CONFIG_THUMB2_KERNEL),y)
|
||||
AFLAGS_AUTOIT :=$(call as-option,-Wa$(comma)-mimplicit-it=always,-Wa$(comma)-mauto-it)
|
||||
AFLAGS_NOWARN :=$(call as-option,-Wa$(comma)-mno-warn-deprecated,-Wa$(comma)-W)
|
||||
CFLAGS_THUMB2 :=-mthumb $(AFLAGS_AUTOIT) $(AFLAGS_NOWARN)
|
||||
AFLAGS_THUMB2 :=$(CFLAGS_THUMB2) -Wa$(comma)-mthumb
|
||||
CFLAGS_ISA :=-mthumb $(AFLAGS_AUTOIT) $(AFLAGS_NOWARN)
|
||||
AFLAGS_ISA :=$(CFLAGS_ISA) -Wa$(comma)-mthumb
|
||||
# Work around buggy relocation from gas if requested:
|
||||
ifeq ($(CONFIG_THUMB2_AVOID_R_ARM_THM_JUMP11),y)
|
||||
CFLAGS_MODULE +=-fno-optimize-sibling-calls
|
||||
endif
|
||||
else
|
||||
CFLAGS_ISA :=$(call cc-option,-marm,)
|
||||
AFLAGS_ISA :=$(CFLAGS_ISA)
|
||||
endif
|
||||
|
||||
# Need -Uarm for gcc < 3.x
|
||||
KBUILD_CFLAGS +=$(CFLAGS_ABI) $(CFLAGS_THUMB2) $(arch-y) $(tune-y) $(call cc-option,-mshort-load-bytes,$(call cc-option,-malignment-traps,)) -msoft-float -Uarm
|
||||
KBUILD_AFLAGS +=$(CFLAGS_ABI) $(AFLAGS_THUMB2) $(arch-y) $(tune-y) -include asm/unified.h -msoft-float
|
||||
KBUILD_CFLAGS +=$(CFLAGS_ABI) $(CFLAGS_ISA) $(arch-y) $(tune-y) $(call cc-option,-mshort-load-bytes,$(call cc-option,-malignment-traps,)) -msoft-float -Uarm
|
||||
KBUILD_AFLAGS +=$(CFLAGS_ABI) $(AFLAGS_ISA) $(arch-y) $(tune-y) -include asm/unified.h -msoft-float
|
||||
|
||||
CHECKFLAGS += -D__arm__
|
||||
|
||||
|
@ -33,7 +33,7 @@ ifeq ($(CONFIG_XIP_KERNEL),y)
|
||||
|
||||
$(obj)/xipImage: vmlinux FORCE
|
||||
$(call if_changed,objcopy)
|
||||
@echo ' Kernel: $@ is ready (physical address: $(CONFIG_XIP_PHYS_ADDR))'
|
||||
$(kecho) ' Kernel: $@ is ready (physical address: $(CONFIG_XIP_PHYS_ADDR))'
|
||||
|
||||
$(obj)/Image $(obj)/zImage: FORCE
|
||||
@echo 'Kernel configured for XIP (CONFIG_XIP_KERNEL=y)'
|
||||
@ -48,14 +48,14 @@ $(obj)/xipImage: FORCE
|
||||
|
||||
$(obj)/Image: vmlinux FORCE
|
||||
$(call if_changed,objcopy)
|
||||
@echo ' Kernel: $@ is ready'
|
||||
$(kecho) ' Kernel: $@ is ready'
|
||||
|
||||
$(obj)/compressed/vmlinux: $(obj)/Image FORCE
|
||||
$(Q)$(MAKE) $(build)=$(obj)/compressed $@
|
||||
|
||||
$(obj)/zImage: $(obj)/compressed/vmlinux FORCE
|
||||
$(call if_changed,objcopy)
|
||||
@echo ' Kernel: $@ is ready'
|
||||
$(kecho) ' Kernel: $@ is ready'
|
||||
|
||||
endif
|
||||
|
||||
@ -90,7 +90,7 @@ fi
|
||||
$(obj)/uImage: $(obj)/zImage FORCE
|
||||
@$(check_for_multiple_loadaddr)
|
||||
$(call if_changed,uimage)
|
||||
@echo ' Image $@ is ready'
|
||||
$(kecho) ' Image $@ is ready'
|
||||
|
||||
$(obj)/bootp/bootp: $(obj)/zImage initrd FORCE
|
||||
$(Q)$(MAKE) $(build)=$(obj)/bootp $@
|
||||
@ -98,7 +98,7 @@ $(obj)/bootp/bootp: $(obj)/zImage initrd FORCE
|
||||
|
||||
$(obj)/bootpImage: $(obj)/bootp/bootp FORCE
|
||||
$(call if_changed,objcopy)
|
||||
@echo ' Kernel: $@ is ready'
|
||||
$(kecho) ' Kernel: $@ is ready'
|
||||
|
||||
PHONY += initrd FORCE
|
||||
initrd:
|
||||
|
@ -8,7 +8,7 @@
|
||||
#define flat_argvp_envp_on_stack() 1
|
||||
#define flat_old_ram_flag(flags) (flags)
|
||||
#define flat_reloc_valid(reloc, size) ((reloc) <= (size))
|
||||
#define flat_get_addr_from_rp(rp, relval, flags, persistent) get_unaligned(rp)
|
||||
#define flat_get_addr_from_rp(rp, relval, flags, persistent) ((void)persistent,get_unaligned(rp))
|
||||
#define flat_put_addr_at_rp(rp, val, relval) put_unaligned(val,rp)
|
||||
#define flat_get_relocate_addr(rel) (rel)
|
||||
#define flat_set_persistent(relval, p) 0
|
||||
|
@ -200,8 +200,8 @@ extern int __put_user_8(void *, unsigned long long);
|
||||
#define USER_DS KERNEL_DS
|
||||
|
||||
#define segment_eq(a,b) (1)
|
||||
#define __addr_ok(addr) (1)
|
||||
#define __range_ok(addr,size) (0)
|
||||
#define __addr_ok(addr) ((void)(addr),1)
|
||||
#define __range_ok(addr,size) ((void)(addr),0)
|
||||
#define get_fs() (KERNEL_DS)
|
||||
|
||||
static inline void set_fs(mm_segment_t fs)
|
||||
|
@ -34,6 +34,7 @@
|
||||
#include <linux/list.h>
|
||||
#include <linux/kallsyms.h>
|
||||
#include <linux/proc_fs.h>
|
||||
#include <linux/export.h>
|
||||
|
||||
#include <asm/exception.h>
|
||||
#include <asm/mach/arch.h>
|
||||
@ -109,6 +110,7 @@ void set_irq_flags(unsigned int irq, unsigned int iflags)
|
||||
/* Order is clear bits in "clr" then set bits in "set" */
|
||||
irq_modify_status(irq, clr, set & ~clr);
|
||||
}
|
||||
EXPORT_SYMBOL_GPL(set_irq_flags);
|
||||
|
||||
void __init init_IRQ(void)
|
||||
{
|
||||
|
@ -366,7 +366,9 @@ void kprobe_arm_test_cases(void)
|
||||
TEST_UNSUPPORTED(".word 0xe04f0392 @ umaal r0, pc, r2, r3")
|
||||
TEST_UNSUPPORTED(".word 0xe0500090 @ undef")
|
||||
TEST_UNSUPPORTED(".word 0xe05fff9f @ undef")
|
||||
#endif
|
||||
|
||||
#if __LINUX_ARM_ARCH__ >= 7
|
||||
TEST_RRR( "mls r0, r",1, VAL1,", r",2, VAL2,", r",3, VAL3,"")
|
||||
TEST_RRR( "mlshi r7, r",8, VAL3,", r",9, VAL1,", r",10, VAL2,"")
|
||||
TEST_RR( "mls lr, r",1, VAL2,", r",2, VAL3,", r13")
|
||||
@ -456,6 +458,8 @@ void kprobe_arm_test_cases(void)
|
||||
TEST_UNSUPPORTED(".word 0xe1700090") /* Unallocated space */
|
||||
#if __LINUX_ARM_ARCH__ >= 6
|
||||
TEST_UNSUPPORTED("ldrex r2, [sp]")
|
||||
#endif
|
||||
#if (__LINUX_ARM_ARCH__ >= 7) || defined(CONFIG_CPU_32v6K)
|
||||
TEST_UNSUPPORTED("strexd r0, r2, r3, [sp]")
|
||||
TEST_UNSUPPORTED("ldrexd r2, r3, [sp]")
|
||||
TEST_UNSUPPORTED("strexb r0, r2, [sp]")
|
||||
|
@ -45,10 +45,9 @@ int machine_kexec_prepare(struct kimage *image)
|
||||
for (i = 0; i < image->nr_segments; i++) {
|
||||
current_segment = &image->segment[i];
|
||||
|
||||
err = memblock_is_region_memory(current_segment->mem,
|
||||
current_segment->memsz);
|
||||
if (err)
|
||||
return - EINVAL;
|
||||
if (!memblock_is_region_memory(current_segment->mem,
|
||||
current_segment->memsz))
|
||||
return -EINVAL;
|
||||
|
||||
err = get_user(header, (__be32*)current_segment->buf);
|
||||
if (err)
|
||||
|
@ -96,6 +96,10 @@ armpmu_event_set_period(struct perf_event *event,
|
||||
s64 period = hwc->sample_period;
|
||||
int ret = 0;
|
||||
|
||||
/* The period may have been changed by PERF_EVENT_IOC_PERIOD */
|
||||
if (unlikely(period != hwc->last_period))
|
||||
left = period - (hwc->last_period - left);
|
||||
|
||||
if (unlikely(left <= -period)) {
|
||||
left = period;
|
||||
local64_set(&hwc->period_left, left);
|
||||
|
@ -294,18 +294,24 @@ static void percpu_timer_setup(void);
|
||||
asmlinkage void __cpuinit secondary_start_kernel(void)
|
||||
{
|
||||
struct mm_struct *mm = &init_mm;
|
||||
unsigned int cpu = smp_processor_id();
|
||||
unsigned int cpu;
|
||||
|
||||
/*
|
||||
* The identity mapping is uncached (strongly ordered), so
|
||||
* switch away from it before attempting any exclusive accesses.
|
||||
*/
|
||||
cpu_switch_mm(mm->pgd, mm);
|
||||
enter_lazy_tlb(mm, current);
|
||||
local_flush_tlb_all();
|
||||
|
||||
/*
|
||||
* All kernel threads share the same mm context; grab a
|
||||
* reference and switch to it.
|
||||
*/
|
||||
cpu = smp_processor_id();
|
||||
atomic_inc(&mm->mm_count);
|
||||
current->active_mm = mm;
|
||||
cpumask_set_cpu(cpu, mm_cpumask(mm));
|
||||
cpu_switch_mm(mm->pgd, mm);
|
||||
enter_lazy_tlb(mm, current);
|
||||
local_flush_tlb_all();
|
||||
|
||||
printk("CPU%u: Booted secondary processor\n", cpu);
|
||||
|
||||
|
@ -42,10 +42,10 @@ static void twd_set_mode(enum clock_event_mode mode,
|
||||
|
||||
switch (mode) {
|
||||
case CLOCK_EVT_MODE_PERIODIC:
|
||||
/* timer load already set up */
|
||||
ctrl = TWD_TIMER_CONTROL_ENABLE | TWD_TIMER_CONTROL_IT_ENABLE
|
||||
| TWD_TIMER_CONTROL_PERIODIC;
|
||||
__raw_writel(twd_timer_rate / HZ, twd_base + TWD_TIMER_LOAD);
|
||||
__raw_writel(DIV_ROUND_CLOSEST(twd_timer_rate, HZ),
|
||||
twd_base + TWD_TIMER_LOAD);
|
||||
break;
|
||||
case CLOCK_EVT_MODE_ONESHOT:
|
||||
/* period set, and timer enabled in 'next_event' hook */
|
||||
|
@ -45,6 +45,7 @@ int read_current_timer(unsigned long *timer_val)
|
||||
*timer_val = delay_timer->read_current_timer();
|
||||
return 0;
|
||||
}
|
||||
EXPORT_SYMBOL_GPL(read_current_timer);
|
||||
|
||||
static void __timer_delay(unsigned long cycles)
|
||||
{
|
||||
|
@ -856,8 +856,10 @@ do_alignment(unsigned long addr, unsigned int fsr, struct pt_regs *regs)
|
||||
if (thumb2_32b) {
|
||||
offset.un = 0;
|
||||
handler = do_alignment_t32_to_handler(&instr, regs, &offset);
|
||||
} else
|
||||
} else {
|
||||
offset.un = 0;
|
||||
handler = do_alignment_ldmstm;
|
||||
}
|
||||
break;
|
||||
|
||||
default:
|
||||
|
@ -5,6 +5,6 @@
|
||||
#
|
||||
|
||||
include/generated/mach-types.h: $(src)/gen-mach-types $(src)/mach-types
|
||||
@echo ' Generating $@'
|
||||
$(kecho) ' Generating $@'
|
||||
@mkdir -p $(dir $@)
|
||||
$(Q)$(AWK) -f $^ > $@ || { rm -f $@; /bin/false; }
|
||||
|
@ -3,6 +3,7 @@ menu "Xen driver support"
|
||||
|
||||
config XEN_BALLOON
|
||||
bool "Xen memory balloon driver"
|
||||
depends on !ARM
|
||||
default y
|
||||
help
|
||||
The balloon driver allows the Xen domain to request more memory from
|
||||
@ -145,6 +146,7 @@ config SWIOTLB_XEN
|
||||
|
||||
config XEN_TMEM
|
||||
bool
|
||||
depends on !ARM
|
||||
default y if (CLEANCACHE || FRONTSWAP)
|
||||
help
|
||||
Shim to interface in-kernel Transcendent Memory hooks
|
||||
|
Loading…
Reference in New Issue
Block a user