)]}'
{
  "commit": "86f4b6871c598e86f0542ed50d2ee5280fc66590",
  "tree": "de07bfcbb9e0c05f23290a218e0976d354b12b66",
  "parents": [
    "04e0639d4e77b6d55491d396c8aa13929ee8ed9a"
  ],
  "author": {
    "name": "Eric Blake",
    "email": "eblake@redhat.com",
    "time": "Wed Nov 18 01:52:59 2015 -0700"
  },
  "committer": {
    "name": "Markus Armbruster",
    "email": "armbru@redhat.com",
    "time": "Thu Dec 17 08:21:28 2015 +0100"
  },
  "message": "cpu: Convert CpuInfo into flat union\n\nThe CpuInfo struct is used only by the \u0027query-cpus\u0027 output\ncommand, so we are free to modify it by adding fields (clients\nare already supposed to ignore unknown output fields), or by\nchanging optional members to mandatory, while still keeping\nQMP wire compatibility with older versions of qemu.\n\nWhen qapi type CpuInfo was originally created for 0.14, we had\nno notion of a flat union, and instead just listed a bunch of\noptional fields with documentation about the mutually-exclusive\nchoice of which instruction pointer field(s) would be provided\nfor a given architecture.  But now that we have flat unions and\nintrospection, it is better to segregate off which fields will\nbe provided according to the actual architecture.  With this in\nplace, we no longer need the fields to be optional, because the\nchoice of the new \u0027arch\u0027 discriminator serves that role.\n\nThis has an additional benefit: the old all-in-one struct was\nthe only place in the code base that had a case-sensitive\nnaming of members \u0027pc\u0027 vs. \u0027PC\u0027.  Separating these spellings\ninto different branches of the flat union will allow us to add\nrestrictions against future case-insensitive collisions, since\nthat is generally a poor interface practice.\n\nSigned-off-by: Eric Blake \u003ceblake@redhat.com\u003e\nMessage-Id: \u003c1447836791-369-25-git-send-email-eblake@redhat.com\u003e\n[Spelling of CPUInfo{SPARC,PPC,MIPS} fixed]\nSigned-off-by: Markus Armbruster \u003carmbru@redhat.com\u003e\n",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "43676fa1f31622b002387e7da02cfbcecdc8e85a",
      "old_mode": 33188,
      "old_path": "cpus.c",
      "new_id": "ea295843971c85ad7ee4b76e7da27f3de7c19a3e",
      "new_mode": 33188,
      "new_path": "cpus.c"
    },
    {
      "type": "modify",
      "old_id": "1b402c4b74fab5f6ac2e1ffb4c3f77bc6cb0f321",
      "old_mode": 33188,
      "old_path": "hmp.c",
      "new_id": "c2b2c161c8c16c3c3a35987f806e85abcb6ce6ec",
      "new_mode": 33188,
      "new_path": "hmp.c"
    },
    {
      "type": "modify",
      "old_id": "8b1a423fa7973946a6d764aa8dbdfe53e6acf268",
      "old_mode": 33188,
      "old_path": "qapi-schema.json",
      "new_id": "f014a80f7246e8e29e00d714a46ce5ea77a0638d",
      "new_mode": 33188,
      "new_path": "qapi-schema.json"
    },
    {
      "type": "modify",
      "old_id": "20a92f99850cd5473a221dbc4daf624b1104b622",
      "old_mode": 33188,
      "old_path": "qmp-commands.hx",
      "new_id": "6f3a25d058a71d4f6884103e790d088077f84cbd",
      "new_mode": 33188,
      "new_path": "qmp-commands.hx"
    }
  ]
}
