Index: sys/dev/nvme/nvme_private.h =================================================================== --- sys/dev/nvme/nvme_private.h (revision 338687) +++ sys/dev/nvme/nvme_private.h (working copy) @@ -331,13 +333,17 @@ #define nvme_mmio_offsetof(reg) \ offsetof(struct nvme_registers, reg) -#define nvme_mmio_read_4(sc, reg) \ +#define nvme_mmio_read_4(sc, reg) ({ \ + bus_space_barrier((sc)->bus_tag, (sc)->bus_handle, \ + nvme_mmio_offsetof(reg), 4, BUS_SPACE_BARRIER_READ); \ bus_space_read_4((sc)->bus_tag, (sc)->bus_handle, \ - nvme_mmio_offsetof(reg)) + nvme_mmio_offsetof(reg)); }) #define nvme_mmio_write_4(sc, reg, val) \ bus_space_write_4((sc)->bus_tag, (sc)->bus_handle, \ - nvme_mmio_offsetof(reg), val) + nvme_mmio_offsetof(reg), val); \ + bus_space_barrier((sc)->bus_tag, (sc)->bus_handle, \ + nvme_mmio_offsetof(reg), 4, BUS_SPACE_BARRIER_WRITE) #define nvme_mmio_write_8(sc, reg, val) \ do { \ @@ -346,6 +352,8 @@ bus_space_write_4((sc)->bus_tag, (sc)->bus_handle, \ nvme_mmio_offsetof(reg)+4, \ (val & 0xFFFFFFFF00000000ULL) >> 32); \ + bus_space_barrier((sc)->bus_tag, (sc)->bus_handle, \ + nvme_mmio_offsetof(reg), 8, BUS_SPACE_BARRIER_WRITE); \ } while (0); #if __FreeBSD_version < 800054