From: Damien Le Moal <dlemoal@kernel.org>
To: Yihang Li <liyihang9@huawei.com>,
john.g.garry@oracle.com, yanaijie@huawei.com, jejb@linux.ibm.com,
martin.petersen@oracle.com, chenxiang66@hisilicon.com
Cc: linux-scsi@vger.kernel.org, linux-kernel@vger.kernel.org,
linuxarm@huawei.com, prime.zeng@huawei.com,
yangxingui@huawei.com
Subject: Re: [PATCH v2] scsi: libsas: Allocation SMP request is aligned to ARCH_DMA_MINALIGN
Date: Tue, 26 Mar 2024 22:14:11 +0900 [thread overview]
Message-ID: <5b5b9392-7fd2-4c87-8e41-5e54adf20003@kernel.org> (raw)
In-Reply-To: <20240326124358.2466259-1-liyihang9@huawei.com>
On 3/26/24 21:43, Yihang Li wrote:
> This series [1] reducing the kmalloc() minimum alignment on arm64 to 8
> (from 128). In libsas, this will cause SMP requests to be 8-byte-aligned
> through kmalloc() allocation. However, for the hisi_sas hardware, all
> commands address must be 16-byte-aligned. Otherwise, the commands fail to
> be executed.
>
> ARCH_DMA_MINALIGN represents the minimum (static) alignment for safe DMA
> operations, so use ARCH_DMA_MINALIGN as the alignment for SMP request.
>
> Link: https://lkml.kernel.org/r/20230612153201.554742-1-catalin.marinas@arm.com [1]
> Signed-off-by: Yihang Li <liyihang9@huawei.com>
> ---
> Changes since v1:
> - Directly modify alloc_smp_req() instead of using handler callback.
> ---
> drivers/scsi/libsas/sas_expander.c | 5 ++++-
> 1 file changed, 4 insertions(+), 1 deletion(-)
>
> diff --git a/drivers/scsi/libsas/sas_expander.c b/drivers/scsi/libsas/sas_expander.c
> index a2204674b680..941abc7298df 100644
> --- a/drivers/scsi/libsas/sas_expander.c
> +++ b/drivers/scsi/libsas/sas_expander.c
> @@ -135,7 +135,10 @@ static int smp_execute_task(struct domain_device *dev, void *req, int req_size,
>
> static inline void *alloc_smp_req(int size)
> {
> - u8 *p = kzalloc(size, GFP_KERNEL);
> + u8 *p;
> +
> + size = ALIGN(size, ARCH_DMA_MINALIGN);
> + p = kzalloc(size, GFP_KERNEL);
Nit: why not:
p = kzalloc(ALIGN(size, ARCH_DMA_MINALIGN), GFP_KERNEL);
> if (p)
> p[0] = SMP_REQUEST;
> return p;
Otherwise looks OK to me.
John,
Unrelated to this patch, but I wonder if the GFP_KERNEL used here shouldn't be
GFP_NOIO... Is this ever called in the IO path or error recovery ?
--
Damien Le Moal
Western Digital Research
next prev parent reply other threads:[~2024-03-26 13:14 UTC|newest]
Thread overview: 11+ messages / expand[flat|nested] mbox.gz Atom feed top
2024-03-26 12:43 [PATCH v2] scsi: libsas: Allocation SMP request is aligned to ARCH_DMA_MINALIGN Yihang Li
2024-03-26 13:14 ` Damien Le Moal [this message]
2024-03-26 13:32 ` John Garry
2024-03-26 13:40 ` Damien Le Moal
2024-03-28 6:35 ` Christoph Hellwig
2024-03-28 6:59 ` Yihang Li
2024-03-28 7:23 ` Damien Le Moal
2024-03-28 7:29 ` Christoph Hellwig
2024-03-28 7:36 ` Damien Le Moal
2024-03-28 7:45 ` Christoph Hellwig
2024-03-28 8:00 ` Yihang Li
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=5b5b9392-7fd2-4c87-8e41-5e54adf20003@kernel.org \
--to=dlemoal@kernel.org \
--cc=chenxiang66@hisilicon.com \
--cc=jejb@linux.ibm.com \
--cc=john.g.garry@oracle.com \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-scsi@vger.kernel.org \
--cc=linuxarm@huawei.com \
--cc=liyihang9@huawei.com \
--cc=martin.petersen@oracle.com \
--cc=prime.zeng@huawei.com \
--cc=yanaijie@huawei.com \
--cc=yangxingui@huawei.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 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.