* Access I2C bus from guest/DomU on ARM board
@ 2018-01-16 13:39 Saumya Rajesh
2018-01-16 14:46 ` Lars Kurth
2018-01-16 15:52 ` Andrii Anisov
0 siblings, 2 replies; 9+ messages in thread
From: Saumya Rajesh @ 2018-01-16 13:39 UTC (permalink / raw)
To: xen-devel, xen-users
[-- Attachment #1.1: Type: text/plain, Size: 550 bytes --]
Hi Xen community
I have built and brought up Xen 4.8 on Renesas RCar H3. For a specific
requirement, I need to use the I2C bus of the board from Domain U. Is there
a way to use the I2C bus from the guest?
I have looked into para-virtualization and passthrough [1][2] but there
isn't enough support or resources related to I2C bus sharing on ARM. Any
possible idea would be appreciated.
Regards
Saumya
[1]
https://lists.xenproject.org/archives/html/xen-users/2017-10/msg00019.html
[2] https://wiki.xenproject.org/wiki/File:DriverDomainonARM01.pdf
[-- Attachment #1.2: Type: text/html, Size: 4141 bytes --]
[-- Attachment #2: Type: text/plain, Size: 157 bytes --]
_______________________________________________
Xen-devel mailing list
Xen-devel@lists.xenproject.org
https://lists.xenproject.org/mailman/listinfo/xen-devel
^ permalink raw reply [flat|nested] 9+ messages in thread
* Re: Access I2C bus from guest/DomU on ARM board
2018-01-16 13:39 Access I2C bus from guest/DomU on ARM board Saumya Rajesh
@ 2018-01-16 14:46 ` Lars Kurth
2018-01-16 15:52 ` Andrii Anisov
1 sibling, 0 replies; 9+ messages in thread
From: Lars Kurth @ 2018-01-16 14:46 UTC (permalink / raw)
To: Saumya Rajesh; +Cc: xen-devel, embedded-pv-devel, xen-users
[-- Attachment #1.1: Type: text/plain, Size: 1029 bytes --]
Added embedded-pv-devel@lists.xenproject.org
> On 16 Jan 2018, at 13:39, Saumya Rajesh <saumyarajesh93@gmail.com> wrote:
>
> Hi Xen community
>
> I have built and brought up Xen 4.8 on Renesas RCar H3. For a specific requirement, I need to use the I2C bus of the board from Domain U. Is there a way to use the I2C bus from the guest?
> I have looked into para-virtualization and passthrough [1][2] but there isn't enough support or resources related to I2C bus sharing on ARM. Any possible idea would be appreciated.
>
> Regards
> Saumya
>
> [1] https://lists.xenproject.org/archives/html/xen-users/2017-10/msg00019.html <https://lists.xenproject.org/archives/html/xen-users/2017-10/msg00019.html>
> [2] https://wiki.xenproject.org/wiki/File:DriverDomainonARM01.pdf <https://wiki.xenproject.org/wiki/File:DriverDomainonARM01.pdf>
>
>
> _______________________________________________
> Xen-devel mailing list
> Xen-devel@lists.xenproject.org
> https://lists.xenproject.org/mailman/listinfo/xen-devel
[-- Attachment #1.2: Type: text/html, Size: 5205 bytes --]
[-- Attachment #2: Type: text/plain, Size: 157 bytes --]
_______________________________________________
Xen-devel mailing list
Xen-devel@lists.xenproject.org
https://lists.xenproject.org/mailman/listinfo/xen-devel
^ permalink raw reply [flat|nested] 9+ messages in thread
* Re: Access I2C bus from guest/DomU on ARM board
2018-01-16 13:39 Access I2C bus from guest/DomU on ARM board Saumya Rajesh
2018-01-16 14:46 ` Lars Kurth
@ 2018-01-16 15:52 ` Andrii Anisov
2018-01-17 14:03 ` Saumya Rajesh
1 sibling, 1 reply; 9+ messages in thread
From: Andrii Anisov @ 2018-01-16 15:52 UTC (permalink / raw)
To: Saumya Rajesh, xen-devel, xen-users
Dear Rajesh,
You can try to get an I2C bus controller in DomU in PIO mode following
[1], keeping in mind [2].
If you want it DMA capable you need Renesas IPMMU support in XEN [3],
[4] to be incorporated.
[1] - https://xenbits.xen.org/docs/unstable/misc/arm/passthrough.txt
[2] -
https://lists.xenproject.org/archives/html/xen-users/2017-10/msg00031.html
[3] -
https://lists.xenproject.org/archives/html/xen-devel/2017-07/msg02545.html
[4] -
https://lists.xenproject.org/archives/html/xen-devel/2017-07/msg02679.html
--
*Andrii Anisov*
_______________________________________________
Xen-devel mailing list
Xen-devel@lists.xenproject.org
https://lists.xenproject.org/mailman/listinfo/xen-devel
^ permalink raw reply [flat|nested] 9+ messages in thread
* Re: Access I2C bus from guest/DomU on ARM board
2018-01-16 15:52 ` Andrii Anisov
@ 2018-01-17 14:03 ` Saumya Rajesh
2018-01-17 15:36 ` Andrii Anisov
0 siblings, 1 reply; 9+ messages in thread
From: Saumya Rajesh @ 2018-01-17 14:03 UTC (permalink / raw)
To: Andrii Anisov; +Cc: xen-devel, embedded-pv-devel, xen-users
[-- Attachment #1.1: Type: text/plain, Size: 1187 bytes --]
On Tue, Jan 16, 2018 at 9:22 PM, Andrii Anisov <andrii_anisov@epam.com>
wrote:
> Dear Rajesh,
>
>
> You can try to get an I2C bus controller in DomU in PIO mode following
> [1], keeping in mind [2].
>
> If you want it DMA capable you need Renesas IPMMU support in XEN [3], [4]
> to be incorporated.
>
>
> [1] - https://xenbits.xen.org/docs/unstable/misc/arm/passthrough.txt
>
> [2] - https://lists.xenproject.org/archives/html/xen-users/2017-10
> /msg00031.html
>
> [3] - https://lists.xenproject.org/archives/html/xen-devel/2017-07
> /msg02545.html
>
> [4] - https://lists.xenproject.org/archives/html/xen-devel/2017-07
> /msg02679.html
>
>
> --
>
> *Andrii Anisov*
>
>
>
Thank you Andrii for replying. I will try the device passthrough way of
using I2C bus from guest and post the updates.
Just out of curiosity, is it possible to split the Driver for the Renesas
RCar I2C unit [1] into frontend and backend to use the i2c bus from guest?
Or to do something similar to PCI passthrough? Please forgive me if I sound
illogical. I'm just curious.
Regards
Saumya
[1]
https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux-stable.git/tree/drivers/i2c/busses/i2c-rcar.c?h=v4.14.13
[-- Attachment #1.2: Type: text/html, Size: 2878 bytes --]
[-- Attachment #2: Type: text/plain, Size: 157 bytes --]
_______________________________________________
Xen-devel mailing list
Xen-devel@lists.xenproject.org
https://lists.xenproject.org/mailman/listinfo/xen-devel
^ permalink raw reply [flat|nested] 9+ messages in thread
* Re: Access I2C bus from guest/DomU on ARM board
2018-01-17 14:03 ` Saumya Rajesh
@ 2018-01-17 15:36 ` Andrii Anisov
2018-01-18 7:50 ` Saumya Rajesh
0 siblings, 1 reply; 9+ messages in thread
From: Andrii Anisov @ 2018-01-17 15:36 UTC (permalink / raw)
To: Saumya Rajesh; +Cc: xen-devel, embedded-pv-devel
Rajesh,
On 17.01.18 16:03, Saumya Rajesh wrote:
> Just out of curiosity, is it possible to split the Driver for the
> Renesas RCar I2C unit [1] into frontend and backend to use the i2c bus
> from guest? Or to do something similar to PCI passthrough? Please
> forgive me if I sound illogical. I'm just curious.
I guess you could implement PV I2C using FE/BE scheme. With enormous
efforts and unpredictable results.
But I'm sure it is not what you really need.
--
*Andrii Anisov*
_______________________________________________
Xen-devel mailing list
Xen-devel@lists.xenproject.org
https://lists.xenproject.org/mailman/listinfo/xen-devel
^ permalink raw reply [flat|nested] 9+ messages in thread
* Re: Access I2C bus from guest/DomU on ARM board
2018-01-17 15:36 ` Andrii Anisov
@ 2018-01-18 7:50 ` Saumya Rajesh
2018-01-29 13:33 ` Saumya Rajesh
2018-01-31 15:06 ` Andrii Anisov
0 siblings, 2 replies; 9+ messages in thread
From: Saumya Rajesh @ 2018-01-18 7:50 UTC (permalink / raw)
To: Andrii Anisov, xen-users; +Cc: xen-devel, embedded-pv-devel
[-- Attachment #1.1: Type: text/plain, Size: 1096 bytes --]
On Wed, Jan 17, 2018 at 9:06 PM, Andrii Anisov <andrii_anisov@epam.com>
wrote:
> Rajesh,
>
> On 17.01.18 16:03, Saumya Rajesh wrote:
>
>> Just out of curiosity, is it possible to split the Driver for the Renesas
>> RCar I2C unit [1] into frontend and backend to use the i2c bus from guest?
>> Or to do something similar to PCI passthrough? Please forgive me if I sound
>> illogical. I'm just curious.
>>
> I guess you could implement PV I2C using FE/BE scheme. With enormous
> efforts and unpredictable results.
> But I'm sure it is not what you really need.
>
> --
>
> *Andrii Anisov*
>
>
>
Hi Andrii
Actually I am planning to set up Android as guest in Xen. In order to
enable sound in the Android guest, I need to passthrough the audio codec
device which communicates through the I2C bus. For BE/FE scheme, I think
sharing the internal DMA and clock would pose problems. So I'm going to go
ahead with the device passthrough way.
Any thoughts or inputs you can possibly give regarding this use case will
be very helpful and valuable.
Regards
Saumya
[-- Attachment #1.2: Type: text/html, Size: 2566 bytes --]
[-- Attachment #2: Type: text/plain, Size: 157 bytes --]
_______________________________________________
Xen-devel mailing list
Xen-devel@lists.xenproject.org
https://lists.xenproject.org/mailman/listinfo/xen-devel
^ permalink raw reply [flat|nested] 9+ messages in thread
* Re: Access I2C bus from guest/DomU on ARM board
2018-01-18 7:50 ` Saumya Rajesh
@ 2018-01-29 13:33 ` Saumya Rajesh
2018-01-31 15:06 ` Andrii Anisov
1 sibling, 0 replies; 9+ messages in thread
From: Saumya Rajesh @ 2018-01-29 13:33 UTC (permalink / raw)
To: xen-users, xen-devel, embedded-pv-devel
On Thu, Jan 18, 2018 at 1:20 PM, Saumya Rajesh <saumyarajesh93@gmail.com> wrote:
> On Wed, Jan 17, 2018 at 9:06 PM, Andrii Anisov <andrii_anisov@epam.com>
> wrote:
>>
>> Rajesh,
>>
>> On 17.01.18 16:03, Saumya Rajesh wrote:
>>>
>>> Just out of curiosity, is it possible to split the Driver for the Renesas
>>> RCar I2C unit [1] into frontend and backend to use the i2c bus from guest?
>>> Or to do something similar to PCI passthrough? Please forgive me if I sound
>>> illogical. I'm just curious.
>>
>> I guess you could implement PV I2C using FE/BE scheme. With enormous
>> efforts and unpredictable results.
>> But I'm sure it is not what you really need.
>>
>> --
>>
>> *Andrii Anisov*
>>
>>
>
> Hi Andrii
>
> Actually I am planning to set up Android as guest in Xen. In order to enable
> sound in the Android guest, I need to passthrough the audio codec device
> which communicates through the I2C bus. For BE/FE scheme, I think sharing
> the internal DMA and clock would pose problems. So I'm going to go ahead
> with the device passthrough way.
>
> Any thoughts or inputs you can possibly give regarding this use case will be
> very helpful and valuable.
>
> Regards
> Saumya
>
Hi
I am trying to passthrough I2C bus to guest domain in Xen. I am
referring [1][2][3] to implement this on Renesas R-Car H3. Following
is the list of all I2C buses available when not passed through :
root@salvator-x-xen-dom0:~# i2cdetect -l
i2c-2 i2c e6510000.i2c I2C adapter
i2c-4 i2c e66d8000.i2c I2C adapter
i2c-7 i2c e60b0000.i2c I2C adapter
i2c-8 i2c DesignWare HDMI I2C adapter
i2c-9 i2c DesignWare HDMI I2C adapter
I added " xen,passthrough = "1"; " and built the Dom0 device tree to
enable I2C bus passthrough :
r8a7795.dtsi:
i2c2: i2c@e6510000 {
#address-cells = <1>;
#size-cells = <0>;
compatible = "renesas,i2c-r8a7795";
reg = <0 0xe6510000 0 0x40>;
interrupts = <GIC_SPI 286 IRQ_TYPE_LEVEL_HIGH>;
clocks = <&cpg CPG_MOD 929>;
power-domains = <&sysc R8A7795_PD_ALWAYS_ON>;
dmas = <&dmac1 0x95>, <&dmac1 0x94>;
dma-names = "tx", "rx";
i2c-scl-internal-delay-ns = <6>;
status = "disabled";
xen,passthrough = "1";
};
After booting using the modified dtb, i2c-2 disappears, meaning it was
not taken by Dom0 :
root@salvator-x-xen-dom0:~# i2cdetect -l
i2c-4 i2c e66d8000.i2c I2C adapter
i2c-7 i2c e60b0000.i2c I2C adapter
i2c-8 i2c DesignWare HDMI I2C adapter
i2c-9 i2c DesignWare HDMI I2C adapter
I built a partial device tree guest_dtb_test.dtb using the following content :
guest_dtb_test.dts:
/dts-v1/;
/ {
/* #*cells are here to keep DTC happy */
#address-cells = <2>;
#size-cells = <2>;
aliases {
i2c0 = &i2c0;
};
passthrough {
compatible = "simple-bus";
ranges;
#address-cells = <2>;
#size-cells = <2>;
i2c0: i2c@10000000 {
compatible = "renesas,i2c-r8a7795";
reg = <0 0x10000000 0 0x40>;
interrupts = <0 286 4>;
#address-cells = <1>;
#size-cells = <0>;
status = "okay";
};
};
};
I also added the following lines to DomU configuration file :
device_tree = "/root/guest_test_dtb.dtb"
dtdev = [ "/soc/i2c@e6510000" ]
irqs = [ 318 ]
iomem = [ "0xe6510,1" ]
But when I start DomU, the booting fails. Log of starting DomU :
root@salvator-x-xen-dom0:~# xl create -c Domu.cfg
Parsing config from Domu.cfg
[ 2160.083551] rcar_gen3_thermal e61a8000.thermal: Can't register thermal zone
(XEN) avc: denied { use } for domid=0 irq=318
scontext=system_u:system_r:domU_t tcontext=system_u:object_r:irq_t
tclass=resource
libxl: error: libxl_create.c:1284:domcreate_launch_dm: failed give
dom2 access to irq 318: Permission denied
libxl: error: libxl.c:1575:libxl__destroy_domid: non-existant domain 2
libxl: error: libxl.c:1534:domain_destroy_callback: unable to destroy
guest with domid 2
libxl: error: libxl.c:1463:domain_destroy_cb: destruction of domain 2 failed
Seeing the log, I guess the irq could not be given to DomU. It is
actually 286 + 32, as it was mentioned in [1].
Is there a workaround to this issue? Any solution or suggestion
related to this will be much appreciated.
Regards
Saumya
[1] https://xenbits.xen.org/docs/unstable/misc/arm/passthrough.txt
[2] https://events.static.linuxfound.org/sites/events/files/slides/talk_5.pdf
[3] https://lists.xenproject.org/archives/html/xen-users/2017-10/msg00031.html
_______________________________________________
Xen-devel mailing list
Xen-devel@lists.xenproject.org
https://lists.xenproject.org/mailman/listinfo/xen-devel
^ permalink raw reply [flat|nested] 9+ messages in thread
* Re: Access I2C bus from guest/DomU on ARM board
2018-01-18 7:50 ` Saumya Rajesh
2018-01-29 13:33 ` Saumya Rajesh
@ 2018-01-31 15:06 ` Andrii Anisov
2018-02-01 13:48 ` Saumya Rajesh
1 sibling, 1 reply; 9+ messages in thread
From: Andrii Anisov @ 2018-01-31 15:06 UTC (permalink / raw)
To: Saumya Rajesh; +Cc: xen-devel, embedded-pv-devel
Hello Saumya,
On 18.01.18 09:50, Saumya Rajesh wrote:
> Actually I am planning to set up Android as guest in Xen.
I see.
> In order to enable sound in the Android guest, I need to passthrough
> the audio codec device which communicates through the I2C bus. For
> BE/FE scheme, I think sharing the internal DMA and clock would pose
> problems. So I'm going to go ahead with the device passthrough way.
Passing through I2C bus to guest domain would not be enough to get sound
in Android. You would face more dependencies, and they may appear not
solvable.
> Any thoughts or inputs you can possibly give regarding this use case
> will be very helpful and valuable.
We are using PV Audio solution for such a task:
https://lists.xenproject.org/archives/html/xen-devel/2017-03/msg02428.html
https://lkml.org/lkml/2017/8/7/115
--
*Andrii Anisov*
_______________________________________________
Xen-devel mailing list
Xen-devel@lists.xenproject.org
https://lists.xenproject.org/mailman/listinfo/xen-devel
^ permalink raw reply [flat|nested] 9+ messages in thread
* Re: Access I2C bus from guest/DomU on ARM board
2018-01-31 15:06 ` Andrii Anisov
@ 2018-02-01 13:48 ` Saumya Rajesh
0 siblings, 0 replies; 9+ messages in thread
From: Saumya Rajesh @ 2018-02-01 13:48 UTC (permalink / raw)
To: Andrii Anisov, xen-devel, embedded-pv-devel, xen-users
On Wed, Jan 31, 2018 at 8:36 PM, Andrii Anisov <andrii_anisov@epam.com> wrote:
> Hello Saumya,
>
>
> On 18.01.18 09:50, Saumya Rajesh wrote:
>>
>> Actually I am planning to set up Android as guest in Xen.
>
> I see.
>
>> In order to enable sound in the Android guest, I need to passthrough the
>> audio codec device which communicates through the I2C bus. For BE/FE scheme,
>> I think sharing the internal DMA and clock would pose problems. So I'm going
>> to go ahead with the device passthrough way.
>
> Passing through I2C bus to guest domain would not be enough to get sound in
> Android. You would face more dependencies, and they may appear not solvable.
>
>> Any thoughts or inputs you can possibly give regarding this use case will
>> be very helpful and valuable.
>
> We are using PV Audio solution for such a task:
>
> https://lists.xenproject.org/archives/html/xen-devel/2017-03/msg02428.html
> https://lkml.org/lkml/2017/8/7/115
>
> --
>
> *Andrii Anisov*
>
>
Hi Andrii
I guess you are right. I am already facing issues in doing I2C bus
passthrough. If you find time, please look into [1][2].
I was able to successfully build and execute the PV Audio solution on
R-Car H3, with xen-front[3] as frontend and snd_be[4] as backend. The
only issue I encountered was that Dom0 could not use the sound card as
long as the backend application ran. It is the only working solution
that I have found till now.
I think I am back to square one but I can't help but ask if you are
familiar with any work which is going on in Xen which makes it
possible for the guest domain(Linux based) to interact with all kinds
of I2C devices such as audio SoCs or sensors?
Regards
Saumya
[1] https://lists.xenproject.org/archives/html/xen-devel/2018-01/msg02711.html
[2] https://lists.xenproject.org/archives/html/xen-devel/2018-01/msg02618.html
[3] https://lists.xen.org/archives/html/xen-devel/2017-08/msg00626.html
[4] https://github.com/xen-troops/snd_be
_______________________________________________
Xen-devel mailing list
Xen-devel@lists.xenproject.org
https://lists.xenproject.org/mailman/listinfo/xen-devel
^ permalink raw reply [flat|nested] 9+ messages in thread
end of thread, other threads:[~2018-02-01 13:48 UTC | newest]
Thread overview: 9+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2018-01-16 13:39 Access I2C bus from guest/DomU on ARM board Saumya Rajesh
2018-01-16 14:46 ` Lars Kurth
2018-01-16 15:52 ` Andrii Anisov
2018-01-17 14:03 ` Saumya Rajesh
2018-01-17 15:36 ` Andrii Anisov
2018-01-18 7:50 ` Saumya Rajesh
2018-01-29 13:33 ` Saumya Rajesh
2018-01-31 15:06 ` Andrii Anisov
2018-02-01 13:48 ` Saumya Rajesh
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.