[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[PULL 12/43] hw/block/nvme: refactor nvme_addr_read
From: |
Kevin Wolf |
Subject: |
[PULL 12/43] hw/block/nvme: refactor nvme_addr_read |
Date: |
Wed, 17 Jun 2020 16:48:38 +0200 |
From: Klaus Jensen <k.jensen@samsung.com>
Pull the controller memory buffer check to its own function. The check
will be used on its own in later patches.
Signed-off-by: Klaus Jensen <k.jensen@samsung.com>
Reviewed-by: Philippe Mathieu-Daudé <philmd@redhat.com>
Reviewed-by: Maxim Levitsky <mlevitsk@redhat.com>
Reviewed-by: Keith Busch <kbusch@kernel.org>
Message-Id: <20200609190333.59390-7-its@irrelevant.dk>
Signed-off-by: Kevin Wolf <kwolf@redhat.com>
---
hw/block/nvme.c | 16 ++++++++++++----
1 file changed, 12 insertions(+), 4 deletions(-)
diff --git a/hw/block/nvme.c b/hw/block/nvme.c
index 2a26b8859a..d6fcf078a4 100644
--- a/hw/block/nvme.c
+++ b/hw/block/nvme.c
@@ -65,14 +65,22 @@
static void nvme_process_sq(void *opaque);
+static bool nvme_addr_is_cmb(NvmeCtrl *n, hwaddr addr)
+{
+ hwaddr low = n->ctrl_mem.addr;
+ hwaddr hi = n->ctrl_mem.addr + int128_get64(n->ctrl_mem.size);
+
+ return addr >= low && addr < hi;
+}
+
static void nvme_addr_read(NvmeCtrl *n, hwaddr addr, void *buf, int size)
{
- if (n->cmbsz && addr >= n->ctrl_mem.addr &&
- addr < (n->ctrl_mem.addr + int128_get64(n->ctrl_mem.size))) {
+ if (n->cmbsz && nvme_addr_is_cmb(n, addr)) {
memcpy(buf, (void *)&n->cmbuf[addr - n->ctrl_mem.addr], size);
- } else {
- pci_dma_read(&n->parent_obj, addr, buf, size);
+ return;
}
+
+ pci_dma_read(&n->parent_obj, addr, buf, size);
}
static int nvme_check_sqid(NvmeCtrl *n, uint16_t sqid)
--
2.25.4
- [PULL 00/43] Block layer patches, Kevin Wolf, 2020/06/17
- [PULL 01/43] hw/ide: Make IDEDMAOps handlers take a const IDEDMA pointer, Kevin Wolf, 2020/06/17
- [PULL 04/43] virtio-blk: On restart, process queued requests in the proper context, Kevin Wolf, 2020/06/17
- [PULL 03/43] virtio-blk: Refactor the code that processes queued requests, Kevin Wolf, 2020/06/17
- [PULL 02/43] icount: make dma reads deterministic, Kevin Wolf, 2020/06/17
- [PULL 06/43] qcow2: Tweak comments on qcow2_get_persistent_dirty_bitmap_size, Kevin Wolf, 2020/06/17
- [PULL 05/43] block: Refactor subdirectory recursion during make, Kevin Wolf, 2020/06/17
- [PULL 07/43] hw/block/nvme: fix pci doorbell size calculation, Kevin Wolf, 2020/06/17
- [PULL 09/43] hw/block/nvme: remove superfluous breaks, Kevin Wolf, 2020/06/17
- [PULL 10/43] hw/block/nvme: move device parameters to separate struct, Kevin Wolf, 2020/06/17
- [PULL 12/43] hw/block/nvme: refactor nvme_addr_read,
Kevin Wolf <=
- [PULL 13/43] hw/block/nvme: fix pin-based interrupt behavior, Kevin Wolf, 2020/06/17
- [PULL 08/43] hw/block/nvme: rename trace events to pci_nvme, Kevin Wolf, 2020/06/17
- [PULL 16/43] hw/block/nvme: factor out property/constraint checks, Kevin Wolf, 2020/06/17
- [PULL 15/43] hw/block/nvme: remove redundant cmbloc/cmbsz members, Kevin Wolf, 2020/06/17
- [PULL 11/43] hw/block/nvme: use constants in identify, Kevin Wolf, 2020/06/17
- [PULL 17/43] hw/block/nvme: factor out device state setup, Kevin Wolf, 2020/06/17
- [PULL 14/43] hw/block/nvme: add max_ioqpairs device parameter, Kevin Wolf, 2020/06/17
- [PULL 18/43] hw/block/nvme: factor out block backend setup, Kevin Wolf, 2020/06/17
- [PULL 19/43] hw/block/nvme: add namespace helpers, Kevin Wolf, 2020/06/17
- [PULL 20/43] hw/block/nvme: factor out namespace setup, Kevin Wolf, 2020/06/17