)]}'
{
  "log": [
    {
      "commit": "dbf50334a199f6721c0c4e4cae8bedfe5d24db76",
      "tree": "fccfbece9a33da0efd598cc2fa98e9ae33a478c5",
      "parents": [
        "e060018655f802896dc226832d25e223102889c8"
      ],
      "author": {
        "name": "Nico Huber",
        "email": "nico.h@gmx.de",
        "time": "Sun Mar 02 14:02:51 2025 +0100"
      },
      "committer": {
        "name": "Nico Huber",
        "email": "nico.h@gmx.de",
        "time": "Tue Dec 09 20:53:39 2025 +0000"
      },
      "message": "linux_mtd: Use sizeof() instead of strlen() on constant string\n\nNewer Clang warns about using strlen() to calculate an array length\n(results in a variable-length array w/o GNU extensions).\n\nChange-Id: I30bef896104b315082d2d74984f3e43557d24656\nSigned-off-by: Nico Huber \u003cnico.h@gmx.de\u003e\nReviewed-on: https://review.sourcearcade.org/c/flashprog/+/333\nReviewed-by: Felix Singer \u003cfelixsinger@posteo.net\u003e\n"
    },
    {
      "commit": "842d678f07439e133e69fc775a848dcd66369446",
      "tree": "c01716fbc4220c1211749772d6a566e6d70701d7",
      "parents": [
        "aa714dd3dd7090e1fa7175f3a32a252b04817261"
      ],
      "author": {
        "name": "Richard Hughes",
        "email": "richard@hughsie.com",
        "time": "Fri Jan 15 09:48:12 2021 +0000"
      },
      "committer": {
        "name": "Nico Huber",
        "email": "nico.h@gmx.de",
        "time": "Wed Mar 27 08:32:15 2024 +0000"
      },
      "message": "libflashrom: Return progress state to the library user\n\nProjects using libflashrom like fwupd expect the user to wait for the\noperation to complete. To avoid the user thinking the process has\n\"hung\" or \"got stuck\" report back the progress complete of the erase,\nwrite and read operations.\n\nAdd a new --progress flag to the CLI to report progress of operations.\n\nInclude a test for the dummy spi25 device.\n\nTested: ./test_build.sh; ./flashrom -p lspcon_i2c_spi:bus\u003d7 -r /dev/null --progress\n\nflashrom-stable:\n* Closer to original libflashrom API.\n* Split update_progress() into progress_start/_set/_add/_finish:\n  Simplifies progress calls scattered through the code base. We let\n  the core code in `flashprog.c` handle the total progress. Only API\n  is flashprog_progress_add().  Erase progress is completely handled\n  in `flashprog.c`. Fine grained read/write progress can be reported\n  at the chip/programmer level.\n* Add calls to all chip read/write paths and opaque programmers\n  except for read_memmapped() (which is handled in follow ups).\n* At least one wrinkle left: Erasing unaligned regions will slightly\n  overshoot total progress.\n\nChange-Id: I7197572bb7f19e3bdb2bde855d70a0f50fd3854c\nSigned-off-by: Richard Hughes \u003crichard@hughsie.com\u003e\nSigned-off-by: Daniel Campello \u003ccampello@chromium.org\u003e\nSigned-off-by: Nico Huber \u003cnico.h@gmx.de\u003e\nOriginal-Reviewed-on: https://review.coreboot.org/c/flashrom/+/49643\nOriginal-Reviewed-by: Edward O\u0027Callaghan \u003cquasisec@chromium.org\u003e\nOriginal-Reviewed-by: Anastasia Klimchuk \u003caklm@chromium.org\u003e\nOriginal-Reviewed-by: Thomas Heijligen \u003csrc@posteo.de\u003e\nReviewed-on: https://review.sourcearcade.org/c/flashprog/+/74731\nReviewed-by: Arthur Heymans \u003carthur@aheymans.xyz\u003e\n"
    },
    {
      "commit": "03ad4a42545591863f3f01be31e15d221cf29c75",
      "tree": "efb04af6d76599817ec93404fe2f48e39592b23e",
      "parents": [
        "211c6ec6011f554a5a9aeacdf0d2c410b343bb2a"
      ],
      "author": {
        "name": "Brian Norris",
        "email": "briannorris@chromium.org",
        "time": "Tue Feb 27 13:01:23 2024 -0800"
      },
      "committer": {
        "name": "Nico Huber",
        "email": "nico.h@gmx.de",
        "time": "Sat Mar 09 13:21:35 2024 +0000"
      },
      "message": "linux_mtd: Provide no-op delay implementation\n\nFlashrom has several magic programmer_delay() calls scattered\nthroughout its codebase (see cli_classic.s/main() and\nflashrom.c/flashrom_image_write(), at least). These delays are\nsuperfluous for the linux_mtd programmer, because it\u0027s an opaque\nprogrammer in which all protocol details are handled by the kernel\ndriver.\n\nStub out the delay function, so we don\u0027t waste up to 1.1 seconds of\nneedless delay time, depending on the operation and CLI vs libflashrom\nusage.\n\nChange-Id: I3ac69d3fd7cfc689c5b32c130d044516ed846c29\nSigned-off-by: Brian Norris \u003cbriannorris@chromium.org\u003e\nReviewed-on: https://review.sourcearcade.org/c/flashprog/+/96\nReviewed-by: Arthur Heymans \u003carthur@aheymans.xyz\u003e\nReviewed-by: Nico Huber \u003cnico.h@gmx.de\u003e\nTested-by: Nico Huber \u003cnico.h@gmx.de\u003e\n"
    },
    {
      "commit": "9a11cbf21a5078bcdb8db7584c44a9ee17020db4",
      "tree": "e67a9eadfdb7a71f81df36c7e97180474a8c59df",
      "parents": [
        "aabb3e0ff54e87c0136c91f105e506ed19184cc6"
      ],
      "author": {
        "name": "Nico Huber",
        "email": "nico.h@gmx.de",
        "time": "Fri Jan 13 01:19:07 2023 +0100"
      },
      "committer": {
        "name": "Nico Huber",
        "email": "nico.h@gmx.de",
        "time": "Sat Mar 09 10:40:04 2024 +0000"
      },
      "message": "Let the flash context directly point to the used master\n\nWe used to have a pointer to a full `registered_master` struct in\nour flash context. Beside the used master, this contained a bit\nmask of supported buses. Oddly convenient, this bit mask invited\nto bypass the chip driver and break the abstraction. It allowed\nto place bus-specific details virtually anywhere in flashprog,\nmaking it harder to find a good place for them.\n\nSo, get rid of the `buses_supported` bit mask by pointing directly\nto the master. Only the chip driver will implicitly know which type\nof master is used.\n\nChange-Id: I9ce13d8df0e7ccc67519d888dd9cb2e2ff8d6682\nSigned-off-by: Nico Huber \u003cnico.h@gmx.de\u003e\nReviewed-on: https://review.sourcearcade.org/c/flashprog/+/72533\n"
    },
    {
      "commit": "e3a26888e14d16592c2c79d1516828d3d32961a4",
      "tree": "02d401e60defd27fe7bee194978bac782284cb39",
      "parents": [
        "2b66ad9c4465432e6f2aff2e95f1e7a556bfc3f0"
      ],
      "author": {
        "name": "Nico Huber",
        "email": "nico.h@gmx.de",
        "time": "Wed Jan 11 21:45:51 2023 +0100"
      },
      "committer": {
        "name": "Nico Huber",
        "email": "nico.h@gmx.de",
        "time": "Sat Mar 09 10:30:24 2024 +0000"
      },
      "message": "Pass programmer context to programmer-\u003einit()\n\nChange-Id: I064eb4e25c3d382e4e5bde802306698fafe5e1d0\nSigned-off-by: Nico Huber \u003cnico.h@gmx.de\u003e\nReviewed-on: https://review.sourcearcade.org/c/flashprog/+/72526\n"
    },
    {
      "commit": "c3b02dce51aad2766512d1939a1b7447c2d526b8",
      "tree": "58069f464bb8a777ef06e93767813a4c5a042cb0",
      "parents": [
        "a02df33fbf1c196395a61049e60895d4ae0e0a5b"
      ],
      "author": {
        "name": "Nico Huber",
        "email": "nico.h@gmx.de",
        "time": "Sat Aug 12 01:13:45 2023 +0200"
      },
      "committer": {
        "name": "Nico Huber",
        "email": "nico.h@gmx.de",
        "time": "Mon Sep 18 19:24:39 2023 +0000"
      },
      "message": "Rebrand to flashprog and update URLs\n\nMostly automated `sed` work. As of now, URLs to the old wiki are broken\neither way, so changing them shouldn\u0027t hurt. Other URLs (e.g. to mailing\nlist archives) were hopefully filtered correctly.\n\nChange-Id: I9d43bfd0e675eff2fcbad05f304b9ce9f5006b08\nSigned-off-by: Nico Huber \u003cnico.h@gmx.de\u003e\nReviewed-on: https://review.sourcearcade.org/c/flashrom-stable/+/21\n"
    },
    {
      "commit": "621208c341cb400b9b13b5874da49504818a9f49",
      "tree": "1a851dd54e96add7fe6e30de98fe3b5e4424a775",
      "parents": [
        "56684d9a2ed8a0f878472d5aa0518a3200526812"
      ],
      "author": {
        "name": "Edward O\u0027Callaghan",
        "email": "quasisec@google.com",
        "time": "Wed Sep 07 22:21:39 2022 +1000"
      },
      "committer": {
        "name": "Nico Huber",
        "email": "nico.h@gmx.de",
        "time": "Sun Jan 29 12:29:02 2023 +0000"
      },
      "message": "drivers/: Make \u0027fallback_{un}map\u0027 the default unless defined\n\nDrop the explicit need to specify the default \u0027fallback_{un}map\u0027\ncallback function pointer from the \u0027programmer_entry\u0027 struct.\nThis is a reasonable default for every other driver in the tree\nwith only a select few exceptions [atavia, serprog, dummyflasher\nand internal].\n\nThus this simplifies driver development and paves way\nto remove the \u0027programmer\u0027 global handle.\n\nflashrom-stable: Updated `dirtyjtag_spi` which was added earlier.\n\nChange-Id: I5ea7bd68f7ae2cd4af9902ef07255ab6ce0bfdb3\nSigned-off-by: Edward O\u0027Callaghan \u003cquasisec@google.com\u003e\nOriginal-Reviewed-on: https://review.coreboot.org/c/flashrom/+/67404\nOriginal-Reviewed-by: Felix Singer \u003cfelixsinger@posteo.net\u003e\nOriginal-Reviewed-by: Anastasia Klimchuk \u003caklm@chromium.org\u003e\nOriginal-Reviewed-by: Angel Pons \u003cth3fanbus@gmail.com\u003e\nReviewed-on: https://review.coreboot.org/c/flashrom-stable/+/72360\nTested-by: build bot (Jenkins) \u003cno-reply@coreboot.org\u003e\nReviewed-by: Nico Huber \u003cnico.h@gmx.de\u003e\n"
    },
    {
      "commit": "56684d9a2ed8a0f878472d5aa0518a3200526812",
      "tree": "020c2d8db0e05a74981b5b381c37febd46fb796d",
      "parents": [
        "78ed668a924db5dd78c3530655127f895728fe59"
      ],
      "author": {
        "name": "Edward O\u0027Callaghan",
        "email": "quasisec@google.com",
        "time": "Wed Sep 07 10:47:45 2022 +1000"
      },
      "committer": {
        "name": "Nico Huber",
        "email": "nico.h@gmx.de",
        "time": "Sun Jan 29 12:29:02 2023 +0000"
      },
      "message": "drivers/: Make \u0027internal_delay\u0027 the default unless defined\n\nDrop the explicit need to specify the default \u0027internal_delay\u0027\ncallback function pointer in the programmer_entry struct.\nThis is a reasonable default for every other driver in the\ntree with only the two exceptions of ch341a_spi.c and serprog.c.\n\nThus this simplifies driver development.\n\nflashrom-stable: Updated `dirtyjtag_spi` which was added earlier.\n\nChange-Id: I17460bc2c0aebcbb48c8dfa052b260991525cc49\nSigned-off-by: Edward O\u0027Callaghan \u003cquasisec@google.com\u003e\nOriginal-Reviewed-on: https://review.coreboot.org/c/flashrom/+/67391\nOriginal-Reviewed-by: Peter Marheine \u003cpmarheine@chromium.org\u003e\nOriginal-Reviewed-by: Angel Pons \u003cth3fanbus@gmail.com\u003e\nOriginal-Reviewed-by: Thomas Heijligen \u003csrc@posteo.de\u003e\nOriginal-Reviewed-by: Felix Singer \u003cfelixsinger@posteo.net\u003e\nOriginal-Reviewed-by: Nikolai Artemiev \u003cnartemiev@google.com\u003e\nReviewed-on: https://review.coreboot.org/c/flashrom-stable/+/72359\nTested-by: build bot (Jenkins) \u003cno-reply@coreboot.org\u003e\nReviewed-by: Nico Huber \u003cnico.h@gmx.de\u003e\n"
    },
    {
      "commit": "bd82fa980566512dc937df084110cccd0b19a81f",
      "tree": "f0c69fce9d7529d4d1f9dcc3426c8e0955052210",
      "parents": [
        "b8db74a9b2bc91bb43942f7487c151bd598483b1"
      ],
      "author": {
        "name": "Felix Singer",
        "email": "felixsinger@posteo.net",
        "time": "Fri Aug 19 02:40:39 2022 +0200"
      },
      "committer": {
        "name": "Nico Huber",
        "email": "nico.h@gmx.de",
        "time": "Sun Jan 29 12:29:02 2023 +0000"
      },
      "message": "linux_mtd.c: Retype appropriate attributes with bool\n\nUse the bool type instead of an integer for appropriate attributes,\nsince this represents their purpose much better.\n\nSigned-off-by: Felix Singer \u003cfelixsinger@posteo.net\u003e\nChange-Id: I8be4e08e714047d155dcc032cc3d8dabb422b27f\nOriginal-Reviewed-on: https://review.coreboot.org/c/flashrom/+/66881\nOriginal-Reviewed-by: Anastasia Klimchuk \u003caklm@chromium.org\u003e\nOriginal-Reviewed-by: Angel Pons \u003cth3fanbus@gmail.com\u003e\nReviewed-on: https://review.coreboot.org/c/flashrom-stable/+/72354\nReviewed-by: Nico Huber \u003cnico.h@gmx.de\u003e\nTested-by: build bot (Jenkins) \u003cno-reply@coreboot.org\u003e\n"
    },
    {
      "commit": "72c02ff4b0ea4111d4f2632ba102506683607749",
      "tree": "97e0b54b1ff3a061a8e1507af05fddd1818ac48c",
      "parents": [
        "a1fed9ffe3bf81d7a605c2be9e979b0e0804d28b"
      ],
      "author": {
        "name": "Nico Huber",
        "email": "nico.h@gmx.de",
        "time": "Sun Jan 08 02:00:06 2023 +0100"
      },
      "committer": {
        "name": "Nico Huber",
        "email": "nico.h@gmx.de",
        "time": "Sun Jan 29 12:29:02 2023 +0000"
      },
      "message": "opaque_master: Use new API to register shutdown function\n\nThis allows opaque masters to register shutdown function in\nopaque_master struct, which means there is no need to call\nregister_shutdown in init function, since this call is now a part\nof register_opaque_master.\n\nAs a consequence of using new API, two things are happening here:\n1) No resource leakage anymore in case register_shutdown() would fail,\n2) Fixed propagation of register_opaque_master() return values.\n\nTested: 1) builds and ninja test including CB:56413\n2) on ARMv7 device\nflashrom -p linux_mtd -V\n-\u003e using linux_mtd, chip found\n\nChange-Id: Id8471a117556edcbf9694752fabe05cf4501ce70\nSigned-off-by: Anastasia Klimchuk \u003caklm@chromium.org\u003e\nOriginal-Reviewed-on: https://review.coreboot.org/c/flashrom/+/56825\nOriginal-Reviewed-by: Edward O\u0027Callaghan \u003cquasisec@chromium.org\u003e\nReviewed-on: https://review.coreboot.org/c/flashrom-stable/+/72230\nReviewed-by: Nico Huber \u003cnico.h@gmx.de\u003e\nTested-by: build bot (Jenkins) \u003cno-reply@coreboot.org\u003e\n"
    },
    {
      "commit": "fd3a225fa747f56402a942c1111db2d379df4421",
      "tree": "375f0944a222bc36c4809a56fc7b691af65cb185",
      "parents": [
        "7a7b25dc3532ca7b121966bd7e3827371d6dce75"
      ],
      "author": {
        "name": "Anastasia Klimchuk",
        "email": "aklm@chromium.org",
        "time": "Tue Aug 03 15:26:19 2021 +1000"
      },
      "committer": {
        "name": "Nico Huber",
        "email": "nico.h@gmx.de",
        "time": "Sun Jan 29 12:29:02 2023 +0000"
      },
      "message": "linux_mtd: Free param right after its last usage\n\nParam is only used in the first half of init function, and it is\nlocal, so there is no need to keep it until the end. This makes\nhandling error paths in the second half of init function shorter,\nbecause those paths can just return 1 instead of going to a label.\n\nTested: builds and ninja test from CB:56413\n\nChange-Id: I126a8d06297ef4d42bc93a73f7067ccc1352d1e9\nSigned-off-by: Anastasia Klimchuk \u003caklm@chromium.org\u003e\nOriginal-Reviewed-on: https://review.coreboot.org/c/flashrom/+/56822\nOriginal-Reviewed-by: Edward O\u0027Callaghan \u003cquasisec@chromium.org\u003e\nOriginal-Reviewed-by: Angel Pons \u003cth3fanbus@gmail.com\u003e\nReviewed-on: https://review.coreboot.org/c/flashrom-stable/+/72228\nReviewed-by: Nico Huber \u003cnico.h@gmx.de\u003e\nTested-by: build bot (Jenkins) \u003cno-reply@coreboot.org\u003e\n"
    },
    {
      "commit": "842b4ee5857614b64f685be914916f6c9b322d91",
      "tree": "f342bbf421abbc732f912a6fc0d48961ac6f28a3",
      "parents": [
        "21b20218a6128c1880eceb634101df176b56692d"
      ],
      "author": {
        "name": "Anastasia Klimchuk",
        "email": "aklm@chromium.org",
        "time": "Thu May 13 12:56:51 2021 +1000"
      },
      "committer": {
        "name": "Nico Huber",
        "email": "nico.h@gmx.de",
        "time": "Sun Jan 29 12:29:02 2023 +0000"
      },
      "message": "programmer: Make use of new register_opaque_master() API\n\nPass pointers to dynamically allocated data to\nregister_opaque_master(). This way we can avoid a mutable global.\n\nChange-Id: I160810cd67f782131962e96fc6d20e2987fb0390\nSigned-off-by: Anastasia Klimchuk \u003caklm@chromium.org\u003e\nOriginal-Reviewed-on: https://review.coreboot.org/c/flashrom/+/54171\nOriginal-Reviewed-by: Edward O\u0027Callaghan \u003cquasisec@chromium.org\u003e\nOriginal-Reviewed-by: Nico Huber \u003cnico.h@gmx.de\u003e\nReviewed-on: https://review.coreboot.org/c/flashrom-stable/+/72203\nReviewed-by: Nico Huber \u003cnico.h@gmx.de\u003e\nTested-by: build bot (Jenkins) \u003cno-reply@coreboot.org\u003e\n"
    },
    {
      "commit": "21b20218a6128c1880eceb634101df176b56692d",
      "tree": "84402bf4e4ac933b023ac6e1c56f4a693ef522bc",
      "parents": [
        "b91a203091fc43824bc57f3c8e2db0bcc311da59"
      ],
      "author": {
        "name": "Anastasia Klimchuk",
        "email": "aklm@chromium.org",
        "time": "Thu May 13 12:28:47 2021 +1000"
      },
      "committer": {
        "name": "Nico Huber",
        "email": "nico.h@gmx.de",
        "time": "Sun Jan 29 12:29:02 2023 +0000"
      },
      "message": "programmer: Smoothen register_opaque_master() API\n\nIt was impossible to register a const struct opaque_master that would\npoint to dynamically allocated `data`. Fix that so that we won\u0027t\nhave to create more mutable globals.\n\nChange-Id: Id3adb4cf04ae04dbe87ddb96f30871cb5f7c8ff0\nSigned-off-by: Anastasia Klimchuk \u003caklm@chromium.org\u003e\nOriginal-Reviewed-on: https://review.coreboot.org/c/flashrom/+/54170\nOriginal-Reviewed-by: Edward O\u0027Callaghan \u003cquasisec@chromium.org\u003e\nOriginal-Reviewed-by: Nico Huber \u003cnico.h@gmx.de\u003e\nReviewed-on: https://review.coreboot.org/c/flashrom-stable/+/72202\nReviewed-by: Nico Huber \u003cnico.h@gmx.de\u003e\nTested-by: build bot (Jenkins) \u003cno-reply@coreboot.org\u003e\n"
    },
    {
      "commit": "6c33185c81f4aab0d048be7c4b68dca1a91800c2",
      "tree": "ed241371d6704ef905abf5fbf4f1a044b1f9505b",
      "parents": [
        "3b32edb1c2ccb1dcc89b76fa3a77e164e08eb62d"
      ],
      "author": {
        "name": "Nikolai Artemiev",
        "email": "nartemiev@google.com",
        "time": "Sun May 09 11:37:38 2021 +1000"
      },
      "committer": {
        "name": "Nico Huber",
        "email": "nico.h@gmx.de",
        "time": "Sun Jan 22 00:55:18 2023 +0000"
      },
      "message": "linux_mtd: drop \u0027mtd_\u0027 prefix from variable/field names\n\nChange-Id: I2503c98e9111d1fecd911473f65eeea7031cfdc3\nSigned-off-by: Nikolai Artemiev \u003cnartemiev@google.com\u003e\nOriginal-Reviewed-on: https://review.coreboot.org/c/flashrom/+/53953\nOriginal-Reviewed-by: Angel Pons \u003cth3fanbus@gmail.com\u003e\nOriginal-Reviewed-by: Edward O\u0027Callaghan \u003cquasisec@chromium.org\u003e\nReviewed-on: https://review.coreboot.org/c/flashrom-stable/+/72178\nTested-by: build bot (Jenkins) \u003cno-reply@coreboot.org\u003e\nReviewed-by: Nico Huber \u003cnico.h@gmx.de\u003e\n"
    },
    {
      "commit": "3b32edb1c2ccb1dcc89b76fa3a77e164e08eb62d",
      "tree": "532efcb9169cc979ef18befc17f00c1237a2c043",
      "parents": [
        "47e7d47f6684a61d960474a6162523fb90006009"
      ],
      "author": {
        "name": "Nikolai Artemiev",
        "email": "nartemiev@google.com",
        "time": "Sat May 08 19:00:06 2021 +1000"
      },
      "committer": {
        "name": "Nico Huber",
        "email": "nico.h@gmx.de",
        "time": "Sun Jan 22 00:55:18 2023 +0000"
      },
      "message": "linux_mtd: move global state into programmer data field\n\nTested: builds, reading /dev/mtd0 on Oak succeeds\n\nChange-Id: I5ce6900e4892ed5687cfddb245dfe5461a3e2e84\nSigned-off-by: Nikolai Artemiev \u003cnartemiev@google.com\u003e\nOriginal-Reviewed-on: https://review.coreboot.org/c/flashrom/+/53947\nOriginal-Reviewed-by: Anastasia Klimchuk \u003caklm@chromium.org\u003e\nOriginal-Reviewed-by: Angel Pons \u003cth3fanbus@gmail.com\u003e\nOriginal-Reviewed-by: Edward O\u0027Callaghan \u003cquasisec@chromium.org\u003e\nReviewed-on: https://review.coreboot.org/c/flashrom-stable/+/72177\nTested-by: build bot (Jenkins) \u003cno-reply@coreboot.org\u003e\nReviewed-by: Nico Huber \u003cnico.h@gmx.de\u003e\n"
    },
    {
      "commit": "ac90af6cdc747bfe3dc38c83c0b7272addf37659",
      "tree": "ec67fd7c4d01db82b5a1ffd8c8ed36a7229108dd",
      "parents": [
        "bb4f3b06dcfb60a6ab84750c9b149482dc5ee579"
      ],
      "author": {
        "name": "Nico Huber",
        "email": "nico.h@gmx.de",
        "time": "Sun Dec 18 00:22:47 2022 +0000"
      },
      "committer": {
        "name": "Nico Huber",
        "email": "nico.h@gmx.de",
        "time": "Fri Jan 13 01:34:15 2023 +0000"
      },
      "message": "Change references to flashrom-stable\n\nAdapt all mentions of the mailing list and also the version print.\n\nChange-Id: Ib4a3271422ee6cf4d0efb8c3fa858b66a22c0a33\nSigned-off-by: Nico Huber \u003cnico.h@gmx.de\u003e\nReviewed-on: https://review.coreboot.org/c/flashrom-stable/+/70922\nTested-by: build bot (Jenkins) \u003cno-reply@coreboot.org\u003e\n"
    },
    {
      "commit": "cc853d84ed2f8ecafc1f6daa443f8baa4c871805",
      "tree": "8e5f3e0b7a75d272a109e20af5aeeeec11dfebf7",
      "parents": [
        "7e1345602641114c8eeb5cfef992bf1da8d7fa6a"
      ],
      "author": {
        "name": "Thomas Heijligen",
        "email": "thomas.heijligen@secunet.de",
        "time": "Tue May 04 15:32:17 2021 +0200"
      },
      "committer": {
        "name": "Nico Huber",
        "email": "nico.h@gmx.de",
        "time": "Thu Jan 05 16:15:22 2023 +0000"
      },
      "message": "programmer_table: move each entry to the associated programmer source\n\nChange-Id: I3d02bd789f0299e936eb86819b3b15b5ea2bb921\nSigned-off-by: Thomas Heijligen \u003cthomas.heijligen@secunet.de\u003e\nOriginal-Reviewed-on: https://review.coreboot.org/c/flashrom/+/52946\nOriginal-Reviewed-by: Anastasia Klimchuk \u003caklm@chromium.org\u003e\nOriginal-Reviewed-by: Nico Huber \u003cnico.h@gmx.de\u003e\nReviewed-on: https://review.coreboot.org/c/flashrom-stable/+/71373\nReviewed-by: Nico Huber \u003cnico.h@gmx.de\u003e\nReviewed-by: Angel Pons \u003cth3fanbus@gmail.com\u003e\nTested-by: build bot (Jenkins) \u003cno-reply@coreboot.org\u003e\n"
    },
    {
      "commit": "7e1345602641114c8eeb5cfef992bf1da8d7fa6a",
      "tree": "ce19124575cfd893449c754800c757d096dd3130",
      "parents": [
        "690a944066619ff9d450d71cdcfe2e0bcb1120f3"
      ],
      "author": {
        "name": "Angel Pons",
        "email": "th3fanbus@gmail.com",
        "time": "Mon Jun 07 13:29:13 2021 +0200"
      },
      "committer": {
        "name": "Nico Huber",
        "email": "nico.h@gmx.de",
        "time": "Thu Jan 05 16:15:22 2023 +0000"
      },
      "message": "treewide: Drop unnecessary uses of memset/memcpy\n\nSimply provide an initialiser or use a direct assignment instead.\n\nChange-Id: I07385375cd8eec8a95874001b402b2c17ec09e09\nSigned-off-by: Angel Pons \u003cth3fanbus@gmail.com\u003e\nOriginal-Reviewed-on: https://review.coreboot.org/c/flashrom/+/55267\nOriginal-Reviewed-by: Nico Huber \u003cnico.h@gmx.de\u003e\nReviewed-on: https://review.coreboot.org/c/flashrom-stable/+/71372\nReviewed-by: Nico Huber \u003cnico.h@gmx.de\u003e\nTested-by: build bot (Jenkins) \u003cno-reply@coreboot.org\u003e\n"
    },
    {
      "commit": "04fce478cb9aba339439d1955c3355a075445ec1",
      "tree": "8c6342749297f623f282aea64c84082dbb8835e2",
      "parents": [
        "96cc5d3ea84e7e7e3a6029cf728cef061ccae45f"
      ],
      "author": {
        "name": "Nikolai Artemiev",
        "email": "nartemiev@google.com",
        "time": "Tue Jan 11 18:26:48 2022 +1100"
      },
      "committer": {
        "name": "Felix Singer",
        "email": "felixsinger@posteo.net",
        "time": "Thu Sep 29 17:06:03 2022 +0000"
      },
      "message": "linux_mtd: check ioctl() return value properly\n\nMake the linux_mtd driver treat any negative return value from the\nMEMERASE ioctl as an error. Previously it only treated -1 as an error.\n\nBUG\u003db:213561594,b:210973586,b:182223106\nBRANCH\u003dnone\nTEST\u003dbuilds\n\nChange-Id: I40cfbdee2ab608fbe6c17d9cac6ec53ff224d9a4\nSigned-off-by: Nikolai Artemiev \u003cnartemiev@google.com\u003e\nReviewed-on: https://review.coreboot.org/c/flashrom/+/60996\nTested-by: build bot (Jenkins) \u003cno-reply@coreboot.org\u003e\nReviewed-by: Angel Pons \u003cth3fanbus@gmail.com\u003e\nReviewed-by: Edward O\u0027Callaghan \u003cquasisec@chromium.org\u003e\nReviewed-on: https://review.coreboot.org/c/flashrom/+/67874\nReviewed-by: Felix Singer \u003cfelixsinger@posteo.net\u003e\n"
    },
    {
      "commit": "595c5d017402fb20bef14e4d2c399251470c95fe",
      "tree": "49b5163834504c40ffdb373be4360426ba99204e",
      "parents": [
        "5feb8cdb6ff497e45cda73839dacafc240bf83bb"
      ],
      "author": {
        "name": "Douglas Anderson",
        "email": "dianders@chromium.org",
        "time": "Fri Jan 29 16:35:24 2021 -0800"
      },
      "committer": {
        "name": "Felix Singer",
        "email": "felixsinger@posteo.net",
        "time": "Thu Sep 29 17:05:43 2022 +0000"
      },
      "message": "linux_mtd: Disable buffering on the mtd device\n\nWe open the device node for the MTD device with this:\n  dev_fp \u003d fopen(dev_path, \"r+\")\n\nIn C fopen() is allowed to provide _buffered_ access to the file.\nThat means that the standard library is allowed to read ahead and/or\nreturn cached data.  That\u0027s really not what we want for something like\nthis.  Let\u0027s turn it off.\n\nThis fixes a problem where flashrom would sometimes fail to \"verify\"\nthat it erased the flash.  The error message would look something like\nthis:\n\nErasing and writing flash chip... FAILED at 0x0000e220! Expected\u003d0xff, Found\u003d0xe9, failed byte count from 0x0000e200-0x0000e2ff: 0xdc\n failed byte count from 0x0000e000-0x0000efff: 0xffffffff\n ERASE_FAILED\nFAILED!\nUh oh. Erase/write failed. Checking if anything changed.\n\nAfter the failure I could read the flash device with a new invocation\nof flashrom and I would see that, indeed, the erase had worked.\n\nTracing in the kernel showed that when the failure happened we saw a\npattern that looked like this:\n* Read 0x0b00 bytes starting at 0x0000d000\n* Read 0x1000 bytes starting at 0x0000db00\n* Erase 0x1000 bytes starting at 0x0000e000\n\n...and then there was _not_ a read after the erase.  It can be assumed\nthat, since userspace had already read 0xdb00 - 0xeaff that it was\nlooking at old buffered data after the erase.\n\nSigned-off-by: Douglas Anderson \u003cdianders@chromium.org\u003e\nChange-Id: I989afd83a33013b2756a0090d6b08245613215c6\nReviewed-on: https://review.coreboot.org/c/flashrom/+/50155\nReviewed-by: Hung-Te Lin \u003chungte@chromium.org\u003e\nReviewed-by: Patrick Rudolph \u003csiro@das-labor.org\u003e\nReviewed-by: Angel Pons \u003cth3fanbus@gmail.com\u003e\nTested-by: build bot (Jenkins) \u003cno-reply@coreboot.org\u003e\nReviewed-on: https://review.coreboot.org/c/flashrom/+/67871\nReviewed-by: Nikolai Artemiev \u003cnartemiev@google.com\u003e\nReviewed-by: Felix Singer \u003cfelixsinger@posteo.net\u003e\n"
    },
    {
      "commit": "ba7199958c9eef803845dcd9f3930277bbf9eb76",
      "tree": "83b9c4c92e2d3c39e4e25d33a870a02f38ca3e1d",
      "parents": [
        "1c091d1aebb055149c89f88fd5766ca4e33b7b3e"
      ],
      "author": {
        "name": "Jacob Garber",
        "email": "jgarber1@ualberta.ca",
        "time": "Mon Aug 12 12:07:03 2019 -0600"
      },
      "committer": {
        "name": "Nico Huber",
        "email": "nico.h@gmx.de",
        "time": "Tue Sep 24 19:07:02 2019 +0000"
      },
      "message": "linux_mtd: Fix param memory leak\n\nextract_programmer_param() stores allocated memory in param, so make\nsure it is freed at the end of the function.\n\nChange-Id: I363e66b49c1ed4034ac058b94a938c8bb197e048\nSigned-off-by: Jacob Garber \u003cjgarber1@ualberta.ca\u003e\nFound-by: Coverity CID 1403823\nReviewed-on: https://review.coreboot.org/c/flashrom/+/34847\nTested-by: build bot (Jenkins) \u003cno-reply@coreboot.org\u003e\nReviewed-by: David Hendricks \u003cdavid.hendricks@gmail.com\u003e\n"
    },
    {
      "commit": "b0247b3acbc7d8d9f8da1db48a9b81c5f2e24a38",
      "tree": "27ecfdd694592aab18bec64d887a8cb65c1ae9e2",
      "parents": [
        "a75a2edc05a006c10caa24ccbee12c2b3ddaee66"
      ],
      "author": {
        "name": "David Hendricks",
        "email": "david.hendricks@gmail.com",
        "time": "Wed May 23 21:50:18 2018 -0700"
      },
      "committer": {
        "name": "Nico Huber",
        "email": "nico.h@gmx.de",
        "time": "Sun Jun 24 11:47:50 2018 +0000"
      },
      "message": "linux_mtd: Bail out early if sysfs node doesn\u0027t exist\n\nThis checks that the MTD sysfs node we will use actually exists prior\nto calling setup code. Although the setup code will eventually catch\nsuch an error, we need to think about the use case before printing a\npossibly irrelevant/confusing error message to the terminal.\n\nThis patch makes it so that we only print an error message if the\nuser specifies a non-existent MTD device. Otherwise, the failure is\nconsidered benign and we only print a debug message prior to bailing\nout.\n\nChange-Id: I8dc965eecc68cd305a989016869c688fe1a3921f\nSigned-off-by: David Hendricks \u003cdhendricks@fb.com\u003e\nReviewed-on: https://review.coreboot.org/26500\nTested-by: build bot (Jenkins) \u003cno-reply@coreboot.org\u003e\nReviewed-by: Nico Huber \u003cnico.h@gmx.de\u003e\n"
    },
    {
      "commit": "f9a30554803a670f9b95a7794be00f03929d6ecd",
      "tree": "46da1dafce0c76ab5730540540aaf4093463f551",
      "parents": [
        "291764a70e6d8b212680e311bfb0825abf2b9a2f"
      ],
      "author": {
        "name": "David Hendricks",
        "email": "dhendricks@fb.com",
        "time": "Sat May 23 20:30:30 2015 -0700"
      },
      "committer": {
        "name": "David Hendricks",
        "email": "david.hendricks@gmail.com",
        "time": "Thu May 17 16:49:16 2018 +0000"
      },
      "message": "linux_mtd: Import driver from ChromiumOS\n\nThis imports a series of patches from chromiumos for MTD support.\nThe patches are squashed to ease review and original Change-Ids have\nbeen removed to avoid confusing Gerrit.\n\nThere are a few changes to integrate the code:\n- Conflict resolution\n- Makefile changes\n- Remove file library usage from linux_mtd. We may revisit this and use\n  it for other Linux interfaces later on.\n- Switch to using file stream functions for reads and writes.\n\nThis consolidated patch is\nSigned-off-by: David Hendricks \u003cdhendricks@fb.com\u003e\n\nThe first commit\u0027s message is:\nInitial MTD support\n\nThis adds MTD support to flashrom so that we can read, erase, and\nwrite content on a NOR flash chip via MTD.\n\nBUG\u003dchrome-os-partner:40208\nBRANCH\u003dnone\nTEST\u003dread, write, and erase works on Oak\n\nSigned-off-by: David Hendricks \u003cdhendrix@chromium.org\u003e\nReviewed-on: https://chromium-review.googlesource.com/272983\nReviewed-by: Shawn N \u003cshawnn@chromium.org\u003e\n\nThis is the 2nd commit message:\n\nlinux_mtd: Fix compilation errors\n\nThis fixes compilation errors from the initial import patch.\n\nSigned-off-by: David Hendricks \u003cdhendricks@fb.com\u003e\n\nThis is the 3rd commit message:\n\nlinux_mtd: Suppress message if NOR device not found\n\nThis just suppresses a message that might cause confusion for\nunsuspecting users.\n\nBUG\u003dnone\nBRANCH\u003dnone\nTEST\u003dran on veyron_mickey, \"NOR type device not found\" message\nno longer appears under normal circumstances.\nSigned-off-by: David Hendricks \u003cdhendrix@chromium.org\u003e\n\nReviewed-on: https://chromium-review.googlesource.com/302145\nCommit-Ready: David Hendricks \u003cdhendrix@chromium.org\u003e\nTested-by: David Hendricks \u003cdhendrix@chromium.org\u003e\nReviewed-by: Shawn N \u003cshawnn@chromium.org\u003e\n\nThis is the 4th commit message:\n\nlinux_mtd: Support for NO_ERASE type devices\n\nSome mtd devices have the MTD_NO_ERASE flag set. This means\nthese devices don\u0027t require an erase to write and might not have\nimplemented an erase function. We should be conservative and skip\nerasing altogether, falling back to performing writes over the whole\nflash.\n\nBUG\u003db:35104688\nTESTED\u003dZaius flash is now written correctly for the 0xff regions.\n\nSigned-off-by: William A. Kennington III \u003cwak@google.com\u003e\nReviewed-on: https://chromium-review.googlesource.com/472128\nCommit-Ready: William Kennington \u003cwak@google.com\u003e\nTested-by: William Kennington \u003cwak@google.com\u003e\nReviewed-by: Brian Norris \u003cbriannorris@chromium.org\u003e\n\nThis is the 5th commit message:\n\nlinux_mtd: do reads in eraseblock-sized chunks\n\nIt\u0027s probably not the best idea to try to do an 8MB read in one syscall.\nTheoretically, this should work; but MTD just relies on the SPI driver\nto deliver the whole read in one transfer, and many SPI drivers haven\u0027t\nbeen tested well with large transfer sizes.\n\nI\u0027d consider this a workaround, but it\u0027s still good to have IMO.\n\nBUG\u003dchrome-os-partner:53215\nTEST\u003dboot kevin; `flashrom --read ...`\nTEST\u003dcheck for performance regression on oak\nBRANCH\u003dnone\n\nSigned-off-by: Brian Norris \u003cbriannorris@chromium.org\u003e\nReviewed-on: https://chromium-review.googlesource.com/344006\nReviewed-by: David Hendricks \u003cdhendrix@chromium.org\u003e\n\nThis is the 6th commit message:\n\nlinux_mtd: make read/write loop chunks consistent, and documented\n\nTheoretically, there should be no maximum size for the read() and\nwrite() syscalls on an MTD (well, except for the size of the entire\ndevice). But practical concerns (i.e., bugs) have meant we don\u0027t quite\ndo this.\n\nFor reads:\nBug https://b/35573113 shows that some SPI-based MTD drivers don\u0027t yet\nhandle very large transactions. So we artificially limit this to\nblock-sized chunks.\n\nFor writes:\nIt\u0027s not clear there is a hard limit. Some drivers will already split\nlarge writes into smaller chunks automatically. Others don\u0027t do any\nsplitting. At any rate, using *small* chunks can actually be a problem\nfor some devices (b:35104688), as they get worse performance (doing an\ninternal read/modify/write). This could be fixed in other ways by\nadvertizing their true \"write chunk size\" to user space somehow, but\nthis isn\u0027t so easy.\n\nAs a simpler fix, we can just increase the loop increment to match the\nread loop. Per David, the original implementation (looping over page\nchunks) was just being paranoid.\n\nSo this patch:\n * clarifies comments in linux_mtd_read(), to note that the chunking is\n   somewhat of a hack that ideally can be fixed (with bug reference)\n * simplifies the linux_mtd_write() looping to match the structure in\n   linux_mtd_read(), including dropping several unnecessary seeks, and\n   correcting the error messages (they referred to \"reads\" and had the\n   wrong parameters)\n * change linux_mtd_write() to align its chunks to eraseblocks, not page\n   sizes\n\nNote that the \"-\u003epage_size\" parameter is still somewhat ill-defined, and\nonly set by the upper layers for \"opaque\" flash. And it\u0027s not actually\nused in this driver now. If we could figure out what we really want to\nuse it for, then we could try to set it appropriately.\n\nBRANCH\u003dnone\nBUG\u003db:35104688\nTEST\u003dvarious flashrom tests on Kevin\nTEST\u003dReading and writing to flash works on our zaius machines over mtd\n\nChange-Id: I3d6bb282863a5cf69909e28a1fc752b35f1b9599\nSigned-off-by: Brian Norris \u003cbriannorris@chromium.org\u003e\nReviewed-on: https://chromium-review.googlesource.com/505409\nReviewed-by: David Hendricks \u003cdhendrix@chromium.org\u003e\nReviewed-by: Martin Roth \u003cmartinroth@chromium.org\u003e\nReviewed-by: William Kennington \u003cwak@google.com\u003e\nReviewed-on: https://review.coreboot.org/25706\nTested-by: David Hendricks \u003cdavid.hendricks@gmail.com\u003e\nTested-by: build bot (Jenkins) \u003cno-reply@coreboot.org\u003e\nReviewed-by: Nico Huber \u003cnico.h@gmx.de\u003e\nReviewed-by: Philipp Deppenwiese \u003czaolin.daisuki@gmail.com\u003e\n"
    }
  ]
}
