On Sun, May 17, 2020 at 09:29:32PM -0700, Guenter Roeck wrote:
On Sun, May 17, 2020 at 08:49:39PM -0700, Ira Weiny wrote:
On Sat, May 16, 2020 at 03:33:06PM -0700, Guenter Roeck wrote:
On Thu, May 07, 2020 at 07:59:55AM -0700, ira.weiny@intel.com wrote:
From: Ira Weiny ira.weiny@intel.com
Every single architecture (including !CONFIG_HIGHMEM) calls...
pagefault_enable(); preempt_enable();
... before returning from __kunmap_atomic(). Lift this code into the kunmap_atomic() macro.
While we are at it rename __kunmap_atomic() to kunmap_atomic_high() to be consistent.
Reviewed-by: Christoph Hellwig hch@lst.de Signed-off-by: Ira Weiny ira.weiny@intel.com
This patch results in:
Starting init: /bin/sh exists but couldn't execute it (error -14)
when trying to boot microblazeel:petalogix-ml605 in qemu.
Thanks for the report. I'm not readily seeing the issue.
Do you have a kernel config? Specifically is CONFIG_HIGHMEM set?
See below. Yes, CONFIG_HIGHMEM is set.
The scripts used to build and boot the image are at:
https://github.com/groeck/linux-build-test/tree/master/rootfs/microblazeel
Hope this helps,
Thank you ...
Could you try the following patch?
commit 82c284b2bb74ca195dfcd35b70a175f010b9fd46 (HEAD -> lm-kmap17) Author: Ira Weiny ira.weiny@intel.com Date: Mon May 18 11:01:10 2020 -0700
microblaze/kmap: Don't enable pagefault/preempt twice
The kunmap_atomic clean up failed to remove the pagefault/preempt enables on this path.
Fixes: bee2128a09e6 ("arch/kunmap_atomic: consolidate duplicate code") Signed-off-by: Ira Weiny ira.weiny@intel.com
diff --git a/arch/microblaze/mm/highmem.c b/arch/microblaze/mm/highmem.c index ee8a422b2b76..92e0890416c9 100644 --- a/arch/microblaze/mm/highmem.c +++ b/arch/microblaze/mm/highmem.c @@ -57,11 +57,8 @@ void kunmap_atomic_high(void *kvaddr) int type; unsigned int idx;
- if (vaddr < __fix_to_virt(FIX_KMAP_END)) { - pagefault_enable(); - preempt_enable(); + if (vaddr < __fix_to_virt(FIX_KMAP_END)) return; - }
type = kmap_atomic_idx();