sexta-feira, 22 de Março de 2019 às 18:32:24 UTC, J. Kiszka escreveu:
> On 22.03.19 18:12, João Reis wrote:
> > sexta-feira, 22 de Março de 2019 às 16:39:17 UTC, J. Kiszka escreveu:
> >> On 20.03.19 23:24, João Reis wrote:
> >>> Hello everyone,
> >>>
> >>> Lately i've been trying to share memory between two cells using 
> >>> uio_ivshmem driver 
> >>> (https://github.com/henning-schild-work/ivshmem-guest-code), as it has 
> >>> been recommended here in multiple threads, in Ultrascale+ (arm64).
> >>>
> >>> So firstly, i am using ivshmem-demo.bin to run on non-root cell and test 
> >>> uio_ivshmem driver. I am using a customized ivshmem-demo.c from another 
> >>> user that tweaked ivshmem-demo to work in arm64. When debugging this 
> >>> source file (using printks), i've noticed that the code stops running 
> >>> when mmio_read16() is called (the printks stop there).
> >>
> >> mmio_read16 for accessing the MMCFG space? At least this is how your code 
> >> looks
> >> like.
> >>
> >> Note that upstream inmate/lib for ARM does not support PCI yet, thus does 
> >> not
> >> map that region. So you may simply trigger a guest-side page fault. Or are 
> >> you
> >> using a different code base which does that?
> >>
> >> Jan
> >>
> >>>
> >>> Any ideas of what might be the problem??
> >>>
> >>> I attach the log file of the session where i issue the commands to enable 
> >>> ivshmem and the cells to share memory.
> >>>
> >>> (NOTE: Some additional information: PCI_CFG_BASE=0xfc000000
> >>>
> >>> lspci -v
> >>> 00:00.0 Unassigned class [ff80]: Red Hat, Inc Inter-VM shared memory
> >>>   Subsystem: Red Hat, Inc Inter-VM shared memory
> >>>   Flags: bus master, fast devsel, latency 0, IRQ 55
> >>>   Memory at fc100000 (64-bit, non-prefetchable) [size=256]
> >>>   Kernel driver in use: uio_ivshmem
> >>>
> >>> cat /proc/interrupts
> >>> 55:          0          0     GICv2 136 Edge      uio_ivshmem
> >>>
> >>> cat /proc/iomem
> >>> fc000000-fc0fffff : PCI ECAM
> >>> fc100000-fc101fff : //pci@0
> >>>     fc100000-fc1000ff : 0000:00:00.0
> >>>       fc100000-fc1000ff : ivshmem
> >>>
> >>> )
> >>>
> >>
> >> -- 
> >> Siemens AG, Corporate Technology, CT RDA IOT SES-DE
> >> Corporate Competence Center Embedded Linux
> > 
> > I've applied some patches that have been posted here before 
> > (https://groups.google.com/forum/#!searchin/jailhouse-dev/ivshmem-demo|sort:date/jailhouse-dev/L2sjyl1xFDg/MrM5u8IHDQAJ)
> >  that give PCI support for ARM. The proof is that i can access IVSHMEM with 
> > Erika inmate using mmio_readXX() and mmio_writeXX() functions. I don't 
> > understand why i cannot access any memory with ivshmem-demo.bin inmate.
> > 
> 
> As I suspected: Those patches just implement the MMCFG accessors. They do not 
> perform any mapping into the inmate page table. Maybe they pre-date our 
> enabling 
> the the MMU for ARM inmates.
> 
> So you will need map_range(PCI_CFG_BASE, <size-of-region>, MAP_UNCACHED);
> 
> Jan
> 
> -- 
> Siemens AG, Corporate Technology, CT RDA IOT SES-DE
> Corporate Competence Center Embedded Linux

Thanks! It is working now!

I've got some questions:
1) My non-root cell pin_bitmap is like this:
.pin_bitmap = {
                1 << (53 - 32), 
                0,
                0,
                (1 << (140 - 128)) | (1 << (142 - 128)) 
        },
So i suppose my IVSHMEM_IRQ in ivshmem-demo.c must be:
#define IVSHMEM_IRQ 140 ??

2) The output says that my device is not MSI-X capable, does this mean that i 
cannot use interrupts among cells? If i can, how must i solve this?

3) When i map_range() ivshmem using MAP_CACHED i cannot "see" the ivshmem on  
root cell (random values), but when i use MAP_UNCACHED i can "see" it (values 
that i wrote). Is there any explanation to this?

-- 
You received this message because you are subscribed to the Google Groups 
"Jailhouse" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
For more options, visit https://groups.google.com/d/optout.

Reply via email to