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

Commit 56b4c993 authored by Anton Blanchard's avatar Anton Blanchard Committed by Benjamin Herrenschmidt
Browse files

powerpc/powernv: Fix little endian issues with opal_do_notifier calls



The bitmap in opal_poll_events and opal_handle_interrupt is
big endian, so we need to byteswap it on little endian builds.

Signed-off-by: default avatarAnton Blanchard <anton@samba.org>
Signed-off-by: default avatarBenjamin Herrenschmidt <benh@kernel.crashing.org>
parent e2c8b93e
Loading
Loading
Loading
Loading
+3 −3
Original line number Original line Diff line number Diff line
@@ -242,14 +242,14 @@ void opal_notifier_update_evt(uint64_t evt_mask,
void opal_notifier_enable(void)
void opal_notifier_enable(void)
{
{
	int64_t rc;
	int64_t rc;
	uint64_t evt = 0;
	__be64 evt = 0;


	atomic_set(&opal_notifier_hold, 0);
	atomic_set(&opal_notifier_hold, 0);


	/* Process pending events */
	/* Process pending events */
	rc = opal_poll_events(&evt);
	rc = opal_poll_events(&evt);
	if (rc == OPAL_SUCCESS && evt)
	if (rc == OPAL_SUCCESS && evt)
		opal_do_notifier(evt);
		opal_do_notifier(be64_to_cpu(evt));
}
}


void opal_notifier_disable(void)
void opal_notifier_disable(void)
@@ -529,7 +529,7 @@ static irqreturn_t opal_interrupt(int irq, void *data)


	opal_handle_interrupt(virq_to_hw(irq), &events);
	opal_handle_interrupt(virq_to_hw(irq), &events);


	opal_do_notifier(events);
	opal_do_notifier(be64_to_cpu(events));


	return IRQ_HANDLED;
	return IRQ_HANDLED;
}
}