)]}'
{
  "commit": "acdd57084efcc0fe75478c4ffb36492919201876",
  "tree": "7b23dd784c105be4fdaf3ee449ed15880663afbc",
  "parents": [
    "b4f097492a154f67bca0def5739564702a04d300"
  ],
  "author": {
    "name": "Mostafa Saleh",
    "email": "smostafa@google.com",
    "time": "Thu Jun 08 12:40:54 2023 +0000"
  },
  "committer": {
    "name": "Mostafa Saleh",
    "email": "smostafa@google.com",
    "time": "Mon Jul 10 14:12:03 2023 +0000"
  },
  "message": "KVM: arm64: iommu: smmu: VM teardown for stage-1\n\nWhen a VM is teardown, it may still have pages in mapped in it\u0027s\nIOMMU, these pages are refcounted and never reclaimed.\n\nTo cleanly teardown IOMMUs from VMs, 2 operations are needed:\n- Clear STE/CDs to have invalid configs implemented by\n  kvm_iommu_force_detach_dev\n- Free all page tables used and decrement the refcount for page\n  mapped, Implemented in kvm_iommu_free_guest_domains, to avoid\n  walking all domain space, we add nr_domains for hyp_vm so we exit\n  early once all domains are freed. Another apporach that requires\n  dynamic allocation is to have a list of domains belong to the\n  hyp_vm.\n\nOne difference between teardown and other IOMMU operations, is that\nthe hyp_vcpu is not loaded, so pkvm_get_loaded_hyp_vcpu() can\u0027t be\nused in reclaim path.\nA new per-cpu variable is added to mark the context of teardown\noperation.\n\nSigned-off-by: Mostafa Saleh \u003csmostafa@google.com\u003e\n",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "3187cb26523b00b44dea11ad1b3ae8f58f7e64b6",
      "old_mode": 33188,
      "old_path": "arch/arm64/kvm/hyp/include/nvhe/iommu.h",
      "new_id": "09753cd9fc95a297628d9b470d52920cb43ab76e",
      "new_mode": 33188,
      "new_path": "arch/arm64/kvm/hyp/include/nvhe/iommu.h"
    },
    {
      "type": "modify",
      "old_id": "65ec8f681ba11a610406795c9a8f11995e45b4fd",
      "old_mode": 33188,
      "old_path": "arch/arm64/kvm/hyp/include/nvhe/pkvm.h",
      "new_id": "2426c27ee2821a28e93f2ae0c66564893744eaef",
      "new_mode": 33188,
      "new_path": "arch/arm64/kvm/hyp/include/nvhe/pkvm.h"
    },
    {
      "type": "modify",
      "old_id": "24e93733260f0e16359c54b4d58f385326d5c4de",
      "old_mode": 33188,
      "old_path": "arch/arm64/kvm/hyp/include/nvhe/pviommu.h",
      "new_id": "8b9181eb068fddf8f9d36aef4b3e7db3c2542afd",
      "new_mode": 33188,
      "new_path": "arch/arm64/kvm/hyp/include/nvhe/pviommu.h"
    },
    {
      "type": "modify",
      "old_id": "cf411ca59e97e61a0e51e3c09fcf1d6c74c1bdcb",
      "old_mode": 33188,
      "old_path": "arch/arm64/kvm/hyp/nvhe/iommu/arm-smmu-v3.c",
      "new_id": "5a57fdff666664690a88472d17043119d033572b",
      "new_mode": 33188,
      "new_path": "arch/arm64/kvm/hyp/nvhe/iommu/arm-smmu-v3.c"
    },
    {
      "type": "modify",
      "old_id": "49520b60e28d01b030d63349bd4bd599342061f1",
      "old_mode": 33188,
      "old_path": "arch/arm64/kvm/hyp/nvhe/iommu/iommu.c",
      "new_id": "d14da89a9f3966ac859fac834ab89a242e95ce8b",
      "new_mode": 33188,
      "new_path": "arch/arm64/kvm/hyp/nvhe/iommu/iommu.c"
    },
    {
      "type": "modify",
      "old_id": "9370ef5de8c4fe80134ddccddcb49c323d143b6f",
      "old_mode": 33188,
      "old_path": "arch/arm64/kvm/hyp/nvhe/iommu/pviommu-host.c",
      "new_id": "add704c69e2a2682f691a4f01cf9b87f650e99ed",
      "new_mode": 33188,
      "new_path": "arch/arm64/kvm/hyp/nvhe/iommu/pviommu-host.c"
    },
    {
      "type": "modify",
      "old_id": "97f24d4027f022597c52b347c335636dbdf8db1b",
      "old_mode": 33188,
      "old_path": "arch/arm64/kvm/hyp/nvhe/iommu/pviommu.c",
      "new_id": "e541563ca5e38e57e60380f0284bd534131c8df7",
      "new_mode": 33188,
      "new_path": "arch/arm64/kvm/hyp/nvhe/iommu/pviommu.c"
    },
    {
      "type": "modify",
      "old_id": "f38c9032dcc3cb195af69d146574aae35a2879ee",
      "old_mode": 33188,
      "old_path": "arch/arm64/kvm/hyp/nvhe/pkvm.c",
      "new_id": "ed39b4461f459761b462c1f05d55140b4523a80f",
      "new_mode": 33188,
      "new_path": "arch/arm64/kvm/hyp/nvhe/pkvm.c"
    }
  ]
}
