)]}'
{
  "commit": "63cc8c75156462d4b42cbdd76c293b7eee7ddbfe",
  "tree": "e014b4c61399f8f74347352e6ea76ddf1502dcfa",
  "parents": [
    "75d3bce2fc0a80f435fe12f2c9ed2632c8ac29e4"
  ],
  "author": {
    "name": "Eric Dumazet",
    "email": "dada1@cosmosbay.com",
    "time": "Mon May 12 15:44:40 2008 +0200"
  },
  "committer": {
    "name": "Thomas Gleixner",
    "email": "tglx@linutronix.de",
    "time": "Sun May 25 07:03:46 2008 +0200"
  },
  "message": "percpu: introduce DEFINE_PER_CPU_PAGE_ALIGNED() macro\n\nWhile examining holes in percpu section I found this :\n\nc05f5000 D per_cpu__current_task\nc05f5000 D __per_cpu_start\nc05f5004 D per_cpu__cpu_number\nc05f5008 D per_cpu__irq_regs\nc05f500c d per_cpu__cpu_devices\nc05f5040 D per_cpu__cyc2ns\n\n\u003cBig Hole of about 4000 bytes\u003e\n\nc05f6000 d per_cpu__cpuid4_info\nc05f6004 d per_cpu__cache_kobject\nc05f6008 d per_cpu__index_kobject\n\n\u003cBig Hole of about 4000 bytes\u003e\n\nc05f7000 D per_cpu__gdt_page\n\nThis is because gdt_page is a percpu variable, defined with\na page alignement, and linker is doing its job, two times because of .o\nnesting in the build process.\n\nI introduced a new macro DEFINE_PER_CPU_PAGE_ALIGNED() to avoid\nwasting this space. All page aligned variables (only one at this time)\nare put in a separate\nsubsection .data.percpu.page_aligned, at the very begining of percpu zone.\n\nBefore patch , on a x86_32 machine :\n\n.data.percpu                30232   3227471872\n.data.percpu                22168   3227471872\n\nThats 8064 bytes saved for each CPU.\n\nSigned-off-by: Eric Dumazet \u003cdada1@cosmosbay.com\u003e\nSigned-off-by: Ingo Molnar \u003cmingo@elte.hu\u003e\nSigned-off-by: Thomas Gleixner \u003ctglx@linutronix.de\u003e\n",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "d0463a9462477716bd065b5c822cd34e96812282",
      "old_mode": 33188,
      "old_path": "arch/x86/kernel/cpu/common.c",
      "new_id": "b2f54fafb8bca41845a9a3522ff0080899014e2b",
      "new_mode": 33188,
      "new_path": "arch/x86/kernel/cpu/common.c"
    },
    {
      "type": "modify",
      "old_id": "ce5ed083a1e905e463486e8f05e9125d2f41d157",
      "old_mode": 33188,
      "old_path": "arch/x86/kernel/vmlinux_32.lds.S",
      "new_id": "0f7c29a8c4ea58f968590788b21979a8bfab82dd",
      "new_mode": 33188,
      "new_path": "arch/x86/kernel/vmlinux_32.lds.S"
    },
    {
      "type": "modify",
      "old_id": "f054778e916c08e0b1e7cc85dd028de15b21edb2",
      "old_mode": 33188,
      "old_path": "include/asm-generic/vmlinux.lds.h",
      "new_id": "69e5c1182fde7997b9ed208f4fdf30531c4953d5",
      "new_mode": 33188,
      "new_path": "include/asm-generic/vmlinux.lds.h"
    },
    {
      "type": "modify",
      "old_id": "4cdd393e71e1bb70ee0286c16f2aeb08d1458d98",
      "old_mode": 33188,
      "old_path": "include/linux/percpu.h",
      "new_id": "2edacc8e6b8b887e6a2eed2ab0a1aeb9644ec62d",
      "new_mode": 33188,
      "new_path": "include/linux/percpu.h"
    }
  ]
}
