[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [PATCH v4 1/2] nvme: indicate CMB support through controller capabil
From: |
Maxim Levitsky |
Subject: |
Re: [PATCH v4 1/2] nvme: indicate CMB support through controller capabilities register |
Date: |
Tue, 07 Jul 2020 19:27:26 +0300 |
User-agent: |
Evolution 3.34.4 (3.34.4-1.fc31) |
On Wed, 2020-07-01 at 14:48 -0700, Andrzej Jakowski wrote:
> This patch sets CMBS bit in controller capabilities register when user
> configures NVMe driver with CMB support, so capabilites are correctly
> reported to guest OS.
>
> Signed-off-by: Andrzej Jakowski <andrzej.jakowski@linux.intel.com>
> Reviewed-by: Klaus Jensen <k.jensen@samsung.com>
> ---
> hw/block/nvme.c | 2 +-
> include/block/nvme.h | 6 +++++-
> 2 files changed, 6 insertions(+), 2 deletions(-)
>
> diff --git a/hw/block/nvme.c b/hw/block/nvme.c
> index 1aee042d4c..9f11f3e9da 100644
> --- a/hw/block/nvme.c
> +++ b/hw/block/nvme.c
> @@ -1582,6 +1582,7 @@ static void nvme_init_ctrl(NvmeCtrl *n, PCIDevice
> *pci_dev)
> NVME_CAP_SET_TO(n->bar.cap, 0xf);
> NVME_CAP_SET_CSS(n->bar.cap, 1);
> NVME_CAP_SET_MPSMAX(n->bar.cap, 4);
> + NVME_CAP_SET_CMBS(n->bar.cap, n->params.cmb_size_mb ? 1 : 0);
>
> n->bar.vs = 0x00010200;
> n->bar.intmc = n->bar.intms = 0;
> @@ -1591,7 +1592,6 @@ static void nvme_realize(PCIDevice *pci_dev, Error
> **errp)
> {
> NvmeCtrl *n = NVME(pci_dev);
> Error *local_err = NULL;
> -
> int i;
>
> nvme_check_constraints(n, &local_err);
> diff --git a/include/block/nvme.h b/include/block/nvme.h
> index 1720ee1d51..14cf398dfa 100644
> --- a/include/block/nvme.h
> +++ b/include/block/nvme.h
> @@ -35,6 +35,7 @@ enum NvmeCapShift {
> CAP_MPSMIN_SHIFT = 48,
> CAP_MPSMAX_SHIFT = 52,
> CAP_PMR_SHIFT = 56,
> + CAP_CMB_SHIFT = 57,
> };
>
> enum NvmeCapMask {
> @@ -48,6 +49,7 @@ enum NvmeCapMask {
> CAP_MPSMIN_MASK = 0xf,
> CAP_MPSMAX_MASK = 0xf,
> CAP_PMR_MASK = 0x1,
> + CAP_CMB_MASK = 0x1,
> };
>
> #define NVME_CAP_MQES(cap) (((cap) >> CAP_MQES_SHIFT) & CAP_MQES_MASK)
> @@ -78,8 +80,10 @@ enum NvmeCapMask {
> <<
> CAP_MPSMIN_SHIFT)
> #define NVME_CAP_SET_MPSMAX(cap, val) (cap |= (uint64_t)(val &
> CAP_MPSMAX_MASK)\
> <<
> CAP_MPSMAX_SHIFT)
> -#define NVME_CAP_SET_PMRS(cap, val) (cap |= (uint64_t)(val & CAP_PMR_MASK)\
> +#define NVME_CAP_SET_PMRS(cap, val) (cap |= (uint64_t)(val & CAP_PMR_MASK)
> \
> << CAP_PMR_SHIFT)
> +#define NVME_CAP_SET_CMBS(cap, val) (cap |= (uint64_t)(val & CAP_CMB_MASK)
> \
> + << CAP_CMB_SHIFT)
>
> enum NvmeCcShift {
> CC_EN_SHIFT = 0,
I wonder how this could have beeing forgotten. Hmm.
I see that Linux kernel uses CMBSZ != for that.
I guess this explains it.
Reviewed-by: Maxim Levitsky <mlevitsky@gmail.com>
Best regards,
Maxim Levitsky
- [PATCH v4] nvme: allow cmb and pmr emulation on same device, Andrzej Jakowski, 2020/07/01
- [PATCH v4 2/2] nvme: allow cmb and pmr to be enabled on same device, Andrzej Jakowski, 2020/07/01
- Re: [PATCH v4 2/2] nvme: allow cmb and pmr to be enabled on same device, Klaus Jensen, 2020/07/02
- Re: [PATCH v4 2/2] nvme: allow cmb and pmr to be enabled on same device, Klaus Jensen, 2020/07/02
- Re: [PATCH v4 2/2] nvme: allow cmb and pmr to be enabled on same device, Andrzej Jakowski, 2020/07/02
- Re: [PATCH v4 2/2] nvme: allow cmb and pmr to be enabled on same device, Klaus Jensen, 2020/07/02
- Re: [PATCH v4 2/2] nvme: allow cmb and pmr to be enabled on same device, Andrzej Jakowski, 2020/07/02
- Re: [PATCH v4 2/2] nvme: allow cmb and pmr to be enabled on same device, Klaus Jensen, 2020/07/06
- Re: [PATCH v4 2/2] nvme: allow cmb and pmr to be enabled on same device, Andrzej Jakowski, 2020/07/08