)]}'
{
  "log": [
    {
      "commit": "a0eab49a8876ad29a200ce688d1055b566c69b38",
      "tree": "5089fb13f173a856c4f2da6898ceddac85faa540",
      "parents": [
        "74c5e7b2bee69372c63e1a48e7e05ceb81a6ea2c"
      ],
      "author": {
        "name": "Dave Martin",
        "email": "Dave.Martin@arm.com",
        "time": "Fri Jun 07 12:26:29 2019 +0100"
      },
      "committer": {
        "name": "Will Deacon",
        "email": "will@kernel.org",
        "time": "Fri Nov 22 17:48:09 2019 +0000"
      },
      "message": "arm64: Add SVE support\n\nThis patch enables the Scalable Vector Extension for the guest when\nthe host supports it.\n\nThis requires use of the new KVM_ARM_VCPU_FINALIZE ioctl before the\nvcpu is runnable, so a new hook kvm_cpu__configure_features() is\nadded to provide an appropriate place to do this work.\n\nSigned-off-by: Dave Martin \u003cDave.Martin@arm.com\u003e\nSigned-off-by: Will Deacon \u003cwill@kernel.org\u003e\n"
    },
    {
      "commit": "74c5e7b2bee69372c63e1a48e7e05ceb81a6ea2c",
      "tree": "991152ca38fe6a4d18fe5b687621125be8a4e61e",
      "parents": [
        "254cb189b31e326bbd6f0cf30e9a95c24231c15b"
      ],
      "author": {
        "name": "Dave Martin",
        "email": "Dave.Martin@arm.com",
        "time": "Fri Jun 07 12:26:28 2019 +0100"
      },
      "committer": {
        "name": "Will Deacon",
        "email": "will@kernel.org",
        "time": "Fri Nov 22 17:48:09 2019 +0000"
      },
      "message": "arm/arm64: Factor out ptrauth vcpu feature setup\n\nIn the interest of readability, factor out the vcpu feature setup\nfor ptrauth into a separate function.\n\nAlso, because aarch32 doesn\u0027t have this feature or the related\ncommand line options anyway, move the actual code into aarch64/.\n\nSince ARM_VCPU_PTRAUTH_FEATURE is only there to make the ptrauth\nfeature setup code compile on arm, it is no longer needed: inline\nand remove it.\n\nSigned-off-by: Dave Martin \u003cDave.Martin@arm.com\u003e\nSigned-off-by: Will Deacon \u003cwill@kernel.org\u003e\n"
    },
    {
      "commit": "254cb189b31e326bbd6f0cf30e9a95c24231c15b",
      "tree": "e56a5f8025cff158aa6c9c24912322200381fbd8",
      "parents": [
        "66b24a334dacdeb431cc36ddd23811252623a5a2"
      ],
      "author": {
        "name": "Amit Daniel Kachhap",
        "email": "amit.kachhap@arm.com",
        "time": "Fri Jun 07 12:26:26 2019 +0100"
      },
      "committer": {
        "name": "Will Deacon",
        "email": "will@kernel.org",
        "time": "Fri Nov 22 17:48:01 2019 +0000"
      },
      "message": "KVM: arm/arm64: Add a vcpu feature for pointer authentication\n\nThis patch adds a runtime capabality for KVM tool to enable Arm64 8.3\nPointer Authentication in guest kernel. Two vcpu features\nKVM_ARM_VCPU_PTRAUTH_[ADDRESS/GENERIC] are supplied together to enable\nPointer Authentication in KVM guest after checking the capability.\n\nReviewed-by: Andre Przywara \u003candre.przywara@arm.com\u003e\nSigned-off-by: Amit Daniel Kachhap \u003camit.kachhap@arm.com\u003e\nSigned-off-by: Dave Martin \u003cDave.Martin@arm.com\u003e [merge new kernel heaers]\nSigned-off-by: Will Deacon \u003cwill@kernel.org\u003e\n"
    },
    {
      "commit": "66b24a334dacdeb431cc36ddd23811252623a5a2",
      "tree": "e39cc06853c2596394f3ee86bc6397b2fb4cbbcb",
      "parents": [
        "207fb981dc220934d136d025579ffb19c420c474"
      ],
      "author": {
        "name": "Will Deacon",
        "email": "will@kernel.org",
        "time": "Fri Nov 22 16:36:55 2019 +0000"
      },
      "committer": {
        "name": "Will Deacon",
        "email": "will@kernel.org",
        "time": "Fri Nov 22 16:36:55 2019 +0000"
      },
      "message": "update_headers: Sync kvm UAPI headers with Linux 5.3\n\nWe\u0027re going to need updated headers for arm64 SVE and ptrauth support.\n\nSigned-off-by: Will Deacon \u003cwill@kernel.org\u003e\n"
    },
    {
      "commit": "207fb981dc220934d136d025579ffb19c420c474",
      "tree": "1b2b33459ebbb0ce423e30d6487323c59bcfec85",
      "parents": [
        "51645dd54de52fac9ef6f80cd872a86e38010e07"
      ],
      "author": {
        "name": "Will Deacon",
        "email": "will@kernel.org",
        "time": "Thu Oct 10 15:20:03 2019 +0100"
      },
      "committer": {
        "name": "Will Deacon",
        "email": "will@kernel.org",
        "time": "Fri Oct 25 11:52:19 2019 +0100"
      },
      "message": "virtio: Ensure virt_queue is always initialised\n\nFailing to initialise the virt_queue via virtio_init_device_vq() leaves,\namongst other things, the endianness unspecified. On arm/arm64 this\nresults in virtio_guest_to_host_uxx() treating the queue as big-endian\nand trying to translate bogus addresses:\n\n  Warning: unable to translate guest address 0x80b8249800000000 to host\n\nEnsure the virt_queue is always initialised by the virtio device during\nsetup.\n\nCc: Marc Zyngier \u003cmaz@kernel.org\u003e\nCc: Julien Thierry \u003cjulien.thierry.kdev@gmail.com\u003e\nReviewed-by: Andre Przywara \u003candre.przywara@arm.com\u003e\nTested-by: Andre Przywara \u003candre.przywara@arm.com\u003e\nSigned-off-by: Will Deacon \u003cwill@kernel.org\u003e\n"
    },
    {
      "commit": "51645dd54de52fac9ef6f80cd872a86e38010e07",
      "tree": "ec1c84bfaf9459f1352976845ac0e11371b35528",
      "parents": [
        "292435bc389dd388790ab4793ec06890e0cfca2b"
      ],
      "author": {
        "name": "Julien Thierry",
        "email": "julien.thierry.kdev@gmail.com",
        "time": "Fri Aug 02 08:29:57 2019 +0100"
      },
      "committer": {
        "name": "Will Deacon",
        "email": "will@kernel.org",
        "time": "Fri Aug 02 10:12:16 2019 +0100"
      },
      "message": "README: Update my email address\n\nMy @arm.com address is gonna stop working. Update README information\nwith an address people can use to actually reach me.\n\nSigned-off-by: Julien Thierry \u003cjulien.thierry.kdev@gmail.com\u003e\nSigned-off-by: Will Deacon \u003cwill@kernel.org\u003e\n"
    },
    {
      "commit": "292435bc389dd388790ab4793ec06890e0cfca2b",
      "tree": "1ee3a02ea30c6a53841cba424de929517cd82c44",
      "parents": [
        "9f520be560cba627e30b5193697f506f69afc861"
      ],
      "author": {
        "name": "Dave Martin",
        "email": "Dave.Martin@arm.com",
        "time": "Fri Jun 07 12:26:24 2019 +0100"
      },
      "committer": {
        "name": "Will Deacon",
        "email": "will.deacon@arm.com",
        "time": "Wed Jul 03 10:34:05 2019 +0100"
      },
      "message": "update_headers.sh: arm64: Copy sve_context.h if available\n\nThe SVE KVM support for arm64 includes the additional backend\nheader \u003casm/sve_context.h\u003e from \u003casm/kvm.h\u003e.\n\nSo update this header if it is available.\n\nTo avoid creating a sudden dependency on a specific minimum kernel\nversion, ignore such optional headers if the source kernel tree\ndoesn\u0027t have them.\n\nSigned-off-by: Dave Martin \u003cDave.Martin@arm.com\u003e\nSigned-off-by: Will Deacon \u003cwill.deacon@arm.com\u003e\n"
    },
    {
      "commit": "9f520be560cba627e30b5193697f506f69afc861",
      "tree": "abda147fca6d525d97d516c58c5832172ff4e10c",
      "parents": [
        "3baf13c790407140007025a18642f61168768fb8"
      ],
      "author": {
        "name": "Dave Martin",
        "email": "Dave.Martin@arm.com",
        "time": "Fri Jun 07 12:26:23 2019 +0100"
      },
      "committer": {
        "name": "Will Deacon",
        "email": "will.deacon@arm.com",
        "time": "Wed Jul 03 10:34:05 2019 +0100"
      },
      "message": "update_headers.sh: Cleanly report failure on error\n\nIf in intermediate step fails, update_headers.sh blindly continues\nand may return success status.\n\nTo avoid errors going unnoticed when driving this script, exit and\nreport failure status as soon as something goes wrong.  For good\nmeasure, also fail on expansion of undefined shell variables to aid\nfuture maintainers.\n\nSigned-off-by: Dave Martin \u003cDave.Martin@arm.com\u003e\nReviewed-by: Andre Przywara \u003candre.przywara@arm.com\u003e\nSigned-off-by: Will Deacon \u003cwill.deacon@arm.com\u003e\n"
    },
    {
      "commit": "3baf13c790407140007025a18642f61168768fb8",
      "tree": "d776ddfe8643cae71738c37eed1823ff98763ef6",
      "parents": [
        "534cac245102e05b3af3ea8afff382e7488984da"
      ],
      "author": {
        "name": "Dave Martin",
        "email": "Dave.Martin@arm.com",
        "time": "Fri Jun 07 12:26:22 2019 +0100"
      },
      "committer": {
        "name": "Will Deacon",
        "email": "will.deacon@arm.com",
        "time": "Wed Jul 03 10:34:05 2019 +0100"
      },
      "message": "update_headers.sh: Add missing shell quoting\n\nupdate_headers.sh can break if the current working directory has a\nfunny name or if something odd is passed for LINUX_ROOT.\n\nIn the interest of cleanliness, quote where appropriate.\n\nSigned-off-by: Dave Martin \u003cDave.Martin@arm.com\u003e\nReviewed-by: Andre Przywara \u003candre.przywara@arm.com\u003e\nSigned-off-by: Will Deacon \u003cwill.deacon@arm.com\u003e\n"
    },
    {
      "commit": "534cac245102e05b3af3ea8afff382e7488984da",
      "tree": "8508e9aaa4eed005742bbfe58634e188ac2aa13c",
      "parents": [
        "ef5b941fba75e42a1f7f0a85161c0ed4686ebeee"
      ],
      "author": {
        "name": "Will Deacon",
        "email": "will.deacon@arm.com",
        "time": "Tue Jun 18 13:44:37 2019 +0100"
      },
      "committer": {
        "name": "Will Deacon",
        "email": "will.deacon@arm.com",
        "time": "Wed Jul 03 10:27:05 2019 +0100"
      },
      "message": "README: Add maintainers section\n\nJulien has kindly offered to help maintain kvmtool, but it occurred to\nme that we don\u0027t actually provide any maintainer contact details in the\nrepository as it stands.\n\nAdd a brief \"Maintainers\" section to the README, immediately after the\n\"Contributing\" section so that people know who to nag about merging and\nreviewing patches.\n\nAcked-by: Marc Zyngier \u003cmarc.zyngier@arm.com\u003e\nAcked-by: Julien Thierry \u003cjulien.thierry@arm.com\u003e\nSigned-off-by: Will Deacon \u003cwill@kernel.org\u003e\n"
    },
    {
      "commit": "ef5b941fba75e42a1f7f0a85161c0ed4686ebeee",
      "tree": "d213d8dd0efcc13607148718bb085f9245ca50f9",
      "parents": [
        "67f9f7b70191274274c1b8fae4acece986ad202e"
      ],
      "author": {
        "name": "Andre Przywara",
        "email": "andre.przywara@arm.com",
        "time": "Fri Jun 07 18:01:21 2019 +0100"
      },
      "committer": {
        "name": "Will Deacon",
        "email": "will.deacon@arm.com",
        "time": "Mon Jun 10 13:16:25 2019 +0100"
      },
      "message": "run: Check for ghost socket file upon VM creation\n\nKvmtool creates a (debug) UNIX socket file for each VM, using its\n(possibly auto-generated) name as the filename. There is a check using\naccess(), which bails out with an error message if a socket with that\nname already exists.\n\nAside from this check being unnecessary, as the bind() call later would\ncomplain as well, this is also racy. But more annoyingly the bail out is\nnot needed most of the time: an existing socket inode is most likely just\nan orphaned leftover from a previous kvmtool run, which just failed to\nremove that file, because of a crash, for instance.\n\nUpon finding such a collision, let\u0027s first try to connect to that socket,\nto detect if there is still a kvmtool instance listening on the other\nend. If that fails, this socket will never come back to life, so we can\nsafely clean it up and reuse the name for the new guest.\nHowever if the connect() succeeds, there is an actual live kvmtool\ninstance using this name, so not proceeding is the only option.\nThis should never happen with the (PID based) automatically generated\nnames, though.\n\nThis avoids an annoying (and not helpful) error message and helps\nautomated kvmtool runs to proceed in more cases.\n\nSigned-off-by: Andre Przywara \u003candre.przywara@arm.com\u003e\nSigned-off-by: Will Deacon \u003cwill.deacon@arm.com\u003e\n"
    },
    {
      "commit": "67f9f7b70191274274c1b8fae4acece986ad202e",
      "tree": "e6655424e3e7e7a10adbb0b4d788b2e17eb19608",
      "parents": [
        "eaeaf60808d6b60fb17adbb8312039f9a7c1abe6"
      ],
      "author": {
        "name": "Andre Przywara",
        "email": "andre.przywara@arm.com",
        "time": "Fri Jun 07 18:01:20 2019 +0100"
      },
      "committer": {
        "name": "Will Deacon",
        "email": "will.deacon@arm.com",
        "time": "Mon Jun 10 13:16:25 2019 +0100"
      },
      "message": "list: Clean up ghost socket files\n\nWhen kvmtool (or the host kernel) crashes or gets killed, we cannot\nautomatically remove the socket file we created for that VM.\nA later call of \"lkvm list\" iterates over all those files and complains\nabout those \"ghost socket files\", as there is no one listening on\nthe other side. Also sometimes the automatic guest name generation\nhappens to generate the same name again, so an unrelated \"lkvm run\"\nlater complains and stops, which is bad for automation.\n\nAs the only code doing a listen() on this socket is kvmtool upon VM\n*creation*, such an orphaned socket file will never come back to life,\nso we can as well unlink() those sockets in the code. This spares the\nuser from doing it herself.\nWe keep the message in the code to notify the user of this.\n\nSigned-off-by: Andre Przywara \u003candre.przywara@arm.com\u003e\nSigned-off-by: Will Deacon \u003cwill.deacon@arm.com\u003e\n"
    },
    {
      "commit": "eaeaf60808d6b60fb17adbb8312039f9a7c1abe6",
      "tree": "6196f9cd25a09be8650030ca359d0d983ee07436",
      "parents": [
        "a3704b91cd78626ce79e8f5b163393d3396b1fc0"
      ],
      "author": {
        "name": "Andre Przywara",
        "email": "andre.przywara@arm.com",
        "time": "Fri May 03 18:15:44 2019 +0100"
      },
      "committer": {
        "name": "Will Deacon",
        "email": "will.deacon@arm.com",
        "time": "Wed May 29 15:54:56 2019 +0100"
      },
      "message": "virtio/blk: Avoid taking pointer to packed struct\n\nclang and GCC9 refuse to compile virtio/blk.c with the following message:\nvirtio/blk.c:161:37: error: taking address of packed member \u0027geometry\u0027 of class\n      or structure \u0027virtio_blk_config\u0027 may result in an unaligned pointer value\n      [-Werror,-Waddress-of-packed-member]\n        struct virtio_blk_geometry *geo \u003d \u0026conf-\u003egeometry;\n\nSince struct virtio_blk_geometry is in a kernel header, we can\u0027t do much\nabout the packed attribute, but as Peter pointed out, the solution is\nrather simple: just get rid of the convenience variable and use the\noriginal struct member directly.\n\nReviewed-by: Jean-Philippe Brucker \u003cjean-philippe.brucker@arm.com\u003e\nSuggested-by: Peter Maydell \u003cpeter.maydell@linaro.org\u003e\nSigned-off-by: Andre Przywara \u003candre.przywara@arm.com\u003e\nSigned-off-by: Will Deacon \u003cwill.deacon@arm.com\u003e\n"
    },
    {
      "commit": "a3704b91cd78626ce79e8f5b163393d3396b1fc0",
      "tree": "5efeafae656a13fd72215e396fe57487b4cae327",
      "parents": [
        "1ac5dce983fe043ad2d3432cd00a25782a89217b"
      ],
      "author": {
        "name": "Andre Przywara",
        "email": "andre.przywara@arm.com",
        "time": "Fri May 03 18:15:43 2019 +0100"
      },
      "committer": {
        "name": "Will Deacon",
        "email": "will.deacon@arm.com",
        "time": "Wed May 29 15:54:28 2019 +0100"
      },
      "message": "vfio: rework vfio_irq_set payload setting\n\nstruct vfio_irq_set from the kernel headers contains a variable sized\narray to hold a payload. The vfio_irq_eventfd struct puts the \"fd\"\nmember right after this, hoping it to automatically fit in the payload slot.\nBut having a variable sized type not at the end of a struct is a GNU C\nextension, so clang will refuse to compile this.\n\nSolve this by somewhat doing the compiler\u0027s job and place the payload\nmanually at the end of the structure.\n\nReviewed-by: Jean-Philippe Brucker \u003cjean-philippe.brucker@arm.com\u003e\nSigned-off-by: Andre Przywara \u003candre.przywara@arm.com\u003e\nSigned-off-by: Will Deacon \u003cwill.deacon@arm.com\u003e\n"
    },
    {
      "commit": "1ac5dce983fe043ad2d3432cd00a25782a89217b",
      "tree": "4e90608bbc256f80785263c1eee5bd3d7312c564",
      "parents": [
        "09533d3ccdfefc469e85bab313f4b0067bcc565f"
      ],
      "author": {
        "name": "Andre Przywara",
        "email": "andre.przywara@arm.com",
        "time": "Fri May 03 18:15:42 2019 +0100"
      },
      "committer": {
        "name": "Will Deacon",
        "email": "will.deacon@arm.com",
        "time": "Wed May 29 15:54:14 2019 +0100"
      },
      "message": "vfio: remove unneeded test\n\nclang complained that the comparison of an u8 variable against 256 is\nsomewhat pointless.\n\nJust remove the check, as the condition will never hit.\n\nSigned-off-by: Andre Przywara \u003candre.przywara@arm.com\u003e\nReviewed-by: Jean-Philippe Brucker \u003cjean-philippe.brucker@arm.com\u003e\nSigned-off-by: Will Deacon \u003cwill.deacon@arm.com\u003e\n"
    },
    {
      "commit": "09533d3ccdfefc469e85bab313f4b0067bcc565f",
      "tree": "4be03860be44ecc0c1755b177cf6027ab90606c7",
      "parents": [
        "3f218e898850902387acaa7475458b6f8bc128f2"
      ],
      "author": {
        "name": "Andre Przywara",
        "email": "andre.przywara@arm.com",
        "time": "Fri May 03 18:15:41 2019 +0100"
      },
      "committer": {
        "name": "Will Deacon",
        "email": "will.deacon@arm.com",
        "time": "Wed May 29 15:54:14 2019 +0100"
      },
      "message": "vfio: remove spurious ampersand\n\nAs clang rightfully pointed out, the ampersand in front of this member\nlooks wrong.\n\nRemove it so we actually really compare against the count being 0.\n\nSigned-off-by: Andre Przywara \u003candre.przywara@arm.com\u003e\nReviewed-by: Jean-Philippe Brucker \u003cjean-philippe.brucker@arm.com\u003e\nSigned-off-by: Will Deacon \u003cwill.deacon@arm.com\u003e\n"
    },
    {
      "commit": "3f218e898850902387acaa7475458b6f8bc128f2",
      "tree": "e45a53044576bd8e67b1184dfeb3409bf7f4bbb1",
      "parents": [
        "2790307c3d6d2aad838e1eef76ec0aa21b110698"
      ],
      "author": {
        "name": "Jean-Philippe Brucker",
        "email": "jean-philippe.brucker@arm.com",
        "time": "Thu Apr 04 14:20:50 2019 +0100"
      },
      "committer": {
        "name": "Will Deacon",
        "email": "will.deacon@arm.com",
        "time": "Fri Apr 26 14:57:59 2019 +0100"
      },
      "message": "virtio/blk: sync I/O on reset\n\nEnsure that all requests are complete when resetting a virtqueue, by\ndraining the AIO queue after stopping the submission thread.\n\nSigned-off-by: Jean-Philippe Brucker \u003cjean-philippe.brucker@arm.com\u003e\nSigned-off-by: Will Deacon \u003cwill.deacon@arm.com\u003e\n"
    },
    {
      "commit": "2790307c3d6d2aad838e1eef76ec0aa21b110698",
      "tree": "c74a0e0ba62f83d29ef7852d4b79ab53e58c3e96",
      "parents": [
        "a839180edd2b52be9fb3aa2b51b44e2fafcd65a8"
      ],
      "author": {
        "name": "Jean-Philippe Brucker",
        "email": "jean-philippe.brucker@arm.com",
        "time": "Thu Apr 04 14:20:49 2019 +0100"
      },
      "committer": {
        "name": "Will Deacon",
        "email": "will.deacon@arm.com",
        "time": "Fri Apr 26 14:57:59 2019 +0100"
      },
      "message": "disk/aio: Add wait() disk operation\n\nAdd a call into the disk layer to synchronize the AIO queue. Wait for all\npending requests to complete. This will be necessary when resetting a\nvirtqueue.\n\nThe wait() operation isn\u0027t the same as flush(). A VIRTIO_BLK_T_FLUSH\nrequest ensures that any write request *that completed before the FLUSH is\nsent* is committed to permanent storage (e.g. written back from a write\ncache). But it doesn\u0027t do anything for requests that are still pending\nwhen the FLUSH is sent.\n\nAvoid introducing a mutex on the io_submit() and io_getevents() paths,\nbecause it can lead to 30% throughput drop on heavy FIO jobs. Instead\nmanage an inflight counter using compare-and-swap operations, which is\nsimple enough as the caller doesn\u0027t submit new requests while it waits for\nthe AIO queue to drain. The __sync_fetch_and_* operations are a bit rough\nsince they use full barriers, but that didn\u0027t seem to introduce a\nperformance regression.\n\nSigned-off-by: Jean-Philippe Brucker \u003cjean-philippe.brucker@arm.com\u003e\nSigned-off-by: Will Deacon \u003cwill.deacon@arm.com\u003e\n"
    },
    {
      "commit": "a839180edd2b52be9fb3aa2b51b44e2fafcd65a8",
      "tree": "fa7cbf22a8f751bde124e27b148e8c20aca1ef96",
      "parents": [
        "200cb82311bb79b18994b2bfbad6b090eee7f0d0"
      ],
      "author": {
        "name": "Jean-Philippe Brucker",
        "email": "jean-philippe.brucker@arm.com",
        "time": "Thu Apr 04 14:20:48 2019 +0100"
      },
      "committer": {
        "name": "Will Deacon",
        "email": "will.deacon@arm.com",
        "time": "Fri Apr 26 14:57:59 2019 +0100"
      },
      "message": "disk/aio: Cancel AIO thread on cleanup\n\nIf the AIO thread is still calling io_getevents() while the exit path\ncalls io_destroy(), it will segfault. Wait for the thread to finish before\ndestroying the context.\n\nReviewed-by: Andre Przywara \u003candre.przywara@arm.com\u003e\nSigned-off-by: Jean-Philippe Brucker \u003cjean-philippe.brucker@arm.com\u003e\nSigned-off-by: Will Deacon \u003cwill.deacon@arm.com\u003e\n"
    },
    {
      "commit": "200cb82311bb79b18994b2bfbad6b090eee7f0d0",
      "tree": "40a45a87b513be79e0e5f0e28ba73ce73578c603",
      "parents": [
        "d62e8ee002eb1ef50d0ca9dfa4f0c04782e53879"
      ],
      "author": {
        "name": "Jean-Philippe Brucker",
        "email": "jean-philippe.brucker@arm.com",
        "time": "Thu Apr 04 14:20:47 2019 +0100"
      },
      "committer": {
        "name": "Will Deacon",
        "email": "will.deacon@arm.com",
        "time": "Fri Apr 26 14:57:59 2019 +0100"
      },
      "message": "disk/aio: Fix AIO thread\n\nCurrently when the kernel completes a batch of AIO requests and signals it\nvia eventfd, we retrieve at most AIO_MAX events (256), and ignore the\nrest. Call io_getevents() again in case more events are pending.\n\nReviewed-by: Andre Przywara \u003candre.przywara@arm.com\u003e\nSigned-off-by: Jean-Philippe Brucker \u003cjean-philippe.brucker@arm.com\u003e\nSigned-off-by: Will Deacon \u003cwill.deacon@arm.com\u003e\n"
    },
    {
      "commit": "d62e8ee002eb1ef50d0ca9dfa4f0c04782e53879",
      "tree": "7a777917cccbdb617f75c2efb2eeafc7fbdd034d",
      "parents": [
        "30a9aa69300118907de7735f5695f8b142d74455"
      ],
      "author": {
        "name": "Jean-Philippe Brucker",
        "email": "jean-philippe.brucker@arm.com",
        "time": "Thu Apr 04 14:20:46 2019 +0100"
      },
      "committer": {
        "name": "Will Deacon",
        "email": "will.deacon@arm.com",
        "time": "Fri Apr 26 14:57:59 2019 +0100"
      },
      "message": "disk/aio: Fix use of disk-\u003easync\n\nAdd an \u0027async\u0027 attribute to disk_image_operations, that describes if they\ncan submit async I/O or not. disk_image-\u003easync is now set iff\nCONFIG_HAS_AIO and the ops do use AIO.\n\nThis fixes qcow1, which used to set async \u003d 1 even though the qcow\noperations don\u0027t use AIO. The disk core would perform the read/write\noperation without pushing the completion onto the virtio queue, and the\nguest would be stuck waiting.\n\nReviewed-by: Andre Przywara \u003candre.przywara@arm.com\u003e\nSigned-off-by: Jean-Philippe Brucker \u003cjean-philippe.brucker@arm.com\u003e\nSigned-off-by: Will Deacon \u003cwill.deacon@arm.com\u003e\n"
    },
    {
      "commit": "30a9aa69300118907de7735f5695f8b142d74455",
      "tree": "bb5f83a0be0730ea036f4f96555eac29b27fb188",
      "parents": [
        "0964955ded23f40714231c820c0bb8cac7e08567"
      ],
      "author": {
        "name": "Jean-Philippe Brucker",
        "email": "jean-philippe.brucker@arm.com",
        "time": "Thu Apr 04 14:20:45 2019 +0100"
      },
      "committer": {
        "name": "Will Deacon",
        "email": "will.deacon@arm.com",
        "time": "Fri Apr 26 14:57:59 2019 +0100"
      },
      "message": "disk/aio: Refactor AIO code\n\nMove all AIO code to a separate file, disk/aio.c, to remove as much\n#ifdefs as possible. Split the raw read/write disk ops into async and\nsync, and choose which ones to use depending on CONFIG_HAS_AIO. Note that\nwe fix raw_image__close() which incorrectly checked CONFIG_HAS_VIRTIO\ninstead of CONFIG_HAS_AIO, and closed an unitialized disk-\u003eevt. A\nsubsequent commit will complete this refactoring by fixing use of the\n\u0027async\u0027 disk attribute.\n\nReviewed-by: Andre Przywara \u003candre.przywara@arm.com\u003e\nSigned-off-by: Jean-Philippe Brucker \u003cjean-philippe.brucker@arm.com\u003e\nSigned-off-by: Will Deacon \u003cwill.deacon@arm.com\u003e\n"
    },
    {
      "commit": "0964955ded23f40714231c820c0bb8cac7e08567",
      "tree": "5f89689755f210dd6109d8d2cbb685a0d1a7854e",
      "parents": [
        "5c5cae758a726ac073b68c8b0072c877d901589f"
      ],
      "author": {
        "name": "Jean-Philippe Brucker",
        "email": "jean-philippe.brucker@arm.com",
        "time": "Thu Apr 04 14:20:44 2019 +0100"
      },
      "committer": {
        "name": "Will Deacon",
        "email": "will.deacon@arm.com",
        "time": "Fri Apr 26 14:57:59 2019 +0100"
      },
      "message": "guest: sync disk before shutting down\n\nsync() should be called before reboot(RB_AUTOBOOT), otherwise data written\nto disks might be lost.\n\nSigned-off-by: Jean-Philippe Brucker \u003cjean-philippe.brucker@arm.com\u003e\nSigned-off-by: Will Deacon \u003cwill.deacon@arm.com\u003e\n"
    },
    {
      "commit": "5c5cae758a726ac073b68c8b0072c877d901589f",
      "tree": "eb5596d07fb488d7ff10e2a17ca87578b645e049",
      "parents": [
        "ca14d9eded5aa786675b28ba1d9c06bde33182f6"
      ],
      "author": {
        "name": "Jean-Philippe Brucker",
        "email": "jean-philippe.brucker@arm.com",
        "time": "Thu Apr 04 14:20:43 2019 +0100"
      },
      "committer": {
        "name": "Will Deacon",
        "email": "will.deacon@arm.com",
        "time": "Fri Apr 26 14:57:59 2019 +0100"
      },
      "message": "virtio/blk: Set VIRTIO_BLK_F_RO when the disk is read-only\n\nSince we don\u0027t currently tell the guest when the disk backend is\nread-only, it will report any inconsistent read after write as an error.\nAn image may be read-only either because user requested it on the\ncommand-line, or because write support isn\u0027t implemented. Pass the\nread-only attribute using the VIRTIO_BLK_F_RO feature.\n\nReviewed-by: Andre Przywara \u003candre.przywara@arm.com\u003e\nSigned-off-by: Jean-Philippe Brucker \u003cjean-philippe.brucker@arm.com\u003e\nSigned-off-by: Will Deacon \u003cwill.deacon@arm.com\u003e\n"
    },
    {
      "commit": "ca14d9eded5aa786675b28ba1d9c06bde33182f6",
      "tree": "69b822761ef80fcddf876d22402ccd7ba84cf92b",
      "parents": [
        "20b65266ce86e6253eac5813e285e3c30713fe2a"
      ],
      "author": {
        "name": "Jean-Philippe Brucker",
        "email": "jean-philippe.brucker@arm.com",
        "time": "Thu Apr 04 14:20:42 2019 +0100"
      },
      "committer": {
        "name": "Will Deacon",
        "email": "will.deacon@arm.com",
        "time": "Fri Apr 26 14:57:59 2019 +0100"
      },
      "message": "qcow: Fix qcow1 exit fault\n\nEven though qcow1 doesn\u0027t use the refcount table, the cleanup path still\nattempts to iterate over its LRU list. Initialize the list to avoid a\nsegfault on exit.\n\nReviewed-by: Andre Przywara \u003candre.przywara@arm.com\u003e\nSigned-off-by: Jean-Philippe Brucker \u003cjean-philippe.brucker@arm.com\u003e\nSigned-off-by: Will Deacon \u003cwill.deacon@arm.com\u003e\n"
    },
    {
      "commit": "20b65266ce86e6253eac5813e285e3c30713fe2a",
      "tree": "8962d8e8b2509cfbd6bc4e63b4a6399300b4c127",
      "parents": [
        "026fb59cb4e96c9997ab26b64c1332363fd0ce97"
      ],
      "author": {
        "name": "Julien Thierry",
        "email": "julien.thierry@arm.com",
        "time": "Thu Mar 07 08:36:04 2019 +0000"
      },
      "committer": {
        "name": "Will Deacon",
        "email": "will.deacon@arm.com",
        "time": "Fri Apr 26 14:55:21 2019 +0100"
      },
      "message": "brlock: fix build with KVM_BRLOCK_DEBUG\n\nBuild breaks when using KVM_BRLOCK_DEBUG because the header was seamingly\nconceived to be included in a single .c file...\n\nFix this by moving the definition of the read/write lock into the kvm\nstruct.\n\nReviewed-by: Andre Przywara \u003candre.przywara@arm.com\u003e\nSigned-off-by: Julien Thierry \u003cjulien.thierry@arm.com\u003e\nSigned-off-by: Will Deacon \u003cwill.deacon@arm.com\u003e\n"
    },
    {
      "commit": "026fb59cb4e96c9997ab26b64c1332363fd0ce97",
      "tree": "ce75f558aedb1fc848e0d9e2fdfcaf403d8524d8",
      "parents": [
        "90fa9c784d7a44713b1db00a27abd5efc88880fa"
      ],
      "author": {
        "name": "Julien Thierry",
        "email": "julien.thierry@arm.com",
        "time": "Thu Mar 07 08:36:03 2019 +0000"
      },
      "committer": {
        "name": "Will Deacon",
        "email": "will.deacon@arm.com",
        "time": "Fri Apr 26 14:55:19 2019 +0100"
      },
      "message": "brlock: Always pass argument to br_read_lock/unlock\n\nThe kvm argument is not passed to br_read_lock/unlock, this works for\nthe barrier implementation because the argument is not used. This ever\nbreaks if another lock implementation is used.\n\nReviewed-by: Andre Przywara \u003candre.przywara@arm.com\u003e\nSigned-off-by: Julien Thierry \u003cjulien.thierry@arm.com\u003e\nSigned-off-by: Will Deacon \u003cwill.deacon@arm.com\u003e\n"
    },
    {
      "commit": "90fa9c784d7a44713b1db00a27abd5efc88880fa",
      "tree": "ba5b8baaebcc8f7e9725a04cbb95cb3b760cc2df",
      "parents": [
        "7302327a491c6fd3613d5903c0310dd6abb1a74e"
      ],
      "author": {
        "name": "Julien Thierry",
        "email": "julien.thierry@arm.com",
        "time": "Thu Mar 07 08:36:02 2019 +0000"
      },
      "committer": {
        "name": "Will Deacon",
        "email": "will.deacon@arm.com",
        "time": "Fri Apr 26 14:55:05 2019 +0100"
      },
      "message": "Makefile: Only compile vesa for archs that need it\n\nThe vesa framebuffer is only used by architectures that explicitly\nrequire it (i.e. x86). Compile it out for architectures not using it, as\nits current implementation might not work for them.\n\nReviewed-by: Andre Przywara \u003candre.przywara@arm.com\u003e\nSigned-off-by: Julien Thierry \u003cjulien.thierry@arm.com\u003e\nSigned-off-by: Will Deacon \u003cwill.deacon@arm.com\u003e\n"
    },
    {
      "commit": "7302327a491c6fd3613d5903c0310dd6abb1a74e",
      "tree": "4dc158ae33a809d0e0f897cf5e4637a64beec225",
      "parents": [
        "12bd7a16811bc250fee97f106a874720abd2346d"
      ],
      "author": {
        "name": "Leo Yan",
        "email": "leo.yan@linaro.org",
        "time": "Mon Apr 08 09:27:19 2019 +0800"
      },
      "committer": {
        "name": "Will Deacon",
        "email": "will.deacon@arm.com",
        "time": "Fri Apr 26 14:49:11 2019 +0100"
      },
      "message": "vfio-pci: Re-enable INTx mode when disable MSI/MSIX\n\nSince PCI forbids enabling INTx, MSI or MSIX at the same time, it\u0027s by\ndefault to disable INTx mode when enable MSI/MSIX mode; but this logic is\neasily broken if the guest PCI driver detects the MSI/MSIX cannot work as\nexpected and tries to rollback to use INTx mode.  In this case, the INTx\nmode has been disabled and has no chance to re-enable it, thus both INTx\nmode and MSI/MSIX mode cannot work in vfio.\n\nBelow shows the detailed flow for introducing this issue:\n\n  vfio_pci_configure_dev_irqs()\n    `-\u003e vfio_pci_enable_intx()\n\n  vfio_pci_enable_msis()\n    `-\u003e vfio_pci_disable_intx()\n\n  vfio_pci_disable_msis()   \u003d\u003e Guest PCI driver disables MSI\n\nTo fix this issue, when disable MSI/MSIX we need to check if INTx mode\nis available for this device or not; if the device can support INTx then\nre-enable it so that the device can fallback to use it.\n\nSince vfio_pci_disable_intx() / vfio_pci_enable_intx() pair functions\nmay be called for multiple times, this patch uses \u0027intx_fd \u003d\u003d -1\u0027 to\ndenote the INTx is disabled, the pair functions can directly bail out\nwhen detect INTx has been disabled and enabled respectively.\n\nSuggested-by: Jean-Philippe Brucker \u003cjean-philippe.brucker@arm.com\u003e\nSigned-off-by: Leo Yan \u003cleo.yan@linaro.org\u003e\nReviewed-by: Jean-Philippe Brucker \u003cjean-philippe.brucker@arm.com\u003e\nSigned-off-by: Will Deacon \u003cwill.deacon@arm.com\u003e\n"
    },
    {
      "commit": "12bd7a16811bc250fee97f106a874720abd2346d",
      "tree": "7e765f733549820c7244b2baf140f4300ebccc09",
      "parents": [
        "a1ff6f87aa420da3afaec475f9bd405228e04189"
      ],
      "author": {
        "name": "Leo Yan",
        "email": "leo.yan@linaro.org",
        "time": "Mon Apr 08 09:27:18 2019 +0800"
      },
      "committer": {
        "name": "Will Deacon",
        "email": "will.deacon@arm.com",
        "time": "Fri Apr 26 14:49:11 2019 +0100"
      },
      "message": "vfio-pci: Add new function for INTx one-time initialisation\n\nTo support INTx enabling for multiple times, we need firstly to extract\none-time initialisation and move the related code into a new function\nvfio_pci_init_intx(); if later disable and re-enable the INTx, we can\nskip these one-time operations.\n\nThis patch move below three main operations for INTx one-time\ninitialisation from function vfio_pci_enable_intx() into function\nvfio_pci_init_intx():\n\n- Reserve 2 FDs for INTx;\n- Sanity check with ioctl VFIO_DEVICE_GET_IRQ_INFO;\n- Setup pdev-\u003eintx_gsi.\n\nSuggested-by: Jean-Philippe Brucker \u003cjean-philippe.brucker@arm.com\u003e\nSigned-off-by: Leo Yan \u003cleo.yan@linaro.org\u003e\nReviewed-by: Jean-Philippe Brucker \u003cjean-philippe.brucker@arm.com\u003e\nSigned-off-by: Will Deacon \u003cwill.deacon@arm.com\u003e\n"
    },
    {
      "commit": "a1ff6f87aa420da3afaec475f9bd405228e04189",
      "tree": "0de07e9ed679545163c5ed28c32834dff9572e2b",
      "parents": [
        "c57e001a3efba729a2d0c424bb7bb570c852f851"
      ],
      "author": {
        "name": "Leo Yan",
        "email": "leo.yan@linaro.org",
        "time": "Mon Apr 08 09:27:17 2019 +0800"
      },
      "committer": {
        "name": "Will Deacon",
        "email": "will.deacon@arm.com",
        "time": "Fri Apr 26 14:49:11 2019 +0100"
      },
      "message": "vfio-pci: Release INTx\u0027s unmask eventfd properly\n\nThe PCI device INTx uses event fd \u0027unmask_fd\u0027 to signal the deassertion\nof the line from guest to host; but this eventfd isn\u0027t released properly\nwhen disable INTx.\n\nThis patch firstly adds field \u0027unmask_fd\u0027 in struct vfio_pci_device for\nstoring unmask eventfd and close it when disable INTx.\n\nSigned-off-by: Leo Yan \u003cleo.yan@linaro.org\u003e\nReviewed-by: Jean-Philippe Brucker \u003cjean-philippe.brucker@arm.com\u003e\nSigned-off-by: Will Deacon \u003cwill.deacon@arm.com\u003e\n"
    },
    {
      "commit": "c57e001a3efba729a2d0c424bb7bb570c852f851",
      "tree": "6b307c8f71a163dd0eaa5aaf3156b7496f92752d",
      "parents": [
        "0796825e08da408fba6614d8a135a264d37ef9fe"
      ],
      "author": {
        "name": "Andre Przywara",
        "email": "andre.przywara@arm.com",
        "time": "Mon Feb 11 10:43:20 2019 +0000"
      },
      "committer": {
        "name": "Will Deacon",
        "email": "will.deacon@arm.com",
        "time": "Mon Feb 11 11:12:49 2019 +0000"
      },
      "message": "arm: Auto-detect guest GIC type\n\nAt the moment kvmtool always tries to instantiate a virtual GICv2\ninterrupt controller for the guest, and fails with some scary error\nmessage if that doesn\u0027t work.\nThe user has then to manually specify \"--irqchip\u003dgicv3\", which is not\nreally obvious.\nWith the advent of more GICv3-only machines, let\u0027s try to be more\nclever and implement some auto-detection of the GIC type needed:\nWe try gicv3-its, gicv3, gicv2m and gicv2, in that order. The first one\nsucceeding wins.\nFor GICv2 machines the first two will always fail.\nOn GICv3 machines offering GICv2 compatibility we used to prefer a\nvirtual GICv2 in the guest, but these days the GICv3 support both in\nguests and in KVM is equally mature and wide-spread, so we should use\nthe GICv3 emulation for the guest as well.\n\nThis algorithm is in effect is there is no explicit --irqchip parameter\non the command line. We still allow the GIC type to be set explicitly.\n\nSigned-off-by: Andre Przywara \u003candre.przywara@arm.com\u003e\nSigned-off-by: Will Deacon \u003cwill.deacon@arm.com\u003e\n"
    },
    {
      "commit": "0796825e08da408fba6614d8a135a264d37ef9fe",
      "tree": "4fb181b7554b69d6504f333790e7929b38bfc872",
      "parents": [
        "05755b29e63a9c73ba29c8b7c632570727d7afe7"
      ],
      "author": {
        "name": "Andre Przywara",
        "email": "andre.przywara@arm.com",
        "time": "Mon Feb 04 16:34:58 2019 +0000"
      },
      "committer": {
        "name": "Will Deacon",
        "email": "will.deacon@arm.com",
        "time": "Fri Feb 08 16:21:57 2019 +0000"
      },
      "message": "net/dhcp: avoid misleading strncpy\n\nThe code for copying an empty IP address into the DHCP opt buffer used\nstrncpy, however used the source length as the size argument. GCC 8.x\ncomplains about it.\n\nSince the source string is actually fixed, just revert to the old\nstrcpy, which gives us actually the same level of security in this case,\nbut makes the compiler happy.\n\nSigned-off-by: Andre Przywara \u003candre.przywara@arm.com\u003e\nSigned-off-by: Will Deacon \u003cwill.deacon@arm.com\u003e\n"
    },
    {
      "commit": "05755b29e63a9c73ba29c8b7c632570727d7afe7",
      "tree": "8fee1a504cf32027381d501e03f96ba70aac0929",
      "parents": [
        "266a0ed4c6a50dd80e7586ea020c5e963f4dd37b"
      ],
      "author": {
        "name": "Andre Przywara",
        "email": "andre.przywara@arm.com",
        "time": "Mon Feb 04 16:34:57 2019 +0000"
      },
      "committer": {
        "name": "Will Deacon",
        "email": "will.deacon@arm.com",
        "time": "Fri Feb 08 16:21:57 2019 +0000"
      },
      "message": "virtio: use strlcpy\n\nGCC 8.x complains about improper usage of strncpy in virtio/net.c and\nvirtio/scsi.c:\nIn function \u0027virtio_scsi_init_one\u0027,\n    inlined from \u0027virtio_scsi_init\u0027 at virtio/scsi.c:285:7:\nvirtio/scsi.c:247:2: error: \u0027strncpy\u0027 specified bound 224 equals destination size [-Werror\u003dstringop-truncation]\n  strncpy((char *)\u0026sdev-\u003etarget.vhost_wwpn, disk-\u003ewwpn, sizeof(sdev-\u003etarget.vhost_wwpn));\n  ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n\nFix this and the other occurences in virtio/ by using strlcpy instead\nof strncpy.\n\nSigned-off-by: Andre Przywara \u003candre.przywara@arm.com\u003e\nSigned-off-by: Will Deacon \u003cwill.deacon@arm.com\u003e\n"
    },
    {
      "commit": "266a0ed4c6a50dd80e7586ea020c5e963f4dd37b",
      "tree": "aab30bd2b0f647987dd78f3940d68884c41844e9",
      "parents": [
        "5eb1f27ac0f48ad012884b86d577ca27608bfdc5"
      ],
      "author": {
        "name": "Andre Przywara",
        "email": "andre.przywara@arm.com",
        "time": "Mon Feb 04 16:34:56 2019 +0000"
      },
      "committer": {
        "name": "Will Deacon",
        "email": "will.deacon@arm.com",
        "time": "Fri Feb 08 16:21:57 2019 +0000"
      },
      "message": "builtin-run: Replace strncpy calls with strlcpy\n\nThere are two uses of strncpy in builtin-run.c, where we don\u0027t make\nproper use of strncpy, so that GCC 8.x complains and aborts compilation.\n\nReplace those two calls with strlcpy(), which does the right thing in\nour case.\n\nSigned-off-by: Andre Przywara \u003candre.przywara@arm.com\u003e\nSigned-off-by: Will Deacon \u003cwill.deacon@arm.com\u003e\n"
    },
    {
      "commit": "5eb1f27ac0f48ad012884b86d577ca27608bfdc5",
      "tree": "af1c04416b55226d461bac73c4c4c6b4ed38202a",
      "parents": [
        "56e45ea44fbed5136a339f6da582c37bdb7fd607"
      ],
      "author": {
        "name": "Andre Przywara",
        "email": "andre.przywara@arm.com",
        "time": "Fri Feb 01 12:37:14 2019 +0000"
      },
      "committer": {
        "name": "Will Deacon",
        "email": "will.deacon@arm.com",
        "time": "Fri Feb 08 16:12:30 2019 +0000"
      },
      "message": "Makefile: support -s switch\n\n\"make -s\" suppresses normal output, just shows warnings and errors.\nBut since we explicitly override the make output with our fancy concise\nversion, we miss out on this feature.\n\nDo as the kernel does and explicitly suppress every normal output when -s\nis given. This helps to spot warnings that scroll out of the terminal\nwindow too quickly.\n\nSigned-off-by: Andre Przywara \u003candre.przywara@arm.com\u003e\nSigned-off-by: Will Deacon \u003cwill.deacon@arm.com\u003e\n"
    },
    {
      "commit": "56e45ea44fbed5136a339f6da582c37bdb7fd607",
      "tree": "91d9893ded1a5a826e54b26fc44c7c6f2c15a9cd",
      "parents": [
        "04d604b65f1f7061c252d41b65b474aae418d025"
      ],
      "author": {
        "name": "Andre Przywara",
        "email": "andre.przywara@arm.com",
        "time": "Fri Feb 01 12:37:13 2019 +0000"
      },
      "committer": {
        "name": "Will Deacon",
        "email": "will.deacon@arm.com",
        "time": "Fri Feb 08 16:12:30 2019 +0000"
      },
      "message": "arm: fdt: add stdout-path to /chosen node\n\nThe DT spec describes the stdout-path property in the /chosen node to\ncontain the DT path for a default device usable for outputting characters.\nThe Linux kernel uses this for earlycon (without further parameters),\nother DT users might rely on this as well.\n\nAdd a stdout-path property pointing to the \"serial0\" alias, then add an\naliases node at the end of the FDT, containing the actual path. This\nallows the FDT generation code in hw/serial.c to set this string.\n\nEven when we use the virtio console, the serial console is still there\nand works, so we can expose this unconditionally. Putting the virtio\nconsole path in there will not work anyway.\n\nSigned-off-by: Andre Przywara \u003candre.przywara@arm.com\u003e\nSigned-off-by: Will Deacon \u003cwill.deacon@arm.com\u003e\n"
    },
    {
      "commit": "04d604b65f1f7061c252d41b65b474aae418d025",
      "tree": "3048124bdcb5ff75345f8f34abffcee7ab87592b",
      "parents": [
        "16509081faf92c710c15bbc3ba5c60dc3c442f7b"
      ],
      "author": {
        "name": "Anisse Astier",
        "email": "aastier@freebox.fr",
        "time": "Mon Feb 04 10:59:44 2019 +0100"
      },
      "committer": {
        "name": "Will Deacon",
        "email": "will.deacon@arm.com",
        "time": "Fri Feb 08 16:04:19 2019 +0000"
      },
      "message": "kvmtool: 9p: fix overapping snprintf\n\nGCC 8.2 gives this warning:\n\nvirtio/9p.c: In function ‘virtio_p9_create’:\nvirtio/9p.c:335:21: error: passing argument 1 to restrict-qualified parameter aliases with argument 4 [-Werror\u003drestrict]\n  ret \u003d snprintf(dfid-\u003epath, size, \"%s/%s\", dfid-\u003epath, name);\n                 ~~~~^~~~~~                 ~~~~~~~~~~\n\nFix it by allocating a temporary string with dfid-\u003epath content instead\nof overwriting it in-place, which is limited in glibc snprintf with the\n__restrict qualifier.\n\nReviewed-by: Andre Przywara \u003candre.przywara@arm.com\u003e\nSigned-off-by: Anisse Astier \u003caastier@freebox.fr\u003e\nSigned-off-by: Will Deacon \u003cwill.deacon@arm.com\u003e\n"
    },
    {
      "commit": "16509081faf92c710c15bbc3ba5c60dc3c442f7b",
      "tree": "34f2fa7dc3b37847c7689dab443f72b1bc385d91",
      "parents": [
        "96eda74100e9ffb1620cc0b9011e7e430b3d6ffb"
      ],
      "author": {
        "name": "Anisse Astier",
        "email": "aastier@freebox.fr",
        "time": "Mon Feb 04 10:59:43 2019 +0100"
      },
      "committer": {
        "name": "Will Deacon",
        "email": "will.deacon@arm.com",
        "time": "Fri Feb 08 16:04:16 2019 +0000"
      },
      "message": "virtio: fix warning on strncpy\n\nGCC 8.2 gives this warning:\n\nvirtio/net.c: In function ‘virtio_net__tap_init’:\nvirtio/net.c:336:47: error: argument to ‘sizeof’ in ‘strncpy’ call is the same expression as the source; did you mean to use the size of the destination? [-Werror\u003dsizeof-pointer-memaccess]\n   strncpy(ifr.ifr_name, ndev-\u003etap_name, sizeof(ndev-\u003etap_name));\n                                               ^\nvirtio/net.c:348:47: error: argument to ‘sizeof’ in ‘strncpy’ call is the same expression as the source; did you mean to use the size of the destination? [-Werror\u003dsizeof-pointer-memaccess]\n   strncpy(ifr.ifr_name, ndev-\u003etap_name, sizeof(ndev-\u003etap_name));\n                                               ^\n\nFix it by using sizeof of destination instead, even if they\u0027re the same\nsize in this case.\n\nReviewed-by: Andre Przywara \u003candre.przywara@arm.com\u003e\nSigned-off-by: Anisse Astier \u003caastier@freebox.fr\u003e\nSigned-off-by: Will Deacon \u003cwill.deacon@arm.com\u003e\n"
    },
    {
      "commit": "96eda74100e9ffb1620cc0b9011e7e430b3d6ffb",
      "tree": "eb04b58688a7cb58548947faa6ce010f5da28898",
      "parents": [
        "2f61a4427255c3debe7e0a56df838b21fbd00bc5"
      ],
      "author": {
        "name": "Anisse Astier",
        "email": "aastier@freebox.fr",
        "time": "Mon Feb 04 10:59:42 2019 +0100"
      },
      "committer": {
        "name": "Will Deacon",
        "email": "will.deacon@arm.com",
        "time": "Fri Feb 08 16:04:07 2019 +0000"
      },
      "message": "builtin-run: Fix warning when resolving path\n\nGCC 8.2 gives this warning:\n\nbuiltin-run.c: In function ‘kvm_run_write_sandbox_cmd.isra.1’:\nbuiltin-run.c:417:28: error: ‘%s’ directive output may be truncated writing up to 4095 bytes into a region of size 4091 [-Werror\u003dformat-truncation\u003d]\n   snprintf(dst, len, \"/host%s\", resolved_path);\n                            ^~   ~~~~~~~~~~~~~\n\nIt\u0027s because it understands that len is PATH_MAX, the same as\nresolved_path\u0027s size. This patch handles the case where the string is\ntruncated, and fixes the warning.\n\nReviewed-by: Andre Przywara \u003candre.przywara@arm.com\u003e\nSigned-off-by: Anisse Astier \u003caastier@freebox.fr\u003e\nSigned-off-by: Will Deacon \u003cwill.deacon@arm.com\u003e\n"
    },
    {
      "commit": "2f61a4427255c3debe7e0a56df838b21fbd00bc5",
      "tree": "dcb8fec51d59d8b4dab72d4a55167e45a6efbe2d",
      "parents": [
        "5e4b563d75b9b46fc70cf42f59230c2a79fbcc55"
      ],
      "author": {
        "name": "Dmitry Monakhov",
        "email": "dmtrmonakhov@yandex-team.ru",
        "time": "Thu Jan 17 11:45:00 2019 +0000"
      },
      "committer": {
        "name": "Will Deacon",
        "email": "will.deacon@arm.com",
        "time": "Fri Feb 01 16:16:18 2019 +0000"
      },
      "message": "init: fix sysfs mount arguments\n\nIt is not good idea to pass empty \u0027source\u0027 argument to  mount(2) because\nlibmount complains about incorrect /proc/self/mountinfo structure. This\naffects many applications such as findmnt, umount and etc.\n\nLet\u0027s add fake source argument to sysfs mount command as we do with all other\nfilesystems.\n\nReviewed-by: Andre Przywara \u003candre.przywara@arm.com\u003e\nSigned-off-by: Dmitry Monakhov \u003cdmtrmonakhov@yandex-team.ru\u003e\nSigned-off-by: Will Deacon \u003cwill.deacon@arm.com\u003e\n"
    },
    {
      "commit": "5e4b563d75b9b46fc70cf42f59230c2a79fbcc55",
      "tree": "fd728b4a5ebbead52fdf4527c6b72d7c5de734d5",
      "parents": [
        "eb41dfc9d8e5a27e09bfbec9c01aab7f33033f3f"
      ],
      "author": {
        "name": "Andre Przywara",
        "email": "andre.przywara@arm.com",
        "time": "Fri Jan 25 15:43:08 2019 +0000"
      },
      "committer": {
        "name": "Will Deacon",
        "email": "will.deacon@arm.com",
        "time": "Fri Feb 01 10:35:45 2019 +0000"
      },
      "message": "arm: Allow command line for firmware\n\nWhen loading a firmware instead of a kernel, we can still pass on any\n*user-provided* command line, as /chosen/bootargs is a generic device tree\nfeature. We just need to make sure to not pass our mangled-for-Linux\nversion.\n\nThis allows to run \"firmware\" images which make use of a command line,\nstill are not Linux kernels, like kvm-unit-tests.\n\nSigned-off-by: Andre Przywara \u003candre.przywara@arm.com\u003e\nSigned-off-by: Will Deacon \u003cwill.deacon@arm.com\u003e\n"
    },
    {
      "commit": "eb41dfc9d8e5a27e09bfbec9c01aab7f33033f3f",
      "tree": "5adb70b386bbb8274563afc23bd2938be86197dc",
      "parents": [
        "93e9e2d6a8b31c63896aa287d3b3314195017249"
      ],
      "author": {
        "name": "Andre Przywara",
        "email": "andre.przywara@arm.com",
        "time": "Fri Jan 25 18:07:59 2019 +0000"
      },
      "committer": {
        "name": "Will Deacon",
        "email": "will.deacon@arm.com",
        "time": "Fri Feb 01 10:35:44 2019 +0000"
      },
      "message": "Makefile: Remove echoing of kvmtools version file\n\nOn every build we report the kvmtool \"version\" number, which isn\u0027t\nmeaningful at all anymore.\n\nRemove the line from the KVMTOOLS-VERSION-GEN script to drop a\npointless message.\n\nSigned-off-by: Andre Przywara \u003candre.przywara@arm.com\u003e\nSigned-off-by: Will Deacon \u003cwill.deacon@arm.com\u003e\n"
    },
    {
      "commit": "93e9e2d6a8b31c63896aa287d3b3314195017249",
      "tree": "5bc6b0f0024274f1412b4ae4bd0d5da09decd69f",
      "parents": [
        "e1c7c62afc7b998a0965cd9c3617f0513e2c3c27"
      ],
      "author": {
        "name": "Andre Przywara",
        "email": "andre.przywara@arm.com",
        "time": "Fri Jan 25 18:08:00 2019 +0000"
      },
      "committer": {
        "name": "Will Deacon",
        "email": "will.deacon@arm.com",
        "time": "Wed Jan 30 13:42:30 2019 +0000"
      },
      "message": "arm: pmu: Improve PMU error reporting\n\nThe KVM ioctls mostly just return -1 in the error case, leaving the\nactual error code in errno.\n\nChange the output of the PMU error message to actually print this error\ncode instead of the generic -1.\n\nSigned-off-by: Andre Przywara \u003candre.przywara@arm.com\u003e\nSigned-off-by: Will Deacon \u003cwill.deacon@arm.com\u003e\n"
    },
    {
      "commit": "e1c7c62afc7b998a0965cd9c3617f0513e2c3c27",
      "tree": "e564f5ae089b25612309035eba8755084293550e",
      "parents": [
        "66454cc2582a0bdb250e3a64c2f92bd16896caad"
      ],
      "author": {
        "name": "Andre Przywara",
        "email": "andre.przywara@arm.com",
        "time": "Fri Jan 25 18:07:56 2019 +0000"
      },
      "committer": {
        "name": "Will Deacon",
        "email": "will.deacon@arm.com",
        "time": "Wed Jan 30 13:42:30 2019 +0000"
      },
      "message": "arm: turn pr_info() into pr_debug() messages\n\nFor whatever reason on ARM/arm64 machines kvmtool greets us with quite\nsome elaborate messages:\n  Info: Loaded kernel to 0x80080000 (18704896 bytes)\n  Info: Placing fdt at 0x8fe00000 - 0x8fffffff\n  Info: virtio-mmio.devices\u003d0x200@0x10000:36\n\n  Info: virtio-mmio.devices\u003d0x200@0x10200:37\n\n  Info: virtio-mmio.devices\u003d0x200@0x10400:38\n\nThis is not really useful information for the casual user, so change\nthose lines to use pr_debug().\nThis also fixes the long standing line ending issue for the mmio output.\n\nSigned-off-by: Andre Przywara \u003candre.przywara@arm.com\u003e\nSigned-off-by: Will Deacon \u003cwill.deacon@arm.com\u003e\n"
    },
    {
      "commit": "66454cc2582a0bdb250e3a64c2f92bd16896caad",
      "tree": "7eea0ccc976a831050e1f01c41ae9a0eb89ec0a5",
      "parents": [
        "8003ede4c9720fa53f3b0396228f2864e3ad906a"
      ],
      "author": {
        "name": "Jean-Philippe Brucker",
        "email": "jean-philippe.brucker@arm.com",
        "time": "Thu Jan 10 14:12:50 2019 +0000"
      },
      "committer": {
        "name": "Will Deacon",
        "email": "will.deacon@arm.com",
        "time": "Tue Jan 22 06:55:26 2019 +0000"
      },
      "message": "virtio/console: Implement reset\n\nThe virtio-console reset cancels all running jobs.\n\nUnfortunately we don\u0027t have a good way to prevent the term polling thread\nfrom getting in the way, read invalid data during reset and cause a\nsegfault. To prevent this, move all handling of the Rx queue in the\nthreadpool job.\n\nSigned-off-by: Jean-Philippe Brucker \u003cjean-philippe.brucker@arm.com\u003e\nSigned-off-by: Julien Thierry \u003cjulien.thierry@arm.com\u003e\nSigned-off-by: Will Deacon \u003cwill.deacon@arm.com\u003e\n"
    },
    {
      "commit": "8003ede4c9720fa53f3b0396228f2864e3ad906a",
      "tree": "ffc146d63d7cb85ff9d916b9802b8fdab75245d8",
      "parents": [
        "7a7f45421f3a04e25d274c207ddd110af69da1bb"
      ],
      "author": {
        "name": "Jean-Philippe Brucker",
        "email": "jean-philippe.brucker@arm.com",
        "time": "Thu Jan 10 14:12:49 2019 +0000"
      },
      "committer": {
        "name": "Will Deacon",
        "email": "will.deacon@arm.com",
        "time": "Tue Jan 22 06:55:26 2019 +0000"
      },
      "message": "virtio/p9: Implement reset\n\nThe p9 reset cancels all running jobs and closes any open fid.\n\nSigned-off-by: Jean-Philippe Brucker \u003cjean-philippe.brucker@arm.com\u003e\nSigned-off-by: Julien Thierry \u003cjulien.thierry@arm.com\u003e\nSigned-off-by: Will Deacon \u003cwill.deacon@arm.com\u003e\n"
    },
    {
      "commit": "7a7f45421f3a04e25d274c207ddd110af69da1bb",
      "tree": "1662ce0587fc786881a0c8ee488a7ce08f76d3eb",
      "parents": [
        "6730b51f1d128910f628c43bb0d2fb655c7ceefe"
      ],
      "author": {
        "name": "Jean-Philippe Brucker",
        "email": "jean-philippe.brucker@arm.com",
        "time": "Thu Jan 10 14:12:48 2019 +0000"
      },
      "committer": {
        "name": "Will Deacon",
        "email": "will.deacon@arm.com",
        "time": "Tue Jan 22 06:55:26 2019 +0000"
      },
      "message": "threadpool: Add cancel() function\n\nWhen resetting a virtqueue, it is often necessary to make sure that the\nassociated threadpool job isn\u0027t running anymore. Add a function to\ncancel a job.\n\nA threadpool job has three states: idle, queued and running. A job is\nqueued when it is in the job list. It is running when it is out the\nlist, but its signal count is greater than zero. It is idle when it is\nboth out of the list and its signal count is zero. The cancel() function\nsimply waits for the job to be idle. It is up to the caller to make sure\nthat the job isn\u0027t queued concurrently.\n\nSigned-off-by: Jean-Philippe Brucker \u003cjean-philippe.brucker@arm.com\u003e\nSigned-off-by: Julien Thierry \u003cjulien.thierry@arm.com\u003e\nSigned-off-by: Will Deacon \u003cwill.deacon@arm.com\u003e\n"
    },
    {
      "commit": "6730b51f1d128910f628c43bb0d2fb655c7ceefe",
      "tree": "81ba2e86b44b140ba149945e05c7da7d4b3af5a6",
      "parents": [
        "49bada437b7f24abebd98a14b2ed9a06dde8827e"
      ],
      "author": {
        "name": "Jean-Philippe Brucker",
        "email": "jean-philippe.brucker@arm.com",
        "time": "Thu Jan 10 14:12:47 2019 +0000"
      },
      "committer": {
        "name": "Will Deacon",
        "email": "will.deacon@arm.com",
        "time": "Tue Jan 22 06:55:26 2019 +0000"
      },
      "message": "virtio/blk: Reset virtqueue\n\nMove pthread creation to init_vq, and kill the thread in exit_vq.\nInitialize the virtqueue states at runtime.\n\nAll in-flight I/O is canceled with the virtqueue pthreads, except for AIO\nthreads, but after reading the code I\u0027m not sure if AIO has ever worked\nanyway.\n\nSigned-off-by: Jean-Philippe Brucker \u003cjean-philippe.brucker@arm.com\u003e\nSigned-off-by: Julien Thierry \u003cjulien.thierry@arm.com\u003e\nSigned-off-by: Will Deacon \u003cwill.deacon@arm.com\u003e\n"
    },
    {
      "commit": "49bada437b7f24abebd98a14b2ed9a06dde8827e",
      "tree": "6ee402892afa7a66343dce7d007d663a6d81529e",
      "parents": [
        "ad96e8676bfac56bcacaa3cb602e7107fb7a99fd"
      ],
      "author": {
        "name": "Jean-Philippe Brucker",
        "email": "jean-philippe.brucker@arm.com",
        "time": "Thu Jan 10 14:12:46 2019 +0000"
      },
      "committer": {
        "name": "Will Deacon",
        "email": "will.deacon@arm.com",
        "time": "Tue Jan 22 06:55:26 2019 +0000"
      },
      "message": "virtio/net: Implement device and virtqueue reset\n\nOn exit_vq(), clean all resources allocated for the queue. When the device\nis reset, clean the backend.\n\nSigned-off-by: Jean-Philippe Brucker \u003cjean-philippe.brucker@arm.com\u003e\nSigned-off-by: Julien Thierry \u003cjulien.thierry@arm.com\u003e\nSigned-off-by: Will Deacon \u003cwill.deacon@arm.com\u003e\n"
    },
    {
      "commit": "ad96e8676bfac56bcacaa3cb602e7107fb7a99fd",
      "tree": "610a5464882bd48bd130c827dd6fc89a64bcf176",
      "parents": [
        "d87b503f4d6e499dfcbc84fad3e4da7a900a3b47"
      ],
      "author": {
        "name": "Jean-Philippe Brucker",
        "email": "jean-philippe.brucker@arm.com",
        "time": "Thu Jan 10 14:12:45 2019 +0000"
      },
      "committer": {
        "name": "Will Deacon",
        "email": "will.deacon@arm.com",
        "time": "Tue Jan 22 06:55:26 2019 +0000"
      },
      "message": "virtio/net: Clean virtqueue state\n\nCurrently the virtqueue state is mixed with the netdev state. Move it to a\nseparate structure.\n\nSigned-off-by: Jean-Philippe Brucker \u003cjean-philippe.brucker@arm.com\u003e\nSigned-off-by: Julien Thierry \u003cjulien.thierry@arm.com\u003e\nSigned-off-by: Will Deacon \u003cwill.deacon@arm.com\u003e\n"
    },
    {
      "commit": "d87b503f4d6e499dfcbc84fad3e4da7a900a3b47",
      "tree": "057852d83bca0945020ec652ad4ab00ddc89b841",
      "parents": [
        "eb34a8c274ba8c4e42f35252c80b57723c35e2ad"
      ],
      "author": {
        "name": "Jean-Philippe Brucker",
        "email": "jean-philippe.brucker@arm.com",
        "time": "Thu Jan 10 14:12:44 2019 +0000"
      },
      "committer": {
        "name": "Will Deacon",
        "email": "will.deacon@arm.com",
        "time": "Tue Jan 22 06:55:26 2019 +0000"
      },
      "message": "net/uip: Add exit function\n\nWhen resetting the virtio-net queues, the UIP state needs to be reset as\nwell. Stop all threads (one per TCP stream and UDP connection) and free\nmemory.\n\nSigned-off-by: Jean-Philippe Brucker \u003cjean-philippe.brucker@arm.com\u003e\nSigned-off-by: Julien Thierry \u003cjulien.thierry@arm.com\u003e\nSigned-off-by: Will Deacon \u003cwill.deacon@arm.com\u003e\n"
    },
    {
      "commit": "eb34a8c274ba8c4e42f35252c80b57723c35e2ad",
      "tree": "16fdde31cea72aaf29b2fc32594d65f633e20c4d",
      "parents": [
        "ad346c2e67a13fb7abd1534864168b16423fb20b"
      ],
      "author": {
        "name": "Jean-Philippe Brucker",
        "email": "jean-philippe.brucker@arm.com",
        "time": "Thu Jan 10 14:12:43 2019 +0000"
      },
      "committer": {
        "name": "Will Deacon",
        "email": "will.deacon@arm.com",
        "time": "Tue Jan 22 06:55:26 2019 +0000"
      },
      "message": "virtio: Add reset() callback\n\nWhen the guest writes a status of 0, the device should be reset. Add a\nreset() callback for the transport layer to reset all queues and their\nioeventfd.\n\nSigned-off-by: Jean-Philippe Brucker \u003cjean-philippe.brucker@arm.com\u003e\nSigned-off-by: Julien Thierry \u003cjulien.thierry@arm.com\u003e\nSigned-off-by: Will Deacon \u003cwill.deacon@arm.com\u003e\n"
    },
    {
      "commit": "ad346c2e67a13fb7abd1534864168b16423fb20b",
      "tree": "30214350ab823400027b8b01574ef024cb96dd0f",
      "parents": [
        "53fbb17b392d599935e78318734bad8cff91dffc"
      ],
      "author": {
        "name": "Jean-Philippe Brucker",
        "email": "jean-philippe.brucker@arm.com",
        "time": "Thu Jan 10 14:12:42 2019 +0000"
      },
      "committer": {
        "name": "Will Deacon",
        "email": "will.deacon@arm.com",
        "time": "Tue Jan 22 06:55:26 2019 +0000"
      },
      "message": "virtio: Add exit_vq() callback\n\nVirtio allows to reset individual virtqueues. For legacy devices, it\u0027s\ndone by writing an address of 0 into the PFN register. Modern devices have\nan \"enable\" register. Add an exit_vq() callback to all devices. A lot more\nwork is required by each device to clean up their virtqueue state, and by\nthe core to reset things like MSI routes and ioeventfds.\n\nSigned-off-by: Jean-Philippe Brucker \u003cjean-philippe.brucker@arm.com\u003e\nSigned-off-by: Julien Thierry \u003cjulien.thierry@arm.com\u003e\nSigned-off-by: Will Deacon \u003cwill.deacon@arm.com\u003e\n"
    },
    {
      "commit": "53fbb17b392d599935e78318734bad8cff91dffc",
      "tree": "47562dd4c5636575be9ff0bb97b9115e39abb3c9",
      "parents": [
        "b98ac59172405034be3886f7a37f9f2df5989b1f"
      ],
      "author": {
        "name": "Jean-Philippe Brucker",
        "email": "jean-philippe.brucker@arm.com",
        "time": "Thu Jan 10 14:12:41 2019 +0000"
      },
      "committer": {
        "name": "Will Deacon",
        "email": "will.deacon@arm.com",
        "time": "Tue Jan 22 06:55:26 2019 +0000"
      },
      "message": "virtio: Add get_vq() callback\n\nTo ease future changes to the core, replace get_pfn_vq() with get_vq().\nThis way adding new generic operation on virtqueues won\u0027t require\nmodifying every virtio device.\n\nSigned-off-by: Jean-Philippe Brucker \u003cjean-philippe.brucker@arm.com\u003e\nSigned-off-by: Julien Thierry \u003cjulien.thierry@arm.com\u003e\nSigned-off-by: Will Deacon \u003cwill.deacon@arm.com\u003e\n"
    },
    {
      "commit": "b98ac59172405034be3886f7a37f9f2df5989b1f",
      "tree": "94cdae002e5596e8fc3c106cb1b930150c415a39",
      "parents": [
        "95242e44535bfb37b4ac4c90c353d5b73824a08e"
      ],
      "author": {
        "name": "Jean-Philippe Brucker",
        "email": "jean-philippe.brucker@arm.com",
        "time": "Thu Jan 10 14:12:40 2019 +0000"
      },
      "committer": {
        "name": "Will Deacon",
        "email": "will.deacon@arm.com",
        "time": "Tue Jan 22 06:55:26 2019 +0000"
      },
      "message": "virtio: Add get_vq_count() callback\n\nModern virtio requires devices to report how many queues they support. Add\nan operation to query all devices about their capacities.\n\nSigned-off-by: Jean-Philippe Brucker \u003cjean-philippe.brucker@arm.com\u003e\nSigned-off-by: Julien Thierry \u003cjulien.thierry@arm.com\u003e\nSigned-off-by: Will Deacon \u003cwill.deacon@arm.com\u003e\n"
    },
    {
      "commit": "95242e44535bfb37b4ac4c90c353d5b73824a08e",
      "tree": "f80b5bc3110146ff12f37a1f3912db10937b0ab1",
      "parents": [
        "56c82a0305d7f889a05c71fd11bff4c6609c5199"
      ],
      "author": {
        "name": "Jean-Philippe Brucker",
        "email": "jean-philippe.brucker@arm.com",
        "time": "Thu Jan 10 14:12:39 2019 +0000"
      },
      "committer": {
        "name": "Will Deacon",
        "email": "will.deacon@arm.com",
        "time": "Tue Jan 22 06:55:26 2019 +0000"
      },
      "message": "virtio: Implement notify_status\n\nModern virtio require proper status handling and reset. A \"notify_status\"\ncallback is already present in the virtio ops, but isn\u0027t implemented by\nany device. Instead they currently use \"set_guest_feature\" to reset the\ndevice and deal with endianess. This isn\u0027t sufficient for proper device\nreset, so add the notify_status callback to all devices that need it.\n\nTo add useful hints like \"start\" and \"stop\", extend the status variable to\n32-bits.\n\nSigned-off-by: Jean-Philippe Brucker \u003cjean-philippe.brucker@arm.com\u003e\n[Julien T: Remove VIRTIO_CONFIG_S_NEEDS_RESET from config mask, as\n\tit is virtio v1+ macro and kvmtool only implements v0.9, this\n\tmacro should not be referenced for now]\nSigned-off-by: Julien Thierry \u003cjulien.thierry@arm.com\u003e\nSigned-off-by: Will Deacon \u003cwill.deacon@arm.com\u003e\n"
    },
    {
      "commit": "56c82a0305d7f889a05c71fd11bff4c6609c5199",
      "tree": "4dfc87ce5e400d8bd415b601f85f8caa5dcfe003",
      "parents": [
        "9afefd6c79015480366e42eb7faa60f72d5984ae"
      ],
      "author": {
        "name": "Jean-Philippe Brucker",
        "email": "jean-philippe.brucker@arm.com",
        "time": "Thu Jan 10 14:12:38 2019 +0000"
      },
      "committer": {
        "name": "Will Deacon",
        "email": "will.deacon@arm.com",
        "time": "Tue Jan 22 06:55:26 2019 +0000"
      },
      "message": "ioeventfd: Fix removal of ioeventfd\n\nFix three bugs that prevent removal of ioeventfds in KVM. Store the\nflags in the right structure, check the datamatch parameter, and pass\nthe fd to KVM.\n\nSigned-off-by: Jean-Philippe Brucker \u003cjean-philippe.brucker@arm.com\u003e\nSigned-off-by: Julien Thierry \u003cjulien.thierry@arm.com\u003e\nSigned-off-by: Will Deacon \u003cwill.deacon@arm.com\u003e\n"
    },
    {
      "commit": "9afefd6c79015480366e42eb7faa60f72d5984ae",
      "tree": "0ede8448939848ce89bea53c541a1753d542c7d6",
      "parents": [
        "1349857618e5ddd30dc7401e7cae64ef20a4631c"
      ],
      "author": {
        "name": "Julien Thierry",
        "email": "julien.thierry@arm.com",
        "time": "Thu Jan 10 14:20:44 2019 +0000"
      },
      "committer": {
        "name": "Will Deacon",
        "email": "will.deacon@arm.com",
        "time": "Tue Jan 22 06:55:22 2019 +0000"
      },
      "message": "arm: Support firmware loading\n\nImplement firmware image loading for arm and set the boot start address\nto the firmware address.\n\nAdd an option for the user to specify where to map the firmware.\n\nSigned-off-by: Julien Thierry \u003cjulien.thierry@arm.com\u003e\nSigned-off-by: Will Deacon \u003cwill.deacon@arm.com\u003e\n"
    },
    {
      "commit": "1349857618e5ddd30dc7401e7cae64ef20a4631c",
      "tree": "8596aff7d33c2471a91c9fb49d1a9a8be07010da",
      "parents": [
        "f269c81dff7d4fe4b3c867e896169fb405c8084d"
      ],
      "author": {
        "name": "Julien Thierry",
        "email": "julien.thierry@arm.com",
        "time": "Thu Jan 10 14:20:43 2019 +0000"
      },
      "committer": {
        "name": "Will Deacon",
        "email": "will.deacon@arm.com",
        "time": "Tue Jan 22 06:55:22 2019 +0000"
      },
      "message": "builtin-run: Do not look for default kernel when firmware is provided\n\nWhen a firmware file is provided, kvmtool is not responsible for loading\na kernel image.\n\nThere is no reason for looking for a default kernel image when loading\na firmware.\n\nSigned-off-by: Julien Thierry \u003cjulien.thierry@arm.com\u003e\nReviewed-by: Andre Przywara \u003candre.przywara@arm.com\u003e\nSigned-off-by: Will Deacon \u003cwill.deacon@arm.com\u003e\n"
    },
    {
      "commit": "f269c81dff7d4fe4b3c867e896169fb405c8084d",
      "tree": "8024ff32854f00d4e4197566fa5ef66a3be5e885",
      "parents": [
        "473c5b295e427a3ac4d92266193096321eb9fe2a"
      ],
      "author": {
        "name": "Julien Thierry",
        "email": "julien.thierry@arm.com",
        "time": "Thu Jan 10 14:20:42 2019 +0000"
      },
      "committer": {
        "name": "Will Deacon",
        "email": "will.deacon@arm.com",
        "time": "Tue Jan 22 06:55:22 2019 +0000"
      },
      "message": "arm: Move firmware function\n\nFirmware loading/setup function are in fdt file while it is not very\nrelated to this.\n\nMove them to the file that does the main init/setup for memory.\n\nSigned-off-by: Julien Thierry \u003cjulien.thierry@arm.com\u003e\nReviewed-by: Andre Przywara \u003candre.przywara@arm.com\u003e\nSigned-off-by: Will Deacon \u003cwill.deacon@arm.com\u003e\n"
    },
    {
      "commit": "473c5b295e427a3ac4d92266193096321eb9fe2a",
      "tree": "425a25b9a0d24171cabc63449217eee67bb84ab3",
      "parents": [
        "5ae841d17ba297d75843035135cee35ee6b68f0a"
      ],
      "author": {
        "name": "Sami Mujawar",
        "email": "sami.mujawar@arm.com",
        "time": "Thu Jan 10 14:20:41 2019 +0000"
      },
      "committer": {
        "name": "Will Deacon",
        "email": "will.deacon@arm.com",
        "time": "Tue Jan 22 06:55:22 2019 +0000"
      },
      "message": "rtc: Initialize the Register D for MC146818 RTC\n\nSome software drivers check the VRT bit (BIT7) of Register D before\nusing the MC146818 RTC. Initialized the VRT bit in rtc__init() to\nindicate that the RAM and time contents are valid.\n\nSigned-off-by: Sami Mujawar \u003csami.mujawar@arm.com\u003e\nSigned-off-by: Julien Thierry \u003cjulien.thierry@arm.com\u003e\nReviewed-by: Andre Przywara \u003candre.przywara@arm.com\u003e\nSigned-off-by: Will Deacon \u003cwill.deacon@arm.com\u003e\n"
    },
    {
      "commit": "5ae841d17ba297d75843035135cee35ee6b68f0a",
      "tree": "a1b086c863bf828d370fcc8ddc3fab96365fe809",
      "parents": [
        "1bbe92f568513662589b1a159be01fd27f8bf27d"
      ],
      "author": {
        "name": "Dave Martin",
        "email": "Dave.Martin@arm.com",
        "time": "Fri Jan 18 16:14:14 2019 +0000"
      },
      "committer": {
        "name": "Will Deacon",
        "email": "will.deacon@arm.com",
        "time": "Tue Jan 22 06:55:22 2019 +0000"
      },
      "message": "arm64: Correct ARM64_CORE_REG() size encodings for all core registers\n\nARM64_CORE_REG() is currently only used to generate the KVM\nregister IDs for registers that happen to be 64 bits in size, so\nKVM_REG_SIZE_U64 is hard-coded in the definition.\n\nTo enable this macro to generate correct encodings for the FPSIMD\nregisters too (which are a mix of 128-bit and 32-bit registers),\nthis patch extends the macro to encode the correct size for each\nclass of register in KVM_REG_ARM_CORE.\n\nThe approach is crude, but because the KVM_REG_ARM_CORE ID\narrangement is ABI, it\u0027s not expected to evolve.\n\nSigned-off-by: Dave Martin \u003cDave.Martin@arm.com\u003e\nSigned-off-by: Will Deacon \u003cwill.deacon@arm.com\u003e\n"
    },
    {
      "commit": "1bbe92f568513662589b1a159be01fd27f8bf27d",
      "tree": "05ee7f2bddc61b5de2f08e0f55b208151c411ae8",
      "parents": [
        "81cc98a9875ed4b8f0cf690ab282d09df6a19ace"
      ],
      "author": {
        "name": "Dave Martin",
        "email": "Dave.Martin@arm.com",
        "time": "Fri Jan 18 16:14:11 2019 +0000"
      },
      "committer": {
        "name": "Will Deacon",
        "email": "will.deacon@arm.com",
        "time": "Tue Jan 22 06:55:22 2019 +0000"
      },
      "message": "update_headers: Sync kvm UAPI headers with linux v5.0-rc2\n\nThe local copies of the kvm user API headers are getting stale.\n\nIn preparation for some arch-specific updated, this patch reflects\na re-run of util/update_headers.sh to pull in upstream updates from\nlinux v5.0-rc2.\n\nSigned-off-by: Dave Martin \u003cDave.Martin@arm.com\u003e\nSigned-off-by: Will Deacon \u003cwill.deacon@arm.com\u003e\n"
    },
    {
      "commit": "81cc98a9875ed4b8f0cf690ab282d09df6a19ace",
      "tree": "82db9c958f5bad306c7d0947b499724e7ec5de0c",
      "parents": [
        "fdd26ecb4bc52ac7e06455d5ea2cf5ebf7d500bc"
      ],
      "author": {
        "name": "Dave Martin",
        "email": "Dave.Martin@arm.com",
        "time": "Fri Jan 18 16:14:10 2019 +0000"
      },
      "committer": {
        "name": "Will Deacon",
        "email": "will.deacon@arm.com",
        "time": "Tue Jan 22 06:55:06 2019 +0000"
      },
      "message": "guest: Add generated file guest/guest_init.c to .gitignore\n\nguest/guest_init.c is a generated file, but git doesn\u0027t currently\nignore it.  This can be annoying when running git status etc.\n\nThis patch adds a suitable .gitignore entry for this file.\n\nSigned-off-by: Dave Martin \u003cDave.Martin@arm.com\u003e\n[will: Do the same for guest/guest_pre_init.c]\nSigned-off-by: Will Deacon \u003cwill.deacon@arm.com\u003e\n"
    },
    {
      "commit": "fdd26ecb4bc52ac7e06455d5ea2cf5ebf7d500bc",
      "tree": "f6b2a2ad48bf195a184baf28e57745b5bf030eda",
      "parents": [
        "29f4ec311fca8a13cb8360d18fb91de2d1c2c20f"
      ],
      "author": {
        "name": "Julien Thierry",
        "email": "julien.thierry@arm.com",
        "time": "Fri Oct 19 10:36:31 2018 +0100"
      },
      "committer": {
        "name": "Will Deacon",
        "email": "will.deacon@arm.com",
        "time": "Fri Nov 02 14:17:13 2018 +0000"
      },
      "message": "kvm-cpu: Pause vCPU in signal handler\n\nCurrently, the handling a pause signal only sets a state that will be\nchecked at the begining of the CPU run loop. At the checking point the vCPU\nsends the notification that it is actually paused allowing the pause\nrequester to confirm all vCPUs are paused.\n\nReceiving the pause signal during a KVM_RUN ioctl will make KVM exit to\nuserspace. However, there is a small window between that check on\ncpu-\u003epaused and the execution of KVM_RUN where the signal has been received\nbut the vCPU does not go back through the notification and starts KVM_RUN.\nSince there is no guarantee the vCPU will come back to userspace, the\npause requester might deadlock.\n\nPerform the pause directly from the signal handler. This relies on a vCPU\nthread never receiving a pause signal while being pause, but such scenario\nwould have caused a deadlock for the pause requester anyway.\n\nSigned-off-by: Julien Thierry \u003cjulien.thierry@arm.com\u003e\nSigned-off-by: Will Deacon \u003cwill.deacon@arm.com\u003e\n"
    },
    {
      "commit": "29f4ec311fca8a13cb8360d18fb91de2d1c2c20f",
      "tree": "b9045a7ccd69163aa38de6a21bac504d8d177338",
      "parents": [
        "66ba0baea8743e6ac7142367ca58bd76b6f79c7b"
      ],
      "author": {
        "name": "Julien Thierry",
        "email": "julien.thierry@arm.com",
        "time": "Fri Oct 19 10:36:30 2018 +0100"
      },
      "committer": {
        "name": "Will Deacon",
        "email": "will.deacon@arm.com",
        "time": "Fri Nov 02 14:17:13 2018 +0000"
      },
      "message": "kvm: Do not pause already paused vcpus\n\nWith the following sequence:\n\tkvm__pause();\n\tkvm__continue();\n\tkvm__pause();\n\nThere is a chance that not all paused threads have been resumed, and the\nsecond kvm__pause will attempt to pause them again. Since the paused thread\nis waiting to own the pause_lock, it won\u0027t write its second pause\nnotification. kvm__pause will be waiting for that notification while owning\npause_lock, so... deadlock.\n\nSimple solution is not to try to pause thread that had not the chance to\nresume.\n\nSigned-off-by: Julien Thierry \u003cjulien.thierry@arm.com\u003e\nSigned-off-by: Will Deacon \u003cwill.deacon@arm.com\u003e\n"
    },
    {
      "commit": "66ba0baea8743e6ac7142367ca58bd76b6f79c7b",
      "tree": "237f00700ad3aa2d912c0fe21310fcc39540bd71",
      "parents": [
        "971ba8ccff299dd41b0e2db655a6b99f3eb2ae0b"
      ],
      "author": {
        "name": "Jean-Philippe Brucker",
        "email": "jean-philippe.brucker@arm.com",
        "time": "Fri Nov 02 13:56:27 2018 +0000"
      },
      "committer": {
        "name": "Will Deacon",
        "email": "will.deacon@arm.com",
        "time": "Fri Nov 02 14:14:50 2018 +0000"
      },
      "message": "virtio: Fix ordering of virt_queue__available()\n\nAfter adding buffers to the virtio queue, the guest increments the avail\nindex. It then reads the event index to check if it needs to notify the\nhost. If the event index corresponds to the previous avail value, then\nthe guest notifies the host. Otherwise it means that the host is still\nprocessing the queue and hasn\u0027t had a chance to increment the event\nindex yet. Once it gets there, the host will see the new avail index and\nprocess the descriptors, so there is no need for a notification.\n\nThis is only guaranteed to work if both threads write and read the\nindices in the right order. Currently a barrier is missing from\nvirt_queue__available(), and the host may not see an up-to-date value of\nevent index after writing avail.\n\n             HOST            |           GUEST\n                             |\n                             |    write avail \u003d 1\n                             |    mb()\n                             |    read event -\u003e 0\n        write event \u003d 0      |      \u003d\u003d prev_avail -\u003e notify\n        read avail -\u003e 1      |\n                             |\n        write event \u003d 1      |\n        read avail -\u003e 1      |\n        wait()               |    write avail \u003d 2\n                             |    mb()\n                             |    read event -\u003e 0\n                             |      !\u003d prev_avail -\u003e no notification\n\nBy adding a memory barrier on the host side, we ensure that it doesn\u0027t\nmiss any notification.\n\nReviewed-By: Steven Price \u003csteven.price@arm.com\u003e\nSigned-off-by: Jean-Philippe Brucker \u003cjean-philippe.brucker@arm.com\u003e\nSigned-off-by: Will Deacon \u003cwill.deacon@arm.com\u003e\n"
    },
    {
      "commit": "971ba8ccff299dd41b0e2db655a6b99f3eb2ae0b",
      "tree": "2489384e9d1a50ab796351cc7fdea39f9498e31f",
      "parents": [
        "dc4291bae21842dedbf7a10091ebbfec29ecfbd2"
      ],
      "author": {
        "name": "Julien Thierry",
        "email": "julien.thierry@arm.com",
        "time": "Tue Aug 14 18:03:56 2018 +0100"
      },
      "committer": {
        "name": "Will Deacon",
        "email": "will.deacon@arm.com",
        "time": "Thu Aug 16 11:30:18 2018 +0100"
      },
      "message": "ioport: unregister port device when unregistering port\n\nIoport register bus devices when they registered. These devices are not\nunregistered when the ioports entries containing their headers are\nunregistered. This results in dangling pointers in the device rb_tree.\n\nUnregister ioport bus devices when the ioport is unregistered.\n\nSigned-off-by: Julien Thierry \u003cjulien.thierry@arm.com\u003e\nSigned-off-by: Will Deacon \u003cwill.deacon@arm.com\u003e\n"
    },
    {
      "commit": "dc4291bae21842dedbf7a10091ebbfec29ecfbd2",
      "tree": "5c8cb6a03a0ea90e32dfc50cf3e4c5a4ef1238aa",
      "parents": [
        "58ba12ba4e42d4daf8dcc02b02d4e9fafd8b8327"
      ],
      "author": {
        "name": "Julien Thierry",
        "email": "julien.thierry@arm.com",
        "time": "Fri Jul 13 09:04:04 2018 +0100"
      },
      "committer": {
        "name": "Will Deacon",
        "email": "will.deacon@arm.com",
        "time": "Fri Jul 13 10:28:31 2018 +0100"
      },
      "message": "Makefile: Try dynamic linkage for bfd\n\nOn Debian Stretch/Ubuntu 14.04, the libbfd provided by libbfd-dev or\nbinutils-dev packages does not like being linked statically.\n\nAdd a dynamic linkage test when detecting libbfd.\n\nSigned-off-by: Julien Thierry \u003cjulien.thierry@arm.com\u003e\nSigned-off-by: Will Deacon \u003cwill.deacon@arm.com\u003e\n"
    },
    {
      "commit": "58ba12ba4e42d4daf8dcc02b02d4e9fafd8b8327",
      "tree": "6ab91c105b345d2bea22c14767adc23f64206635",
      "parents": [
        "665f1b7228b421da420c4244d5374f5ebb14644a"
      ],
      "author": {
        "name": "Julien Thierry",
        "email": "julien.thierry@arm.com",
        "time": "Fri Jul 13 09:04:03 2018 +0100"
      },
      "committer": {
        "name": "Will Deacon",
        "email": "will.deacon@arm.com",
        "time": "Fri Jul 13 10:28:31 2018 +0100"
      },
      "message": "Makefile: fix skipped dependencies\n\nFor some optional dependencies, both static and dynamic linking is tested.\nBut if the first one being tested fails, the dependency is added to the\nNOTFOUND list and reported as being skipped while it might still be built\nwith another linkage.\n\nAdd optional dependencies to NOTFOUND only if both linkage are invalid.\n\nSigned-off-by: Julien Thierry \u003cjulien.thierry@arm.com\u003e\nSigned-off-by: Will Deacon \u003cwill.deacon@arm.com\u003e\n"
    },
    {
      "commit": "665f1b7228b421da420c4244d5374f5ebb14644a",
      "tree": "d6c6c39ef05dabde960b1c6fdf2e57c0f31e3379",
      "parents": [
        "41d773e2070aabd3c4ff20c059f45c3e9a0f9d20"
      ],
      "author": {
        "name": "Jean-Philippe Brucker",
        "email": "jean-philippe.brucker@arm.com",
        "time": "Fri Jul 06 12:22:54 2018 +0100"
      },
      "committer": {
        "name": "Will Deacon",
        "email": "will.deacon@arm.com",
        "time": "Fri Jul 06 13:13:06 2018 +0100"
      },
      "message": "Fix subfolder dependency generation\n\nWhen building an object \"foo.o\", kvmtool also creates a \".foo.o.d\" file,\nusing the dependency generation feature of CPP. This file describes in\nMakefile format all headers included by foo.c. When one header is\nmodified, make rebuilds all objects that include it.\n\nDependency files in subfolders are currently ignored by make, because\nthe target doesn\u0027t contain the right prefix. For example virtio/.blk.o.d\nhas target \"blk.o\" instead of \"virtio/blk.o\". As a result, rebuilding\nkvmtool without first issuing a make clean can introduce sneaky bugs,\nwhere different objects use mismatched headers. To write the right\ntargets in dependency files, add a -MT argument to CPP.\n\nSigned-off-by: Jean-Philippe Brucker \u003cjean-philippe.brucker@arm.com\u003e\nSigned-off-by: Will Deacon \u003cwill.deacon@arm.com\u003e\n"
    },
    {
      "commit": "41d773e2070aabd3c4ff20c059f45c3e9a0f9d20",
      "tree": "1c84a94f99e52515ab39beedfb8f6af49e9735b9",
      "parents": [
        "fa1076ab6342355f2b400656233fb6fe0477e098"
      ],
      "author": {
        "name": "Jean-Philippe Brucker",
        "email": "jean-philippe.brucker@arm.com",
        "time": "Mon Jun 18 19:42:11 2018 +0100"
      },
      "committer": {
        "name": "Will Deacon",
        "email": "will.deacon@arm.com",
        "time": "Tue Jun 19 12:26:41 2018 +0100"
      },
      "message": "vfio: check reserved regions before mapping DMA\n\nUse the new reserved_regions API to ensure that RAM doesn\u0027t overlap any\nreserved region. This prevents for instance from mapping an MSI doorbell\ninto the guest IPA space. For the moment we reject any overlapping. In the\nfuture, we might carve reserved regions out of the guest physical\nspace.\n\nReviewed-by: Punit Agrawal \u003cpunit.agrawal@arm.com\u003e\nSigned-off-by: Jean-Philippe Brucker \u003cjean-philippe.brucker@arm.com\u003e\nSigned-off-by: Will Deacon \u003cwill.deacon@arm.com\u003e\n"
    },
    {
      "commit": "fa1076ab6342355f2b400656233fb6fe0477e098",
      "tree": "90193c39bfa37f9da6c10c5e33dbdc3e3050f90d",
      "parents": [
        "82caa882a65cf25f7aa5435859665e270fe8efce"
      ],
      "author": {
        "name": "Jean-Philippe Brucker",
        "email": "jean-philippe.brucker@arm.com",
        "time": "Mon Jun 18 19:42:10 2018 +0100"
      },
      "committer": {
        "name": "Will Deacon",
        "email": "will.deacon@arm.com",
        "time": "Tue Jun 19 12:26:41 2018 +0100"
      },
      "message": "Introduce reserved memory regions\n\nWhen passing devices to the guest, there might be address ranges\nunavailable to the device. For instance, if address 0x10000000 corresponds\nto an MSI doorbell, any transaction from a device to that address will be\ndirected to the MSI controller and might not even reach the IOMMU. In that\ncase 0x10000000 is reserved by the physical IOMMU in the guest\u0027s physical\nspace.\n\nThis patch introduces a simple API to register reserved ranges of\naddresses that should not or cannot be provided to the guest. For the\nmoment it only checks that a reserved range does not overlap any user\nmemory (we don\u0027t consider MMIO) and aborts otherwise.\n\nIt should be possible instead to poke holes in the guest-physical memory\nmap and report them via the architecture\u0027s preferred route:\n* ARM and PowerPC can add reserved-memory nodes to the DT they provide to\n  the guest.\n* x86 could poke holes in the memory map reported with e820. This requires\n  to postpone creating the memory map until at least VFIO is initialized.\n* MIPS could describe the reserved ranges with the \"memmap\u003dmm$ss\" kernel\n  parameter.\n\nThis would also require to call KVM_SET_USER_MEMORY_REGION for all memory\nregions at the end of kvmtool initialisation. Extra care should be taken\nto ensure we don\u0027t break any architecture, since they currently rely on\nhaving a linear address space with at most two memory blocks.\n\nThis patch doesn\u0027t implement any address space carving. If an abort is\nencountered, user can try to rebuild kvmtool with different addresses or\nchange its IOMMU resv regions if possible.\n\nReviewed-by: Punit Agrawal \u003cpunit.agrawal@arm.com\u003e\nSigned-off-by: Jean-Philippe Brucker \u003cjean-philippe.brucker@arm.com\u003e\nSigned-off-by: Will Deacon \u003cwill.deacon@arm.com\u003e\n"
    },
    {
      "commit": "82caa882a65cf25f7aa5435859665e270fe8efce",
      "tree": "2d11040f8d931ea69728c61c4de38181ffc462d2",
      "parents": [
        "8dd28afedcf525f0b0b9be0c12760599ce162118"
      ],
      "author": {
        "name": "Jean-Philippe Brucker",
        "email": "jean-philippe.brucker@arm.com",
        "time": "Mon Jun 18 19:42:09 2018 +0100"
      },
      "committer": {
        "name": "Will Deacon",
        "email": "will.deacon@arm.com",
        "time": "Tue Jun 19 12:26:41 2018 +0100"
      },
      "message": "vfio: Support non-mmappable regions\n\nIn some cases device regions don\u0027t support mmap. They can still be made\navailable to the guest by trapping all accesses and forwarding reads or\nwrites to VFIO. Such regions may be:\n\n* PCI I/O port BARs.\n* Sub-page regions, for example a 4kB region on a host with 64k pages.\n* Similarly, sparse mmap regions. For example when VFIO allows to mmap\n  fragments of a PCI BAR and forbids accessing things like MSI-X tables.\n  We don\u0027t support the sparse capability at the moment, so trap these\n  regions instead (if VFIO rejects the mmap).\n\nReviewed-by: Punit Agrawal \u003cpunit.agrawal@arm.com\u003e\nSigned-off-by: Jean-Philippe Brucker \u003cjean-philippe.brucker@arm.com\u003e\nSigned-off-by: Will Deacon \u003cwill.deacon@arm.com\u003e\n"
    },
    {
      "commit": "8dd28afedcf525f0b0b9be0c12760599ce162118",
      "tree": "6d9c860116e3c4b221f5c9fc5020226b09a22f0b",
      "parents": [
        "c9888d9571ca6fa0093318c06e71220df5c3d8ec"
      ],
      "author": {
        "name": "Jean-Philippe Brucker",
        "email": "jean-philippe.brucker@arm.com",
        "time": "Mon Jun 18 19:42:08 2018 +0100"
      },
      "committer": {
        "name": "Will Deacon",
        "email": "will.deacon@arm.com",
        "time": "Tue Jun 19 12:26:40 2018 +0100"
      },
      "message": "vfio-pci: add MSI support\n\nAllow guests to use the MSI capability in devices that support it. Emulate\nthe MSI capability, which is simpler than MSI-X as it doesn\u0027t rely on\nexternal tables. Reuse most of the MSI-X code. Guests may choose between\nMSI and MSI-X at runtime since we present both capabilities, but they\ncannot enable MSI and MSI-X at the same time (forbidden by PCI).\n\nReviewed-by: Punit Agrawal \u003cpunit.agrawal@arm.com\u003e\nSigned-off-by: Jean-Philippe Brucker \u003cjean-philippe.brucker@arm.com\u003e\nSigned-off-by: Will Deacon \u003cwill.deacon@arm.com\u003e\n"
    },
    {
      "commit": "c9888d9571ca6fa0093318c06e71220df5c3d8ec",
      "tree": "1f5eb5188de6d4aafedaedb9d0fb1230c652618c",
      "parents": [
        "6078a4548cfdca42c766c67947986c90310a8546"
      ],
      "author": {
        "name": "Jean-Philippe Brucker",
        "email": "jean-philippe.brucker@arm.com",
        "time": "Mon Jun 18 19:42:07 2018 +0100"
      },
      "committer": {
        "name": "Will Deacon",
        "email": "will.deacon@arm.com",
        "time": "Tue Jun 19 12:26:40 2018 +0100"
      },
      "message": "vfio-pci: add MSI-X support\n\nAdd virtual MSI-X tables for PCI devices, and create IRQFD routes to let\nthe kernel inject MSIs from a physical device directly into the guest.\n\nIt would be tempting to create the MSI routes at init time before starting\nvCPUs, when we can afford to exit gracefully. But some of it must be\ninitialized when the guest requests it.\n\n* On the KVM side, MSIs must be enabled after devices allocate their IRQ\n  lines and irqchips are operational, which can happen until late_init.\n\n* On the VFIO side, hardware state of devices may be updated when setting\n  up MSIs. For example, when passing a virtio-pci-legacy device to the\n  guest:\n\n  (1) The device-specific configuration layout (in BAR0) depends on\n      whether MSIs are enabled or not in the device. If they are enabled,\n      the device-specific configuration starts at offset 24, otherwise it\n      starts at offset 20.\n  (2) Linux guest assumes that MSIs are initially disabled (doesn\u0027t\n      actually check the capability). So it reads the device config at\n      offset 20.\n  (3) Had we enabled MSIs early, host would have enabled the MSI-X\n      capability and device would return the config at offset 24.\n  (4) The guest would read junk and explode.\n\nTherefore we have to create MSI-X routes when the guest requests MSIs, and\nenable/disable them in VFIO when the guest pokes the MSI-X capability. We\nhave to follow both physical and virtual state of the capability, which\nmakes the state machine a bit complex, but I think it works.\n\nAn important missing feature is the absence of pending MSI handling. When\na vector or the function is masked, we should rewire the IRQFD to a\nspecial thread that keeps note of pending interrupts (or just poll the\nIRQFD before recreating the route?). And when the vector is unmasked, one\nMSI should be injected if it was pending. At the moment no MSI is\ninjected, we simply disconnect the IRQFD and all messages are lost.\n\nReviewed-by: Punit Agrawal \u003cpunit.agrawal@arm.com\u003e\nSigned-off-by: Jean-Philippe Brucker \u003cjean-philippe.brucker@arm.com\u003e\nSigned-off-by: Will Deacon \u003cwill.deacon@arm.com\u003e\n"
    },
    {
      "commit": "6078a4548cfdca42c766c67947986c90310a8546",
      "tree": "6b0fca0e59226fd272e5db5df98e2056a9fbbdd2",
      "parents": [
        "ac70b5aae6f514465bca744496ce7fb7859c6378"
      ],
      "author": {
        "name": "Jean-Philippe Brucker",
        "email": "jean-philippe.brucker@arm.com",
        "time": "Mon Jun 18 19:42:06 2018 +0100"
      },
      "committer": {
        "name": "Will Deacon",
        "email": "will.deacon@arm.com",
        "time": "Tue Jun 19 12:26:40 2018 +0100"
      },
      "message": "Add PCI device passthrough using VFIO\n\nAssigning devices using VFIO allows the guest to have direct access to the\ndevice, whilst filtering accesses to sensitive areas by trapping config\nspace accesses and mapping DMA with an IOMMU.\n\nThis patch adds a new option to lkvm run: --vfio-pci\u003d\u003cBDF\u003e. Before\nassigning a device to a VM, some preparation is required. As described in\nLinux Documentation/vfio.txt, the device driver needs to be changed to\nvfio-pci:\n\n  $ dev\u003d0000:00:00.0\n\n  $ echo $dev \u003e /sys/bus/pci/devices/$dev/driver/unbind\n  $ echo vfio-pci \u003e /sys/bus/pci/devices/$dev/driver_override\n  $ echo $dev \u003e /sys/bus/pci/drivers_probe\n\nAdding --vfio-pci\u003d$dev to lkvm-run will pass the device to the guest.\nMultiple devices can be passed to the guest by adding more --vfio-pci\nparameters.\n\nThis patch only implements PCI with INTx. MSI-X routing will be added in a\nsubsequent patch, and at some point we might add support for passing\nplatform devices to guests.\n\nReviewed-by: Punit Agrawal \u003cpunit.agrawal@arm.com\u003e\nSigned-off-by: Will Deacon \u003cwill.deacon@arm.com\u003e\nSigned-off-by: Robin Murphy \u003crobin.murphy@arm.com\u003e\nSigned-off-by: Jean-Philippe Brucker \u003cjean-philippe.brucker@arm.com\u003e\nSigned-off-by: Will Deacon \u003cwill.deacon@arm.com\u003e\n"
    },
    {
      "commit": "ac70b5aae6f514465bca744496ce7fb7859c6378",
      "tree": "05f9f169f66074d8899356b556e2ea260b584f36",
      "parents": [
        "b70d1b9fc0a9ac6c47b0b9ef2fe80bf3542b0bb3"
      ],
      "author": {
        "name": "Jean-Philippe Brucker",
        "email": "jean-philippe.brucker@arm.com",
        "time": "Mon Jun 18 19:42:05 2018 +0100"
      },
      "committer": {
        "name": "Will Deacon",
        "email": "will.deacon@arm.com",
        "time": "Tue Jun 19 12:26:40 2018 +0100"
      },
      "message": "Add fls_long and roundup_pow_of_two helpers\n\nIt\u0027s always nice to have a log2 handy, and the vfio-pci code will need to\nperform power of two allocation from an arbitrary size. Add fls_long and\nroundup_pow_of_two, based on the GCC builtin.\n\nReviewed-by: Punit Agrawal \u003cpunit.agrawal@arm.com\u003e\nSigned-off-by: Jean-Philippe Brucker \u003cjean-philippe.brucker@arm.com\u003e\nSigned-off-by: Will Deacon \u003cwill.deacon@arm.com\u003e\n"
    },
    {
      "commit": "b70d1b9fc0a9ac6c47b0b9ef2fe80bf3542b0bb3",
      "tree": "32d6220a40860c678241ceaa42dae6edcad84744",
      "parents": [
        "1a51c93d9407515ba049c2f705631692d469473b"
      ],
      "author": {
        "name": "Jean-Philippe Brucker",
        "email": "jean-philippe.brucker@arm.com",
        "time": "Mon Jun 18 19:42:04 2018 +0100"
      },
      "committer": {
        "name": "Will Deacon",
        "email": "will.deacon@arm.com",
        "time": "Tue Jun 19 12:26:39 2018 +0100"
      },
      "message": "Import VFIO headers\n\nTo ensure consistency between kvmtool and the kernel, import the UAPI\nheaders of the VFIO version we implement. This is from Linux v4.12.\n\nReviewed-by: Punit Agrawal \u003cpunit.agrawal@arm.com\u003e\nSigned-off-by: Jean-Philippe Brucker \u003cjean-philippe.brucker@arm.com\u003e\nSigned-off-by: Will Deacon \u003cwill.deacon@arm.com\u003e\n"
    },
    {
      "commit": "1a51c93d9407515ba049c2f705631692d469473b",
      "tree": "81dad39961d456b37da02f12fb6976efb4799792",
      "parents": [
        "8f46c736eae508f0973d41618db17cced6b5796c"
      ],
      "author": {
        "name": "Jean-Philippe Brucker",
        "email": "jean-philippe.brucker@arm.com",
        "time": "Mon Jun 18 19:42:03 2018 +0100"
      },
      "committer": {
        "name": "Will Deacon",
        "email": "will.deacon@arm.com",
        "time": "Tue Jun 19 12:26:39 2018 +0100"
      },
      "message": "pci: add capability helpers\n\nAdd a way to iterate over all capabilities in a config space. Add a search\nfunction for getting a specific capability.\n\nReviewed-by: Punit Agrawal \u003cpunit.agrawal@arm.com\u003e\nSigned-off-by: Jean-Philippe Brucker \u003cjean-philippe.brucker@arm.com\u003e\nSigned-off-by: Will Deacon \u003cwill.deacon@arm.com\u003e\n"
    },
    {
      "commit": "8f46c736eae508f0973d41618db17cced6b5796c",
      "tree": "07aed1b6c60d36a903f4c1812a766348550d6c1a",
      "parents": [
        "e59679d2a19c5f25a973086ccd356328070e6009"
      ],
      "author": {
        "name": "Jean-Philippe Brucker",
        "email": "jean-philippe.brucker@arm.com",
        "time": "Mon Jun 18 19:42:02 2018 +0100"
      },
      "committer": {
        "name": "Will Deacon",
        "email": "will.deacon@arm.com",
        "time": "Tue Jun 19 12:26:39 2018 +0100"
      },
      "message": "Extend memory bank API with memory types\n\nIntroduce memory types RAM and DEVICE, along with a way for subsystems to\nquery the global memory banks. This is required by VFIO, which will need\nto pin and map guest RAM so that assigned devices can safely do DMA to it.\nDepending on the architecture, the physical map is made of either one or\ntwo RAM regions. In addition, this new memory types API paves the way to\nreserved memory regions introduced in a subsequent patch.\n\nFor the moment we put vesa and ivshmem memory into the DEVICE category, so\nthey don\u0027t have to be pinned. This means that physical devices assigned\nwith VFIO won\u0027t be able to DMA to the vesa frame buffer or ivshmem. In\norder to do that, simply changing the type to \"RAM\" would work. But to\nkeep the types consistent, it would be better to introduce flags such as\nKVM_MEM_TYPE_DMA that would complement both RAM and DEVICE type. We could\nthen reuse the API for generating firmware information (that is, for x86\nbios; DT supports reserved-memory description).\n\nReviewed-by: Punit Agrawal \u003cpunit.agrawal@arm.com\u003e\nSigned-off-by: Jean-Philippe Brucker \u003cjean-philippe.brucker@arm.com\u003e\nSigned-off-by: Will Deacon \u003cwill.deacon@arm.com\u003e\n"
    },
    {
      "commit": "e59679d2a19c5f25a973086ccd356328070e6009",
      "tree": "9bac6a07381ee0ecdc1033ca61ee89ed165b8acd",
      "parents": [
        "ff01b5dbbd040d39619f0f033da6eac5dbed3b2b"
      ],
      "author": {
        "name": "Jean-Philippe Brucker",
        "email": "jean-philippe.brucker@arm.com",
        "time": "Mon Jun 18 19:42:01 2018 +0100"
      },
      "committer": {
        "name": "Will Deacon",
        "email": "will.deacon@arm.com",
        "time": "Tue Jun 19 12:26:38 2018 +0100"
      },
      "message": "irq: add irqfd helpers\n\nAdd helpers to add and remove IRQFD routing for both irqchips and MSIs.\nWe have to make a special case of IRQ lines on ARM where the\ninitialisation order goes like this:\n\n (1) Devices reserve their IRQ lines\n (2) VGIC is setup with VGIC_CTRL_INIT (in a late_init call)\n (3) MSIs are reserved lazily, when the guest needs them\n\nSince we cannot setup IRQFD before (2), store the IRQFD routing for IRQ\nlines temporarily until we\u0027re ready to submit them.\n\nReviewed-by: Punit Agrawal \u003cpunit.agrawal@arm.com\u003e\nSigned-off-by: Jean-Philippe Brucker \u003cjean-philippe.brucker@arm.com\u003e\nSigned-off-by: Will Deacon \u003cwill.deacon@arm.com\u003e\n"
    },
    {
      "commit": "ff01b5dbbd040d39619f0f033da6eac5dbed3b2b",
      "tree": "3c4ccb83acd2be552cf3c32b84fa5640607b3abe",
      "parents": [
        "023fdaae48b45aec087551804616e0836a74d675"
      ],
      "author": {
        "name": "Jean-Philippe Brucker",
        "email": "jean-philippe.brucker@arm.com",
        "time": "Mon Jun 18 19:42:00 2018 +0100"
      },
      "committer": {
        "name": "Will Deacon",
        "email": "will.deacon@arm.com",
        "time": "Tue Jun 19 12:26:38 2018 +0100"
      },
      "message": "pci: allow to specify IRQ type for PCI devices\n\nCurrently all our virtual device interrupts are edge-triggered. But we\u0027re\ngoing to need level-triggered interrupts when passing physical devices.\nLet the device configure its interrupt kind. Keep edge as default, to\navoid changing existing users.\n\nReviewed-by: Punit Agrawal \u003cpunit.agrawal@arm.com\u003e\nSigned-off-by: Jean-Philippe Brucker \u003cjean-philippe.brucker@arm.com\u003e\nSigned-off-by: Will Deacon \u003cwill.deacon@arm.com\u003e\n"
    },
    {
      "commit": "023fdaae48b45aec087551804616e0836a74d675",
      "tree": "aa51917b47e88c9d48e9de2cd9defb9d251fc2e3",
      "parents": [
        "9a0069409a54db96e24bd2bb6a39a7ab673fd4be"
      ],
      "author": {
        "name": "Jean-Philippe Brucker",
        "email": "jean-philippe.brucker@arm.com",
        "time": "Mon Jun 18 19:41:59 2018 +0100"
      },
      "committer": {
        "name": "Will Deacon",
        "email": "will.deacon@arm.com",
        "time": "Tue Jun 19 12:26:38 2018 +0100"
      },
      "message": "pci: add config operations callbacks on the PCI header\n\nWhen implementing PCI device passthrough, we will need to forward config\naccesses from a guest to the VFIO driver. Add a private cfg_ops structure\nto the PCI header, and use it in the PCI config access functions.\n\nA read from the guest first calls into the device\u0027s cfg_ops.read, to let\nthe backend update the local header before filling the guest register.\nSame happens for a write, we let the backend perform the write and replace\nthe guest-provided register with whatever sticks, before updating the local\nheader.\n\nTry to untangle the PCI config access logic while we\u0027re at it.\n\nReviewed-by: Punit Agrawal \u003cpunit.agrawal@arm.com\u003e\nSigned-off-by: Will Deacon \u003cwill.deacon@arm.com\u003e\n[JPB: moved to a separate patch]\nSigned-off-by: Jean-Philippe Brucker \u003cjean-philippe.brucker@arm.com\u003e\nSigned-off-by: Will Deacon \u003cwill.deacon@arm.com\u003e\n"
    },
    {
      "commit": "9a0069409a54db96e24bd2bb6a39a7ab673fd4be",
      "tree": "4b745cff4556265e958e4f8e171d7bacadd4c5e1",
      "parents": [
        "a43b08e86842a95391a3d18f734fe36c51236ef5"
      ],
      "author": {
        "name": "Andre Przywara",
        "email": "andre.przywara@arm.com",
        "time": "Wed Apr 25 11:09:45 2018 +0100"
      },
      "committer": {
        "name": "Will Deacon",
        "email": "will.deacon@arm.com",
        "time": "Wed May 23 13:21:58 2018 +0100"
      },
      "message": "arm/gic: move GICv2M gadget size into private header\n\nThe header files in arm/aarch*/include/asm/ are directly copied from\nLinux, so we can\u0027t just put our own definitions in there.\nMove the GICv2M MMIO frame size into a more private header, to avoid\nbreaking the build once the header files are synced from Linux.\n\nSigned-off-by: Andre Przywara \u003candre.przywara@arm.com\u003e\nSigned-off-by: Will Deacon \u003cwill.deacon@arm.com\u003e\n"
    },
    {
      "commit": "a43b08e86842a95391a3d18f734fe36c51236ef5",
      "tree": "5981280fdd6ebf10a72a1667a6b3b36526e21b22",
      "parents": [
        "a5d36dd12d40380024e4c905f11b43a55fd2523b"
      ],
      "author": {
        "name": "Andre Przywara",
        "email": "andre.przywara@arm.com",
        "time": "Wed Apr 25 11:09:44 2018 +0100"
      },
      "committer": {
        "name": "Will Deacon",
        "email": "will.deacon@arm.com",
        "time": "Wed May 23 13:21:58 2018 +0100"
      },
      "message": "arm/gic: avoid GICv2m MMIO frame overlap\n\nCurrently we accidentally overlap the GICv2m MMIO frame with the CPU\ninterface region. Fix this by moving the v2m frame below the CPUI region.\n\nSigned-off-by: Andre Przywara \u003candre.przywara@arm.com\u003e\nSigned-off-by: Will Deacon \u003cwill.deacon@arm.com\u003e\n"
    },
    {
      "commit": "a5d36dd12d40380024e4c905f11b43a55fd2523b",
      "tree": "cf8fd7655e9bddf6912edb0d1fc43eae6a4e8bfc",
      "parents": [
        "0e1882a49f81cb15d328ef83a78849c0ea26eecc"
      ],
      "author": {
        "name": "Andre Przywara",
        "email": "andre.przywara@arm.com",
        "time": "Wed Apr 25 11:09:43 2018 +0100"
      },
      "committer": {
        "name": "Will Deacon",
        "email": "will.deacon@arm.com",
        "time": "Wed May 23 13:21:58 2018 +0100"
      },
      "message": "arm/gic: remove extra 64K from ITS allocation\n\nThe KVM_VGIC_V3_ITS_SIZE macro from the Linux API header file already\ncovers the doorbell page, so we don\u0027t need to add that extra page size\nin our code.\n\nSigned-off-by: Andre Przywara \u003candre.przywara@arm.com\u003e\nSigned-off-by: Will Deacon \u003cwill.deacon@arm.com\u003e\n"
    },
    {
      "commit": "0e1882a49f81cb15d328ef83a78849c0ea26eecc",
      "tree": "b19a99df685ed55075649b2f9563b0d9bb29ccd2",
      "parents": [
        "ed83730f9750e40ad0351cab8b22e09b2820da03"
      ],
      "author": {
        "name": "Jean-Philippe Brucker",
        "email": "jean-philippe.brucker@arm.com",
        "time": "Wed Apr 04 18:53:54 2018 +0100"
      },
      "committer": {
        "name": "Will Deacon",
        "email": "will.deacon@arm.com",
        "time": "Fri Apr 06 11:28:12 2018 +0100"
      },
      "message": "virtio/pci: Register a single eventfd for vhost\n\nVhost supports a single eventfd as the kick mechanism. Registering a\nsecond one will override the first. To ensure vhost works with our\nvirtio-pci, only register the kick eventfd that is used by the guest.\n\nFixes: a508ea95f954 (\"virtio/pci: Use port I/O for configuration registers by default\")\nSigned-off-by: Jean-Philippe Brucker \u003cjean-philippe.brucker@arm.com\u003e\nSigned-off-by: Will Deacon \u003cwill.deacon@arm.com\u003e\n"
    },
    {
      "commit": "ed83730f9750e40ad0351cab8b22e09b2820da03",
      "tree": "585f11dc7c338cd8fc042ff546b857dd11a19656",
      "parents": [
        "5e9dd8524f7f7960e80125787e16f3ec8f258ddf"
      ],
      "author": {
        "name": "Jean-Philippe Brucker",
        "email": "jean-philippe.brucker@arm.com",
        "time": "Wed Apr 04 18:53:53 2018 +0100"
      },
      "committer": {
        "name": "Will Deacon",
        "email": "will.deacon@arm.com",
        "time": "Fri Apr 06 11:28:12 2018 +0100"
      },
      "message": "ioeventfd: Don\u0027t register on the PIO bus if the arch doesn\u0027t support it\n\nvirtio/pci.c registers a notification ioeventfd on both PIO and MMIO\nbuses. But architectures other than x86 cannot differentiate MMIO from\nPIO traps, and the kernel always calls kvm_io_bus_read/write with\nKVM_MMIO_BUS as argument.\n\nAs a result kvmtool\u0027s ioeventfd isn\u0027t used with virtio PCI, because the\nkernel can\u0027t find it and all accesses to the doorbell return to\nuserspace. To fix it, don\u0027t set the PIO flag if the architecture doesn\u0027t\nsupport it.\n\nFixes: a508ea95f954 (\"virtio/pci: Use port I/O for configuration registers by default\")\nSigned-off-by: Jean-Philippe Brucker \u003cjean-philippe.brucker@arm.com\u003e\nSigned-off-by: Will Deacon \u003cwill.deacon@arm.com\u003e\n"
    },
    {
      "commit": "5e9dd8524f7f7960e80125787e16f3ec8f258ddf",
      "tree": "c840949c119c8ec3a6251b9fa959ce706cfad78c",
      "parents": [
        "bbea6c7ad7f6f2dbcebfe21d301f9b1cb9687538"
      ],
      "author": {
        "name": "Jean-Philippe Brucker",
        "email": "jean-philippe.brucker@arm.com",
        "time": "Wed Apr 04 18:53:52 2018 +0100"
      },
      "committer": {
        "name": "Will Deacon",
        "email": "will.deacon@arm.com",
        "time": "Fri Apr 06 11:28:12 2018 +0100"
      },
      "message": "ioeventfd: Always add a new event to the list\n\nWith vhost, the USER_POLL flags isn\u0027t passed to ioeventfd__add_event,\nthe function returns early and doesn\u0027t add the new event to the\nused_ioevents list. As a result ioeventfd__del_event doesn\u0027t remove the\nKVM event or free the structure. Always add the event to the list.\n\nSigned-off-by: Jean-Philippe Brucker \u003cjean-philippe.brucker@arm.com\u003e\nSigned-off-by: Will Deacon \u003cwill.deacon@arm.com\u003e\n"
    },
    {
      "commit": "bbea6c7ad7f6f2dbcebfe21d301f9b1cb9687538",
      "tree": "cb8fe8a371db97aa8603af4c4dfd820493150db8",
      "parents": [
        "15c4e1ef906e2713a7d9f8a12e8c732d74e1479b"
      ],
      "author": {
        "name": "Jean-Philippe Brucker",
        "email": "jean-philippe.brucker@arm.com",
        "time": "Tue Mar 13 11:35:02 2018 +0000"
      },
      "committer": {
        "name": "Will Deacon",
        "email": "will.deacon@arm.com",
        "time": "Mon Mar 19 11:20:11 2018 +0000"
      },
      "message": "virtio: Clean up next_desc\n\nThe wmb() in next_desc seems out of place and the comments are\ninaccurate. Remove the unnecessary barrier and clean up next_desc().\n\nnext_desc() is called by virt_queue__get_head_iov() when filling the iov\nwith desciptor addresses. It reads the descriptor\u0027s flag and next index.\nThe virt_queue__get_head_iov() only reads the direct and indirect\ndescriptors, and doesn\u0027t write any shared memory except from iov and\ncursors that will be read by the caller.\n\nAs far as I can see, vhost (the kernel implementation of virtio device)\ndoes well without any barrier here, so I think it might be safe to remove.\n\nSigned-off-by: Jean-Philippe Brucker \u003cjean-philippe.brucker@arm.com\u003e\nSigned-off-by: Will Deacon \u003cwill.deacon@arm.com\u003e\n"
    },
    {
      "commit": "15c4e1ef906e2713a7d9f8a12e8c732d74e1479b",
      "tree": "18f943151f4ccc74a5112f4bc0dc9329827d447f",
      "parents": [
        "a508ea95f954da77d87f1a5d6ee1d38b7b964a76"
      ],
      "author": {
        "name": "Jean-Philippe Brucker",
        "email": "jean-philippe.brucker@arm.com",
        "time": "Tue Mar 13 11:35:01 2018 +0000"
      },
      "committer": {
        "name": "Will Deacon",
        "email": "will.deacon@arm.com",
        "time": "Mon Mar 19 11:16:59 2018 +0000"
      },
      "message": "virtio: Fix ordering of avail index and descriptor read\n\nOne barrier seems to be missing from kvmtool\u0027s virtio implementation,\nbetween virt_queue__available() and virt_queue__pop(). In the following\nscenario \"avail\" represents the shared \"available\" structure in the virtio\nqueue:\n\n               Guest               |               Host\n                                   |\n    avail.ring[shadow] \u003d desc_idx  | while (avail.idx !\u003d shadow)\n    smp_wmb()                      |     /* missing smp_rmb() */\n    avail.idx \u003d ++shadow           |     desc_idx \u003d avail.ring[shadow++]\n\nIf the host observes the avail.idx write before the avail.ring update,\nthen it will fetch the wrong desc_idx. Add the missing barrier.\n\nThis seems to fix the horrible bug I\u0027m often seeing when running netperf\nin a guest (virtio-net + tap) on AMD Seattle. The TX thread reads the\nwrong descriptor index and either faults when accessing the TX buffer, or\npushes the wrong index to the used ring. In that case the guest complains\nthat \"id %u is not a head!\" and stops the queue.\n\nSigned-off-by: Jean-Philippe Brucker \u003cjean-philippe.brucker@arm.com\u003e\nSigned-off-by: Will Deacon \u003cwill.deacon@arm.com\u003e\n"
    },
    {
      "commit": "a508ea95f954da77d87f1a5d6ee1d38b7b964a76",
      "tree": "9505a351a3e4ca2a012ffa218dd74820d53e2728",
      "parents": [
        "b7af514c7ca3d87b2e2a2da9129b2bc4c86f78de"
      ],
      "author": {
        "name": "Jean-Philippe Brucker",
        "email": "jean-philippe.brucker@arm.com",
        "time": "Fri Nov 17 14:59:16 2017 +0000"
      },
      "committer": {
        "name": "Will Deacon",
        "email": "will.deacon@arm.com",
        "time": "Mon Jan 29 15:11:53 2018 +0000"
      },
      "message": "virtio/pci: Use port I/O for configuration registers by default\n\nModern virtio PCI is allowed to use both memory and I/O BARs for the\nconfig space, but legacy devices must use I/O for BAR0, as specified by\nVirtio v1.0 cs04:\n\n4.1.5.1.1.1 Legacy Interface: A Note on Device Layout Detection\n\"Transitional devices MUST expose the Legacy Interface in I/O space in\nBAR0.\"\n\nWhat virtio calls \"I/O space\" is most certainly port I/O, as hinted by the\ndiscussion in 4.1.4 Virtio Structure PCI Capabilities, where it\ndistinguishes \"memory BARs\" from \"I/O BARs\". This is also the conclusion\nmade by SeaBIOS [1], which only looks for port I/O in BAR0 when driving a\ntransitional device.\n\nI think MMIO was made the default by a463650caad6 (\"kvm tools: pci: add\nMMIO interface to virtio-pci devices\") to support ARM targets, but we\nsupport PIO as well as MMIO nowadays. So let\u0027s make the legacy virtio\nimplementation comply with the specification and use port I/O for BAR0.\n\n[1] https://patchwork.kernel.org/patch/10038927/\n\nSigned-off-by: Jean-Philippe Brucker \u003cjean-philippe.brucker@arm.com\u003e\nSigned-off-by: Will Deacon \u003cwill.deacon@arm.com\u003e\n"
    },
    {
      "commit": "b7af514c7ca3d87b2e2a2da9129b2bc4c86f78de",
      "tree": "e33f07a47e18ca3b10b41c001f1d4096f1cd1992",
      "parents": [
        "56a16c9079d30ea7821343270055ac33d2959677"
      ],
      "author": {
        "name": "Jean-Philippe Brucker",
        "email": "jean-philippe.brucker@arm.com",
        "time": "Fri Nov 17 14:59:15 2017 +0000"
      },
      "committer": {
        "name": "Will Deacon",
        "email": "will.deacon@arm.com",
        "time": "Mon Jan 29 15:11:53 2018 +0000"
      },
      "message": "virtio: Support drivers that don\u0027t negotiate VIRTIO_RING_F_EVENT_IDX\n\nBad things happen when the VIRTIO_RING_F_EVENT_IDX feature isn\u0027t\nnegotiated and we try to write the avail_event anyway. SeaBIOS, for\nexample, stores internal data where avail_event should be [1].\n\nTechnically the Virtio specification doesn\u0027t forbid the device from\nwriting the avail_event, and it\u0027s up to the driver to reserve space for it\n(\"the transitional driver [...] MUST allocate the total number of bytes\nfor the virtqueue according to [formula containing the avail event]\").\n\nBut it doesn\u0027t hurt us to avoid writing avail_event, and kvmtool needs\nchanges for interrupt suppression anyway, in order to comply with the\nspec. Indeed Virtio 1.0 cs04 says, in 2.4.7.2 Device Requirements:\nVirtqueue Interrupt Suppression:\n\"\"\"\nIf the VIRTIO_F_EVENT_IDX feature bit is not negotiated:\n* The device MUST ignore the used_event value.\n* After the device writes a descriptor index into the used ring:\n  - If flags is 1, the device SHOULD NOT send an interrupt.\n\"\"\"\n\nSo let\u0027s do that.\n\n[1] https://patchwork.kernel.org/patch/10038931/\n\nSigned-off-by: Jean-Philippe Brucker \u003cjean-philippe.brucker@arm.com\u003e\nSigned-off-by: Will Deacon \u003cwill.deacon@arm.com\u003e\n"
    },
    {
      "commit": "56a16c9079d30ea7821343270055ac33d2959677",
      "tree": "2f12eb80e3160a04915da9ef5adeb773f8b451ac",
      "parents": [
        "d7cfdc1739d54e8a52e2ec69a7df746178b3d490"
      ],
      "author": {
        "name": "Jean-Philippe Brucker",
        "email": "jean-philippe.brucker@arm.com",
        "time": "Fri Nov 17 14:59:14 2017 +0000"
      },
      "committer": {
        "name": "Will Deacon",
        "email": "will.deacon@arm.com",
        "time": "Mon Jan 29 15:11:53 2018 +0000"
      },
      "message": "virtio: Save negotiated features\n\nWe\u0027re going to need the features bits negotiated between host and guest in\nthe core code. Save them in the virtio_device structure.\n\nSigned-off-by: Jean-Philippe Brucker \u003cjean-philippe.brucker@arm.com\u003e\nSigned-off-by: Will Deacon \u003cwill.deacon@arm.com\u003e\n"
    },
    {
      "commit": "d7cfdc1739d54e8a52e2ec69a7df746178b3d490",
      "tree": "1841c6803e13e07236c9dd0600ff17b027ffaf92",
      "parents": [
        "f77d646ba01d04be5aad9449ac00719c043fe36e"
      ],
      "author": {
        "name": "Jean-Philippe Brucker",
        "email": "jean-philippe.brucker@arm.com",
        "time": "Wed Nov 29 19:46:35 2017 +0000"
      },
      "committer": {
        "name": "Will Deacon",
        "email": "will.deacon@arm.com",
        "time": "Thu Dec 14 11:44:15 2017 +0000"
      },
      "message": "virtio-console: Fix pthread_cond initialization race\n\nWhen characters are input on the console before virtio_console is\ninitialized, the term.c poll thread will get stuck in\nvirtio_console__inject_interrupt, because it ends up doing\npthread_cond_wait on the uninitialized poll_cond, which will hang\nindefinitely. As a result it becomes impossible to input characters into\nthe guest, even when using serial instead of virtio console.\n\nInitialize poll_cond statically to prevent this race.\n\nSigned-off-by: Jean-Philippe Brucker \u003cjean-philippe.brucker@arm.com\u003e\nSigned-off-by: Will Deacon \u003cwill.deacon@arm.com\u003e\n"
    },
    {
      "commit": "f77d646ba01d04be5aad9449ac00719c043fe36e",
      "tree": "ca2b22e4e3ac37bef04fc84b2954465f5cfb3302",
      "parents": [
        "f6108d72e977cce00e7bc824acd1d73da8cc9729"
      ],
      "author": {
        "name": "Andre Przywara",
        "email": "andre.przywara@arm.com",
        "time": "Fri Nov 03 16:10:21 2017 +0000"
      },
      "committer": {
        "name": "Will Deacon",
        "email": "will.deacon@arm.com",
        "time": "Fri Nov 03 16:19:58 2017 +0000"
      },
      "message": "irq.h: fix compilation error due to missing bool type\n\nCommit f6108d72e977 (\"Add GICv2m support\") introduced a bool return\ntype, but missed to include the respective header (this was probably\npart of a former prerequisite series).\nFix this by including the header.\n\nFixes: f6108d72e977cce00e7bc824acd1d73da8cc9729 (\"Add GICv2m support\")\nSigned-off-by: Andre Przywara \u003candre.przywara@arm.com\u003e\nSigned-off-by: Will Deacon \u003cwill.deacon@arm.com\u003e\n"
    },
    {
      "commit": "f6108d72e977cce00e7bc824acd1d73da8cc9729",
      "tree": "f862a7e0b19036498461a8f1005439f56defa7c1",
      "parents": [
        "37b8e06be3ce63d4b50a5066446ca0cb5c61ba43"
      ],
      "author": {
        "name": "Jean-Philippe Brucker",
        "email": "jean-philippe.brucker@arm.com",
        "time": "Fri Nov 03 11:38:41 2017 +0000"
      },
      "committer": {
        "name": "Will Deacon",
        "email": "will.deacon@arm.com",
        "time": "Fri Nov 03 14:37:00 2017 +0000"
      },
      "message": "Add GICv2m support\n\nGICv2m is a small extension to the GICv2 architecture, specified in the\nServer Base System Architecture (SBSA). It adds a set of register to\nconverts MSIs into SPIs, effectively enabling MSI support for pre-GICv3\nplatforms.\n\nImplement a GICv2m emulation entirely in userspace. Add a thin translation\nlayer in irq.c to catch the MSI-\u003eSPI routing setup of the guest, and then\ntransform irqfd injection of MSI into the associated SPI. There shouldn\u0027t\nbe any significant runtime overhead compared to gicv3-its.\n\nThe device can be enabled by passing \"--irqchip gicv2m\" to kvmtool.\n\nSigned-off-by: Jean-Philippe Brucker \u003cjean-philippe.brucker@arm.com\u003e\nSigned-off-by: Will Deacon \u003cwill.deacon@arm.com\u003e\n"
    },
    {
      "commit": "37b8e06be3ce63d4b50a5066446ca0cb5c61ba43",
      "tree": "659aa7afb75f3aedfdfff90935bf3d6f349513b4",
      "parents": [
        "6c7239532b7db4490a1fbc67d5f288f20eac9c21"
      ],
      "author": {
        "name": "Jean-Philippe Brucker",
        "email": "jean-philippe.brucker@arm.com",
        "time": "Fri Nov 03 11:38:40 2017 +0000"
      },
      "committer": {
        "name": "Will Deacon",
        "email": "will.deacon@arm.com",
        "time": "Fri Nov 03 14:35:51 2017 +0000"
      },
      "message": "Prevent segfault when kvm_pause is called too early\n\nWhen kvm_pause is called early (from taking the rwlock), it segfaults\nbecause the CPU array is initialized slightly later. Fix this.\n\nThis doesn\u0027t happen at the moment but the gicv2m patch will register an\nMMIO region, which requires br_write_lock. gicv2m is instantiated by\nkvm__arch_init from within core_init (level 0). The CPU array is\ninitialized later in base_init (level 1).\n\nSigned-off-by: Jean-Philippe Brucker \u003cjean-philippe.brucker@arm.com\u003e\nSigned-off-by: Will Deacon \u003cwill.deacon@arm.com\u003e\n"
    }
  ],
  "next": "6c7239532b7db4490a1fbc67d5f288f20eac9c21"
}
