On 08.06.20 16:58, Nikhil Devshatwar wrote: > > > On 08/06/20 8:21 pm, Jan Kiszka wrote: >> On 08.06.20 16:35, Nikhil Devshatwar wrote: >>> On 08/06/20 7:54 pm, Jan Kiszka wrote: >>>> On 08.06.20 13:43, Nikhil Devshatwar wrote: >>>>> On 08/06/20 4:51 pm, Jan Kiszka wrote: >>>>>> On 08.06.20 13:16, Jan Kiszka wrote: >>>>>>> On 08.06.20 12:42, [email protected] wrote: >>>>>>>> From: Nikhil Devshatwar <[email protected]> >>>>>>>> >>>>>>>> Add a new IVSHMEM PCIe virtual device for a 2 peer >>>>>>>> IVSHMEM demo communication. >>>>>>>> (0 = root cell, 1 = baremetal / linux-demo) >>>>>>>> Also add the corresponding memory regions for state and output >>>>>>>> aligned at 64k boundary. >>>>>>>> >>>>>>>> Update the bdf numbers for consistency across all platforms. >>>>>>>> Assign domain = 4 since the platform already has 4 physical >>>>>>>> controllers. >>>>>>>> >>>>>>>> Signed-off-by: Nikhil Devshatwar <[email protected]> >>>>>>>> --- >>>>>>>> configs/arm64/k3-j721e-evm-linux-demo.c | 52 ++++++++++++++++++++---- >>>>>>>> configs/arm64/k3-j721e-evm.c | 53 ++++++++++++++++++++----- >>>>>>>> 2 files changed, 89 insertions(+), 16 deletions(-) >>>>>>>> >>>>>>>> diff --git a/configs/arm64/k3-j721e-evm-linux-demo.c >>>>>>>> b/configs/arm64/k3-j721e-evm-linux-demo.c >>>>>>>> index cda1614a..05517751 100644 >>>>>>>> --- a/configs/arm64/k3-j721e-evm-linux-demo.c >>>>>>>> +++ b/configs/arm64/k3-j721e-evm-linux-demo.c >>>>>>>> @@ -24,9 +24,9 @@ >>>>>>>> struct { >>>>>>>> struct jailhouse_cell_desc cell; >>>>>>>> __u64 cpus[1]; >>>>>>>> - struct jailhouse_memory mem_regions[18]; >>>>>>>> + struct jailhouse_memory mem_regions[22]; >>>>>>>> struct jailhouse_irqchip irqchips[4]; >>>>>>>> - struct jailhouse_pci_device pci_devices[1]; >>>>>>>> + struct jailhouse_pci_device pci_devices[2]; >>>>>>>> __u32 stream_ids[2]; >>>>>>>> } __attribute__((packed)) config = { >>>>>>>> .cell = { >>>>>>>> @@ -56,8 +56,35 @@ struct { >>>>>>>> }, >>>>>>>> >>>>>>>> .mem_regions = { >>>>>>>> - /* IVSHMEM shared memory region for 00:01.0 */ >>>>>>>> - JAILHOUSE_SHMEM_NET_REGIONS(0x89fe00000, 1), >>>>>>>> + /* IVSHMEM shared memory regions for 00:00.0 (demo) */ >>>>>>>> + { >>>>>>>> + .phys_start = 0x89fe00000, >>>>>>>> + .virt_start = 0x89fe00000, >>>>>>>> + .size = 0x10000, >>>>>>>> + .flags = JAILHOUSE_MEM_READ | >>>>>>>> JAILHOUSE_MEM_ROOTSHARED, >>>>>>>> + }, >>>>>>>> + { >>>>>>>> + .phys_start = 0x89fe10000, >>>>>>>> + .virt_start = 0x89fe10000, >>>>>>>> + .size = 0x10000, >>>>>>>> + .flags = JAILHOUSE_MEM_READ | >>>>>>>> JAILHOUSE_MEM_ROOTSHARED | >>>>>>>> + JAILHOUSE_MEM_WRITE , >>>>>>>> + }, >>>>>>>> + { >>>>>>>> + .phys_start = 0x89fe20000, >>>>>>>> + .virt_start = 0x89fe20000, >>>>>>>> + .size = 0x10000, >>>>>>>> + .flags = JAILHOUSE_MEM_READ | >>>>>>>> JAILHOUSE_MEM_ROOTSHARED, >>>>>>>> + }, >>>>>>>> + { >>>>>>>> + .phys_start = 0x89fe30000, >>>>>>>> + .virt_start = 0x89fe30000, >>>>>>>> + .size = 0x10000, >>>>>>>> + .flags = JAILHOUSE_MEM_READ | >>>>>>>> JAILHOUSE_MEM_ROOTSHARED | >>>>>>>> + JAILHOUSE_MEM_WRITE , >>>>>>>> + }, >>>>>>> You are missing the state table. Was this tested? >>>>>> Ah, it's there, just 64K large due to the different page size. >>>>>> >>>>>>> Please derive from existing examples, using the same patterns and sizes. >>>>>>> Reference is qemu-arm64. >>>>>> Still, please follow the default pattern (with adjusted page size), >>>>>> which means triangle by default, 3 peers. That may eventually become >>>>>> part of an automated test, and then all boards should better have the >>>>>> same pattern ready. >>>>> j721e has only two A72 cores. So max two cells can be created. >>>>> linux-demo and inmate-demo are mutually exclusive. >>>> Oh, sorry, missed that completely. I was expecting a quad-core at least. >>>> >>>>> That's why I have given the same id to both because I can never launch >>>>> it in parallel. >>>>> >>>>> Do you recommend to still give a separate id for these cells? >>>> Nope, that's fine then. >>>> >>>> But now I wonder why we need to patch any of the demo code. If both do >>>> respect the max-peers value and send to (my-id + 1) % max-peers, they >>>> should "just work", no? >>> Same reason as before. >>> To be able to choose whom exactly you want to send interrupt. >>> Triangle is only for demo, but this way, you can send interrupts to any >>> device. >> If there can only be two cells at the same time, root cell always in, >> it's about root cell sending ID 1, and ID-1 cell sending root cell. Now >> both demos encode hard that max-peers is 3. That can be fixed (i.e. read >> the related ivshmem register), and then things will just work (TM). > Agreed. >> No command line switched needed. They would only be needed if you had a >> setup with less than max-peers, but that is not the issue here. > Yes, that's once case. Also the case of two Linux communicating with > *each other* > If above is not planned to be supported, I can drop the changes for > command line parameters. > Let me know if I should keep it or drop it. >
If you can make the target parameter fully optional across all demos, I would still take it. Jan -- Siemens AG, Corporate Technology, CT RDA IOT SES-DE Corporate Competence Center Embedded Linux -- 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]. To view this discussion on the web visit https://groups.google.com/d/msgid/jailhouse-dev/e6cc9d5d-c555-72fb-9e0c-2af2d7d0c0dc%40siemens.com.
