qemu-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [RFC PATCH 4/4] tests/acceptance: Test U-Boot/Linux from Armbian 20.


From: Bin Meng
Subject: Re: [RFC PATCH 4/4] tests/acceptance: Test U-Boot/Linux from Armbian 20.08 on Orange Pi PC
Date: Sun, 25 Oct 2020 10:17:39 +0800

Hi Niek,

On Sun, Oct 25, 2020 at 5:01 AM Niek Linnenbank
<nieklinnenbank@gmail.com> wrote:
>
> Hi Philippe,
>
> I have ran this series with the new Armbian 20.08 test and noticed this 
> failure:
>
> -console: /dev/mmcblk0p1: The filesystem size (according to the superrandom: 
> fast init done
> console: block) is 264192 blocks
> console: The physical size of the device is 261120 blocks
> console: Either the superblock or the partition table is likely to be corrupt!
> console: /dev/mmcblk0p1: UNEXPECTED INCONSISTENCY; RUN fsck MANUALLY.
> console: (i.e., without -a or -p options)
> console: fsck exited with status code 4
> console: done.
> console: Failure: File system check of the root filesystem failed
> console: The root filesystem on /dev/mmcblk0p1 requires a manual fsck
> |console: BusyBox v1.27.2 (Ubuntu 1:1.27.2-2ubuntu3.2) built-in shell (ash)
> console: Enter 'help' for a list of built-in commands.
> INTERRUPTED: Test interrupted by SIGTERM\nRunner error occurred: Timeout 
> reached\nOriginal status: ERROR\n{'name': 
> '5-tests/acceptance/boot_linux_console.py:BootLinuxConsole.test_arm_orangepi_bionic_20_08',
>  'logdir': '/home/fox/avocado/job-results/job-2020-10-24T22.25-39... (90.47 s)
>
> When I run the image manually I get the same error, but only if I resize the 
> 20.08 image to 2G. If resized to 4G, the
> 20.08 image boots fine.
>
> Additionally, I noticed that the NetBSD 9.0 test has the same problem, even 
> in current master (4c5b97bfd0dd54dc27717ae8d1cd10e14eef1430):
>
>    (5/5) 
> tests/acceptance/boot_linux_console.py:BootLinuxConsole.test_arm_orangepi_uboot_netbsd9:
>  |console: U-Boot SPL 2020.01+dfsg-1 (Jan 08 2020 - 08:19:44 +0000)
> console: DRAM: 1024 MiB
> console: Failed to set core voltage! Can't set CPU frequency
> /console: Trying to boot from MMC1
> console: U-Boot 2020.01+dfsg-1 (Jan 08 2020 - 08:19:44 +0000) Allwinner 
> Technology
> ...
> console: Starting kernel ...
> console: [   1.0000000] NetBSD/evbarm (fdt) booting ...
> ...
> console: [   1.3300167] sdmmc0: SD card status: 4-bit, C0
> console: [   1.3300167] ld0 at sdmmc0: 
> <0xaa:0x5859:QEMU!:0x01:0xdeadbeef:0x062>
> console: [   1.3430678] ld0: 1024 MB, 1040 cyl, 32 head, 63 sec, 512 
> bytes/sect x 2097152 sectors
> console: [   1.4102580] ld0: 4-bit width, High-Speed/SDR25, 50.000 MHz
> console: [   2.0674392] WARNING: 4 errors while detecting hardware; check 
> system log.
> console: [   2.0674392] boot device: ld0
> console: [   2.0775401] root on ld0a dumps on ld0b
> console: [   2.0977679] vfs_mountroot: can't open root device
> console: [   2.0977679] cannot mount root, error = 6
> INTERRUPTED: Test interrupted by SIGTERM\nRunner error occurred: Timeout 
> reached\nOriginal status: ERROR\n{'name': 
> '5-tests/acceptance/boot_linux_console.py:BootLinuxConsole.test_arm_orangepi_uboot_netbsd9',
>  'l>
>
> To resolve this error, I made a small patch that expands the SD image in both 
> tests to the next power-of-two multiplied by 2:
>
> diff --git a/tests/acceptance/boot_linux_console.py 
> b/tests/acceptance/boot_linux_console.py
> index b604cfe7da..40835904bb 100644
> --- a/tests/acceptance/boot_linux_console.py
> +++ b/tests/acceptance/boot_linux_console.py
> @@ -35,11 +35,11 @@ def pow2ceil(x):
>      return 1 if x == 0 else 2**(x - 1).bit_length()
>
>  """
> -Expand file size to next power of 2
> +Expand file size to next power of 2 or higher
>  """
> -def image_pow2ceil_expand(path):
> +def image_pow2ceil_expand(path, multiply_factor = 1):
>          size = os.path.getsize(path)
> -        size_aligned = pow2ceil(size)
> +        size_aligned = pow2ceil(size) * multiply_factor
>          if size != size_aligned:
>              with open(path, 'ab+') as fd:
>                  fd.truncate(size_aligned)
> @@ -850,7 +850,7 @@ class BootLinuxConsole(LinuxKernelTest):
>          image_path_xz = self.fetch_asset(image_url, asset_hash=image_hash,
>                                           algorithm='sha256')
>          image_path = archive.extract(image_path_xz, self.workdir)
> -        image_pow2ceil_expand(image_path)
> +        image_pow2ceil_expand(image_path, 2)
>
>          self.do_test_arm_orangepi_uboot_armbian(image_path)
>
> @@ -879,7 +879,7 @@ class BootLinuxConsole(LinuxKernelTest):
>          image_path_gz = self.fetch_asset(image_url, asset_hash=image_hash)
>          image_path = os.path.join(self.workdir, 'armv7.img')
>          archive.gzip_uncompress(image_path_gz, image_path)
> -        image_pow2ceil_expand(image_path)
> +        image_pow2ceil_expand(image_path, 2)
>          image_drive_args = 'if=sd,format=raw,snapshot=on,file=' + image_path
>
>          # dd if=u-boot-sunxi-with-spl.bin of=armv7.img bs=1K seek=8 
> conv=notrunc
>
> After applying that change, all Orange Pi tests run successfully:
>
> $ AVOCADO_ALLOW_LARGE_STORAGE=yes ARMBIAN_ARTIFACTS_CACHED=yes avocado 
> --show=app,console run -t machine:orangepi-pc 
> tests/acceptance/boot_linux_console.py

This command does not work for me.

Traceback (most recent call last):
  File "/usr/local/bin/avocado", line 5, in <module>
    from avocado.core.main import main
  File "/usr/local/lib/python3.8/dist-packages/avocado/core/main.py",
line 22, in <module>
    from avocado.core import data_dir
  File "/usr/local/lib/python3.8/dist-packages/avocado/core/data_dir.py",
line 39, in <module>
    from .output import LOG_JOB, LOG_UI
  File "/usr/local/lib/python3.8/dist-packages/avocado/core/output.py",
line 27, in <module>
    from .settings import settings
  File "/usr/local/lib/python3.8/dist-packages/avocado/core/settings.py",
line 625, in <module>
    settings = Settings()  # pylint: disable-msg=invalid-name
  File "/usr/local/lib/python3.8/dist-packages/avocado/core/settings.py",
line 274, in __init__
    self._prepare_base_dirs()
  File "/usr/local/lib/python3.8/dist-packages/avocado/core/settings.py",
line 315, in _prepare_base_dirs
    self._config_path_pkg = resource_filename('avocado', config_pkg_base)
  File "/usr/lib/python3/dist-packages/pkg_resources/__init__.py",
line 1145, in resource_filename
    return get_provider(package_or_requirement).get_resource_filename(
  File "/usr/lib/python3/dist-packages/pkg_resources/__init__.py",
line 365, in get_provider
    return _find_adapter(_provider_factories, loader)(module)
  File "/usr/lib/python3/dist-packages/pkg_resources/__init__.py",
line 1393, in __init__
    self.module_path = os.path.dirname(getattr(module, '__file__', ''))
  File "/usr/lib/python3.8/posixpath.py", line 152, in dirname
    p = os.fspath(p)
TypeError: expected str, bytes or os.PathLike object, not NoneType

I haven't got a command to work on testing only a single target. Any
hint? Thanks!

> ...
> RESULTS    : PASS 6 | ERROR 0 | FAIL 0 | SKIP 0 | WARN 0 | INTERRUPT 0 | 
> CANCEL 0
> JOB TIME   : 161.69 s
>
> I will send this as a separate patch to the list shortly, so you can consider 
> adding it to the series (feel free to modify it where needed).
>

Regards,
Bin



reply via email to

[Prev in Thread] Current Thread [Next in Thread]