Message ID | 20200102180830.66676-2-liran.alon@oracle.com |
---|---|
State | Changes Requested |
Delegated to: | David Miller |
Headers | show |
Series | net: AWS ENA: Fix memory barrier usage when using LLQ | expand |
Ping on merging this patch (Patch 2/2 of series should be dropped). -Liran > On 2 Jan 2020, at 20:08, Liran Alon <liran.alon@oracle.com> wrote: > > Current code executes wmb() in order to flush writes to bounce buffer > before copying it to device-memory (PCI BAR mapped as WC) to ensure > consistent data is written to device-memory. > > However, this wmb() is unnecessary. This is because all reads from the > buffer are guaranteed to be consistent with previous writes to the buffer > done from the same task (Which is the only one that writes to the buffer). > > i.e. If a single CPU runs both the writes to the buffer and the reads > from the buffer, the reads are guaranteed to read most up-to-date data > in program order (E.g. Due to store-to-load-forwarding mechanism). > Otherwise, there is a context-switch, and that should make writes before > context-switch globally visible as-well. > > Reviewed-by: Håkon Bugge <haakon.bugge@oracle.com> > Signed-off-by: Liran Alon <liran.alon@oracle.com> > --- > drivers/net/ethernet/amazon/ena/ena_eth_com.c | 5 ----- > 1 file changed, 5 deletions(-) > > diff --git a/drivers/net/ethernet/amazon/ena/ena_eth_com.c b/drivers/net/ethernet/amazon/ena/ena_eth_com.c > index 2845ac277724..742578ac1240 100644 > --- a/drivers/net/ethernet/amazon/ena/ena_eth_com.c > +++ b/drivers/net/ethernet/amazon/ena/ena_eth_com.c > @@ -93,11 +93,6 @@ static int ena_com_write_bounce_buffer_to_dev(struct ena_com_io_sq *io_sq, > io_sq->qid, io_sq->entries_in_tx_burst_left); > } > > - /* Make sure everything was written into the bounce buffer before > - * writing the bounce buffer to the device > - */ > - wmb(); > - > /* The line is completed. Copy it to dev */ > __iowrite64_copy(io_sq->desc_addr.pbuf_dev_addr + dst_offset, > bounce_buffer, (llq_info->desc_list_entry_size) / 8); > -- > 2.20.1 >
diff --git a/drivers/net/ethernet/amazon/ena/ena_eth_com.c b/drivers/net/ethernet/amazon/ena/ena_eth_com.c index 2845ac277724..742578ac1240 100644 --- a/drivers/net/ethernet/amazon/ena/ena_eth_com.c +++ b/drivers/net/ethernet/amazon/ena/ena_eth_com.c @@ -93,11 +93,6 @@ static int ena_com_write_bounce_buffer_to_dev(struct ena_com_io_sq *io_sq, io_sq->qid, io_sq->entries_in_tx_burst_left); } - /* Make sure everything was written into the bounce buffer before - * writing the bounce buffer to the device - */ - wmb(); - /* The line is completed. Copy it to dev */ __iowrite64_copy(io_sq->desc_addr.pbuf_dev_addr + dst_offset, bounce_buffer, (llq_info->desc_list_entry_size) / 8);