mirror of
https://github.com/BobTheBlinker/android_kernel_motorola_sm6375.git
synced 2026-10-08 04:42:04 -04:00
hinic: fix out-of-order excution in arm cpu
[ Upstream commit 33f15da216a1f4566b4ec880942556ace30615df ] add read barrier in driver code to keep from reading other fileds in dma memory which is writable for hw until we have verified the memory is valid for driver Signed-off-by: Luo bin <luobin9@huawei.com> Signed-off-by: David S. Miller <davem@davemloft.net> Signed-off-by: Sasha Levin <sashal@kernel.org>
This commit is contained in:
parent
5edd115ba0
commit
243ebc24e0
4 changed files with 9 additions and 0 deletions
|
|
@ -623,6 +623,8 @@ static int cmdq_cmd_ceq_handler(struct hinic_cmdq *cmdq, u16 ci,
|
|||
if (!CMDQ_WQE_COMPLETED(be32_to_cpu(ctrl->ctrl_info)))
|
||||
return -EBUSY;
|
||||
|
||||
dma_rmb();
|
||||
|
||||
errcode = CMDQ_WQE_ERRCODE_GET(be32_to_cpu(status->status_info), VAL);
|
||||
|
||||
cmdq_sync_cmd_handler(cmdq, ci, errcode);
|
||||
|
|
|
|||
|
|
@ -235,6 +235,8 @@ static void aeq_irq_handler(struct hinic_eq *eq)
|
|||
if (HINIC_EQ_ELEM_DESC_GET(aeqe_desc, WRAPPED) == eq->wrapped)
|
||||
break;
|
||||
|
||||
dma_rmb();
|
||||
|
||||
event = HINIC_EQ_ELEM_DESC_GET(aeqe_desc, TYPE);
|
||||
if (event >= HINIC_MAX_AEQ_EVENTS) {
|
||||
dev_err(&pdev->dev, "Unknown AEQ Event %d\n", event);
|
||||
|
|
|
|||
|
|
@ -350,6 +350,9 @@ static int rxq_recv(struct hinic_rxq *rxq, int budget)
|
|||
if (!rq_wqe)
|
||||
break;
|
||||
|
||||
/* make sure we read rx_done before packet length */
|
||||
dma_rmb();
|
||||
|
||||
cqe = rq->cqe[ci];
|
||||
status = be32_to_cpu(cqe->status);
|
||||
hinic_rq_get_sge(rxq->rq, rq_wqe, ci, &sge);
|
||||
|
|
|
|||
|
|
@ -622,6 +622,8 @@ static int free_tx_poll(struct napi_struct *napi, int budget)
|
|||
do {
|
||||
hw_ci = HW_CONS_IDX(sq) & wq->mask;
|
||||
|
||||
dma_rmb();
|
||||
|
||||
/* Reading a WQEBB to get real WQE size and consumer index. */
|
||||
sq_wqe = hinic_sq_read_wqebb(sq, &skb, &wqe_size, &sw_ci);
|
||||
if ((!sq_wqe) ||
|
||||
|
|
|
|||
Loading…
Reference in a new issue