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?

Please derive from existing examples, using the same patterns and sizes.
Reference is qemu-arm64.

Jan

> +             /* IVSHMEM shared memory regions for 00:01.0 (networking) */
> +             JAILHOUSE_SHMEM_NET_REGIONS(0x89fe40000, 1),
>               /* ctrl mmr */ {
>                       .phys_start = 0x00100000,
>                       .virt_start = 0x00100000,
> @@ -210,13 +237,24 @@ struct {
>       },
>  
>       .pci_devices = {
> -             /* 00:01.0 */ {
> +             /* 00:00.0 (demo) */ {
>                       .type = JAILHOUSE_PCI_TYPE_IVSHMEM,
> -                     .bdf = 1 << 3,
> -                     .bar_mask = JAILHOUSE_IVSHMEM_BAR_MASK_INTX,
> +                     .domain = 4,
> +                     .bdf = 0 << 3,
> +                     .bar_mask = JAILHOUSE_IVSHMEM_BAR_MASK_INTX_64K,
>                       .shmem_regions_start = 0,
>                       .shmem_dev_id = 1,
>                       .shmem_peers = 2,
> +                     .shmem_protocol = JAILHOUSE_SHMEM_PROTO_UNDEFINED,
> +             },
> +             /* 00:01.0 (networking) */ {
> +                     .type = JAILHOUSE_PCI_TYPE_IVSHMEM,
> +                     .domain = 4,
> +                     .bdf = 1 << 3,
> +                     .bar_mask = JAILHOUSE_IVSHMEM_BAR_MASK_INTX_64K,
> +                     .shmem_regions_start = 4,
> +                     .shmem_dev_id = 1,
> +                     .shmem_peers = 2,
>                       .shmem_protocol = JAILHOUSE_SHMEM_PROTO_VETH,
>               },
>       },
> diff --git a/configs/arm64/k3-j721e-evm.c b/configs/arm64/k3-j721e-evm.c
> index 3ac0b57e..41f4c456 100644
> --- a/configs/arm64/k3-j721e-evm.c
> +++ b/configs/arm64/k3-j721e-evm.c
> @@ -19,9 +19,9 @@
>  struct {
>       struct jailhouse_system header;
>       __u64 cpus[1];
> -     struct jailhouse_memory mem_regions[36];
> +     struct jailhouse_memory mem_regions[40];
>       struct jailhouse_irqchip irqchips[6];
> -     struct jailhouse_pci_device pci_devices[1];
> +     struct jailhouse_pci_device pci_devices[2];
>       __u32 stream_ids[30];
>  } __attribute__((packed)) config = {
>       .header = {
> @@ -44,7 +44,7 @@ struct {
>                       .pci_mmconfig_base = 0x76000000,
>                       .pci_mmconfig_end_bus = 0,
>                       .pci_is_virtual = 1,
> -                     .pci_domain = 3,
> +                     .pci_domain = 4,
>                       .iommu_units= {
>                               {
>                                       .type = JAILHOUSE_IOMMU_SMMUV3,
> @@ -97,8 +97,33 @@ struct {
>       },
>  
>       .mem_regions = {
> -             /* IVSHMEM shared memory region for 00:01.0 */
> -             JAILHOUSE_SHMEM_NET_REGIONS(0x89fe00000, 0),
> +             /* IVSHMEM shared memory regions for 00:00.0 (demo) */
> +             {
> +                     .phys_start = 0x89fe00000,
> +                     .virt_start = 0x89fe00000,
> +                     .size = 0x10000,
> +                     .flags = JAILHOUSE_MEM_READ,
> +             },
> +             {
> +                     .phys_start = 0x89fe10000,
> +                     .virt_start = 0x89fe10000,
> +                     .size = 0x10000,
> +                     .flags = JAILHOUSE_MEM_READ | JAILHOUSE_MEM_WRITE,
> +             },
> +             {
> +                     .phys_start = 0x89fe20000,
> +                     .virt_start = 0x89fe20000,
> +                     .size = 0x10000,
> +                     .flags = JAILHOUSE_MEM_READ | JAILHOUSE_MEM_WRITE,
> +             },
> +             {
> +                     .phys_start = 0x89fe30000,
> +                     .virt_start = 0x89fe30000,
> +                     .size = 0x10000,
> +                     .flags = JAILHOUSE_MEM_READ,
> +             },
> +             /* IVSHMEM shared memory regions for 00:01.0 (networking) */
> +             JAILHOUSE_SHMEM_NET_REGIONS(0x89fe40000, 0),
>               /* ctrl mmr */ {
>                       .phys_start = 0x00100000,
>                       .virt_start = 0x00100000,
> @@ -374,14 +399,24 @@ struct {
>       },
>  
>       .pci_devices = {
> -             /* 0003:00:01.0 */ {
> +             /* 00:00.0 (demo) */ {
>                       .type = JAILHOUSE_PCI_TYPE_IVSHMEM,
> -                     .domain = 3,
> -                     .bdf = 1 << 3,
> -                     .bar_mask = JAILHOUSE_IVSHMEM_BAR_MASK_INTX,
> +                     .domain = 4,
> +                     .bdf = 0 << 3,
> +                     .bar_mask = JAILHOUSE_IVSHMEM_BAR_MASK_INTX_64K,
>                       .shmem_regions_start = 0,
>                       .shmem_dev_id = 0,
>                       .shmem_peers = 2,
> +                     .shmem_protocol = JAILHOUSE_SHMEM_PROTO_UNDEFINED,
> +             },
> +             /* 00:01.0 (networking) */ {
> +                     .type = JAILHOUSE_PCI_TYPE_IVSHMEM,
> +                     .domain = 4,
> +                     .bdf = 1 << 3,
> +                     .bar_mask = JAILHOUSE_IVSHMEM_BAR_MASK_INTX_64K,
> +                     .shmem_regions_start = 4,
> +                     .shmem_dev_id = 0,
> +                     .shmem_peers = 2,
>                       .shmem_protocol = JAILHOUSE_SHMEM_PROTO_VETH,
>               },
>       },
> 

-- 
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/d1f2b18a-2891-61c3-d66b-ce0c95575c09%40siemens.com.

Reply via email to