Module Name: src Committed By: msaitoh Date: Tue Dec 17 05:49:01 UTC 2019
Modified Files: src/sys/dev/pci/ixgbe: ixgbe.c ixgbe_osdep.c ixgbe_osdep.h ixv.c Log Message: Use bus_space_barrier() instead of x86 specific *fence instruction. Written by riastradh@. To generate a diff of this commit: cvs rdiff -u -r1.216 -r1.217 src/sys/dev/pci/ixgbe/ixgbe.c cvs rdiff -u -r1.5 -r1.6 src/sys/dev/pci/ixgbe/ixgbe_osdep.c cvs rdiff -u -r1.24 -r1.25 src/sys/dev/pci/ixgbe/ixgbe_osdep.h cvs rdiff -u -r1.142 -r1.143 src/sys/dev/pci/ixgbe/ixv.c Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files.
Modified files: Index: src/sys/dev/pci/ixgbe/ixgbe.c diff -u src/sys/dev/pci/ixgbe/ixgbe.c:1.216 src/sys/dev/pci/ixgbe/ixgbe.c:1.217 --- src/sys/dev/pci/ixgbe/ixgbe.c:1.216 Mon Nov 18 03:17:51 2019 +++ src/sys/dev/pci/ixgbe/ixgbe.c Tue Dec 17 05:49:01 2019 @@ -1,4 +1,4 @@ -/* $NetBSD: ixgbe.c,v 1.216 2019/11/18 03:17:51 msaitoh Exp $ */ +/* $NetBSD: ixgbe.c,v 1.217 2019/12/17 05:49:01 msaitoh Exp $ */ /****************************************************************************** @@ -4016,7 +4016,7 @@ ixgbe_init_locked(struct adapter *adapte else msec_delay(1); } - wmb(); + IXGBE_WRITE_BARRIER(hw); /* * In netmap mode, we must preserve the buffers made Index: src/sys/dev/pci/ixgbe/ixgbe_osdep.c diff -u src/sys/dev/pci/ixgbe/ixgbe_osdep.c:1.5 src/sys/dev/pci/ixgbe/ixgbe_osdep.c:1.6 --- src/sys/dev/pci/ixgbe/ixgbe_osdep.c:1.5 Mon Dec 16 02:50:54 2019 +++ src/sys/dev/pci/ixgbe/ixgbe_osdep.c Tue Dec 17 05:49:01 2019 @@ -1,4 +1,4 @@ -/* $NetBSD: ixgbe_osdep.c,v 1.5 2019/12/16 02:50:54 msaitoh Exp $ */ +/* $NetBSD: ixgbe_osdep.c,v 1.6 2019/12/17 05:49:01 msaitoh Exp $ */ /****************************************************************************** @@ -116,3 +116,12 @@ ixgbe_write_reg_array(struct ixgbe_hw *h ((struct adapter *)hw->back)->osdep.mem_bus_space_handle, reg + (offset << 2), val); } + +inline void +ixgbe_write_barrier(struct ixgbe_hw *hw) +{ + bus_space_barrier(((struct adapter *)hw->back)->osdep.mem_bus_space_tag, + ((struct adapter *)hw->back)->osdep.mem_bus_space_handle, + 0, ((struct adapter *)hw->back)->osdep.mem_size, + BUS_SPACE_BARRIER_WRITE); +} Index: src/sys/dev/pci/ixgbe/ixgbe_osdep.h diff -u src/sys/dev/pci/ixgbe/ixgbe_osdep.h:1.24 src/sys/dev/pci/ixgbe/ixgbe_osdep.h:1.25 --- src/sys/dev/pci/ixgbe/ixgbe_osdep.h:1.24 Mon Dec 16 02:50:54 2019 +++ src/sys/dev/pci/ixgbe/ixgbe_osdep.h Tue Dec 17 05:49:01 2019 @@ -1,4 +1,4 @@ -/* $NetBSD: ixgbe_osdep.h,v 1.24 2019/12/16 02:50:54 msaitoh Exp $ */ +/* $NetBSD: ixgbe_osdep.h,v 1.25 2019/12/17 05:49:01 msaitoh Exp $ */ /****************************************************************************** SPDX-License-Identifier: BSD-3-Clause @@ -157,18 +157,6 @@ typedef uint64_t u64; /* This device driver's max interrupt numbers. */ #define IXG_MAX_NINTR 64 -#if __FreeBSD_version < 800000 -#if defined(__i386__) || defined(__amd64__) -#define mb() __asm volatile("mfence" ::: "memory") -#define wmb() __asm volatile("sfence" ::: "memory") -#define rmb() __asm volatile("lfence" ::: "memory") -#else -#define mb() -#define rmb() -#define wmb() -#endif -#endif - #if defined(__i386__) || defined(__amd64__) static __inline void prefetch(void *x) @@ -241,4 +229,8 @@ extern void ixgbe_write_reg_array(struct #define IXGBE_WRITE_REG_ARRAY(a, reg, offset, val) \ ixgbe_write_reg_array(a, reg, offset, val) +extern void ixgbe_write_barrier(struct ixgbe_hw *); +#define IXGBE_WRITE_BARRIER(a) \ + ixgbe_write_barrier(a) + #endif /* _IXGBE_OSDEP_H_ */ Index: src/sys/dev/pci/ixgbe/ixv.c diff -u src/sys/dev/pci/ixgbe/ixv.c:1.142 src/sys/dev/pci/ixgbe/ixv.c:1.143 --- src/sys/dev/pci/ixgbe/ixv.c:1.142 Mon Dec 16 02:50:54 2019 +++ src/sys/dev/pci/ixgbe/ixv.c Tue Dec 17 05:49:01 2019 @@ -1,4 +1,4 @@ -/*$NetBSD: ixv.c,v 1.142 2019/12/16 02:50:54 msaitoh Exp $*/ +/*$NetBSD: ixv.c,v 1.143 2019/12/17 05:49:01 msaitoh Exp $*/ /****************************************************************************** @@ -1844,7 +1844,7 @@ ixv_initialize_receive_units(struct adap else break; } - wmb(); + IXGBE_WRITE_BARRIER(hw); /* Setup the Base and Length of the Rx Descriptor Ring */ IXGBE_WRITE_REG(hw, IXGBE_VFRDBAL(j), (rdba & 0x00000000ffffffffULL)); @@ -1876,7 +1876,7 @@ ixv_initialize_receive_units(struct adap break; msec_delay(1); } - wmb(); + IXGBE_WRITE_BARRIER(hw); /* Set the Tail Pointer */ #ifdef DEV_NETMAP