From: Alan Hayward <Alan.Hayward@arm.com>
To: Dave P Martin <Dave.Martin@arm.com>
Cc: "linux-arm-kernel@lists.infradead.org"
<linux-arm-kernel@lists.infradead.org>,
"Catalin Marinas" <Catalin.Marinas@arm.com>,
"Will Deacon" <Will.Deacon@arm.com>,
"Ard Biesheuvel" <ard.biesheuvel@linaro.org>,
"Alex Bennée" <alex.bennee@linaro.org>,
"Szabolcs Nagy" <Szabolcs.Nagy@arm.com>,
"Richard Sandiford" <Richard.Sandiford@arm.com>,
"kvmarm@lists.cs.columbia.edu" <kvmarm@lists.cs.columbia.edu>,
"libc-alpha@sourceware.org" <libc-alpha@sourceware.org>,
"linux-arch@vger.kernel.org" <linux-arch@vger.kernel.org>,
"gdb@sourceware.org" <gdb@sourceware.org>,
"Yao Qi" <Yao.Qi@arm.com>, nd <nd@arm.com>
Subject: Re: [PATCH v2 14/28] arm64/sve: Backend logic for setting the vector length
Date: Wed, 20 Sep 2017 11:00:00 -0000 [thread overview]
Message-ID: <FC5BA359-D37C-493C-87CD-146B83D3CCB5@arm.com> (raw)
In-Reply-To: <1504198860-12951-15-git-send-email-Dave.Martin@arm.com>
(Resending without disclaimer)
> On 31 Aug 2017, at 18:00, Dave Martin <Dave.Martin@arm.com> wrote:
>
> +int sve_set_vector_length(struct task_struct *task,
> + unsigned long vl, unsigned long flags)
> +{
> + WARN_ON(task == current && preemptible());
> +
> + if (flags & ~(unsigned long)(PR_SVE_VL_INHERIT |
> + PR_SVE_SET_VL_ONEXEC))
> + return -EINVAL;
> +
> + if (!sve_vl_valid(vl))
> + return -EINVAL;
> +
> + /*
> + * Clamp to the maximum vector length that VL-agnostic SVE code can
> + * work with. A flag may be assigned in the future to allow setting
> + * of larger vector lengths without confusing older software.
> + */
> + if (vl > SVE_VL_ARCH_MAX)
> + vl = SVE_VL_ARCH_MAX;
> +
> + vl = find_supported_vector_length(vl);
> +
Given, sve_set_vector_length is called when setting the vector length in
PTRACE_SETREGSET, it looks to me like if you set VL to a value that’s not
supported by the hardware, then it’s going to round down to the previous value.
Is that correct? I’m not sure if that’s explained in the docs?
What happens if you give a vl value lower than the min supported value in the
hardware?
> +/*
> + * All vector length selection from userspace comes through here.
> + * We're on a slow path, so some sanity-checks are included.
> + * If things go wrong there's a bug somewhere, but try to fall back to a
> + * safe choice.
> + */
> +static unsigned int find_supported_vector_length(unsigned int vl)
> +{
> + int bit;
> + int max_vl = sve_max_vl;
> +
> + if (WARN_ON(!sve_vl_valid(vl)))
> + vl = SVE_VL_MIN;
> +
> + if (WARN_ON(!sve_vl_valid(max_vl)))
> + max_vl = SVE_VL_MIN;
> +
> + if (vl > max_vl)
> + vl = max_vl;
> +
> + bit = find_next_bit(sve_vq_map, SVE_VQ_MAX,
> + vq_to_bit(sve_vq_from_vl(vl)));
> + return sve_vl_from_vq(bit_to_vq(bit));
> +}
> +
Thanks,
Alan.
next prev parent reply other threads:[~2017-09-20 11:00 UTC|newest]
Thread overview: 21+ messages / expand[flat|nested] mbox.gz Atom feed top
[not found] <1504198860-12951-1-git-send-email-Dave.Martin@arm.com>
2017-08-31 17:01 ` [PATCH v2 09/28] arm64/sve: Signal frame and context structure definition Dave Martin
2017-09-13 13:36 ` Catalin Marinas
2017-09-13 21:33 ` Dave Martin
2017-08-31 17:02 ` [PATCH v2 19/28] arm64/sve: ptrace and ELF coredump support Dave Martin
2017-09-06 16:22 ` Okamoto, Takayuki
[not found] ` <20170906181634.GF6321@e103592.cambridge.arm.com>
2017-09-07 5:11 ` Okamoto, Takayuki
2017-09-08 13:11 ` Dave Martin
2017-09-14 12:57 ` Alex Bennée
2017-09-28 14:57 ` Dave Martin
2017-09-29 12:46 ` Dave Martin
2017-08-31 17:09 ` [PATCH v2 14/28] arm64/sve: Backend logic for setting the vector length Dave Martin
2017-09-13 17:29 ` Catalin Marinas
2017-09-13 19:06 ` Dave Martin
2017-09-13 22:11 ` Catalin Marinas
2017-10-05 16:42 ` Dave Martin
2017-10-05 16:53 ` Catalin Marinas
2017-10-05 17:04 ` Dave Martin
2017-09-20 11:00 ` Alan Hayward [this message]
[not found] ` <20170920110902.GG24231@e103592.cambridge.arm.com>
2017-09-20 18:08 ` Alan Hayward
2017-09-21 11:19 ` Dave Martin
2017-09-21 11:57 ` Alan Hayward
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=FC5BA359-D37C-493C-87CD-146B83D3CCB5@arm.com \
--to=alan.hayward@arm.com \
--cc=Catalin.Marinas@arm.com \
--cc=Dave.Martin@arm.com \
--cc=Richard.Sandiford@arm.com \
--cc=Szabolcs.Nagy@arm.com \
--cc=Will.Deacon@arm.com \
--cc=Yao.Qi@arm.com \
--cc=alex.bennee@linaro.org \
--cc=ard.biesheuvel@linaro.org \
--cc=gdb@sourceware.org \
--cc=kvmarm@lists.cs.columbia.edu \
--cc=libc-alpha@sourceware.org \
--cc=linux-arch@vger.kernel.org \
--cc=linux-arm-kernel@lists.infradead.org \
--cc=nd@arm.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