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

Re: Question about xen and Rasp 4B

Hi Roman,

Good catch.
GPU works now and I can start X! Thanks! I was also able to create domU
that runs Raspian OS.

This is very interesting that you were able to achieve that - congrats!

Now, sorry to be a bit dense -- but since this thread went into all
sorts of interesting
directions all at once -- I just have a very particular question: what is exact
combination of versions of Xen, Linux kernel and a set of patches that went
on top that allowed you to do that? I'd love to obviously see it
productized in Xen
upstream, but for now -- I'd love to make available to Project EVE/Xen community
since there seems to be a few folks interested in EVE/Xen combo being able to
do that.

I have tried Xen Release 4.14.0, 4.14.1 and master (from week 4, 2021).

Kernel rpi-5.9.y and rpi-5.10.y branches from https://github.com/raspberrypi/linux


U-boot (master).

For the GPU to work it was enough to disable swiotlb from the kernel(s) as suggested in this thread.

If you use Xen master then you need to revert the 25849c8b16f2a5b7fcd0a823e80a5f1b590291f9. Apparently v3d uses same resources and will not start.

I was able to get most of the combinations to work without any big efforts.
In case you use USB SSD U-boot needs a fix if you use 5.9 kernel.
The 5.10 works with the lates Xen master but then you need one small workaround to the xen since there is address that Xen cannot map. Some usb address cannot be found (address was 0 if recall correctly). I just by passed the error:

diff --git a/xen/arch/arm/domain_build.c b/xen/arch/arm/domain_build.c
index e824ba34b0..3e8a175f2e 100644
--- a/xen/arch/arm/domain_build.c
+++ b/xen/arch/arm/domain_build.c
@@ -1409,7 +1409,7 @@ static int __init handle_device(struct domain *d, struct dt_device_node *dev,
             printk(XENLOG_ERR "Unable to retrieve address %u for %s\n",
                    i, dt_node_full_name(dev));
-            return res;
+            continue; //return res;

         res = map_range_to_domain(dev, addr, size, &mr_data);



Lists.xenproject.org is hosted with RackSpace, monitoring our
servers 24x7x365 and backed by RackSpace's Fanatical Support®.