diff options
author | Luo bin <luobin9@huawei.com> | 2020-03-20 23:13:18 +0000 |
---|---|---|
committer | David S. Miller <davem@davemloft.net> | 2020-03-21 19:43:38 -0700 |
commit | 33f15da216a1f4566b4ec880942556ace30615df (patch) | |
tree | d5404ae2b8b6dfbfbec4c83b47076b66f6b5b356 /drivers/net/ethernet/huawei/hinic/hinic_hw_eqs.c | |
parent | 614eaa943e9fc3fcdbd4aa0692ae84973d363333 (diff) |
hinic: fix out-of-order excution in arm cpu
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>
Diffstat (limited to 'drivers/net/ethernet/huawei/hinic/hinic_hw_eqs.c')
-rw-r--r-- | drivers/net/ethernet/huawei/hinic/hinic_hw_eqs.c | 2 |
1 files changed, 2 insertions, 0 deletions
diff --git a/drivers/net/ethernet/huawei/hinic/hinic_hw_eqs.c b/drivers/net/ethernet/huawei/hinic/hinic_hw_eqs.c index 6a723c4757bc..c0b6bcb067cd 100644 --- a/drivers/net/ethernet/huawei/hinic/hinic_hw_eqs.c +++ b/drivers/net/ethernet/huawei/hinic/hinic_hw_eqs.c @@ -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); |