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

porting freebsd on xen on arm
SMART_READER_LITE
LIVE PREVIEW

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


slide-1
SLIDE 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

slide-2
SLIDE 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

slide-3
SLIDE 3

Intro Requirements FreeBSD Conclusion

Xen architecture

FOSDEM – February 1, 2014 Porting FreeBSD on Xen on ARM 3 / 20

slide-4
SLIDE 4

Intro Requirements FreeBSD Conclusion

ARM architecture

FOSDEM – February 1, 2014 Porting FreeBSD on Xen on ARM 4 / 20

slide-5
SLIDE 5

Intro Requirements FreeBSD Conclusion

Xen on ARM architecture

FOSDEM – February 1, 2014 Porting FreeBSD on Xen on ARM 5 / 20

slide-6
SLIDE 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

slide-7
SLIDE 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

slide-8
SLIDE 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

slide-9
SLIDE 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

slide-10
SLIDE 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

slide-11
SLIDE 11

Intro Requirements FreeBSD Conclusion

DOM0

FOSDEM – February 1, 2014 Porting FreeBSD on Xen on ARM 11 / 20

slide-12
SLIDE 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

slide-13
SLIDE 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

slide-14
SLIDE 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

slide-15
SLIDE 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

slide-16
SLIDE 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

slide-17
SLIDE 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

slide-18
SLIDE 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

slide-19
SLIDE 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

slide-20
SLIDE 20

Intro Requirements FreeBSD Conclusion

Fin

FOSDEM – February 1, 2014 Porting FreeBSD on Xen on ARM 20 / 20