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.

Reply via email to