[PATCH RFC 31/35] crypto: remove nth_page() usage within SG entry
David Hildenbrand
david at redhat.com
Thu Aug 21 20:29:41 UTC 2025
On 21.08.25 22:24, Linus Torvalds wrote:
> On Thu, 21 Aug 2025 at 16:08, David Hildenbrand <david at redhat.com> wrote:
>>
>> - page = nth_page(page, offset >> PAGE_SHIFT);
>> + page += offset / PAGE_SIZE;
>
> Please keep the " >> PAGE_SHIFT" form.
No strong opinion.
I was primarily doing it to get rid of (in other cases) the parentheses.
Like in patch #29
- /* Assumption: contiguous pages can be accessed as "page + i" */
- page = nth_page(sg_page(sg), (*offset >> PAGE_SHIFT));
+ page = sg_page(sg) + *offset / PAGE_SIZE;
>
> Is "offset" unsigned? Yes it is, But I had to look at the source code
> to make sure, because it wasn't locally obvious from the patch. And
> I'd rather we keep a pattern that is "safe", in that it doesn't
> generate strange code if the value might be a 's64' (eg loff_t) on
> 32-bit architectures.
>
> Because doing a 64-bit shift on x86-32 is like three cycles. Doing a
> 64-bit signed division by a simple constant is something like ten
> strange instructions even if the end result is only 32-bit.
I would have thought that the compiler is smart enough to optimize that?
PAGE_SIZE is a constant.
>
> And again - not the case *here*, but just a general "let's keep to one
> pattern", and the shift pattern is simply the better choice.
It's a wild mixture, but I can keep doing what we already do in these cases.
--
Cheers
David / dhildenb
More information about the Intel-gfx
mailing list