[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID: <2d8895d24fff46738f98c2dae74fa440@AcuMS.aculab.com>
Date: Fri, 4 Mar 2022 01:31:26 +0000
From: David Laight <David.Laight@...LAB.COM>
To: 'Keith Busch' <kbusch@...nel.org>,
"linux-nvme@...ts.infradead.org" <linux-nvme@...ts.infradead.org>,
"linux-block@...r.kernel.org" <linux-block@...r.kernel.org>,
"linux-crypto@...r.kernel.org" <linux-crypto@...r.kernel.org>,
"linux-kernel@...r.kernel.org" <linux-kernel@...r.kernel.org>
CC: "axboe@...nel.dk" <axboe@...nel.dk>, "hch@....de" <hch@....de>,
"martin.petersen@...cle.com" <martin.petersen@...cle.com>,
Hannes Reinecke <hare@...e.de>,
Chaitanya Kulkarni <kch@...dia.com>,
Arnd Bergmann <arnd@...db.de>
Subject: RE: [PATCHv4 3/8] asm-generic: introduce be48 unaligned accessors
From: Keith Busch
> Sent: 03 March 2022 20:13
>
> The NVMe protocol extended the data integrity fields with unaligned
> 48-bit reference tags.
If they are reference tags, are they only interpreted by the
sending system?
In which case they don't need to be big-endian since the
actual value doesn't really matter.
> Provide some helper accessors in preparation for these.
>
...
> diff --git a/include/asm-generic/unaligned.h b/include/asm-generic/unaligned.h
> index 1c4242416c9f..8fc637379899 100644
> --- a/include/asm-generic/unaligned.h
> +++ b/include/asm-generic/unaligned.h
> @@ -126,4 +126,30 @@ static inline void put_unaligned_le24(const u32 val, void *p)
> __put_unaligned_le24(val, p);
> }
>
> +static inline void __put_unaligned_be48(const u64 val, __u8 *p)
> +{
> + *p++ = val >> 40;
> + *p++ = val >> 32;
> + *p++ = val >> 24;
> + *p++ = val >> 16;
> + *p++ = val >> 8;
> + *p++ = val;
> +}
Although that matches __put_unaligned_be24() I think I'd use
array indexing not pointer increments.
The compiler will probably generate the same code anyway.
However it is probably better to do:
put_unaligned_be16(val >> 32, p);
put_unaligned_be32(val, p + 2);
so you get 2 memory accesses on x86 (etc) instead of 6.
Similarly for __get_unaligned_be48() where it is likely
so make a bigger difference.
David
-
Registered Address Lakeside, Bramley Road, Mount Farm, Milton Keynes, MK1 1PT, UK
Registration No: 1397386 (Wales)
Powered by blists - more mailing lists