| .. | .. |
|---|
| 42 | 42 | /* Read the interrupt status: */ |
|---|
| 43 | 43 | status = ioread32(psp->io_regs + psp->vdata->intsts_reg); |
|---|
| 44 | 44 | |
|---|
| 45 | + /* Clear the interrupt status by writing the same value we read. */ |
|---|
| 46 | + iowrite32(status, psp->io_regs + psp->vdata->intsts_reg); |
|---|
| 47 | + |
|---|
| 45 | 48 | /* invoke subdevice interrupt handlers */ |
|---|
| 46 | 49 | if (status) { |
|---|
| 47 | 50 | if (psp->sev_irq_handler) |
|---|
| .. | .. |
|---|
| 50 | 53 | if (psp->tee_irq_handler) |
|---|
| 51 | 54 | psp->tee_irq_handler(irq, psp->tee_irq_data, status); |
|---|
| 52 | 55 | } |
|---|
| 53 | | - |
|---|
| 54 | | - /* Clear the interrupt status by writing the same value we read. */ |
|---|
| 55 | | - iowrite32(status, psp->io_regs + psp->vdata->intsts_reg); |
|---|
| 56 | 56 | |
|---|
| 57 | 57 | return IRQ_HANDLED; |
|---|
| 58 | 58 | } |
|---|