From: Ira Weiny
The core PKS functionality provides an interface for kernel users to
reserve keys to their domains set up the page tables with those keys and
control access to those domains when needed.
Define test code which exercises the core functionality of PKS via a
debugfs entry. Basic
e ("IB/rdmavt: Add device structure allocation")
> Signed-off-by: Colin Ian King
Reviewed-by: Ira Weiny
> ---
> drivers/infiniband/sw/rdmavt/vt.c | 4 +---
> 1 file changed, 1 insertion(+), 3 deletions(-)
>
> diff --git a/drivers/infiniband/sw/rdmavt/vt.c
> b/driver
On Tue, Sep 29, 2020 at 10:38:46AM +0200, Michael Kerrisk (man-pages) wrote:
> Hello Ira,
>
> On 9/28/20 6:42 PM, Ira Weiny wrote:
> > On Mon, May 04, 2020 at 05:20:16PM -0700, 'Ira Weiny' wrote:
> >> From: Ira Weiny
> >>
> >> Linux 5.8 is sl
On Thu, Oct 08, 2020 at 10:25:44AM -0700, Ralph Campbell wrote:
> ZONE_DEVICE struct pages have an extra reference count that complicates the
> code for put_page() and several places in the kernel that need to check the
> reference count to see that a page is not being used (gup, compaction,
> migr
S and then enable PKS when configured and
indicated by the CPU instance. While not strictly necessary in this
patch, ARCH_HAS_SUPERVISOR_PKEYS separates this functionality through
the patch series so it is introduced here.
Reviewed-by: Dan Williams
Co-developed-by: Ira Weiny
Signed-off-by: Ira Wei
From: Ira Weiny
In preparation for adding PKS information to struct irqentry_state_t
change all call sites and usages to pass the struct by reference
instead of by value.
Signed-off-by: Ira Weiny
---
arch/x86/entry/common.c | 16 +++-
arch/x86/include/asm/idtentry.h | 29
(), pks_mkrdwr(), and pks_key_free(). Add 2 new macros;
PAGE_KERNEL_PKEY(key) and _PAGE_PKEY(pkey).
Update the protection key documentation to cover pkeys on supervisor
pages.
Co-developed-by: Ira Weiny
Signed-off-by: Ira Weiny
Signed-off-by: Fenghua Yu
---
Documentation/core-api/protection
From: Ira Weiny
This RFC series has been reviewed by Dave Hansen.
Introduce a new page protection mechanism for supervisor pages, Protection Key
Supervisor (PKS).
2 use cases for PKS are being developed, trusted keys and PMEM. Trusted keys
is a newer use case which is still being explored
From: Ira Weiny
The PKRS MSR is defined as a per-logical-processor register. This
isolates memory access by logical CPU. Unfortunately, the MSR is not
managed by XSAVE. Therefore, tasks must save/restore the MSR value on
context switch.
Define a saved PKRS value in the task struct, as well
From: Fenghua Yu
Define a helper, update_pkey_val(), which will be used to support both
Protection Key User (PKU) and the new Protection Key for Supervisor
(PKS) in subsequent patches.
Co-developed-by: Ira Weiny
Signed-off-by: Ira Weiny
Signed-off-by: Fenghua Yu
---
arch/x86/include/asm
From: Ira Weiny
The core PKS functionality provides an interface for kernel users to
reserve keys to their domains set up the page tables with those keys and
control access to those domains when needed.
Define test code which exercises the core functionality of PKS via a
debugfs entry. Basic
From: Ira Weiny
The PKRS MSR is not managed by XSAVE. It is preserved through a context
switch but this support leaves exception handling code open to memory
accesses during exceptions.
2 possible places for preserving this state were considered,
irqentry_state_t or pt_regs.[1] pt_regs was
From: Ira Weiny
When only user space pkeys are enabled faulting within the kernel was an
unexpected condition which should never happen, therefore a WARN_ON was
added to the kernel fault handler to detect if it ever did. Now that
PKS can be enabled this is no longer the case.
Report a Pkey
From: Ira Weiny
Protection Keys User (PKU) and Protection Keys Supervisor (PKS) work in
similar fashions and can share common defines. Normally, these defines
would be put in asm/pkeys.h to be used internally and externally to the
arch code. However, the defines are required in pgtable.h and
From: Ira Weiny
Some users, such as kmap(), sometimes requires PKS to be global.
However, updating all CPUs, and worse yet all threads is expensive.
Introduce a global PKRS state which is checked at critical times to
allow the state to enable access when global PKS is required. To
accomplish
From: Ira Weiny
Should a stray write in the kernel occur persistent memory is affected more
than regular memory. A write to the wrong area of memory could result in
latent data corruption which will will persist after a reboot. PKS provides a
nice way to restrict access to persistent memory
From: Ira Weiny
Now that PKS can be enabled globaly (for all threads) add a test which
spawns a thread and tests the same PKS functionality.
The test enables/disables PKS in 1 thread while attempting to access the
page in another thread. We use the same test array as in the 'local'
P
From: Ira Weiny
The kmap() calls in these drivers are localized to a single thread. To
avoid the over head of global PKRS updates use the new kmap_thread()
call.
Cc: Mike Marciniszyn
Cc: Dennis Dalessandro
Cc: Doug Ledford
Cc: Jason Gunthorpe
Cc: Faisal Latif
Cc: Shiraz Saleem
Cc
From: Ira Weiny
These kmap() calls in the gpu stack are localized to a single thread.
To avoid the over head of global PKRS updates use the new kmap_thread()
call.
Cc: David Airlie
Cc: Daniel Vetter
Cc: Patrik Jakobsson
Signed-off-by: Ira Weiny
---
drivers/gpu/drm/amd/amdgpu/amdgpu_ttm.c
From: Ira Weiny
The kmap() calls in this FS are localized to a single thread. To avoid
the over head of global PKRS updates use the new kmap_thread() call.
Cc: Bob Peterson
Cc: Andreas Gruenbacher
Signed-off-by: Ira Weiny
---
fs/gfs2/bmap.c | 4 ++--
fs/gfs2/ops_fstype.c | 4 ++--
2
From: Ira Weiny
Most kmap() callers use the map within a single thread and have no need
for the protection domain to be enabled globally.
To differentiate these kmap users, new k[un]map_thread() calls were
introduced which are thread local.
To aid in debugging the new use of kmap_thread(), add
From: Ira Weiny
The kmap() calls in this FS are localized to a single thread. To avoid
the over head of global PKRS updates use the new kmap_thread() call.
Cc: Herbert Xu
Cc: Eric Biggers
Cc: Aditya Pakki
Signed-off-by: Ira Weiny
---
fs/ecryptfs/crypto.c | 8
fs/ecryptfs
From: Ira Weiny
The kmap() calls in this FS are localized to a single thread. To avoid
the over head of global PKRS updates use the new kmap_thread() call.
Cc: Ryusuke Konishi
Signed-off-by: Ira Weiny
---
fs/nilfs2/alloc.c | 34 +-
fs/nilfs2/cpfile.c | 4
From: Ira Weiny
The kmap() calls in this FS are localized to a single thread. To avoid
the over head of global PKRS updates use the new kmap_thread() call.
Signed-off-by: Ira Weiny
---
fs/hfs/bnode.c | 14 +++---
fs/hfs/btree.c | 20 ++--
2 files changed, 17
From: Ira Weiny
dax_direct_access() is a special case of accessing pmem via a page
offset and without a struct page.
Because the dax driver is well aware of the special protections it has
mapped memory with, call dev_access_[en|dis]able() directly instead of
the unnecessary overhead of trying
From: Ira Weiny
These kmap() calls are localized to a single thread. To avoid the over
head of global PKRS updates use the new kmap_thread() call.
Cc: Coly Li (maintainer:BCACHE (BLOCK LAYER CACHE))
Cc: Kent Overstreet (maintainer:BCACHE (BLOCK LAYER
CACHE))
Signed-off-by: Ira Weiny
From: Ira Weiny
These kmap() calls are localized to a single thread. To avoid the over head of
global PKRS updates use the new kmap_thread() call.
Signed-off-by: Ira Weiny
---
fs/jffs2/file.c | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/fs/jffs2/file.c b/fs/jffs2
From: Ira Weiny
These kmap() calls are localized to a single thread. To avoid the over
head of global PKRS updates use the new kmap_thread() call.
Cc: Greg Kroah-Hartman
Signed-off-by: Ira Weiny
---
drivers/misc/vmw_vmci/vmci_queue_pair.c | 12 ++--
1 file changed, 6 insertions
From: Ira Weiny
These kmap() calls are localized to a single thread. To avoid the over
head of global PKRS updates use the new kmap_thread() call.
Cc: Kirti Wankhede
Signed-off-by: Ira Weiny
---
samples/vfio-mdev/mbochs.c | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git
From: Ira Weiny
Protecting against stray writes is particularly important for PMEM
because, unlike writes to anonymous memory, writes to PMEM persists
across a reboot. Thus data corruption could result in permanent loss of
data.
While stray writes are more serious than reads, protection is
From: Ira Weiny
These kmap() calls are localized to a single thread. To avoid the over
head of global PKRS updates use the new kmap_thread() call.
Cc: Benjamin Herrenschmidt
Cc: Paul Mackerras
Signed-off-by: Ira Weiny
---
arch/powerpc/mm/mem.c | 4 ++--
1 file changed, 2 insertions(+), 2
From: Ira Weiny
These kmap() calls are localized to a single thread. To avoid the over
head of global PKRS updates use the new kmap_thread() call.
Cc: Alexander Viro
Cc: "Jérôme Glisse"
Cc: Martin KaFai Lau
Cc: Song Liu
Cc: Yonghong Song
Cc: Andrii Nakryiko
Cc: John Fastabe
From: Ira Weiny
The pmem driver uses a cached virtual address to access its memory
directly. Because the nvdimm driver is well aware of the special
protections it has mapped memory with, we call dev_access_[en|dis]able()
around the direct pmem->virt_addr (pmem_addr) usage instead of
From: Ira Weiny
These kmap() calls are localized to a single thread. To avoid the over
head of global PKRS updates use the new kmap_thread() call.
Signed-off-by: Ira Weiny
---
mm/memory.c | 8
mm/swapfile.c| 4 ++--
mm/userfaultfd.c | 4 ++--
3 files changed, 8 insertions
From: Ira Weiny
These kmap() calls are localized to a single thread. To avoid the over
head of global PKRS updates use the new kmap_thread() call.
Cc: Greg Kroah-Hartman
Signed-off-by: Ira Weiny
---
drivers/android/binder_alloc.c | 4 ++--
1 file changed, 2 insertions(+), 2 deletions
From: Ira Weiny
This kmap() call is localized to a single thread. To avoid the over
head of global PKRS updates use the new kmap_thread() call.
Cc: Eric Biederman
Signed-off-by: Ira Weiny
---
kernel/kexec_core.c | 8
1 file changed, 4 insertions(+), 4 deletions(-)
diff --git a
From: Ira Weiny
These kmap() calls in these drivers are localized to a single thread.
To avoid the over head of global PKRS updates use the new kmap_thread()
call.
Cc: "David S. Miller"
Cc: Jakub Kicinski
Cc: Alexey Kuznetsov
Cc: Hideaki YOSHIFUJI
Cc: Trond Myklebust
Cc: Anna Sch
From: Ira Weiny
These kmap() calls are localized to a single thread. To avoid the over
head of global PKRS updates use the new kmap_thread() call.
Cc: Greg Kroah-Hartman
Signed-off-by: Ira Weiny
---
drivers/staging/rts5208/rtsx_transport.c | 4 ++--
1 file changed, 2 insertions(+), 2
From: Ira Weiny
These kmap() calls are localized to a single thread. To avoid the over
head of global PKRS updates use the new kmap_thread() call.
Cc: Ard Biesheuvel
Signed-off-by: Ira Weiny
---
drivers/firmware/efi/capsule-loader.c | 6 +++---
drivers/firmware/efi/capsule.c| 4
From: Ira Weiny
These kmap() calls are localized to a single thread. To avoid the over
head of global PKRS updates use the new kmap_thread() call.
Cc: Miquel Raynal
Cc: Richard Weinberger
Cc: Vignesh Raghavendra
Signed-off-by: Ira Weiny
---
drivers/mtd/mtd_blkdevs.c | 12 ++--
1
From: Ira Weiny
These kmap() calls are localized to a single thread. To avoid the over
head of global PKRS updates use the new kmap_thread() call.
Cc: Stefano Stabellini
Signed-off-by: Ira Weiny
---
drivers/xen/gntalloc.c | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git
From: Ira Weiny
These kmap() calls are localized to a single thread. To avoid the over
head of global PKRS updates use the new kmap_thread() call.
Cc: Ulf Hansson
Cc: Sascha Sommer
Signed-off-by: Ira Weiny
---
drivers/mmc/host/mmc_spi.c| 4 ++--
drivers/mmc/host/sdricoh_cs.c | 4
From: Ira Weiny
These kmap() calls are localized to a single thread. To avoid the over head of
global PKRS updates use the new kmap_thread() call.
Signed-off-by: Ira Weiny
---
fs/isofs/compress.c | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/fs/isofs/compress.c b/fs
From: Ira Weiny
These kmap() calls are localized to a single thread. To avoid the over
head of global PKRS update use the new kmap_thread() call instead.
Cc: Jan Kara
Signed-off-by: Ira Weiny
---
fs/ext2/dir.c | 2 +-
fs/ext2/ext2.h | 2 +-
2 files changed, 2 insertions(+), 2 deletions
From: Ira Weiny
These kmap() calls are localized to a single thread. To avoid the over
head of global PKRS updates use the new kmap_thread() call.
Cc: "James E.J. Bottomley"
Cc: "Martin K. Petersen"
Signed-off-by: Ira Weiny
---
drivers/scsi/ipr.c | 8
dr
From: Ira Weiny
There are 3 places in namei.c where the equivalent of ext2_put_page() is
open coded. We want to use k[un]map_thread() instead of k[un]map() in
ext2_[get|put]_page().
Move ext2_put_page() to ext2.h and use it in namei.c in prep for
converting the k[un]map() code.
Cc: Jan Kara
From: Ira Weiny
These kmap() calls in this driver are localized to a single thread. To
avoid the over head of global PKRS updates use the new kmap_thread()
call.
Signed-off-by: Ira Weiny
---
drivers/target/target_core_iblock.c| 4 ++--
drivers/target/target_core_rd.c| 4
From: Ira Weiny
The kmap() calls in this FS are localized to a single thread. To avoid
the over head of global PKRS updates use the new kmap_thread() call.
Cc: Hans de Goede
Signed-off-by: Ira Weiny
---
fs/vboxsf/file.c | 12 ++--
1 file changed, 6 insertions(+), 6 deletions
From: Ira Weiny
The kmap() calls in this FS are localized to a single thread. To avoid
the over head of global PKRS updates use the new kmap_thread() call.
Cc: Anton Altaparmakov
Signed-off-by: Ira Weiny
---
fs/ntfs/aops.c | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff
From: Ira Weiny
These kmap() calls are localized to a single thread. To avoid the over
head of global PKRS updates use the new kmap_thread() call.
Cc: Alexander Viro
Cc: Jens Axboe
Signed-off-by: Ira Weiny
---
fs/aio.c | 4 ++--
fs/binfmt_elf.c | 4 ++--
fs
From: Ira Weiny
The kmap() calls in this FS are localized to a single thread. To avoid
the over head of global PKRS updates use the new kmap_thread() call.
Cc: Nicolas Pitre
Signed-off-by: Ira Weiny
---
fs/cramfs/inode.c | 10 +-
1 file changed, 5 insertions(+), 5 deletions(-)
diff
From: Ira Weiny
The kmap() calls in this FS are localized to a single thread. To avoid
the over head of global PKRS updates use the new kmap_thread() call.
Cc: David Howells
Signed-off-by: Ira Weiny
---
fs/cachefiles/rdwr.c | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff
From: Ira Weiny
The kmap() calls in this FS are localized to a single thread. To avoid
the over head of global PKRS updates use the new kmap_thread() call.
Cc: Damien Le Moal
Cc: Naohiro Aota
Signed-off-by: Ira Weiny
---
fs/zonefs/super.c | 4 ++--
1 file changed, 2 insertions(+), 2
From: Ira Weiny
The kmap() calls in this FS are localized to a single thread. To avoid
the over head of global PKRS updates use the new kmap_thread() call.
Cc: Jeff Dike
Cc: Richard Weinberger
Cc: Anton Ivanov
Signed-off-by: Ira Weiny
---
fs/hostfs/hostfs_kern.c | 12 ++--
1 file
From: Ira Weiny
The kmap() calls in this FS are localized to a single thread. To avoid
the over head of global PKRS updates use the new kmap_thread() call.
Cc: Gao Xiang
Cc: Chao Yu
Signed-off-by: Ira Weiny
---
fs/erofs/super.c | 4 ++--
fs/erofs/xattr.c | 4 ++--
2 files changed, 4
From: Ira Weiny
The kmap() calls in this FS are localized to a single thread. To avoid
the over head of global PKRS updates use the new kmap_thread() call.
Signed-off-by: Ira Weiny
---
fs/romfs/super.c | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/fs/romfs/super.c b
From: Ira Weiny
The kmap() calls in this FS are localized to a single thread. To avoid
the over head of global PKRS updates use the new kmap_thread() call.
Cc: Richard Weinberger
Signed-off-by: Ira Weiny
---
fs/ubifs/file.c | 16
1 file changed, 8 insertions(+), 8 deletions
From: Ira Weiny
The kmap() calls in this FS are localized to a single thread. To avoid
the over head of global PKRS updates use the new kmap_thread() call.
Cc: Miklos Szeredi
Signed-off-by: Ira Weiny
---
fs/fuse/readdir.c | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git
From: Ira Weiny
The kmap() calls in this FS are localized to a single thread. To avoid
the over head of global PKRS updates use the new kmap_thread() call.
Cc: Trond Myklebust
Cc: Anna Schumaker
Signed-off-by: Ira Weiny
---
fs/nfs/dir.c | 20 ++--
1 file changed, 10
From: Ira Weiny
The kmap() calls in this FS are localized to a single thread. To avoid
the over head of global PKRS updates use the new kmap_thread() call.
Cc: Jan Kara
Cc: "Theodore Ts'o"
Cc: Randy Dunlap
Cc: Alex Shi
Signed-off-by: Ira Weiny
---
fs/reiserfs/journal.c |
From: Ira Weiny
The kmap() calls in this FS are localized to a single thread. To avoid
the over head of global PKRS updates use the new kmap_thread() call.
Cc: Christoph Hellwig
Signed-off-by: Ira Weiny
---
fs/freevxfs/vxfs_immed.c | 4 ++--
1 file changed, 2 insertions(+), 2 deletions
From: Ira Weiny
The kmap() calls in this FS are localized to a single thread. To avoid
the over head of global PKRS updates use the new kmap_thread() call.
Cc: David Woodhouse
Cc: Richard Weinberger
Signed-off-by: Ira Weiny
---
fs/jffs2/file.c | 4 ++--
fs/jffs2/gc.c | 4 ++--
2 files
From: Ira Weiny
The kmap() calls in this FS are localized to a single thread. To avoid
the over head of global PKRS updates use the new kmap_thread() call.
Signed-off-by: Ira Weiny
---
fs/hfsplus/bitmap.c | 20 -
fs/hfsplus/bnode.c | 102
From: Ira Weiny
The kmap() calls in this FS are localized to a single thread. To avoid
the over head of global PKRS updates use the new kmap_thread() call.
Cc: Jaegeuk Kim
Cc: Chao Yu
Signed-off-by: Ira Weiny
---
fs/f2fs/f2fs.h | 8
1 file changed, 4 insertions(+), 4 deletions
From: Ira Weiny
The kmap() calls in this FS are localized to a single thread. To avoid
the over head of global PKRS updates use the new kmap_thread() call.
Cc: Chris Mason
Cc: Josef Bacik
Cc: David Sterba
Signed-off-by: Ira Weiny
---
fs/btrfs/check-integrity.c | 4 ++--
fs/btrfs
From: Ira Weiny
The kmap() calls in this FS are localized to a single thread. To
avoid the over head of global PKRS updates use the new kmap_thread()
call.
Cc: David Howells
Signed-off-by: Ira Weiny
---
fs/afs/dir.c | 16
fs/afs/dir_edit.c | 16
fs/afs
From: Ira Weiny
The kmap() calls in this FS are localized to a single thread. To avoid
the over head of global PKRS updates use the new kmap_thread() call.
Cc: Steve French
Signed-off-by: Ira Weiny
---
fs/cifs/cifsencrypt.c | 6 +++---
fs/cifs/file.c| 16
fs/cifs
From: Ira Weiny
The kmap() calls in these drivers are localized to a single thread. To
avoid the over head of global PKRS updates use the new kmap_thread()
call.
Cc: "David S. Miller"
Cc: Jakub Kicinski
Cc: Jesse Brandeburg
Signed-off-by: Ira Weiny
---
drivers/net/ethernet
From: Ira Weiny
The kmap() calls in this driver are localized to a single thread. To
avoid the over head of global PKRS updates use the new kmap_thread()
call.
Cc: Jens Axboe
Signed-off-by: Ira Weiny
---
drivers/block/drbd/drbd_main.c | 4 ++--
drivers/block/drbd/drbd_receiver.c | 12
From: Ira Weiny
The kmap() calls in this driver are localized to a single thread. To
avoid the over head of global PKRS updates use the new kmap_thread()
call.
Cc: Luis Chamberlain
Signed-off-by: Ira Weiny
---
drivers/base/firmware_loader/fallback.c | 4 ++--
drivers/base/firmware_loader
From: Ira Weiny
To correctly support the semantics of kmap() with Kernel protection keys
(PKS), kmap() may be required to set the protections on multiple
processors (globally). Enabling PKS globally can be very expensive
depending on the requested operation. Furthermore, enabling a domain
From: Ira Weiny
Device managed pages may have additional protections. These protections
need to be removed prior to valid use by kernel users.
Check for special treatment of device managed pages in kmap and take
action if needed. We use kmap as an interface for generic kernel code
because
From: Ira Weiny
Device managed memory exposes itself to the kernel direct map which
allows stray pointers to access these device memories.
Stray pointers to normal memory may result in a crash or other
undesirable behavior which, while unfortunate, are usually recoverable
with a reboot. Stray
From: Ira Weiny
Leaking a trusted key would be a critical security issue. PKS provides an
additional mechanism to restrict access to the memory holding trusted keys.
This series depends on the core patches and PMEM PKS API change submitted
separately.
Core PKS support:
https
d. By default the access to the trusted
keys PKS 'domain' is disabled for all threads on all CPUs.
[1] https://lore.kernel.org/linux-mm/20200924132904.1391-1-r...@kernel.org/
Signed-off-by: Elena Reshetova
Signed-off-by: Ira Weiny
---
include/keys/trusted-type.h | 2
From: Ira Weiny
Add a vmalloc call which allocates and creates a new mapping with the
specified pkey in the mapping.
This is currently a placeholder for the idea of an interface. This
does not attempt to update the direct map and as such leaves access via
that map open. Protecting that map
On Fri, Oct 09, 2020 at 12:42:49PM -0700, 'Ira Weiny' wrote:
> From: Ira Weiny
>
> This RFC series has been reviewed by Dave Hansen.
>
> Introduce a new page protection mechanism for supervisor pages, Protection Key
> Supervisor (PKS).
>
> 2 use cases for PKS
On Sat, Oct 10, 2020 at 12:03:49AM +0200, Daniel Vetter wrote:
> On Fri, Oct 09, 2020 at 12:49:44PM -0700, ira.we...@intel.com wrote:
> > From: Ira Weiny
> >
> > These kmap() calls in the gpu stack are localized to a single thread.
> > To avoid the over head of glob
On Sat, Oct 10, 2020 at 11:36:49AM +, Bernard Metzler wrote:
> -ira.we...@intel.com wrote: -
>
[snip]
> >@@ -505,7 +505,7 @@ static int siw_tx_hdt(struct siw_iwarp_tx *c_tx,
> >struct socket *s)
> > page_array[seg] = p;
> >
> >
On Sat, Oct 10, 2020 at 10:20:34AM +0800, Coly Li wrote:
> On 2020/10/10 03:50, ira.we...@intel.com wrote:
> > From: Ira Weiny
> >
> > These kmap() calls are localized to a single thread. To avoid the over
> > head of global PKRS updates use the new kmap_thre
On Fri, Oct 09, 2020 at 07:53:07PM -0700, John Hubbard wrote:
> On 10/9/20 12:50 PM, ira.we...@intel.com wrote:
> > From: Ira Weiny
> >
> > The pmem driver uses a cached virtual address to access its memory
> > directly. Because the nvdimm driver is well aware of the
On Fri, Oct 09, 2020 at 06:30:36PM -0700, Eric Biggers wrote:
> On Sat, Oct 10, 2020 at 01:39:54AM +0100, Matthew Wilcox wrote:
> > On Fri, Oct 09, 2020 at 02:34:34PM -0700, Eric Biggers wrote:
> > > On Fri, Oct 09, 2020 at 12:49:57PM -0700, ira.we...@intel.com wrote:
> > > > The kmap() calls in th
On Mon, Oct 12, 2020 at 05:44:38PM +0100, Matthew Wilcox wrote:
> On Mon, Oct 12, 2020 at 09:28:29AM -0700, Dave Hansen wrote:
> > kmap_atomic() is always preferred over kmap()/kmap_thread().
> > kmap_atomic() is _much_ more lightweight since its TLB invalidation is
> > always CPU-local and never b
On Mon, Oct 12, 2020 at 09:02:54PM +0100, Matthew Wilcox wrote:
> On Mon, Oct 12, 2020 at 12:53:54PM -0700, Ira Weiny wrote:
> > On Mon, Oct 12, 2020 at 05:44:38PM +0100, Matthew Wilcox wrote:
> > > On Mon, Oct 12, 2020 at 09:28:29AM -0700, Dave Hansen wrote:
> > >
On Tue, Oct 13, 2020 at 10:46:16AM -0700, Dave Hansen wrote:
> On 10/9/20 12:42 PM, ira.we...@intel.com wrote:
> > Protection Keys User (PKU) and Protection Keys Supervisor (PKS) work
> > in similar fashions and can share common defines.
>
> Could we be a bit less abstract? PKS and PKU each have:
On Tue, Oct 13, 2020 at 08:36:43PM +0100, Matthew Wilcox wrote:
> On Tue, Oct 13, 2020 at 11:44:29AM -0700, Dan Williams wrote:
> > On Fri, Oct 9, 2020 at 12:52 PM wrote:
> > >
> > > From: Ira Weiny
> > >
> > > The kmap() calls in this FS are loca
On Tue, Oct 13, 2020 at 09:01:49PM +0100, Al Viro wrote:
> On Tue, Oct 13, 2020 at 08:36:43PM +0100, Matthew Wilcox wrote:
>
> > static inline void copy_to_highpage(struct page *to, void *vfrom, unsigned
> > int size)
> > {
> > char *vto = kmap_atomic(to);
> >
> > memcpy(vto, vfrom, size
On Tue, Oct 13, 2020 at 12:25:44PM +0100, Christoph Hellwig wrote:
> > - kaddr = kmap(pp);
> > + kaddr = kmap_thread(pp);
> > memcpy(kaddr, vip->vii_immed.vi_immed + offset, PAGE_SIZE);
> > - kunmap(pp);
> > + kunmap_thread(pp);
>
> You only Cced me on this particular patch, which mean
On Mon, May 04, 2020 at 05:20:16PM -0700, 'Ira Weiny' wrote:
> From: Ira Weiny
>
> Linux 5.8 is slated to have STATX_ATTR_DAX support.
>
> https://lore.kernel.org/lkml/20200428002142.404144-4-ira.we...@intel.com/
> https://lore.kernel.org/lkml/20200504161352.GA13783
On Sat, Sep 26, 2020 at 02:54:17PM +0800, Wang Qing wrote:
> Use kobj_to_dev() instead of container_of().
>
> Signed-off-by: Wang Qing
Reviewed-by: Ira Weiny
> ---
> drivers/nvdimm/namespace_devs.c | 2 +-
> drivers/nvdimm/region_devs.c| 4 ++--
> 2 files change
On Mon, Sep 28, 2020 at 12:33:37AM +0800, Hui Su wrote:
> As the comments said, if @addr is NULL, no operation
> is performed, check the addr first in vfree() and
> vfree_atomic() maybe a better choice.
I don't see how this change helps anything. kmemleak_free() checks addr so no
danger there. A
On Sun, Sep 27, 2020 at 11:21:57PM -0700, John Hubbard wrote:
> For quite a while, I was doing a quick hack to gup_test.c (previously,
> gup_benchmark.c) whenever I wanted to try out my changes to dump_page().
> This makes that hack unnecessary, and instead allows anyone to easily
> get the same co
On Sun, Sep 27, 2020 at 11:21:58PM -0700, John Hubbard wrote:
> Run benchmarks on the _fast variants of gup and pup, as originally
> intended.
>
> Run the new gup_test sub-test: dump pages. In addition to exercising the
> dump_page() call, it also demonstrates the various options you can use
> to
From: Ira Weiny
Update the document to reflect ext4 and xfs now behave the same.
Reviewed-by: Jan Kara
Signed-off-by: Ira Weiny
---
Changes from RFC:
Update with ext2 text...
---
Documentation/filesystems/dax.txt | 6 +++---
1 file changed, 3 insertions(+), 3 deletions(-)
diff
From: Ira Weiny
Add a flag ([EXT4|FS]_DAX_FL) to preserve FS_XFLAG_DAX in the ext4
inode.
Set the flag to be user visible and changeable. Set the flag to be
inherited. Allow applications to change the flag at any time except if
it conflicts with the set of mutually exclusive flags (Currently
From: Ira Weiny
To prevent complications with in memory inodes we only set S_DAX on
inode load. FS_XFLAG_DAX can be changed at any time and S_DAX will
change after inode eviction and reload.
Add init bool to ext4_set_inode_flags() to indicate if the inode is
being newly initialized.
Assert
From: Ira Weiny
When preventing DAX and journaling on an inode. Use the effective DAX
check rather than the mount option.
This will be required to support per inode DAX flags.
Reviewed-by: Jan Kara
Signed-off-by: Ira Weiny
---
fs/ext4/ioctl.c | 4 ++--
1 file changed, 2 insertions(+), 2
From: Ira Weiny
Verity and DAX are incompatible. Changing the DAX mode due to a verity
flag change is wrong without a corresponding address_space_operations
update.
Make the 2 options mutually exclusive by returning an error if DAX was
set first.
(Setting DAX is already disabled if Verity is
From: Ira Weiny
We add 'always', 'never', and 'inode' (default). '-o dax' continues to
operate the same which is equivalent to 'always'. This new
functionality is limited to ext4 only.
Specifically we introduce a 2nd DAX mount flag EXT4_MOU
From: Ira Weiny
Changes from V4:
Fix up DAX mutual exclusion with other flags.
Add clean up patch (remove jflags)
Changes from V3:
Change EXT4_DAX_FL to bit24
Cache device DAX support in the super block and use that is
ext4_should_use_dax
601 - 700 of 1014 matches
Mail list logo