)]}'
{
  "log": [
    {
      "commit": "4d9f663450fa80ff375612dbbafe073700e3d3d8",
      "tree": "9b83eeaecae8a43c03628713c3c8d0d97b852f5e",
      "parents": [
        "2311cde4a933dc62ee65b4fe8f408e37bf2bb390"
      ],
      "author": {
        "name": "Hollin",
        "email": "hollinisme@gmail.com",
        "time": "Fri Apr 17 04:36:41 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu Apr 16 21:36:41 2026 +0100"
      },
      "message": "Free dirty_bitmap when unmapping DMA region to fix memory leak (#847)\n\nThe dirty bitmap was allocated when dirty tracking is enabled for a DMA\nregion, but was not released during region teardown.\n\nThis could lead to memory leaks over time with repeated DMA map/unmap\noperations while dirty page logging is active.\n\nSigned-off-by: liuhaolin \u003chollinisme@gmail.com\u003e"
    },
    {
      "commit": "2311cde4a933dc62ee65b4fe8f408e37bf2bb390",
      "tree": "67d5bf65c5826602b85bc6e53d3e7a5d5422002c",
      "parents": [
        "81a205f20bc1445ed5a914dbfc01335d2a7868b4"
      ],
      "author": {
        "name": "John Levon",
        "email": "john.levon@nutanix.com",
        "time": "Wed Apr 15 19:40:49 2026 +0100"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed Apr 15 19:40:49 2026 +0100"
      },
      "message": "cleanup scripts (#850)\n\nNow we have a scripts/ dir, use it for these workflows.\n\nSigned-off-by: John Levon \u003cjohn.levon@nutanix.com\u003e"
    },
    {
      "commit": "81a205f20bc1445ed5a914dbfc01335d2a7868b4",
      "tree": "01b59aafc3a5a867f8787417f10f0a258d2aa5a2",
      "parents": [
        "fc0286ed95a508607dc69dedd2b65d38975eef39"
      ],
      "author": {
        "name": "John Levon",
        "email": "john.levon@nutanix.com",
        "time": "Wed Apr 15 15:17:10 2026 +0100"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed Apr 15 15:17:10 2026 +0100"
      },
      "message": "make scan-build issues fatal (#849)\n\n* Fix scan-build issues\n\nIn file included from ../../../../lib/dma.c:43:\n../../../../lib/dma.h:260:28: warning: Dereference of null pointer [core.NullDereference]\n  260 |                dma_addr \u003e\u003d region_hint-\u003einfo.iova.iov_base \u0026\u0026\n      |                            ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n../../../../lib/common.h:58:41: note: expanded from macro \u0027likely\u0027\n   58 | #define likely(e)   __builtin_expect(!!(e), 1)\n      |                                         ^\n\n[17/49] Compiling C object test/btree_unit_tests.p/btree_unit_tests.c.o\n../../../../test/btree_unit_tests.c:119:15: warning: Although the value stored to \u0027value\u0027 is used in the enclosing expression, the value is never actually read from \u0027value\u0027 [deadcode.DeadStores]\n  119 |              (value \u003d btree_iter_get(\u0026iter, \u0026key)) !\u003d NULL;\n      |               ^       ~~~~~~~~~~~~~~~~~~~~~~~~~~~\n\nNeither of these are actual production issues, but let\u0027s clean the lint.\n\nSigned-off-by: John Levon \u003cjohn.levon@nutanix.com\u003e\n\n* Make scan-build errors fail the build\n\nSet --status-bugs so any found issues fail the build.\n\nThe wrapper script is, shockingly, the approved way to do this\n(https://mesonbuild.com/howtox.html#use-clang-static-analyzer).\n\nSigned-off-by: John Levon \u003cjohn.levon@nutanix.com\u003e\n\n---------\n\nSigned-off-by: John Levon \u003cjohn.levon@nutanix.com\u003e"
    },
    {
      "commit": "fc0286ed95a508607dc69dedd2b65d38975eef39",
      "tree": "088720ef6af2f1609aaaf1938d473560b09e1840",
      "parents": [
        "0d6c6e03797829e7f0b16e7d0cde0e1f870485f8"
      ],
      "author": {
        "name": "John Levon",
        "email": "john.levon@nutanix.com",
        "time": "Wed Apr 15 15:11:07 2026 +0100"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed Apr 15 15:11:07 2026 +0100"
      },
      "message": "Fix scan-build lint (#851)\n\nOn the CentOS 7 build, scan-build incorrectly reports:\n\n../../../../lib/tran_sock.c:104:26: warning: Access to field \u0027cmsg_level\u0027 results in a dereference of a null pointer (loaded from variable \u0027cmsg\u0027)\n\nAdd an assert for this.\n\nSigned-off-by: John Levon \u003cjohn.levon@nutanix.com\u003e"
    },
    {
      "commit": "0d6c6e03797829e7f0b16e7d0cde0e1f870485f8",
      "tree": "5414c292f278932857bd17c7e9bd057f326a4a22",
      "parents": [
        "8b1396b899486505f47cd88067eb87a5a0e1acf0"
      ],
      "author": {
        "name": "John Levon",
        "email": "john.levon@nutanix.com",
        "time": "Wed Apr 15 14:58:55 2026 +0100"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed Apr 15 14:58:55 2026 +0100"
      },
      "message": "scan-build fixes (#848)\n\nIn file included from ../../../../lib/dma.c:43:\n../../../../lib/dma.h:260:28: warning: Dereference of null pointer [core.NullDereference]\n  260 |                dma_addr \u003e\u003d region_hint-\u003einfo.iova.iov_base \u0026\u0026\n      |                            ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n../../../../lib/common.h:58:41: note: expanded from macro \u0027likely\u0027\n   58 | #define likely(e)   __builtin_expect(!!(e), 1)\n      |                                         ^\n\n[17/49] Compiling C object test/btree_unit_tests.p/btree_unit_tests.c.o\n../../../../test/btree_unit_tests.c:119:15: warning: Although the value stored to \u0027value\u0027 is used in the enclosing expression, the value is never actually read from \u0027value\u0027 [deadcode.DeadStores]\n  119 |              (value \u003d btree_iter_get(\u0026iter, \u0026key)) !\u003d NULL;\n      |               ^       ~~~~~~~~~~~~~~~~~~~~~~~~~~~\n\nNeither of these are actual production issues, but let\u0027s clean the lint.\n\nSigned-off-by: John Levon \u003cjohn.levon@nutanix.com\u003e"
    },
    {
      "commit": "8b1396b899486505f47cd88067eb87a5a0e1acf0",
      "tree": "a758df086e9f7001435e7fd963d490a4c2e860ec",
      "parents": [
        "20e98030e4e5d8b14eda004d2ddceba375891d0b"
      ],
      "author": {
        "name": "John Levon",
        "email": "john.levon@nutanix.com",
        "time": "Wed Apr 15 11:09:31 2026 +0100"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed Apr 15 11:09:31 2026 +0100"
      },
      "message": "Add flags to vfu_sgl_read/write() (#845)\n\nFor future-proofing, add a flags parameter to these APIs; while we\u0027re\nhere, improve the documentation and the tests.\n\nSigned-off-by: John Levon \u003cjohn.levon@nutanix.com\u003e"
    },
    {
      "commit": "20e98030e4e5d8b14eda004d2ddceba375891d0b",
      "tree": "8ad6e1b5536fe7f23ced0468d6a71907c7109726",
      "parents": [
        "cd4d39076f2c29a2616740ac6aa528ce567f57da"
      ],
      "author": {
        "name": "Mattias Nissler",
        "email": "122288598+mnissler-rivos@users.noreply.github.com",
        "time": "Tue Apr 07 18:52:18 2026 +0200"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Apr 07 17:52:18 2026 +0100"
      },
      "message": "De-duplicate file descriptors used for DMA region access (#841)\n\nWhen using file descriptors for performing DMA, each registered DMA\nregion holds a file descriptor. In case there are many regions, we\u0027d be\nconsuming lots of file descriptors, which are a limited resource.\n\nFortunately, clients typically use a small number of underlying memory\nresources, but we end up with duplicate file descriptors. To handle this\nbetter, add a file descriptor cache that can de-duplicate file\ndescriptors which refer to the same underlying resource, as indicated by\nkcmp().\n\nChange the DMA controller code to de-duplicate incoming file descriptors\nwhen adding DMA regions.\n\nSigned-off-by: Mattias Nissler \u003cmnissler@meta.com\u003e"
    },
    {
      "commit": "cd4d39076f2c29a2616740ac6aa528ce567f57da",
      "tree": "a248d240d748df2ddfba5254fea79916095e63b3",
      "parents": [
        "f3742ed973d131927ac77388cca5db5d16fc600f"
      ],
      "author": {
        "name": "John Levon",
        "email": "john.levon@nutanix.com",
        "time": "Mon Mar 23 21:36:04 2026 +0000"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Mar 23 21:36:04 2026 +0000"
      },
      "message": "Fix coverity nits (#840)\n\nCID 908874: Unused value (UNUSED_VALUE)\n  assigned_value: Assigning value from *__errno_location() to ret here,\n  but that stored value is overwritten before it can be used.\n\n  Indeed, we set ret just to set it again.\n\nCID 467268: Overflowed constant (INTEGER_OVERFLOW)\n  overflow_const: Expression res-\u003eargsz, where size is known to be\n  equal to 18446744073709551615, overflows the type of res-\u003eargsz,\n  which is type uint32_t.\n\n  The previous attempt to quieten coverity in this test file didn\u0027t\n  take; add an assert as well.\n\nCID 908878: Improper use of negative value (NEGATIVE_RETURNS)\n  negative_returns: fd is passed to a parameter that cannot be negative.\n\n  Minor issue: fds_are_same_file() doesn\u0027t account for -1 arguments.\n\nSigned-off-by: John Levon \u003cjohn.levon@nutanix.com\u003e"
    },
    {
      "commit": "f3742ed973d131927ac77388cca5db5d16fc600f",
      "tree": "d3ec252d311a57b261fc28a936ff76455d37b598",
      "parents": [
        "082925c65d98021af5c0f36f60a98e0bb6ddb329"
      ],
      "author": {
        "name": "Mattias Nissler",
        "email": "122288598+mnissler-rivos@users.noreply.github.com",
        "time": "Mon Mar 23 18:24:33 2026 +0100"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Mar 23 17:24:33 2026 +0000"
      },
      "message": "Use a B-Tree for DMA region bookkeeping (#835)\n\n* Add a B-Tree implementation\n\nThis adds a simple B-Tree implementation which provides a key-value\nmapping data structure. It will be used for DMA region bookkeeping,\nwhich currently uses a pre-allocated array with linear searching, which\ndoesn\u0027t perform very well when the number of regions is nontrivial.\n\nSigned-off-by: Mattias Nissler \u003cmnissler@meta.com\u003e"
    },
    {
      "commit": "082925c65d98021af5c0f36f60a98e0bb6ddb329",
      "tree": "9bde1a8b71e2897587222ea15d9c07a8f7f696e3",
      "parents": [
        "1fb7acc256f52cf4d2daa77d413f87c15abbfc64"
      ],
      "author": {
        "name": "John Levon",
        "email": "john.levon@nutanix.com",
        "time": "Mon Mar 16 23:07:15 2026 +0000"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Mar 16 23:07:15 2026 +0000"
      },
      "message": "Fix default \"make all\" (#838)\n\nMore recent version of meson fail with:\n\nWARNING: Running the setup command as `meson [options]` instead of\n`meson setup [options]` is ambiguous and deprecated.\n\nUse \"meson setup\" explicitly.\n\nSigned-off-by: John Levon \u003cjohn.levon@nutanix.com\u003e"
    },
    {
      "commit": "1fb7acc256f52cf4d2daa77d413f87c15abbfc64",
      "tree": "372720e41efc6502dd8af252ca0b19f3ad1a2057",
      "parents": [
        "3bc6d6f8f84c737d7b856b476edd601cd85f2abc"
      ],
      "author": {
        "name": "John Levon",
        "email": "john.levon@nutanix.com",
        "time": "Mon Mar 16 22:46:23 2026 +0000"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Mar 16 22:46:23 2026 +0000"
      },
      "message": "Correct relative include (#839)\n\nThis header file should pull in common.h from the local dir, instead of\nrelying upon include search order with include/pci_caps. This fixes the\nbuild of SPDK.\n\nFixes: 23da2d88 (\"Make libvfio-user headers self-contained (#834)\")\nSigned-off-by: John Levon \u003cjohn.levon@nutanix.com\u003e"
    },
    {
      "commit": "3bc6d6f8f84c737d7b856b476edd601cd85f2abc",
      "tree": "0b4321a6cdb4b028e697273df8d26f97f47d6d2b",
      "parents": [
        "23da2d88ece6e85042d541a8bd8b704742e2fc32"
      ],
      "author": {
        "name": "John Levon",
        "email": "john.levon@nutanix.com",
        "time": "Mon Mar 16 16:22:19 2026 +0000"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Mar 16 16:22:19 2026 +0000"
      },
      "message": "Update SPDK docs to v25.09 (#837)\n\nThis version no longer requires the special libvfio-user branch, as the\nlegacy live migration code has been removed.\n\nSigned-off-by: John Levon \u003cjohn.levon@nutanix.com\u003e"
    },
    {
      "commit": "23da2d88ece6e85042d541a8bd8b704742e2fc32",
      "tree": "840ccd71ff895d41240ab694d9d2e4b8dec25b6c",
      "parents": [
        "380cb255265ef1d48f2ba18fe395c9b1d1e900ae"
      ],
      "author": {
        "name": "Peter Foley",
        "email": "pefoley2@pefoley.com",
        "time": "Tue Mar 10 14:38:58 2026 -0400"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Mar 10 18:38:58 2026 +0000"
      },
      "message": "Make libvfio-user headers self-contained (#834)\n\nAllows running tools like clang-include-cleaner without error.\n\nSigned-off-by: Peter Foley \u003cpefoley@google.com\u003e"
    },
    {
      "commit": "380cb255265ef1d48f2ba18fe395c9b1d1e900ae",
      "tree": "d79c6be5dc91754390f9478a9f49ebf7bbbba7f3",
      "parents": [
        "850ded8beecf66e42f0e61fa982f9ce7b5e8c397"
      ],
      "author": {
        "name": "mills-ng",
        "email": "r.mills@ngc.com",
        "time": "Mon Mar 09 11:50:50 2026 -0400"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Mar 09 15:50:50 2026 +0000"
      },
      "message": "Add missing reserved field to pxdcap2 structure (#818) (#829)\n\nSigned-off-by: Ryan Mills \u003cr.mills@ngc.com\u003e"
    },
    {
      "commit": "850ded8beecf66e42f0e61fa982f9ce7b5e8c397",
      "tree": "0fd4e49a95034addaa4aac06c4cf8c9142ca9cfd",
      "parents": [
        "7e7a0a6c4f210adfad07589452fd43d8a8478993"
      ],
      "author": {
        "name": "Donghyun Kang",
        "email": "donghyun.kang@dnotitia.com",
        "time": "Fri Mar 06 23:31:18 2026 +0900"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Fri Mar 06 14:31:18 2026 +0000"
      },
      "message": "Support 64b bar region size (#832)\n\n- (private.h/vfu_reg_info_t) Modified dtype of region size: uint32_t -\u003e uint64_t\n- (libvfio-user.c/vfu_realize_ctx) add valid checker for bar region.\n- Added tests for 64b region setup and bar size detection protocol according to linux pci driver.\n- Modified samples/lspci.c to test setup region feature correctly.\n\nCo-authored-by: Cursor AI\nSigned-off-by: Donghyun Kang \u003cdonghyun.kang@dnotitia.com\u003e"
    },
    {
      "commit": "7e7a0a6c4f210adfad07589452fd43d8a8478993",
      "tree": "817fa997ca3a12e8f727ca1cde4aa50bdb42a194",
      "parents": [
        "219417b8da9cf2deba55d4789883869139427e9f"
      ],
      "author": {
        "name": "Baruch Siach",
        "email": "baruch@tkos.co.il",
        "time": "Mon Jan 05 11:46:01 2026 +0200"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Jan 05 09:46:01 2026 +0000"
      },
      "message": "libvfio-user.h: remove comment duplicate wording (#831)\n\nSigned-off-by: Baruch Siach \u003cbaruch@tkos.co.il\u003e\nReviewed-by: Thanos Makatos \u003cthanos.makatos@nutanix.com\u003e"
    },
    {
      "commit": "219417b8da9cf2deba55d4789883869139427e9f",
      "tree": "b03e80ff70071c27dd11fde6199837554c9352f3",
      "parents": [
        "ca9943be5c18ed230f9d4674cc223d1e194f6d23"
      ],
      "author": {
        "name": "Baruch Siach",
        "email": "baruch@tkos.co.il",
        "time": "Sun Jan 04 21:01:03 2026 +0200"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Sun Jan 04 19:01:03 2026 +0000"
      },
      "message": "libvfio-user.h: fix comment typo (#830)\n\nRemove redundant open parentheses.\n\nSigned-off-by: Baruch Siach \u003cbaruch@tkos.co.il\u003e"
    },
    {
      "commit": "ca9943be5c18ed230f9d4674cc223d1e194f6d23",
      "tree": "d62b9562d5d83054dc541c5df628e55fead1d483",
      "parents": [
        "d7cb436ffb0606fec6ec65e6087fae33e777913a"
      ],
      "author": {
        "name": "mcayland-ntx",
        "email": "mark.caveayland@nutanix.com",
        "time": "Wed Oct 22 00:17:36 2025 +0100"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed Oct 22 00:17:36 2025 +0100"
      },
      "message": "samples: improve gpio-pci-idio-16 emulation (#821)\n\nNewer kernels implement read register caching for the gpio-pci-idio-16 which\nmeans that the pin counter is never incremented, making it impossible to change\nthe input register for testing.\n\nImprove the gpio-pci-idio-16 emulation so that the input and output registers\nmatch those of the real hardware, and update the logic so that toggling an\noutput line 3 times will toggle the corresponding input line to allow testing\nindividual inputs and outputs.\n\nSigned-off-by: Mark Cave-Ayland \u003cmark.caveayland@nutanix.com\u003e"
    },
    {
      "commit": "d7cb436ffb0606fec6ec65e6087fae33e777913a",
      "tree": "ff66f5c6af6b6f622d8d38110216b60fd67129ba",
      "parents": [
        "f922ada35b3ef47407687d19c63db1ea19c96550"
      ],
      "author": {
        "name": "John Levon",
        "email": "john.levon@nutanix.com",
        "time": "Fri Oct 10 11:13:28 2025 +0100"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Fri Oct 10 11:13:28 2025 +0100"
      },
      "message": "Rework documentation (#817)\n\nRefresh and re-organize the documentation, in particular:\n\n - recommend QEMU 10.1.1 or later\n - make the main README shorter and easier to navigate\n - refer to QEMU for the protocol definition so we don\u0027t have two copies\n\nSigned-off-by: John Levon \u003cjohn.levon@nutanix.com\u003e"
    },
    {
      "commit": "f922ada35b3ef47407687d19c63db1ea19c96550",
      "tree": "817a44d3b7bc7a18a77358d4b960f717b1d404c9",
      "parents": [
        "635befbfc82a0a3cb53253b12b62409cc9ad14d7"
      ],
      "author": {
        "name": "John Levon",
        "email": "john.levon@nutanix.com",
        "time": "Wed Sep 03 14:54:16 2025 +0100"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed Sep 03 14:54:16 2025 +0100"
      },
      "message": "docs: use custom image for gpio test (#808)\n\nSimplify the gpio walkthrough by using Mark Cave-Ayland\u0027s custom image\ninstead of an Ubuntu cloud image.\n\nSigned-off-by: John Levon \u003cjohn.levon@nutanix.com\u003e"
    },
    {
      "commit": "635befbfc82a0a3cb53253b12b62409cc9ad14d7",
      "tree": "d68be12f1368d8239708ffbabc3dcf48bdb3cbe1",
      "parents": [
        "c6688a6b31e384a3bcd2ab965d09a46627c92d18"
      ],
      "author": {
        "name": "Thanos Makatos",
        "email": "thanos.makatos@nutanix.com",
        "time": "Wed Sep 03 14:30:08 2025 +0100"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed Sep 03 14:30:08 2025 +0100"
      },
      "message": "spruce up shadow ioeventfd documentation (#810)\n\nSigned-off-by: Thanos Makatos \u003cthanos.makatos@nutanix.com\u003e"
    },
    {
      "commit": "c6688a6b31e384a3bcd2ab965d09a46627c92d18",
      "tree": "aff0f6b0e657fb1a8ba0b553088829aac88814a1",
      "parents": [
        "c918b6588862f4ded90a026650a8ed95e316ec35"
      ],
      "author": {
        "name": "John Levon",
        "email": "john.levon@nutanix.com",
        "time": "Tue Sep 02 11:03:52 2025 +0100"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Sep 02 11:03:52 2025 +0100"
      },
      "message": "Update SPDK docs (#811)\n\nUpdate the instructions for using QEMU with SPDK for vNVMe. Now the\nclient is merged into QEMU upstream, suggest a minimum version; make\nvarious other fixes here, including dropping the requirement for root.\n\nSigned-off-by: John Levon \u003cjohn.levon@nutanix.com\u003e"
    },
    {
      "commit": "c918b6588862f4ded90a026650a8ed95e316ec35",
      "tree": "82490025ec084826ddd622c0ca337a25e38d1074",
      "parents": [
        "b1a156d86f55a8fa3f78ece5bee7748ec75e7b82"
      ],
      "author": {
        "name": "John Levon",
        "email": "john.levon@nutanix.com",
        "time": "Tue Sep 02 10:57:19 2025 +0100"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Sep 02 10:57:19 2025 +0100"
      },
      "message": "Update runs-on past ubuntu-20.04 (#813)\n\nIt seems github have removed all ubuntu-20.04 runners, so these jobs\nwere waiting forever.\n\nRemove the ubuntu-20 test as it fails with some unrelated Python issue:\n\n \u003d\u003d5028\u003d\u003d 43 bytes in 1 blocks are definitely lost in loss record 99 of 3,558\n\u003d\u003d5028\u003d\u003d    at 0x4846828: malloc (in /usr/libexec/valgrind/vgpreload_memcheck-amd64-linux.so)\n\u003d\u003d5028\u003d\u003d    by 0x5AB054: PyUnicode_FromKindAndData (in /usr/bin/python3.12)\n\u003d\u003d5028\u003d\u003d    by 0x6022A4: ??? (in /usr/bin/python3.12)\n\u003d\u003d5028\u003d\u003d    by 0x60247E: ??? (in /usr/bin/python3.12)\n\u003d\u003d5028\u003d\u003d    by 0x6027C2: ??? (in /usr/bin/python3.12)\n\u003d\u003d5028\u003d\u003d    by 0x60240C: ??? (in /usr/bin/python3.12)\n\u003d\u003d5028\u003d\u003d    by 0x602792: ??? (in /usr/bin/python3.12)\n\u003d\u003d5028\u003d\u003d    by 0x602530: ??? (in /usr/bin/python3.12)\n\u003d\u003d5028\u003d\u003d    by 0x602792: ??? (in /usr/bin/python3.12)\n\u003d\u003d5028\u003d\u003d    by 0x604DD3: ??? (in /usr/bin/python3.12)\n\u003d\u003d5028\u003d\u003d    by 0x5D72DC: _PyEval_EvalFrameDefault (in /usr/bin/python3.12)\n\u003d\u003d5028\u003d\u003d    by 0x54A0C6: ??? (in /usr/bin/python3.12)\n\nSigned-off-by: John Levon \u003cjohn.levon@nutanix.com\u003e"
    },
    {
      "commit": "b1a156d86f55a8fa3f78ece5bee7748ec75e7b82",
      "tree": "d42e16fc3fb1ef6a1a0cabf1a48a823904ff3e3f",
      "parents": [
        "3f1500b384cd5aca13b517ebd4055727f35dc14f"
      ],
      "author": {
        "name": "John Levon",
        "email": "john.levon@nutanix.com",
        "time": "Mon Aug 19 11:44:36 2024 +0100"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Aug 19 11:44:36 2024 +0100"
      },
      "message": "Add further sanity checking of hdr-\u003eerror_no (#805)\n\n\u003e\u003e\u003e     CID 467267:  Insecure data handling  (INTEGER_OVERFLOW)\r\n\u003e\u003e\u003e     The cast of \"hdr-\u003eerror_no\" to a signed type could result in a negative number.\r\n\r\nIndeed, if a client sends a very large -\u003eerror_no, this could end up\r\nwith a negative errno value. This doesn\u0027t seem like an issue, but\r\nnonetheless tighten up our validation.\r\n\r\nFor some reason Coverity only complained about tran_pipe.c, but the same\r\nproblem exists in tran_sock.c.\r\n\r\nSigned-off-by: John Levon \u003cjohn.levon@nutanix.com\u003e"
    },
    {
      "commit": "3f1500b384cd5aca13b517ebd4055727f35dc14f",
      "tree": "44e6318073354df68d0f76244af4b67b4e326c94",
      "parents": [
        "a5fca05211a15743ecbc5b375048325d2746d758"
      ],
      "author": {
        "name": "John Levon",
        "email": "john.levon@nutanix.com",
        "time": "Mon Aug 19 11:43:44 2024 +0100"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Aug 19 11:43:44 2024 +0100"
      },
      "message": "samples: keep coverity quiet (#804)\n\n\u003e\u003e\u003e     CID 467268:    (INTEGER_OVERFLOW)\r\n\u003e\u003e\u003e     Expression \"32UL + bitmap_size\", which is equal to 31, where\r\n\"bitmap_size\" is known to be equal to 18446744073709551615, overflows\r\nthe type that receives it, an unsigned integer 64 bits wide.\r\n824         size_t size \u003d sizeof(*res) + sizeof(*report) + bitmap_size;\r\n\r\nIt\u0027s correct, this could overflow, though as this is example code, it\r\ndoesn\u0027t matter. Nonetheless let\u0027s make this be a saturating add.\r\n\r\nSigned-off-by: John Levon \u003cjohn.levon@nutanix.com\u003e"
    },
    {
      "commit": "a5fca05211a15743ecbc5b375048325d2746d758",
      "tree": "3de15fccef3b91abb8a59816cdac9c008ee1b3cb",
      "parents": [
        "f468169e322ce258621de97f1e7d47a0b7487d3f"
      ],
      "author": {
        "name": "Michal Berger",
        "email": "michallinuxstuff@gmail.com",
        "time": "Fri Aug 16 18:23:32 2024 +0200"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Fri Aug 16 17:23:32 2024 +0100"
      },
      "message": "lib/libvfio-user: Fix calloc-transposed-args reported by gcc \u003e\u003d 14 (#802)\n\nFixes issue #801.\r\n\r\nSigned-off-by: Michal Berger \u003cmichal.berger@intel.com\u003e"
    },
    {
      "commit": "f468169e322ce258621de97f1e7d47a0b7487d3f",
      "tree": "3c90011753f5ebae8c681492cd7a3688f5233848",
      "parents": [
        "2bf46f24e64bbca253ffa1c6f3d8a11d0dcfa55b"
      ],
      "author": {
        "name": "John Levon",
        "email": "john.levon@nutanix.com",
        "time": "Fri Aug 16 17:10:54 2024 +0100"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Fri Aug 16 17:10:54 2024 +0100"
      },
      "message": "workaround centos:7 issue (#803)\n\nThe centos:7 build no longer works on github due to this:\r\n\r\nRun actions/checkout@v3\r\n/usr/bin/docker exec  02e2cf2da72963d76b12a421e48bc0790138ee97bf567c8afcdf792dbc2093d8 sh -c \"cat /etc/*release | grep ^ID\"\r\n/__e/node20/bin/node: /lib64/libm.so.6: version `GLIBC_2.27\u0027 not found (required by /__e/node20/bin/node)\r\n/__e/node20/bin/node: /lib64/libstdc++.so.6: version `GLIBCXX_3.4.20\u0027 not found (required by /__e/node20/bin/node)\r\n/__e/node20/bin/node: /lib64/libstdc++.so.6: version `CXXABI_1.3.9\u0027 not found (required by /__e/node20/bin/node)\r\n/__e/node20/bin/node: /lib64/libstdc++.so.6: version `GLIBCXX_3.4.21\u0027 not found (required by /__e/node20/bin/node)\r\n/__e/node20/bin/node: /lib64/libc.so.6: version `GLIBC_2.28\u0027 not found (required by /__e/node20/bin/node)\r\n/__e/node20/bin/node: /lib64/libc.so.6: version `GLIBC_2.25\u0027 not found (required by /__e/node20/bin/node)\r\n\r\nSee https://github.com/actions/checkout/issues/1590\r\n\r\nThe workaround suggested there does not work, at least for centos:7.\r\n\r\nInstead, we\u0027ll open-code the checkout operation instead of using the\r\ngithub action.\r\n\r\nFor the other jobs, which still work for now, move to the non-deprecated\r\ncheckout@v4.\r\n\r\nSigned-off-by: John Levon \u003cjohn.levon@nutanix.com\u003e"
    },
    {
      "commit": "2bf46f24e64bbca253ffa1c6f3d8a11d0dcfa55b",
      "tree": "52405b826f48ffaee0563ce35b812faa12a1d52e",
      "parents": [
        "c4ce707207781ddb1c4e1d861b3f0867a4437d4e"
      ],
      "author": {
        "name": "John Levon",
        "email": "john.levon@nutanix.com",
        "time": "Thu May 30 13:47:35 2024 +0100"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu May 30 13:47:35 2024 +0100"
      },
      "message": "bump MAX_DMA_REGIONS (#800)\n\nSome perfectly reasonable VMs exceed 16 VMs; bump this up somewhat.\r\n\r\nSigned-off-by: John Levon \u003cjohn.levon@nutanix.com\u003e"
    },
    {
      "commit": "c4ce707207781ddb1c4e1d861b3f0867a4437d4e",
      "tree": "c56e54da25f82b2e65036cec11ec8c861c8c72bb",
      "parents": [
        "bedaf99895a550ce9a3d3393bbcaf67f7e59f854"
      ],
      "author": {
        "name": "John Levon",
        "email": "john.levon@nutanix.com",
        "time": "Thu May 23 10:19:58 2024 -0700"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu May 23 18:19:58 2024 +0100"
      },
      "message": "docs/qemu: add missing -numa argument (#799)\n\nAdd the missing argument to link the backing memory with the guest\u0027s\r\nmemory; this results in two separate 2G allocations - harmless in this\r\ncase, but would break usage for SPDK.\r\n\r\nSigned-off-by: John Levon \u003cjohn.levon@nutanix.com\u003e"
    },
    {
      "commit": "bedaf99895a550ce9a3d3393bbcaf67f7e59f854",
      "tree": "389beab568ad6228cc71350053fa8b548e580e55",
      "parents": [
        "324f74cee9201ea1a78a9bfb3fcbdba329006703"
      ],
      "author": {
        "name": "John Levon",
        "email": "john.levon@nutanix.com",
        "time": "Wed May 15 01:17:16 2024 -0700"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed May 15 09:17:16 2024 +0100"
      },
      "message": "improve documentation on testing with qemu (#797)\n\nPull out the qemu testing documentation into a separate file, and expand\r\nit with step-by-step instructions on how to use the gpio example.\r\n\r\nIn addition switch to the jlevon/master.vfio-user branch, which is much\r\nmore up to date than the previous Oracle series.\r\n\r\nSigned-off-by: John Levon \u003cjohn.levon@nutanix.com\u003e"
    },
    {
      "commit": "324f74cee9201ea1a78a9bfb3fcbdba329006703",
      "tree": "4f3c1d85c57600c1b6d7b9159bb855238f6c1430",
      "parents": [
        "09bb7f16106eedbfb726379f7b7b518cc8a95b88"
      ],
      "author": {
        "name": "John Levon",
        "email": "john.levon@nutanix.com",
        "time": "Tue May 14 15:29:40 2024 -0700"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue May 14 23:29:40 2024 +0100"
      },
      "message": "docs: correct markdown links (#796)\n\nThe syntax is [free text](https:/..).\r\n\r\nSigned-off-by: John Levon \u003cjohn.levon@nutanix.com\u003e"
    },
    {
      "commit": "09bb7f16106eedbfb726379f7b7b518cc8a95b88",
      "tree": "94ef4549d2ce53867e1c2f6ad4e8d6ae2e282695",
      "parents": [
        "99e0e09f0794bb727d3a298ad465ae1041397078"
      ],
      "author": {
        "name": "John Levon",
        "email": "john.levon@nutanix.com",
        "time": "Tue May 14 11:30:50 2024 -0700"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue May 14 19:30:50 2024 +0100"
      },
      "message": "remove arch OS github action (#798)\n\nThis has never worked reliably, and now doesn\u0027t work at all; since\r\nnobody appears to be interested, remove it altogether.\r\n\r\nSigned-off-by: John Levon \u003cjohn.levon@nutanix.com\u003e"
    },
    {
      "commit": "99e0e09f0794bb727d3a298ad465ae1041397078",
      "tree": "dc35db8ec4d6adcd4e8ec09a8ee3aefc419063a5",
      "parents": [
        "cfa568e1efb1baa7f21a53097f2b3fc889b3ffcb"
      ],
      "author": {
        "name": "David Reiss",
        "email": "dreiss@fb.com",
        "time": "Fri Apr 26 17:07:55 2024 -0700"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Fri Apr 26 17:07:55 2024 -0700"
      },
      "message": "Remove dangling quotes from vfio-user.rst (#795)\n\nThis improves rendering on github quite a bit.\r\n\r\nSigned-off-by: David Reiss \u003cdreiss@meta.com\u003e"
    },
    {
      "commit": "cfa568e1efb1baa7f21a53097f2b3fc889b3ffcb",
      "tree": "9424fdad918d57710c37060c563e690cb1262d65",
      "parents": [
        "143b4f840b07990a759d0e7328475bdf90d7d6ba"
      ],
      "author": {
        "name": "John Levon",
        "email": "john.levon@nutanix.com",
        "time": "Thu Apr 18 11:56:15 2024 +0000"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu Apr 18 12:56:15 2024 +0100"
      },
      "message": "docs: document SPDK dependency (#794)\n\nWe maintain an `spdk` branch for use by SPDK, until we have\r\nimplementation live migration v2 in both qemu and SPDK.\r\n\r\nSigned-off-by: John Levon \u003cjohn.levon@nutanix.com\u003e"
    },
    {
      "commit": "143b4f840b07990a759d0e7328475bdf90d7d6ba",
      "tree": "f1f8c906c3e2495639baaf0f5cf6bfd95b3d305c",
      "parents": [
        "b646559cc90f1a1f475fc47048bbbd955e20f4a2"
      ],
      "author": {
        "name": "jfgd",
        "email": "4610889+jfgd@users.noreply.github.com",
        "time": "Fri Mar 29 11:37:10 2024 +0100"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Fri Mar 29 10:37:10 2024 +0000"
      },
      "message": "Support 64 bits and prefetchable BARs (#792)\n\n* Support 64 bits and prefetchable BARs\r\n\r\nAdd two new flags for lib user to request 64bits and/or prefetchable\r\nBARs.\r\n\r\nTested with a vfio-user client patched QEMU.\r\n\r\nSigned-off-by: Jérémy Fanguède \u003cjfanguede@kalrayinc.com\u003e"
    },
    {
      "commit": "b646559cc90f1a1f475fc47048bbbd955e20f4a2",
      "tree": "0826af01291578e80b922e22d6651f070ee2783b",
      "parents": [
        "6f6fdc58b78aa9698c116962a470a03f4292a477"
      ],
      "author": {
        "name": "John Levon",
        "email": "john.levon@nutanix.com",
        "time": "Thu Mar 21 16:21:39 2024 +0000"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu Mar 21 16:21:39 2024 +0000"
      },
      "message": "correct IRQ range check (#791)\n\nOur previous fuzzing attempts missed this incorrect range check, but\r\nSPDK\u0027s fuzzing did catch it. Make the check using a saturating add so\r\nthat we account for overflow.\r\n\r\nFixes issue #790.\r\n\r\nReported-by: Sebastian Brzezinka \u003csebastian.brzezinka@intel.com\u003e\r\nSigned-off-by: John Levon \u003cjohn.levon@nutanix.com\u003e"
    },
    {
      "commit": "6f6fdc58b78aa9698c116962a470a03f4292a477",
      "tree": "4e128fc16a701458a9721d52a65ff34ed4a44c12",
      "parents": [
        "c9effb42d7bbe8346bbb8110961c1e3640a69c23"
      ],
      "author": {
        "name": "Mattias Nissler",
        "email": "122288598+mnissler-rivos@users.noreply.github.com",
        "time": "Wed Jan 24 18:19:41 2024 +0100"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed Jan 24 17:19:41 2024 +0000"
      },
      "message": "Fix DMA message size calculation (#788)\n\nWhen performing DMA via VFIO-user commands over the socket,\r\nvfu_dma_transfer breaks large requests into chunks according to the\r\nclient\u0027s maximum data transfer size negotiated at connection setup time.\r\nThis change fixes the calculation of the chunk size for the case where\r\nthe last chunk is less than the maximum transfer size.\r\n\r\nUnfortunately, the existing test didn\u0027t catch this due to the request\r\nsize being a multiple of that maximum data transfer size. Adjust the\r\ntest to make the last chunk size a true remainder.\r\n\r\nSigned-off-by: Mattias Nissler \u003cmnissler@rivosinc.com\u003e"
    },
    {
      "commit": "c9effb42d7bbe8346bbb8110961c1e3640a69c23",
      "tree": "e68144f4fac26526e568236a7f3db31eaf1b31cb",
      "parents": [
        "2c6239afef4f1a7c923b59c62b780224f3e4bafa"
      ],
      "author": {
        "name": "John Levon",
        "email": "john.levon@nutanix.com",
        "time": "Wed Jan 24 16:52:21 2024 +0000"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed Jan 24 16:52:21 2024 +0000"
      },
      "message": "make arch CI non-required (#789)\n\nThe arch github action seems to not work at all. For now, just remove it\r\nfrom the required checks; later, if there\u0027s no progress, we can remove\r\nit altogether.\r\n\r\nSigned-off-by: John Levon \u003cjohn.levon@nutanix.com\u003e"
    },
    {
      "commit": "2c6239afef4f1a7c923b59c62b780224f3e4bafa",
      "tree": "f54472cd4dd12f08ac3b9fe1598ebd90863f3fab",
      "parents": [
        "8d38e8c57923f736ffc8215b7b237c76d240e3b4"
      ],
      "author": {
        "name": "John Levon",
        "email": "john.levon@nutanix.com",
        "time": "Mon Oct 02 14:33:13 2023 +0100"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Oct 02 14:33:13 2023 +0100"
      },
      "message": "replace bcopy() with memcpy() (#786)\n\nFor some unclear reason, clang-tidy believes bcopy() is insecure.\nRegardless, it is deprecated, so replace usages with memcpy().\n\nSigned-off-by: John Levon \u003cjohn.levon@nutanix.com\u003e\nReviewed-by: Thanos Makatos \u003cthanos.makatos@nutanix.com\u003e\n"
    },
    {
      "commit": "8d38e8c57923f736ffc8215b7b237c76d240e3b4",
      "tree": "fda7ef5d3223c51c391bd6b14915476a90de4416",
      "parents": [
        "7da33b5aaef3e1bafe530138451e53cda541a504"
      ],
      "author": {
        "name": "John Levon",
        "email": "john.levon@nutanix.com",
        "time": "Mon Oct 02 14:06:38 2023 +0100"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Oct 02 14:06:38 2023 +0100"
      },
      "message": "fix VFIO_USER_DEVICE_GET_REGION_IO_FDS allocation (#785)\n\nclang-tidy static analysis identified a zero-sized allocation in the\ncase that no ioregionfds had been configured. Fix this issue and add a\ntest for it.\n\nSigned-off-by: John Levon \u003cjohn.levon@nutanix.com\u003e\nReviewed-by: Thanos Makatos \u003cthanos.makatos@nutanix.com\u003e\n"
    },
    {
      "commit": "7da33b5aaef3e1bafe530138451e53cda541a504",
      "tree": "f7e9aff7318161928f4ba23eb9ea704c1929659a",
      "parents": [
        "1c0cf16e49544a849b5382cc0622dc7cd01f0f36"
      ],
      "author": {
        "name": "John Levon",
        "email": "john.levon@nutanix.com",
        "time": "Mon Sep 18 18:35:43 2023 +0100"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Sep 18 18:35:43 2023 +0100"
      },
      "message": "test_negotiate: add migration testing (#781)\n\nAdd migration support to the test setup, and complete some additional\ntesting for the migration JSON capability.\n\nSigned-off-by: John Levon \u003cjohn.levon@nutanix.com\u003e\n"
    },
    {
      "commit": "1c0cf16e49544a849b5382cc0622dc7cd01f0f36",
      "tree": "07dbc3226fc5cb3e523501912fe5a24459744873",
      "parents": [
        "3c18696427c4db338919f9a9e1943589a5a523b5"
      ],
      "author": {
        "name": "William Henderson",
        "email": "william.henderson@nutanix.com",
        "time": "Mon Sep 18 14:30:04 2023 +0100"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Sep 18 14:30:04 2023 +0100"
      },
      "message": "fix: minor memory bugs #784 \n\nFixes the following Coverity reports:\n\n________________________________________________________________________________________________________\n*** CID 417161:  Memory - corruptions  (ARRAY_VS_SINGLETON)\n/samples/server.c: 438 in migration_write_data()\n432         }\n433    \n434         /* write to bar0, if any */\n435         if (write_end \u003e server_data-\u003ebar1_size) {\n436             length_in_bar0 \u003d write_end - write_start;\n437             write_start -\u003d server_data-\u003ebar1_size;\n     CID 417161:  Memory - corruptions  (ARRAY_VS_SINGLETON)\n     Using \"\u0026server_data-\u003ebar0\" as an array.  This might corrupt or misinterpret adjacent memory locations.\n438             memcpy(\u0026server_data-\u003ebar0 + write_start, buf + length_in_bar1,\n439                    length_in_bar0);\n440         }\n441    \n442         server_data-\u003emigration.bytes_transferred +\u003d bytes_written;\n443    \n\n________________________________________________________________________________________________________\n*** CID 417160:  Memory - corruptions  (ARRAY_VS_SINGLETON)\n/samples/server.c: 394 in migration_read_data()\n388         }\n389    \n390         /* read bar0, if any */\n391         if (read_end \u003e server_data-\u003ebar1_size) {\n392             length_in_bar0 \u003d read_end - read_start;\n393             read_start -\u003d server_data-\u003ebar1_size;\n     CID 417160:  Memory - corruptions  (ARRAY_VS_SINGLETON)\n     Using \"\u0026server_data-\u003ebar0\" as an array.  This might corrupt or misinterpret adjacent memory locations.\n394             memcpy(buf + length_in_bar1, \u0026server_data-\u003ebar0 + read_start,\n395                    length_in_bar0);\n396         }\n397    \n398         server_data-\u003emigration.bytes_transferred +\u003d bytes_read;\n399    \n\n________________________________________________________________________________________________________\n*** CID 417159:  Possible Control flow issues  (DEADCODE)\n/lib/libvfio-user.c: 121 in dev_get_caps()\n115    \n116         header \u003d (struct vfio_info_cap_header*)(vfio_reg + 1);\n117    \n118         if (vfu_reg-\u003emmap_areas !\u003d NULL) {\n119             int i, nr_mmap_areas \u003d vfu_reg-\u003enr_mmap_areas;\n120             if (type !\u003d NULL) {\n     CID 417159:  Possible Control flow issues  (DEADCODE)\n     Execution cannot reach this statement: \"type-\u003eheader.next \u003d vfio_re...\".\n121                 type-\u003eheader.next \u003d vfio_reg-\u003ecap_offset + sizeof(struct vfio_region_info_cap_type);\n122                 sparse \u003d (struct vfio_region_info_cap_sparse_mmap*)(type + 1);\n123             } else {\n124                 vfio_reg-\u003ecap_offset \u003d sizeof(struct vfio_region_info);\n125                 sparse \u003d (struct vfio_region_info_cap_sparse_mmap*)header;\n126             }\n\nSigned-off-by: William Henderson \u003cwilliam.henderson@nutanix.com\u003e\n"
    },
    {
      "commit": "3c18696427c4db338919f9a9e1943589a5a523b5",
      "tree": "b4593cdc5eabd081fd8bf6212bc17ec23cbb5048",
      "parents": [
        "190f85bf9c114bf7c981bb8908394368f84c0c04"
      ],
      "author": {
        "name": "John Levon",
        "email": "john.levon@nutanix.com",
        "time": "Mon Sep 18 10:51:10 2023 +0100"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Sep 18 10:51:10 2023 +0100"
      },
      "message": "Add some notes on live migration version and SPDK usage. (#783)\n\nSigned-off-by: John Levon \u003cjohn.levon@nutanix.com\u003e\n"
    },
    {
      "commit": "190f85bf9c114bf7c981bb8908394368f84c0c04",
      "tree": "92273a811fc3a8af74a5f62cec8871f345d6999b",
      "parents": [
        "1569a37a54ecb63bd4008708c76339ccf7d06115"
      ],
      "author": {
        "name": "William Henderson",
        "email": "william.henderson@nutanix.com",
        "time": "Fri Sep 15 16:07:01 2023 +0100"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Fri Sep 15 16:07:01 2023 +0100"
      },
      "message": "adapt to VFIO live migration v2 (#782)\n\nThis commit adapts the vfio-user protocol specification and the libvfio-user\nimplementation to v2 of the VFIO live migration interface, as used in the kernel\nand QEMU.\n\nThe differences between v1 and v2 are discussed in this email thread [1], and we\nslightly differ from upstream VFIO v2 in that instead of transferring data over\na new FD, we use the existing UNIX socket with new commands\nVFIO_USER_MIG_DATA_READ/WRITE. We also don\u0027t yet use P2P states.\n\nThe updated spec was submitted to qemu-devel [2].\n\n[1] https://lore.kernel.org/all/20220130160826.32449-9-yishaih@nvidia.com/\n[2] https://lore.kernel.org/all/20230718094150.110183-1-william.henderson@nutanix.com/\n\nSigned-off-by: William Henderson \u003cwilliam.henderson@nutanix.com\u003e\n"
    },
    {
      "commit": "1569a37a54ecb63bd4008708c76339ccf7d06115",
      "tree": "249f6e0bd2dd5b8620bc55637e60c8834d5cf630",
      "parents": [
        "478ddb5f87ea257c8682c5288761606d5fa216ad"
      ],
      "author": {
        "name": "Mattias Nissler",
        "email": "122288598+mnissler-rivos@users.noreply.github.com",
        "time": "Fri Sep 15 12:33:37 2023 +0200"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Fri Sep 15 11:33:37 2023 +0100"
      },
      "message": "Pass server-\u003eclient command over a separate socket pair (#762)\n\nUse separate socket for server-\u003eclient commands\n\nThis change adds support for a separate socket to carry commands in the\nserver-to-client direction. It has proven problematic to send commands\nin both directions over a single socket, since matching replies to\ncommands can become non-trivial when both sides send commands at the same\ntime and adds significant complexity. See issue #279 for details.\n\nTo set up the reverse communication channel, the client indicates\nsupport for it via a new capability flag in the version message. The\nserver will then create a fresh pair of sockets and pass one end to the\nclient in its version reply. When the server wishes to send commands to\nthe client at a later point, it now uses its end of the new socket pair\nrather than the main socket. Corresponding replies are also passed back\nover the new socket pair.\n\nSigned-off-by: Mattias Nissler \u003cmnissler@rivosinc.com\u003e\n"
    },
    {
      "commit": "478ddb5f87ea257c8682c5288761606d5fa216ad",
      "tree": "65f47cbf4c2eb1ed35b5267b54864ca7eaf38b0d",
      "parents": [
        "f63ef82ad01821417df488cef7ec1fd94c3883fa"
      ],
      "author": {
        "name": "Mattias Nissler",
        "email": "122288598+mnissler-rivos@users.noreply.github.com",
        "time": "Fri Sep 15 12:22:40 2023 +0200"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Fri Sep 15 11:22:40 2023 +0100"
      },
      "message": "Describe the twin-socket feature in the spec (#775)\n\nSigned-off-by: Mattias Nissler \u003cmnissler@rivosinc.com\u003e\n"
    },
    {
      "commit": "f63ef82ad01821417df488cef7ec1fd94c3883fa",
      "tree": "521eda840bb90388eac0e9aa5930d2c45253a7ad",
      "parents": [
        "a7eedffe20bd6e480c9e2c65e68daef1beb2af05"
      ],
      "author": {
        "name": "Thanos Makatos",
        "email": "thanos.makatos@nutanix.com",
        "time": "Thu Aug 31 10:49:40 2023 +0100"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu Aug 31 10:49:40 2023 +0100"
      },
      "message": "update SDPK version spdk.md (#769)\n\nThe SPDK and QEMU versions were too old.\r\n\r\nSigned-off-by: Thanos Makatos \u003cthanos.makatos@nutanix.com\u003e\r\nReviewed-by: John Levon \u003cjohn.levon@nutanix.com\u003e"
    },
    {
      "commit": "a7eedffe20bd6e480c9e2c65e68daef1beb2af05",
      "tree": "37f46c9cbf8de3fbb0622b7472157d60f1b8550f",
      "parents": [
        "2e8ec2e17a5252d29bae849eb4ccd7ca6bab216a"
      ],
      "author": {
        "name": "Mattias Nissler",
        "email": "122288598+mnissler-rivos@users.noreply.github.com",
        "time": "Thu Aug 31 11:38:55 2023 +0200"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu Aug 31 10:38:55 2023 +0100"
      },
      "message": "Introduce client object in python tests (#772)\n\nThus far, the client end of the socket is the only piece of client state\r\ntracked in tests, for which a global `socket` variable has been used. In\r\npreparation to add more state, replace the `socket` global with a\r\n`client` global object that groups all client state.\r\n\r\nSigned-off-by: Mattias Nissler \u003cmnissler@rivosinc.com\u003e\r\nReviewed-by: John Levon \u003cjohn.levon@nutanix.com\u003e\r\nReviewed-by: Thanos Makatos \u003cthanos.makatos@nutanix.com\u003e"
    },
    {
      "commit": "2e8ec2e17a5252d29bae849eb4ccd7ca6bab216a",
      "tree": "588f4ba710a498a050062371ac5b3d1c432fedc2",
      "parents": [
        "8530d6c34d20eaddb3dcec78792cafccf1468f55"
      ],
      "author": {
        "name": "Mattias Nissler",
        "email": "122288598+mnissler-rivos@users.noreply.github.com",
        "time": "Thu Aug 31 11:23:52 2023 +0200"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu Aug 31 10:23:52 2023 +0100"
      },
      "message": "Prepare python test helpers for receiving commands (#774)\n\nThus far, the python test code has only ever sent messages of type\r\ncommands to the server and processed the corresponding replies. For the\r\ntwin-socket feature, the tests will exercise flows where DMA access\r\ncommands must be received, processed, and replied to by the client.\r\n\r\nThis change refactors the message handling python test code to provide\r\nfunctions to handle server-to-client commands, reusing existing code as\r\nappropriate.\r\n\r\nSigned-off-by: Mattias Nissler \u003cmnissler@rivosinc.com\u003e\r\nReviewed-by: John Levon \u003cjohn.levon@nutanix.com\u003e\r\nReviewed-by: Thanos Makatos \u003cthanos.makatos@nutanix.com\u003e"
    },
    {
      "commit": "8530d6c34d20eaddb3dcec78792cafccf1468f55",
      "tree": "b0f196323aef3c5ee4c0cce97a7b5e0039dd2aec",
      "parents": [
        "f981913abd9a5926d38a48c6ba9b1ba7dacb1c11"
      ],
      "author": {
        "name": "Mattias Nissler",
        "email": "122288598+mnissler-rivos@users.noreply.github.com",
        "time": "Thu Aug 31 10:53:22 2023 +0200"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu Aug 31 09:53:22 2023 +0100"
      },
      "message": "Construct server capabilities using json-c (#771)\n\nString formatting is hitting its limits: Adding another field is\r\ndifficult given that we already branch on whether migration is enabled.\r\nThis change constructs a JSON-C object instead so we can add what we\r\nneed and serialize to a string afterwards.\r\n\r\nSigned-off-by: Mattias Nissler \u003cmnissler@rivosinc.com\u003e\r\nReviewed-by: John Levon \u003cjohn.levon@nutanix.com\u003e\r\nReviewed-by: Thanos Makatos \u003cthanos.makatos@nutanix.com\u003e\r\n"
    },
    {
      "commit": "f981913abd9a5926d38a48c6ba9b1ba7dacb1c11",
      "tree": "fd987030168cc14095322664e86feaefaa362582",
      "parents": [
        "149aa845b11bd13fca41dcf65b51283f83ac5520"
      ],
      "author": {
        "name": "Mattias Nissler",
        "email": "122288598+mnissler-rivos@users.noreply.github.com",
        "time": "Wed Aug 30 17:19:50 2023 +0200"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed Aug 30 16:19:50 2023 +0100"
      },
      "message": "Replace protocol header flags bit field with mask (#773)\n\nIt turns out that the bit field will not yield the desired / specified\r\nbit layout on big-endian systems, see issue #768 for details. Thus,\r\nreplace the bit field with constants for the individual fields and use\r\nbit masking when accessing the flags field.\r\n\r\nSigned-off-by: Mattias Nissler \u003cmnissler@rivosinc.com\u003e\r\nReviewed-by: John Levon \u003cjohn.levon@nutanix.com\u003e\r\nReviewed-by: Thanos Makatos \u003cthanos.makatos@nutanix.com\u003e"
    },
    {
      "commit": "149aa845b11bd13fca41dcf65b51283f83ac5520",
      "tree": "04f557f00a3693337102f5be678b6102bfb3b24b",
      "parents": [
        "cfb7d908dca025bdea6709801c5790863e902ef8"
      ],
      "author": {
        "name": "William Henderson",
        "email": "william.henderson@nutanix.com",
        "time": "Wed Aug 23 09:38:30 2023 +0100"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed Aug 23 09:38:30 2023 +0100"
      },
      "message": "fix: incorrect number of dirty pages printed (#766)\n\nThe `log_dirty_bitmap` function in `dma.c` would output the wrong number of\r\ndirty pages due to the `char` of the bitmap being sign-extended when implicitly\r\nbeing converted to `unsigned int` for `__builtin_popcount`. By adding an\r\nintermediate cast to `uint8_t` we avoid this incorrect behaviour.\r\n\r\nSee https://github.com/nutanix/libvfio-user/pull/746#discussion_r1297173318.\r\n\r\nSigned-off-by: William Henderson \u003cwilliam.henderson@nutanix.com\u003e"
    },
    {
      "commit": "cfb7d908dca025bdea6709801c5790863e902ef8",
      "tree": "05cd8d0ee5f47de92a984f99224e660f20ab294c",
      "parents": [
        "4635ac635813b97d68fa55fe1e15db0f3c460212"
      ],
      "author": {
        "name": "Sandro-Alessio Gierens",
        "email": "sandro@gierens.de",
        "time": "Tue Aug 15 22:03:08 2023 +0200"
      },
      "committer": {
        "name": "Sandro-Alessio Gierens",
        "email": "sandro@gierens.de",
        "time": "Tue Aug 15 22:03:08 2023 +0200"
      },
      "message": "Make debian-11, debian-12 and arch-202307 required pull request jobs\n\nSigned-off-by: Sandro-Alessio Gierens \u003csandro@gierens.de\u003e\n"
    },
    {
      "commit": "4635ac635813b97d68fa55fe1e15db0f3c460212",
      "tree": "aca1f6389ee8f5eea6fca5a162bfb489bc24648b",
      "parents": [
        "da8fbe8b43192fc509a89dd29159ad67a219b209"
      ],
      "author": {
        "name": "Sandro-Alessio Gierens",
        "email": "sandro@gierens.de",
        "time": "Tue Aug 15 16:07:47 2023 +0200"
      },
      "committer": {
        "name": "Sandro-Alessio Gierens",
        "email": "49617392+gierens@users.noreply.github.com",
        "time": "Tue Aug 15 16:50:05 2023 +0200"
      },
      "message": "Revise iovec_t.__eq__ and vfu_dma_info_t.__eq__ to fix flake8 E721\n\nThe newer flake8 version in the arch linux job of the pull request\nworkflow fails due to:\n\nE721 do not compare types, for exact checks use `is` / `is not`, for instance checks use `isinstance()`\n\nBoth `__eq__` functions now use `is not` instead of `!\u003d` for the type\ninitial check.\n\nSigned-off-by: Sandro-Alessio Gierens \u003csandro@gierens.de\u003e\n"
    },
    {
      "commit": "da8fbe8b43192fc509a89dd29159ad67a219b209",
      "tree": "f0985f2ca90027bed68c74b2451d6d2aab2c9c8b",
      "parents": [
        "b450644723af214f4e5ac19287bc495a42e8ee5f"
      ],
      "author": {
        "name": "Sandro-Alessio Gierens",
        "email": "sandro@gierens.de",
        "time": "Tue Aug 15 16:01:34 2023 +0200"
      },
      "committer": {
        "name": "Sandro-Alessio Gierens",
        "email": "49617392+gierens@users.noreply.github.com",
        "time": "Tue Aug 15 16:50:05 2023 +0200"
      },
      "message": "Add debian 11, 12 and arch linux jobs to pull_request workflow\n\nThis adds jobs to `.github/workflows/pull_request.yml` for Debian 11\nbullseye, Debian 12 bookworm and Arch Linux base 20230723.0.166908.\n\nSigned-off-by: Sandro-Alessio Gierens \u003csandro@gierens.de\u003e\n"
    },
    {
      "commit": "b450644723af214f4e5ac19287bc495a42e8ee5f",
      "tree": "ca75a47994fff99180c4485b1ae1f3994171b5a9",
      "parents": [
        "e8c37f83fb92848f328e297ace37536253ee08bc"
      ],
      "author": {
        "name": "Sandro-Alessio Gierens",
        "email": "sandro@gierens.de",
        "time": "Tue Aug 15 15:58:23 2023 +0200"
      },
      "committer": {
        "name": "Sandro-Alessio Gierens",
        "email": "49617392+gierens@users.noreply.github.com",
        "time": "Tue Aug 15 16:50:05 2023 +0200"
      },
      "message": "Bump Github Actions version to v3\n\nNode12 and as a result Github Actions v2 will apparently soon be\ndeprecated, see: https://github.blog/changelog/2023-06-13-github-actions-all-actions-will-run-on-node16-instead-of-node12-by-default/\nThus this changes all workflow jobs to use `actions/checkout@v3`.\n\nSigned-off-by: Sandro-Alessio Gierens \u003csandro@gierens.de\u003e\n"
    },
    {
      "commit": "e8c37f83fb92848f328e297ace37536253ee08bc",
      "tree": "ff61bba39e20b62240e46b95504d2f1f6f4671c1",
      "parents": [
        "1cca91aeb8ae8f531f9c3b9c59d83630e9941a5e"
      ],
      "author": {
        "name": "Mattias Nissler",
        "email": "122288598+mnissler-rivos@users.noreply.github.com",
        "time": "Tue Aug 15 13:38:30 2023 +0200"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Aug 15 12:38:30 2023 +0100"
      },
      "message": "Introduce close_safely helper function (#763)\n\nThe helper function centralizes some extra checks and diligence desired\r\nby many/most current code paths but currently inconsistently applied.\r\nThis includes bypassing the close call when the file descriptor is -1\r\nalready, resetting the file descriptor variable to -1 after closing, and\r\npreserving errno.\r\n\r\nAll calls to close are replaced by close_safely. Some warning log output\r\nis lost over this, but it doesn\u0027t seem like this was very useful anyways\r\ngiven that Linux always closes the file descriptor anyways.\r\n\r\nSigned-off-by: Mattias Nissler \u003cmnissler@rivosinc.com\u003e"
    },
    {
      "commit": "1cca91aeb8ae8f531f9c3b9c59d83630e9941a5e",
      "tree": "a0b700608a3f29be7cc8cb14060eb2b703edf59c",
      "parents": [
        "852ca25f41bf7be8a6a2a8b30c0e2374c10b480e"
      ],
      "author": {
        "name": "Florian Freudiger",
        "email": "25648113+FlorianFreudiger@users.noreply.github.com",
        "time": "Tue Aug 15 13:24:23 2023 +0200"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Aug 15 12:24:23 2023 +0100"
      },
      "message": "Allow adding MSI capability via vfu_pci_add_capability (#758)\n\nSigned-off-by: Florian Freudiger \u003c25648113+FlorianFreudiger@users.noreply.github.com\u003e"
    },
    {
      "commit": "852ca25f41bf7be8a6a2a8b30c0e2374c10b480e",
      "tree": "ba90af9e3ecb7121185a25083222e35df27ab26a",
      "parents": [
        "89f1e5c5f069c9161b3df25e8a34e88c62a56f9e"
      ],
      "author": {
        "name": "Sandro-Alessio Gierens",
        "email": "49617392+gierens@users.noreply.github.com",
        "time": "Tue Aug 15 12:31:23 2023 +0200"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Aug 15 11:31:23 2023 +0100"
      },
      "message": "Add another lspci test output variant (#761)\n\nThis adds the expected output to the lspci test I get on my Arch with kernel\r\nversion 6.1.44-lts and pciutils version 3.10.0.\r\n\r\nSigned-off-by: Sandro-Alessio Gierens \u003csandro@gierens.de\u003e"
    },
    {
      "commit": "89f1e5c5f069c9161b3df25e8a34e88c62a56f9e",
      "tree": "263a835abbe84c795ec1e9439769e65014d80566",
      "parents": [
        "8872c36d5047e464952d8aa7f3f12633357d758d"
      ],
      "author": {
        "name": "Florian Freudiger",
        "email": "25648113+FlorianFreudiger@users.noreply.github.com",
        "time": "Tue Aug 08 11:57:00 2023 +0200"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Aug 08 10:57:00 2023 +0100"
      },
      "message": "Fix MSI-X capability write logging opposite status (#759)\n\n\r\nSigned-off-by: Florian Freudiger \u003c25648113+FlorianFreudiger@users.noreply.github.com\u003e"
    },
    {
      "commit": "8872c36d5047e464952d8aa7f3f12633357d758d",
      "tree": "369b0cb99d4db83de4cf61f0bc8ab7a3b7bb5562",
      "parents": [
        "53f85b9996196ebe6ddacdc61f6bdaa20eba304b"
      ],
      "author": {
        "name": "William Henderson",
        "email": "william.henderson@nutanix.com",
        "time": "Wed Aug 02 17:11:11 2023 +0100"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed Aug 02 17:11:11 2023 +0100"
      },
      "message": "fix: server sample not marking dirty pages (#748)\n\nThe server sample is supposed to demonstrate dirty page logging, but it was not marking dirty pages. This commit both adds client-side dirty page tracking for pages dirtied with `vfu_sgl_write` and server-side dirty page tracking for pages directly dirtied by the server using `vfu_sgl_get/put`.\r\n\r\nSigned-off-by: William Henderson \u003cwilliam.henderson@nutanix.com\u003e"
    },
    {
      "commit": "53f85b9996196ebe6ddacdc61f6bdaa20eba304b",
      "tree": "f41a52bd8aac2e231ae4e99917f53759ec740290",
      "parents": [
        "8038da119c3fd53970d6820208b78e9c1798ba95"
      ],
      "author": {
        "name": "William Henderson",
        "email": "william.henderson@nutanix.com",
        "time": "Wed Aug 02 09:47:39 2023 +0100"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed Aug 02 09:47:39 2023 +0100"
      },
      "message": "docs: document test debugging with GDB (#756)\n\nSigned-off-by: William Henderson \u003cwilliam.henderson@nutanix.com\u003e"
    },
    {
      "commit": "8038da119c3fd53970d6820208b78e9c1798ba95",
      "tree": "649a8f86e1347473b94593c4f60ff317e89e8e9c",
      "parents": [
        "56eeb6809e4d68546eae3ff8d0e03aaea66d46d1"
      ],
      "author": {
        "name": "John Levon",
        "email": "john.levon@nutanix.com",
        "time": "Mon Jul 31 14:43:23 2023 +0100"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Jul 31 14:43:23 2023 +0100"
      },
      "message": "docs: document DMA message dirty handling (#755)\n\nDocument that on vfu_sgl_write(), it\u0027s the client\u0027s responsibility to\r\ntrack any dirty pages.\r\n\r\nSigned-off-by: John Levon \u003cjohn.levon@nutanix.com\u003e"
    },
    {
      "commit": "56eeb6809e4d68546eae3ff8d0e03aaea66d46d1",
      "tree": "0e98c127d53d431527e28b437012d292047ffc52",
      "parents": [
        "b9ee22b861f95dccffcafac3f7feca5a4ef8e16a"
      ],
      "author": {
        "name": "William Henderson",
        "email": "william.henderson@nutanix.com",
        "time": "Mon Jul 31 11:03:40 2023 +0100"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Jul 31 11:03:40 2023 +0100"
      },
      "message": "fix: CRC calculation in client sample (#750)\n\nSigned-off-by: William Henderson \u003cwilliam.henderson@nutanix.com\u003e\r\nReviewed-by: Thanos Makatos \u003cthanos.makatos@nutanix.com\u003e"
    },
    {
      "commit": "b9ee22b861f95dccffcafac3f7feca5a4ef8e16a",
      "tree": "f5b5ea8e14515885dfd61a39a5b3cce6bba64c02",
      "parents": [
        "bb308a2e8ee9486a4c8b53d8d773f7c8faaeba08"
      ],
      "author": {
        "name": "William Henderson",
        "email": "william.henderson@nutanix.com",
        "time": "Mon Jul 24 15:02:24 2023 +0100"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Jul 24 15:02:24 2023 +0100"
      },
      "message": "refactor: remove private includes from server.c (#752)\n\nSigned-off-by: William Henderson \u003cwilliam.henderson@nutanix.com\u003e\r\nReviewed-by: Thanos Makatos \u003cthanos.makatos@nutanix.com\u003e"
    },
    {
      "commit": "bb308a2e8ee9486a4c8b53d8d773f7c8faaeba08",
      "tree": "a0e7d7eb4ef1823e11c3add311eae99c5cdabef9",
      "parents": [
        "bf8ce3fbe1b503324dfacba49cbdb18f637986d8"
      ],
      "author": {
        "name": "Mattias Nissler",
        "email": "122288598+mnissler-rivos@users.noreply.github.com",
        "time": "Mon Jul 03 18:28:59 2023 +0200"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Jul 03 17:28:59 2023 +0100"
      },
      "message": "Fix address calculation for message-based DMA (#740)\n\nThe correct DMA address is formed by adding base and offset - the latter\r\nwas accidentally missing. Change the server example to read and write\r\nblocks at non-zero offsets, such that `test-client-server.sh` exercises\r\noffset handling.\r\n\r\nSigned-off-by: Mattias Nissler \u003cmnissler@rivosinc.com\u003e"
    },
    {
      "commit": "bf8ce3fbe1b503324dfacba49cbdb18f637986d8",
      "tree": "a59c8394b94f4de2c6d373ea1f6f07e75ef62ac2",
      "parents": [
        "728da2b9e37bc507f910652bbe09b9bbe1f5a37c"
      ],
      "author": {
        "name": "William Henderson",
        "email": "william-henderson@outlook.com",
        "time": "Thu Jun 22 12:19:11 2023 +0100"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu Jun 22 12:19:11 2023 +0100"
      },
      "message": "fix build instructions for samples (#739)\n\nSigned-off-by: William Henderson \u003cwilliam.henderson@nutanix.com\u003e\r\nReviewed-by: Thanos Makatos \u003cthanos.makatos@nutanix.com\u003e"
    },
    {
      "commit": "728da2b9e37bc507f910652bbe09b9bbe1f5a37c",
      "tree": "813755594b8f6ff9b0d809efce0f6c6a8ab6ae04",
      "parents": [
        "74e7348f253c04d43c11082c83f2a51720c7643e"
      ],
      "author": {
        "name": "Axel PASCON",
        "email": "93100011+brvtalcake@users.noreply.github.com",
        "time": "Wed Jun 21 14:30:25 2023 +0200"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed Jun 21 13:30:25 2023 +0100"
      },
      "message": "Fix some python tests (#737)\n\nReviewed-by: Thanos Makatos \u003cthanos.makatos@nutanix.com\u003e"
    },
    {
      "commit": "74e7348f253c04d43c11082c83f2a51720c7643e",
      "tree": "f6f24b896e9846c36b9a688f3a8c2caab3d3d7d8",
      "parents": [
        "e817d2e67835a80761fd33c4a1ed445c3309f3e7"
      ],
      "author": {
        "name": "limiao-intel",
        "email": "105205746+limiao-intel@users.noreply.github.com",
        "time": "Fri Jun 09 04:51:04 2023 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu Jun 08 21:51:04 2023 +0100"
      },
      "message": "fix err/req irq fd issue (#731)\n\nWhen handle_device_set_irqs set err irq/req irq, fd will be filled\r\nin vfu_ctx-\u003eirqs-\u003eefds[] rather than vfu_ctx-\u003eirqs-\u003eerr_efd or\r\nvfu_ctx-\u003eirqs-\u003ereq_efd. This patch adds irq index judgment before\r\nfilling in fd to make sure fd is filled in the correct place.\r\n\r\nSigned-off-by: Miao Li \u003cmiao.li@intel.com\u003e\r\nReviewed-by: John Levon \u003cjohn.levon@nutanix.com\u003e\r\nReviewed-by: Thanos Makatos \u003cthanos.makatos@nutanix.com\u003e"
    },
    {
      "commit": "e817d2e67835a80761fd33c4a1ed445c3309f3e7",
      "tree": "c63fe6c2bc956d241c968d6d697b4843a8de7aa1",
      "parents": [
        "9fc7cc262f4bf6ae09af82efe59cbea7f7e330d7"
      ],
      "author": {
        "name": "Jim Harris",
        "email": "james.r.harris@intel.com",
        "time": "Wed May 24 01:46:52 2023 -0700"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed May 24 09:46:52 2023 +0100"
      },
      "message": "test: don\u0027t leave global pointing to stack memory (#735)\n\ntest_device_is_stopped_and_copying points the global\r\nvfu_ctx structure to a local stack-allocated data\r\nstructure.  This is fine while the function is\r\nexecuting, but newer gcc complains that the\r\npointer is left there after it returns.\r\n\r\nSo clear the pointer to NULL before returning.\r\n\r\nFixes issue #734.\r\n\r\nReported-by: Kamil Godzwon \u003ckamilx.godzwon@intel.com\u003e\r\nSigned-off-by: Jim Harris \u003cjames.r.harris@intel.com\u003e"
    },
    {
      "commit": "9fc7cc262f4bf6ae09af82efe59cbea7f7e330d7",
      "tree": "c86b8c905c79e0bb0c393ecedeac9c084176b949",
      "parents": [
        "3eb7ff6579740a5b962c1a52804b0ec5b29a4c42"
      ],
      "author": {
        "name": "Thanos Makatos",
        "email": "thanos.makatos@nutanix.com",
        "time": "Wed Jan 04 16:36:43 2023 +0000"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed Jan 04 16:36:43 2023 +0000"
      },
      "message": "allow -1 file descriptor for ioregionfd (#727)\n\nSigned-off-by: Thanos Makatos \u003cthanos.makatos@nutanix.com\u003e\r\nReviewed-by: John Levon \u003cjohn.levon@nutanix.com\u003e"
    },
    {
      "commit": "3eb7ff6579740a5b962c1a52804b0ec5b29a4c42",
      "tree": "f7a519153645a4560eae19e3e9843adafef3cd9c",
      "parents": [
        "ad96efb02c27ec22116fb5800b48a6c9df27958f"
      ],
      "author": {
        "name": "John Levon",
        "email": "john.levon@nutanix.com",
        "time": "Tue Jan 03 12:23:43 2023 +0000"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Jan 03 12:23:43 2023 +0000"
      },
      "message": "fix FLR reset callback (#729)\n\nA reset callback is allowed to call functions disallowed in quiescent\nstate. However, the FLR reset path neglected to account for this\nproperly, causing an incorrect assert to be triggered if, for example,\nvfu_sgl_put() is called. To fix this, make sure all reset paths go\nthrough call_reset_cb().\n\nSigned-off-by: John Levon \u003cjohn.levon@nutanix.com\u003e\nReviewed-by: Thanos Makatos \u003cthanos.makatos@nutanix.com\u003e\n"
    },
    {
      "commit": "ad96efb02c27ec22116fb5800b48a6c9df27958f",
      "tree": "1ee09144ba4fa70c248c6b4bd15434f54174def8",
      "parents": [
        "6756ee83f8c86d0f844b2dec2cb034b379951e2d"
      ],
      "author": {
        "name": "Ville Skyttä",
        "email": "ville.skytta@iki.fi",
        "time": "Sun Jan 01 18:57:11 2023 +0200"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Sun Jan 01 16:57:11 2023 +0000"
      },
      "message": "test: use `grep -E` instead of `egrep` (#728)\n\n`egrep` has been deprecated in GNU grep since 2007,\r\nand since 3.8 it emits obsolescence warnings:\r\nhttps://git.savannah.gnu.org/cgit/grep.git/commit/?id\u003da9515624709865d480e3142fd959bccd1c9372d1\r\n\r\nSigned-off-by: Ville Skyttä \u003cville.skytta@iki.fi\u003e"
    },
    {
      "commit": "6756ee83f8c86d0f844b2dec2cb034b379951e2d",
      "tree": "a7176ceb24815d140499189b23fbfcdccdc18227",
      "parents": [
        "360f6a6795a94d81b036c13a08595db944c1904c"
      ],
      "author": {
        "name": "Thanos Makatos",
        "email": "thanos.makatos@nutanix.com",
        "time": "Tue Nov 22 15:51:10 2022 +0000"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Nov 22 15:51:10 2022 +0000"
      },
      "message": "shadow ioeventfd: add demo (#722)\n\nSigned-off-by: Thanos Makatos \u003cthanos.makatos@nutanix.com\u003e\r\nReviewed-by: John Levon \u003cjohn.levon@nutanix.com\u003e"
    },
    {
      "commit": "360f6a6795a94d81b036c13a08595db944c1904c",
      "tree": "f26893500e120dd676204ae0ff6eafaf7720d304",
      "parents": [
        "229a1ea318a6604c46f8404d3c61802b3421421c"
      ],
      "author": {
        "name": "Thanos Makatos",
        "email": "thanos.makatos@nutanix.com",
        "time": "Tue Nov 22 15:01:36 2022 +0000"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Nov 22 15:01:36 2022 +0000"
      },
      "message": "vfu_pci_init: initialize PCI config space flags (#724)\n\nvfu_pci_init() sets the size of the PCI config space but not the flags;\r\nvfu_realize_ctx() won\u0027t initialize the flags since the size if already\r\nset. vfu_pci_init() must initialize flags as well.\r\n\r\nSigned-off-by: Thanos Makatos \u003cthanos.makatos@nutanix.com\u003e\r\nReviewed-by: John Levon \u003cjohn.levon@nutanix.com\u003e"
    },
    {
      "commit": "229a1ea318a6604c46f8404d3c61802b3421421c",
      "tree": "cb4cd3898ea71f76f8549ada835f2c750c9a8fd7",
      "parents": [
        "ff68d2e40fca63868c1fd046ad831522583ef9f4"
      ],
      "author": {
        "name": "Thanos Makatos",
        "email": "thanos.makatos@nutanix.com",
        "time": "Tue Nov 22 14:23:34 2022 +0000"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Nov 22 14:23:34 2022 +0000"
      },
      "message": "add debugging to handle_device_get_region_io_fds (#723)\n\nSigned-off-by: Thanos Makatos \u003cthanos.makatos@nutanix.com\u003e\r\nReviewed-by: John Levon \u003cjohn.levon@nutanix.com\u003e"
    },
    {
      "commit": "ff68d2e40fca63868c1fd046ad831522583ef9f4",
      "tree": "15017808e5a7f5882b652012eb064c64e7b3fbd6",
      "parents": [
        "14c0bc58e7278271ba22e6d31480da550db69a0c"
      ],
      "author": {
        "name": "Thanos Makatos",
        "email": "thanos.makatos@nutanix.com",
        "time": "Tue Nov 22 13:11:54 2022 +0000"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Nov 22 13:11:54 2022 +0000"
      },
      "message": "fix shadow ioeventfd unit test (#726)\n\nSigned-off-by: Thanos Makatos \u003cthanos.makatos@nutanix.com\u003e\r\nReviewed-by: John Levon \u003cjohn.levon@nutanix.com\u003e"
    },
    {
      "commit": "14c0bc58e7278271ba22e6d31480da550db69a0c",
      "tree": "3c71a37a030e0ece5dfa81f92041d6327032f53a",
      "parents": [
        "b975ee6e184884b63c654d2414f013c645c8a92e"
      ],
      "author": {
        "name": "Thanos Makatos",
        "email": "thanos.makatos@nutanix.com",
        "time": "Tue Nov 22 09:10:27 2022 +0000"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Nov 22 09:10:27 2022 +0000"
      },
      "message": "allow shadow memory offset per shadow ioeventfd (#703)\n\nSigned-off-by: Thanos Makatos \u003cthanos.makatos@nutanix.com\u003e\r\nReviewed-by: John Levon \u003cjohn.levon@nutanix.com\u003e"
    },
    {
      "commit": "b975ee6e184884b63c654d2414f013c645c8a92e",
      "tree": "cf611fa145553e5eafe828d621ed111304c3c6a0",
      "parents": [
        "388db3c4801b00f49befa3a2d0fb497fa90d58ce"
      ],
      "author": {
        "name": "John Levon",
        "email": "john.levon@nutanix.com",
        "time": "Wed Nov 16 09:50:34 2022 +0000"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed Nov 16 09:50:34 2022 +0000"
      },
      "message": "check spelling (#720)\n\nUse misspell-fixer if available, and correct the small number of errors\nit found. Rather than trying to install into the CI, run it directly from a\ngithub action.\n\nSigned-off-by: John Levon \u003cjohn.levon@nutanix.com\u003e\nReviewed-by: Swapnil Ingle \u003cswapnil.ingle@nutanix.com\u003e\nReviewed-by: Thanos Makatos \u003cthanos.makatos@nutanix.com\u003e\n"
    },
    {
      "commit": "388db3c4801b00f49befa3a2d0fb497fa90d58ce",
      "tree": "b874b1305e865b0ccc4c9769c3d9e83e1abfe351",
      "parents": [
        "1980f9d9a9e42154382f1b8970f28ca9e2c71edb"
      ],
      "author": {
        "name": "Thanos Makatos",
        "email": "thanos.makatos@nutanix.com",
        "time": "Wed Oct 05 16:18:06 2022 +0100"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed Oct 05 16:18:06 2022 +0100"
      },
      "message": "add some unlikely (#717)\n\nSigned-off-by: Thanos Makatos \u003cthanos.makatos@nutanix.com\u003e\r\nReviewed-by: John Levon \u003cjohn.levon@nutanix.com\u003e"
    },
    {
      "commit": "1980f9d9a9e42154382f1b8970f28ca9e2c71edb",
      "tree": "ebf54a49c671fc419217d79b984ed0935d82a4ca",
      "parents": [
        "7e91fd213bd25a704783a47c2207f508db2250c1"
      ],
      "author": {
        "name": "Thanos Makatos",
        "email": "thanos.makatos@nutanix.com",
        "time": "Wed Oct 05 15:34:28 2022 +0100"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed Oct 05 15:34:28 2022 +0100"
      },
      "message": "only call debug_region_access if in debug mode (#716)\n\nSigned-off-by: Thanos Makatos \u003cthanos.makatos@nutanix.com\u003e\r\nReviewed-by: John Levon \u003cjohn.levon@nutanix.com\u003e"
    },
    {
      "commit": "7e91fd213bd25a704783a47c2207f508db2250c1",
      "tree": "b98487b9179f9d11d939970972be0cf509e67d74",
      "parents": [
        "aa19ba90f73c9b456a03a03d0d453e79fd8cf2d9"
      ],
      "author": {
        "name": "Thanos Makatos",
        "email": "thanos.makatos@nutanix.com",
        "time": "Wed Oct 05 14:57:21 2022 +0100"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed Oct 05 14:57:21 2022 +0100"
      },
      "message": "don\u0027t duplicate FD in get region info (#715)\n\nThis is out of spec.\r\n\r\nSigned-off-by: Thanos Makatos \u003cthanos.makatos@nutanix.com\u003e\r\nReviewed-by: John Levon \u003cjohn.levon@nutanix.com\u003e"
    },
    {
      "commit": "aa19ba90f73c9b456a03a03d0d453e79fd8cf2d9",
      "tree": "933e141b0490f443cd653954f92fd39fd24f69c3",
      "parents": [
        "87c216d9492476c28eb306b8f4ba22a1269849cf"
      ],
      "author": {
        "name": "Thanos Makatos",
        "email": "thanos.makatos@nutanix.com",
        "time": "Tue Oct 04 12:35:12 2022 +0100"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Oct 04 12:35:12 2022 +0100"
      },
      "message": "fix compilation for i386 and ppc64 (#709)\n\nSigned-off-by: Thanos Makatos \u003cthanos.makatos@nutanix.com\u003e\r\nReviewed-by: John Levon \u003cjohn.levon@nutanix.com\u003e\r\nReported-by: Eduardo Lima \u003ceblima@gmail.com\u003e"
    },
    {
      "commit": "87c216d9492476c28eb306b8f4ba22a1269849cf",
      "tree": "3d5a64867a8c70e07530c6d017d521cf4ca4dfd6",
      "parents": [
        "4953810d0d5cb4d8b1e8ff10dbd9e51af8e94897"
      ],
      "author": {
        "name": "Thanos Makatos",
        "email": "thanos.makatos@nutanix.com",
        "time": "Mon Oct 03 11:40:04 2022 +0100"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Oct 03 11:40:04 2022 +0100"
      },
      "message": "document how to run individual Python unit tests (#712)\n\nSigned-off-by: Thanos Makatos \u003cthanos.makatos@nutanix.com\u003e\r\nReviewed-by: John Levon \u003cjohn.levon@nutanix.com\u003e"
    },
    {
      "commit": "4953810d0d5cb4d8b1e8ff10dbd9e51af8e94897",
      "tree": "65d1aa1c2e7a0855fba0d73f56cdbad3b0bb84a6",
      "parents": [
        "a511dd988f5e05c5eebfadb823ef2ff6fe2d7379"
      ],
      "author": {
        "name": "John Levon",
        "email": "john.levon@nutanix.com",
        "time": "Thu Aug 18 12:54:49 2022 +0100"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu Aug 18 12:54:49 2022 +0100"
      },
      "message": "make SGL error-checking DEBUG-only (#706)\n\nAs vfu_addr_to_sgl() and co are on the hot path, compile out these\nsanity checks for non-DEBUG builds.\n\nSigned-off-by: John Levon \u003cjohn.levon@nutanix.com\u003e\nReviewed-by: Swapnil Ingle \u003cswapnil.ingle@nutanix.com\u003e\n"
    },
    {
      "commit": "a511dd988f5e05c5eebfadb823ef2ff6fe2d7379",
      "tree": "4403a1edb85b7dd5347beb4e1b051cedd6845382",
      "parents": [
        "ff0ef3fb1ed7b206d0586071a88778110b245582"
      ],
      "author": {
        "name": "John Levon",
        "email": "john.levon@nutanix.com",
        "time": "Thu Aug 18 10:58:58 2022 +0100"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu Aug 18 10:58:58 2022 +0100"
      },
      "message": "avoid vfu_log() in SGL hot path (#705)\n\nEven though in non-debug, we don\u0027t actually log anything here, even\nassembling the arguments to vfu_log() has a performance impact. Hide\nthem behind a DEBUG_SGL define - even in a DEBUG build, they are\nparticularly noisy and low-value.\n\nSigned-off-by: John Levon \u003cjohn.levon@nutanix.com\u003e\nReviewed-by: Swapnil Ingle \u003cswapnil.ingle@nutanix.com\u003e\n"
    },
    {
      "commit": "ff0ef3fb1ed7b206d0586071a88778110b245582",
      "tree": "06abf5d247c137dcfa45231f286bd1518d1e1ab7",
      "parents": [
        "1305f161b7e0dd2c2a420c17efcb0bd49b94dad4"
      ],
      "author": {
        "name": "Thanos Makatos",
        "email": "thanos.makatos@nutanix.com",
        "time": "Mon Aug 08 11:39:32 2022 +0100"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Aug 08 11:39:32 2022 +0100"
      },
      "message": "delete socket on vfu_ctx_destroy (#702)\n\nfixes #660\n\nSigned-off-by: Thanos Makatos \u003cthanos.makatos@nutanix.com\u003e\nReviewed-by: John Levon \u003cjohn.levon@nutanix.com\u003e\nReviewed-by: Swapnil Ingle \u003cswapnil.ingle@nutanix.com\u003e\n"
    },
    {
      "commit": "1305f161b7e0dd2c2a420c17efcb0bd49b94dad4",
      "tree": "8953b2b7ac5144e3535d9d803aca2015a5305532",
      "parents": [
        "36beb63be45ad1412562a98d9373a4c0bd91ab3d"
      ],
      "author": {
        "name": "John Levon",
        "email": "john.levon@nutanix.com",
        "time": "Thu Jul 21 11:37:22 2022 +0100"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu Jul 21 11:37:22 2022 +0100"
      },
      "message": "disable client-server test by default (#700)\n\nThis test is flaky: there is some kind of race that causes the test to\nhang. Now we are run as part of qemu CI, we need to disable this by\ndefault, until we can find time to fix the test.\n\nSigned-off-by: John Levon \u003cjohn.levon@nutanix.com\u003e\nReviewed-by: Swapnil Ingle \u003cswapnil.ingle@nutanix.com\u003e\n"
    },
    {
      "commit": "36beb63be45ad1412562a98d9373a4c0bd91ab3d",
      "tree": "61bb44f0befc0055292b120909251c0fc2d27b0e",
      "parents": [
        "1c274027bb4f9d68eee846036e8d50dcde2fd7e9"
      ],
      "author": {
        "name": "Thanos Makatos",
        "email": "thanos.makatos@nutanix.com",
        "time": "Mon Jul 04 12:16:08 2022 +0100"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Jul 04 12:16:08 2022 +0100"
      },
      "message": "support for shadow ioeventfd (#698)\n\nWhen an ioeventfd is written to, KVM discards the value since it has no\r\nmemory to write it to, and simply kicks the eventfd. This a problem for\r\ndevices such a NVMe controllers that need the value (e.g. doorbells on\r\nBAR0). This patch allows the vfio-user server to pass a file descriptor\r\nthat can be mmap\u0027ed and KVM can write the ioeventfd value to this\r\n_shadow_ memory instead of discarding it. This shadow memory is not\r\nexposed to the guest.\r\n\r\nSigned-off-by: Thanos Makatos \u003cthanos.makatos@nutanix.com\u003e\r\nReviewed-by: John Levon \u003cjohn.levon@nutanix.com\u003e\r\nChange-Id: Iad849c94076ffa5988e034c8bf7ec312d01f095f"
    },
    {
      "commit": "1c274027bb4f9d68eee846036e8d50dcde2fd7e9",
      "tree": "f4f2a6603769ba89325d41658b70f4339167194f",
      "parents": [
        "0b28d205572c80b568a1003db2c8f37ca333e4d7"
      ],
      "author": {
        "name": "John Levon",
        "email": "john.levon@nutanix.com",
        "time": "Thu Jun 16 11:00:51 2022 +0100"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu Jun 16 11:00:51 2022 +0100"
      },
      "message": "improve README.md (#696)\n\nRe-organize the README so it flows better, and make several\nfixes/improvements.\n\nSigned-off-by: John Levon \u003cjohn.levon@nutanix.com\u003e\nReviewed-by: Thanos Makatos \u003cthanos.makatos@nutanix.com\u003e\n"
    },
    {
      "commit": "0b28d205572c80b568a1003db2c8f37ca333e4d7",
      "tree": "3d0f6129c9faf7b966f24a71cb9ccc9a954ddbe7",
      "parents": [
        "9a5124df49efed644f0db7e573ebd0367df480cd"
      ],
      "author": {
        "name": "Jag Raman",
        "email": "jag.raman@oracle.com",
        "time": "Thu Jun 09 14:48:09 2022 -0400"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu Jun 09 19:48:09 2022 +0100"
      },
      "message": "test/py: fix the arguments for vfu_dev_irq_state_cb_t (#695)\n\nThere is a typo in the arguments for vfu_dev_irq_state_cb_t - fix it in\nthis patch.\n\nSigned-off-by: Jagannathan Raman \u003cjag.raman@oracle.com\u003e\nReviewed-by: John Levon \u003cjohn.levon@nutanix.com\u003e\n"
    },
    {
      "commit": "9a5124df49efed644f0db7e573ebd0367df480cd",
      "tree": "479b95fe2ef9eeda2997e16ef69ec10d60275180",
      "parents": [
        "a767ebd126157c4aa55ff0fe5786681507fb7ea8"
      ],
      "author": {
        "name": "John Levon",
        "email": "john.levon@nutanix.com",
        "time": "Thu Jun 09 13:32:49 2022 +0100"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu Jun 09 13:32:49 2022 +0100"
      },
      "message": "report function in quiesce_check_allowed() (#693)\n\nSigned-off-by: John Levon \u003cjohn.levon@nutanix.com\u003e\nReviewed-by: Swapnil Ingle \u003cswapnil.ingle@nutanix.com\u003e\n"
    },
    {
      "commit": "a767ebd126157c4aa55ff0fe5786681507fb7ea8",
      "tree": "6876e347860a2ab1871d0e413312fe507fd006d6",
      "parents": [
        "d307dbcab74aef3680ba99d7f836f2bc0b4bc81e"
      ],
      "author": {
        "name": "Jag Raman",
        "email": "jag.raman@oracle.com",
        "time": "Tue Jun 07 16:21:40 2022 -0400"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Jun 07 21:21:40 2022 +0100"
      },
      "message": "irq: inform device of IRQ mask \u0026 unmask via callback (#694)\n\nClient masks or unmasks a device IRQ using the\nVFIO_USER_DEVICE_SET_IRQS message. Inform the device of such changes to\nthe IRQ state.\n\nSigned-off-by: Jagannathan Raman \u003cjag.raman@oracle.com\u003e\nReviewed-by: John Levon \u003cjohn.levon@nutanix.com\u003e\n"
    },
    {
      "commit": "d307dbcab74aef3680ba99d7f836f2bc0b4bc81e",
      "tree": "532f856b6fa3c1bacca24ed37c26584c7d5a964b",
      "parents": [
        "e036ac145acea1a5aa77879e978ac2fff909a657"
      ],
      "author": {
        "name": "John Levon",
        "email": "john.levon@nutanix.com",
        "time": "Mon May 30 22:30:13 2022 +0100"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon May 30 22:30:13 2022 +0100"
      },
      "message": "allow all LOG_* levels (#691)\n\nWhile libvfio-user doesn\u0027t use them all, at least SPDK was expecting to\nbe able to set LOG_NOTICE level, and silently failing. There\u0027s no reason\nwe can\u0027t support any valid syslog level.\n\nSigned-off-by: John Levon \u003cjohn.levon@nutanix.com\u003e\nReviewed-by: Swapnil Ingle \u003cswapnil.ingle@nutanix.com\u003e\n"
    },
    {
      "commit": "e036ac145acea1a5aa77879e978ac2fff909a657",
      "tree": "1f0837b4c79feb97aa642d4e505e3d64012896d7",
      "parents": [
        "79e83e482d4eb0b7a07cfa207506d33edf05d04b"
      ],
      "author": {
        "name": "John Levon",
        "email": "john.levon@nutanix.com",
        "time": "Mon May 30 09:41:32 2022 +0100"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon May 30 09:41:32 2022 +0100"
      },
      "message": "allow concurrent dirty bitmap get (#677)\n\nUse atomic operations to allow concurrent bitmap updates with\nVFIO_IOMMU_DIRTY_PAGES_FLAG_GET_BITMAP operations.\n\nDirtying clients can race against each other, so we must use atomic or\nwhen marking dirty: we do this byte-by-byte.\n\nWhen reading the dirty bitmap, we must be careful to not race and lose\nany set bits within the same byte. If we miss an update, we\u0027ll catch it\nthe next time around, presuming that before the final pass we\u0027ll have\nquiesced all I/O.\n\nSigned-off-by: John Levon \u003cjohn.levon@nutanix.com\u003e\nReviewed-by: Raphael Norwitz \u003craphael.norwitz@nutanix.com\u003e\nReviewed-by: Thanos Makatos \u003cthanos.makatos@nutanix.com\u003e\n"
    },
    {
      "commit": "79e83e482d4eb0b7a07cfa207506d33edf05d04b",
      "tree": "a5be09b69f9000bddb55a1d729071398c59a62c1",
      "parents": [
        "188cd00c520855615331d35c087a22215767b8fb"
      ],
      "author": {
        "name": "John Levon",
        "email": "john.levon@nutanix.com",
        "time": "Fri May 27 19:17:28 2022 +0100"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Fri May 27 19:17:28 2022 +0100"
      },
      "message": "add some documentation on memory handling (#676)\n\nCover briefly how to access client memory.\n\nSigned-off-by: John Levon \u003cjohn.levon@nutanix.com\u003e\nReviewed-by: Raphael Norwitz \u003craphael.norwitz@nutanix.com\u003e\nReviewed-by: Thanos Makatos \u003cthanos.makatos@nutanix.com\u003e\n"
    },
    {
      "commit": "188cd00c520855615331d35c087a22215767b8fb",
      "tree": "8bda987bcdeb1c8cf0751dbe190a28aef2609272",
      "parents": [
        "538d6063c9f8d395e1d38285ddfe405c3fcd7619"
      ],
      "author": {
        "name": "John Levon",
        "email": "john.levon@nutanix.com",
        "time": "Fri May 27 19:06:31 2022 +0100"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Fri May 27 19:06:31 2022 +0100"
      },
      "message": "re-work SGL API (#675)\n\nHarmonize and rename the vfu_*sg() APIs to better reflect their functionality:\nin our case, there is no mapping happening as part of these calls, they are\nmerely housekeeping for range splitting, dirty tracking, and so on.\n\nSigned-off-by: John Levon \u003cjohn.levon@nutanix.com\u003e\nReviewed-by: Thanos Makatos \u003cthanos.makatos@nutanix.com\u003e\n"
    },
    {
      "commit": "538d6063c9f8d395e1d38285ddfe405c3fcd7619",
      "tree": "96afbcf64f70916966744d3422a113b81e1c21ba",
      "parents": [
        "065c33e7dc7bbd1d5964a5a3af173a69ad3ee931"
      ],
      "author": {
        "name": "John Levon",
        "email": "john.levon@nutanix.com",
        "time": "Fri May 27 17:29:32 2022 +0100"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Fri May 27 17:29:32 2022 +0100"
      },
      "message": "remove maps list from DMA controller (#674)\n\n-\u003emaps existed so that if a consumer does vfu_map_sg() and then we are asked to\nenable dirty page tracking, we won\u0027t mark those pages as dirty, and will hence\npotentially lose data.\n\nNow that we require quiesce and the use of either vfu_unmap_sg() or\nvfu_sg_mark_dirty(), there\u0027s no need to have this list any more.\n\nSigned-off-by: John Levon \u003cjohn.levon@nutanix.com\u003e\nReviewed-by: Thanos Makatos \u003cthanos.makatos@nutanix.com\u003e\n"
    },
    {
      "commit": "065c33e7dc7bbd1d5964a5a3af173a69ad3ee931",
      "tree": "d629dc61d6ac7f966ab3983951121f307999f9c5",
      "parents": [
        "54b7ef99497b2a4aa703a33342b54c76a709b0fe"
      ],
      "author": {
        "name": "John Levon",
        "email": "john.levon@nutanix.com",
        "time": "Fri May 27 12:54:26 2022 +0100"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Fri May 27 12:54:26 2022 +0100"
      },
      "message": "remove refcnt from region (#673)\n\nThe reference count is unused, and not atomically handled, remove it.\n\nSigned-off-by: John Levon \u003cjohn.levon@nutanix.com\u003e\nReviewed-by: Thanos Makatos \u003cthanos.makatos@nutanix.com\u003e\n"
    },
    {
      "commit": "54b7ef99497b2a4aa703a33342b54c76a709b0fe",
      "tree": "726c6f38b8eeb23a28cf194afca0f39117aa034a",
      "parents": [
        "c985a9a53656b50063cf2de1b29e40e02b47f415"
      ],
      "author": {
        "name": "John Levon",
        "email": "john.levon@nutanix.com",
        "time": "Fri May 27 11:25:53 2022 +0100"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Fri May 27 11:25:53 2022 +0100"
      },
      "message": "re-work SG dirty tracking (#672)\n\nMove SG dirtying to vfu_unmap_sg(): as we don\u0027t want to track SGs\nourselves, doing this in vfu_map_sg() is no longer the right place.\n\nNote that the lack of tracking implies that any SGs must be unmapped\nbefore the final stop and copy phase. To avoid the need for this, add\nvfu_mark_sg_dirty(): this allows a consumer to mark a region as dirty\nexplicitly without needing to unmap it. Currently it\u0027s the same as\nvfu_unmap_sg(), but that\u0027s an implementation detail.\n\nNote this still marks current maps after a get operation; that will\nchange subsequently.\n\nSigned-off-by: John Levon \u003cjohn.levon@nutanix.com\u003e\nReviewed-by: Thanos Makatos \u003cthanos.makatos@nutanix.com\u003e\n"
    }
  ],
  "next": "c985a9a53656b50063cf2de1b29e40e02b47f415"
}
