On 1/12/2017 9:17 AM, Jerin Jacob wrote: <...> > #define B_CP_DB_REARM(cpr, raw_cons) \ > - (*(uint32_t *)((cpr)->cp_doorbell) = (DB_CP_REARM_FLAGS | \ > - RING_CMP(cpr->cp_ring_struct, raw_cons))) > + rte_write32((DB_CP_REARM_FLAGS | \
Just asking, can this be rte_write32_relaxed() since there is explicit memory barrier defined for B_CP_DIS_DB but not for here? > + RING_CMP(((cpr)->cp_ring_struct), raw_cons)), \ > + ((cpr)->cp_doorbell)) > > #define B_CP_DIS_DB(cpr, raw_cons) \ > - rte_smp_wmb(); \ > - (*(uint32_t *)((cpr)->cp_doorbell) = (DB_CP_FLAGS | \ > - RING_CMP(cpr->cp_ring_struct, raw_cons))) > + rte_write32((DB_CP_FLAGS | \ > + RING_CMP(((cpr)->cp_ring_struct), raw_cons)), \ > + ((cpr)->cp_doorbell)) > <...> > @@ -80,11 +82,12 @@ static int bnxt_hwrm_send_message_locked(struct bnxt *bp, > void *msg, > for (; i < bp->max_req_len; i += 4) { > bar = (uint8_t *)bp->bar0 + i; > *(volatile uint32_t *)bar = 0; Should this line be removed? > + rte_write32(0, bar); > } > > /* Ring channel doorbell */ > bar = (uint8_t *)bp->bar0 + 0x100; > - *(volatile uint32_t *)bar = 1; > + rte_write32(1, bar); > > /* Poll for the valid bit */ > for (i = 0; i < HWRM_CMD_TIMEOUT; i++) { <...>