)]}'
{
  "commit": "a029f4e13b54cfe87a04af7209a0d9744f3b7613",
  "tree": "5f615a8059e4009058179d9b6d11c35370ae7314",
  "parents": [
    "ae435cb4cc78183814f867686d278885db2988f8"
  ],
  "author": {
    "name": "Michael Brown",
    "email": "mcb30@ipxe.org",
    "time": "Fri Jun 23 15:03:30 2023 +0100"
  },
  "committer": {
    "name": "Michael Brown",
    "email": "mcb30@ipxe.org",
    "time": "Fri Jun 23 16:51:10 2023 +0100"
  },
  "message": "[efi] Veto the VirtualBox E1kNetDxe driver\n\nThe VirtualBox E1kNetDxe driver has a Stop() method that relies on\nbeing passed its own child device handle.  Unfortunately, the same\ndriver\u0027s Start() method never opens the parent device handle with\nBY_CHILD_CONTROLLER attributes on behalf of the newly installed child\ndevice handle, with the result that the UEFI device model is\ncompletely unaware of the nominal parent-child relationship.  This\nomission can be observed via the UEFI shell \"devtree\" command, which\nwill show the child SNP device handle as a standalone top-level device\nhandle, with no relationship to its underlying parent PCI device\nhandle.\n\nThe upshot of this omission is that the VirtualBox E1kNetDxe driver\u0027s\nStop() method is a pure no-op.  Calling DisconnectController() on the\nPCI device handle will return successfully, but will not have actually\ndisconnected anything.  A subsequent attempt to open the handle on\nbehalf of iPXE\u0027s native Intel driver will get stuck in an infinite\nloop inside OpenProtocol(), as the firmware repeatedly calls\nDisconnectController() in an attempt to disconnect the E1kNetDxe\ndriver from the PCI device handle.\n\nWork around this problem by adding the buggy VirtualBox E1kNetDxe\ndriver to the veto list.\n\nSigned-off-by: Michael Brown \u003cmcb30@ipxe.org\u003e\n",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "a3b60d65f85c347ba996236d51966fdc9d58cd88",
      "old_mode": 33188,
      "old_path": "src/interface/efi/efi_veto.c",
      "new_id": "40dce9d0a440adfa37adb1d4468ae195d3ac6612",
      "new_mode": 33188,
      "new_path": "src/interface/efi/efi_veto.c"
    }
  ]
}
