* Run armv7 32 bit userspace on aarch64
@ 2015-10-07 22:46 Shi, Yang
2015-10-08 11:12 ` Will Deacon
0 siblings, 1 reply; 11+ messages in thread
From: Shi, Yang @ 2015-10-07 22:46 UTC (permalink / raw)
To: linux-arm-kernel
Hi folks,
I'm trying to run armv7 little endian userspace on qemu aarch64 with
4.1.x kernel. I was told by someone such usecase is valid and I have
CONFIG_COMPAT enabled in my kernel.
But, I ran into the below error. It looks the userspace application is
trying to write a readonly page. I got the similar failure on arm vfp
with Linaro images (4.1 kernel) too.
Did anyone have tried it recently?
Any suggestion is appreciated.
Thanks,
Yang
init[1]: unhandled level 3 permission fault (11) at 0x4cb2fad3, esr
0x9200004f
pgd = ffffffc0040c6000
[4cb2fad3] *pgd=00000000440d1003, *pud=00000000440d1003,
*pmd=00000000440d2003, *pte=0020000045974fd3
CPU: 0 PID: 1 Comm: init Not tainted 4.1.9-WR8.0.0.0_standard #3
Hardware name: linux,dummy-virt (DT)
task: ffffffc006900000 ti: ffffffc006908000 task.ti: ffffffc006908000
PC is at 0x4cb7747c
LR is at 0x4cb29c5c
pc : [<000000004cb7747c>] lr : [<000000004cb29c5c>] pstate: 40060010
sp : 00000000ffc5a358
x12: 000000004cbe8474
x11: 0000000000000000 x10: 000000004caa0000
x9 : 0000000000000000 x8 : 0000000000000000
x7 : 0000000000000036 x6 : 0000000000000500
x5 : 0000000000000005 x4 : 0000000000000000
x3 : 000000004cb2fad3 x2 : 0000000000000013
x1 : 000000000000596c x0 : 000000004cb2fad3
CPU: 0 PID: 1 Comm: init Not tainted 4.1.9-WR8.0.0.0_standard #3
Hardware name: linux,dummy-virt (DT)
Call trace:
[<ffffffc00008a4b0>] dump_backtrace+0x0/0x128
[<ffffffc00008a5f8>] show_stack+0x20/0x30
[<ffffffc000688448>] dump_stack+0x80/0xc4
[<ffffffc00068667c>] panic+0xd8/0x210
[<ffffffc000686514>] __do_user_fault.isra.1+0xf0/0xf4
[<ffffffc000690870>] do_page_fault+0x378/0x380
[<ffffffc00008237c>] do_mem_abort+0x54/0xb0
Exception stack(0xffffffc00690be30 to 0xffffffc00690bf50)
be20: 00400000 00000000 00000000
00000000
be40: ffffffff ffffffff 4cb7747c 00000000 60060010 00000000 00000011
00000000
be60: 00000184 00000000 00000036 00000000 00698000 ffffffc0 06908000
ffffffc0
be80: ffffffff ffffffff 00020802 00000000 00000026 00000100 00000001
00000000
bea0: 00000000 00000000 00083c70 ffffffc0 00400000 00000000 00000000
00000000
bec0: ffffffff ffffffff 4ca7ffa4 00000000 4cb2fad3 00000000 0000596c
00000000
bee0: 00000013 00000000 4cb2fad3 00000000 00000000 00000000 00000005
00000000
bf00: 00000500 00000000 00000036 00000000 00000000 00000000 00000000
00000000
bf20: 4caa0000 00000000 00000000 00000000 4cbe8474 00000000 ffc5a358
00000000
bf40: 4cb29c5c 00000000 00000000 00000000
---[ end Kernel panic - not syncing: BUG!
^ permalink raw reply [flat|nested] 11+ messages in thread
* Run armv7 32 bit userspace on aarch64
2015-10-07 22:46 Run armv7 32 bit userspace on aarch64 Shi, Yang
@ 2015-10-08 11:12 ` Will Deacon
2015-10-09 22:32 ` Shi, Yang
0 siblings, 1 reply; 11+ messages in thread
From: Will Deacon @ 2015-10-08 11:12 UTC (permalink / raw)
To: linux-arm-kernel
On Wed, Oct 07, 2015 at 03:46:57PM -0700, Shi, Yang wrote:
> I'm trying to run armv7 little endian userspace on qemu aarch64 with 4.1.x
> kernel. I was told by someone such usecase is valid and I have CONFIG_COMPAT
> enabled in my kernel.
>
> But, I ran into the below error. It looks the userspace application is
> trying to write a readonly page. I got the similar failure on arm vfp with
> Linaro images (4.1 kernel) too.
>
> Did anyone have tried it recently?
-rc4 seems to be working fine with Debian Jessie armhf on my Juno boards.
Do you have a good way of reproducing this with a mainline kernel?
Will
^ permalink raw reply [flat|nested] 11+ messages in thread
* Run armv7 32 bit userspace on aarch64
2015-10-08 11:12 ` Will Deacon
@ 2015-10-09 22:32 ` Shi, Yang
2015-10-10 0:28 ` Shi, Yang
0 siblings, 1 reply; 11+ messages in thread
From: Shi, Yang @ 2015-10-09 22:32 UTC (permalink / raw)
To: linux-arm-kernel
On 10/8/2015 4:12 AM, Will Deacon wrote:
> On Wed, Oct 07, 2015 at 03:46:57PM -0700, Shi, Yang wrote:
>> I'm trying to run armv7 little endian userspace on qemu aarch64 with 4.1.x
>> kernel. I was told by someone such usecase is valid and I have CONFIG_COMPAT
>> enabled in my kernel.
>>
>> But, I ran into the below error. It looks the userspace application is
>> trying to write a readonly page. I got the similar failure on arm vfp with
>> Linaro images (4.1 kernel) too.
>>
>> Did anyone have tried it recently?
>
> -rc4 seems to be working fine with Debian Jessie armhf on my Juno boards.
>
> Do you have a good way of reproducing this with a mainline kernel?
It seems a qemu's bug. I can get both ubuntu and openembedded userspace
bootup on my LS2085 board with 4.1 kernel.
Thanks,
Yang
>
> Will
>
^ permalink raw reply [flat|nested] 11+ messages in thread
* Run armv7 32 bit userspace on aarch64
2015-10-09 22:32 ` Shi, Yang
@ 2015-10-10 0:28 ` Shi, Yang
2015-10-10 21:25 ` Arnd Bergmann
0 siblings, 1 reply; 11+ messages in thread
From: Shi, Yang @ 2015-10-10 0:28 UTC (permalink / raw)
To: linux-arm-kernel
On 10/9/2015 3:32 PM, Shi, Yang wrote:
> On 10/8/2015 4:12 AM, Will Deacon wrote:
>> On Wed, Oct 07, 2015 at 03:46:57PM -0700, Shi, Yang wrote:
>>> I'm trying to run armv7 little endian userspace on qemu aarch64 with
>>> 4.1.x
>>> kernel. I was told by someone such usecase is valid and I have
>>> CONFIG_COMPAT
>>> enabled in my kernel.
>>>
>>> But, I ran into the below error. It looks the userspace application is
>>> trying to write a readonly page. I got the similar failure on arm vfp
>>> with
>>> Linaro images (4.1 kernel) too.
>>>
>>> Did anyone have tried it recently?
>>
>> -rc4 seems to be working fine with Debian Jessie armhf on my Juno boards.
>>
>> Do you have a good way of reproducing this with a mainline kernel?
>
> It seems a qemu's bug. I can get both ubuntu and openembedded userspace
> bootup on my LS2085 board with 4.1 kernel.
Some new findings pointed me to another direction.
I just tried to build OE userspace with gcc 5.2 (default toolchain in OE
now), it fails to boot up with the same error.
Then I tried the below test on 4.1 kernel:
Linaro OE userspace image (4.9 toolchain) Failed
My OE build with 4.9.3 toolchain Success
My OE build with 5.2 toolchain Failed
Ubuntu image Success
Linaro image is from:
http://snapshots.linaro.org/openembedded/images/minimal-armv7a-gcc-4.9/348/linaro-image-minimal-genericarmv7a-20150922-348.rootfs.tar.gz
Ubuntu image is from:
http://snapshots.linaro.org/ubuntu/images/developer/710/linaro-vivid-developer-20150914-710.tar.gz
Yang
>
> Thanks,
> Yang
>
>>
>> Will
>>
>
^ permalink raw reply [flat|nested] 11+ messages in thread
* Run armv7 32 bit userspace on aarch64
2015-10-10 0:28 ` Shi, Yang
@ 2015-10-10 21:25 ` Arnd Bergmann
2015-10-12 17:26 ` Shi, Yang
0 siblings, 1 reply; 11+ messages in thread
From: Arnd Bergmann @ 2015-10-10 21:25 UTC (permalink / raw)
To: linux-arm-kernel
On Friday 09 October 2015 17:28:08 Shi, Yang wrote:
> On 10/9/2015 3:32 PM, Shi, Yang wrote:
> > On 10/8/2015 4:12 AM, Will Deacon wrote:
> >> On Wed, Oct 07, 2015 at 03:46:57PM -0700, Shi, Yang wrote:
> >>> I'm trying to run armv7 little endian userspace on qemu aarch64 with
> >>> 4.1.x
> >>> kernel. I was told by someone such usecase is valid and I have
> >>> CONFIG_COMPAT
> >>> enabled in my kernel.
> >>>
> >>> But, I ran into the below error. It looks the userspace application is
> >>> trying to write a readonly page. I got the similar failure on arm vfp
> >>> with
> >>> Linaro images (4.1 kernel) too.
> >>>
> >>> Did anyone have tried it recently?
> >>
> >> -rc4 seems to be working fine with Debian Jessie armhf on my Juno boards.
> >>
> >> Do you have a good way of reproducing this with a mainline kernel?
> >
> > It seems a qemu's bug. I can get both ubuntu and openembedded userspace
> > bootup on my LS2085 board with 4.1 kernel.
>
> Some new findings pointed me to another direction.
>
> I just tried to build OE userspace with gcc 5.2 (default toolchain in OE
> now), it fails to boot up with the same error.
>
> Then I tried the below test on 4.1 kernel:
>
> Linaro OE userspace image (4.9 toolchain) Failed
> My OE build with 4.9.3 toolchain Success
> My OE build with 5.2 toolchain Failed
> Ubuntu image Success
Does your kernel have 64KB pages enabled? If it does, most 32-bit user space
won't run, except when building it with relatively new toolchains.
Try running with the default 4KB page size if that is the problem.
Arnd
^ permalink raw reply [flat|nested] 11+ messages in thread
* Run armv7 32 bit userspace on aarch64
2015-10-10 21:25 ` Arnd Bergmann
@ 2015-10-12 17:26 ` Shi, Yang
2015-10-12 17:38 ` Shi, Yang
0 siblings, 1 reply; 11+ messages in thread
From: Shi, Yang @ 2015-10-12 17:26 UTC (permalink / raw)
To: linux-arm-kernel
On 10/10/2015 2:25 PM, Arnd Bergmann wrote:
> On Friday 09 October 2015 17:28:08 Shi, Yang wrote:
>> On 10/9/2015 3:32 PM, Shi, Yang wrote:
>>> On 10/8/2015 4:12 AM, Will Deacon wrote:
>>>> On Wed, Oct 07, 2015 at 03:46:57PM -0700, Shi, Yang wrote:
>>>>> I'm trying to run armv7 little endian userspace on qemu aarch64 with
>>>>> 4.1.x
>>>>> kernel. I was told by someone such usecase is valid and I have
>>>>> CONFIG_COMPAT
>>>>> enabled in my kernel.
>>>>>
>>>>> But, I ran into the below error. It looks the userspace application is
>>>>> trying to write a readonly page. I got the similar failure on arm vfp
>>>>> with
>>>>> Linaro images (4.1 kernel) too.
>>>>>
>>>>> Did anyone have tried it recently?
>>>>
>>>> -rc4 seems to be working fine with Debian Jessie armhf on my Juno boards.
>>>>
>>>> Do you have a good way of reproducing this with a mainline kernel?
>>>
>>> It seems a qemu's bug. I can get both ubuntu and openembedded userspace
>>> bootup on my LS2085 board with 4.1 kernel.
>>
>> Some new findings pointed me to another direction.
>>
>> I just tried to build OE userspace with gcc 5.2 (default toolchain in OE
>> now), it fails to boot up with the same error.
>>
>> Then I tried the below test on 4.1 kernel:
>>
>> Linaro OE userspace image (4.9 toolchain) Failed
>> My OE build with 4.9.3 toolchain Success
>> My OE build with 5.2 toolchain Failed
>> Ubuntu image Success
>
> Does your kernel have 64KB pages enabled? If it does, most 32-bit user space
> won't run, except when building it with relatively new toolchains.
No, I just use the default 4KB pages, but is is using 48 bits VA. The
below is my kernel config (kernel features section)
#
# Kernel Features
#
#
# ARM errata workarounds via the alternatives framework
#
CONFIG_ARM64_ERRATUM_826319=y
CONFIG_ARM64_ERRATUM_827319=y
CONFIG_ARM64_ERRATUM_824069=y
CONFIG_ARM64_ERRATUM_819472=y
CONFIG_ARM64_ERRATUM_832075=y
CONFIG_ARM64_ERRATUM_845719=y
CONFIG_ARM64_ERRATUM_843419=y
CONFIG_ARM64_4K_PAGES=y
# CONFIG_ARM64_64K_PAGES is not set
# CONFIG_ARM64_VA_BITS_39 is not set
CONFIG_ARM64_VA_BITS_48=y
CONFIG_ARM64_VA_BITS=48
# CONFIG_CPU_BIG_ENDIAN is not set
CONFIG_SMP=y
# CONFIG_SCHED_MC is not set
# CONFIG_SCHED_SMT is not set
CONFIG_NR_CPUS=8
CONFIG_HOTPLUG_CPU=y
# CONFIG_PREEMPT_NONE is not set
# CONFIG_PREEMPT_VOLUNTARY is not set
CONFIG_PREEMPT=y
CONFIG_PREEMPT_COUNT=y
CONFIG_HZ=100
CONFIG_ARCH_HAS_HOLES_MEMORYMODEL=y
CONFIG_ARCH_SPARSEMEM_ENABLE=y
CONFIG_ARCH_SPARSEMEM_DEFAULT=y
CONFIG_ARCH_SELECT_MEMORY_MODEL=y
CONFIG_HAVE_ARCH_PFN_VALID=y
CONFIG_HW_PERF_EVENTS=y
CONFIG_SYS_SUPPORTS_HUGETLBFS=y
CONFIG_ARCH_WANT_GENERAL_HUGETLB=y
CONFIG_ARCH_WANT_HUGE_PMD_SHARE=y
CONFIG_ARCH_HAS_CACHE_LINE_SIZE=y
CONFIG_SELECT_MEMORY_MODEL=y
CONFIG_SPARSEMEM_MANUAL=y
CONFIG_SPARSEMEM=y
CONFIG_HAVE_MEMORY_PRESENT=y
CONFIG_SPARSEMEM_EXTREME=y
CONFIG_SPARSEMEM_VMEMMAP_ENABLE=y
CONFIG_SPARSEMEM_VMEMMAP=y
CONFIG_HAVE_MEMBLOCK=y
CONFIG_NO_BOOTMEM=y
# CONFIG_HAVE_BOOTMEM_INFO_NODE is not set
CONFIG_PAGEFLAGS_EXTENDED=y
CONFIG_SPLIT_PTLOCK_CPUS=4
CONFIG_COMPACTION=y
CONFIG_MIGRATION=y
CONFIG_PHYS_ADDR_T_64BIT=y
CONFIG_ZONE_DMA_FLAG=1
CONFIG_BOUNCE=y
# CONFIG_KSM is not set
CONFIG_DEFAULT_MMAP_MIN_ADDR=4096
# CONFIG_TRANSPARENT_HUGEPAGE is not set
# CONFIG_CLEANCACHE is not set
# CONFIG_FRONTSWAP is not set
# CONFIG_CMA is not set
# CONFIG_ZPOOL is not set
# CONFIG_ZBUD is not set
# CONFIG_ZSMALLOC is not set
CONFIG_GENERIC_EARLY_IOREMAP=y
# CONFIG_SECCOMP is not set
# CONFIG_XEN is not set
CONFIG_FORCE_MAX_ZONEORDER=11
CONFIG_ARMV8_DEPRECATED=y
CONFIG_SWP_EMULATION=y
# CONFIG_CP15_BARRIER_EMULATION is not set
# CONFIG_SETEND_EMULATION is not set
#
# Boot options
#
CONFIG_CMDLINE="console=ttyAMA0"
# CONFIG_CMDLINE_FORCE is not set
CONFIG_EFI_STUB=y
CONFIG_EFI=y
CONFIG_DMI=y
#
# Userspace binary formats
#
CONFIG_BINFMT_ELF=y
CONFIG_COMPAT_BINFMT_ELF=y
CONFIG_CORE_DUMP_DEFAULT_ELF_HEADERS=y
CONFIG_BINFMT_SCRIPT=y
# CONFIG_HAVE_AOUT is not set
CONFIG_BINFMT_MISC=m
CONFIG_COREDUMP=y
CONFIG_COMPAT=y
CONFIG_SYSVIPC_COMPAT=y
And, I also checked my busybox build flags for both 4.9.3 and 5.2,
actually, they are using the same flags:
arm-linux-gnueabi-gcc -march=armv7-a -marm -mthumb-interwork
-mfloat-abi=softfp
--sysroot=/home/yshi/workspace/test-4.1/qemuarma9/bitbake_build/tmp/sysroots/qemuarma9
-Wp,-MD,archival/libarchive/.filter_accept_all.o.d -std=gnu99
-Iinclude -Ilibbb -include include/autoconf.h -D_GNU_SOURCE -DNDEBUG
-D_LARGEFILE_SOURCE -D_LARGEFILE64_SOURCE -D_FILE_OFFSET_BITS=64
-D"BB_VER=KBUILD_STR(1.23.2)" -DBB_BT=AUTOCONF_TIMESTAMP -Wall -Wshadow
-Wwrite-strings -Wundef -Wstrict-prototypes -Wunused -Wunused-parameter
-Wunused-function -Wunused-value -Wmissing-prototypes
-Wmissing-declarations -Wno-format-security
-Wdeclaration-after-statement -Wold-style-definition -fno-builtin-strlen
-finline-limit=0 -fomit-frame-pointer -ffunction-sections
-fdata-sections -fno-guess-branch-probability -funsigned-char
-static-libgcc -falign-functions=1 -falign-jumps=1 -falign-labels=1
-falign-loops=1 -fno-unwind-tables -fno-asynchronous-unwind-tables -Os
-O2 -pipe -g -O2 -pipe -g -D"KBUILD_STR(s)=#s"
-D"KBUILD_BASENAME=KBUILD_STR(filter_accept_all)"
-D"KBUILD_MODNAME=KBUILD_STR(filter_accept_all)" -c -o
archival/libarchive/filter_accept_all.o
archival/libarchive/filter_accept_all.c
Thanks,
Yang
>
> Try running with the default 4KB page size if that is the problem.
>
> Arnd
>
^ permalink raw reply [flat|nested] 11+ messages in thread
* Run armv7 32 bit userspace on aarch64
2015-10-12 17:26 ` Shi, Yang
@ 2015-10-12 17:38 ` Shi, Yang
2015-10-12 17:50 ` Will Deacon
0 siblings, 1 reply; 11+ messages in thread
From: Shi, Yang @ 2015-10-12 17:38 UTC (permalink / raw)
To: linux-arm-kernel
On 10/12/2015 10:26 AM, Shi, Yang wrote:
> On 10/10/2015 2:25 PM, Arnd Bergmann wrote:
>> On Friday 09 October 2015 17:28:08 Shi, Yang wrote:
>>> On 10/9/2015 3:32 PM, Shi, Yang wrote:
>>>> On 10/8/2015 4:12 AM, Will Deacon wrote:
>>>>> On Wed, Oct 07, 2015 at 03:46:57PM -0700, Shi, Yang wrote:
>>>>>> I'm trying to run armv7 little endian userspace on qemu aarch64 with
>>>>>> 4.1.x
>>>>>> kernel. I was told by someone such usecase is valid and I have
>>>>>> CONFIG_COMPAT
>>>>>> enabled in my kernel.
>>>>>>
>>>>>> But, I ran into the below error. It looks the userspace
>>>>>> application is
>>>>>> trying to write a readonly page. I got the similar failure on arm vfp
>>>>>> with
>>>>>> Linaro images (4.1 kernel) too.
>>>>>>
>>>>>> Did anyone have tried it recently?
>>>>>
>>>>> -rc4 seems to be working fine with Debian Jessie armhf on my Juno
>>>>> boards.
>>>>>
>>>>> Do you have a good way of reproducing this with a mainline kernel?
>>>>
>>>> It seems a qemu's bug. I can get both ubuntu and openembedded userspace
>>>> bootup on my LS2085 board with 4.1 kernel.
>>>
>>> Some new findings pointed me to another direction.
>>>
>>> I just tried to build OE userspace with gcc 5.2 (default toolchain in OE
>>> now), it fails to boot up with the same error.
>>>
>>> Then I tried the below test on 4.1 kernel:
>>>
>>> Linaro OE userspace image (4.9 toolchain) Failed
>>> My OE build with 4.9.3 toolchain Success
>>> My OE build with 5.2 toolchain Failed
>>> Ubuntu image Success
>>
>> Does your kernel have 64KB pages enabled? If it does, most 32-bit user
>> space
>> won't run, except when building it with relatively new toolchains.
>
BTW, it may be related to unaligned address.
init[1]: unhandled level 3 translation fault (11) at 0x43acfad3, esr
0x92000047
pgd = ffff80007b8be000
[43acfad3] *pgd=00000000fb8c5003, *pud=00000000fb8c1003,
*pmd=00000000fb8c2003, *pte=0000000000000000
The userspace is trying to write to 0x43acfad3, the permission is readonly.
Thanks,
Yang
> No, I just use the default 4KB pages, but is is using 48 bits VA. The
> below is my kernel config (kernel features section)
>
> #
> # Kernel Features
> #
>
> #
> # ARM errata workarounds via the alternatives framework
> #
> CONFIG_ARM64_ERRATUM_826319=y
> CONFIG_ARM64_ERRATUM_827319=y
> CONFIG_ARM64_ERRATUM_824069=y
> CONFIG_ARM64_ERRATUM_819472=y
> CONFIG_ARM64_ERRATUM_832075=y
> CONFIG_ARM64_ERRATUM_845719=y
> CONFIG_ARM64_ERRATUM_843419=y
> CONFIG_ARM64_4K_PAGES=y
> # CONFIG_ARM64_64K_PAGES is not set
> # CONFIG_ARM64_VA_BITS_39 is not set
> CONFIG_ARM64_VA_BITS_48=y
> CONFIG_ARM64_VA_BITS=48
> # CONFIG_CPU_BIG_ENDIAN is not set
> CONFIG_SMP=y
> # CONFIG_SCHED_MC is not set
> # CONFIG_SCHED_SMT is not set
> CONFIG_NR_CPUS=8
> CONFIG_HOTPLUG_CPU=y
> # CONFIG_PREEMPT_NONE is not set
> # CONFIG_PREEMPT_VOLUNTARY is not set
> CONFIG_PREEMPT=y
> CONFIG_PREEMPT_COUNT=y
> CONFIG_HZ=100
> CONFIG_ARCH_HAS_HOLES_MEMORYMODEL=y
> CONFIG_ARCH_SPARSEMEM_ENABLE=y
> CONFIG_ARCH_SPARSEMEM_DEFAULT=y
> CONFIG_ARCH_SELECT_MEMORY_MODEL=y
> CONFIG_HAVE_ARCH_PFN_VALID=y
> CONFIG_HW_PERF_EVENTS=y
> CONFIG_SYS_SUPPORTS_HUGETLBFS=y
> CONFIG_ARCH_WANT_GENERAL_HUGETLB=y
> CONFIG_ARCH_WANT_HUGE_PMD_SHARE=y
> CONFIG_ARCH_HAS_CACHE_LINE_SIZE=y
> CONFIG_SELECT_MEMORY_MODEL=y
> CONFIG_SPARSEMEM_MANUAL=y
> CONFIG_SPARSEMEM=y
> CONFIG_HAVE_MEMORY_PRESENT=y
> CONFIG_SPARSEMEM_EXTREME=y
> CONFIG_SPARSEMEM_VMEMMAP_ENABLE=y
> CONFIG_SPARSEMEM_VMEMMAP=y
> CONFIG_HAVE_MEMBLOCK=y
> CONFIG_NO_BOOTMEM=y
> # CONFIG_HAVE_BOOTMEM_INFO_NODE is not set
> CONFIG_PAGEFLAGS_EXTENDED=y
> CONFIG_SPLIT_PTLOCK_CPUS=4
> CONFIG_COMPACTION=y
> CONFIG_MIGRATION=y
> CONFIG_PHYS_ADDR_T_64BIT=y
> CONFIG_ZONE_DMA_FLAG=1
> CONFIG_BOUNCE=y
> # CONFIG_KSM is not set
> CONFIG_DEFAULT_MMAP_MIN_ADDR=4096
> # CONFIG_TRANSPARENT_HUGEPAGE is not set
> # CONFIG_CLEANCACHE is not set
> # CONFIG_FRONTSWAP is not set
> # CONFIG_CMA is not set
> # CONFIG_ZPOOL is not set
> # CONFIG_ZBUD is not set
> # CONFIG_ZSMALLOC is not set
> CONFIG_GENERIC_EARLY_IOREMAP=y
> # CONFIG_SECCOMP is not set
> # CONFIG_XEN is not set
> CONFIG_FORCE_MAX_ZONEORDER=11
> CONFIG_ARMV8_DEPRECATED=y
> CONFIG_SWP_EMULATION=y
> # CONFIG_CP15_BARRIER_EMULATION is not set
> # CONFIG_SETEND_EMULATION is not set
>
> #
> # Boot options
> #
> CONFIG_CMDLINE="console=ttyAMA0"
> # CONFIG_CMDLINE_FORCE is not set
> CONFIG_EFI_STUB=y
> CONFIG_EFI=y
> CONFIG_DMI=y
>
> #
> # Userspace binary formats
> #
> CONFIG_BINFMT_ELF=y
> CONFIG_COMPAT_BINFMT_ELF=y
> CONFIG_CORE_DUMP_DEFAULT_ELF_HEADERS=y
> CONFIG_BINFMT_SCRIPT=y
> # CONFIG_HAVE_AOUT is not set
> CONFIG_BINFMT_MISC=m
> CONFIG_COREDUMP=y
> CONFIG_COMPAT=y
> CONFIG_SYSVIPC_COMPAT=y
>
>
> And, I also checked my busybox build flags for both 4.9.3 and 5.2,
> actually, they are using the same flags:
>
> arm-linux-gnueabi-gcc -march=armv7-a -marm -mthumb-interwork
> -mfloat-abi=softfp
> --sysroot=/home/yshi/workspace/test-4.1/qemuarma9/bitbake_build/tmp/sysroots/qemuarma9
> -Wp,-MD,archival/libarchive/.filter_accept_all.o.d -std=gnu99
> -Iinclude -Ilibbb -include include/autoconf.h -D_GNU_SOURCE -DNDEBUG
> -D_LARGEFILE_SOURCE -D_LARGEFILE64_SOURCE -D_FILE_OFFSET_BITS=64
> -D"BB_VER=KBUILD_STR(1.23.2)" -DBB_BT=AUTOCONF_TIMESTAMP -Wall -Wshadow
> -Wwrite-strings -Wundef -Wstrict-prototypes -Wunused -Wunused-parameter
> -Wunused-function -Wunused-value -Wmissing-prototypes
> -Wmissing-declarations -Wno-format-security
> -Wdeclaration-after-statement -Wold-style-definition -fno-builtin-strlen
> -finline-limit=0 -fomit-frame-pointer -ffunction-sections
> -fdata-sections -fno-guess-branch-probability -funsigned-char
> -static-libgcc -falign-functions=1 -falign-jumps=1 -falign-labels=1
> -falign-loops=1 -fno-unwind-tables -fno-asynchronous-unwind-tables -Os
> -O2 -pipe -g -O2 -pipe -g -D"KBUILD_STR(s)=#s"
> -D"KBUILD_BASENAME=KBUILD_STR(filter_accept_all)"
> -D"KBUILD_MODNAME=KBUILD_STR(filter_accept_all)" -c -o
> archival/libarchive/filter_accept_all.o
> archival/libarchive/filter_accept_all.c
>
>
> Thanks,
> Yang
>
>>
>> Try running with the default 4KB page size if that is the problem.
>>
>> Arnd
>>
>
^ permalink raw reply [flat|nested] 11+ messages in thread
* Run armv7 32 bit userspace on aarch64
2015-10-12 17:38 ` Shi, Yang
@ 2015-10-12 17:50 ` Will Deacon
2015-10-12 18:41 ` Shi, Yang
0 siblings, 1 reply; 11+ messages in thread
From: Will Deacon @ 2015-10-12 17:50 UTC (permalink / raw)
To: linux-arm-kernel
On Mon, Oct 12, 2015 at 10:38:25AM -0700, Shi, Yang wrote:
> BTW, it may be related to unaligned address.
>
> init[1]: unhandled level 3 translation fault (11) at 0x43acfad3, esr
> 0x92000047
> pgd = ffff80007b8be000
> [43acfad3] *pgd=00000000fb8c5003, *pud=00000000fb8c1003,
> *pmd=00000000fb8c2003, *pte=0000000000000000
>
> The userspace is trying to write to 0x43acfad3, the permission is
> readonly.
What's the instruction making the access? If it's a store-multiple, then
we don't support that in the arm64 kernel. It would be nice if the 32-bit
kernel had the same behaviour, but the patch seems to have stalled and
probably doesn't apply anymore:
http://www.arm.linux.org.uk/developer/patches/viewpatch.php?id=7944/1
Will
^ permalink raw reply [flat|nested] 11+ messages in thread
* Run armv7 32 bit userspace on aarch64
2015-10-12 17:50 ` Will Deacon
@ 2015-10-12 18:41 ` Shi, Yang
2015-10-13 14:18 ` Will Deacon
0 siblings, 1 reply; 11+ messages in thread
From: Shi, Yang @ 2015-10-12 18:41 UTC (permalink / raw)
To: linux-arm-kernel
On 10/12/2015 10:50 AM, Will Deacon wrote:
> On Mon, Oct 12, 2015 at 10:38:25AM -0700, Shi, Yang wrote:
>> BTW, it may be related to unaligned address.
>>
>> init[1]: unhandled level 3 translation fault (11) at 0x43acfad3, esr
>> 0x92000047
>> pgd = ffff80007b8be000
>> [43acfad3] *pgd=00000000fb8c5003, *pud=00000000fb8c1003,
>> *pmd=00000000fb8c2003, *pte=0000000000000000
>>
>> The userspace is trying to write to 0x43acfad3, the permission is
>> readonly.
>
> What's the instruction making the access? If it's a store-multiple, then
My aarch64 gdb just shows hex code instead of human readable assembly code.
It is 0xe5c02000.
I just checked the ARMv7 manual, it looks like STRB instruction, so we
can rule this out.
I just figured out it is caused by gcc 5.2 pre-link. It works if I
disable pre-link. The pre-link issue breaks all armv7 userspace even
though it is run on armv7 machines.
Yang
> we don't support that in the arm64 kernel. It would be nice if the 32-bit
> kernel had the same behaviour, but the patch seems to have stalled and
> probably doesn't apply anymore:
>
> http://www.arm.linux.org.uk/developer/patches/viewpatch.php?id=7944/1
>
> Will
>
^ permalink raw reply [flat|nested] 11+ messages in thread
* Run armv7 32 bit userspace on aarch64
2015-10-12 18:41 ` Shi, Yang
@ 2015-10-13 14:18 ` Will Deacon
2015-10-13 16:45 ` Shi, Yang
0 siblings, 1 reply; 11+ messages in thread
From: Will Deacon @ 2015-10-13 14:18 UTC (permalink / raw)
To: linux-arm-kernel
On Mon, Oct 12, 2015 at 11:41:54AM -0700, Shi, Yang wrote:
> On 10/12/2015 10:50 AM, Will Deacon wrote:
> >On Mon, Oct 12, 2015 at 10:38:25AM -0700, Shi, Yang wrote:
> >>BTW, it may be related to unaligned address.
> >>
> >>init[1]: unhandled level 3 translation fault (11) at 0x43acfad3, esr
> >>0x92000047
> >>pgd = ffff80007b8be000
> >>[43acfad3] *pgd=00000000fb8c5003, *pud=00000000fb8c1003,
> >>*pmd=00000000fb8c2003, *pte=0000000000000000
> >>
> >>The userspace is trying to write to 0x43acfad3, the permission is
> >>readonly.
> >
> >What's the instruction making the access? If it's a store-multiple, then
>
> My aarch64 gdb just shows hex code instead of human readable assembly code.
>
> It is 0xe5c02000.
>
> I just checked the ARMv7 manual, it looks like STRB instruction, so we can
> rule this out.
>
> I just figured out it is caused by gcc 5.2 pre-link. It works if I disable
> pre-link. The pre-link issue breaks all armv7 userspace even though it is
> run on armv7 machines.
Does that mean you could supply a simple example so I can reproduce this
myself, please? (e.g. if I write a hello world program in C and run it
with a particular set of compiler options then it won't run under a
64-bit kernel but it will work under a 32-bit one).
Will
^ permalink raw reply [flat|nested] 11+ messages in thread
* Run armv7 32 bit userspace on aarch64
2015-10-13 14:18 ` Will Deacon
@ 2015-10-13 16:45 ` Shi, Yang
0 siblings, 0 replies; 11+ messages in thread
From: Shi, Yang @ 2015-10-13 16:45 UTC (permalink / raw)
To: linux-arm-kernel
On 10/13/2015 7:18 AM, Will Deacon wrote:
> On Mon, Oct 12, 2015 at 11:41:54AM -0700, Shi, Yang wrote:
>> On 10/12/2015 10:50 AM, Will Deacon wrote:
>>> On Mon, Oct 12, 2015 at 10:38:25AM -0700, Shi, Yang wrote:
>>>> BTW, it may be related to unaligned address.
>>>>
>>>> init[1]: unhandled level 3 translation fault (11) at 0x43acfad3, esr
>>>> 0x92000047
>>>> pgd = ffff80007b8be000
>>>> [43acfad3] *pgd=00000000fb8c5003, *pud=00000000fb8c1003,
>>>> *pmd=00000000fb8c2003, *pte=0000000000000000
>>>>
>>>> The userspace is trying to write to 0x43acfad3, the permission is
>>>> readonly.
>>>
>>> What's the instruction making the access? If it's a store-multiple, then
>>
>> My aarch64 gdb just shows hex code instead of human readable assembly code.
>>
>> It is 0xe5c02000.
>>
>> I just checked the ARMv7 manual, it looks like STRB instruction, so we can
>> rule this out.
>>
>> I just figured out it is caused by gcc 5.2 pre-link. It works if I disable
>> pre-link. The pre-link issue breaks all armv7 userspace even though it is
>> run on armv7 machines.
>
> Does that mean you could supply a simple example so I can reproduce this
> myself, please? (e.g. if I write a hello world program in C and run it
> with a particular set of compiler options then it won't run under a
> 64-bit kernel but it will work under a 32-bit one).
Yes, I think so. You should just need run "prelink
/path/to/your/elf_binary" for armv7 userspace.
In my OE build, "prelink -a" was called to prelink all elf binaries.
In my test it neither work under 64 bit kernel nor 32 bit one.
Regards,
Yang
>
> Will
>
^ permalink raw reply [flat|nested] 11+ messages in thread
end of thread, other threads:[~2015-10-13 16:45 UTC | newest]
Thread overview: 11+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2015-10-07 22:46 Run armv7 32 bit userspace on aarch64 Shi, Yang
2015-10-08 11:12 ` Will Deacon
2015-10-09 22:32 ` Shi, Yang
2015-10-10 0:28 ` Shi, Yang
2015-10-10 21:25 ` Arnd Bergmann
2015-10-12 17:26 ` Shi, Yang
2015-10-12 17:38 ` Shi, Yang
2015-10-12 17:50 ` Will Deacon
2015-10-12 18:41 ` Shi, Yang
2015-10-13 14:18 ` Will Deacon
2015-10-13 16:45 ` Shi, Yang
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).