Re: [PATCH V3 07/15] arch/kunmap_atomic: Consolidate duplicate code

From: Guenter Roeck
Date: Mon May 18 2020 - 22:50:45 EST


Hi Ira,

On 5/18/20 5:03 PM, Ira Weiny wrote:
> 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@xxxxxxxxx wrote:
>>>>> From: Ira Weiny <ira.weiny@xxxxxxxxx>
>>>>>
>>>>> 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@xxxxxx>
>>>>> Signed-off-by: Ira Weiny <ira.weiny@xxxxxxxxx>
>>>>
>>>> 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
>
> Despite finding the obvious error earlier today I've still been trying to get
> this to work.
>
> I had to make some slight modifications to use the 0-day cross compile build
> and my local qemu build. But those were pretty minor modifications. I'm
> running on x86_64 host.
>
> With those slight mods to the scripts I get the following error even without my
> patch set on 5.7-rc4. I have 1 cpu pegged at 100% while it is running... Is
> there anything I can do to get more debug output? Perhaps I just need to let
> it run longer?
>

I don't think so. Try running it with "-d" parameter (run-qemu-microblazeel.sh
-d petalogix-s3adsp1800); that gives you the qemu command line. Once it says
"running", abort the script and execute qemu directly. Oh, and please update
the repository; turns out I didn't push for a while and made a number of
changes.

My compiler was compiled with buildroot (a long time ago). I don't recall if
it needed something special in the configuration, unfortunately.

Guenter

> Thanks,
> Ira
>
> 16:46:54 > ../linux-build-test/rootfs/microblazeel/run-qemu-microblazeel.sh
> Build reference: v5.7-rc4-2-g7c2411d7fb6a
>
> Building microblaze:petalogix-s3adsp1800:qemu_microblazeel_defconfig ...
> running ................ failed (silent)
> ------------
> qemu log:
> qemu-system-microblazeel: terminating on signal 15 from pid 3277686 (/bin/bash)
> ------------
> Building microblaze:petalogix-ml605:qemu_microblazeel_ml605_defconfig ...
> running ................ failed (silent)
> ------------
> qemu log:
> qemu-system-microblazeel: terminating on signal 15 from pid 3277686 (/bin/bash)
> ------------
>
> <env changes>
> 16:47:23 > git di
> diff --git a/rootfs/microblazeel/run-qemu-microblazeel.sh b/rootfs/microblazeel/run-qemu-microblazeel.sh
> index 68d4de39ab50..0d6a4f85308f 100755
> --- a/rootfs/microblazeel/run-qemu-microblazeel.sh
> +++ b/rootfs/microblazeel/run-qemu-microblazeel.sh
> @@ -3,7 +3,8 @@
> dir=$(cd $(dirname $0); pwd)
> . ${dir}/../scripts/common.sh
>
> -QEMU=${QEMU:-${QEMU_BIN}/qemu-system-microblazeel}
> +#QEMU=${QEMU:-${QEMU_BIN}/qemu-system-microblazeel}
> +QEMU=/home/iweiny/dev/qemu/microblazeel-softmmu/qemu-system-microblazeel
> PREFIX=microblazeel-linux-
> ARCH=microblaze
> PATH_MICROBLAZE=/opt/kernel/microblazeel/gcc-4.9.1/usr/bin
> diff --git a/rootfs/scripts/common.sh b/rootfs/scripts/common.sh
> index 8fa6a9be2b2f..c4550a27beaa 100644
> --- a/rootfs/scripts/common.sh
> +++ b/rootfs/scripts/common.sh
> @@ -1,5 +1,9 @@
> #!/bin/bash
>
> +# Set up make.cross
> +export COMPILER_INSTALL_PATH=$HOME/0day
> +export GCC_VERSION=6.5.0
> +
> # Set the following variable to true to skip DC395/AM53C97 build tests
> __skip_dc395=0
>
> @@ -569,7 +573,7 @@ doclean()
> then
> git clean -x -d -f -q
> else
> - make ARCH=${ARCH} mrproper >/dev/null 2>&1
> + make.cross ARCH=${ARCH} mrproper >/dev/null 2>&1
> fi
> }
>
> @@ -669,7 +673,7 @@ __setup_config()
> cp ${__progdir}/${defconfig} arch/${arch}/configs
> fi
>
> - if ! make ARCH=${ARCH} CROSS_COMPILE=${PREFIX} ${defconfig} >/dev/null 2>&1 </dev/null; then
> + if ! make.cross ARCH=${ARCH} ${defconfig} >/dev/null 2>&1 </dev/null; then
> return 2
> fi
>
> @@ -687,7 +691,7 @@ __setup_config()
> if [[ "${rel}" = "v3.16" ]]; then
> target="oldconfig"
> fi
> - if ! make ARCH=${ARCH} CROSS_COMPILE=${PREFIX} ${target} >/dev/null 2>&1 </dev/null; then
> + if ! make.cross ARCH=${ARCH} ${target} >/dev/null 2>&1 </dev/null; then
> return 1
> fi
> fi
> @@ -1038,7 +1042,7 @@ dosetup()
> rootfs="$(setup_rootfs ${dynamic} ${rootfs})"
> __common_fixups "${fixups}" "${rootfs}"
>
> - make -j${maxload} ARCH=${ARCH} CROSS_COMPILE=${PREFIX} ${EXTRAS} </dev/null >/dev/null 2>${logfile}
> + make.cross -j${maxload} ARCH=${ARCH} ${EXTRAS} </dev/null >/dev/null 2>${logfile}
> rv=$?
> if [ ${rv} -ne 0 ]
> then
>
> </env changes>
>