)]}'
{
  "commit": "eff6a07aa2d681b21609a9c58c555a5d62db865a",
  "tree": "502765d9cc5f64412e3322976f223e9e1a93cd84",
  "parents": [
    "1844aacc837bf81cb1959fa65f2e52dcc70a0cae"
  ],
  "author": {
    "name": "Michael Brown",
    "email": "mcb30@ipxe.org",
    "time": "Fri Nov 12 15:57:51 2021 +0000"
  },
  "committer": {
    "name": "Michael Brown",
    "email": "mcb30@ipxe.org",
    "time": "Fri Nov 12 15:57:51 2021 +0000"
  },
  "message": "[xhci] Avoid DMA during shutdown if firmware has disabled bus mastering\n\nOn some systems (observed with the Thunderbolt ports on a ThinkPad X1\nExtreme Gen3 and a ThinkPad P53), the system firmware will disable bus\nmastering on the xHCI controller and all PCI bridges at the point that\nExitBootServices() is called if the IOMMU is enabled.  This leaves the\nxHCI controller unable to shut down cleanly since all commands will\nfail with a timeout.\n\nCommit 85eb961 (\"[xhci] Allow for permanent failure of the command\nmechanism\") allows us to detect that this has happened and respond\ncleanly.  However, some unidentified hardware component (either the\nxHCI controller or one of the PCI bridges) seems to manage to enqueue\nthe attempted DMA operation and eventually complete it after the\noperating system kernel has reenabled bus mastering.  This results in\na DMA operation to an area of memory that the hardware is no longer\npermitted to access.  On Windows with the Driver Verifier enabled,\nthis will result in a STOP 0xE6 (DRIVER_VERIFIER_DMA_VIOLATION).\n\nWork around this problem by detecting when bus mastering has been\ndisabled, and immediately failing the device to avoid initiating any\nfurther DMA attempts.\n\nSigned-off-by: Michael Brown \u003cmcb30@ipxe.org\u003e\n",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "3d98b1e10f93876f6ea980ef30c18d205f55313d",
      "old_mode": 33188,
      "old_path": "src/drivers/usb/xhci.c",
      "new_id": "3247ee69c173b1741bd466e4a031460a366c7970",
      "new_mode": 33188,
      "new_path": "src/drivers/usb/xhci.c"
    }
  ]
}
