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

Commit 5a5ca73a authored by Linus Torvalds's avatar Linus Torvalds
Browse files
Pull ARM64 fixes from Catalin Marinas:

 - arm64 build fix following the move of the thread_struct to the end of
   task_struct and the asm offsets becoming too large for the AArch64
   ISA

 - preparatory patch for moving irq_data struct members (applied now to
   reduce dependency for the next merging window)

* tag 'arm64-fixes' of git://git.kernel.org/pub/scm/linux/kernel/git/arm64/linux:
  ARM64/irq: Use access helper irq_data_get_affinity_mask()
  arm64: switch_to: calculate cpu context pointer using separate register
parents d725e66c 3bc38fc1
Loading
Loading
Loading
Loading
+3 −2
Original line number Original line Diff line number Diff line
@@ -585,7 +585,8 @@ ENDPROC(el0_irq)
 *
 *
 */
 */
ENTRY(cpu_switch_to)
ENTRY(cpu_switch_to)
	add	x8, x0, #THREAD_CPU_CONTEXT
	mov	x10, #THREAD_CPU_CONTEXT
	add	x8, x0, x10
	mov	x9, sp
	mov	x9, sp
	stp	x19, x20, [x8], #16		// store callee-saved registers
	stp	x19, x20, [x8], #16		// store callee-saved registers
	stp	x21, x22, [x8], #16
	stp	x21, x22, [x8], #16
@@ -594,7 +595,7 @@ ENTRY(cpu_switch_to)
	stp	x27, x28, [x8], #16
	stp	x27, x28, [x8], #16
	stp	x29, x9, [x8], #16
	stp	x29, x9, [x8], #16
	str	lr, [x8]
	str	lr, [x8]
	add	x8, x1, #THREAD_CPU_CONTEXT
	add	x8, x1, x10
	ldp	x19, x20, [x8], #16		// restore callee-saved registers
	ldp	x19, x20, [x8], #16		// restore callee-saved registers
	ldp	x21, x22, [x8], #16
	ldp	x21, x22, [x8], #16
	ldp	x23, x24, [x8], #16
	ldp	x23, x24, [x8], #16
+2 −2
Original line number Original line Diff line number Diff line
@@ -61,7 +61,7 @@ void __init init_IRQ(void)
static bool migrate_one_irq(struct irq_desc *desc)
static bool migrate_one_irq(struct irq_desc *desc)
{
{
	struct irq_data *d = irq_desc_get_irq_data(desc);
	struct irq_data *d = irq_desc_get_irq_data(desc);
	const struct cpumask *affinity = d->affinity;
	const struct cpumask *affinity = irq_data_get_affinity_mask(d);
	struct irq_chip *c;
	struct irq_chip *c;
	bool ret = false;
	bool ret = false;


@@ -81,7 +81,7 @@ static bool migrate_one_irq(struct irq_desc *desc)
	if (!c->irq_set_affinity)
	if (!c->irq_set_affinity)
		pr_debug("IRQ%u: unable to set affinity\n", d->irq);
		pr_debug("IRQ%u: unable to set affinity\n", d->irq);
	else if (c->irq_set_affinity(d, affinity, false) == IRQ_SET_MASK_OK && ret)
	else if (c->irq_set_affinity(d, affinity, false) == IRQ_SET_MASK_OK && ret)
		cpumask_copy(d->affinity, affinity);
		cpumask_copy(irq_data_get_affinity_mask(d), affinity);


	return ret;
	return ret;
}
}