)]}'
{
  "commit": "4cd87232ede874bf8bec1d341da0fddd2663835a",
  "tree": "ff3ea794ee86a3acd4cdd94924bcd1ac9fffcb79",
  "parents": [
    "8f41e794db07fbf01e614dcf940454dce995a3b8"
  ],
  "author": {
    "name": "Michael Brown",
    "email": "mcb30@ipxe.org",
    "time": "Wed Oct 14 16:49:49 2026 +0100"
  },
  "committer": {
    "name": "Michael Brown",
    "email": "mcb30@ipxe.org",
    "time": "Wed Oct 14 16:49:49 2026 +0100"
  },
  "message": "[int13con] Preserve all registers across real-mode calls\n\nThe BIOS on some older AWS instance types (observed with c3.large in\neu-central-1) does not correctly preserve the upper halves of the\n32-bit general-purpose registers.  In particular, calling INT13,42 or\nINT13,43 will zero the high half of %ebx.  If the compiled code has a\nlive value in %ebx then this will result in undefined behaviour.\n\nThe defect appears to be AWS-specific: it does not exist in the\nupstream Bochs BIOS code from which this BIOS is derived.\n\nThe iPXE disk log console is not performance-sensitive but must be as\nreliable as possible, since it exists to be the debug log mechanism of\nlast resort.  We therefore choose the path of maximum paranoia: we\nwork around this and other potential BIOS bugs by preserving all\nnon-output registers across all real-mode calls.\n\nSigned-off-by: Michael Brown \u003cmcb30@ipxe.org\u003e\n",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "5808e2e891b035e8b1361d610323493f179aa3af",
      "old_mode": 33188,
      "old_path": "src/arch/x86/interface/pcbios/int13con.c",
      "new_id": "0e28b678e438a9062a88e19d150b87f6c23ecee1",
      "new_mode": 33188,
      "new_path": "src/arch/x86/interface/pcbios/int13con.c"
    }
  ]
}
