[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[PATCH v6 06/20] hw/block/nvme: refactor nvme_addr_read
From: |
Klaus Jensen |
Subject: |
[PATCH v6 06/20] hw/block/nvme: refactor nvme_addr_read |
Date: |
Thu, 14 May 2020 06:45:57 +0200 |
From: Klaus Jensen <address@hidden>
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 <address@hidden>
Reviewed-by: Philippe Mathieu-Daudé <address@hidden>
Reviewed-by: Maxim Levitsky <address@hidden>
Reviewed-by: Keith Busch <address@hidden>
---
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 4058f2c79796..623a88be93dc 100644
--- a/hw/block/nvme.c
+++ b/hw/block/nvme.c
@@ -66,14 +66,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.26.2
- [PATCH v6 03/20] hw/block/nvme: remove superfluous breaks, (continued)
- [PATCH v6 03/20] hw/block/nvme: remove superfluous breaks, Klaus Jensen, 2020/05/14
- [PATCH v6 04/20] hw/block/nvme: move device parameters to separate struct, Klaus Jensen, 2020/05/14
- [PATCH v6 02/20] hw/block/nvme: rename trace events to pci_nvme, Klaus Jensen, 2020/05/14
- [PATCH v6 08/20] hw/block/nvme: allow use of any valid msix vector, Klaus Jensen, 2020/05/14
- [PATCH v6 09/20] hw/block/nvme: add max_ioqpairs device parameter, Klaus Jensen, 2020/05/14
- [PATCH v6 07/20] hw/block/nvme: fix pin-based interrupt behavior, Klaus Jensen, 2020/05/14
- [PATCH v6 10/20] hw/block/nvme: remove redundant cmbloc/cmbsz members, Klaus Jensen, 2020/05/14
- [PATCH v6 06/20] hw/block/nvme: refactor nvme_addr_read,
Klaus Jensen <=
- [PATCH v6 05/20] hw/block/nvme: use constants in identify, Klaus Jensen, 2020/05/14
- [PATCH v6 12/20] hw/block/nvme: factor out device state setup, Klaus Jensen, 2020/05/14
- [PATCH v6 11/20] hw/block/nvme: factor out property/constraint checks, Klaus Jensen, 2020/05/14
- [PATCH v6 16/20] hw/block/nvme: factor out pci setup, Klaus Jensen, 2020/05/14
- [PATCH v6 19/20] hw/block/nvme: do cmb/pmr init as part of pci init, Klaus Jensen, 2020/05/14
- [PATCH v6 20/20] hw/block/nvme: factor out controller identify setup, Klaus Jensen, 2020/05/14
- [PATCH v6 13/20] hw/block/nvme: factor out block backend setup, Klaus Jensen, 2020/05/14
- [PATCH v6 14/20] hw/block/nvme: add namespace helpers, Klaus Jensen, 2020/05/14
- [PATCH v6 15/20] hw/block/nvme: factor out namespace setup, Klaus Jensen, 2020/05/14