lkml.org 
[lkml]   [2022]   [Sep]   [30]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
/
From
SubjectRe: [Intel-wired-lan] [PATCH] ixgbe: Use kmap_local_page in ixgbe_check_lbtest_frame()
Date
On Friday, September 23, 2022 5:05:43 PM CEST Fabio M. De Francesco wrote:
> Hi Anirudh,
>
> On Friday, September 23, 2022 12:38:02 AM CEST Anirudh Venkataramanan wrote:
> > On 9/22/2022 1:58 PM, Alexander Duyck wrote:
> > > On Thu, Sep 22, 2022 at 1:07 PM Anirudh Venkataramanan
> > > <anirudh.venkataramanan@intel.com> wrote:

[snip]

> > Is using page_address() directly beneficial in some way?
>
> A possible call chain on 32 bits kernels is the following:
>
> kmap_local_page() ->
> __kmap_local_page_prot() {
> if (!IS_ENABLED(CONFIG_DEBUG_KMAP_LOCAL_FORCE_MAP) && |
> PageHighMem(page))
> return page_address(page);
>
> ....
> }
>
> How many instructions can you save calling page_address() directly?
> If you don't know, look at the assembly.

I just realized that perhaps you were expecting something like either "No, it
is not directly beneficial because []" or "Yes, it is directly beneficial
because []".

Instead, I used a rhetoric question that might not have been so clear as I
thought. This kind of construct is so largely used in my native language, that
nobody might misunderstand. I'm not so sure if it is the same in English.

I mean, are those dozen "unnecessary" further assembly instructions too many
or too few to care about? I _think_ that they are too many.

Therefore, by showing a possible call chain in 32 bits architectures, I
indirectly responded "no, I can't see any direct benefit", at least because....

1) Whatever the architecture, if pages can't come from Highmem, code always
ends up calling page_address(). In 32 bits archs they waste precious kernel
stack space (a scarce resources) only to build two stack frames (one per each
called functions).

2) Developers adds further work to the CPU and force the kernel to run
unnecessary code.

I'll always use page_address() when I can "prove" that the allocation cannot
come from ZONE_HIGHMEM.

Thanks,

Fabio



\
 
 \ /
  Last update: 2022-10-01 00:05    [W:0.087 / U:2.136 seconds]
©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site