fix atomic limits check

alan.adamson at oracle.com alan.adamson at oracle.com
Tue Jun 24 09:38:06 PDT 2025


On 6/24/25 6:10 AM, Christoph Hellwig wrote:
> Arrg, the patch did not actually print NAWUPF, and made me scramble
> really hard how the output could be possible.  New one below:
>
>
> diff --git a/drivers/nvme/host/core.c b/drivers/nvme/host/core.c
> index 3da5ac71a9b0..90473d4770f5 100644
> --- a/drivers/nvme/host/core.c
> +++ b/drivers/nvme/host/core.c
> @@ -2033,6 +2033,8 @@ static u32 nvme_configure_atomic_write(struct nvme_ns *ns,
>   		atomic_bs = (1 + le16_to_cpu(id->nawupf)) * bs;
>   		if (id->nabspf)
>   			boundary = (le16_to_cpu(id->nabspf) + 1) * bs;
> +		dev_info(ns->ctrl->device, "nsid %u: NAWUPF: %u, atomic_bs: %u\n",
> +			ns->head->ns_id, le16_to_cpu(id->nawupf), atomic_bs);
>   	} else {
>   		/*
>   		 * Use the controller wide atomic write unit.  This sucks
> @@ -2042,6 +2044,8 @@ static u32 nvme_configure_atomic_write(struct nvme_ns *ns,
>   		 * values for different controllers in the subsystem.
>   		 */
>   		atomic_bs = (1 + ns->ctrl->subsys->awupf) * bs;
> +		dev_info(ns->ctrl->device, "nsid: %u: AWUPF: %u, atomic_bs: %u\n",
> +			ns->head->ns_id, ns->ctrl->subsys->awupf, atomic_bs);
>   	}
>   
>   	lim->atomic_write_hw_max = atomic_bs;
>
CTRL 0 (nvme0) - AWUN=31 AWUPF=15       nvme0n1
CTRL 1 (nvme1) - AWUN=31 AWUPF=31       nvme0n3
CTRL 2 (nvme2) - AWUN=15 AWUPF=7        nvme0n2
CTRL 3 (nvme3) - AWUN=15 AWUPF=15
     NS - NAWUN=31 NAWUPF=15             nvme0n4
     NS - NAWUN=127 NAWUPF=63            nvme0n5

[root at localhost ~]# nvme id-ctrl /dev/nvme0n1 | grep awupf
awupf     : 15
[root at localhost ~]# cat /sys/block/nvme0n1/queue/atomic_write_max_bytes
8192
[root at localhost ~]# nvme id-ctrl /dev/nvme0n2 | grep awupf
awupf     : 7
[root at localhost ~]# cat /sys/block/nvme0n2/queue/atomic_write_max_bytes
8192
[root at localhost ~]# nvme id-ctrl /dev/nvme0n3 | grep awupf
awupf     : 31
[root at localhost ~]# cat /sys/block/nvme0n3/queue/atomic_write_max_bytes
8192
[root at localhost ~]# nvme id-ns /dev/nvme0n4 | grep nawupf
nawupf  : 15
[root at localhost ~]# cat /sys/block/nvme0n4/queue/atomic_write_max_bytes
8192
[root at localhost ~]# nvme id-ns /dev/nvme0n5 | grep nawupf
nawupf  : 63
[root at localhost ~]# cat /sys/block/nvme0n5/queue/atomic_write_max_bytes
32768
[root at localhost ~]#

[root at localhost ~]# dmesg | grep nvme | grep atomic_bs
[    3.034383] nvme nvme0: nsid: 1: AWUPF: 15, atomic_bs: 8192
[    3.050431] nvme nvme2: nsid: 3: AWUPF: 15, atomic_bs: 8192
[    3.056716] nvme nvme1: nsid: 2: AWUPF: 15, atomic_bs: 8192
[    3.059079] nvme nvme3: nsid 4: NAWUPF: 15, atomic_bs: 8192
[    3.060867] nvme nvme3: nsid 5: NAWUPF: 63, atomic_bs: 32768
[root at localhost ~]#




More information about the Linux-nvme mailing list