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

Re: [Xen-devel] XEN on R-CAR H3




Hi Julien


While I know that Xen does not deal with reserved area yet, we should have been able to write in that region. We don't even reach that state as we can't get the
associated page.

It might be possible that the p2m entry is overwritten when going through the DT
for mapping all the regions (see handle_device).

Make sense.


I have just made an experiment. I returned reserved nodes back in my setup and got an fault, similar to what Amit had faced.


(XEN) handle /memory@48000000
(XEN)   Skip it (matched)
(XEN) handle /reserved-memory
(XEN) dt_irq_number: dev=/reserved-memory
(XEN) /reserved-memory passthrough = 1 nirq = 0 naddr = 0
(XEN) handle /reserved-memory/linux,lossy_decompress
(XEN) dt_irq_number: dev=/reserved-memory/linux,lossy_decompress
(XEN) /reserved-memory/linux,lossy_decompress passthrough = 1 nirq = 0 naddr = 1 (XEN) DT: ** translation for device /reserved-memory/linux,lossy_decompress **
(XEN) DT: bus is default (na=2, ns=2) on /reserved-memory
(XEN) DT: translating address:<3> 00000000<3> 54000000<3>
(XEN) DT: parent bus is default (na=2, ns=2) on /
(XEN) DT: empty ranges; 1:1 translation
(XEN) DT: parent translation for:<3> 00000000<3> 00000000<3>
(XEN) DT: with offset: 54000000
(XEN) DT: one level translation:<3> 00000000<3> 54000000<3>
(XEN) DT: reached root node
(XEN)   - MMIO: 0054000000 - 0057000000 P2MType=5
(XEN) handle /reserved-memory/linux,adsp
(XEN) dt_irq_number: dev=/reserved-memory/linux,adsp
(XEN) /reserved-memory/linux,adsp passthrough = 1 nirq = 0 naddr = 1
(XEN) DT: ** translation for device /reserved-memory/linux,adsp **
(XEN) DT: bus is default (na=2, ns=2) on /reserved-memory
(XEN) DT: translating address:<3> 00000000<3> 57000000<3>
(XEN) DT: parent bus is default (na=2, ns=2) on /
(XEN) DT: empty ranges; 1:1 translation
(XEN) DT: parent translation for:<3> 00000000<3> 00000000<3>
(XEN) DT: with offset: 57000000
(XEN) DT: one level translation:<3> 00000000<3> 57000000<3>
(XEN) DT: reached root node
(XEN)   - MMIO: 0057000000 - 0058000000 P2MType=5
(XEN) handle /reserved-memory/linux,cma
(XEN) dt_irq_number: dev=/reserved-memory/linux,cma
(XEN) /reserved-memory/linux,cma passthrough = 1 nirq = 0 naddr = 1
(XEN) DT: ** translation for device /reserved-memory/linux,cma **
(XEN) DT: bus is default (na=2, ns=2) on /reserved-memory
(XEN) DT: translating address:<3> 00000000<3> 58000000<3>
(XEN) DT: parent bus is default (na=2, ns=2) on /
(XEN) DT: empty ranges; 1:1 translation
(XEN) DT: parent translation for:<3> 00000000<3> 00000000<3>
(XEN) DT: with offset: 58000000
(XEN) DT: one level translation:<3> 00000000<3> 58000000<3>
(XEN) DT: reached root node
*(XEN)   - MMIO: 0058000000 - 0070000000 P2MType=5*
(XEN) handle /reserved-memory/linux,multimedia
(XEN) dt_irq_number: dev=/reserved-memory/linux,multimedia
(XEN) /reserved-memory/linux,multimedia passthrough = 1 nirq = 0 naddr = 1
(XEN) DT: ** translation for device /reserved-memory/linux,multimedia **
(XEN) DT: bus is default (na=2, ns=2) on /reserved-memory
(XEN) DT: translating address:<3> 00000000<3> 70000000<3>
(XEN) DT: parent bus is default (na=2, ns=2) on /
(XEN) DT: empty ranges; 1:1 translation
(XEN) DT: parent translation for:<3> 00000000<3> 00000000<3>
(XEN) DT: with offset: 70000000
(XEN) DT: one level translation:<3> 00000000<3> 70000000<3>
(XEN) DT: reached root node
(XEN)   - MMIO: 0070000000 - 0080000000 P2MType=5
(XEN) handle /mmngr
(XEN) dt_irq_number: dev=/mmngr
(XEN) /mmngr passthrough = 1 nirq = 0 naddr = 0
(XEN) handle /mmngrbuf
(XEN) dt_irq_number: dev=/mmngrbuf
(XEN) /mmngrbuf passthrough = 1 nirq = 0 naddr = 0
(XEN) handle /vspm_if
(XEN) dt_irq_number: dev=/vspm_if
(XEN) /vspm_if passthrough = 1 nirq = 0 naddr = 0
(XEN) Allocating PPI 16 for event channel interrupt
(XEN) Create hypervisor node
(XEN) Create PSCI node
(XEN) Create cpus node
(XEN) Create cpu@0 (logical CPUID: 0) node
(XEN) Create cpu@1 (logical CPUID: 1) node
(XEN) Create cpu@2 (logical CPUID: 2) node
(XEN) Create cpu@3 (logical CPUID: 3) node
(XEN) Create memory node (reg size 4, nr cells 4)
(XEN)   Bank 0: 0x60000000->0x70000000
*(XEN) Loading zImage from 000000007a000000 to 0000000060080000-0000000062080000*
(XEN)
(XEN) ****************************************
(XEN) Panic on CPU 0:
(XEN) Unable to copy the kernel in the hwdom memory
(XEN) ****************************************
(XEN)
(XEN) Reboot in five seconds...


There is a question which worries me and likely other people as well. Which is "reserved memory area support in Xen". Some SoCs except application processors have some IPs (co-processors, dsps, codecs, whatever) which rely on a specific predefined memory regions, or even can work with these memory regions only...

Without this feature being supported, we won't be able to use IPs, whose firmware requires a predefined memory region to talk to an application processor, I am afraid. One option comes to mind... I presume, the use of "iomem" property in domain config could allow us to assign 1:1 mapped region to that guest domain. Would it be a correct option? What needs to be implementing it Xen, for example, to have a possibility to assign a particular reserved memory region(s) to a particular guest domain?

--
Regards,

Oleksandr Tyshchenko


_______________________________________________
Xen-devel mailing list
Xen-devel@xxxxxxxxxxxxxxxxxxxx
https://lists.xenproject.org/mailman/listinfo/xen-devel

 


Rackspace

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