)]}'
{
  "commit": "fcabc288df9a44a86be68bde2c64eda38f1799b9",
  "tree": "85275a8939d5fce4ca85dc2cef8a2fd1c17143dc",
  "parents": [
    "d3910e1c9ffcfc0df36c7687c6779275c5bc91b9"
  ],
  "author": {
    "name": "Barret Rhoden",
    "email": "brho@cs.berkeley.edu",
    "time": "Tue Oct 01 10:04:34 2019 -0400"
  },
  "committer": {
    "name": "Barret Rhoden",
    "email": "brho@cs.berkeley.edu",
    "time": "Tue Oct 08 17:11:11 2019 -0400"
  },
  "message": "dma: rewrite DMA allocations with arenas and KMCs\n\nA dma_pool is now just a slab allocator on top of a struct dma_arena.\nThese allocators provide device-accessible memory *allocations*.  You\ncan still \u0027DMA-map\u0027 kernel memory for drivers.  This is just for the\nLinux DMA alloc APIs, for now.\n\nThe reason for some of the kpages-\u003epaddr-\u003ekaddr acrobatics is I want to\nsupport address spaces other than physical and kernel virtual.\nSpecifically, I\u0027d like to try to keep a driver in the kernel, but with\nthe device operating in the user\u0027s address space, i.e. behind an IOMMU.\nIn that sense, the driver *code* is like a syscall in the user\u0027s address\nspace, and the device is like a processor in Ring 3.  We\u0027ll see.\n\nEventually, we could make all of our drivers use these, and perhaps sort\nout how to do DMA pinning with the same sense of device addresses.\n\nIf it turns out this is a horrible idea, we can make the dma_pool just\npull from kpages and be done with all the to_cpu_addr() translations.\n\nSigned-off-by: Barret Rhoden \u003cbrho@cs.berkeley.edu\u003e\n",
  "tree_diff": [
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "8343dec725814e6facf4d8991f09b290b8e29d1f",
      "new_mode": 33188,
      "new_path": "kern/include/dma.h"
    },
    {
      "type": "modify",
      "old_id": "c69e0703a4562a1d644d83001ad3b948a95c6bfc",
      "old_mode": 33188,
      "old_path": "kern/include/linux/compat_todo.h",
      "new_id": "c05b71b5fed784e8443ffb1d88a325f8dc8d4ef0",
      "new_mode": 33188,
      "new_path": "kern/include/linux/compat_todo.h"
    },
    {
      "type": "modify",
      "old_id": "37af5f9d2d68278857f6781ecb93ecd1dab9247e",
      "old_mode": 33188,
      "old_path": "kern/include/linux_compat.h",
      "new_id": "bc92122654652545092ea2ad41e7778dc9c55d1a",
      "new_mode": 33188,
      "new_path": "kern/include/linux_compat.h"
    },
    {
      "type": "modify",
      "old_id": "a2af5de17c31be85dda18e402787713241cf2d61",
      "old_mode": 33188,
      "old_path": "kern/src/Kbuild",
      "new_id": "3ea1fa95f1d269e8f2d5bceaf20bdfacf96588b4",
      "new_mode": 33188,
      "new_path": "kern/src/Kbuild"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "fcad42d81a24d5dfcc37e835f048c9e83f7d35d8",
      "new_mode": 33188,
      "new_path": "kern/src/dma.c"
    },
    {
      "type": "delete",
      "old_id": "b6d7f8ea100ab5b312d5b536334f79e2afb3e645",
      "old_mode": 33188,
      "old_path": "kern/src/dmapool.c",
      "new_id": "0000000000000000000000000000000000000000",
      "new_mode": 0,
      "new_path": "/dev/null"
    },
    {
      "type": "modify",
      "old_id": "5205c91c6e39d3a20befa9381b981e5069673b90",
      "old_mode": 33188,
      "old_path": "kern/src/init.c",
      "new_id": "a5e6349b0ad805447d8183ad0dd2b47b7d2d2f72",
      "new_mode": 33188,
      "new_path": "kern/src/init.c"
    },
    {
      "type": "modify",
      "old_id": "0b0be7f330e3924b54c21ef3ebba46cfb1e6b083",
      "old_mode": 33188,
      "old_path": "kern/src/ktest/kt_arena.c",
      "new_id": "651e565394981bd8318abce66c63909e8add8dc0",
      "new_mode": 33188,
      "new_path": "kern/src/ktest/kt_arena.c"
    }
  ]
}
