mirror of
https://github.com/torvalds/linux.git
synced 2024-11-17 09:31:50 +00:00
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: Anton Blanchard <anton@samba.org> Signed-off-by: Benjamin Herrenschmidt <benh@kernel.crashing.org>
This commit is contained in:
parent
e2c8b93e65
commit
56b4c99312
@ -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;
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user