diff options
author | Ofir Bitton <obitton@habana.ai> | 2021-05-25 22:09:13 +0300 |
---|---|---|
committer | Oded Gabbay <ogabbay@kernel.org> | 2021-06-18 15:23:41 +0300 |
commit | 5bc691d84966cd763d06c9c70b68c97835793c88 (patch) | |
tree | d15c3295b13b51cc1856514f85cc8621ae31dd76 /drivers/misc/habanalabs/gaudi | |
parent | 135ade0c6afccbe874bdda811201733e5b57c9bc (diff) | |
download | linux-5bc691d84966cd763d06c9c70b68c97835793c88.tar.xz |
habanalabs/gaudi: split host irq interfaces towards FW
Current implementation uses a single interrupt interface towards
FW, this interface is causing races between interrupt types.
We split this interface to interface per interrupt type.
Signed-off-by: Ofir Bitton <obitton@habana.ai>
Reviewed-by: Oded Gabbay <ogabbay@kernel.org>
Signed-off-by: Oded Gabbay <ogabbay@kernel.org>
Diffstat (limited to 'drivers/misc/habanalabs/gaudi')
-rw-r--r-- | drivers/misc/habanalabs/gaudi/gaudi.c | 8 |
1 files changed, 4 insertions, 4 deletions
diff --git a/drivers/misc/habanalabs/gaudi/gaudi.c b/drivers/misc/habanalabs/gaudi/gaudi.c index e0e3e0f6e9d8..ee1ab7190e46 100644 --- a/drivers/misc/habanalabs/gaudi/gaudi.c +++ b/drivers/misc/habanalabs/gaudi/gaudi.c @@ -3962,7 +3962,7 @@ static int gaudi_init_cpu_queues(struct hl_device *hdev, u32 cpu_timeout) irq_handler_offset = prop->gic_interrupts_enable ? mmGIC_DISTRIBUTOR__5_GICD_SETSPI_NSR : - le32_to_cpu(dyn_regs->gic_host_irq_ctrl); + le32_to_cpu(dyn_regs->gic_host_pi_upd_irq); WREG32(irq_handler_offset, GAUDI_EVENT_PI_UPDATE); @@ -4148,7 +4148,7 @@ static void gaudi_hw_fini(struct hl_device *hdev, bool hard_reset) if (hdev->fw_loader.linux_loaded) { irq_handler_offset = hdev->asic_prop.gic_interrupts_enable ? mmGIC_DISTRIBUTOR__5_GICD_SETSPI_NSR : - le32_to_cpu(dyn_regs->gic_host_irq_ctrl); + le32_to_cpu(dyn_regs->gic_host_halt_irq); WREG32(irq_handler_offset, GAUDI_EVENT_HALT_MACHINE); } else { @@ -4681,7 +4681,7 @@ static void gaudi_ring_doorbell(struct hl_device *hdev, u32 hw_queue_id, u32 pi) irq_handler_offset = hdev->asic_prop.gic_interrupts_enable ? mmGIC_DISTRIBUTOR__5_GICD_SETSPI_NSR : - le32_to_cpu(dyn_regs->gic_host_irq_ctrl); + le32_to_cpu(dyn_regs->gic_host_pi_upd_irq); WREG32(irq_handler_offset, GAUDI_EVENT_PI_UPDATE); } @@ -8909,7 +8909,7 @@ static void gaudi_enable_events_from_fw(struct hl_device *hdev) &hdev->fw_loader.dynamic_loader.comm_desc.cpu_dyn_regs; u32 irq_handler_offset = hdev->asic_prop.gic_interrupts_enable ? mmGIC_DISTRIBUTOR__5_GICD_SETSPI_NSR : - le32_to_cpu(dyn_regs->gic_host_irq_ctrl); + le32_to_cpu(dyn_regs->gic_host_ints_irq); WREG32(irq_handler_offset, GAUDI_EVENT_INTS_REGISTER); } |