[meta-xilinx] [PATCH 5/7] Update recipes for Xilinx v2017.3 release

Nathan Rossi nathan at nathanrossi.com
Wed Oct 18 08:17:16 PDT 2017


On 13 October 2017 at 22:57, Nathan Rossi <nathan at nathanrossi.com> wrote:
> On 13 October 2017 at 03:59, Manjukumar Harthikote Matha
> <MANJUKUM at xilinx.com> wrote:
>>
>>
>>> -----Original Message-----
>>> From: Nathan Rossi [mailto:nathan at nathanrossi.com]
>>> Sent: Tuesday, October 10, 2017 11:51 PM
>>> To: Manjukumar Harthikote Matha <MANJUKUM at xilinx.com>
>>> Cc: Alistair Francis <alistair23 at gmail.com>; meta-xilinx at yoctoproject.org
>>> Subject: Re: [meta-xilinx] [PATCH 5/7] Update recipes for Xilinx v2017.3 release
>>>
>>> On 11 October 2017 at 09:05, Manjukumar Harthikote Matha
>>> <MANJUKUM at xilinx.com> wrote:
>>> > Hi Nathan,
>>> >
>>> >> -----Original Message-----
>>> >> From: meta-xilinx-bounces at yoctoproject.org [mailto:meta-xilinx-
>>> >> bounces at yoctoproject.org] On Behalf Of Alistair Francis
>>> >> Sent: Tuesday, October 10, 2017 3:13 PM
>>> >> To: Nathan Rossi <nathan at nathanrossi.com>
>>> >> Cc: meta-xilinx at yoctoproject.org
>>> >> Subject: Re: [meta-xilinx] [PATCH 5/7] Update recipes for Xilinx
>>> >> v2017.3 release
>>> >>
>>> >> On Sat, Oct 7, 2017 at 2:57 AM, Nathan Rossi <nathan at nathanrossi.com> wrote:
>>> >> > Update the arm-trusted-firmware, pmu-firmware, u-boot-xlnx,
>>> >> > linux-xlnx, qemu-xilinx and qemu-devicetrees recipes for to the 'xilinx-v2017.3'
>>> >> > release tags.
>>> >> >
>>> >> > Drop/update existing patches where applicable.
>>> >> >
>>> >> > Signed-off-by: Nathan Rossi <nathan at nathanrossi.com>
>>> >>
>>> >> Reviewed-by: Alistair Francis <alistair.francis at xilinx.com>
>>> >>
>>> >> Thanks,
>>> >> Alistair
>>> >>
>>> >> > ---
>>> >
>>> > <.....>
>>> >
>>> >> > diff --git
>>> >> > a/recipes-bsp/u-boot/u-boot-xlnx/v2017.1/arm-zynqmp-xilinx_zynqmp.h
>>> >> > -Au
>>> >> > to-boot-in-JTAG-if-imag.patch
>>> >> > b/recipes-bsp/u-boot/u-boot-xlnx/v2017.3/arm-zynqmp-xilinx_zynqmp.h
>>> >> > -Au
>>> >> > to-boot-in-JTAG-if-imag.patch
>>> >> > similarity index 100%
>>> >> > rename from
>>> >> > recipes-bsp/u-boot/u-boot-xlnx/v2017.1/arm-zynqmp-xilinx_zynqmp.h-A
>>> >> > uto -boot-in-JTAG-if-imag.patch rename to
>>> >> > recipes-bsp/u-boot/u-boot-xlnx/v2017.3/arm-zynqmp-xilinx_zynqmp.h-A
>>> >> > uto -boot-in-JTAG-if-imag.patch diff --git
>>> >
>>> > meta-xilinx should not be a holding ground for non upstreamable patches.
>>> > Implementation has to be from kernel-fitimage.bbclass inclusion.
>>> > Please don't add this in meta-xilinx
>>> >
>>>
>>> This is not adding it, just moving the existing patch to apply to the newer u-boot
>>> recipe.
>>>
>>
>> Agreed, we are porting a non-upstreamable patch regardless.
>>> It does however need to go though.
>>
>> I completely disagree, it's not an option to proceed. I cannot accept this path.
>
> I'm not sure what you mean exactly, there are a few non-upstreamable
> patches in meta-xilinx. Some of them were contributed by you.
>
> This patch even though it is primarily just a BSP/runqemu config patch
> is also an outlier in that it has an implementation that was generic
> enough to be considered for upstream inclusion.
>
> If it is just a case of having the Upstream-Status field updated to
> represent this from Denied to "Inappropriate [runqemu bsp config]", I
> can update the patch.
>
>>
>> But I have not had a chance to sort that out yet,
>>> the biggest problem with using fit is that it would need to embed the rootfs (which is
>>> passed at runqemu time). Which  means that using a disk interface is a better way to
>>> go, but since qemu boots u-boot instead of a kernel directly it is not so straight
>>> forward to pass the root= param to the kernel.
>>>
>>
>> We could also look into kernel-fitimage.bbclass to introduce the fit to resolve.
>
> For reference simply changing to fitimage only moves the goal post,
> since a patch would still need to be made to u-boot, and there is no
> guarantee that it would be accepted upstream.
>
> I had been looking at setting it up so that for zcu102 runqemu boots
> from a full disk image, which was essentially the same as a image that
> would be booted on the board itself. This would avoid any qemu/runqemu
> specific changes and would help validate board boot flows with
> runqemu. However I have not looked into the details, so there might be
> issues with that approach too.

So I had a better look at this, there are some issues to fix but
otherwise this works nicely booting from a SD disk image. I've added
the boot log below. Going to hold off doing anything further on this
until I get opinions on the idea/implementation.

I have pushed the WIP changes here:
https://github.com/nathanrossi/meta-xilinx/commit/2df8e3b6131d4909814cfa565041d7dcc203f65a

There are however two changes that need to be made to oe-core to have
this build/boot work correctly:

1. is a bit of a hack, but QEMU rounds down the image size for SD
cards to match the advertise-able size. Essentially the block device
needs to be a multiple of 256K. This change handles that by setting up
the sparse image file to be padded to the boundary.

2. just ignores "vmtypes" overrides if the QB_ROOTFS_OPT is set, this
change seems sane to upstream.

diff --git a/scripts/lib/wic/plugins/imager/direct.py
b/scripts/lib/wic/plugins/imager/direct.py
index 60317eed22..e54d6f7364 100644
--- a/scripts/lib/wic/plugins/imager/direct.py
+++ b/scripts/lib/wic/plugins/imager/direct.py
@@ -444,6 +444,12 @@ class PartitionedImage():

         self.min_size *= self.sector_size

+        logger.debug("Disk size was minimum %d bytes", self.min_size)
+        min_size_boundary = self.min_size % (256 * 1024)
+        if min_size_boundary != 0:
+            logger.debug("Disk size was not on boundary, over by %d
bytes", min_size_boundary)
+            self.min_size += (256 * 1024) - min_size_boundary
+
     def _create_partition(self, device, parttype, fstype, start, size):
         """ Create a partition on an image described by the 'device'
object. """

diff --git a/scripts/runqemu b/scripts/runqemu
index df76270904..e7a3da1f4e 100755
--- a/scripts/runqemu
+++ b/scripts/runqemu
@@ -1007,7 +1007,8 @@ class BaseConfig(object):
             self.rootfs_options = '-initrd %s' % self.rootfs
         else:
             vm_drive = ''
-            if self.fstype in self.vmtypes:
+            # Only apply vmtype rules if a custom rootfs_opt was not set
+            if self.fstype in self.vmtypes and not(qb_rootfs_opt):
                 if self.fstype == 'iso':
                     vm_drive = '-drive file=%s,if=virtio,media=cdrom'
% self.rootfs
                 elif self.get('QB_DRIVE_TYPE'):

Regards,
Nathan

== Boot log ==

PMU Firmware 2017.3     Oct 18 2017   17:20:41
<debug_uart> Debug uart enabled

U-Boot SPL 2017.01 (Oct 18 2017 - 21:51:59)
EL Level:       EL3
Trying to boot from MMC1
reading u-boot.bin
reading atf-uboot.ub
reading atf-uboot.ub
NOTICE:  ATF running on XCZUUNKN/QEMU v1/RTL0.0 at 0xfffea000, with PMU firmware
NOTICE:  BL31: Secure code at 0x0
NOTICE:  BL31: Non secure code at 0x8000000
NOTICE:  BL31: v1.3(release):f9b244beaa
NOTICE:  BL31: Built : 17:35:00, Oct 18 2017
PMUFW:  v0.3


U-Boot 2017.01 (Oct 18 2017 - 21:51:59 +1000) Xilinx ZynqMP ZCU102 rev1.0

I2C:   ready
DRAM:  4 GiB
EL Level:       EL2
Chip ID:        xczuunkn
MMC:   sdhci at ff170000: 0 (SD)
reading uboot.env

** Unable to read "uboot.env" from mmc0:1 **
Using default environment

In:    serial at ff000000
Out:   serial at ff000000
Err:   serial at ff000000
Bootmode: SD_MODE
Net:   ZYNQ GEM: ff0e0000, phyaddr c, interface rgmii-id
I2C EEPROM MAC address read failed

Warning: ethernet at ff0e0000 (eth0) using random MAC address - fe:40:e7:4e:c5:37
eth0: ethernet at ff0e0000
Hit any key to stop autoboot:  0
switch to partitions #0, OK
mmc0 is current device
Device: sdhci at ff170000
Manufacturer ID: aa
OEM: 5859
Name: QEMU!
Tran Speed: 25000000
Rd Block Len: 512
SD version 1.0
High Capacity: No
Capacity: 37.8 MiB
Bus Width: 4-bit
Erase Group Size: 512 Bytes
reading uEnv.txt
498 bytes read in 7 ms (69.3 KiB/s)
Loaded environment from uEnv.txt
Importing environment from SD ...
Running uenvcmd ...
reading Image
13238784 bytes read in 2223 ms (5.7 MiB/s)
reading Image-zynqmp-zcu102-rev1.0.dtb
37381 bytes read in 17 ms (2.1 MiB/s)
## Flattened Device Tree blob at 04000000
   Booting using the fdt blob at 0x4000000
   Loading Device Tree to 000000000fff3000, end 000000000ffff204 ... OK

Starting kernel ...

[    0.000000] Booting Linux on physical CPU 0x0
...
[    0.000000] Built 1 zonelists in Zone order, mobility grouping on.
Total pages: 1034240
[    0.000000] Kernel command line: earlycon clk_ignore_unused
rootfstype=ext4 root=/dev/mmcblk0p2 rw rootwait
...
[    9.107357] xilinx-drm xilinx_drm: fb0:  frame buffer device
[    9.113044] mmc0: new SD card at address 4567
[    9.120224] mmcblk0: mmc0:4567 QEMU! 37.8 MiB
[    9.132279]  mmcblk0: p1 p2
[    9.139120] [drm] Initialized xilinx_drm 1.0.0 20130509 on minor 0
[    9.147389] input: gpio-keys as /devices/platform/gpio-keys/input/input0
[    9.153627] rtc_zynqmp ffa60000.rtc: setting system clock to
2106-02-07 06:28:15 UTC (4294967295)
[    9.156156] clk: Not disabling unused clocks
[    9.157958] ALSA device list:
[    9.158230]   #0: DisplayPort monitor
[    9.208373] EXT4-fs (mmcblk0p2): mounted filesystem with ordered
data mode. Opts: (null)
[    9.209312] VFS: Mounted root (ext4 filesystem) on device 179:2.
...
root at zcu102-zynqmp:~# mount
/dev/root on / type ext4 (rw,relatime,data=ordered)



More information about the meta-xilinx mailing list