From: yang.shi@linaro.org (Shi, Yang)
To: linux-arm-kernel@lists.infradead.org
Subject: Run armv7 32 bit userspace on aarch64
Date: Mon, 12 Oct 2015 10:38:25 -0700 [thread overview]
Message-ID: <561BF011.80205@linaro.org> (raw)
In-Reply-To: <561BED2C.8080008@linaro.org>
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
>>
>
next prev parent reply other threads:[~2015-10-12 17:38 UTC|newest]
Thread overview: 11+ messages / expand[flat|nested] mbox.gz Atom feed top
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 [this message]
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
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=561BF011.80205@linaro.org \
--to=yang.shi@linaro.org \
--cc=linux-arm-kernel@lists.infradead.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
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).