)]}'
{
  "commit": "c45a6816c19dee67b8f725e6646d428901a6dc24",
  "tree": "096e3263fd14e140685bcc3082394ff15f5aeddb",
  "parents": [
    "72e61eb40b55dd57031ec5971e810649f82b0259"
  ],
  "author": {
    "name": "Rusty Russell",
    "email": "rusty@rustcorp.com.au",
    "time": "Fri May 02 21:50:50 2008 -0500"
  },
  "committer": {
    "name": "Rusty Russell",
    "email": "rusty@rustcorp.com.au",
    "time": "Fri May 02 21:50:50 2008 +1000"
  },
  "message": "virtio: explicit advertisement of driver features\n\nA recent proposed feature addition to the virtio block driver revealed\nsome flaws in the API: in particular, we assume that feature\nnegotiation is complete once a driver\u0027s probe function returns.\n\nThere is nothing in the API to require this, however, and even I\ndidn\u0027t notice when it was violated.\n\nSo instead, we require the driver to specify what features it supports\nin a table, we can then move the feature negotiation into the virtio\ncore.  The intersection of device and driver features are presented in\na new \u0027features\u0027 bitmap in the struct virtio_device.\n\nNote that this highlights the difference between Linux unsigned-long\nbitmaps where each unsigned long is in native endian, and a\nstraight-forward little-endian array of bytes.\n\nDrivers can still remove feature bits in their probe routine if they\nreally have to.\n\nAPI changes:\n- dev-\u003econfig-\u003efeature() no longer gets and acks a feature.\n- drivers should advertise their features in the \u0027feature_table\u0027 field\n- use virtio_has_feature() for extra sanity when checking feature bits\n\nSigned-off-by: Rusty Russell \u003crusty@rustcorp.com.au\u003e\n",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "cc6d39383a3f353d24be05926b9228e09947d638",
      "old_mode": 33188,
      "old_path": "drivers/block/virtio_blk.c",
      "new_id": "78be6b8c89e0c00d8973fb83238743c538f6b4c0",
      "new_mode": 33188,
      "new_path": "drivers/block/virtio_blk.c"
    },
    {
      "type": "modify",
      "old_id": "2bc9bf7e88e5e8f03a62347a346a1fc2cfd2c747",
      "old_mode": 33188,
      "old_path": "drivers/lguest/lguest_device.c",
      "new_id": "7a643a6ee9a11430d615c58d597d8084264fbde6",
      "new_mode": 33188,
      "new_path": "drivers/lguest/lguest_device.c"
    },
    {
      "type": "modify",
      "old_id": "ad43421ab6f1cf49d0335df7b9ea6cb8f365285b",
      "old_mode": 33188,
      "old_path": "drivers/net/virtio_net.c",
      "new_id": "f926b5ab3d09291f2146ebd3928bc385503fb04e",
      "new_mode": 33188,
      "new_path": "drivers/net/virtio_net.c"
    },
    {
      "type": "modify",
      "old_id": "b535483bc556f5f153eb434583c8dc6593377164",
      "old_mode": 33188,
      "old_path": "drivers/virtio/virtio.c",
      "new_id": "13866789b3561027b803797a95c985f573671fd4",
      "new_mode": 33188,
      "new_path": "drivers/virtio/virtio.c"
    },
    {
      "type": "modify",
      "old_id": "fef88d84cef6efc0f6519fd4c5e93a128dc667cc",
      "old_mode": 33188,
      "old_path": "drivers/virtio/virtio_balloon.c",
      "new_id": "bfef604160d16460062f46b84f16c9320579c0d4",
      "new_mode": 33188,
      "new_path": "drivers/virtio/virtio_balloon.c"
    },
    {
      "type": "modify",
      "old_id": "de102a614e979ef2f138b5426229bf64bbf93dcc",
      "old_mode": 33188,
      "old_path": "drivers/virtio/virtio_pci.c",
      "new_id": "27e9fc9117cdfa69fee88e32e3636a844d803d5e",
      "new_mode": 33188,
      "new_path": "drivers/virtio/virtio_pci.c"
    },
    {
      "type": "modify",
      "old_id": "e7d10845b3c17be5c8bf26fa088a5c82c92e3af4",
      "old_mode": 33188,
      "old_path": "include/linux/virtio.h",
      "new_id": "06005fa9e982e0f703a7eef56f4108378c566f24",
      "new_mode": 33188,
      "new_path": "include/linux/virtio.h"
    },
    {
      "type": "modify",
      "old_id": "475572e976feccbb27c9138a08db76e92d3c0640",
      "old_mode": 33188,
      "old_path": "include/linux/virtio_config.h",
      "new_id": "50db245c81ad94f1131d88b512c100219475717b",
      "new_mode": 33188,
      "new_path": "include/linux/virtio_config.h"
    }
  ]
}
