Changes in v2: - map 52-bit parange to 48 That wasn't the plan when I started, but the more I dug into the details and started to understand the hardware, the more issues I found and the more dead code fragments from the Linux usage became visible.
Highlights of the outcome: - Fix stall of SMMU due to unhandled stalled contexts (took me a while to understand that...) - Fix programming of CBn_TCR and TTBR - Fix TLB flush on cell exit - Fix bogus handling of Extended StreamID support - Do not pass-through unknown streams - Disable SMMU on shutdown - Reassign StreamIDs to the root cell - 225 insertions(+), 666 deletions(-) The code works as expected on the Ultra96-v2 here, but due to all the time that went into the rework, I had no chance to bring up my MX8QM so far. I'm fairly optimistic that things are not broken there as well, but if they are, bisecting should be rather simple with this series. So please test and review. Jan CC: Alice Guo <[email protected]> CC: Chase Conklin <[email protected]> CC: Peng Fan <[email protected]> Jan Kiszka (46): configs: arm64: Add SMMU configuration for Ultra96 arm64: Cap parange at 48 bits arm64: Introduce cpu_parange_encoded arm64: Simplify get_cpu_parange arm64: smmu: Deny transfers by default arm64: smmu: Drop test for non-zero base address arm64: smmu: Drop useless features initialization arm64: smmu: Clean up arm_smmu_find_sme parameters arm64: smmu: Refactor smmu device setup and usage arm64: smmu: Fold arm_smmu_free_sme into single caller arm64: smmu: Replace for_each_smmu_sid with for_each_stream_id arm64: smmu: Make sCR0 write-only arm64: smmu: Add shutdown handler arm64: smmu: Tune output arm64: smmu: Remove IRPTNDX traces arm64: smmu: Remove bogus Extended StreamID support fragments arm64: smmu: Drop unneeded includes arm64: smmu: Do not stall failing context transaction arm64: smmu: Move S2CR macro out of sysregs.h arm64: smmu: Refactor S2CR handling arm64: smmu: Simplify VMID and CBNDX allocation arm64: smmu: Drop write-only pgsize_bitmap arm64: smmu: Drop write-only va_size field arm64: smmu: Demand aarch64-4K paging, drop probing of unused formats arm64: smmu: Fix CBn_TCR initialization arm64: smmu: Drop coherency reporting arm64: smmu: Drop stream-match feature recording arm64: smmu: Drop 16-bit VMID feature arm64: smmu: Drop dead ARM_SMMU_OPT_SECURE_CFG_ACCESS arm64: smmu: Drop dead arm_smmu_test_smr_masks arm64: smmu: Fix TLB flush on cell exit arm64: smmu: Disable context bank only once on cell exit arm64: smmu: Introduce arm_smmu_disable_context_bank arm64: smmu: Refactor ID0 evaluation arm64: smmu: Refactor ID1 evaluation arm64: smmu: Refactor ID2 evaluation arm64: smmu: Check IAS and OAS against CPU parange arm64: smmu: Refactor ID7 evaluation arm64: smmu: Demand version 2 arm64: smmu: Drop more unused fields from arm_smmu_device arm64: smmu: Catch VMID exhaustion arm64: smmu: Rename ARM_SMMU_CB_TTBCR, drop unused ARM_SMMU_CB_CONTEXTIDR arm64: smmu: Fix CNn_TTBR construction arm64: smmu: Stop caching context bank states arm64: smmu: Clean up arm_smmu_tlb_sync_global further arm64: smmu: Return StreamIDs on cell destruction to the root cell configs/arm64/ultra96.c | 15 + hypervisor/arch/arm64/include/asm/paging.h | 21 +- hypervisor/arch/arm64/include/asm/sysregs.h | 7 - hypervisor/arch/arm64/paging.c | 30 +- hypervisor/arch/arm64/smmu.c | 830 +++++--------------- 5 files changed, 239 insertions(+), 664 deletions(-) -- 2.26.2 -- 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/cover.1602664149.git.jan.kiszka%40siemens.com.
