)]}'
{
  "log": [
    {
      "commit": "190a1d722a59725706daf832bc8a511ed62f249d",
      "tree": "fa4441d0f7833062687e7816e09ec73600ac8523",
      "parents": [
        "3610cce87af0693603db171d5b6f6735f5e3dc5b"
      ],
      "author": {
        "name": "Martin Schwidefsky",
        "email": "schwidefsky@de.ibm.com",
        "time": "Mon Oct 22 12:52:48 2007 +0200"
      },
      "committer": {
        "name": "Martin Schwidefsky",
        "email": "schwidefsky@de.ibm.com",
        "time": "Mon Oct 22 12:52:49 2007 +0200"
      },
      "message": "[S390] 4level-fixup cleanup\n\nGet independent from asm-generic/4level-fixup.h\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": "0a87c5cfc0bb0c1bdcc1cc9fd82e4a1711fac512",
      "tree": "f204007f95e2807e63712593c3b42d3fb59be5fe",
      "parents": [
        "37cd0a007f88f1d6269035bdb02b50f536cca8de"
      ],
      "author": {
        "name": "Michael Holzheu",
        "email": "holzheu@de.ibm.com",
        "time": "Wed Aug 22 13:51:40 2007 +0200"
      },
      "committer": {
        "name": "Martin Schwidefsky",
        "email": "schwidefsky@de.ibm.com",
        "time": "Wed Aug 22 13:51:47 2007 +0200"
      },
      "message": "[S390] vmur: fix diag14 exceptions with addresses \u003e 2GB.\n\nThere are several s390 diagnose calls, which must be executed below the\n2GB memory boundary. In order to enforce this, those diagnoses must be\ncompiled into the kernel. Currently diag 14 can be called within the\nvmur kernel module from addresses above 2GB. This leads to specification\nexceptions. This patch moves diag10, diag14 and diag210 into the new\ndiag.c file.\n\nSigned-off-by: Michael Holzheu \u003cholzheu@de.ibm.com\u003e\nSigned-off-by: Martin Schwidefsky \u003cschwidefsky@de.ibm.com\u003e\nSigned-off-by: Heiko Carstens \u003cheiko.carstens@de.ibm.com\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": "f4eb07c17df2e6cf9bd58bfcd9cc9e05e9489d07",
      "tree": "c1b4b422d3b8183edf452cc745dadd0fe129018b",
      "parents": [
        "7f090145a14afc35844dce80174c9c24f9e66ec5"
      ],
      "author": {
        "name": "Heiko Carstens",
        "email": "heiko.carstens@de.ibm.com",
        "time": "Fri Dec 08 15:56:07 2006 +0100"
      },
      "committer": {
        "name": "Martin Schwidefsky",
        "email": "schwidefsky@de.ibm.com",
        "time": "Fri Dec 08 15:56:07 2006 +0100"
      },
      "message": "[S390] Virtual memmap for s390.\n\nVirtual memmap support for s390. Inspired by the ia64 implementation.\n\nUnlike ia64 we need a mechanism which allows us to dynamically attach\nshared memory regions.\nThese memory regions are accessed via the dcss device driver. dcss\nimplements the \u0027direct_access\u0027 operation, which requires struct pages\nfor every single shared page.\nTherefore this implementation provides an interface to attach/detach\nshared memory:\n\nint add_shared_memory(unsigned long start, unsigned long size);\nint remove_shared_memory(unsigned long start, unsigned long size);\n\nThe purpose of the add_shared_memory function is to add the given\nmemory range to the 1:1 mapping and to make sure that the\ncorresponding range in the vmemmap is backed with physical pages.\nIt also initialises the new struct pages.\n\nremove_shared_memory in turn only invalidates the page table\nentries in the 1:1 mapping. The page tables and the memory used for\nstruct pages in the vmemmap are currently not freed. They will be\nreused when the next segment will be attached.\nGiven that the maximum size of a shared memory region is 2GB and\nin addition all regions must reside below 2GB this is not too much of\na restriction, but there is room for improvement.\n\nSigned-off-by: Heiko Carstens \u003cheiko.carstens@de.ibm.com\u003e\nSigned-off-by: Martin Schwidefsky \u003cschwidefsky@de.ibm.com\u003e\n"
    },
    {
      "commit": "0b2b6e1ddce4696cb7afcbb15a654fe95428a498",
      "tree": "a6dd837de5ce7088ab1009d125e8bcd6cfeaa1e1",
      "parents": [
        "7676bef9c183fd573822cac9992927ef596d584c"
      ],
      "author": {
        "name": "Heiko Carstens",
        "email": "heiko.carstens@de.ibm.com",
        "time": "Wed Oct 04 20:02:23 2006 +0200"
      },
      "committer": {
        "name": "Martin Schwidefsky",
        "email": "schwidefsky@de.ibm.com",
        "time": "Wed Oct 04 20:02:23 2006 +0200"
      },
      "message": "[S390] Remove open-coded mem_map usage.\n\nUse page_to_phys and pfn_to_page to avoid open-coded mem_map usage.\n\nSigned-off-by: Heiko Carstens \u003cheiko.carstens@de.ibm.com\u003e\n"
    },
    {
      "commit": "9282ed929758b82f448a40d3c17319d794970624",
      "tree": "f3db7796f0ea7afddc853ab4294033b4fdd6d785",
      "parents": [
        "31b58088292c7f00f0b81088bfb557285b0b6247"
      ],
      "author": {
        "name": "Gerald Schaefer",
        "email": "geraldsc@de.ibm.com",
        "time": "Wed Sep 20 15:59:37 2006 +0200"
      },
      "committer": {
        "name": "Martin Schwidefsky",
        "email": "schwidefsky@de.ibm.com",
        "time": "Wed Sep 20 15:59:37 2006 +0200"
      },
      "message": "[S390] Cleanup in page table related code.\n\nChanged and simplified some page table related #defines and code.\n\nSigned-off-by: Gerald Schaefer \u003cgeraldsc@de.ibm.com\u003e\nSigned-off-by: Martin Schwidefsky \u003cschwidefsky@de.ibm.com\u003e\n"
    },
    {
      "commit": "d2c993d845781d160a7ef759a3e65c6892c4a270",
      "tree": "f63be38ab83363282c519048849663201f664818",
      "parents": [
        "7e560814de1972e1bfc780616841d7a0032ca467"
      ],
      "author": {
        "name": "Heiko Carstens",
        "email": "heiko.carstens@de.ibm.com",
        "time": "Wed Jul 12 16:41:55 2006 +0200"
      },
      "committer": {
        "name": "Martin Schwidefsky",
        "email": "schwidefsky@de.ibm.com",
        "time": "Wed Jul 12 16:41:55 2006 +0200"
      },
      "message": "[S390] Fix sparse warnings.\n\nSigned-off-by: Heiko Carstens \u003cheiko.carstens@de.ibm.com\u003e\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": "2492ecc1a16b8ccf679d2999dca4f1b48aef07ee",
      "tree": "9e8f40d3715cb6f10b436f9035c3000c33233146",
      "parents": [
        "a7f3ea728b36aff520dff1611b3ce10cff46d8fe"
      ],
      "author": {
        "name": "Christoph Hellwig",
        "email": "hch@lst.de",
        "time": "Wed Mar 22 00:07:57 2006 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@g5.osdl.org",
        "time": "Wed Mar 22 07:53:56 2006 -0800"
      },
      "message": "[PATCH] mm: remove set_pgdir leftovers\n\nset_pgdir isn\u0027t needed anymore for a very long time.  Remove the leftover\nimplementation on sh64 and the stub on s390.\n\nSigned-off-by: Christoph Hellwig \u003chch@lst.de\u003e\nCc: Heiko Carstens \u003cheiko.carstens@de.ibm.com\u003e\nCc: Martin Schwidefsky \u003cschwidefsky@de.ibm.com\u003e\nCc: Paul Mundt \u003clethal@linux-sh.org\u003e\nCc: Richard Curnow \u003crc@rc0.org.uk\u003e\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"
    }
  ]
}
