)]}'
{
  "commit": "6a004be0cceab5d669eedb5a2e6ee2feab31d5bd",
  "tree": "433b4f9bb316d977b23d1e6bc7cec8467435c1d5",
  "parents": [
    "cf9ad00afcd6d8873fbefbbaf1f0813948a796ba"
  ],
  "author": {
    "name": "Michael Brown",
    "email": "mcb30@ipxe.org",
    "time": "Wed Feb 15 15:48:31 2023 +0000"
  },
  "committer": {
    "name": "Michael Brown",
    "email": "mcb30@ipxe.org",
    "time": "Wed Feb 15 17:36:47 2023 +0000"
  },
  "message": "[efi] Support the initrd autodetection mechanism in newer Linux kernels\n\nLinux 5.7 added the ability to autodetect an initrd by searching for a\nhandle via a fixed vendor-specific \"Linux initrd device path\" and then\nlocating and using the EFI_LOAD_FILE2_PROTOCOL instance on that\nhandle.\n\nThis maps quite naturally onto our existing concept of a \"magic\ninitrd\" as introduced for EFI in commit e5f0255 (\"[efi] Provide an\n\"initrd.magic\" file for use by UEFI kernels\").\n\nAdd an EFI_LOAD_FILE2_PROTOCOL instance to our EFI virtual files\n(backed by simply calling the existing EFI_SIMPLE_FILE_SYSTEM_PROTOCOL\nmethod to read from the file), and install the protocol instance for\nthe \"initrd.magic\" virtual file onto a new device handle that also\nprovides the Linux initrd device path.\n\nThe design choice in Linux of using a single fixed device path makes\nthis unfortunately messy to support, since device paths must be unique\nwithin a system.  When multiple bootloaders are used (e.g. GRUB\nloading iPXE loading Linux) then only one bootloader can ever install\nthe device path onto a handle.  Subsequent bootloaders must locate the\nexisting handle and replace the load file protocol instance with their\nown.\n\nSigned-off-by: Michael Brown \u003cmcb30@ipxe.org\u003e\n",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "7ed3ea5ac6e9ad83bbbea0e895182c6bd85a3736",
      "old_mode": 33188,
      "old_path": "src/interface/efi/efi_file.c",
      "new_id": "e8debbbe1a538c8419504eb7cd9126f7b909fd3e",
      "new_mode": 33188,
      "new_path": "src/interface/efi/efi_file.c"
    }
  ]
}
