uapi/habanalabs: add missing fields in bmon params
authorOded Gabbay <oded.gabbay@gmail.com>
Sun, 21 Apr 2019 13:20:46 +0000 (16:20 +0300)
committerOded Gabbay <oded.gabbay@gmail.com>
Sun, 21 Apr 2019 13:20:46 +0000 (16:20 +0300)
This patch adds missing fields of start address 0 and 1 in the bmon
parameter structure that is received from the user in the debug IOCTL.

Without these fields, the functionality of the bmon trace is broken,
because there is no configuration of the base address of the filter of the
bus monitor.

Signed-off-by: Oded Gabbay <oded.gabbay@gmail.com>
drivers/misc/habanalabs/goya/goya_coresight.c
include/uapi/misc/habanalabs.h

index 68726fb4c56a8f92bcd4f4b08c1006f086311c31..1ac951f52d1ebe77322b95e338efb60e8ec17fa0 100644 (file)
@@ -459,10 +459,14 @@ static int goya_config_bmon(struct hl_device *hdev,
                if (!input)
                        return -EINVAL;
 
-               WREG32(base_reg + 0x208, lower_32_bits(input->addr_range0));
-               WREG32(base_reg + 0x20C, upper_32_bits(input->addr_range0));
-               WREG32(base_reg + 0x248, lower_32_bits(input->addr_range1));
-               WREG32(base_reg + 0x24C, upper_32_bits(input->addr_range1));
+               WREG32(base_reg + 0x200, lower_32_bits(input->start_addr0));
+               WREG32(base_reg + 0x204, upper_32_bits(input->start_addr0));
+               WREG32(base_reg + 0x208, lower_32_bits(input->addr_mask0));
+               WREG32(base_reg + 0x20C, upper_32_bits(input->addr_mask0));
+               WREG32(base_reg + 0x240, lower_32_bits(input->start_addr1));
+               WREG32(base_reg + 0x244, upper_32_bits(input->start_addr1));
+               WREG32(base_reg + 0x248, lower_32_bits(input->addr_mask1));
+               WREG32(base_reg + 0x24C, upper_32_bits(input->addr_mask1));
                WREG32(base_reg + 0x224, 0);
                WREG32(base_reg + 0x234, 0);
                WREG32(base_reg + 0x30C, input->bw_win);
@@ -482,8 +486,12 @@ static int goya_config_bmon(struct hl_device *hdev,
                WREG32(base_reg + 0x100, 0x11);
                WREG32(base_reg + 0x304, 0x1);
        } else {
+               WREG32(base_reg + 0x200, 0);
+               WREG32(base_reg + 0x204, 0);
                WREG32(base_reg + 0x208, 0xFFFFFFFF);
                WREG32(base_reg + 0x20C, 0xFFFFFFFF);
+               WREG32(base_reg + 0x240, 0);
+               WREG32(base_reg + 0x244, 0);
                WREG32(base_reg + 0x248, 0xFFFFFFFF);
                WREG32(base_reg + 0x24C, 0xFFFFFFFF);
                WREG32(base_reg + 0x224, 0xFFFFFFFF);
index 613d431da783d6bd7bca909cd0d8d8fe5570dc8a..8ac292cf4d008855d029e8ac8833203bd8296589 100644 (file)
@@ -374,9 +374,12 @@ struct hl_debug_params_stm {
 };
 
 struct hl_debug_params_bmon {
-       /* Transaction address filter */
-       __u64 addr_range0;
-       __u64 addr_range1;
+       /* Two address ranges that the user can request to filter */
+       __u64 start_addr0;
+       __u64 addr_mask0;
+
+       __u64 start_addr1;
+       __u64 addr_mask1;
 
        /* Capture window configuration */
        __u32 bw_win;