From 3edc4db7a76830e4b3edc4004f6466bb061eb0b3 Mon Sep 17 00:00:00 2001 From: Darek Stojaczyk Date: Mon, 7 Jan 2019 11:38:39 +0100 Subject: [PATCH] env: move VALUE_2MB defines into a new internal header We use those values in various places in SPDK, so let's define them in a single place now. Change-Id: Iad9a5745d69166a6e6032370d4e5a0e604914e45 Signed-off-by: Darek Stojaczyk Reviewed-on: https://review.gerrithub.io/c/439369 Tested-by: SPDK CI Jenkins Chandler-Test-Pool: SPDK Automated Test System Reviewed-by: Jim Harris Reviewed-by: Shuhei Matsumoto --- include/spdk_internal/memory.h | 58 ++++++++++++++++++++++++++++++++++ lib/env_dpdk/env_internal.h | 8 ----- lib/env_dpdk/memory.c | 3 +- lib/env_dpdk/vtophys.c | 1 + lib/ioat/ioat.c | 4 +-- lib/nvme/nvme_pcie.c | 4 +-- lib/vhost/vhost.c | 5 ++- 7 files changed, 65 insertions(+), 18 deletions(-) create mode 100644 include/spdk_internal/memory.h diff --git a/include/spdk_internal/memory.h b/include/spdk_internal/memory.h new file mode 100644 index 000000000..5c8e2a2f1 --- /dev/null +++ b/include/spdk_internal/memory.h @@ -0,0 +1,58 @@ +/*- + * BSD LICENSE + * + * Copyright (c) Intel Corporation. + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in + * the documentation and/or other materials provided with the + * distribution. + * * Neither the name of Intel Corporation nor the names of its + * contributors may be used to endorse or promote products derived + * from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR + * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT + * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT + * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + +#ifndef SPDK_INTERNAL_MEMORY_H +#define SPDK_INTERNAL_MEMORY_H + +#include "spdk/stdinc.h" + +#ifdef __cplusplus +extern "C" { +#endif + +#define SHIFT_2MB 21 /* (1 << 21) == 2MB */ +#define MASK_2MB ((1ULL << SHIFT_2MB) - 1) +#define VALUE_2MB (1 << SHIFT_2MB) + +#define SHIFT_4KB 12 /* (1 << 12) == 4KB */ +#define MASK_4KB ((1ULL << SHIFT_4KB) - 1) +#define VALUE_4KB (1 << SHIFT_4KB) + +#define _2MB_OFFSET(ptr) (((uintptr_t)(ptr)) & (VALUE_2MB - 1)) +#define _2MB_PAGE(ptr) ((ptr) & ~(0x200000 - 1)) + +#ifdef __cplusplus +} +#endif + +#endif /* SPDK_INTERNAL_MEMORY_H */ diff --git a/lib/env_dpdk/env_internal.h b/lib/env_dpdk/env_internal.h index d5f816d75..526032e65 100644 --- a/lib/env_dpdk/env_internal.h +++ b/lib/env_dpdk/env_internal.h @@ -64,14 +64,6 @@ extern struct rte_pci_bus rte_pci_bus; #define SHIFT_1GB 30 /* (1 << 30) == 1 GB */ #define MASK_1GB ((1ULL << SHIFT_1GB) - 1) -#define SHIFT_2MB 21 /* (1 << 21) == 2MB */ -#define MASK_2MB ((1ULL << SHIFT_2MB) - 1) -#define VALUE_2MB (1 << SHIFT_2MB) - -#define SHIFT_4KB 12 /* (1 << 12) == 4KB */ -#define MASK_4KB ((1ULL << SHIFT_4KB) - 1) -#define VALUE_4KB (1 << SHIFT_4KB) - #define SPDK_PMD_REGISTER_PCI(pci_drv) \ __attribute__((constructor)) static void pci_drv ## _register(void) \ { \ diff --git a/lib/env_dpdk/memory.c b/lib/env_dpdk/memory.c index de00fdc00..1646a4f63 100644 --- a/lib/env_dpdk/memory.c +++ b/lib/env_dpdk/memory.c @@ -39,6 +39,7 @@ #include #include "spdk_internal/assert.h" +#include "spdk_internal/memory.h" #include "spdk/assert.h" #include "spdk/likely.h" @@ -57,8 +58,6 @@ #define MAP_256TB_IDX(vfn_2mb) ((vfn_2mb) >> (SHIFT_1GB - SHIFT_2MB)) #define MAP_1GB_IDX(vfn_2mb) ((vfn_2mb) & ((1ULL << (SHIFT_1GB - SHIFT_2MB)) - 1)) -#define _2MB_OFFSET(ptr) (((uintptr_t)(ptr)) & (VALUE_2MB - 1)) - /* Page is registered */ #define REG_MAP_REGISTERED (1ULL << 62) diff --git a/lib/env_dpdk/vtophys.c b/lib/env_dpdk/vtophys.c index e6ebff5ef..60b4d89af 100644 --- a/lib/env_dpdk/vtophys.c +++ b/lib/env_dpdk/vtophys.c @@ -39,6 +39,7 @@ #include #include "spdk_internal/assert.h" +#include "spdk_internal/memory.h" #include "spdk/assert.h" #include "spdk/likely.h" diff --git a/lib/ioat/ioat.c b/lib/ioat/ioat.c index 67ab5e02d..1d0fe4541 100644 --- a/lib/ioat/ioat.c +++ b/lib/ioat/ioat.c @@ -39,6 +39,7 @@ #include "spdk/util.h" #include "spdk_internal/log.h" +#include "spdk_internal/memory.h" struct ioat_driver { pthread_mutex_t lock; @@ -582,9 +583,6 @@ spdk_ioat_detach(struct spdk_ioat_chan *ioat) free(ioat); } -#define _2MB_PAGE(ptr) ((ptr) & ~(0x200000 - 1)) -#define _2MB_OFFSET(ptr) ((ptr) & (0x200000 - 1)) - int spdk_ioat_submit_copy(struct spdk_ioat_chan *ioat, void *cb_arg, spdk_ioat_req_cb cb_fn, void *dst, const void *src, uint64_t nbytes) diff --git a/lib/nvme/nvme_pcie.c b/lib/nvme/nvme_pcie.c index 94674f24f..6c31613d1 100644 --- a/lib/nvme/nvme_pcie.c +++ b/lib/nvme/nvme_pcie.c @@ -42,6 +42,8 @@ #include "nvme_internal.h" #include "nvme_uevent.h" +#include "spdk_internal/memory.h" + /* * Number of completion queue entries to process before ringing the * completion queue doorbell. @@ -1774,8 +1776,6 @@ nvme_pcie_qpair_build_contig_request(struct spdk_nvme_qpair *qpair, struct nvme_ return 0; } -#define _2MB_OFFSET(ptr) (((uintptr_t)(ptr)) & (0x200000 - 1)) - /** * Build SGL list describing scattered payload buffer. */ diff --git a/lib/vhost/vhost.c b/lib/vhost/vhost.c index e801f6dca..718ddfb36 100644 --- a/lib/vhost/vhost.c +++ b/lib/vhost/vhost.c @@ -38,10 +38,11 @@ #include "spdk/string.h" #include "spdk/util.h" #include "spdk/barrier.h" - #include "spdk/vhost.h" #include "vhost_internal.h" +#include "spdk_internal/memory.h" + static uint32_t *g_num_ctrlrs; /* Path to folder where character device will be created. Can be set by user. */ @@ -458,8 +459,6 @@ spdk_vhost_vring_desc_is_wr(struct vring_desc *cur_desc) return !!(cur_desc->flags & VRING_DESC_F_WRITE); } -#define _2MB_OFFSET(ptr) ((ptr) & (0x200000 - 1)) - int spdk_vhost_vring_desc_to_iov(struct spdk_vhost_session *vsession, struct iovec *iov, uint16_t *iov_index, const struct vring_desc *desc)