)]}'
{
  "commit": "eb6ae7a6829385ca41227e878f5ca3d1faf31d52",
  "tree": "abb739540d2b8da91eabb834d9d8dd4f52a1dcd0",
  "parents": [
    "523b6b3abac928ff3574d8a45df58d29bd8ae454"
  ],
  "author": {
    "name": "David Woodhouse",
    "email": "dwmw@amazon.co.uk",
    "time": "Mon Oct 16 10:28:17 2023 +0100"
  },
  "committer": {
    "name": "David Woodhouse",
    "email": "dwmw@amazon.co.uk",
    "time": "Tue Nov 07 08:54:20 2023 +0000"
  },
  "message": "hw/xen: do not repeatedly try to create a failing backend device\n\nIf xen_backend_device_create() fails to instantiate a device, the XenBus\ncode will just keep trying over and over again each time the bus is\nre-enumerated, as long as the backend appears online and in\nXenbusStateInitialising.\n\nThe only thing which prevents the XenBus code from recreating duplicates\nof devices which already exist, is the fact that xen_device_realize()\nsets the backend state to XenbusStateInitWait. If the attempt to create\nthe device doesn\u0027t get *that* far, that\u0027s when it will keep getting\nretried.\n\nMy first thought was to handle errors by setting the backend state to\nXenbusStateClosed, but that doesn\u0027t work for XenConsole which wants to\n*ignore* any device of type !\u003d \"ioemu\" completely.\n\nSo, make xen_backend_device_create() *keep* the XenBackendInstance for a\nfailed device, and provide a new xen_backend_exists() function to allow\nxen_bus_type_enumerate() to check whether one already exists before\ncreating a new one.\n\nSigned-off-by: David Woodhouse \u003cdwmw@amazon.co.uk\u003e\nReviewed-by: Paul Durrant \u003cpaul@xen.org\u003e\n",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "5b0fb76eaeb38106f35ceac2830b1375f434b81e",
      "old_mode": 33188,
      "old_path": "hw/xen/xen-backend.c",
      "new_id": "b9bf70a9f52bb39fb58c0e119b54b3352646e9ca",
      "new_mode": 33188,
      "new_path": "hw/xen/xen-backend.c"
    },
    {
      "type": "modify",
      "old_id": "12ff7820051bf27223fae752154d675469038ec8",
      "old_mode": 33188,
      "old_path": "hw/xen/xen-bus.c",
      "new_id": "3ffd1a5333bf8048caf04f3e3e1fc717e49281be",
      "new_mode": 33188,
      "new_path": "hw/xen/xen-bus.c"
    },
    {
      "type": "modify",
      "old_id": "aac2fd454d449ee774ac3f52c6e60101b4b75c58",
      "old_mode": 33188,
      "old_path": "include/hw/xen/xen-backend.h",
      "new_id": "0f01631ae7a44bb8eb322869b1c4c958a5bbaf13",
      "new_mode": 33188,
      "new_path": "include/hw/xen/xen-backend.h"
    }
  ]
}
