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