)]}'
{
  "commit": "f95d47caae5302a63d92be9a0292abc90e2a14e1",
  "tree": "cfa963975d104c56aba28df6c941759175ed4b98",
  "parents": [
    "62111195800d80c66cdc69063ea3145878c99fbf"
  ],
  "author": {
    "name": "Jeremy Fitzhardinge",
    "email": "jeremy@goop.org",
    "time": "Thu Dec 07 02:14:02 2006 +0100"
  },
  "committer": {
    "name": "Andi Kleen",
    "email": "andi@basil.nowhere.org",
    "time": "Thu Dec 07 02:14:02 2006 +0100"
  },
  "message": "[PATCH] i386: Use %gs as the PDA base-segment in the kernel\n\nThis patch is the meat of the PDA change.  This patch makes several related\nchanges:\n\n1: Most significantly, %gs is now used in the kernel.  This means that on\n   entry, the old value of %gs is saved away, and it is reloaded with\n   __KERNEL_PDA.\n\n2: entry.S constructs the stack in the shape of struct pt_regs, and this\n   is passed around the kernel so that the process\u0027s saved register\n   state can be accessed.\n\n   Unfortunately struct pt_regs doesn\u0027t currently have space for %gs\n   (or %fs). This patch extends pt_regs to add space for gs (no space\n   is allocated for %fs, since it won\u0027t be used, and it would just\n   complicate the code in entry.S to work around the space).\n\n3: Because %gs is now saved on the stack like %ds, %es and the integer\n   registers, there are a number of places where it no longer needs to\n   be handled specially; namely context switch, and saving/restoring the\n   register state in a signal context.\n\n4: And since kernel threads run in kernel space and call normal kernel\n   code, they need to be created with their %gs \u003d\u003d __KERNEL_PDA.\n\nSigned-off-by: Jeremy Fitzhardinge \u003cjeremy@xensource.com\u003e\nSigned-off-by: Andi Kleen \u003cak@suse.de\u003e\nCc: Chuck Ebbert \u003c76306.1226@compuserve.com\u003e\nCc: Zachary Amsden \u003czach@vmware.com\u003e\nCc: Jan Beulich \u003cjbeulich@novell.com\u003e\nCc: Andi Kleen \u003cak@suse.de\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\n",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "70b19807acf99a85f0240575d30c18494a811118",
      "old_mode": 33188,
      "old_path": "arch/i386/kernel/asm-offsets.c",
      "new_id": "9620872d3534cdfacd7198d0931e84c629f67a36",
      "new_mode": 33188,
      "new_path": "arch/i386/kernel/asm-offsets.c"
    },
    {
      "type": "modify",
      "old_id": "2534e25ed7450400534fddef4406fa81720e51f1",
      "old_mode": 33188,
      "old_path": "arch/i386/kernel/cpu/common.c",
      "new_id": "4e63d8ce602b1f3821e13b296cd6ee9db21ecca6",
      "new_mode": 33188,
      "new_path": "arch/i386/kernel/cpu/common.c"
    },
    {
      "type": "modify",
      "old_id": "0069bf01603e2c8dc4821b71764720a881751953",
      "old_mode": 33188,
      "old_path": "arch/i386/kernel/entry.S",
      "new_id": "b99d4a16007872941972a88e45b44b31e91ee07a",
      "new_mode": 33188,
      "new_path": "arch/i386/kernel/entry.S"
    },
    {
      "type": "modify",
      "old_id": "4a83384c5a61bb5b6a26e2424810af01a71c7c13",
      "old_mode": 33188,
      "old_path": "arch/i386/kernel/head.S",
      "new_id": "5b14e95ac8b9c7cef80338adce8cb6545c79aaf2",
      "new_mode": 33188,
      "new_path": "arch/i386/kernel/head.S"
    },
    {
      "type": "modify",
      "old_id": "ae924c416b68422c2923b47c41fbda505f358061",
      "old_mode": 33188,
      "old_path": "arch/i386/kernel/process.c",
      "new_id": "905364d42847cea5f164462305073b6845af1ad5",
      "new_mode": 33188,
      "new_path": "arch/i386/kernel/process.c"
    },
    {
      "type": "modify",
      "old_id": "43002cfb40c4e2811bf5006c9126fa2ff1cfdd46",
      "old_mode": 33188,
      "old_path": "arch/i386/kernel/signal.c",
      "new_id": "65d7620eaa093756e083ed5d0f9786ccfc1bd917",
      "new_mode": 33188,
      "new_path": "arch/i386/kernel/signal.c"
    },
    {
      "type": "modify",
      "old_id": "1b1495372c4d59ddbf9294c06d73b452467679c0",
      "old_mode": 33188,
      "old_path": "include/asm-i386/mmu_context.h",
      "new_id": "68ff102d6f5e9e19a92641ce43e40caff64a3e92",
      "new_mode": 33188,
      "new_path": "include/asm-i386/mmu_context.h"
    },
    {
      "type": "modify",
      "old_id": "a9f2041c7c8735911c2be8ef94989c921c141c44",
      "old_mode": 33188,
      "old_path": "include/asm-i386/processor.h",
      "new_id": "f73cf836e6491f951dca57451954c23852005ac7",
      "new_mode": 33188,
      "new_path": "include/asm-i386/processor.h"
    },
    {
      "type": "modify",
      "old_id": "d505f501077a67bc77b01729a724b61eb6e26b7a",
      "old_mode": 33188,
      "old_path": "include/asm-i386/ptrace.h",
      "new_id": "bdbc894339b470b55fa6ed7848602bd8e5f4a071",
      "new_mode": 33188,
      "new_path": "include/asm-i386/ptrace.h"
    },
    {
      "type": "modify",
      "old_id": "8cdd3e72ba55f9ee52b098e67b1b7d4fcd04aa58",
      "old_mode": 33188,
      "old_path": "kernel/fork.c",
      "new_id": "fd22245e388102dbc085257810e1f62801016221",
      "new_mode": 33188,
      "new_path": "kernel/fork.c"
    }
  ]
}
