)]}'
{
  "commit": "f74a725028d5a1fd87b920630f1e00668133a178",
  "tree": "b6487561cf83f77147cf62f8ba70b513ca7524eb",
  "parents": [
    "3e157e2b0101b36f001a4ffb02816376008cdb82"
  ],
  "author": {
    "name": "Fuad Tabba",
    "email": "fuad.tabba@linux.dev",
    "time": "Fri Jul 03 02:42:30 2026 +0100"
  },
  "committer": {
    "name": "Fuad Tabba",
    "email": "fuad.tabba@linux.dev",
    "time": "Tue Aug 11 15:38:16 2026 +0100"
  },
  "message": "KVM: arm64: nVHE: Check hypercall handlers against the declared ABI\n\nEach hypercall handler unmarshals its arguments from the host context\nwith hand-written DECLARE_REG() casts that nothing ties to what the\ncaller passed: a handler can disagree with its caller in argument type,\ncount or register index without a diagnostic.\n\nGenerate the unmarshalling instead. DEFINE_KVM_HOST_HCALL() expands to\nthe handle_\u003cname\u003e() glue, modelled on the syscall wrappers, and checks\nthe handler\u0027s parameter list against the signature declared in\nkvm_hcall.h, so both ends of every hypercall are now compiled against\nthe same declaration. Handler bodies keep their logic and lose the\nDECLARE_REG() and return-register boilerplate. The two\nget_host_hyp_vcpus() macros existed only to wrap DECLARE_REG(), so one\nis dropped and the other becomes a function. The compiled handlers are\ninstruction-for-instruction identical, apart from flush_hyp_vcpu() and\nsync_hyp_vcpu() now being inlined into their only caller.\n\nThe return-register store is picked by the declared return type, so a\nvoid handler needs no macro of its own. The type is pasted into the\nstore\u0027s name, which has to be a single word, so\n__pkvm_create_private_mapping is declared ulong.\n\nAssisted-by: Antigravity:gemini-3.1-pro\nReviewed-by: Marc Zyngier \u003cmaz@kernel.org\u003e\nSigned-off-by: Fuad Tabba \u003cfuad.tabba@linux.dev\u003e\n",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "c2efcb89e6e70b72e7e38b812ff1e319d8145576",
      "old_mode": 33188,
      "old_path": "arch/arm64/include/asm/kvm_hcall.h",
      "new_id": "c709991d10cda86b6b36b222085894fdd1e931f0",
      "new_mode": 33188,
      "new_path": "arch/arm64/include/asm/kvm_hcall.h"
    },
    {
      "type": "modify",
      "old_id": "dff7c0331f28eabb772d5bab8bf2e3ef7aeaf9df",
      "old_mode": 33188,
      "old_path": "arch/arm64/kvm/hyp/nvhe/hyp-main.c",
      "new_id": "b145cce721a060c91396537ee0cb29f3ec687683",
      "new_mode": 33188,
      "new_path": "arch/arm64/kvm/hyp/nvhe/hyp-main.c"
    }
  ]
}
