* @host_base_address: host physical start address for host DMA from device
  * @host_end_address: host physical end address for host DMA from device
  * @max_freq_value: current max clk frequency.
+ * @engine_core_interrupt_reg_addr: interrupt register address for engine core to use
+ *                                  in order to raise events toward FW.
  * @clk_pll_index: clock PLL index that specify which PLL determines the clock
  *                 we display to the user
  * @mmu_pgt_size: MMU page tables total size.
        u64                             host_base_address;
        u64                             host_end_address;
        u64                             max_freq_value;
+       u64                             engine_core_interrupt_reg_addr;
        u32                             clk_pll_index;
        u32                             mmu_pgt_size;
        u32                             mmu_pte_size;
 
        hw_ip.server_type = prop->server_type;
        hw_ip.security_enabled = prop->fw_security_enabled;
        hw_ip.revision_id = hdev->pdev->revision;
+       hw_ip.engine_core_interrupt_reg_addr = prop->engine_core_interrupt_reg_addr;
 
        return copy_to_user(out, &hw_ip,
                min((size_t) size, sizeof(hw_ip))) ? -EFAULT : 0;
 
 
 static void gaudi2_init_arcs(struct hl_device *hdev)
 {
+       struct cpu_dyn_regs *dyn_regs = &hdev->fw_loader.dynamic_loader.comm_desc.cpu_dyn_regs;
        struct gaudi2_device *gaudi2 = hdev->asic_specific;
        u64 arc_id;
        u32 i;
 
                gaudi2_set_arc_id_cap(hdev, arc_id);
        }
+
+       /* Fetch ARC scratchpad address */
+       hdev->asic_prop.engine_core_interrupt_reg_addr =
+               CFG_BASE + le32_to_cpu(dyn_regs->eng_arc_irq_ctrl);
 }
 
 static int gaudi2_scrub_arc_dccm(struct hl_device *hdev, u32 cpu_id)
 
  *                             application to use. Relevant for Gaudi2 and later.
  * @device_mem_alloc_default_page_size: default page size used in device memory allocation.
  * @revision_id: PCI revision ID of the ASIC.
+ * @engine_core_interrupt_reg_addr: interrupt register address for engine core to use
+ *                                  in order to raise events toward FW.
  */
 struct hl_info_hw_ip_info {
        __u64 sram_base_address;
        __u8 reserved8;
        __u8 revision_id;
        __u8 pad[2];
+       __u32 reserved9;
+       __u8 pad3[4];
+       __u64 engine_core_interrupt_reg_addr;
 };
 
 struct hl_info_dram_usage {