lists.openwall.net   lists  /  announce  owl-users  owl-dev  john-users  john-dev  passwdqc-users  yescrypt  popa3d-users  /  oss-security  kernel-hardening  musl  sabotage  tlsify  passwords  /  crypt-dev  xvendor  /  Bugtraq  Full-Disclosure  linux-kernel  linux-netdev  linux-ext4  linux-hardening  linux-cve-announce  PHC 
Open Source and information security mailing list archives
 
Hash Suite for Android: free password hash cracker in your pocket
[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID: <878s6lzxsq.fsf@nanos.tec.linutronix.de>
Date:   Wed, 17 Mar 2021 14:59:01 +0100
From:   Thomas Gleixner <tglx@...utronix.de>
To:     Ira Weiny <ira.weiny@...el.com>, Christoph Hellwig <hch@....de>
Cc:     linux-kernel@...r.kernel.org
Subject: Re: kmap_local semantics

On Fri, Mar 12 2021 at 07:36, Ira Weiny wrote:
> On Fri, Mar 12, 2021 at 07:54:13AM +0100, Christoph Hellwig wrote:
>> So with the new kmap_local interface is it possible / advisable to
>> use local kmaps over code that might schedule(), e.g. to wait for I/O?
>
> It is possible yes.  "Advisable" I think so.  Thomas knows better than I what
> performance would be.

The performance impact is only relevant for 32bit machines with HIGHMEM
enabled. On 64bit kmap_local is a NOOP except when you enable
CONFIG_DEBUG_KMAP_LOCAL there which then actually does the mapping (on
x86 only for now) with guard maps between and that will do the 'drop
map' on schedule out and restore on schedule in dance. But for regular
64bit there is absolutely _NO_ overhead.

> FWIW I have been working on converting kmaps to kmap_local.  Most of the
> instances don't schedule AFAICT.

The whole point of kmap_local is to be preemptible and does not have the
nasty side effects of kmap_atomic, except for the 1 page per map and map
nesting ordering requirements.

> What I really don't want to see is any kmap'ings handed to another thread.  I
> am working hard to eliminate the use of kmap for that use.  Is that going to be
> a problem?

kmap != kmap_local

kmap_local mappings are thread local and can't be handed anywhere. It's
documented.

Thanks,

        tglx

Powered by blists - more mailing lists

Powered by Openwall GNU/*/Linux Powered by OpenVZ