porting freebsd on xen on arm
play

Porting FreeBSD on Xen on ARM How to support your OS as Xen ARM - PowerPoint PPT Presentation

Porting FreeBSD on Xen on ARM How to support your OS as Xen ARM guest Julien Grall julien.grall@linaro.org FOSDEM February 1, 2014 Intro Requirements FreeBSD Conclusion Xen Type-I hypervisor Support for ARM v7 and ARM v8 with


  1. Porting FreeBSD on Xen on ARM How to support your OS as Xen ARM guest Julien Grall julien.grall@linaro.org FOSDEM – February 1, 2014

  2. Intro Requirements FreeBSD Conclusion Xen ◮ Type-I hypervisor ◮ Support for ARM v7 and ARM v8 with virtualization extension ◮ Hardware support ◮ Fast Model ◮ Versatile Express Cortex A15 ◮ Arndale Board ◮ Allwinner A20/A31 (SunXi) ◮ TI OMAP5 ◮ Applied Micro X-Gene ◮ Calxeda ”Midway” ◮ ... FOSDEM – February 1, 2014 Porting FreeBSD on Xen on ARM 2 / 20

  3. Intro Requirements FreeBSD Conclusion Xen architecture FOSDEM – February 1, 2014 Porting FreeBSD on Xen on ARM 3 / 20

  4. Intro Requirements FreeBSD Conclusion ARM architecture FOSDEM – February 1, 2014 Porting FreeBSD on Xen on ARM 4 / 20

  5. Intro Requirements FreeBSD Conclusion Xen on ARM architecture FOSDEM – February 1, 2014 Porting FreeBSD on Xen on ARM 5 / 20

  6. Intro Requirements FreeBSD Conclusion Requirements ◮ Guest boot ABI ◮ Device tree support ◮ Specific memory attribute ◮ Xen PV drivers ◮ Copy of xen/include/public ◮ arch-arm.h provides hypercalls convention FOSDEM – February 1, 2014 Porting FreeBSD on Xen on ARM 6 / 20

  7. Intro Requirements FreeBSD Conclusion Guest boot ABI Interface of the virtual machine: ◮ Linux zImage ◮ Specific values on some registers ◮ r0 = 0 ◮ r1 = 0xffffffff ◮ r2 = Device Tree physical address ◮ MMU disabled ◮ Data cache disabled ◮ Instruction cache in an unknown state ◮ ELF (in progress) ◮ Use of PSCI to bring up secondary CPUs FOSDEM – February 1, 2014 Porting FreeBSD on Xen on ARM 7 / 20

  8. Intro Requirements FreeBSD Conclusion Device Tree ◮ Basic Device Tree generated by the toolstack which contains: ◮ CPUs ◮ Memory ◮ Timer ◮ GIC ◮ Hypervisor ◮ The guest should use the values from the Device Tree ◮ Working group to decide core bindings FOSDEM – February 1, 2014 Porting FreeBSD on Xen on ARM 8 / 20

  9. Intro Requirements FreeBSD Conclusion Memory ◮ Before calling hypercalls the OS must enable: ◮ MMU ◮ Data and Instruction cache ◮ RAM attribute should be Write-Through or Write-Back FOSDEM – February 1, 2014 Porting FreeBSD on Xen on ARM 9 / 20

  10. Intro Requirements FreeBSD Conclusion Xen PV drivers ◮ Xen core architecture ◮ Xenstore ◮ Grant-Table ◮ Event-channel ◮ Xen device drivers ◮ Console ◮ Block ◮ Network ◮ Framebuffer (need to recompile QEMU) ◮ Drivers already available under BSD license in FreeBSD FOSDEM – February 1, 2014 Porting FreeBSD on Xen on ARM 10 / 20

  11. Intro Requirements FreeBSD Conclusion DOM0 FOSDEM – February 1, 2014 Porting FreeBSD on Xen on ARM 11 / 20

  12. Intro Requirements FreeBSD Conclusion DOM0 (2) ◮ First guest to start ◮ Nearly every devices are assigned to DOM0 ◮ Serial, IOMMU, Timer and GIC are used by Xen ◮ Some devices can be blacklisted by Xen ◮ DOM0 kernel should use the Device Tree to discover the hardware FOSDEM – February 1, 2014 Porting FreeBSD on Xen on ARM 12 / 20

  13. Intro Requirements FreeBSD Conclusion FreeBSD on Xen ◮ Support for x86 PVHVM ◮ Experimental support for ARM architecture ◮ Patch series to support Xen on ARM guest ◮ New kernel config XENHVM created ◮ Non-modular guest configuration (memory, ...) ◮ Only support for guest with 1 VCPU FOSDEM – February 1, 2014 Porting FreeBSD on Xen on ARM 13 / 20

  14. Intro Requirements FreeBSD Conclusion Device Tree Device Tree is hardcoded: ◮ Missing support to use Device Tree with Linux boot ABI ◮ FreeBSD enumerates the devices in DTB order ◮ The interrupt controller should be loaded first ◮ Discussion made on FreeBSD ML ARM ◮ Some bindings are different ◮ FreeBSD only supports interrupt with 2 cells ◮ Work in progress to handle 3 cells ◮ On-going work to standardize the bindings FOSDEM – February 1, 2014 Porting FreeBSD on Xen on ARM 14 / 20

  15. Intro Requirements FreeBSD Conclusion Memory ◮ Modify early page table attribute ◮ Use Write-Back instead of Write-Through ◮ On-going patch to resolve the issue in Xen ◮ Create a new pmap function to map memory region cacheable ◮ FreeBSD requests to be loaded at a specific physical address FOSDEM – February 1, 2014 Porting FreeBSD on Xen on ARM 15 / 20

  16. Intro Requirements FreeBSD Conclusion Xen PV drivers ◮ Update interface headers to Xen 4.4 ◮ FreeBSD is based on Xen 4.2 headers ◮ ARM interface was not set in stone ◮ Drivers common with x86 ◮ Use the right xen type (xen pfn t, xen ulong t,...) ◮ Support for HVM in console drivers ◮ Rework event channel handling ◮ was x86 specific ◮ still missing features ◮ suspend/resume ◮ pirq FOSDEM – February 1, 2014 Porting FreeBSD on Xen on ARM 16 / 20

  17. Intro Requirements FreeBSD Conclusion What needs to be done? FreeBSD port to Xen on ARM has started. Still to come... ◮ Add support for Device Tree loading via Linux Boot ABI ◮ Uniform Xen drivers across the different architecture ◮ Guest SMP support ◮ DOM0 support ◮ Stability FOSDEM – February 1, 2014 Porting FreeBSD on Xen on ARM 17 / 20

  18. Intro Requirements FreeBSD Conclusion OS supported by Xen ◮ Out-of-box ◮ Linux based distribution ◮ Future support ◮ FreeBSD ◮ Erika OS ◮ other *BSD FOSDEM – February 1, 2014 Porting FreeBSD on Xen on ARM 18 / 20

  19. Intro Requirements FreeBSD Conclusion Questions? ◮ Xen devel ML: xen-devel@lists.xenproject.org ◮ Xen user ML: xen-user@lists.xenproject.org ◮ #xenarm on freenode FOSDEM – February 1, 2014 Porting FreeBSD on Xen on ARM 19 / 20

  20. Intro Requirements FreeBSD Conclusion Fin FOSDEM – February 1, 2014 Porting FreeBSD on Xen on ARM 20 / 20

Download Presentation
Download Policy: The content available on the website is offered to you 'AS IS' for your personal information and use only. It cannot be commercialized, licensed, or distributed on other websites without prior consent from the author. To download a presentation, simply click this link. If you encounter any difficulties during the download process, it's possible that the publisher has removed the file from their server.

Recommend


More recommend