Additionally, compact ZCU SMMU IDs using the mask+id stream specification

Example of the mask-id stream_id configuration. Compact all 10h'07*
master IDs by masking-out the lower 4 bits.

Signed-off-by: Andrea Bastoni <[email protected]>
---
 configs/arm64/imx8qm-linux-demo.c       |  7 +++++--
 configs/arm64/imx8qm.c                  | 16 +++++++++++++---
 configs/arm64/k3-j7200-evm-linux-demo.c |  2 +-
 configs/arm64/k3-j7200-evm.c            |  2 +-
 configs/arm64/k3-j721e-evm-linux-demo.c |  2 +-
 configs/arm64/k3-j721e-evm.c            |  2 +-
 configs/arm64/ultra96.c                 | 11 +++++++++--
 configs/arm64/zynqmp-zcu102.c           | 15 +++++++++++++--
 8 files changed, 44 insertions(+), 13 deletions(-)

diff --git a/configs/arm64/imx8qm-linux-demo.c 
b/configs/arm64/imx8qm-linux-demo.c
index f13ca7bc..e8e8b217 100644
--- a/configs/arm64/imx8qm-linux-demo.c
+++ b/configs/arm64/imx8qm-linux-demo.c
@@ -19,7 +19,7 @@ struct {
        struct jailhouse_memory mem_regions[18];
        struct jailhouse_irqchip irqchips[4];
        struct jailhouse_pci_device pci_devices[2];
-       __u32 stream_ids[1];
+       union jailhouse_stream_id stream_ids[1];
 } __attribute__((packed)) config = {
        .cell = {
                .signature = JAILHOUSE_CELL_DESC_SIGNATURE,
@@ -194,6 +194,9 @@ struct {
        },
 
        .stream_ids = {
-               0x10,
+               {
+                       .mmu500.mask = 0x7f8,
+                       .mmu500.id = 0x10,
+               },
        },
 };
diff --git a/configs/arm64/imx8qm.c b/configs/arm64/imx8qm.c
index d63c73cf..2ec4f4dd 100644
--- a/configs/arm64/imx8qm.c
+++ b/configs/arm64/imx8qm.c
@@ -20,7 +20,7 @@ struct {
        struct jailhouse_memory mem_regions[15];
        struct jailhouse_irqchip irqchips[3];
        struct jailhouse_pci_device pci_devices[2];
-       __u32 stream_ids[3];
+       union jailhouse_stream_id stream_ids[3];
 } __attribute__((packed)) config = {
        .header = {
                .signature = JAILHOUSE_SYSTEM_SIGNATURE,
@@ -54,7 +54,6 @@ struct {
                                        .type = JAILHOUSE_IOMMU_ARM_MMU500,
                                        .base = 0x51400000,
                                        .size = 0x40000,
-                                       .arm_mmu500.sid_mask = 0x7f80,
                                },
                        },
 
@@ -209,6 +208,17 @@ struct {
        },
 
        .stream_ids = {
-               0x11, 0x12, 0x13,
+               {
+                       .mmu500.mask = 0x7f8,
+                       .mmu500.id = 0x11,
+               },
+               {
+                       .mmu500.mask = 0x7f8,
+                       .mmu500.id = 0x12,
+               },
+               {
+                       .mmu500.mask = 0x7f8,
+                       .mmu500.id = 0x13,
+               },
        },
 };
diff --git a/configs/arm64/k3-j7200-evm-linux-demo.c 
b/configs/arm64/k3-j7200-evm-linux-demo.c
index 90a0ce4c..ace9cd3a 100644
--- a/configs/arm64/k3-j7200-evm-linux-demo.c
+++ b/configs/arm64/k3-j7200-evm-linux-demo.c
@@ -26,7 +26,7 @@ struct {
        struct jailhouse_memory mem_regions[19];
        struct jailhouse_irqchip irqchips[3];
        struct jailhouse_pci_device pci_devices[2];
-       __u32 stream_ids[1];
+       union jailhouse_stream_id stream_ids[1];
 } __attribute__((packed)) config = {
        .cell = {
                .signature = JAILHOUSE_CELL_DESC_SIGNATURE,
diff --git a/configs/arm64/k3-j7200-evm.c b/configs/arm64/k3-j7200-evm.c
index c3ac331d..d0c8aee3 100644
--- a/configs/arm64/k3-j7200-evm.c
+++ b/configs/arm64/k3-j7200-evm.c
@@ -21,7 +21,7 @@ struct {
        struct jailhouse_memory mem_regions[32];
        struct jailhouse_irqchip irqchips[6];
        struct jailhouse_pci_device pci_devices[2];
-       __u32 stream_ids[1];
+       union jailhouse_stream_id stream_ids[1];
 } __attribute__((packed)) config = {
        .header = {
                .signature = JAILHOUSE_SYSTEM_SIGNATURE,
diff --git a/configs/arm64/k3-j721e-evm-linux-demo.c 
b/configs/arm64/k3-j721e-evm-linux-demo.c
index 5b6aa82e..1b8b3c4c 100644
--- a/configs/arm64/k3-j721e-evm-linux-demo.c
+++ b/configs/arm64/k3-j721e-evm-linux-demo.c
@@ -27,7 +27,7 @@ struct {
        struct jailhouse_memory mem_regions[22];
        struct jailhouse_irqchip irqchips[4];
        struct jailhouse_pci_device pci_devices[2];
-       __u32 stream_ids[2];
+       union jailhouse_stream_id stream_ids[2];
 } __attribute__((packed)) config = {
        .cell = {
                .signature = JAILHOUSE_CELL_DESC_SIGNATURE,
diff --git a/configs/arm64/k3-j721e-evm.c b/configs/arm64/k3-j721e-evm.c
index ab13fedd..aa5b47a9 100644
--- a/configs/arm64/k3-j721e-evm.c
+++ b/configs/arm64/k3-j721e-evm.c
@@ -22,7 +22,7 @@ struct {
        struct jailhouse_memory mem_regions[40];
        struct jailhouse_irqchip irqchips[6];
        struct jailhouse_pci_device pci_devices[2];
-       __u32 stream_ids[30];
+       union jailhouse_stream_id stream_ids[30];
 } __attribute__((packed)) config = {
        .header = {
                .signature = JAILHOUSE_SYSTEM_SIGNATURE,
diff --git a/configs/arm64/ultra96.c b/configs/arm64/ultra96.c
index db65ae01..19be84ae 100644
--- a/configs/arm64/ultra96.c
+++ b/configs/arm64/ultra96.c
@@ -21,7 +21,7 @@ struct {
        struct jailhouse_memory mem_regions[11];
        struct jailhouse_irqchip irqchips[1];
        struct jailhouse_pci_device pci_devices[2];
-       __u32 stream_ids[2];
+       union jailhouse_stream_id stream_ids[2];
 } __attribute__((packed)) config = {
        .header = {
                .signature = JAILHOUSE_SYSTEM_SIGNATURE,
@@ -161,6 +161,13 @@ struct {
        },
 
        .stream_ids = {
-               0x870, 0x871
+               {
+                       .mmu500.mask = 0x0,
+                       .mmu500.id = 0x870,
+               },
+               {
+                       .mmu500.mask = 0x0,
+                       .mmu500.id = 0x871,
+               },
        },
 };
diff --git a/configs/arm64/zynqmp-zcu102.c b/configs/arm64/zynqmp-zcu102.c
index bdcb04b3..1a5d29b3 100644
--- a/configs/arm64/zynqmp-zcu102.c
+++ b/configs/arm64/zynqmp-zcu102.c
@@ -23,7 +23,7 @@ struct {
        struct jailhouse_memory mem_regions[12];
        struct jailhouse_irqchip irqchips[1];
        struct jailhouse_pci_device pci_devices[2];
-       __u32 stream_ids[8];
+       union jailhouse_stream_id stream_ids[3];
 } __attribute__((packed)) config = {
        .header = {
                .signature = JAILHOUSE_SYSTEM_SIGNATURE,
@@ -147,6 +147,17 @@ struct {
        },
 
        .stream_ids = {
-               0x860, 0x861, 0x870, 0x871, 0x874, 0x875, 0x876, 0x877
+               {
+                       .mmu500.mask = 0x0,
+                       .mmu500.id = 0x860,
+               },
+               {
+                       .mmu500.mask = 0x0,
+                       .mmu500.id = 0x861,
+               },
+               {
+                       .mmu500.mask = 0xf,
+                       .mmu500.id = 0x870,
+               },
        },
 };
-- 
2.28.0

-- 
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/20201109160100.103095-2-andrea.bastoni%40tum.de.

Reply via email to