This is the mail archive of the
libc-alpha@sourceware.org
mailing list for the glibc project.
Re: [PATCH v2 2/6] arm64: HWCAP: add support for AT_HWCAP2
- From: Szabolcs Nagy <Szabolcs dot Nagy at arm dot com>
- To: Dave P Martin <Dave dot Martin at arm dot com>, Andrew Murray <Andrew dot Murray at arm dot com>
- Cc: nd <nd at arm dot com>, Catalin Marinas <Catalin dot Marinas at arm dot com>, Will Deacon <Will dot Deacon at arm dot com>, "linux-arm-kernel at lists dot infradead dot org" <linux-arm-kernel at lists dot infradead dot org>, GNU C Library <libc-alpha at sourceware dot org>
- Date: Fri, 29 Mar 2019 16:44:05 +0000
- Subject: Re: [PATCH v2 2/6] arm64: HWCAP: add support for AT_HWCAP2
- References: <1550751657-30252-1-git-send-email-andrew.murray@arm.com> <1550751657-30252-3-git-send-email-andrew.murray@arm.com> <20190221184500.GO16031@e103592.cambridge.arm.com> <a3b8a7f1-983a-6d39-8100-88424dc05d6a@arm.com> <20190327150224.GE43527@e119886-lin.cambridge.arm.com> <20190327152414.GF43527@e119886-lin.cambridge.arm.com> <20190328112734.GZ3567@e103592.cambridge.arm.com>
On 28/03/2019 11:27, Dave Martin wrote:
> On Wed, Mar 27, 2019 at 03:24:15PM +0000, Andrew Murray wrote:
>> On Wed, Mar 27, 2019 at 03:02:25PM +0000, Andrew Murray wrote:
>>> I'll add documentation to Documentation/arm64 to indicate that the upper 32bits
>>> of AT_HWCAP will always be 0. Is this correct?
>>
>> How about this (in Documentation/arm64/elf_hwcaps.txt)?
>> +
>> +
>> +4. Unused AT_HWCAP bits
>> +-----------------------
>> +
>> +Each AT_HWCAP and AT_HWCAP2 entry provides for up to 32 hwcaps contained
>> +in bits [31:0]. For interoperation with userspace we guarantee that the
>> +top bits [63:32] of AT_HWCAP will always be returned as 0.
>
> Since the main reason for reserving bits [63:32] is ILP32, and it's
> still unclear when (or if) that will be merged, it feels a bit excessive
> to promise that we will never use these bits.
>
> It sounds like glibc has a use for at most one bit in here.
>
> So maybe we can reserve bit 63 (or 32, whatever) and promise that is
> zero, but leave the rest uncommitted for now.
>
> Szabolcs, does that sound sensible?
i think hwcap bit 63 is already reserved by glibc
internally for tls support, it is not clear to me
if that's still relevant (aarch64 post-dates tls
support, so this might be historical cruft that can
be cleaned up), i only see one comment about it:
1288 /* The last entry in hwcap_extra is reserved for the "tls" pseudo-hwcap which
1289 indicates support for TLS. This pseudo-hwcap is only used by old versions
1290 under which TLS support was optional. The entry is no longer needed, but
1291 must remain for compatibility. */
1292 hwcap_extra[63 - _DL_FIRST_EXTRA] = "tls";
https://sourceware.org/git/?p=glibc.git;a=blob;f=elf/ldconfig.c;h=3bc9e618916ebb2fee29ffe3d114525a08390b43;hb=HEAD#l1288
and generic ld.so.cache handling code uses it:
https://sourceware.org/git/?p=glibc.git;a=blob;f=elf/dl-cache.c;h=d8d1e2344e612d98689cf7d7ad965822d0ab6ed1;hb=HEAD#l265
since i don't understand how this tls bit was used
exactly i think it's better to use a different bit
for aarch64 ifunc abi hacks (e.g. 1ULL << 62)
cc += libc-alpha in case somebody knows more about
this bit.