On 2020-06-17 23:17, Bertrand Marquis wrote:
On 17 Jun 2020, at 13:48, Bruce Ashfield via lists.yoctoproject.org <[email protected]> wrote:

On Wed, Jun 17, 2020 at 8:45 AM Bruce Ashfield via
lists.yoctoproject.org
<[email protected]> wrote:

On Wed, Jun 17, 2020 at 4:29 AM Bertrand Marquis
<[email protected]> wrote:

Hi,

On 16 Jun 2020, at 22:43, Christopher Clark via lists.yoctoproject.org <[email protected]> wrote:

On Mon, Jun 15, 2020 at 5:45 AM Bruce Ashfield <[email protected]> wrote:
On Mon, Jun 15, 2020 at 5:11 AM Christopher Clark
<[email protected]> wrote:

On Fri, Jun 5, 2020 at 5:58 PM Corey Minyard <[email protected]> wrote:

On Fri, Jun 05, 2020 at 07:53:53PM -0400, Bruce Ashfield wrote:
On Fri, Jun 5, 2020 at 5:16 PM Corey Minyard <[email protected]> wrote:

On Fri, Jun 05, 2020 at 07:55:37PM +0000, Stewart Hildebrand wrote:
+ Corey

On Friday, June 5, 2020 3:19 PM, Bruce Ashfield wrote:
On Fri, Jun 5, 2020 at 3:12 PM Stewart Hildebrand wrote:

Corey: you are hereby encouraged to submit patches to meta-virtualization.

Ok.  The layer has the following basic pieces:

Before we get to the other pieces, I'd like to cover the new "rpixen"
MACHINE type that the layer introduces.

My preference is for avoiding introduction of another MACHINE to
reconfigure an existing one to run Xen, if possible, and use the
existing "raspberrypi4-64". I'm hoping to avoid the pattern of
creating a new machine for Xen for each board that we add support for. In meta-virtualization, there's the "xen" DISTRO_FEATURE, which is used to turn on Xen-specific functionality and compatibility, and I'd like to explore whether that can be made to be sufficient to enable
what is needed.

To that end, I've done an initial pass to see what it might take and
the work-in-progress from that is posted here:
https://github.com/dozylynx/meta-virtualization/tree/raspberry-pi4-initial-xen

Some minor changes to other layers could assist - eg. to remove the need for a guest filesystem to contain the hypervisor binary - and
there's still some tidying to do.

1 The xen patches for the Pi4, just a few patches. As the Xen group
fixes things, I keep adding :).

Unfortunately I had to drop these patches from my local test to get it to boot. It could easily be a local build issue or a fault with the one test I've run so far, but I did have success booting with just Xen 4.13 and I'd like to get a bit more understanding and confidence in
them before we bring them in.

2 Hacks for getting the Pi4 kernel config right for xen. This should go away if you don't use the kernel from the Pi4 yocto layer, as it
doesn't work like most kernels in yocto.

I should take a look at the configs and see if I can create a fragment
or two, but I can take care of that.

That shouldn't be necessary. The standard fragments work, it's just
that the Pi kernel does not use them.  So this is really Pi+Xen
specific, and hopefully they can fix the Pi kernel to use the normal
fragments in the future.

The linux-raspberrypi kernel does use linux-yocto; it's just that
meta-virtualization
needs a matching .inc file to be present for the kernel version that
you're using.
Assuming you're using Linux 4.19 (which is what I've tested with) add this file:
meta-virtualization/recipes-kernel/linux/linux-yocto_4.19_virtualization.inc
containing just:
include linux-yocto_virtualization.inc
which will then enable the linux-raspberrypi kernel to add the
meta-virt Xen fragment.

There are also two Linux patches:
1) Disable DMA in the SDHCI driver
This one needs more information in the commit text to understand what is motivating doing this and what the effects of it are. Should it go
into the standard Raspberry Pi kernel?
2) Fix PCIe in dom0 for RPi4
Is this fixed upstream in more recent kernels? It would be good to
have a pointer to that if so.

Bruce: To apply these to just the Raspberry Pi kernel when it's being used with Xen, a kernel bbappend in a raspberrypi dynamic-layers might
be an option to consider - eg:
https://github.com/dozylynx/meta-virtualization/tree/raspberry-pi4-initial-xen/dynamic-layers/raspberrypi/recipes-kernel/linux

I can most likely live with that. I obviously make sure that the
reference linux-yocto kernel doesn't need anything to work out of the box, but we can't (and shouldn't) enforce that choice on everyone. I'd
rather have patches centralized in a topic layer like
meta-virtualization, so if we need to add a dynamic layer and a few
patches, that's a good place to be.

please see my new comment below.

5 A few Pi-specific hacks for config and u-boot.

#5 does sound like BSP stuff. Is any of it destined for the rpi layers ? Or is it both rpi AND xen specific, so doesn't really make sense
there either ?

It's both Pi and Xen specific. If everything gets put where it should
be, that would be the only thing left in this layer :).

These are in recipes-bsp and I agree that they're both Pi and Xen
specific. I think these are small enough pieces that keeping them in meta-virtualization could be a reasonable call, since that's the layer
where Xen support is focussed, and so they can be added to:
dynamic-layers/raspberrypi/recipes-bsp
which indicates their status as amendments to the meta-raspberrypi layer. Changes to them would then be easily coordinated with the Xen
recipes.

Agreed.

Since I wrote this, we've seen some expressed interest in support for running Xen on the NVIDIA Jetson Nano and Xavier NX boards, and on the xen-devel mailing list, a report of success running Xen on the RockPro64
board:
https://lists.xenproject.org/archives/html/xen-devel/2020-06/msg01067.html

I've personally built Xen with meta-virtualization to run on the Cubietruck for development and testing; the Odroid C2 and XU4 are of interest, as is the Xilinx Ultra-96-V2 board; and the NVidia Jetson TX1 at one point had some non-upstream patches available to enable Xen on it. PCEngines maintains
Xen compatibility for their APU2 in meta-pcengines.

I did express interest in getting it running on the NVIDIA NANO and Xavier NX. I did build it from meta-virtualization and its in the final yocto image fine, i just cant seem to figure out the
cboot/u-boot on the NVIDIAs to make it boot into XEN itself.


There are also some challenges being encountered in getting a more recent Linux kernel working as a dom0 on the Raspberry Pi 4 - eg. the Linux Foundation Eve
Project run their own patches for 5.6 here:
https://github.com/lf-edge/eve/tree/master/pkg/new-kernel/patches-5.6.x

All of this points towards it being a reasonable proposition to have a dedicated Xen hardware support Yocto layer, so that board-specific tweaks for hardware compatibility with Xen can be maintained without complicating meta-virtualization, while continuing to pool Xen-aware contributions in
a centralized layer.

I'd like to propose creating: 'meta-xen-bsp'; and I'm willing to work on
maintaining it. Feedback to this suggestion is welcome.

Bruce: how does this sound to you?

I had this problem working on some other BSPs to support Xen with meta-virtualization (you can check this in meta-arm[1]).

I would think the best way to handle this case is to use dynamic layers and push the required support inside the layer containing the BSP. This would make the maintenance easier (for example when the kernel is changed).

We've already been talking about dynamic layers, but they don't
actually solve the issue of one source of truth for an entire stack
that I'm talking about.

And of course, at a glance, I already see two things that could have
easily been submitted to meta-virtualization. Which shows the point,
that once you have layers as a place to stash fixes/features, they
typically don't get submitted to the centralized layers.

If someone is developing a BSP in his own layer and has some specific
patches to make this BSP work with Xen and meta-virtualization, I
would create a dynamic layer in his BSP Layer so that including this
layer would give me full support for the BSP.
How would you suggest to handle such a scenario ?

Of course if the fixes are generic then those should be pushed to
meta-virtualization.

As an example: where should I put a xen .config file and the bbappend
to apply it during compilation for my BSP ?

Cheers
Bertrand



-=-=-=-=-=-=-=-=-=-=-=-
Links: You receive all messages sent to this group.

View/Reply Online (#5431): 
https://lists.yoctoproject.org/g/meta-virtualization/message/5431
Mute This Topic: https://lists.yoctoproject.org/mt/74701134/21656
Group Owner: [email protected]
Unsubscribe: https://lists.yoctoproject.org/g/meta-virtualization/unsub  
[[email protected]]
-=-=-=-=-=-=-=-=-=-=-=-

Reply via email to