All of lore.kernel.org
 help / color / mirror / Atom feed
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:26:04 -0700	[thread overview]
Message-ID: <561BED2C.8080008@linaro.org> (raw)
In-Reply-To: <6978725.cJktLf4M1X@wuerfel>

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
>

  reply	other threads:[~2015-10-12 17:26 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 [this message]
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

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=561BED2C.8080008@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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.