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

Commit 0b204ce9 authored by Rohit Vaswani's avatar Rohit Vaswani Committed by Prasad Sodagudi
Browse files

irqchip: gic: Fix msm_show_resume_irq for 64-bit



msm_show_resume_irq function uses unsigned long to
capture the 32-bit values from the irq pending register.
This then is used to identify the pending interrupts using
find_next_bit and results in an incorrect value on 64-bit
targets as the 32-bit data is encapusulated in a 64-bit register.

Change-Id: Id8197ebdfa7d1701822892c5f7369ae82cfe35cf
Signed-off-by: default avatarRohit Vaswani <rvaswani@codeaurora.org>
Signed-off-by: default avatarPrasad Sodagudi <psodagud@codeaurora.org>
parent 866b7283
Loading
Loading
Loading
Loading
+4 −4
Original line number Original line Diff line number Diff line
@@ -259,7 +259,7 @@ static void gic_show_resume_irq(struct gic_chip_data *gic)
{
{
	unsigned int i;
	unsigned int i;
	u32 enabled;
	u32 enabled;
	unsigned long pending[32];
	u32 pending[32];
	void __iomem *base = gic_data_dist_base(gic);
	void __iomem *base = gic_data_dist_base(gic);


	if (!msm_show_resume_irq_mask)
	if (!msm_show_resume_irq_mask)
@@ -273,9 +273,9 @@ static void gic_show_resume_irq(struct gic_chip_data *gic)
	}
	}
	raw_spin_unlock(&irq_controller_lock);
	raw_spin_unlock(&irq_controller_lock);


	for (i = find_first_bit(pending, gic->gic_irqs);
	for (i = find_first_bit((unsigned long *)pending, gic->gic_irqs);
	i < gic->gic_irqs;
	i < gic->gic_irqs;
	     i = find_next_bit(pending, gic->gic_irqs, i+1)) {
	i = find_next_bit((unsigned long *)pending, gic->gic_irqs, i+1)) {
		struct irq_desc *desc = irq_to_desc(i + gic->irq_offset);
		struct irq_desc *desc = irq_to_desc(i + gic->irq_offset);
		const char *name = "null";
		const char *name = "null";