From: Bart Van Assche <bvanassche@acm.org>
To: hyenc.jeong@samsung.com,
"James.Bottomley@HansenPartnership.com"
<James.Bottomley@HansenPartnership.com>,
"martin.petersen@oracle.com" <martin.petersen@oracle.com>,
"linux-scsi@vger.kernel.org" <linux-scsi@vger.kernel.org>
Cc: ALIM AKHTAR <alim.akhtar@samsung.com>,
"linux-kernel@vger.kernel.org" <linux-kernel@vger.kernel.org>,
Jinyoung Choi <j-young.choi@samsung.com>,
Dukhyun Kwon <d_hyun.kwon@samsung.com>,
Jeuk Kim <jeuk20.kim@samsung.com>,
Keoseong Park <keosung.park@samsung.com>,
Jaemyung Lee <jaemyung.lee@samsung.com>,
Jieon Seol <jieon.seol@samsung.com>,
Gyusun Lee <gyusun.lee@samsung.com>,
Yunjae Jo <yunjae00.jo@samsung.com>
Subject: Re: [PATCH v2] scsi: ufs: Add support for the aggregated read query opcode
Date: Wed, 22 Jul 2026 10:08:47 -0700 [thread overview]
Message-ID: <13d80afa-3d5c-405f-8845-6dccb048bd97@acm.org> (raw)
In-Reply-To: <20260722084819epcms2p49c27fce999e821385f7b5d7ea5a02868@epcms2p4>
On 7/22/26 1:48 AM, Hyeoncheol Jeong wrote:
> - /* sizeof(struct utp_transfer_cmd_desc) must be a multiple of 128 */
> + /* Both UCD types must be a multiple of 128 */
"must be" -> "must have a size that is"
"128" -> "128 bytes"
> - *desc_len = min_t(int, QUERY_DESC_MAX_SIZE, desc_size);
> + if (desc_op == UPIU_QUERY_OPCODE_AGGREGATED_READ)
> + *desc_len = min_t(int, QUERY_AGGREGATED_MAX_SIZE, desc_size);
> + else
> + *desc_len = min_t(int, QUERY_DESC_MAX_SIZE, desc_size);
Please convert this patch into a series and add a patch before this
patch that changes the data types of desc_size and desc_len from 'int'
and 'int *' into unsigned types (u16 or unsigned int). The length field
is an unsigned 16-bits number according to the UFS standard. Hence, the
UFS driver should use an unsigned type for the UPIU query length.
This will allow to change "min_t(int, ...)" into "min(...)".
Since 'desc_op' is only used derive the maximum query size, wouldn't it
be better to move the code that limits 'desc_len' into
ufs_bsg_request()? Then 'desc_op' won't have to be passed to
ufs_bsg_get_query_desc_size().
> + /* The reserved tag uses a dedicated UCD outside the pool. */
> + if (unlikely(blk_mq_is_reserved_rq(scsi_cmd_to_rq(cmd)))) {
> + struct utp_devman_cmd_desc *cmd_descp = hba->devman_ucd_base_addr;
> +
> + cmd_desc_element_addr = hba->devman_ucd_dma_addr;
> + command_upiu = cmd_descp->command_upiu;
> + response_upiu = cmd_descp->response_upiu;
> + prd_table = cmd_descp->prd_table;
> + } else {
> + int slot = i - UFSHCD_NUM_RESERVED;
> + struct utp_transfer_cmd_desc *cmd_descp =
> + (void *)hba->ucdl_base_addr + slot * ufshcd_get_ucd_size(hba);
> +
> + cmd_desc_element_addr =
> + hba->ucdl_dma_addr + slot * ufshcd_get_ucd_size(hba);
> + command_upiu = cmd_descp->command_upiu;
> + response_upiu = cmd_descp->response_upiu;
> + prd_table = cmd_descp->prd_table;
> + }
The above code is based on the assumption that
!blk_mq_is_reserved_rq(rq) implies that i >= 1. Please add a
WARN_ON_ONCE() statement that makes this assumption explicit, e.g.
WARN_ON_ONCE(slot >= 0).
> + int tag;
Shouldn't 'tag' have an unsigned type?
> +static inline size_t ufshcd_get_devman_ucd_size(const struct ufs_hba *hba)
> +{
> + return sizeof(struct utp_devman_cmd_desc) + SG_ALL * ufshcd_sg_entry_size(hba);
> +}
Why SG_ALL? The data buffer for device management commands is allocated
with kmalloc() and hence is contiguous so a single segment descriptor
should be sufficient.
Otherwise this patch looks good to me.
Thanks,
Bart.
next prev parent reply other threads:[~2026-07-22 17:09 UTC|newest]
Thread overview: 11+ messages / expand[flat|nested] mbox.gz Atom feed top
[not found] <CGME20260710053524epcms2p82121eba4240c37112fc5669430035442@epcms2p6>
2026-07-10 5:45 ` [PATCH] scsi: ufs: Add support for the aggregated read query opcode Hyeoncheol Jeong
2026-07-10 14:46 ` Bart Van Assche
2026-07-13 2:52 ` Hyeoncheol Jeong
2026-07-13 12:55 ` Bart Van Assche
2026-07-16 2:51 ` Hyeoncheol Jeong
2026-07-16 18:02 ` Bart Van Assche
[not found] ` <CGME20260710053524epcms2p82121eba4240c37112fc5669430035442@epcms2p4>
2026-07-22 8:48 ` [PATCH v2] " Hyeoncheol Jeong
2026-07-22 9:03 ` sashiko-bot
2026-07-22 17:08 ` Bart Van Assche [this message]
2026-07-23 7:47 ` Hyeoncheol Jeong
2026-07-23 19:27 ` Bart Van Assche
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=13d80afa-3d5c-405f-8845-6dccb048bd97@acm.org \
--to=bvanassche@acm.org \
--cc=James.Bottomley@HansenPartnership.com \
--cc=alim.akhtar@samsung.com \
--cc=d_hyun.kwon@samsung.com \
--cc=gyusun.lee@samsung.com \
--cc=hyenc.jeong@samsung.com \
--cc=j-young.choi@samsung.com \
--cc=jaemyung.lee@samsung.com \
--cc=jeuk20.kim@samsung.com \
--cc=jieon.seol@samsung.com \
--cc=keosung.park@samsung.com \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-scsi@vger.kernel.org \
--cc=martin.petersen@oracle.com \
--cc=yunjae00.jo@samsung.com \
/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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox