)]}'
{
  "commit": "83a4d596a93bc22ace521789979f5ccdcd91ab96",
  "tree": "2b95d1ea02cc7deb63ff5c67e843cf964f300897",
  "parents": [
    "21e8d3a3aa1627079088e2430946dea62bf5c703"
  ],
  "author": {
    "name": "Joao Martins",
    "email": "joao.m.martins@oracle.com",
    "time": "Mon Jul 22 22:13:21 2024 +0100"
  },
  "committer": {
    "name": "Cédric Le Goater",
    "email": "clg@redhat.com",
    "time": "Tue Jul 23 17:14:52 2024 +0200"
  },
  "message": "vfio/{iommufd, container}: Invoke HostIOMMUDevice::realize() during attach_device()\n\nMove the HostIOMMUDevice::realize() to be invoked during the attach of the device\nbefore we allocate IOMMUFD hardware pagetable objects (HWPT). This allows the use\nof the hw_caps obtained by IOMMU_GET_HW_INFO that essentially tell if the IOMMU\nbehind the device supports dirty tracking.\n\nNote: The HostIOMMUDevice data from legacy backend is static and doesn\u0027t\nneed any information from the (type1-iommu) backend to be initialized.\nIn contrast however, the IOMMUFD HostIOMMUDevice data requires the\niommufd FD to be connected and having a devid to be able to successfully\nGET_HW_INFO. This means vfio_device_hiod_realize() is called in\ndifferent places within the backend .attach_device() implementation.\n\nSuggested-by: Cédric Le Goater \u003cclg@redhat.cm\u003e\nSigned-off-by: Joao Martins \u003cjoao.m.martins@oracle.com\u003e\nReviewed-by: Zhenzhong Duan \u003czhenzhong.duan@intel.com\u003e\nReviewed-by: Cédric Le Goater \u003cclg@redhat.com\u003e\n[ clg: Fixed error handling in iommufd_cdev_attach() ]\nSigned-off-by: Cédric Le Goater \u003cclg@redhat.com\u003e\nReviewed-by: Eric Auger \u003ceric.auger@redhat.com\u003e\n",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "d7f02be595b5e71558d7e2d75d21d28f05968252",
      "old_mode": 33188,
      "old_path": "hw/vfio/common.c",
      "new_id": "26e74fa430db4c7618698ded5d514d524f33d273",
      "new_mode": 33188,
      "new_path": "hw/vfio/common.c"
    },
    {
      "type": "modify",
      "old_id": "10cb4b4320ac3d6b3a1da3625e964af5f2f2f9a7",
      "old_mode": 33188,
      "old_path": "hw/vfio/container.c",
      "new_id": "9ccdb639ac84f885da40eace8a0059f397295619",
      "new_mode": 33188,
      "new_path": "hw/vfio/container.c"
    },
    {
      "type": "modify",
      "old_id": "7e23e9080c9d2860dea51ca5ef5fbc840d42a32d",
      "old_mode": 33188,
      "old_path": "hw/vfio/helpers.c",
      "new_id": "ea15c79db0a3643f260fc1ce3abfeaa7001ab306",
      "new_mode": 33188,
      "new_path": "hw/vfio/helpers.c"
    },
    {
      "type": "modify",
      "old_id": "fb87e64e443035bc239f4f4272ae1c28fa8ab8c9",
      "old_mode": 33188,
      "old_path": "hw/vfio/iommufd.c",
      "new_id": "798c4798a55e0c839c5128b3cd9571356157dce9",
      "new_mode": 33188,
      "new_path": "hw/vfio/iommufd.c"
    },
    {
      "type": "modify",
      "old_id": "1a96678f8c384e7ff4a1db1e0ba90a5f9624bcff",
      "old_mode": 33188,
      "old_path": "include/hw/vfio/vfio-common.h",
      "new_id": "4e44b26d3c453b5b47a819df371a21a4ca3b39c3",
      "new_mode": 33188,
      "new_path": "include/hw/vfio/vfio-common.h"
    }
  ]
}
