habanalabs: block WREG_BULK packet on PDMA
authorOded Gabbay <oded.gabbay@gmail.com>
Fri, 3 Jul 2020 16:28:54 +0000 (19:28 +0300)
committerOded Gabbay <oded.gabbay@gmail.com>
Fri, 10 Jul 2020 16:53:03 +0000 (19:53 +0300)
WREG_BULK is a special packet that has a variable length. Therefore, we
can't parse it when validating CBs that go to the PCI DMA queue. In case
the user needs to use it, it can put multiple WREG32 packets instead.

Signed-off-by: Oded Gabbay <oded.gabbay@gmail.com>
Reviewed-by: Omer Shpigelman <oshpigelman@habana.ai>
drivers/misc/habanalabs/gaudi/gaudi.c

index 834470d10b46bb5e800517dc0724adb34686e5df..e22206527164751fce1b91bc00367e1f55d06fb1 100644 (file)
@@ -3865,6 +3865,12 @@ static int gaudi_validate_cb(struct hl_device *hdev,
                        rc = -EPERM;
                        break;
 
+               case PACKET_WREG_BULK:
+                       dev_err(hdev->dev,
+                               "User not allowed to use WREG_BULK\n");
+                       rc = -EPERM;
+                       break;
+
                case PACKET_LOAD_AND_EXE:
                        rc = gaudi_validate_load_and_exe_pkt(hdev, parser,
                                (struct packet_load_and_exe *) user_pkt);
@@ -3880,7 +3886,6 @@ static int gaudi_validate_cb(struct hl_device *hdev,
                        break;
 
                case PACKET_WREG_32:
-               case PACKET_WREG_BULK:
                case PACKET_MSG_LONG:
                case PACKET_MSG_SHORT:
                case PACKET_REPEAT: