event/octeontx: introduce specialized mbox message copy
authorJerin Jacob <jerin.jacob@caviumnetworks.com>
Sun, 8 Oct 2017 12:44:07 +0000 (18:14 +0530)
committerFerruh Yigit <ferruh.yigit@intel.com>
Thu, 12 Oct 2017 00:36:57 +0000 (01:36 +0100)
Some of the internal toolchain versions create unaligned
memory access fault when copying from 17-31B buffer using memcpy.

Subsequent patches in this series will be using 17-31B mbox message.
Since the mailbox message copy comes in slow path, changing memcpy to
byte-per-byte copy to workaround the issue.

Signed-off-by: Jerin Jacob <jerin.jacob@caviumnetworks.com>
Signed-off-by: Santosh Shukla <santosh.shukla@caviumnetworks.com>
drivers/event/octeontx/ssovf_mbox.c

index 764414b..9ed417d 100644 (file)
@@ -87,6 +87,16 @@ struct mbox_ram_hdr {
        };
 };
 
+
+static inline void
+mbox_msgcpy(uint8_t *d, const uint8_t *s, uint16_t size)
+{
+       uint16_t i;
+
+       for (i = 0; i < size; i++)
+               d[i] = s[i];
+}
+
 static inline void
 mbox_send_request(struct mbox *m, struct octeontx_mbox_hdr *hdr,
                        const void *txmsg, uint16_t txsize)
@@ -106,7 +116,7 @@ mbox_send_request(struct mbox *m, struct octeontx_mbox_hdr *hdr,
 
        /* Copy msg body */
        if (txmsg)
-               memcpy(ram_mbox_msg, txmsg, txsize);
+               mbox_msgcpy(ram_mbox_msg, txmsg, txsize);
 
        /* Prepare new hdr */
        new_hdr.chan_state = MBOX_CHAN_STATE_REQ;
@@ -166,7 +176,7 @@ mbox_wait_response(struct mbox *m, struct octeontx_mbox_hdr *hdr,
 
        len = RTE_MIN(rx_hdr.len, rxsize);
        if (rxmsg)
-               memcpy(rxmsg, ram_mbox_msg, len);
+               mbox_msgcpy(rxmsg, ram_mbox_msg, len);
 
        return len;