All of lore.kernel.org
 help / color / mirror / Atom feed
From: Jesper Wendel Devantier <foss@defmacro.it>
To: Klaus Jensen <its@irrelevant.dk>
Cc: qemu-devel@nongnu.org, Keith Busch <kbusch@kernel.org>,
	qemu-block@nongnu.org, Klaus Jensen <k.jensen@samsung.com>
Subject: Re: [PATCH 2/3] hw/nvme: fix fdp reclaim unit accounting
Date: Thu, 12 Nov 2026 17:08:00 +0100	[thread overview]
Message-ID: <20261112165350.0-foss@defmacro.it> (raw)
In-Reply-To: <20261112-nvme-for-rc-v1-2-69b3e5dcd5c8@samsung.com>



On Thu, 12 Nov 2026 10:53:29 +0100, Klaus Jensen <its@irrelevant.dk> wrote:
> From: Klaus Jensen <k.jensen@samsung.com>
>
> nvme_do_write_fdp falls back to placement handle zero for a write that
> has no Data Placement directive or where the placement identifier is
> invalid. However, it then passes the invalid placement identifier to
> nvme_update_ruh which results in no update to RUAMW for placement handle
> zero.
>
> Reset the placement identifier along with the handle in the fallback.
>
> Link: https://gitlab.com/qemu-project/qemu/-/work_items/4520
> Signed-off-by: Klaus Jensen <k.jensen@samsung.com>
> ---
>  hw/nvme/ctrl.c | 1 +
>  1 file changed, 1 insertion(+)
>
> diff --git a/hw/nvme/ctrl.c b/hw/nvme/ctrl.c
> index 685cbc2f340c..a0d22dacedfa 100644
> --- a/hw/nvme/ctrl.c
> +++ b/hw/nvme/ctrl.c
> @@ -3754,6 +3754,7 @@ static void nvme_do_write_fdp(NvmeCtrl *n, NvmeRequest *req, uint64_t slba,
>          !nvme_parse_pid(ns, pid, &ph, &rg)) {
>          ph = 0;
>          rg = 0;
> +        pid = 0;
>      }
>  
>      ruhid = ns->fdp.phs[ph];
>
> -- 
> 2.53.0
>
>
>

Correct.
Had to re-familiarize myself, but pid (placement identifier) is essentially
a 2-tuple of (rg, ph)  (reclaim group, placement handle).

NVMe Base Specification 2.4, §8.1.12.1 states that if the data placement directive
is unset/invalid that the write must then use the placement handle 0, but that
the reclaim group may be defined by the controller.

Setting `pid=0` is correct, but only so long as we also set rg to 0.
Perhaps a clearer way to specify this would be:

```
pid = 0;
nvme_parse_pid(ns, pid, &ph, &rg);
```

.. it more clearly captures the relationship between PID and RG/PH.
But the change is correct.

Reviewed-by: Jesper Wendel Devantier <foss@defmacro.it>




  parent reply	other threads:[~2026-11-12 16:08 UTC|newest]

Thread overview: 11+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2026-11-12  9:53 [PATCH 0/3] hw/nvme: misc fixes Klaus Jensen
2026-11-12  9:53 ` [PATCH 1/3] hw/nvme: reject fdp.runs smaller than the lba data size Klaus Jensen
2026-11-12 13:13   ` Tommaso Califano
2026-11-12 18:04     ` Klaus Jensen
2026-11-12 21:38   ` Jesper Wendel Devantier
2026-11-12  9:53 ` [PATCH 2/3] hw/nvme: fix fdp reclaim unit accounting Klaus Jensen
2026-11-12 13:15   ` Tommaso Califano
2026-11-12 16:08   ` Jesper Wendel Devantier [this message]
2026-11-12  9:53 ` [PATCH 3/3] hw/nvme: fix broadcast fdp events handling Klaus Jensen
2026-11-12 13:16   ` Tommaso Califano
2026-11-12 16:39   ` Jesper Wendel Devantier

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20261112165350.0-foss@defmacro.it \
    --to=foss@defmacro.it \
    --cc=its@irrelevant.dk \
    --cc=k.jensen@samsung.com \
    --cc=kbusch@kernel.org \
    --cc=qemu-block@nongnu.org \
    --cc=qemu-devel@nongnu.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.