svn commit: r185255 - head/sys/dev/mxge
Matthew Macy
mat.macy at gmail.com
Mon Nov 24 12:40:03 PST 2008
Sorry about that. There are about half a dozen different drivers with
their own definitions. Since you use Linux naming I overlooked the
fact that you defined it differently.
-Kip
On Mon, Nov 24, 2008 at 7:00 PM, Andrew Gallatin <gallatin at freebsd.org> wrote:
> Author: gallatin
> Date: Mon Nov 24 19:00:57 2008
> New Revision: 185255
> URL: http://svn.freebsd.org/changeset/base/185255
>
> Log:
> Restore sfence semantics in mxge after the introduction
> of a global mfence based mb() in r185162
>
> Modified:
> head/sys/dev/mxge/if_mxge.c
> head/sys/dev/mxge/if_mxge_var.h
>
> Modified: head/sys/dev/mxge/if_mxge.c
> ==============================================================================
> --- head/sys/dev/mxge/if_mxge.c Mon Nov 24 17:39:39 2008 (r185254)
> +++ head/sys/dev/mxge/if_mxge.c Mon Nov 24 19:00:57 2008 (r185255)
> @@ -731,9 +731,9 @@ mxge_load_firmware_helper(mxge_softc_t *
> mxge_pio_copy(sc->sram + MXGE_FW_OFFSET + i,
> inflate_buffer + i,
> min(256U, (unsigned)(fw_len - i)));
> - mb();
> + wmb();
> dummy = *sc->sram;
> - mb();
> + wmb();
> }
>
> *limit = fw_len;
> @@ -766,7 +766,7 @@ mxge_dummy_rdma(mxge_softc_t *sc, int en
> /* clear confirmation addr */
> confirm = (volatile uint32_t *)sc->cmd;
> *confirm = 0;
> - mb();
> + wmb();
>
> /* send an rdma command to the PCIe engine, and wait for the
> response in the confirmation address. The firmware should
> @@ -788,9 +788,9 @@ mxge_dummy_rdma(mxge_softc_t *sc, int en
> submit = (volatile char *)(sc->sram + MXGEFW_BOOT_DUMMY_RDMA);
>
> mxge_pio_copy(submit, buf, 64);
> - mb();
> + wmb();
> DELAY(1000);
> - mb();
> + wmb();
> i = 0;
> while (*confirm != 0xffffffff && i < 20) {
> DELAY(1000);
> @@ -828,7 +828,7 @@ mxge_send_cmd(mxge_softc_t *sc, uint32_t
> buf->response_addr.high = htobe32(dma_high);
> mtx_lock(&sc->cmd_mtx);
> response->result = 0xffffffff;
> - mb();
> + wmb();
> mxge_pio_copy((volatile void *)cmd_addr, buf, sizeof (*buf));
>
> /* wait up to 20ms */
> @@ -836,7 +836,7 @@ mxge_send_cmd(mxge_softc_t *sc, uint32_t
> for (sleep_total = 0; sleep_total < 20; sleep_total++) {
> bus_dmamap_sync(sc->cmd_dma.dmat,
> sc->cmd_dma.map, BUS_DMASYNC_POSTREAD);
> - mb();
> + wmb();
> switch (be32toh(response->result)) {
> case 0:
> data->data0 = be32toh(response->data);
> @@ -964,7 +964,7 @@ mxge_load_firmware(mxge_softc_t *sc, int
> /* clear confirmation addr */
> confirm = (volatile uint32_t *)sc->cmd;
> *confirm = 0;
> - mb();
> + wmb();
> /* send a reload command to the bootstrap MCP, and wait for the
> response in the confirmation address. The firmware should
> write a -1 there to indicate it is alive and well
> @@ -989,9 +989,9 @@ mxge_load_firmware(mxge_softc_t *sc, int
>
> submit = (volatile char *)(sc->sram + MXGEFW_BOOT_HANDOFF);
> mxge_pio_copy(submit, buf, 64);
> - mb();
> + wmb();
> DELAY(1000);
> - mb();
> + wmb();
> i = 0;
> while (*confirm != 0xffffffff && i < 20) {
> DELAY(1000*10);
> @@ -1652,7 +1652,7 @@ mxge_submit_req_backwards(mxge_tx_ring_t
> idx = (starting_slot + cnt) & tx->mask;
> mxge_pio_copy(&tx->lanai[idx],
> &src[cnt], sizeof(*src));
> - mb();
> + wmb();
> }
> }
>
> @@ -1678,14 +1678,14 @@ mxge_submit_req(mxge_tx_ring_t *tx, mcp_
>
> last_flags = src->flags;
> src->flags = 0;
> - mb();
> + wmb();
> dst = dstp = &tx->lanai[idx];
> srcp = src;
>
> if ((idx + cnt) < tx->mask) {
> for (i = 0; i < (cnt - 1); i += 2) {
> mxge_pio_copy(dstp, srcp, 2 * sizeof(*src));
> - mb(); /* force write every 32 bytes */
> + wmb(); /* force write every 32 bytes */
> srcp += 2;
> dstp += 2;
> }
> @@ -1698,7 +1698,7 @@ mxge_submit_req(mxge_tx_ring_t *tx, mcp_
> if (i < cnt) {
> /* submit the first request */
> mxge_pio_copy(dstp, srcp, sizeof(*src));
> - mb(); /* barrier before setting valid flag */
> + wmb(); /* barrier before setting valid flag */
> }
>
> /* re-write the last 32-bits with the valid flags */
> @@ -1709,7 +1709,7 @@ mxge_submit_req(mxge_tx_ring_t *tx, mcp_
> dst_ints+=3;
> *dst_ints = *src_ints;
> tx->req += cnt;
> - mb();
> + wmb();
> }
>
> #if IFCAP_TSO4
> @@ -2128,12 +2128,12 @@ mxge_submit_8rx(volatile mcp_kreq_ether_
> low = src->addr_low;
> src->addr_low = 0xffffffff;
> mxge_pio_copy(dst, src, 4 * sizeof (*src));
> - mb();
> + wmb();
> mxge_pio_copy(dst + 4, src + 4, 4 * sizeof (*src));
> - mb();
> + wmb();
> src->addr_low = low;
> dst->addr_low = low;
> - mb();
> + wmb();
> }
>
> static int
> @@ -2688,7 +2688,7 @@ mxge_intr(void *arg)
> send_done_count = be32toh(stats->send_done_count);
> }
> if (sc->legacy_irq && mxge_deassert_wait)
> - mb();
> + wmb();
> } while (*((volatile uint8_t *) &stats->valid));
>
> if (__predict_false(stats->stats_updated)) {
> @@ -3337,7 +3337,7 @@ mxge_close(mxge_softc_t *sc)
> callout_stop(&sc->co_hdl);
> sc->ifp->if_drv_flags &= ~IFF_DRV_RUNNING;
> old_down_cnt = sc->down_cnt;
> - mb();
> + wmb();
> err = mxge_send_cmd(sc, MXGEFW_CMD_ETHERNET_DOWN, &cmd);
> if (err) {
> device_printf(sc->dev, "Couldn't bring down link\n");
> @@ -3346,7 +3346,7 @@ mxge_close(mxge_softc_t *sc)
> /* wait for down irq */
> DELAY(10 * sc->intr_coal_delay);
> }
> - mb();
> + wmb();
> if (old_down_cnt == sc->down_cnt) {
> device_printf(sc->dev, "never got down irq\n");
> }
>
> Modified: head/sys/dev/mxge/if_mxge_var.h
> ==============================================================================
> --- head/sys/dev/mxge/if_mxge_var.h Mon Nov 24 17:39:39 2008 (r185254)
> +++ head/sys/dev/mxge/if_mxge_var.h Mon Nov 24 19:00:57 2008 (r185255)
> @@ -283,13 +283,13 @@ struct mxge_media_type
>
> #if defined (__GNUC__)
> #if #cpu(i386) || defined __i386 || defined i386 || defined __i386__ || #cpu(x86_64) || defined __x86_64__
> - #define mb() __asm__ __volatile__ ("sfence;": : :"memory")
> + #define wmb() __asm__ __volatile__ ("sfence;": : :"memory")
> #elif #cpu(sparc64) || defined sparc64 || defined __sparcv9
> - #define mb() __asm__ __volatile__ ("membar #MemIssue": : :"memory")
> + #define wmb() __asm__ __volatile__ ("membar #MemIssue": : :"memory")
> #elif #cpu(sparc) || defined sparc || defined __sparc__
> - #define mb() __asm__ __volatile__ ("stbar;": : :"memory")
> + #define wmb() __asm__ __volatile__ ("stbar;": : :"memory")
> #else
> - #define mb() /* XXX just to make this compile */
> + #define wmb() /* XXX just to make this compile */
> #endif
> #else
> #error "unknown compiler"
>
--
If we desire respect for the law, we must first make the law respectable.
- Louis D. Brandeis
More information about the svn-src-all
mailing list