11 Jul, 2013

1 commit

  • Since all architectures have been converted to use vm_unmapped_area(),
    there is no remaining use for the free_area_cache.

    Signed-off-by: Michel Lespinasse
    Acked-by: Rik van Riel
    Cc: "James E.J. Bottomley"
    Cc: "Luck, Tony"
    Cc: Benjamin Herrenschmidt
    Cc: David Howells
    Cc: Helge Deller
    Cc: Ivan Kokshaysky
    Cc: Matt Turner
    Cc: Paul Mackerras
    Cc: Richard Henderson
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Michel Lespinasse
     

05 Jul, 2013

1 commit

  • Pull powerpc updates from Ben Herrenschmidt:
    "This is the powerpc changes for the 3.11 merge window. In addition to
    the usual bug fixes and small updates, the main highlights are:

    - Support for transparent huge pages by Aneesh Kumar for 64-bit
    server processors. This allows the use of 16M pages as transparent
    huge pages on kernels compiled with a 64K base page size.

    - Base VFIO support for KVM on power by Alexey Kardashevskiy

    - Wiring up of our nvram to the pstore infrastructure, including
    putting compressed oopses in there by Aruna Balakrishnaiah

    - Move, rework and improve our "EEH" (basically PCI error handling
    and recovery) infrastructure. It is no longer specific to pseries
    but is now usable by the new "powernv" platform as well (no
    hypervisor) by Gavin Shan.

    - I fixed some bugs in our math-emu instruction decoding and made it
    usable to emulate some optional FP instructions on processors with
    hard FP that lack them (such as fsqrt on Freescale embedded
    processors).

    - Support for Power8 "Event Based Branch" facility by Michael
    Ellerman. This facility allows what is basically "userspace
    interrupts" for performance monitor events.

    - A bunch of Transactional Memory vs. Signals bug fixes and HW
    breakpoint/watchpoint fixes by Michael Neuling.

    And more ... I appologize in advance if I've failed to highlight
    something that somebody deemed worth it."

    * 'next' of git://git.kernel.org/pub/scm/linux/kernel/git/benh/powerpc: (156 commits)
    pstore: Add hsize argument in write_buf call of pstore_ftrace_call
    powerpc/fsl: add MPIC timer wakeup support
    powerpc/mpic: create mpic subsystem object
    powerpc/mpic: add global timer support
    powerpc/mpic: add irq_set_wake support
    powerpc/85xx: enable coreint for all the 64bit boards
    powerpc/8xx: Erroneous double irq_eoi() on CPM IRQ in MPC8xx
    powerpc/fsl: Enable CONFIG_E1000E in mpc85xx_smp_defconfig
    powerpc/mpic: Add get_version API both for internal and external use
    powerpc: Handle both new style and old style reserve maps
    powerpc/hw_brk: Fix off by one error when validating DAWR region end
    powerpc/pseries: Support compression of oops text via pstore
    powerpc/pseries: Re-organise the oops compression code
    pstore: Pass header size in the pstore write callback
    powerpc/powernv: Fix iommu initialization again
    powerpc/pseries: Inform the hypervisor we are using EBB regs
    powerpc/perf: Add power8 EBB support
    powerpc/perf: Core EBB support for 64-bit book3s
    powerpc/perf: Drop MMCRA from thread_struct
    powerpc/perf: Don't enable if we have zero events
    ...

    Linus Torvalds
     

04 Jul, 2013

6 commits

  • Prepare for killing free_all_bootmem_node() by using free_all_bootmem().

    Signed-off-by: Jiang Liu
    Cc: Benjamin Herrenschmidt
    Cc: Paul Mackerras
    Cc: Alexander Graf
    Cc: "Suzuki K. Poulose"
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Jiang Liu
     
  • Prepare for removing num_physpages and simplify mem_init().

    Signed-off-by: Jiang Liu
    Cc: Benjamin Herrenschmidt
    Cc: Paul Mackerras
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Jiang Liu
     
  • Concentrate code to modify totalram_pages into the mm core, so the arch
    memory initialized code doesn't need to take care of it. With these
    changes applied, only following functions from mm core modify global
    variable totalram_pages: free_bootmem_late(), free_all_bootmem(),
    free_all_bootmem_node(), adjust_managed_page_count().

    With this patch applied, it will be much more easier for us to keep
    totalram_pages and zone->managed_pages in consistence.

    Signed-off-by: Jiang Liu
    Acked-by: David Howells
    Cc: "H. Peter Anvin"
    Cc: "Michael S. Tsirkin"
    Cc:
    Cc: Arnd Bergmann
    Cc: Catalin Marinas
    Cc: Chris Metcalf
    Cc: Geert Uytterhoeven
    Cc: Ingo Molnar
    Cc: Jeremy Fitzhardinge
    Cc: Jianguo Wu
    Cc: Joonsoo Kim
    Cc: Kamezawa Hiroyuki
    Cc: Konrad Rzeszutek Wilk
    Cc: Marek Szyprowski
    Cc: Mel Gorman
    Cc: Michel Lespinasse
    Cc: Minchan Kim
    Cc: Rik van Riel
    Cc: Rusty Russell
    Cc: Tang Chen
    Cc: Tejun Heo
    Cc: Thomas Gleixner
    Cc: Wen Congyang
    Cc: Will Deacon
    Cc: Yasuaki Ishimatsu
    Cc: Yinghai Lu
    Cc: Russell King
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Jiang Liu
     
  • Address more review comments from last round of code review.
    1) Enhance free_reserved_area() to support poisoning freed memory with
    pattern '0'. This could be used to get rid of poison_init_mem()
    on ARM64.
    2) A previous patch has disabled memory poison for initmem on s390
    by mistake, so restore to the original behavior.
    3) Remove redundant PAGE_ALIGN() when calling free_reserved_area().

    Signed-off-by: Jiang Liu
    Cc: Geert Uytterhoeven
    Cc: "H. Peter Anvin"
    Cc: "Michael S. Tsirkin"
    Cc:
    Cc: Arnd Bergmann
    Cc: Catalin Marinas
    Cc: Chris Metcalf
    Cc: David Howells
    Cc: Ingo Molnar
    Cc: Jeremy Fitzhardinge
    Cc: Jianguo Wu
    Cc: Joonsoo Kim
    Cc: Kamezawa Hiroyuki
    Cc: Konrad Rzeszutek Wilk
    Cc: Marek Szyprowski
    Cc: Mel Gorman
    Cc: Michel Lespinasse
    Cc: Minchan Kim
    Cc: Rik van Riel
    Cc: Rusty Russell
    Cc: Tang Chen
    Cc: Tejun Heo
    Cc: Thomas Gleixner
    Cc: Wen Congyang
    Cc: Will Deacon
    Cc: Yasuaki Ishimatsu
    Cc: Yinghai Lu
    Cc: Russell King
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Jiang Liu
     
  • Change signature of free_reserved_area() according to Russell King's
    suggestion to fix following build warnings:

    arch/arm/mm/init.c: In function 'mem_init':
    arch/arm/mm/init.c:603:2: warning: passing argument 1 of 'free_reserved_area' makes integer from pointer without a cast [enabled by default]
    free_reserved_area(__va(PHYS_PFN_OFFSET), swapper_pg_dir, 0, NULL);
    ^
    In file included from include/linux/mman.h:4:0,
    from arch/arm/mm/init.c:15:
    include/linux/mm.h:1301:22: note: expected 'long unsigned int' but argument is of type 'void *'
    extern unsigned long free_reserved_area(unsigned long start, unsigned long end,

    mm/page_alloc.c: In function 'free_reserved_area':
    >> mm/page_alloc.c:5134:3: warning: passing argument 1 of 'virt_to_phys' makes pointer from integer without a cast [enabled by default]
    In file included from arch/mips/include/asm/page.h:49:0,
    from include/linux/mmzone.h:20,
    from include/linux/gfp.h:4,
    from include/linux/mm.h:8,
    from mm/page_alloc.c:18:
    arch/mips/include/asm/io.h:119:29: note: expected 'const volatile void *' but argument is of type 'long unsigned int'
    mm/page_alloc.c: In function 'free_area_init_nodes':
    mm/page_alloc.c:5030:34: warning: array subscript is below array bounds [-Warray-bounds]

    Also address some minor code review comments.

    Signed-off-by: Jiang Liu
    Reported-by: Arnd Bergmann
    Cc: "H. Peter Anvin"
    Cc: "Michael S. Tsirkin"
    Cc:
    Cc: Catalin Marinas
    Cc: Chris Metcalf
    Cc: David Howells
    Cc: Geert Uytterhoeven
    Cc: Ingo Molnar
    Cc: Jeremy Fitzhardinge
    Cc: Jianguo Wu
    Cc: Joonsoo Kim
    Cc: Kamezawa Hiroyuki
    Cc: Konrad Rzeszutek Wilk
    Cc: Marek Szyprowski
    Cc: Mel Gorman
    Cc: Michel Lespinasse
    Cc: Minchan Kim
    Cc: Rik van Riel
    Cc: Rusty Russell
    Cc: Tang Chen
    Cc: Tejun Heo
    Cc: Thomas Gleixner
    Cc: Wen Congyang
    Cc: Will Deacon
    Cc: Yasuaki Ishimatsu
    Cc: Yinghai Lu
    Cc: Russell King
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Jiang Liu
     
  • Use the already existing interface huge_page_shift instead of h->order +
    PAGE_SHIFT.

    Signed-off-by: Wanpeng Li
    Cc: KAMEZAWA Hiroyuki
    Cc: David Rientjes
    Cc: Benjamin Herrenschmidt
    Reviewed-by: Michal Hocko
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Wanpeng Li
     

01 Jul, 2013

3 commits

  • Merge 3.10 in order to get some of the last minute powerpc
    changes, resolve conflicts and add additional fixes on top
    of them.

    Benjamin Herrenschmidt
     
  • The topology update code that updates the cpu node registration in sysfs
    should not be called while in stop_machine(). The register/unregister
    calls take a lock and may sleep.

    This patch moves these calls outside of the call to stop_machine().

    Signed-off-by: Nathan Fontenot
    CC:
    Signed-off-by: Benjamin Herrenschmidt

    Nathan Fontenot
     
  • The __cpuinit type of throwaway sections might have made sense
    some time ago when RAM was more constrained, but now the savings
    do not offset the cost and complications. For example, the fix in
    commit 5e427ec2d0 ("x86: Fix bit corruption at CPU resume time")
    is a good example of the nasty type of bugs that can be created
    with improper use of the various __init prefixes.

    After a discussion on LKML[1] it was decided that cpuinit should go
    the way of devinit and be phased out. Once all the users are gone,
    we can then finally remove the macros themselves from linux/init.h.

    This removes all the powerpc uses of the __cpuinit macros. There
    are no __CPUINIT users in assembly files in powerpc.

    [1] https://lkml.org/lkml/2013/5/20/589

    Cc: Benjamin Herrenschmidt
    Cc: Paul Mackerras
    Cc: Josh Boyer
    Cc: Matt Porter
    Cc: Kumar Gala
    Cc: linuxppc-dev@lists.ozlabs.org
    Signed-off-by: Paul Gortmaker
    Signed-off-by: Benjamin Herrenschmidt

    Paul Gortmaker
     

25 Jun, 2013

1 commit


21 Jun, 2013

14 commits

  • Hugepage invalidate involves invalidating multiple hpte entries.
    Optimize the operation using H_BULK_REMOVE on lpar platforms.
    On native, reduce the number of tlb flush.

    Signed-off-by: Aneesh Kumar K.V
    Signed-off-by: Benjamin Herrenschmidt

    Aneesh Kumar K.V
     
  • We enable only if the we support 16MB page size.

    Reviewed-by: David Gibson
    Signed-off-by: Aneesh Kumar K.V
    Signed-off-by: Benjamin Herrenschmidt

    Aneesh Kumar K.V
     
  • We find all the overlapping vma and mark them such that we don't allocate
    hugepage in that range. Also we split existing huge page so that the
    normal page hash can be invalidated and new page faulted in with new
    protection bits.

    Signed-off-by: Aneesh Kumar K.V
    Signed-off-by: Benjamin Herrenschmidt

    Aneesh Kumar K.V
     
  • With THP we set pmd to none, before we do pte_clear. Hence we can't
    walk page table to get the pte lock ptr and verify whether it is locked.
    THP do take pte lock before calling pte_clear. So we don't change the locking
    rules here. It is that we can't use page table walking to check whether
    pte locks are held with THP.

    Signed-off-by: Aneesh Kumar K.V
    Signed-off-by: Benjamin Herrenschmidt

    Aneesh Kumar K.V
     
  • GCC is very likely to read the pagetables just once and cache them in
    the local stack or in a register, but it is can also decide to re-read
    the pagetables. The problem is that the pagetable in those places can
    change from under gcc.

    With THP/hugetlbfs the pmd (and pgd for hugetlbfs giga pages) can
    change under gup_fast. The pages won't be freed untill we finish
    gup fast because we have irq disabled and we free these pages via
    rcu callback.

    Signed-off-by: Aneesh Kumar K.V
    Signed-off-by: Benjamin Herrenschmidt

    Aneesh Kumar K.V
     
  • We need to have irqs disabled to handle all the possible parallel update for
    linux page table without holding locks.

    Events that we are intersted in while walking page tables are
    1) Page fault
    2) umap
    3) THP split
    4) THP collapse

    A) local_irq_disabled:
    ------------------------
    1) page fault:
    A none to valid transition via page fault is not an issue because we
    would either see a none or valid. If it is none, we would error out
    the page table walk. We may need to use on stack values when checking for
    type of page table elements, because if we do

    if (!is_hugepd()) {
    if (!pmd_none() {
    if (pmd_bad() {

    We could take that bad condition because the pmd got converted to a hugepd
    after the !is_hugepd check via a hugetlb fault.

    The right way would be to check for pmd_none higher up or use on stack value.

    2) A valid to none conversion via unmap:
    We can safely walk the upper level table, because we don't remove the the
    page table entries until rcu grace period. So even if we followed a
    wrong pointer we still have the pointer valid till the grace period.

    A PTE pointer returned need to be atomically checked for _PAGE_PRESENT and
    _PAGE_BUSY. A valid pointer returned could becoming none later. To prevent
    pte_clear we take _PAGE_BUSY.

    3) THP split:
    A valid transparent hugepage is converted to nomal page. Before we split we
    do pmd_splitting_flush, which sets the hugepage PTE to _PAGE_SPLITTING
    So when walking page table we need to check for pmd_trans_splitting and
    handle that. The pte returned should also need to be checked for
    _PAGE_SPLITTING before setting _PAGE_BUSY similar to _PAGE_PRESENT. We save
    the value of PTE on stack and check for the flag in the local pte value.
    If we don't have the value set we can safely operate on the local pte value
    and we atomicaly set _PAGE_BUSY.

    4) THP collapse:
    A normal page gets converted to hugepage. In the collapse path, we
    mark the pmd none early (pmdp_clear_flush). With irq disabled, if we
    are aleady walking page table we would see the pmd_none and won't continue.
    If we see a valid PMD, we should still check for _PAGE_PRESENT before
    setting _PAGE_BUSY, to make sure we didn't collapse the PTE to a Huge PTE.

    Signed-off-by: Aneesh Kumar K.V
    Signed-off-by: Benjamin Herrenschmidt

    Aneesh Kumar K.V
     
  • The deposted PTE page in the second half of the PMD table is used to
    track the state on hash PTEs. After updating the HPTE, we mark the
    coresponding slot in the deposted PTE page valid.

    Reviewed-by: David Gibson
    Signed-off-by: Aneesh Kumar K.V
    Signed-off-by: Benjamin Herrenschmidt

    Aneesh Kumar K.V
     
  • Reviewed-by: David Gibson
    Signed-off-by: Aneesh Kumar K.V
    Signed-off-by: Benjamin Herrenschmidt

    Aneesh Kumar K.V
     
  • Replace find_linux_pte with find_linux_pte_or_hugepte and explicitly
    document why we don't need to handle transparent hugepages at callsites.

    Signed-off-by: Aneesh Kumar K.V
    Signed-off-by: Benjamin Herrenschmidt

    Aneesh Kumar K.V
     
  • Reviewed-by: David Gibson
    Signed-off-by: Aneesh Kumar K.V
    Signed-off-by: Benjamin Herrenschmidt

    Aneesh Kumar K.V
     
  • We will use this in the later patch for handling THP pages

    Reviewed-by: David Gibson
    Signed-off-by: Aneesh Kumar K.V
    Signed-off-by: Benjamin Herrenschmidt

    Aneesh Kumar K.V
     
  • We now have pmd entries covering 16MB range and the PMD table double its original size.
    We use the second half of the PMD table to deposit the pgtable (PTE page).
    The depoisted PTE page is further used to track the HPTE information. The information
    include [ secondary group | 3 bit hidx | valid ]. We use one byte per each HPTE entry.
    With 16MB hugepage and 64K HPTE we need 256 entries and with 4K HPTE we need
    4096 entries. Both will fit in a 4K PTE page. On hugepage invalidate we need to walk
    the PTE page and invalidate all valid HPTEs.

    This patch implements necessary arch specific functions for THP support and also
    hugepage invalidate logic. These PMD related functions are intentionally kept
    similar to their PTE counter-part.

    Signed-off-by: Aneesh Kumar K.V
    Signed-off-by: Benjamin Herrenschmidt

    Aneesh Kumar K.V
     
  • THP code does PTE page allocation along with large page request and deposit them
    for later use. This is to ensure that we won't have any failures when we split
    hugepages to regular pages.

    On powerpc we want to use the deposited PTE page for storing hash pte slot and
    secondary bit information for the HPTEs. We use the second half
    of the pmd table to save the deposted PTE page.

    Reviewed-by: David Gibson
    Signed-off-by: Aneesh Kumar K.V
    Signed-off-by: Benjamin Herrenschmidt

    Aneesh Kumar K.V
     
  • If a hash bucket gets full, we "evict" a more/less random entry from it.
    When we do that we don't invalidate the TLB (hpte_remove) because we assume
    the old translation is still technically "valid". This implies that when
    we are invalidating or updating pte, even if HPTE entry is not valid
    we should do a tlb invalidate. With hugepages, we need to pass the correct
    actual page size value for tlb invalidation.

    This change update the patch 0608d692463598c1d6e826d9dd7283381b4f246c
    "powerpc/mm: Always invalidate tlb on hpte invalidate and update" to handle
    transparent hugepages correctly.

    Signed-off-by: Aneesh Kumar K.V
    Signed-off-by: Benjamin Herrenschmidt

    Aneesh Kumar K.V
     

20 Jun, 2013

3 commits

  • There appears to be no good reason to keep this as 64bit only. It works
    on 32bit also, and has checks so that it can work correctly with 32bit
    binaries on 64bit hardware which is why I think this works.

    I tested this on qemu using the virtex-ml507 machine type.

    Before,

    /bin2 # ./test & cat /proc/${!}/maps
    00100000-00103000 r-xp 00000000 00:00 0 [vdso]
    10000000-10007000 r-xp 00000000 00:01 454 /bin2/test
    10017000-10018000 rw-p 00007000 00:01 454 /bin2/test
    48000000-48020000 r-xp 00000000 00:01 224 /lib/ld-2.11.3.so
    48021000-48023000 rw-p 00021000 00:01 224 /lib/ld-2.11.3.so
    bfd03000-bfd24000 rw-p 00000000 00:00 0 [stack]
    /bin2 # ./test & cat /proc/${!}/maps
    00100000-00103000 r-xp 00000000 00:00 0 [vdso]
    0fe6e000-0ffd8000 r-xp 00000000 00:01 214 /lib/libc-2.11.3.so
    0ffd8000-0ffe8000 ---p 0016a000 00:01 214 /lib/libc-2.11.3.so
    0ffe8000-0ffed000 rw-p 0016a000 00:01 214 /lib/libc-2.11.3.so
    0ffed000-0fff0000 rw-p 00000000 00:00 0
    10000000-10007000 r-xp 00000000 00:01 454 /bin2/test
    10017000-10018000 rw-p 00007000 00:01 454 /bin2/test
    48000000-48020000 r-xp 00000000 00:01 224 /lib/ld-2.11.3.so
    48020000-48021000 rw-p 00000000 00:00 0
    48021000-48023000 rw-p 00021000 00:01 224 /lib/ld-2.11.3.so
    bf98a000-bf9ab000 rw-p 00000000 00:00 0 [stack]
    /bin2 # ./test & cat /proc/${!}/maps
    00100000-00103000 r-xp 00000000 00:00 0 [vdso]
    0fe6e000-0ffd8000 r-xp 00000000 00:01 214 /lib/libc-2.11.3.so
    0ffd8000-0ffe8000 ---p 0016a000 00:01 214 /lib/libc-2.11.3.so
    0ffe8000-0ffed000 rw-p 0016a000 00:01 214 /lib/libc-2.11.3.so
    0ffed000-0fff0000 rw-p 00000000 00:00 0
    10000000-10007000 r-xp 00000000 00:01 454 /bin2/test
    10017000-10018000 rw-p 00007000 00:01 454 /bin2/test
    48000000-48020000 r-xp 00000000 00:01 224 /lib/ld-2.11.3.so
    48020000-48021000 rw-p 00000000 00:00 0
    48021000-48023000 rw-p 00021000 00:01 224 /lib/ld-2.11.3.so
    bfa54000-bfa75000 rw-p 00000000 00:00 0 [stack]

    After,

    bash-4.1# ./test & cat /proc/${!}/maps
    [7] 803
    00100000-00103000 r-xp 00000000 00:00 0 [vdso]
    10000000-10007000 r-xp 00000000 00:01 454 /bin2/test
    10017000-10018000 rw-p 00007000 00:01 454 /bin2/test
    b7eb0000-b7ed0000 r-xp 00000000 00:01 224 /lib/ld-2.11.3.so
    b7ed1000-b7ed3000 rw-p 00021000 00:01 224 /lib/ld-2.11.3.so
    bfbc0000-bfbe1000 rw-p 00000000 00:00 0 [stack]
    bash-4.1# ./test & cat /proc/${!}/maps
    [8] 805
    00100000-00103000 r-xp 00000000 00:00 0 [vdso]
    10000000-10007000 r-xp 00000000 00:01 454 /bin2/test
    10017000-10018000 rw-p 00007000 00:01 454 /bin2/test
    b7b03000-b7b23000 r-xp 00000000 00:01 224 /lib/ld-2.11.3.so
    b7b24000-b7b26000 rw-p 00021000 00:01 224 /lib/ld-2.11.3.so
    bfc27000-bfc48000 rw-p 00000000 00:00 0 [stack]
    bash-4.1# ./test & cat /proc/${!}/maps
    [9] 807
    00100000-00103000 r-xp 00000000 00:00 0 [vdso]
    10000000-10007000 r-xp 00000000 00:01 454 /bin2/test
    10017000-10018000 rw-p 00007000 00:01 454 /bin2/test
    b7f37000-b7f57000 r-xp 00000000 00:01 224 /lib/ld-2.11.3.so
    b7f58000-b7f5a000 rw-p 00021000 00:01 224 /lib/ld-2.11.3.so
    bff96000-bffb7000 rw-p 00000000 00:00 0 [stack]

    Signed-off-by: Daniel Walker
    Signed-off-by: Benjamin Herrenschmidt

    Daniel Walker
     
  • This happens with threads that are offline due to CPU hotplug
    (including threads that were never "plugged in" to begin with because
    SMT is disabled).

    Signed-off-by: Scott Wood
    Signed-off-by: Benjamin Herrenschmidt

    Scott Wood
     
  • Book3E uses the hugepd at PMD level and don't encode pte directly
    at the pmd level. So it will find the lower bits of pmd set
    and the pmd_bad check throws error. Infact the current code
    will never take the free_hugepd_range call at all because it will
    clear the pmd if it find a hugepd pointer. Fix this by clearing
    bad pmd only if it is not a hugepd pointer.

    This is regression introduced by e2b3d202d1dba8f3546ed28224ce485bc50010be
    "powerpc: Switch 16GB and 16MB explicit hugepages to a different page table format"

    Reported-by: Scott Wood
    Signed-off-by: Aneesh Kumar K.V
    Signed-off-by: Benjamin Herrenschmidt

    Aneesh Kumar K.V
     

18 Jun, 2013

1 commit


04 Jun, 2013

1 commit

  • Ever since commit 45f035ab9b8f ("CONFIG_HOTPLUG should be always on"),
    it has been basically impossible to build a kernel with CONFIG_HOTPLUG
    turned off. Remove all the remaining references to it.

    Cc: Russell King
    Cc: Doug Thompson
    Cc: Bjorn Helgaas
    Cc: Steven Whitehouse
    Cc: Arnd Bergmann
    Cc: Pavel Machek
    Cc: "Rafael J. Wysocki"
    Cc: Andrew Morton
    Signed-off-by: Stephen Rothwell
    Acked-by: Mauro Carvalho Chehab
    Acked-by: Hans Verkuil
    Signed-off-by: Greg Kroah-Hartman

    Stephen Rothwell
     

01 Jun, 2013

1 commit

  • If a hash bucket gets full, we "evict" a more/less random entry from it.
    When we do that we don't invalidate the TLB (hpte_remove) because we assume
    the old translation is still technically "valid". This implies that when
    we are invalidating or updating pte, even if HPTE entry is not valid
    we should do a tlb invalidate.

    This was a regression introduced by b1022fbd293564de91596b8775340cf41ad5214c

    Signed-off-by: Aneesh Kumar K.V
    Signed-off-by: Benjamin Herrenschmidt

    Aneesh Kumar K.V
     

14 May, 2013

2 commits

  • This is the exception hooks for context tracking subsystem, including
    data access, program check, single step, instruction breakpoint, machine check,
    alignment, fp unavailable, altivec assist, unknown exception, whose handlers
    might use RCU.

    This patch corresponds to
    [PATCH] x86: Exception hooks for userspace RCU extended QS
    commit 6ba3c97a38803883c2eee489505796cb0a727122

    But after the exception handling moved to generic code, and some changes in
    following two commits:
    56dd9470d7c8734f055da2a6bac553caf4a468eb
    context_tracking: Move exception handling to generic code
    6c1e0256fad84a843d915414e4b5973b7443d48d
    context_tracking: Restore correct previous context state on exception exit

    it is able for exception hooks to use the generic code above instead of a
    redundant arch implementation.

    Signed-off-by: Li Zhong
    Signed-off-by: Benjamin Herrenschmidt

    Li Zhong
     
  • Signed-off-by: Aneesh Kumar K.V
    Signed-off-by: Benjamin Herrenschmidt

    Aneesh Kumar K.V
     

06 May, 2013

1 commit


03 May, 2013

1 commit

  • Pull powerpc update from Benjamin Herrenschmidt:
    "The main highlights this time around are:

    - A pile of addition POWER8 bits and nits, such as updated
    performance counter support (Michael Ellerman), new branch history
    buffer support (Anshuman Khandual), base support for the new PCI
    host bridge when not using the hypervisor (Gavin Shan) and other
    random related bits and fixes from various contributors.

    - Some rework of our page table format by Aneesh Kumar which fixes a
    thing or two and paves the way for THP support. THP itself will
    not make it this time around however.

    - More Freescale updates, including Altivec support on the new e6500
    cores, new PCI controller support, and a pile of new boards support
    and updates.

    - The usual batch of trivial cleanups & fixes"

    * 'next' of git://git.kernel.org/pub/scm/linux/kernel/git/benh/powerpc: (156 commits)
    powerpc: Fix build error for book3e
    powerpc: Context switch the new EBB SPRs
    powerpc: Turn on the EBB H/FSCR bits
    powerpc: Replace CPU_FTR_BCTAR with CPU_FTR_ARCH_207S
    powerpc: Setup BHRB instructions facility in HFSCR for POWER8
    powerpc: Fix interrupt range check on debug exception
    powerpc: Update tlbie/tlbiel as per ISA doc
    powerpc: Print page size info during boot
    powerpc: print both base and actual page size on hash failure
    powerpc: Fix hpte_decode to use the correct decoding for page sizes
    powerpc: Decode the pte-lp-encoding bits correctly.
    powerpc: Use encode avpn where we need only avpn values
    powerpc: Reduce PTE table memory wastage
    powerpc: Move the pte free routines from common header
    powerpc: Reduce the PTE_INDEX_SIZE
    powerpc: Switch 16GB and 16MB explicit hugepages to a different page table format
    powerpc: New hugepage directory format
    powerpc: Don't truncate pgd_index wrongly
    powerpc: Don't hard code the size of pte page
    powerpc: Save DAR and DSISR in pt_regs on MCE
    ...

    Linus Torvalds
     

30 Apr, 2013

4 commits