Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 9a8e5d41 authored by Linus Torvalds's avatar Linus Torvalds
Browse files
Pull ARM fixes from Russell King:
 "Nothing too disasterous, the biggest thing being the removal of the
  regulator support for vcore in the AMBA driver; only one SoC was using
  this and it got broken during the last merge window, which then
  started causing problems for other people.  Mutual agreement was
  reached for it to be removed."

* 'fixes' of git://git.linaro.org/people/rmk/linux-arm:
  ARM: 7386/1: jump_label: fixup for rename to static_key
  ARM: 7384/1: ThumbEE: Disable userspace TEEHBR access for !CONFIG_ARM_THUMBEE
  ARM: 7382/1: mm: truncate memory banks to fit in 4GB space for classic MMU
  ARM: 7359/2: smp_twd: Only wait for reprogramming on active cpus
  ARM: 7383/1: nommu: populate vectors page from paging_init
  ARM: 7381/1: nommu: fix typo in mm/Kconfig
  ARM: 7380/1: DT: do not add a zero-sized memory property
  ARM: 7379/1: DT: fix atags_to_fdt() second call site
  ARM: 7366/3: amba: Remove AMBA level regulator support
  ARM: 7377/1: vic: re-read status register before dispatching each IRQ handler
  ARM: 7368/1: fault.c: correct how the tsk->[maj|min]_flt gets incremented
parents 12e993b8 708e5978
Loading
Loading
Loading
Loading
+2 −0
Original line number Original line Diff line number Diff line
@@ -77,6 +77,8 @@ int atags_to_fdt(void *atag_list, void *fdt, int total_space)
		} else if (atag->hdr.tag == ATAG_MEM) {
		} else if (atag->hdr.tag == ATAG_MEM) {
			if (memcount >= sizeof(mem_reg_property)/4)
			if (memcount >= sizeof(mem_reg_property)/4)
				continue;
				continue;
			if (!atag->u.mem.size)
				continue;
			mem_reg_property[memcount++] = cpu_to_fdt32(atag->u.mem.start);
			mem_reg_property[memcount++] = cpu_to_fdt32(atag->u.mem.start);
			mem_reg_property[memcount++] = cpu_to_fdt32(atag->u.mem.size);
			mem_reg_property[memcount++] = cpu_to_fdt32(atag->u.mem.size);
		} else if (atag->hdr.tag == ATAG_INITRD2) {
		} else if (atag->hdr.tag == ATAG_INITRD2) {
+1 −1
Original line number Original line Diff line number Diff line
@@ -273,7 +273,7 @@ restart: adr r0, LC0
		add	r0, r0, #0x100
		add	r0, r0, #0x100
		mov	r1, r6
		mov	r1, r6
		sub	r2, sp, r6
		sub	r2, sp, r6
		blne	atags_to_fdt
		bleq	atags_to_fdt


		ldmfd	sp!, {r0-r3, ip, lr}
		ldmfd	sp!, {r0-r3, ip, lr}
		sub	sp, sp, #0x10000
		sub	sp, sp, #0x10000
+4 −5
Original line number Original line Diff line number Diff line
@@ -427,19 +427,18 @@ int __init vic_of_init(struct device_node *node, struct device_node *parent)


/*
/*
 * Handle each interrupt in a single VIC.  Returns non-zero if we've
 * Handle each interrupt in a single VIC.  Returns non-zero if we've
 * handled at least one interrupt.  This does a single read of the
 * handled at least one interrupt.  This reads the status register
 * status register and handles all interrupts in order from LSB first.
 * before handling each interrupt, which is necessary given that
 * handle_IRQ may briefly re-enable interrupts for soft IRQ handling.
 */
 */
static int handle_one_vic(struct vic_device *vic, struct pt_regs *regs)
static int handle_one_vic(struct vic_device *vic, struct pt_regs *regs)
{
{
	u32 stat, irq;
	u32 stat, irq;
	int handled = 0;
	int handled = 0;


	stat = readl_relaxed(vic->base + VIC_IRQ_STATUS);
	while ((stat = readl_relaxed(vic->base + VIC_IRQ_STATUS))) {
	while (stat) {
		irq = ffs(stat) - 1;
		irq = ffs(stat) - 1;
		handle_IRQ(irq_find_mapping(vic->domain, irq), regs);
		handle_IRQ(irq_find_mapping(vic->domain, irq), regs);
		stat &= ~(1 << irq);
		handled = 1;
		handled = 1;
	}
	}


+1 −1
Original line number Original line Diff line number Diff line
@@ -14,7 +14,7 @@
#define JUMP_LABEL_NOP	"nop"
#define JUMP_LABEL_NOP	"nop"
#endif
#endif


static __always_inline bool arch_static_branch(struct jump_label_key *key)
static __always_inline bool arch_static_branch(struct static_key *key)
{
{
	asm goto("1:\n\t"
	asm goto("1:\n\t"
		 JUMP_LABEL_NOP "\n\t"
		 JUMP_LABEL_NOP "\n\t"
+15 −1
Original line number Original line Diff line number Diff line
@@ -523,6 +523,20 @@ int __init arm_add_memory(phys_addr_t start, unsigned long size)
	 */
	 */
	size -= start & ~PAGE_MASK;
	size -= start & ~PAGE_MASK;
	bank->start = PAGE_ALIGN(start);
	bank->start = PAGE_ALIGN(start);

#ifndef CONFIG_LPAE
	if (bank->start + size < bank->start) {
		printk(KERN_CRIT "Truncating memory at 0x%08llx to fit in "
			"32-bit physical address space\n", (long long)start);
		/*
		 * To ensure bank->start + bank->size is representable in
		 * 32 bits, we use ULONG_MAX as the upper limit rather than 4GB.
		 * This means we lose a page after masking.
		 */
		size = ULONG_MAX - bank->start;
	}
#endif

	bank->size = size & PAGE_MASK;
	bank->size = size & PAGE_MASK;


	/*
	/*
Loading