From: Heiko Carstens <hca@linux.ibm.com>
To: Harald Freudenberger <freude@linux.ibm.com>,
Christian Borntraeger <borntraeger@linux.ibm.com>,
Janosch Frank <frankja@linux.ibm.com>,
Claudio Imbrenda <imbrenda@linux.ibm.com>
Cc: seiden@linux.ibm.com, linux-s390@vger.kernel.org
Subject: Re: [PATCH v1 1/1] s390/uv: Prealloc and use one work page
Date: Fri, 28 Mar 2025 11:34:34 +0100 [thread overview]
Message-ID: <20250328103434.11717A53-hca@linux.ibm.com> (raw)
In-Reply-To: <20250327153824.61600-2-freude@linux.ibm.com>
On Thu, Mar 27, 2025 at 04:38:24PM +0100, Harald Freudenberger wrote:
> The pkey handler is calling the uv in some circumstances
> where no memory allocation is acceptable. As of now only
> the uv_get_secret_metadata() function allocates memory.
> As this is exactly one page, lets introduce a pre-allocated
> work page and protect the concurrent use with a mutex to
> remove dynamic memory allocation and free. This page may be
> also used with future extension to the uv code.
>
> Signed-off-by: Harald Freudenberger <freude@linux.ibm.com>
> ---
> arch/s390/kernel/uv.c | 22 ++++++++++++++++++----
> 1 file changed, 18 insertions(+), 4 deletions(-)
[adding maintainers, according to get_maintainer.pl]
> static int __init uv_init(phys_addr_t stor_base, unsigned long stor_len)
> {
> struct uv_cb_init uvcb = {
> @@ -61,6 +68,12 @@ void __init setup_uv(void)
> if (!is_prot_virt_host())
> return;
>
> + work_page = (u8 *)__get_free_page(GFP_KERNEL);
> + if (!work_page) {
> + pr_warn("Failed to alloc a working memory page\n");
> + return;
> + }
> +
> uv_stor_base = memblock_alloc_try_nid(
Did you test this? I think this cannot work. When setup_uv() is called
the buddy allocator is not yet initialized.
Please use memblock_alloc_or_panic() instead.
> - buf = kzalloc(sizeof(*buf), GFP_KERNEL);
> - if (!buf)
> - return -ENOMEM;
> + mutex_lock(&work_page_lock);
> + buf = (struct uv_secret_list *)work_page;
> rc = find_secret(secret_id, buf, secret);
> - kfree(buf);
> + mutex_unlock(&work_page_lock);
The commit message does not explain why memory allocation is not
acceptable. Usually this translates to non-sleepable context. If that
is the case, then using a mutex would be wrong. This needs to be
clarified.
> +
> return rc;
Unrelated whitespace change.
It is up to the kvm folks to decide if the whole approach is ok.
next prev parent reply other threads:[~2025-03-28 10:34 UTC|newest]
Thread overview: 5+ messages / expand[flat|nested] mbox.gz Atom feed top
2025-03-27 15:38 [PATCH v1 0/1] Remove the need to alloc memory in uv.c Harald Freudenberger
2025-03-27 15:38 ` [PATCH v1 1/1] s390/uv: Prealloc and use one work page Harald Freudenberger
2025-03-28 10:34 ` Heiko Carstens [this message]
2025-03-28 12:51 ` Harald Freudenberger
2025-03-31 9:35 ` Heiko Carstens
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=20250328103434.11717A53-hca@linux.ibm.com \
--to=hca@linux.ibm.com \
--cc=borntraeger@linux.ibm.com \
--cc=frankja@linux.ibm.com \
--cc=freude@linux.ibm.com \
--cc=imbrenda@linux.ibm.com \
--cc=linux-s390@vger.kernel.org \
--cc=seiden@linux.ibm.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.