)]}'
{
  "log": [
    {
      "commit": "a5201129307f414890f9a4410e38da205f5d7359",
      "tree": "ad70c5f1d3b336ef5665a7fd5ad8707aaec23847",
      "parents": [
        "0998e4228aca046fbd747c3fed909791d52e88eb"
      ],
      "author": {
        "name": "Zachary Amsden",
        "email": "zach@vmware.com",
        "time": "Sat Sep 03 15:56:44 2005 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@evo.osdl.org",
        "time": "Mon Sep 05 00:06:12 2005 -0700"
      },
      "message": "[PATCH] x86: make IOPL explicit\n\nThe pushf/popf in switch_to are ONLY used to switch IOPL.  Making this\nexplicit in C code is more clear.  This pushf/popf pair was added as a\nbugfix for leaking IOPL to unprivileged processes when using\nsysenter/sysexit based system calls (sysexit does not restore flags).\n\nWhen requesting an IOPL change in sys_iopl(), it is just as easy to change\nthe current flags and the flags in the stack image (in case an IRET is\nrequired), but there is no reason to force an IRET if we came in from the\nSYSENTER path.\n\nThis change is the minimal solution for supporting a paravirtualized Linux\nkernel that allows user processes to run with I/O privilege.  Other\nsolutions require radical rewrites of part of the low level fault / system\ncall handling code, or do not fully support sysenter based system calls.\n\nUnfortunately, this added one field to the thread_struct.  But as a bonus,\non P4, the fastest time measured for switch_to() went from 312 to 260\ncycles, a win of about 17% in the fast case through this performance\ncritical path.\n\nSigned-off-by: Zachary Amsden \u003czach@vmware.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "4d37e7e3fd851428dede4d05d3e69d03795a744a",
      "tree": "f830928a0baf81f462bc9176dacbaad2dac2bb65",
      "parents": [
        "245067d1674d451855692fcd4647daf9fd47f82d"
      ],
      "author": {
        "name": "Zachary Amsden",
        "email": "zach@vmware.com",
        "time": "Sat Sep 03 15:56:38 2005 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@evo.osdl.org",
        "time": "Mon Sep 05 00:06:11 2005 -0700"
      },
      "message": "[PATCH] i386: inline assembler: cleanup and encapsulate descriptor and task register management\n\ni386 inline assembler cleanup.\n\nThis change encapsulates descriptor and task register management.  Also,\nit is possible to improve assembler generation in two cases; savesegment\nmay store the value in a register instead of a memory location, which\nallows GCC to optimize stack variables into registers, and MOV MEM, SEG\nis always a 16-bit write to memory, making the casting in math-emu\nunnecessary.\n\nSigned-off-by: Zachary Amsden \u003czach@vmware.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "4bb0d3ec3e5b1e9e2399cdc641b3b6521ac9cdaa",
      "tree": "5e8d7646f5c6a2cec990b6d591f230d496b20664",
      "parents": [
        "2a0694d15d55d0deed928786a6393d5e45e37d76"
      ],
      "author": {
        "name": "Zachary Amsden",
        "email": "zach@vmware.com",
        "time": "Sat Sep 03 15:56:36 2005 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@evo.osdl.org",
        "time": "Mon Sep 05 00:06:11 2005 -0700"
      },
      "message": "[PATCH] i386: inline asm cleanup\n\ni386 Inline asm cleanup.  Use cr/dr accessor functions.\n\nAlso, a potential bugfix.  Also, some CR accessors really should be volatile.\nReads from CR0 (numeric state may change in an exception handler), writes to\nCR4 (flipping CR4.TSD) and reads from CR2 (page fault) prevent instruction\nre-ordering.  I did not add memory clobber to CR3 / CR4 / CR0 updates, as it\nwas not there to begin with, and in no case should kernel memory be clobbered,\nexcept when doing a TLB flush, which already has memory clobber.\n\nI noticed that page invalidation does not have a memory clobber.  I can\u0027t find\na bug as a result, but there is definitely a potential for a bug here:\n\n#define __flush_tlb_single(addr) \\\n\t__asm__ __volatile__(\"invlpg %0\": :\"m\" (*(char *) addr))\n\nSigned-off-by: Zachary Amsden \u003czach@vmware.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "fd51f666fa591294bd7462447512666e61c56ea0",
      "tree": "0addf0006900152975c38bd75fdfd238c9179013",
      "parents": [
        "d5b63d78f1e75f6c6f04862dfb2f2a4aeffafd4c"
      ],
      "author": {
        "name": "H. J. Lu",
        "email": "hjl@lucon.org",
        "time": "Sun May 01 08:58:48 2005 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@ppc970.osdl.org",
        "time": "Sun May 01 08:58:48 2005 -0700"
      },
      "message": "[PATCH] i386/x86_64 segment register access update\n\nThe new i386/x86_64 assemblers no longer accept instructions for moving\nbetween a segment register and a 32bit memory location, i.e.,\n\n        movl (%eax),%ds\n        movl %ds,(%eax)\n\nTo generate instructions for moving between a segment register and a\n16bit memory location without the 16bit operand size prefix, 0x66,\n\n        mov (%eax),%ds\n        mov %ds,(%eax)\n\nshould be used. It will work with both new and old assemblers. The\nassembler starting from 2.16.90.0.1 will also support\n\n        movw (%eax),%ds\n        movw %ds,(%eax)\n\nwithout the 0x66 prefix. I am enclosing patches for 2.4 and 2.6 kernels\nhere. The resulting kernel binaries should be unchanged as before, with\nold and new assemblers, if gcc never generates memory access for\n\n               unsigned gsindex;\n               asm volatile(\"movl %%gs,%0\" : \"\u003dg\" (gsindex));\n\nIf gcc does generate memory access for the code above, the upper bits\nin gsindex are undefined and the new assembler doesn\u0027t allow it.\n\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "1da177e4c3f41524e886b7f1b8a0c1fc7321cac2",
      "tree": "0bba044c4ce775e45a88a51686b5d9f90697ea9d",
      "parents": [],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@ppc970.osdl.org",
        "time": "Sat Apr 16 15:20:36 2005 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@ppc970.osdl.org",
        "time": "Sat Apr 16 15:20:36 2005 -0700"
      },
      "message": "Linux-2.6.12-rc2\n\nInitial git repository build. I\u0027m not bothering with the full history,\neven though we have it. We can create a separate \"historical\" git\narchive of that later if we want to, and in the meantime it\u0027s about\n3.2GB when imported into git - space that would just make the early\ngit days unnecessarily complicated, when we don\u0027t have a lot of good\ninfrastructure for it.\n\nLet it rip!\n"
    }
  ]
}
