aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/misc/habanalabs/include
diff options
context:
space:
mode:
authorBen Segal <bpsegal20@gmail.com>2019-08-01 23:20:32 +0000
committerOded Gabbay <oded.gabbay@gmail.com>2019-08-12 09:01:10 +0300
commit213ad5ad016a0da975b35f54e8cd236c3b04724b (patch)
treea86289aa7e499be88a265dfe4918fca3bbb27ca9 /drivers/misc/habanalabs/include
parenthabanalabs: fix DRAM usage accounting on context tear down (diff)
downloadlinux-dev-213ad5ad016a0da975b35f54e8cd236c3b04724b.tar.xz
linux-dev-213ad5ad016a0da975b35f54e8cd236c3b04724b.zip
habanalabs: fix endianness handling for packets from user
Packets that arrive from the user and need to be parsed by the driver are assumed to be in LE format. This patch fix all the places where the code handles these packets and use the correct endianness macros to handle them, as the driver handles the packets in CPU format (LE or BE depending on the arch). Signed-off-by: Ben Segal <bpsegal20@gmail.com> Reviewed-by: Oded Gabbay <oded.gabbay@gmail.com> Signed-off-by: Oded Gabbay <oded.gabbay@gmail.com>
Diffstat (limited to 'drivers/misc/habanalabs/include')
-rw-r--r--drivers/misc/habanalabs/include/goya/goya_packets.h13
1 files changed, 13 insertions, 0 deletions
diff --git a/drivers/misc/habanalabs/include/goya/goya_packets.h b/drivers/misc/habanalabs/include/goya/goya_packets.h
index a14407b975e4..ef54bad20509 100644
--- a/drivers/misc/habanalabs/include/goya/goya_packets.h
+++ b/drivers/misc/habanalabs/include/goya/goya_packets.h
@@ -52,6 +52,19 @@ enum goya_dma_direction {
#define GOYA_PKT_CTL_MB_SHIFT 31
#define GOYA_PKT_CTL_MB_MASK 0x80000000
+/* All packets have, at least, an 8-byte header, which contains
+ * the packet type. The kernel driver uses the packet header for packet
+ * validation and to perform any necessary required preparation before
+ * sending them off to the hardware.
+ */
+struct goya_packet {
+ __le64 header;
+ /* The rest of the packet data follows. Use the corresponding
+ * packet_XXX struct to deference the data, based on packet type
+ */
+ u8 contents[0];
+};
+
struct packet_nop {
__le32 reserved;
__le32 ctl;