)]}'
{
  "log": [
    {
      "commit": "53492b1de46a7576170e865062ffcfc93bb5650b",
      "tree": "bee94e5b2e8c19c1a094a25023cb82572707feb4",
      "parents": [
        "2e5061e40af88070984e3769eafb5a06022375fd"
      ],
      "author": {
        "name": "Gerald Schaefer",
        "email": "geraldsc@de.ibm.com",
        "time": "Wed Apr 30 13:38:46 2008 +0200"
      },
      "committer": {
        "name": "Martin Schwidefsky",
        "email": "schwidefsky@de.ibm.com",
        "time": "Wed Apr 30 13:38:47 2008 +0200"
      },
      "message": "[S390] System z large page support.\n\nThis adds hugetlbfs support on System z, using both hardware large page\nsupport if available and software large page emulation on older hardware.\nShared (large) page tables are implemented in software emulation mode,\nby using page-\u003eindex of the first tail page from a compound large page\nto store page table information.\n\nSigned-off-by: Gerald Schaefer \u003cgeraldsc@de.ibm.com\u003e\nSigned-off-by: Martin Schwidefsky \u003cschwidefsky@de.ibm.com\u003e\n"
    },
    {
      "commit": "a806170e29c5468b1d641a22518243bdf1b8d58b",
      "tree": "0b1661f287d6e2b711bbd7600120a250a4f57549",
      "parents": [
        "5a62b192196af9a798e2f2f4c6a1324e7edf2f4b"
      ],
      "author": {
        "name": "Heiko Carstens",
        "email": "heiko.carstens@de.ibm.com",
        "time": "Thu Apr 17 07:46:26 2008 +0200"
      },
      "committer": {
        "name": "Heiko Carstens",
        "email": "heiko.carstens@de.ibm.com",
        "time": "Thu Apr 17 07:47:06 2008 +0200"
      },
      "message": "[S390] Fix a lot of sparse warnings.\n\nMost noteable part of this commit is the new local header file entry.h\nwhich contains all the function declarations of functions that get only\ncalled from asm code or are arch internal. That way we can avoid extern\ndeclarations in C files.\nThis is more or less the same that was done for sparc64.\n\nSigned-off-by: Martin Schwidefsky \u003cschwidefsky@de.ibm.com\u003e\nSigned-off-by: Heiko Carstens \u003cheiko.carstens@de.ibm.com\u003e\n"
    },
    {
      "commit": "374b8f45f1d5cb17f45ba1d7c74ce8cc9e2f1407",
      "tree": "5726355757f8aa94804e1fd0420f987223682f62",
      "parents": [
        "de553438eb6c487f72d46019eb3821f6687ce011"
      ],
      "author": {
        "name": "Martin Schwidefsky",
        "email": "schwidefsky@de.ibm.com",
        "time": "Thu Apr 17 07:45:58 2008 +0200"
      },
      "committer": {
        "name": "Heiko Carstens",
        "email": "heiko.carstens@de.ibm.com",
        "time": "Thu Apr 17 07:46:56 2008 +0200"
      },
      "message": "[S390] allnoconfig build error.\n\nFix the following link error with allnoconfig:\n\nvmem.c:(.text+0x175c): undefined reference to `smp_ptlb_all\u0027\nvmem.c:(.text+0x1b24): undefined reference to `smp_ptlb_all\u0027\nfork.c:(.text+0x4190): undefined reference to `smp_ptlb_all\u0027\n: undefined reference to `smp_ptlb_all\u0027\n: undefined reference to `smp_ptlb_all\u0027\nmm/built-in.o:: more undefined references to `smp_ptlb_all\u0027 follow\nmake[1]: *** [.tmp_vmlinux1] Error 1\nmake: *** [sub-make] Error 2\n\nSigned-off-by: Martin Schwidefsky \u003cschwidefsky@de.ibm.com\u003e\nSigned-off-by: Heiko Carstens \u003cheiko.carstens@de.ibm.com\u003e\n"
    },
    {
      "commit": "146e4b3c8b92071b18f0b2e6f47165bad4f9e825",
      "tree": "7e9db61cacca0f55ce34db089f27fc22a56ebbdd",
      "parents": [
        "0c1f1dcd8c7792aeff6ef62e9508b0041928ab87"
      ],
      "author": {
        "name": "Martin Schwidefsky",
        "email": "schwidefsky@de.ibm.com",
        "time": "Sat Feb 09 18:24:35 2008 +0100"
      },
      "committer": {
        "name": "Martin Schwidefsky",
        "email": "schwidefsky@de.ibm.com",
        "time": "Sat Feb 09 18:24:40 2008 +0100"
      },
      "message": "[S390] 1K/2K page table pages.\n\nThis patch implements 1K/2K page table pages for s390.\n\nSigned-off-by: Martin Schwidefsky \u003cschwidefsky@de.ibm.com\u003e\n"
    },
    {
      "commit": "8ffd74a0924e4e04f6455eb2d2187a9564678d01",
      "tree": "74c6787457091ab86ed5a18d39b7614c3c9e686d",
      "parents": [
        "6f457e1a149eb39ee58d51913e8023fc27c52806"
      ],
      "author": {
        "name": "Martin Schwidefsky",
        "email": "schwidefsky@de.ibm.com",
        "time": "Sat Jan 26 14:10:59 2008 +0100"
      },
      "committer": {
        "name": "Martin Schwidefsky",
        "email": "schwidefsky@de.ibm.com",
        "time": "Sat Jan 26 14:11:11 2008 +0100"
      },
      "message": "[S390] Avoid warnings in tlblush.h\n\nSigned-off-by: Martin Schwidefsky \u003cschwidefsky@de.ibm.com\u003e\n"
    },
    {
      "commit": "6f457e1a149eb39ee58d51913e8023fc27c52806",
      "tree": "d702ec38780667a3305e45df05c4f7df3730e9f6",
      "parents": [
        "4b28a8fe78bd593cdc4454cf28af71ca9556914d"
      ],
      "author": {
        "name": "Martin Schwidefsky",
        "email": "schwidefsky@de.ibm.com",
        "time": "Sat Jan 26 14:10:58 2008 +0100"
      },
      "committer": {
        "name": "Martin Schwidefsky",
        "email": "schwidefsky@de.ibm.com",
        "time": "Sat Jan 26 14:11:10 2008 +0100"
      },
      "message": "[S390] Fix tlb flushing with idte.\n\nThe clear-by-asce operation of the idte instruction gets an asce\n(address-space-control-element) as argument to specify which TLBs\nneed to get flushed. The current code passes a plain pointer to\nthe start of the pgd without the additional bits which would make\nthe pointer an asce. The current machines don\u0027t mind the difference\nbut a future model might want to use the designation type control\nbits in the asce as a filter for the TLBs to flush.\n\nSigned-off-by: Martin Schwidefsky \u003cschwidefsky@de.ibm.com\u003e\n"
    },
    {
      "commit": "3610cce87af0693603db171d5b6f6735f5e3dc5b",
      "tree": "9aa7d9a0924b2f075c1b95ed57bb63ed512165c9",
      "parents": [
        "e4aa402e7a3b6b87d8df6243a37171cdcd2f01c2"
      ],
      "author": {
        "name": "Martin Schwidefsky",
        "email": "schwidefsky@de.ibm.com",
        "time": "Mon Oct 22 12:52:47 2007 +0200"
      },
      "committer": {
        "name": "Martin Schwidefsky",
        "email": "schwidefsky@de.ibm.com",
        "time": "Mon Oct 22 12:52:49 2007 +0200"
      },
      "message": "[S390] Cleanup page table definitions.\n\n- De-confuse the defines for the address-space-control-elements\n  and the segment/region table entries.\n- Create out of line functions for page table allocation / freeing.\n- Simplify get_shadow_xxx functions.\n\nSigned-off-by: Martin Schwidefsky \u003cschwidefsky@de.ibm.com\u003e\n"
    },
    {
      "commit": "ba8a9229ab9e80278c28ad68b15053f65b2b0a7c",
      "tree": "d73e4f7d352d3b3edf8888973528cb7dd3e953f9",
      "parents": [
        "e3d3683d1402c1737687cb698451d545f57c32a7"
      ],
      "author": {
        "name": "Martin Schwidefsky",
        "email": "schwidefsky@de.ibm.com",
        "time": "Mon Oct 22 12:52:44 2007 +0200"
      },
      "committer": {
        "name": "Martin Schwidefsky",
        "email": "schwidefsky@de.ibm.com",
        "time": "Mon Oct 22 12:52:48 2007 +0200"
      },
      "message": "[S390] tlb flush fix.\n\nThe current tlb flushing code for page table entries violates the\ns390 architecture in a small detail. The relevant section from the\nprinciples of operation (SA22-7832-02 page 3-47):\n\n   \"A valid table entry must not be changed while it is attached\n   to any CPU and may be used for translation by that CPU except to\n   (1) invalidate the entry by using INVALIDATE PAGE TABLE ENTRY or\n   INVALIDATE DAT TABLE ENTRY, (2) alter bits 56-63 of a page-table\n   entry, or (3) make a change by means of a COMPARE AND SWAP AND\n   PURGE instruction that purges the TLB.\"\n\nThat means if one thread of a multithreaded applciation uses a vma\nwhile another thread does an unmap on it, the page table entries of\nthat vma needs to get removed with IPTE, IDTE or CSP. In some strange\nand rare situations a cpu could check-stop (die) because a entry has\nbeen pushed out of the TLB that is still needed to complete a\n(milli-coded) instruction. I\u0027ve never seen it happen with the current\ncode on any of the supported machines, so right now this is a\ntheoretical problem. But I want to fix it nevertheless, to avoid\nheadaches in the futures.\n\nTo get this implemented correctly without changing common code the\nprimitives ptep_get_and_clear, ptep_get_and_clear_full and\nptep_set_wrprotect need to use the IPTE instruction to invalidate the\npte before the new pte value gets stored. If IPTE is always used for\nthe three primitives three important operations will have a performace\nhit: fork, mprotect and exit_mmap. Time for some workarounds:\n\n* 1: ptep_get_and_clear_full is used in unmap_vmas to remove page\ntables entries in a batched tlb gather operation. If the mmu_gather\ncontext passed to unmap_vmas has been started with full_mm_flush\u003d\u003d1\nor if only one cpu is online or if the only user of a mm_struct is the\ncurrent process then the fullmm indication in the mmu_gather context is\nset to one. All TLBs for mm_struct are flushed by the tlb_gather_mmu\ncall. No new TLBs can be created while the unmap is in progress. In\nthis case ptep_get_and_clear_full clears the ptes with a simple store.\n\n* 2: ptep_get_and_clear is used in change_protection to clear the\nptes from the page tables before they are reentered with the new\naccess flags. At the end of the update flush_tlb_range clears the\nremaining TLBs. In general the ptep_get_and_clear has to issue IPTE\nfor each pte and flush_tlb_range is a nop. But if there is only one\nuser of the mm_struct then ptep_get_and_clear uses simple stores\nto do the update and flush_tlb_range will flush the TLBs.\n\n* 3: Similar to 2, ptep_set_wrprotect is used in copy_page_range\nfor a fork to make all ptes of a cow mapping read-only. At the end of\nof copy_page_range dup_mmap will flush the TLBs with a call to\nflush_tlb_mm.  Check for mm-\u003emm_users and if there is only one user\navoid using IPTE in ptep_set_wrprotect and let flush_tlb_mm clear the\nTLBs.\n\nOverall for single threaded programs the tlb flush code now performs\nbetter, for multi threaded programs it is slightly worse. In particular\nexit_mmap() now does a single IDTE for the mm and then just frees every\npage cache reference and every page table page directly without a delay\nover the mmu_gather structure.\n\nSigned-off-by: Martin Schwidefsky \u003cschwidefsky@de.ibm.com\u003e\n"
    },
    {
      "commit": "1c7037db50ebecf3d5cfbf7082daa5d97d900fef",
      "tree": "1843c417160b79c3f79a54d546ddcf5ccdb1b44b",
      "parents": [
        "22124c9999f00340b062fff740db30187bf18454"
      ],
      "author": {
        "name": "Benjamin Herrenschmidt",
        "email": "benh@kernel.crashing.org",
        "time": "Thu Oct 18 23:39:14 2007 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Fri Oct 19 11:53:34 2007 -0700"
      },
      "message": "remove unused flush_tlb_pgtables\n\nNobody uses flush_tlb_pgtables anymore, this patch removes all remaining\ntraces of it from all archs.\n\nSigned-off-by: Benjamin Herrenschmidt \u003cbenh@kernel.crashing.org\u003e\nCc: \u003clinux-arch@vger.kernel.org\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "c1821c2e9711adc3cd298a16b7237c92a2cee78d",
      "tree": "9155b089db35a37d95863125ea4c5f918bd7801b",
      "parents": [
        "86aa9fc2456d8a662f299a70bdb70987209170f0"
      ],
      "author": {
        "name": "Gerald Schaefer",
        "email": "geraldsc@de.ibm.com",
        "time": "Mon Feb 05 21:18:17 2007 +0100"
      },
      "committer": {
        "name": "Martin Schwidefsky",
        "email": "schwidefsky@de.ibm.com",
        "time": "Mon Feb 05 21:18:17 2007 +0100"
      },
      "message": "[S390] noexec protection\n\nThis provides a noexec protection on s390 hardware. Our hardware does\nnot have any bits left in the pte for a hw noexec bit, so this is a\ndifferent approach using shadow page tables and a special addressing\nmode that allows separate address spaces for code and data.\n\nAs a special feature of our \"secondary-space\" addressing mode, separate\npage tables can be specified for the translation of data addresses\n(storage operands) and instruction addresses. The shadow page table is\nused for the instruction addresses and the standard page table for the\ndata addresses.\nThe shadow page table is linked to the standard page table by a pointer\nin page-\u003elru.next of the struct page corresponding to the page that\ncontains the standard page table (since page-\u003eprivate is not really\nprivate with the pte_lock and the page table pages are not in the LRU\nlist).\nDepending on the software bits of a pte, it is either inserted into\nboth page tables or just into the standard (data) page table. Pages of\na vma that does not have the VM_EXEC bit set get mapped only in the\ndata address space. Any try to execute code on such a page will cause a\npage translation exception. The standard reaction to this is a SIGSEGV\nwith two exceptions: the two system call opcodes 0x0a77 (sys_sigreturn)\nand 0x0aad (sys_rt_sigreturn) are allowed. They are stored by the\nkernel to the signal stack frame. Unfortunately, the signal return\nmechanism cannot be modified to use an SA_RESTORER because the\nexception unwinding code depends on the system call opcode stored\nbehind the signal stack frame.\n\nThis feature requires that user space is executed in secondary-space\nmode and the kernel in home-space mode, which means that the addressing\nmodes need to be switched and that the noexec protection only works\nfor user space.\nAfter switching the addressing modes, we cannot use the mvcp/mvcs\ninstructions anymore to copy between kernel and user space. A new\nmvcos instruction has been added to the z9 EC/BC hardware which allows\nto copy between arbitrary address spaces, but on older hardware the\npage tables need to be walked manually.\n\nSigned-off-by: Gerald Schaefer \u003cgeraldsc@de.ibm.com\u003e\nSigned-off-by: Martin Schwidefsky \u003cschwidefsky@de.ibm.com\u003e\n"
    },
    {
      "commit": "94c12cc7d196bab34aaa98d38521549fa1e5ef76",
      "tree": "8e0cec0ed44445d74a2cb5160303d6b4dfb1bc31",
      "parents": [
        "25d83cbfaa44e1b9170c0941c3ef52ca39f54ccc"
      ],
      "author": {
        "name": "Martin Schwidefsky",
        "email": "schwidefsky@de.ibm.com",
        "time": "Thu Sep 28 16:56:43 2006 +0200"
      },
      "committer": {
        "name": "Martin Schwidefsky",
        "email": "schwidefsky@de.ibm.com",
        "time": "Thu Sep 28 16:56:43 2006 +0200"
      },
      "message": "[S390] Inline assembly cleanup.\n\nMajor cleanup of all s390 inline assemblies. They now have a common\ncoding style. Quite a few have been shortened, mainly by using register\nasm variables. Use of the EX_TABLE macro helps  as well. The atomic ops,\nbit ops and locking inlines new use the Q-constraint if a newer gcc\nis used.  That results in slightly better code.\n\nThanks to Christian Borntraeger for proof reading the changes.\n\nSigned-off-by: Martin Schwidefsky \u003cschwidefsky@de.ibm.com\u003e\n"
    },
    {
      "commit": "62c4f0a2d5a188f73a94f2cb8ea0dba3e7cf0a7f",
      "tree": "e85ca2d0dd43f90dccf758338764c3caa55f333f",
      "parents": [
        "089f26d5e31b7bf42a9a8fefec08b30cd27f4b0e"
      ],
      "author": {
        "name": "David Woodhouse",
        "email": "dwmw2@infradead.org",
        "time": "Wed Apr 26 12:56:16 2006 +0100"
      },
      "committer": {
        "name": "David Woodhouse",
        "email": "dwmw2@infradead.org",
        "time": "Wed Apr 26 12:56:16 2006 +0100"
      },
      "message": "Don\u0027t include linux/config.h from anywhere else in include/\n\nSigned-off-by: David Woodhouse \u003cdwmw2@infradead.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"
    }
  ]
}
