[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [Xen-devel] Pass-through on Arndale 5250
I followed this guide:
 http://ssup2.iptime.org/wiki/Xen_4.5.0_on_Arndale to get xen installed on the arndale 5250 with an ubuntu Dom0 and I am able to create guests without problems. Now I am would like to pass a device to a guest, as a proof of concept. I choose the ethernet port because that will be useful down the road but right now I would be happy passing anything through. I then followed the example from this guide:  https://events.linuxfoundation.org/sites/events/files/slides/talk_5.pdf but so far I have not been able to start a guest with the device passed to it. I tried updating the Flat Device Tree, u-boot and dtc. I am unsure what values to use for irqs and iomem as the example did not give details on where they got their numbers. Thoughts? ====================== Details of what I tried: I get the error: libxl: error: libxl_arm.c:604:check_partial_fdt: Partial FDT is not a valid Flat Device Tree libxl: error: libxl_dom.c:710:libxl__build_pv: libxl__arch_domain_init_hw_description failed: No such file or directory I found that there was not a separate entry for the ethernet port under /proc/device-tree as there was in the example. Instead the port seems to be viewed as just a usb device and is given a random new mac address at each boot time. I set it for pass-through by adding: fdt set /usb@12110000 status disabled fdt set /usb@12110000 xen,passthrough to my u-boot startup image. This disabled all of the usb ports and the ethernet port on the board but that is acceptable to me as long as it is a workable option to pass them all through to a DomU. Then using the example as a template it looked like the values for 'compatible' and 'interrupts' would be copied to the partial device tree so I ran: # hexdump -C interrupts 00000000 00 00 00 00 00 00 00 47 00 00 00 00 |.......G....| 0000000c # hexdump -C compatible 00000000 73 61 6d 73 75 6e 67 2c 65 78 79 6e 6f 73 34 32 |samsung,exynos42| 00000010 31 30 2d 65 68 63 69 00 |10-ehci.| 00000018 Where the value of 'reg' came from was unclear to me so I used the same value as the example, and I wrote the following: Here are the contents of my partial device tree: /dts-v1/; / {  /* #*cells are here to keep DTC happy */  #address-cells = <2>;  #size-cells = <2>;  aliases {  net = &usb;  };  passthrough {  compatible = "simple-bus";  ranges;  #address-cells = <2>;  #size-cells = <2>;  usb: usb@10000000 {  compatible = "samsung,exynos42";  reg = <0 0x10000000 0 0x1000>;  interrupts = <0 47 0>;  };  }; }; and compiled it with: dtc guest-midway.dts > guest-midway.dtb BTW: The pdf said to get the value for reg I would need to find a hole in the guest layout defined in xen/include/public/arch-arm.h. I checked out RELEASE-4.6.0 for my build and I found that file but couldn't figure out how to use the file to find a hole, an example would be much appreciated. I then added the following to the DomU config file: device_tree = "/root/guest-midway.dtb" dtdev = [ "/usb@12110000" ] irqs = [ 112, 113, 114 ] iomem = [ "0x12110000,1@0x10000" ] I was unsure what values to use for irqs and iomem as the example did not give details on where they got their numbers. I looked at /proc/interrupts and saw this: root@dom0:~# cat /proc/interrupts  CPU0 16: 84 GIC 16 events 27: 6698 GIC 27 arch_timer 65: 0 GIC 65 10800000.mdma 66: 0 GIC 66 121a0000.pdma 67: 0 GIC 67 121b0000.pdma 74: 0 GIC 74 101d0000.watchdog 75: 0 GIC 75 s3c2410-rtc alarm 76: 0 GIC 76 s3c2410-rtc tick 77: 0 GIC 77 13400000.pinctrl 78: 0 GIC 78 11400000.pinctrl 79: 0 GIC 79 3860000.pinctrl 82: 0 GIC 82 10d10000.pinctrl 88: 462 GIC 88 12c60000.i2c 90: 0 GIC 90 12c80000.i2c 91: 0 GIC 91 12c90000.i2c 96: 0 GIC 96 12ce0000.i2c 97: 0 GIC 97 10060000.tmu 103: 1537 GIC 103 ehci_hcd:usb3, ohci_hcd:usb4 104: 0 GIC 104 xhci-hcd:usb1 107: 5107 GIC 107 dw-mci 109: 21989 GIC 109 dw-mci 156: 0 GIC 156 11c10000.mdma 160: 51 xen-dyn-event xenbus 181: 1 exynos_wkup_irq_chip 2 s5m8767 182: 0 xen-percpu-virq hvc_console 183: 0 s5m8767 12 rtc-alarm0 184: 0 exynos_wkup_irq_chip 4 SW-TACT2 185: 0 exynos_wkup_irq_chip 5 SW-TACT3 186: 0 exynos_wkup_irq_chip 6 SW-TACT4 187: 0 exynos_wkup_irq_chip 7 SW-TACT5 188: 0 exynos_wkup_irq_chip 0 SW-TACT6 189: 0 exynos_wkup_irq_chip 1 SW-TACT7 190: 32 xen-dyn-event evtchn:oxenstored 191: 0 xen-dyn-event evtchn:oxenstored IPI0: 0 CPU wakeup interrupts IPI1: 0 Timer broadcast interrupts IPI2: 0 Rescheduling interrupts IPI3: 0 Function call interrupts IPI4: 0 Single function call interrupts IPI5: 0 CPU stop interrupts IPI6: 0 IRQ work interrupts IPI7: 0 completion interrupts Err: 0 and thought perhaps I would need to use numbers 103 and 104 as they are the only usb devices in the list but I didn't know if I was on the right track. So I again just naively copied the irq values from the example and put the address of the usb as the first value under iomem. _______________________________________________ Xen-devel mailing list Xen-devel@xxxxxxxxxxxxx http://lists.xen.org/xen-devel
|
Lists.xenproject.org is hosted with RackSpace, monitoring our |