Merge branch 'akpm' (Andrew's patch-bomb)

* emailed from Andrew Morton <akpm@linux-foundation.org>: (21 patches)
  mm/memblock: fix overlapping allocation when doubling reserved array
  c/r: prctl: Move PR_GET_TID_ADDRESS to a proper place
  pidns: find_new_reaper() can no longer switch to init_pid_ns.child_reaper
  pidns: guarantee that the pidns init will be the last pidns process reaped
  fault-inject: avoid call to random32() if fault injection is disabled
  Viresh has moved
  get_maintainer: Fix --help warning
  mm/memory.c: fix kernel-doc warnings
  mm: fix kernel-doc warnings
  mm: correctly synchronize rss-counters at exit/exec
  mm, thp: print useful information when mmap_sem is unlocked in zap_pmd_range
  h8300: use the declarations provided by <asm/sections.h>
  h8300: fix use of extinct _sbss and _ebss
  xtensa: use the declarations provided by <asm/sections.h>
  xtensa: use "test -e" instead of bashism "test -a"
  xtensa: replace xtensa-specific _f{data,text} by _s{data,text}
  memcg: fix use_hierarchy css_is_ancestor oops regression
  mm, oom: fix and cleanup oom score calculations
  nilfs2: ensure proper cache clearing for gc-inodes
  thp: avoid atomic64_read in pmd_read_atomic for 32bit PAE
  ...
This commit is contained in:
Linus Torvalds 2012-06-20 14:41:57 -07:00
commit a2a2609c97
99 changed files with 266 additions and 181 deletions

View File

@ -111,6 +111,7 @@ Uwe Kleine-König <ukleinek@informatik.uni-freiburg.de>
Uwe Kleine-König <ukl@pengutronix.de> Uwe Kleine-König <ukl@pengutronix.de>
Uwe Kleine-König <Uwe.Kleine-Koenig@digi.com> Uwe Kleine-König <Uwe.Kleine-Koenig@digi.com>
Valdis Kletnieks <Valdis.Kletnieks@vt.edu> Valdis Kletnieks <Valdis.Kletnieks@vt.edu>
Viresh Kumar <viresh.linux@gmail.com> <viresh.kumar@st.com>
Takashi YOSHII <takashi.yoshii.zj@renesas.com> Takashi YOSHII <takashi.yoshii.zj@renesas.com>
Yusuke Goda <goda.yusuke@renesas.com> Yusuke Goda <goda.yusuke@renesas.com>
Gustavo Padovan <gustavo@las.ic.unicamp.br> Gustavo Padovan <gustavo@las.ic.unicamp.br>

View File

@ -60,4 +60,4 @@ Introduction
Document Author Document Author
--------------- ---------------
Viresh Kumar <viresh.kumar@st.com>, (c) 2010-2012 ST Microelectronics Viresh Kumar <viresh.linux@gmail.com>, (c) 2010-2012 ST Microelectronics

View File

@ -579,7 +579,7 @@ F: drivers/net/appletalk/
F: net/appletalk/ F: net/appletalk/
ARASAN COMPACT FLASH PATA CONTROLLER ARASAN COMPACT FLASH PATA CONTROLLER
M: Viresh Kumar <viresh.kumar@st.com> M: Viresh Kumar <viresh.linux@gmail.com>
L: linux-ide@vger.kernel.org L: linux-ide@vger.kernel.org
S: Maintained S: Maintained
F: include/linux/pata_arasan_cf_data.h F: include/linux/pata_arasan_cf_data.h
@ -5296,7 +5296,7 @@ S: Maintained
F: drivers/pinctrl/ F: drivers/pinctrl/
PIN CONTROLLER - ST SPEAR PIN CONTROLLER - ST SPEAR
M: Viresh Kumar <viresh.kumar@st.com> M: Viresh Kumar <viresh.linux@gmail.com>
L: spear-devel@list.st.com L: spear-devel@list.st.com
L: linux-arm-kernel@lists.infradead.org (moderated for non-subscribers) L: linux-arm-kernel@lists.infradead.org (moderated for non-subscribers)
W: http://www.st.com/spear W: http://www.st.com/spear
@ -5873,7 +5873,7 @@ S: Maintained
F: drivers/tty/serial F: drivers/tty/serial
SYNOPSYS DESIGNWARE DMAC DRIVER SYNOPSYS DESIGNWARE DMAC DRIVER
M: Viresh Kumar <viresh.kumar@st.com> M: Viresh Kumar <viresh.linux@gmail.com>
S: Maintained S: Maintained
F: include/linux/dw_dmac.h F: include/linux/dw_dmac.h
F: drivers/dma/dw_dmac_regs.h F: drivers/dma/dw_dmac_regs.h
@ -6021,7 +6021,7 @@ S: Maintained
F: drivers/mmc/host/sdhci-s3c.c F: drivers/mmc/host/sdhci-s3c.c
SECURE DIGITAL HOST CONTROLLER INTERFACE (SDHCI) ST SPEAR DRIVER SECURE DIGITAL HOST CONTROLLER INTERFACE (SDHCI) ST SPEAR DRIVER
M: Viresh Kumar <viresh.kumar@st.com> M: Viresh Kumar <viresh.linux@gmail.com>
L: spear-devel@list.st.com L: spear-devel@list.st.com
L: linux-mmc@vger.kernel.org L: linux-mmc@vger.kernel.org
S: Maintained S: Maintained
@ -6377,7 +6377,7 @@ S: Maintained
F: include/linux/compiler.h F: include/linux/compiler.h
SPEAR PLATFORM SUPPORT SPEAR PLATFORM SUPPORT
M: Viresh Kumar <viresh.kumar@st.com> M: Viresh Kumar <viresh.linux@gmail.com>
M: Shiraz Hashim <shiraz.hashim@st.com> M: Shiraz Hashim <shiraz.hashim@st.com>
L: spear-devel@list.st.com L: spear-devel@list.st.com
L: linux-arm-kernel@lists.infradead.org (moderated for non-subscribers) L: linux-arm-kernel@lists.infradead.org (moderated for non-subscribers)
@ -6386,7 +6386,7 @@ S: Maintained
F: arch/arm/plat-spear/ F: arch/arm/plat-spear/
SPEAR13XX MACHINE SUPPORT SPEAR13XX MACHINE SUPPORT
M: Viresh Kumar <viresh.kumar@st.com> M: Viresh Kumar <viresh.linux@gmail.com>
M: Shiraz Hashim <shiraz.hashim@st.com> M: Shiraz Hashim <shiraz.hashim@st.com>
L: spear-devel@list.st.com L: spear-devel@list.st.com
L: linux-arm-kernel@lists.infradead.org (moderated for non-subscribers) L: linux-arm-kernel@lists.infradead.org (moderated for non-subscribers)
@ -6395,7 +6395,7 @@ S: Maintained
F: arch/arm/mach-spear13xx/ F: arch/arm/mach-spear13xx/
SPEAR3XX MACHINE SUPPORT SPEAR3XX MACHINE SUPPORT
M: Viresh Kumar <viresh.kumar@st.com> M: Viresh Kumar <viresh.linux@gmail.com>
M: Shiraz Hashim <shiraz.hashim@st.com> M: Shiraz Hashim <shiraz.hashim@st.com>
L: spear-devel@list.st.com L: spear-devel@list.st.com
L: linux-arm-kernel@lists.infradead.org (moderated for non-subscribers) L: linux-arm-kernel@lists.infradead.org (moderated for non-subscribers)
@ -6406,7 +6406,7 @@ F: arch/arm/mach-spear3xx/
SPEAR6XX MACHINE SUPPORT SPEAR6XX MACHINE SUPPORT
M: Rajeev Kumar <rajeev-dlh.kumar@st.com> M: Rajeev Kumar <rajeev-dlh.kumar@st.com>
M: Shiraz Hashim <shiraz.hashim@st.com> M: Shiraz Hashim <shiraz.hashim@st.com>
M: Viresh Kumar <viresh.kumar@st.com> M: Viresh Kumar <viresh.linux@gmail.com>
L: spear-devel@list.st.com L: spear-devel@list.st.com
L: linux-arm-kernel@lists.infradead.org (moderated for non-subscribers) L: linux-arm-kernel@lists.infradead.org (moderated for non-subscribers)
W: http://www.st.com/spear W: http://www.st.com/spear
@ -6414,7 +6414,7 @@ S: Maintained
F: arch/arm/mach-spear6xx/ F: arch/arm/mach-spear6xx/
SPEAR CLOCK FRAMEWORK SUPPORT SPEAR CLOCK FRAMEWORK SUPPORT
M: Viresh Kumar <viresh.kumar@st.com> M: Viresh Kumar <viresh.linux@gmail.com>
L: spear-devel@list.st.com L: spear-devel@list.st.com
L: linux-arm-kernel@lists.infradead.org (moderated for non-subscribers) L: linux-arm-kernel@lists.infradead.org (moderated for non-subscribers)
W: http://www.st.com/spear W: http://www.st.com/spear

View File

@ -1,7 +1,7 @@
/* /*
* DTS file for SPEAr1310 Evaluation Baord * DTS file for SPEAr1310 Evaluation Baord
* *
* Copyright 2012 Viresh Kumar <viresh.kumar@st.com> * Copyright 2012 Viresh Kumar <viresh.linux@gmail.com>
* *
* The code contained herein is licensed under the GNU General Public * The code contained herein is licensed under the GNU General Public
* License. You may obtain a copy of the GNU General Public License * License. You may obtain a copy of the GNU General Public License

View File

@ -1,7 +1,7 @@
/* /*
* DTS file for all SPEAr1310 SoCs * DTS file for all SPEAr1310 SoCs
* *
* Copyright 2012 Viresh Kumar <viresh.kumar@st.com> * Copyright 2012 Viresh Kumar <viresh.linux@gmail.com>
* *
* The code contained herein is licensed under the GNU General Public * The code contained herein is licensed under the GNU General Public
* License. You may obtain a copy of the GNU General Public License * License. You may obtain a copy of the GNU General Public License

View File

@ -1,7 +1,7 @@
/* /*
* DTS file for SPEAr1340 Evaluation Baord * DTS file for SPEAr1340 Evaluation Baord
* *
* Copyright 2012 Viresh Kumar <viresh.kumar@st.com> * Copyright 2012 Viresh Kumar <viresh.linux@gmail.com>
* *
* The code contained herein is licensed under the GNU General Public * The code contained herein is licensed under the GNU General Public
* License. You may obtain a copy of the GNU General Public License * License. You may obtain a copy of the GNU General Public License

View File

@ -1,7 +1,7 @@
/* /*
* DTS file for all SPEAr1340 SoCs * DTS file for all SPEAr1340 SoCs
* *
* Copyright 2012 Viresh Kumar <viresh.kumar@st.com> * Copyright 2012 Viresh Kumar <viresh.linux@gmail.com>
* *
* The code contained herein is licensed under the GNU General Public * The code contained herein is licensed under the GNU General Public
* License. You may obtain a copy of the GNU General Public License * License. You may obtain a copy of the GNU General Public License

View File

@ -1,7 +1,7 @@
/* /*
* DTS file for all SPEAr13xx SoCs * DTS file for all SPEAr13xx SoCs
* *
* Copyright 2012 Viresh Kumar <viresh.kumar@st.com> * Copyright 2012 Viresh Kumar <viresh.linux@gmail.com>
* *
* The code contained herein is licensed under the GNU General Public * The code contained herein is licensed under the GNU General Public
* License. You may obtain a copy of the GNU General Public License * License. You may obtain a copy of the GNU General Public License

View File

@ -1,7 +1,7 @@
/* /*
* DTS file for SPEAr300 Evaluation Baord * DTS file for SPEAr300 Evaluation Baord
* *
* Copyright 2012 Viresh Kumar <viresh.kumar@st.com> * Copyright 2012 Viresh Kumar <viresh.linux@gmail.com>
* *
* The code contained herein is licensed under the GNU General Public * The code contained herein is licensed under the GNU General Public
* License. You may obtain a copy of the GNU General Public License * License. You may obtain a copy of the GNU General Public License

View File

@ -1,7 +1,7 @@
/* /*
* DTS file for SPEAr300 SoC * DTS file for SPEAr300 SoC
* *
* Copyright 2012 Viresh Kumar <viresh.kumar@st.com> * Copyright 2012 Viresh Kumar <viresh.linux@gmail.com>
* *
* The code contained herein is licensed under the GNU General Public * The code contained herein is licensed under the GNU General Public
* License. You may obtain a copy of the GNU General Public License * License. You may obtain a copy of the GNU General Public License

View File

@ -1,7 +1,7 @@
/* /*
* DTS file for SPEAr310 Evaluation Baord * DTS file for SPEAr310 Evaluation Baord
* *
* Copyright 2012 Viresh Kumar <viresh.kumar@st.com> * Copyright 2012 Viresh Kumar <viresh.linux@gmail.com>
* *
* The code contained herein is licensed under the GNU General Public * The code contained herein is licensed under the GNU General Public
* License. You may obtain a copy of the GNU General Public License * License. You may obtain a copy of the GNU General Public License

View File

@ -1,7 +1,7 @@
/* /*
* DTS file for SPEAr310 SoC * DTS file for SPEAr310 SoC
* *
* Copyright 2012 Viresh Kumar <viresh.kumar@st.com> * Copyright 2012 Viresh Kumar <viresh.linux@gmail.com>
* *
* The code contained herein is licensed under the GNU General Public * The code contained herein is licensed under the GNU General Public
* License. You may obtain a copy of the GNU General Public License * License. You may obtain a copy of the GNU General Public License

View File

@ -1,7 +1,7 @@
/* /*
* DTS file for SPEAr320 Evaluation Baord * DTS file for SPEAr320 Evaluation Baord
* *
* Copyright 2012 Viresh Kumar <viresh.kumar@st.com> * Copyright 2012 Viresh Kumar <viresh.linux@gmail.com>
* *
* The code contained herein is licensed under the GNU General Public * The code contained herein is licensed under the GNU General Public
* License. You may obtain a copy of the GNU General Public License * License. You may obtain a copy of the GNU General Public License

View File

@ -1,7 +1,7 @@
/* /*
* DTS file for SPEAr320 SoC * DTS file for SPEAr320 SoC
* *
* Copyright 2012 Viresh Kumar <viresh.kumar@st.com> * Copyright 2012 Viresh Kumar <viresh.linux@gmail.com>
* *
* The code contained herein is licensed under the GNU General Public * The code contained herein is licensed under the GNU General Public
* License. You may obtain a copy of the GNU General Public License * License. You may obtain a copy of the GNU General Public License

View File

@ -1,7 +1,7 @@
/* /*
* DTS file for all SPEAr3xx SoCs * DTS file for all SPEAr3xx SoCs
* *
* Copyright 2012 Viresh Kumar <viresh.kumar@st.com> * Copyright 2012 Viresh Kumar <viresh.linux@gmail.com>
* *
* The code contained herein is licensed under the GNU General Public * The code contained herein is licensed under the GNU General Public
* License. You may obtain a copy of the GNU General Public License * License. You may obtain a copy of the GNU General Public License

View File

@ -4,7 +4,7 @@
* ARM PrimeXsys System Controller SP810 header file * ARM PrimeXsys System Controller SP810 header file
* *
* Copyright (C) 2009 ST Microelectronics * Copyright (C) 2009 ST Microelectronics
* Viresh Kumar<viresh.kumar@st.com> * Viresh Kumar <viresh.linux@gmail.com>
* *
* This file is licensed under the terms of the GNU General Public * This file is licensed under the terms of the GNU General Public
* License version 2. This program is licensed "as is" without any * License version 2. This program is licensed "as is" without any

View File

@ -4,7 +4,7 @@
* Debugging macro include header spear13xx machine family * Debugging macro include header spear13xx machine family
* *
* Copyright (C) 2012 ST Microelectronics * Copyright (C) 2012 ST Microelectronics
* Viresh Kumar <viresh.kumar@st.com> * Viresh Kumar <viresh.linux@gmail.com>
* *
* This file is licensed under the terms of the GNU General Public * This file is licensed under the terms of the GNU General Public
* License version 2. This program is licensed "as is" without any * License version 2. This program is licensed "as is" without any

View File

@ -4,7 +4,7 @@
* DMA information for SPEAr13xx machine family * DMA information for SPEAr13xx machine family
* *
* Copyright (C) 2012 ST Microelectronics * Copyright (C) 2012 ST Microelectronics
* Viresh Kumar <viresh.kumar@st.com> * Viresh Kumar <viresh.linux@gmail.com>
* *
* This file is licensed under the terms of the GNU General Public * This file is licensed under the terms of the GNU General Public
* License version 2. This program is licensed "as is" without any * License version 2. This program is licensed "as is" without any

View File

@ -4,7 +4,7 @@
* spear13xx machine family generic header file * spear13xx machine family generic header file
* *
* Copyright (C) 2012 ST Microelectronics * Copyright (C) 2012 ST Microelectronics
* Viresh Kumar <viresh.kumar@st.com> * Viresh Kumar <viresh.linux@gmail.com>
* *
* This file is licensed under the terms of the GNU General Public * This file is licensed under the terms of the GNU General Public
* License version 2. This program is licensed "as is" without any * License version 2. This program is licensed "as is" without any

View File

@ -4,7 +4,7 @@
* GPIO macros for SPEAr13xx machine family * GPIO macros for SPEAr13xx machine family
* *
* Copyright (C) 2012 ST Microelectronics * Copyright (C) 2012 ST Microelectronics
* Viresh Kumar <viresh.kumar@st.com> * Viresh Kumar <viresh.linux@gmail.com>
* *
* This file is licensed under the terms of the GNU General Public * This file is licensed under the terms of the GNU General Public
* License version 2. This program is licensed "as is" without any * License version 2. This program is licensed "as is" without any

View File

@ -4,7 +4,7 @@
* IRQ helper macros for spear13xx machine family * IRQ helper macros for spear13xx machine family
* *
* Copyright (C) 2012 ST Microelectronics * Copyright (C) 2012 ST Microelectronics
* Viresh Kumar <viresh.kumar@st.com> * Viresh Kumar <viresh.linux@gmail.com>
* *
* This file is licensed under the terms of the GNU General Public * This file is licensed under the terms of the GNU General Public
* License version 2. This program is licensed "as is" without any * License version 2. This program is licensed "as is" without any

View File

@ -4,7 +4,7 @@
* spear13xx Machine family specific definition * spear13xx Machine family specific definition
* *
* Copyright (C) 2012 ST Microelectronics * Copyright (C) 2012 ST Microelectronics
* Viresh Kumar <viresh.kumar@st.com> * Viresh Kumar <viresh.linux@gmail.com>
* *
* This file is licensed under the terms of the GNU General Public * This file is licensed under the terms of the GNU General Public
* License version 2. This program is licensed "as is" without any * License version 2. This program is licensed "as is" without any

View File

@ -4,7 +4,7 @@
* SPEAr3XX machine family specific timex definitions * SPEAr3XX machine family specific timex definitions
* *
* Copyright (C) 2012 ST Microelectronics * Copyright (C) 2012 ST Microelectronics
* Viresh Kumar <viresh.kumar@st.com> * Viresh Kumar <viresh.linux@gmail.com>
* *
* This file is licensed under the terms of the GNU General Public * This file is licensed under the terms of the GNU General Public
* License version 2. This program is licensed "as is" without any * License version 2. This program is licensed "as is" without any

View File

@ -4,7 +4,7 @@
* Serial port stubs for kernel decompress status messages * Serial port stubs for kernel decompress status messages
* *
* Copyright (C) 2012 ST Microelectronics * Copyright (C) 2012 ST Microelectronics
* Viresh Kumar <viresh.kumar@st.com> * Viresh Kumar <viresh.linux@gmail.com>
* *
* This file is licensed under the terms of the GNU General Public * This file is licensed under the terms of the GNU General Public
* License version 2. This program is licensed "as is" without any * License version 2. This program is licensed "as is" without any

View File

@ -4,7 +4,7 @@
* SPEAr1310 machine source file * SPEAr1310 machine source file
* *
* Copyright (C) 2012 ST Microelectronics * Copyright (C) 2012 ST Microelectronics
* Viresh Kumar <viresh.kumar@st.com> * Viresh Kumar <viresh.linux@gmail.com>
* *
* This file is licensed under the terms of the GNU General Public * This file is licensed under the terms of the GNU General Public
* License version 2. This program is licensed "as is" without any * License version 2. This program is licensed "as is" without any

View File

@ -4,7 +4,7 @@
* SPEAr1340 machine source file * SPEAr1340 machine source file
* *
* Copyright (C) 2012 ST Microelectronics * Copyright (C) 2012 ST Microelectronics
* Viresh Kumar <viresh.kumar@st.com> * Viresh Kumar <viresh.linux@gmail.com>
* *
* This file is licensed under the terms of the GNU General Public * This file is licensed under the terms of the GNU General Public
* License version 2. This program is licensed "as is" without any * License version 2. This program is licensed "as is" without any

View File

@ -4,7 +4,7 @@
* SPEAr13XX machines common source file * SPEAr13XX machines common source file
* *
* Copyright (C) 2012 ST Microelectronics * Copyright (C) 2012 ST Microelectronics
* Viresh Kumar <viresh.kumar@st.com> * Viresh Kumar <viresh.linux@gmail.com>
* *
* This file is licensed under the terms of the GNU General Public * This file is licensed under the terms of the GNU General Public
* License version 2. This program is licensed "as is" without any * License version 2. This program is licensed "as is" without any

View File

@ -4,7 +4,7 @@
* Debugging macro include header spear3xx machine family * Debugging macro include header spear3xx machine family
* *
* Copyright (C) 2009 ST Microelectronics * Copyright (C) 2009 ST Microelectronics
* Viresh Kumar<viresh.kumar@st.com> * Viresh Kumar<viresh.linux@gmail.com>
* *
* This file is licensed under the terms of the GNU General Public * This file is licensed under the terms of the GNU General Public
* License version 2. This program is licensed "as is" without any * License version 2. This program is licensed "as is" without any

View File

@ -4,7 +4,7 @@
* SPEAr3XX machine family generic header file * SPEAr3XX machine family generic header file
* *
* Copyright (C) 2009 ST Microelectronics * Copyright (C) 2009 ST Microelectronics
* Viresh Kumar<viresh.kumar@st.com> * Viresh Kumar<viresh.linux@gmail.com>
* *
* This file is licensed under the terms of the GNU General Public * This file is licensed under the terms of the GNU General Public
* License version 2. This program is licensed "as is" without any * License version 2. This program is licensed "as is" without any

View File

@ -4,7 +4,7 @@
* GPIO macros for SPEAr3xx machine family * GPIO macros for SPEAr3xx machine family
* *
* Copyright (C) 2009 ST Microelectronics * Copyright (C) 2009 ST Microelectronics
* Viresh Kumar<viresh.kumar@st.com> * Viresh Kumar<viresh.linux@gmail.com>
* *
* This file is licensed under the terms of the GNU General Public * This file is licensed under the terms of the GNU General Public
* License version 2. This program is licensed "as is" without any * License version 2. This program is licensed "as is" without any

View File

@ -4,7 +4,7 @@
* IRQ helper macros for SPEAr3xx machine family * IRQ helper macros for SPEAr3xx machine family
* *
* Copyright (C) 2009 ST Microelectronics * Copyright (C) 2009 ST Microelectronics
* Viresh Kumar<viresh.kumar@st.com> * Viresh Kumar <viresh.linux@gmail.com>
* *
* This file is licensed under the terms of the GNU General Public * This file is licensed under the terms of the GNU General Public
* License version 2. This program is licensed "as is" without any * License version 2. This program is licensed "as is" without any

View File

@ -4,7 +4,7 @@
* Miscellaneous registers definitions for SPEAr3xx machine family * Miscellaneous registers definitions for SPEAr3xx machine family
* *
* Copyright (C) 2009 ST Microelectronics * Copyright (C) 2009 ST Microelectronics
* Viresh Kumar<viresh.kumar@st.com> * Viresh Kumar <viresh.linux@gmail.com>
* *
* This file is licensed under the terms of the GNU General Public * This file is licensed under the terms of the GNU General Public
* License version 2. This program is licensed "as is" without any * License version 2. This program is licensed "as is" without any

View File

@ -4,7 +4,7 @@
* SPEAr3xx Machine family specific definition * SPEAr3xx Machine family specific definition
* *
* Copyright (C) 2009 ST Microelectronics * Copyright (C) 2009 ST Microelectronics
* Viresh Kumar<viresh.kumar@st.com> * Viresh Kumar <viresh.linux@gmail.com>
* *
* This file is licensed under the terms of the GNU General Public * This file is licensed under the terms of the GNU General Public
* License version 2. This program is licensed "as is" without any * License version 2. This program is licensed "as is" without any

View File

@ -4,7 +4,7 @@
* SPEAr3XX machine family specific timex definitions * SPEAr3XX machine family specific timex definitions
* *
* Copyright (C) 2009 ST Microelectronics * Copyright (C) 2009 ST Microelectronics
* Viresh Kumar<viresh.kumar@st.com> * Viresh Kumar <viresh.linux@gmail.com>
* *
* This file is licensed under the terms of the GNU General Public * This file is licensed under the terms of the GNU General Public
* License version 2. This program is licensed "as is" without any * License version 2. This program is licensed "as is" without any

View File

@ -4,7 +4,7 @@
* Serial port stubs for kernel decompress status messages * Serial port stubs for kernel decompress status messages
* *
* Copyright (C) 2009 ST Microelectronics * Copyright (C) 2009 ST Microelectronics
* Viresh Kumar<viresh.kumar@st.com> * Viresh Kumar <viresh.linux@gmail.com>
* *
* This file is licensed under the terms of the GNU General Public * This file is licensed under the terms of the GNU General Public
* License version 2. This program is licensed "as is" without any * License version 2. This program is licensed "as is" without any

View File

@ -4,7 +4,7 @@
* SPEAr300 machine source file * SPEAr300 machine source file
* *
* Copyright (C) 2009-2012 ST Microelectronics * Copyright (C) 2009-2012 ST Microelectronics
* Viresh Kumar <viresh.kumar@st.com> * Viresh Kumar <viresh.linux@gmail.com>
* *
* This file is licensed under the terms of the GNU General Public * This file is licensed under the terms of the GNU General Public
* License version 2. This program is licensed "as is" without any * License version 2. This program is licensed "as is" without any

View File

@ -4,7 +4,7 @@
* SPEAr310 machine source file * SPEAr310 machine source file
* *
* Copyright (C) 2009-2012 ST Microelectronics * Copyright (C) 2009-2012 ST Microelectronics
* Viresh Kumar <viresh.kumar@st.com> * Viresh Kumar <viresh.linux@gmail.com>
* *
* This file is licensed under the terms of the GNU General Public * This file is licensed under the terms of the GNU General Public
* License version 2. This program is licensed "as is" without any * License version 2. This program is licensed "as is" without any

View File

@ -4,7 +4,7 @@
* SPEAr320 machine source file * SPEAr320 machine source file
* *
* Copyright (C) 2009-2012 ST Microelectronics * Copyright (C) 2009-2012 ST Microelectronics
* Viresh Kumar <viresh.kumar@st.com> * Viresh Kumar <viresh.linux@gmail.com>
* *
* This file is licensed under the terms of the GNU General Public * This file is licensed under the terms of the GNU General Public
* License version 2. This program is licensed "as is" without any * License version 2. This program is licensed "as is" without any

View File

@ -4,7 +4,7 @@
* SPEAr3XX machines common source file * SPEAr3XX machines common source file
* *
* Copyright (C) 2009-2012 ST Microelectronics * Copyright (C) 2009-2012 ST Microelectronics
* Viresh Kumar <viresh.kumar@st.com> * Viresh Kumar <viresh.linux@gmail.com>
* *
* This file is licensed under the terms of the GNU General Public * This file is licensed under the terms of the GNU General Public
* License version 2. This program is licensed "as is" without any * License version 2. This program is licensed "as is" without any

View File

@ -4,7 +4,7 @@
* GPIO macros for SPEAr6xx machine family * GPIO macros for SPEAr6xx machine family
* *
* Copyright (C) 2009 ST Microelectronics * Copyright (C) 2009 ST Microelectronics
* Viresh Kumar<viresh.kumar@st.com> * Viresh Kumar <viresh.linux@gmail.com>
* *
* This file is licensed under the terms of the GNU General Public * This file is licensed under the terms of the GNU General Public
* License version 2. This program is licensed "as is" without any * License version 2. This program is licensed "as is" without any

View File

@ -4,7 +4,7 @@
* Miscellaneous registers definitions for SPEAr6xx machine family * Miscellaneous registers definitions for SPEAr6xx machine family
* *
* Copyright (C) 2009 ST Microelectronics * Copyright (C) 2009 ST Microelectronics
* Viresh Kumar<viresh.kumar@st.com> * Viresh Kumar <viresh.linux@gmail.com>
* *
* This file is licensed under the terms of the GNU General Public * This file is licensed under the terms of the GNU General Public
* License version 2. This program is licensed "as is" without any * License version 2. This program is licensed "as is" without any

View File

@ -4,7 +4,7 @@
* Debugging macro include header for spear platform * Debugging macro include header for spear platform
* *
* Copyright (C) 2009 ST Microelectronics * Copyright (C) 2009 ST Microelectronics
* Viresh Kumar<viresh.kumar@st.com> * Viresh Kumar <viresh.linux@gmail.com>
* *
* This file is licensed under the terms of the GNU General Public * This file is licensed under the terms of the GNU General Public
* License version 2. This program is licensed "as is" without any * License version 2. This program is licensed "as is" without any

View File

@ -4,7 +4,7 @@
* DMAC pl080 definitions for SPEAr platform * DMAC pl080 definitions for SPEAr platform
* *
* Copyright (C) 2012 ST Microelectronics * Copyright (C) 2012 ST Microelectronics
* Viresh Kumar <viresh.kumar@st.com> * Viresh Kumar <viresh.linux@gmail.com>
* *
* This file is licensed under the terms of the GNU General Public * This file is licensed under the terms of the GNU General Public
* License version 2. This program is licensed "as is" without any * License version 2. This program is licensed "as is" without any

View File

@ -4,7 +4,7 @@
* SPEAr platform shared irq layer header file * SPEAr platform shared irq layer header file
* *
* Copyright (C) 2009 ST Microelectronics * Copyright (C) 2009 ST Microelectronics
* Viresh Kumar<viresh.kumar@st.com> * Viresh Kumar <viresh.linux@gmail.com>
* *
* This file is licensed under the terms of the GNU General Public * This file is licensed under the terms of the GNU General Public
* License version 2. This program is licensed "as is" without any * License version 2. This program is licensed "as is" without any

View File

@ -4,7 +4,7 @@
* SPEAr platform specific timex definitions * SPEAr platform specific timex definitions
* *
* Copyright (C) 2009 ST Microelectronics * Copyright (C) 2009 ST Microelectronics
* Viresh Kumar<viresh.kumar@st.com> * Viresh Kumar <viresh.linux@gmail.com>
* *
* This file is licensed under the terms of the GNU General Public * This file is licensed under the terms of the GNU General Public
* License version 2. This program is licensed "as is" without any * License version 2. This program is licensed "as is" without any

View File

@ -4,7 +4,7 @@
* Serial port stubs for kernel decompress status messages * Serial port stubs for kernel decompress status messages
* *
* Copyright (C) 2009 ST Microelectronics * Copyright (C) 2009 ST Microelectronics
* Viresh Kumar<viresh.kumar@st.com> * Viresh Kumar <viresh.linux@gmail.com>
* *
* This file is licensed under the terms of the GNU General Public * This file is licensed under the terms of the GNU General Public
* License version 2. This program is licensed "as is" without any * License version 2. This program is licensed "as is" without any

View File

@ -4,7 +4,7 @@
* DMAC pl080 definitions for SPEAr platform * DMAC pl080 definitions for SPEAr platform
* *
* Copyright (C) 2012 ST Microelectronics * Copyright (C) 2012 ST Microelectronics
* Viresh Kumar <viresh.kumar@st.com> * Viresh Kumar <viresh.linux@gmail.com>
* *
* This file is licensed under the terms of the GNU General Public * This file is licensed under the terms of the GNU General Public
* License version 2. This program is licensed "as is" without any * License version 2. This program is licensed "as is" without any

View File

@ -4,7 +4,7 @@
* SPEAr platform specific restart functions * SPEAr platform specific restart functions
* *
* Copyright (C) 2009 ST Microelectronics * Copyright (C) 2009 ST Microelectronics
* Viresh Kumar<viresh.kumar@st.com> * Viresh Kumar <viresh.linux@gmail.com>
* *
* This file is licensed under the terms of the GNU General Public * This file is licensed under the terms of the GNU General Public
* License version 2. This program is licensed "as is" without any * License version 2. This program is licensed "as is" without any

View File

@ -4,7 +4,7 @@
* SPEAr platform shared irq layer source file * SPEAr platform shared irq layer source file
* *
* Copyright (C) 2009 ST Microelectronics * Copyright (C) 2009 ST Microelectronics
* Viresh Kumar<viresh.kumar@st.com> * Viresh Kumar <viresh.linux@gmail.com>
* *
* This file is licensed under the terms of the GNU General Public * This file is licensed under the terms of the GNU General Public
* License version 2. This program is licensed "as is" without any * License version 2. This program is licensed "as is" without any

View File

@ -35,6 +35,7 @@
#include <asm/setup.h> #include <asm/setup.h>
#include <asm/irq.h> #include <asm/irq.h>
#include <asm/pgtable.h> #include <asm/pgtable.h>
#include <asm/sections.h>
#if defined(__H8300H__) #if defined(__H8300H__)
#define CPU "H8/300H" #define CPU "H8/300H"
@ -54,7 +55,6 @@ unsigned long memory_end;
char __initdata command_line[COMMAND_LINE_SIZE]; char __initdata command_line[COMMAND_LINE_SIZE];
extern int _stext, _etext, _sdata, _edata, _sbss, _ebss, _end;
extern int _ramstart, _ramend; extern int _ramstart, _ramend;
extern char _target_name[]; extern char _target_name[];
extern void h8300_gpio_init(void); extern void h8300_gpio_init(void);
@ -119,9 +119,9 @@ void __init setup_arch(char **cmdline_p)
memory_end = CONFIG_BLKDEV_RESERVE_ADDRESS; memory_end = CONFIG_BLKDEV_RESERVE_ADDRESS;
#endif #endif
init_mm.start_code = (unsigned long) &_stext; init_mm.start_code = (unsigned long) _stext;
init_mm.end_code = (unsigned long) &_etext; init_mm.end_code = (unsigned long) _etext;
init_mm.end_data = (unsigned long) &_edata; init_mm.end_data = (unsigned long) _edata;
init_mm.brk = (unsigned long) 0; init_mm.brk = (unsigned long) 0;
#if (defined(CONFIG_H8300H_SIM) || defined(CONFIG_H8S_SIM)) && defined(CONFIG_GDB_MAGICPRINT) #if (defined(CONFIG_H8300H_SIM) || defined(CONFIG_H8S_SIM)) && defined(CONFIG_GDB_MAGICPRINT)
@ -134,15 +134,12 @@ void __init setup_arch(char **cmdline_p)
printk(KERN_INFO "H8/300 series support by Yoshinori Sato <ysato@users.sourceforge.jp>\n"); printk(KERN_INFO "H8/300 series support by Yoshinori Sato <ysato@users.sourceforge.jp>\n");
#ifdef DEBUG #ifdef DEBUG
printk(KERN_DEBUG "KERNEL -> TEXT=0x%06x-0x%06x DATA=0x%06x-0x%06x " printk(KERN_DEBUG "KERNEL -> TEXT=0x%p-0x%p DATA=0x%p-0x%p "
"BSS=0x%06x-0x%06x\n", (int) &_stext, (int) &_etext, "BSS=0x%p-0x%p\n", _stext, _etext, _sdata, _edata, __bss_start,
(int) &_sdata, (int) &_edata, __bss_stop);
(int) &_sbss, (int) &_ebss); printk(KERN_DEBUG "KERNEL -> ROMFS=0x%p-0x%06lx MEM=0x%06lx-0x%06lx "
printk(KERN_DEBUG "KERNEL -> ROMFS=0x%06x-0x%06x MEM=0x%06x-0x%06x " "STACK=0x%06lx-0x%p\n", __bss_stop, memory_start, memory_start,
"STACK=0x%06x-0x%06x\n", memory_end, memory_end, &_ramend);
(int) &_ebss, (int) memory_start,
(int) memory_start, (int) memory_end,
(int) memory_end, (int) &_ramend);
#endif #endif
#ifdef CONFIG_DEFAULT_CMDLINE #ifdef CONFIG_DEFAULT_CMDLINE

View File

@ -36,6 +36,7 @@
#include <asm/segment.h> #include <asm/segment.h>
#include <asm/page.h> #include <asm/page.h>
#include <asm/pgtable.h> #include <asm/pgtable.h>
#include <asm/sections.h>
#undef DEBUG #undef DEBUG
@ -123,7 +124,6 @@ void __init mem_init(void)
int codek = 0, datak = 0, initk = 0; int codek = 0, datak = 0, initk = 0;
/* DAVIDM look at setup memory map generically with reserved area */ /* DAVIDM look at setup memory map generically with reserved area */
unsigned long tmp; unsigned long tmp;
extern char _etext, _stext, _sdata, _ebss, __init_begin, __init_end;
extern unsigned long _ramend, _ramstart; extern unsigned long _ramend, _ramstart;
unsigned long len = &_ramend - &_ramstart; unsigned long len = &_ramend - &_ramstart;
unsigned long start_mem = memory_start; /* DAVIDM - these must start at end of kernel */ unsigned long start_mem = memory_start; /* DAVIDM - these must start at end of kernel */
@ -142,9 +142,9 @@ void __init mem_init(void)
/* this will put all memory onto the freelists */ /* this will put all memory onto the freelists */
totalram_pages = free_all_bootmem(); totalram_pages = free_all_bootmem();
codek = (&_etext - &_stext) >> 10; codek = (_etext - _stext) >> 10;
datak = (&_ebss - &_sdata) >> 10; datak = (__bss_stop - _sdata) >> 10;
initk = (&__init_begin - &__init_end) >> 10; initk = (__init_begin - __init_end) >> 10;
tmp = nr_free_pages() << PAGE_SHIFT; tmp = nr_free_pages() << PAGE_SHIFT;
printk(KERN_INFO "Memory available: %luk/%luk RAM, %luk/%luk ROM (%dk kernel code, %dk data)\n", printk(KERN_INFO "Memory available: %luk/%luk RAM, %luk/%luk ROM (%dk kernel code, %dk data)\n",
@ -178,22 +178,21 @@ free_initmem(void)
{ {
#ifdef CONFIG_RAMKERNEL #ifdef CONFIG_RAMKERNEL
unsigned long addr; unsigned long addr;
extern char __init_begin, __init_end;
/* /*
* the following code should be cool even if these sections * the following code should be cool even if these sections
* are not page aligned. * are not page aligned.
*/ */
addr = PAGE_ALIGN((unsigned long)(&__init_begin)); addr = PAGE_ALIGN((unsigned long)(__init_begin));
/* next to check that the page we free is not a partial page */ /* next to check that the page we free is not a partial page */
for (; addr + PAGE_SIZE < (unsigned long)(&__init_end); addr +=PAGE_SIZE) { for (; addr + PAGE_SIZE < (unsigned long)__init_end; addr +=PAGE_SIZE) {
ClearPageReserved(virt_to_page(addr)); ClearPageReserved(virt_to_page(addr));
init_page_count(virt_to_page(addr)); init_page_count(virt_to_page(addr));
free_page(addr); free_page(addr);
totalram_pages++; totalram_pages++;
} }
printk(KERN_INFO "Freeing unused kernel memory: %ldk freed (0x%x - 0x%x)\n", printk(KERN_INFO "Freeing unused kernel memory: %ldk freed (0x%x - 0x%x)\n",
(addr - PAGE_ALIGN((long) &__init_begin)) >> 10, (addr - PAGE_ALIGN((long) __init_begin)) >> 10,
(int)(PAGE_ALIGN((unsigned long)(&__init_begin))), (int)(PAGE_ALIGN((unsigned long)__init_begin)),
(int)(addr - PAGE_SIZE)); (int)(addr - PAGE_SIZE));
#endif #endif
} }

View File

@ -47,16 +47,26 @@ static inline void native_set_pte(pte_t *ptep, pte_t pte)
* they can run pmd_offset_map_lock or pmd_trans_huge or other pmd * they can run pmd_offset_map_lock or pmd_trans_huge or other pmd
* operations. * operations.
* *
* Without THP if the mmap_sem is hold for reading, the * Without THP if the mmap_sem is hold for reading, the pmd can only
* pmd can only transition from null to not null while pmd_read_atomic runs. * transition from null to not null while pmd_read_atomic runs. So
* So there's no need of literally reading it atomically. * we can always return atomic pmd values with this function.
* *
* With THP if the mmap_sem is hold for reading, the pmd can become * With THP if the mmap_sem is hold for reading, the pmd can become
* THP or null or point to a pte (and in turn become "stable") at any * trans_huge or none or point to a pte (and in turn become "stable")
* time under pmd_read_atomic, so it's mandatory to read it atomically * at any time under pmd_read_atomic. We could read it really
* with cmpxchg8b. * atomically here with a atomic64_read for the THP enabled case (and
* it would be a whole lot simpler), but to avoid using cmpxchg8b we
* only return an atomic pmdval if the low part of the pmdval is later
* found stable (i.e. pointing to a pte). And we're returning a none
* pmdval if the low part of the pmd is none. In some cases the high
* and low part of the pmdval returned may not be consistent if THP is
* enabled (the low part may point to previously mapped hugepage,
* while the high part may point to a more recently mapped hugepage),
* but pmd_none_or_trans_huge_or_clear_bad() only needs the low part
* of the pmd to be read atomically to decide if the pmd is unstable
* or not, with the only exception of when the low part of the pmd is
* zero in which case we return a none pmd.
*/ */
#ifndef CONFIG_TRANSPARENT_HUGEPAGE
static inline pmd_t pmd_read_atomic(pmd_t *pmdp) static inline pmd_t pmd_read_atomic(pmd_t *pmdp)
{ {
pmdval_t ret; pmdval_t ret;
@ -74,12 +84,6 @@ static inline pmd_t pmd_read_atomic(pmd_t *pmdp)
return (pmd_t) { ret }; return (pmd_t) { ret };
} }
#else /* CONFIG_TRANSPARENT_HUGEPAGE */
static inline pmd_t pmd_read_atomic(pmd_t *pmdp)
{
return (pmd_t) { atomic64_read((atomic64_t *)pmdp) };
}
#endif /* CONFIG_TRANSPARENT_HUGEPAGE */
static inline void native_set_pte_atomic(pte_t *ptep, pte_t pte) static inline void native_set_pte_atomic(pte_t *ptep, pte_t pte)
{ {

View File

@ -68,8 +68,8 @@ endif
# Only build variant and/or platform if it includes a Makefile # Only build variant and/or platform if it includes a Makefile
buildvar := $(shell test -a $(srctree)/arch/xtensa/variants/$(VARIANT)/Makefile && echo arch/xtensa/variants/$(VARIANT)/) buildvar := $(shell test -e $(srctree)/arch/xtensa/variants/$(VARIANT)/Makefile && echo arch/xtensa/variants/$(VARIANT)/)
buildplf := $(shell test -a $(srctree)/arch/xtensa/platforms/$(PLATFORM)/Makefile && echo arch/xtensa/platforms/$(PLATFORM)/) buildplf := $(shell test -e $(srctree)/arch/xtensa/platforms/$(PLATFORM)/Makefile && echo arch/xtensa/platforms/$(PLATFORM)/)
# Find libgcc.a # Find libgcc.a

View File

@ -83,7 +83,6 @@ SECTIONS
_text = .; _text = .;
_stext = .; _stext = .;
_ftext = .;
.text : .text :
{ {
@ -112,7 +111,7 @@ SECTIONS
EXCEPTION_TABLE(16) EXCEPTION_TABLE(16)
/* Data section */ /* Data section */
_fdata = .; _sdata = .;
RW_DATA_SECTION(XCHAL_ICACHE_LINESIZE, PAGE_SIZE, THREAD_SIZE) RW_DATA_SECTION(XCHAL_ICACHE_LINESIZE, PAGE_SIZE, THREAD_SIZE)
_edata = .; _edata = .;

View File

@ -26,11 +26,7 @@
#include <asm/bootparam.h> #include <asm/bootparam.h>
#include <asm/page.h> #include <asm/page.h>
#include <asm/sections.h>
/* References to section boundaries */
extern char _ftext, _etext, _fdata, _edata, _rodata_end;
extern char __init_begin, __init_end;
/* /*
* mem_reserve(start, end, must_exist) * mem_reserve(start, end, must_exist)
@ -197,9 +193,9 @@ void __init mem_init(void)
reservedpages++; reservedpages++;
} }
codesize = (unsigned long) &_etext - (unsigned long) &_ftext; codesize = (unsigned long) _etext - (unsigned long) _stext;
datasize = (unsigned long) &_edata - (unsigned long) &_fdata; datasize = (unsigned long) _edata - (unsigned long) _sdata;
initsize = (unsigned long) &__init_end - (unsigned long) &__init_begin; initsize = (unsigned long) __init_end - (unsigned long) __init_begin;
printk("Memory: %luk/%luk available (%ldk kernel code, %ldk reserved, " printk("Memory: %luk/%luk available (%ldk kernel code, %ldk reserved, "
"%ldk data, %ldk init %ldk highmem)\n", "%ldk data, %ldk init %ldk highmem)\n",
@ -237,7 +233,7 @@ void free_initrd_mem(unsigned long start, unsigned long end)
void free_initmem(void) void free_initmem(void)
{ {
free_reserved_mem(&__init_begin, &__init_end); free_reserved_mem(__init_begin, __init_end);
printk("Freeing unused kernel memory: %dk freed\n", printk("Freeing unused kernel memory: %zuk freed\n",
(&__init_end - &__init_begin) >> 10); (__init_end - __init_begin) >> 10);
} }

View File

@ -4,7 +4,7 @@
* Arasan Compact Flash host controller source file * Arasan Compact Flash host controller source file
* *
* Copyright (C) 2011 ST Microelectronics * Copyright (C) 2011 ST Microelectronics
* Viresh Kumar <viresh.kumar@st.com> * Viresh Kumar <viresh.linux@gmail.com>
* *
* This file is licensed under the terms of the GNU General Public * This file is licensed under the terms of the GNU General Public
* License version 2. This program is licensed "as is" without any * License version 2. This program is licensed "as is" without any
@ -959,7 +959,7 @@ static struct platform_driver arasan_cf_driver = {
module_platform_driver(arasan_cf_driver); module_platform_driver(arasan_cf_driver);
MODULE_AUTHOR("Viresh Kumar <viresh.kumar@st.com>"); MODULE_AUTHOR("Viresh Kumar <viresh.linux@gmail.com>");
MODULE_DESCRIPTION("Arasan ATA Compact Flash driver"); MODULE_DESCRIPTION("Arasan ATA Compact Flash driver");
MODULE_LICENSE("GPL"); MODULE_LICENSE("GPL");
MODULE_ALIAS("platform:" DRIVER_NAME); MODULE_ALIAS("platform:" DRIVER_NAME);

View File

@ -1,6 +1,6 @@
/* /*
* Copyright (C) 2012 ST Microelectronics * Copyright (C) 2012 ST Microelectronics
* Viresh Kumar <viresh.kumar@st.com> * Viresh Kumar <viresh.linux@gmail.com>
* *
* This file is licensed under the terms of the GNU General Public * This file is licensed under the terms of the GNU General Public
* License version 2. This program is licensed "as is" without any * License version 2. This program is licensed "as is" without any

View File

@ -1,6 +1,6 @@
/* /*
* Copyright (C) 2012 ST Microelectronics * Copyright (C) 2012 ST Microelectronics
* Viresh Kumar <viresh.kumar@st.com> * Viresh Kumar <viresh.linux@gmail.com>
* *
* This file is licensed under the terms of the GNU General Public * This file is licensed under the terms of the GNU General Public
* License version 2. This program is licensed "as is" without any * License version 2. This program is licensed "as is" without any

View File

@ -1,6 +1,6 @@
/* /*
* Copyright (C) 2012 ST Microelectronics * Copyright (C) 2012 ST Microelectronics
* Viresh Kumar <viresh.kumar@st.com> * Viresh Kumar <viresh.linux@gmail.com>
* *
* This file is licensed under the terms of the GNU General Public * This file is licensed under the terms of the GNU General Public
* License version 2. This program is licensed "as is" without any * License version 2. This program is licensed "as is" without any

View File

@ -1,6 +1,6 @@
/* /*
* Copyright (C) 2012 ST Microelectronics * Copyright (C) 2012 ST Microelectronics
* Viresh Kumar <viresh.kumar@st.com> * Viresh Kumar <viresh.linux@gmail.com>
* *
* This file is licensed under the terms of the GNU General Public * This file is licensed under the terms of the GNU General Public
* License version 2. This program is licensed "as is" without any * License version 2. This program is licensed "as is" without any

View File

@ -1,6 +1,6 @@
/* /*
* Copyright (C) 2012 ST Microelectronics * Copyright (C) 2012 ST Microelectronics
* Viresh Kumar <viresh.kumar@st.com> * Viresh Kumar <viresh.linux@gmail.com>
* *
* This file is licensed under the terms of the GNU General Public * This file is licensed under the terms of the GNU General Public
* License version 2. This program is licensed "as is" without any * License version 2. This program is licensed "as is" without any

View File

@ -2,7 +2,7 @@
* Clock framework definitions for SPEAr platform * Clock framework definitions for SPEAr platform
* *
* Copyright (C) 2012 ST Microelectronics * Copyright (C) 2012 ST Microelectronics
* Viresh Kumar <viresh.kumar@st.com> * Viresh Kumar <viresh.linux@gmail.com>
* *
* This file is licensed under the terms of the GNU General Public * This file is licensed under the terms of the GNU General Public
* License version 2. This program is licensed "as is" without any * License version 2. This program is licensed "as is" without any

View File

@ -4,7 +4,7 @@
* SPEAr1310 machine clock framework source file * SPEAr1310 machine clock framework source file
* *
* Copyright (C) 2012 ST Microelectronics * Copyright (C) 2012 ST Microelectronics
* Viresh Kumar <viresh.kumar@st.com> * Viresh Kumar <viresh.linux@gmail.com>
* *
* This file is licensed under the terms of the GNU General Public * This file is licensed under the terms of the GNU General Public
* License version 2. This program is licensed "as is" without any * License version 2. This program is licensed "as is" without any

View File

@ -4,7 +4,7 @@
* SPEAr1340 machine clock framework source file * SPEAr1340 machine clock framework source file
* *
* Copyright (C) 2012 ST Microelectronics * Copyright (C) 2012 ST Microelectronics
* Viresh Kumar <viresh.kumar@st.com> * Viresh Kumar <viresh.linux@gmail.com>
* *
* This file is licensed under the terms of the GNU General Public * This file is licensed under the terms of the GNU General Public
* License version 2. This program is licensed "as is" without any * License version 2. This program is licensed "as is" without any

View File

@ -2,7 +2,7 @@
* SPEAr3xx machines clock framework source file * SPEAr3xx machines clock framework source file
* *
* Copyright (C) 2012 ST Microelectronics * Copyright (C) 2012 ST Microelectronics
* Viresh Kumar <viresh.kumar@st.com> * Viresh Kumar <viresh.linux@gmail.com>
* *
* This file is licensed under the terms of the GNU General Public * This file is licensed under the terms of the GNU General Public
* License version 2. This program is licensed "as is" without any * License version 2. This program is licensed "as is" without any

View File

@ -2,7 +2,7 @@
* SPEAr6xx machines clock framework source file * SPEAr6xx machines clock framework source file
* *
* Copyright (C) 2012 ST Microelectronics * Copyright (C) 2012 ST Microelectronics
* Viresh Kumar <viresh.kumar@st.com> * Viresh Kumar <viresh.linux@gmail.com>
* *
* This file is licensed under the terms of the GNU General Public * This file is licensed under the terms of the GNU General Public
* License version 2. This program is licensed "as is" without any * License version 2. This program is licensed "as is" without any

View File

@ -1626,4 +1626,4 @@ module_exit(dw_exit);
MODULE_LICENSE("GPL v2"); MODULE_LICENSE("GPL v2");
MODULE_DESCRIPTION("Synopsys DesignWare DMA Controller driver"); MODULE_DESCRIPTION("Synopsys DesignWare DMA Controller driver");
MODULE_AUTHOR("Haavard Skinnemoen (Atmel)"); MODULE_AUTHOR("Haavard Skinnemoen (Atmel)");
MODULE_AUTHOR("Viresh Kumar <viresh.kumar@st.com>"); MODULE_AUTHOR("Viresh Kumar <viresh.linux@gmail.com>");

View File

@ -6,7 +6,7 @@
* *
* License Terms: GNU General Public License, version 2 * License Terms: GNU General Public License, version 2
* Author: Rabin Vincent <rabin.vincent@stericsson.com> for ST-Ericsson * Author: Rabin Vincent <rabin.vincent@stericsson.com> for ST-Ericsson
* Author: Viresh Kumar <viresh.kumar@st.com> for ST Microelectronics * Author: Viresh Kumar <viresh.linux@gmail.com> for ST Microelectronics
*/ */
#include <linux/i2c.h> #include <linux/i2c.h>

View File

@ -4,7 +4,7 @@
* Copyright (C) ST Microelectronics SA 2011 * Copyright (C) ST Microelectronics SA 2011
* *
* License Terms: GNU General Public License, version 2 * License Terms: GNU General Public License, version 2
* Author: Viresh Kumar <viresh.kumar@st.com> for ST Microelectronics * Author: Viresh Kumar <viresh.linux@gmail.com> for ST Microelectronics
*/ */
#include <linux/spi/spi.h> #include <linux/spi/spi.h>
@ -146,4 +146,4 @@ module_exit(stmpe_exit);
MODULE_LICENSE("GPL v2"); MODULE_LICENSE("GPL v2");
MODULE_DESCRIPTION("STMPE MFD SPI Interface Driver"); MODULE_DESCRIPTION("STMPE MFD SPI Interface Driver");
MODULE_AUTHOR("Viresh Kumar <viresh.kumar@st.com>"); MODULE_AUTHOR("Viresh Kumar <viresh.linux@gmail.com>");

View File

@ -4,7 +4,7 @@
* Support of SDHCI platform devices for spear soc family * Support of SDHCI platform devices for spear soc family
* *
* Copyright (C) 2010 ST Microelectronics * Copyright (C) 2010 ST Microelectronics
* Viresh Kumar<viresh.kumar@st.com> * Viresh Kumar <viresh.linux@gmail.com>
* *
* Inspired by sdhci-pltfm.c * Inspired by sdhci-pltfm.c
* *
@ -289,5 +289,5 @@ static struct platform_driver sdhci_driver = {
module_platform_driver(sdhci_driver); module_platform_driver(sdhci_driver);
MODULE_DESCRIPTION("SPEAr Secure Digital Host Controller Interface driver"); MODULE_DESCRIPTION("SPEAr Secure Digital Host Controller Interface driver");
MODULE_AUTHOR("Viresh Kumar <viresh.kumar@st.com>"); MODULE_AUTHOR("Viresh Kumar <viresh.linux@gmail.com>");
MODULE_LICENSE("GPL v2"); MODULE_LICENSE("GPL v2");

View File

@ -2,7 +2,7 @@
* Driver for the ST Microelectronics SPEAr pinmux * Driver for the ST Microelectronics SPEAr pinmux
* *
* Copyright (C) 2012 ST Microelectronics * Copyright (C) 2012 ST Microelectronics
* Viresh Kumar <viresh.kumar@st.com> * Viresh Kumar <viresh.linux@gmail.com>
* *
* Inspired from: * Inspired from:
* - U300 Pinctl drivers * - U300 Pinctl drivers

View File

@ -2,7 +2,7 @@
* Driver header file for the ST Microelectronics SPEAr pinmux * Driver header file for the ST Microelectronics SPEAr pinmux
* *
* Copyright (C) 2012 ST Microelectronics * Copyright (C) 2012 ST Microelectronics
* Viresh Kumar <viresh.kumar@st.com> * Viresh Kumar <viresh.linux@gmail.com>
* *
* This file is licensed under the terms of the GNU General Public * This file is licensed under the terms of the GNU General Public
* License version 2. This program is licensed "as is" without any * License version 2. This program is licensed "as is" without any

View File

@ -2,7 +2,7 @@
* Driver for the ST Microelectronics SPEAr1310 pinmux * Driver for the ST Microelectronics SPEAr1310 pinmux
* *
* Copyright (C) 2012 ST Microelectronics * Copyright (C) 2012 ST Microelectronics
* Viresh Kumar <viresh.kumar@st.com> * Viresh Kumar <viresh.linux@gmail.com>
* *
* This file is licensed under the terms of the GNU General Public * This file is licensed under the terms of the GNU General Public
* License version 2. This program is licensed "as is" without any * License version 2. This program is licensed "as is" without any
@ -2192,7 +2192,7 @@ static void __exit spear1310_pinctrl_exit(void)
} }
module_exit(spear1310_pinctrl_exit); module_exit(spear1310_pinctrl_exit);
MODULE_AUTHOR("Viresh Kumar <viresh.kumar@st.com>"); MODULE_AUTHOR("Viresh Kumar <viresh.linux@gmail.com>");
MODULE_DESCRIPTION("ST Microelectronics SPEAr1310 pinctrl driver"); MODULE_DESCRIPTION("ST Microelectronics SPEAr1310 pinctrl driver");
MODULE_LICENSE("GPL v2"); MODULE_LICENSE("GPL v2");
MODULE_DEVICE_TABLE(of, spear1310_pinctrl_of_match); MODULE_DEVICE_TABLE(of, spear1310_pinctrl_of_match);

View File

@ -2,7 +2,7 @@
* Driver for the ST Microelectronics SPEAr1340 pinmux * Driver for the ST Microelectronics SPEAr1340 pinmux
* *
* Copyright (C) 2012 ST Microelectronics * Copyright (C) 2012 ST Microelectronics
* Viresh Kumar <viresh.kumar@st.com> * Viresh Kumar <viresh.linux@gmail.com>
* *
* This file is licensed under the terms of the GNU General Public * This file is licensed under the terms of the GNU General Public
* License version 2. This program is licensed "as is" without any * License version 2. This program is licensed "as is" without any
@ -1983,7 +1983,7 @@ static void __exit spear1340_pinctrl_exit(void)
} }
module_exit(spear1340_pinctrl_exit); module_exit(spear1340_pinctrl_exit);
MODULE_AUTHOR("Viresh Kumar <viresh.kumar@st.com>"); MODULE_AUTHOR("Viresh Kumar <viresh.linux@gmail.com>");
MODULE_DESCRIPTION("ST Microelectronics SPEAr1340 pinctrl driver"); MODULE_DESCRIPTION("ST Microelectronics SPEAr1340 pinctrl driver");
MODULE_LICENSE("GPL v2"); MODULE_LICENSE("GPL v2");
MODULE_DEVICE_TABLE(of, spear1340_pinctrl_of_match); MODULE_DEVICE_TABLE(of, spear1340_pinctrl_of_match);

View File

@ -2,7 +2,7 @@
* Driver for the ST Microelectronics SPEAr300 pinmux * Driver for the ST Microelectronics SPEAr300 pinmux
* *
* Copyright (C) 2012 ST Microelectronics * Copyright (C) 2012 ST Microelectronics
* Viresh Kumar <viresh.kumar@st.com> * Viresh Kumar <viresh.linux@gmail.com>
* *
* This file is licensed under the terms of the GNU General Public * This file is licensed under the terms of the GNU General Public
* License version 2. This program is licensed "as is" without any * License version 2. This program is licensed "as is" without any
@ -702,7 +702,7 @@ static void __exit spear300_pinctrl_exit(void)
} }
module_exit(spear300_pinctrl_exit); module_exit(spear300_pinctrl_exit);
MODULE_AUTHOR("Viresh Kumar <viresh.kumar@st.com>"); MODULE_AUTHOR("Viresh Kumar <viresh.linux@gmail.com>");
MODULE_DESCRIPTION("ST Microelectronics SPEAr300 pinctrl driver"); MODULE_DESCRIPTION("ST Microelectronics SPEAr300 pinctrl driver");
MODULE_LICENSE("GPL v2"); MODULE_LICENSE("GPL v2");
MODULE_DEVICE_TABLE(of, spear300_pinctrl_of_match); MODULE_DEVICE_TABLE(of, spear300_pinctrl_of_match);

View File

@ -2,7 +2,7 @@
* Driver for the ST Microelectronics SPEAr310 pinmux * Driver for the ST Microelectronics SPEAr310 pinmux
* *
* Copyright (C) 2012 ST Microelectronics * Copyright (C) 2012 ST Microelectronics
* Viresh Kumar <viresh.kumar@st.com> * Viresh Kumar <viresh.linux@gmail.com>
* *
* This file is licensed under the terms of the GNU General Public * This file is licensed under the terms of the GNU General Public
* License version 2. This program is licensed "as is" without any * License version 2. This program is licensed "as is" without any
@ -425,7 +425,7 @@ static void __exit spear310_pinctrl_exit(void)
} }
module_exit(spear310_pinctrl_exit); module_exit(spear310_pinctrl_exit);
MODULE_AUTHOR("Viresh Kumar <viresh.kumar@st.com>"); MODULE_AUTHOR("Viresh Kumar <viresh.linux@gmail.com>");
MODULE_DESCRIPTION("ST Microelectronics SPEAr310 pinctrl driver"); MODULE_DESCRIPTION("ST Microelectronics SPEAr310 pinctrl driver");
MODULE_LICENSE("GPL v2"); MODULE_LICENSE("GPL v2");
MODULE_DEVICE_TABLE(of, SPEAr310_pinctrl_of_match); MODULE_DEVICE_TABLE(of, SPEAr310_pinctrl_of_match);

View File

@ -2,7 +2,7 @@
* Driver for the ST Microelectronics SPEAr320 pinmux * Driver for the ST Microelectronics SPEAr320 pinmux
* *
* Copyright (C) 2012 ST Microelectronics * Copyright (C) 2012 ST Microelectronics
* Viresh Kumar <viresh.kumar@st.com> * Viresh Kumar <viresh.linux@gmail.com>
* *
* This file is licensed under the terms of the GNU General Public * This file is licensed under the terms of the GNU General Public
* License version 2. This program is licensed "as is" without any * License version 2. This program is licensed "as is" without any
@ -3462,7 +3462,7 @@ static void __exit spear320_pinctrl_exit(void)
} }
module_exit(spear320_pinctrl_exit); module_exit(spear320_pinctrl_exit);
MODULE_AUTHOR("Viresh Kumar <viresh.kumar@st.com>"); MODULE_AUTHOR("Viresh Kumar <viresh.linux@gmail.com>");
MODULE_DESCRIPTION("ST Microelectronics SPEAr320 pinctrl driver"); MODULE_DESCRIPTION("ST Microelectronics SPEAr320 pinctrl driver");
MODULE_LICENSE("GPL v2"); MODULE_LICENSE("GPL v2");
MODULE_DEVICE_TABLE(of, spear320_pinctrl_of_match); MODULE_DEVICE_TABLE(of, spear320_pinctrl_of_match);

View File

@ -2,7 +2,7 @@
* Driver for the ST Microelectronics SPEAr3xx pinmux * Driver for the ST Microelectronics SPEAr3xx pinmux
* *
* Copyright (C) 2012 ST Microelectronics * Copyright (C) 2012 ST Microelectronics
* Viresh Kumar <viresh.kumar@st.com> * Viresh Kumar <viresh.linux@gmail.com>
* *
* This file is licensed under the terms of the GNU General Public * This file is licensed under the terms of the GNU General Public
* License version 2. This program is licensed "as is" without any * License version 2. This program is licensed "as is" without any

View File

@ -2,7 +2,7 @@
* Header file for the ST Microelectronics SPEAr3xx pinmux * Header file for the ST Microelectronics SPEAr3xx pinmux
* *
* Copyright (C) 2012 ST Microelectronics * Copyright (C) 2012 ST Microelectronics
* Viresh Kumar <viresh.kumar@st.com> * Viresh Kumar <viresh.linux@gmail.com>
* *
* This file is licensed under the terms of the GNU General Public * This file is licensed under the terms of the GNU General Public
* License version 2. This program is licensed "as is" without any * License version 2. This program is licensed "as is" without any

View File

@ -4,7 +4,7 @@
* Watchdog driver for ARM SP805 watchdog module * Watchdog driver for ARM SP805 watchdog module
* *
* Copyright (C) 2010 ST Microelectronics * Copyright (C) 2010 ST Microelectronics
* Viresh Kumar<viresh.kumar@st.com> * Viresh Kumar <viresh.linux@gmail.com>
* *
* This file is licensed under the terms of the GNU General Public * This file is licensed under the terms of the GNU General Public
* License version 2 or later. This program is licensed "as is" without any * License version 2 or later. This program is licensed "as is" without any
@ -331,6 +331,6 @@ static struct amba_driver sp805_wdt_driver = {
module_amba_driver(sp805_wdt_driver); module_amba_driver(sp805_wdt_driver);
MODULE_AUTHOR("Viresh Kumar <viresh.kumar@st.com>"); MODULE_AUTHOR("Viresh Kumar <viresh.linux@gmail.com>");
MODULE_DESCRIPTION("ARM SP805 Watchdog Driver"); MODULE_DESCRIPTION("ARM SP805 Watchdog Driver");
MODULE_LICENSE("GPL"); MODULE_LICENSE("GPL");

View File

@ -819,10 +819,10 @@ static int exec_mmap(struct mm_struct *mm)
/* Notify parent that we're no longer interested in the old VM */ /* Notify parent that we're no longer interested in the old VM */
tsk = current; tsk = current;
old_mm = current->mm; old_mm = current->mm;
sync_mm_rss(old_mm);
mm_release(tsk, old_mm); mm_release(tsk, old_mm);
if (old_mm) { if (old_mm) {
sync_mm_rss(old_mm);
/* /*
* Make sure that if there is a core dump in progress * Make sure that if there is a core dump in progress
* for the old mm, we get out and die instead of going * for the old mm, we get out and die instead of going

View File

@ -191,6 +191,8 @@ void nilfs_remove_all_gcinodes(struct the_nilfs *nilfs)
while (!list_empty(head)) { while (!list_empty(head)) {
ii = list_first_entry(head, struct nilfs_inode_info, i_dirty); ii = list_first_entry(head, struct nilfs_inode_info, i_dirty);
list_del_init(&ii->i_dirty); list_del_init(&ii->i_dirty);
truncate_inode_pages(&ii->vfs_inode.i_data, 0);
nilfs_btnode_cache_clear(&ii->i_btnode_cache);
iput(&ii->vfs_inode); iput(&ii->vfs_inode);
} }
} }

View File

@ -2309,6 +2309,8 @@ nilfs_remove_written_gcinodes(struct the_nilfs *nilfs, struct list_head *head)
if (!test_bit(NILFS_I_UPDATED, &ii->i_state)) if (!test_bit(NILFS_I_UPDATED, &ii->i_state))
continue; continue;
list_del_init(&ii->i_dirty); list_del_init(&ii->i_dirty);
truncate_inode_pages(&ii->vfs_inode.i_data, 0);
nilfs_btnode_cache_clear(&ii->i_btnode_cache);
iput(&ii->vfs_inode); iput(&ii->vfs_inode);
} }
} }

View File

@ -484,6 +484,16 @@ static inline int pmd_none_or_trans_huge_or_clear_bad(pmd_t *pmd)
/* /*
* The barrier will stabilize the pmdval in a register or on * The barrier will stabilize the pmdval in a register or on
* the stack so that it will stop changing under the code. * the stack so that it will stop changing under the code.
*
* When CONFIG_TRANSPARENT_HUGEPAGE=y on x86 32bit PAE,
* pmd_read_atomic is allowed to return a not atomic pmdval
* (for example pointing to an hugepage that has never been
* mapped in the pmd). The below checks will only care about
* the low part of the pmd with 32bit PAE x86 anyway, with the
* exception of pmd_none(). So the important thing is that if
* the low part of the pmd is found null, the high part will
* be also null or the pmd_none() check below would be
* confused.
*/ */
#ifdef CONFIG_TRANSPARENT_HUGEPAGE #ifdef CONFIG_TRANSPARENT_HUGEPAGE
barrier(); barrier();

View File

@ -57,8 +57,18 @@ struct page {
}; };
union { union {
#if defined(CONFIG_HAVE_CMPXCHG_DOUBLE) && \
defined(CONFIG_HAVE_ALIGNED_STRUCT_PAGE)
/* Used for cmpxchg_double in slub */ /* Used for cmpxchg_double in slub */
unsigned long counters; unsigned long counters;
#else
/*
* Keep _count separate from slub cmpxchg_double data.
* As the rest of the double word is protected by
* slab_lock but _count is not.
*/
unsigned counters;
#endif
struct { struct {

View File

@ -4,7 +4,7 @@
* SDHCI declarations specific to ST SPEAr platform * SDHCI declarations specific to ST SPEAr platform
* *
* Copyright (C) 2010 ST Microelectronics * Copyright (C) 2010 ST Microelectronics
* Viresh Kumar<viresh.kumar@st.com> * Viresh Kumar <viresh.linux@gmail.com>
* *
* This file is licensed under the terms of the GNU General Public * This file is licensed under the terms of the GNU General Public
* License version 2. This program is licensed "as is" without any * License version 2. This program is licensed "as is" without any

View File

@ -4,7 +4,7 @@
* Arasan Compact Flash host controller platform data header file * Arasan Compact Flash host controller platform data header file
* *
* Copyright (C) 2011 ST Microelectronics * Copyright (C) 2011 ST Microelectronics
* Viresh Kumar <viresh.kumar@st.com> * Viresh Kumar <viresh.linux@gmail.com>
* *
* This file is licensed under the terms of the GNU General Public * This file is licensed under the terms of the GNU General Public
* License version 2. This program is licensed "as is" without any * License version 2. This program is licensed "as is" without any

View File

@ -72,6 +72,18 @@ static void __unhash_process(struct task_struct *p, bool group_dead)
list_del_rcu(&p->tasks); list_del_rcu(&p->tasks);
list_del_init(&p->sibling); list_del_init(&p->sibling);
__this_cpu_dec(process_counts); __this_cpu_dec(process_counts);
/*
* If we are the last child process in a pid namespace to be
* reaped, notify the reaper sleeping zap_pid_ns_processes().
*/
if (IS_ENABLED(CONFIG_PID_NS)) {
struct task_struct *parent = p->real_parent;
if ((task_active_pid_ns(parent)->child_reaper == parent) &&
list_empty(&parent->children) &&
(parent->flags & PF_EXITING))
wake_up_process(parent);
}
} }
list_del_rcu(&p->thread_group); list_del_rcu(&p->thread_group);
} }
@ -643,6 +655,7 @@ static void exit_mm(struct task_struct * tsk)
mm_release(tsk, mm); mm_release(tsk, mm);
if (!mm) if (!mm)
return; return;
sync_mm_rss(mm);
/* /*
* Serialize with any possible pending coredump. * Serialize with any possible pending coredump.
* We must hold mmap_sem around checking core_state * We must hold mmap_sem around checking core_state
@ -719,12 +732,6 @@ static struct task_struct *find_new_reaper(struct task_struct *father)
zap_pid_ns_processes(pid_ns); zap_pid_ns_processes(pid_ns);
write_lock_irq(&tasklist_lock); write_lock_irq(&tasklist_lock);
/*
* We can not clear ->child_reaper or leave it alone.
* There may by stealth EXIT_DEAD tasks on ->children,
* forget_original_parent() must move them somewhere.
*/
pid_ns->child_reaper = init_pid_ns.child_reaper;
} else if (father->signal->has_child_subreaper) { } else if (father->signal->has_child_subreaper) {
struct task_struct *reaper; struct task_struct *reaper;

View File

@ -184,11 +184,31 @@ void zap_pid_ns_processes(struct pid_namespace *pid_ns)
} }
read_unlock(&tasklist_lock); read_unlock(&tasklist_lock);
/* Firstly reap the EXIT_ZOMBIE children we may have. */
do { do {
clear_thread_flag(TIF_SIGPENDING); clear_thread_flag(TIF_SIGPENDING);
rc = sys_wait4(-1, NULL, __WALL, NULL); rc = sys_wait4(-1, NULL, __WALL, NULL);
} while (rc != -ECHILD); } while (rc != -ECHILD);
/*
* sys_wait4() above can't reap the TASK_DEAD children.
* Make sure they all go away, see __unhash_process().
*/
for (;;) {
bool need_wait = false;
read_lock(&tasklist_lock);
if (!list_empty(&current->children)) {
__set_current_state(TASK_UNINTERRUPTIBLE);
need_wait = true;
}
read_unlock(&tasklist_lock);
if (!need_wait)
break;
schedule();
}
if (pid_ns->reboot) if (pid_ns->reboot)
current->signal->group_exit_code = pid_ns->reboot; current->signal->group_exit_code = pid_ns->reboot;

View File

@ -2127,9 +2127,6 @@ SYSCALL_DEFINE5(prctl, int, option, unsigned long, arg2, unsigned long, arg3,
else else
return -EINVAL; return -EINVAL;
break; break;
case PR_GET_TID_ADDRESS:
error = prctl_get_tid_address(me, (int __user **)arg2);
break;
default: default:
return -EINVAL; return -EINVAL;
} }
@ -2147,6 +2144,9 @@ SYSCALL_DEFINE5(prctl, int, option, unsigned long, arg2, unsigned long, arg3,
case PR_SET_MM: case PR_SET_MM:
error = prctl_set_mm(arg2, arg3, arg4, arg5); error = prctl_set_mm(arg2, arg3, arg4, arg5);
break; break;
case PR_GET_TID_ADDRESS:
error = prctl_get_tid_address(me, (int __user **)arg2);
break;
case PR_SET_CHILD_SUBREAPER: case PR_SET_CHILD_SUBREAPER:
me->signal->is_child_subreaper = !!arg2; me->signal->is_child_subreaper = !!arg2;
error = 0; error = 0;

View File

@ -101,6 +101,10 @@ static inline bool fail_stacktrace(struct fault_attr *attr)
bool should_fail(struct fault_attr *attr, ssize_t size) bool should_fail(struct fault_attr *attr, ssize_t size)
{ {
/* No need to check any other properties if the probability is 0 */
if (attr->probability == 0)
return false;
if (attr->task_filter && !fail_task(attr, current)) if (attr->task_filter && !fail_task(attr, current))
return false; return false;

View File

@ -184,7 +184,24 @@ static void __init_memblock memblock_remove_region(struct memblock_type *type, u
} }
} }
static int __init_memblock memblock_double_array(struct memblock_type *type) /**
* memblock_double_array - double the size of the memblock regions array
* @type: memblock type of the regions array being doubled
* @new_area_start: starting address of memory range to avoid overlap with
* @new_area_size: size of memory range to avoid overlap with
*
* Double the size of the @type regions array. If memblock is being used to
* allocate memory for a new reserved regions array and there is a previously
* allocated memory range [@new_area_start,@new_area_start+@new_area_size]
* waiting to be reserved, ensure the memory used by the new array does
* not overlap.
*
* RETURNS:
* 0 on success, -1 on failure.
*/
static int __init_memblock memblock_double_array(struct memblock_type *type,
phys_addr_t new_area_start,
phys_addr_t new_area_size)
{ {
struct memblock_region *new_array, *old_array; struct memblock_region *new_array, *old_array;
phys_addr_t old_size, new_size, addr; phys_addr_t old_size, new_size, addr;
@ -222,7 +239,18 @@ static int __init_memblock memblock_double_array(struct memblock_type *type)
new_array = kmalloc(new_size, GFP_KERNEL); new_array = kmalloc(new_size, GFP_KERNEL);
addr = new_array ? __pa(new_array) : 0; addr = new_array ? __pa(new_array) : 0;
} else { } else {
addr = memblock_find_in_range(0, MEMBLOCK_ALLOC_ACCESSIBLE, new_size, sizeof(phys_addr_t)); /* only exclude range when trying to double reserved.regions */
if (type != &memblock.reserved)
new_area_start = new_area_size = 0;
addr = memblock_find_in_range(new_area_start + new_area_size,
memblock.current_limit,
new_size, sizeof(phys_addr_t));
if (!addr && new_area_size)
addr = memblock_find_in_range(0,
min(new_area_start, memblock.current_limit),
new_size, sizeof(phys_addr_t));
new_array = addr ? __va(addr) : 0; new_array = addr ? __va(addr) : 0;
} }
if (!addr) { if (!addr) {
@ -399,7 +427,7 @@ repeat:
*/ */
if (!insert) { if (!insert) {
while (type->cnt + nr_new > type->max) while (type->cnt + nr_new > type->max)
if (memblock_double_array(type) < 0) if (memblock_double_array(type, obase, size) < 0)
return -ENOMEM; return -ENOMEM;
insert = true; insert = true;
goto repeat; goto repeat;
@ -450,7 +478,7 @@ static int __init_memblock memblock_isolate_range(struct memblock_type *type,
/* we'll create at most two more regions */ /* we'll create at most two more regions */
while (type->cnt + 2 > type->max) while (type->cnt + 2 > type->max)
if (memblock_double_array(type) < 0) if (memblock_double_array(type, base, size) < 0)
return -ENOMEM; return -ENOMEM;
for (i = 0; i < type->cnt; i++) { for (i = 0; i < type->cnt; i++) {
@ -540,9 +568,9 @@ int __init_memblock memblock_reserve(phys_addr_t base, phys_addr_t size)
* __next_free_mem_range - next function for for_each_free_mem_range() * __next_free_mem_range - next function for for_each_free_mem_range()
* @idx: pointer to u64 loop variable * @idx: pointer to u64 loop variable
* @nid: nid: node selector, %MAX_NUMNODES for all nodes * @nid: nid: node selector, %MAX_NUMNODES for all nodes
* @p_start: ptr to phys_addr_t for start address of the range, can be %NULL * @out_start: ptr to phys_addr_t for start address of the range, can be %NULL
* @p_end: ptr to phys_addr_t for end address of the range, can be %NULL * @out_end: ptr to phys_addr_t for end address of the range, can be %NULL
* @p_nid: ptr to int for nid of the range, can be %NULL * @out_nid: ptr to int for nid of the range, can be %NULL
* *
* Find the first free area from *@idx which matches @nid, fill the out * Find the first free area from *@idx which matches @nid, fill the out
* parameters, and update *@idx for the next iteration. The lower 32bit of * parameters, and update *@idx for the next iteration. The lower 32bit of
@ -616,9 +644,9 @@ void __init_memblock __next_free_mem_range(u64 *idx, int nid,
* __next_free_mem_range_rev - next function for for_each_free_mem_range_reverse() * __next_free_mem_range_rev - next function for for_each_free_mem_range_reverse()
* @idx: pointer to u64 loop variable * @idx: pointer to u64 loop variable
* @nid: nid: node selector, %MAX_NUMNODES for all nodes * @nid: nid: node selector, %MAX_NUMNODES for all nodes
* @p_start: ptr to phys_addr_t for start address of the range, can be %NULL * @out_start: ptr to phys_addr_t for start address of the range, can be %NULL
* @p_end: ptr to phys_addr_t for end address of the range, can be %NULL * @out_end: ptr to phys_addr_t for end address of the range, can be %NULL
* @p_nid: ptr to int for nid of the range, can be %NULL * @out_nid: ptr to int for nid of the range, can be %NULL
* *
* Reverse of __next_free_mem_range(). * Reverse of __next_free_mem_range().
*/ */

View File

@ -1148,7 +1148,7 @@ bool __mem_cgroup_same_or_subtree(const struct mem_cgroup *root_memcg,
{ {
if (root_memcg == memcg) if (root_memcg == memcg)
return true; return true;
if (!root_memcg->use_hierarchy) if (!root_memcg->use_hierarchy || !memcg)
return false; return false;
return css_is_ancestor(&memcg->css, &root_memcg->css); return css_is_ancestor(&memcg->css, &root_memcg->css);
} }
@ -1234,7 +1234,7 @@ int mem_cgroup_inactive_file_is_low(struct lruvec *lruvec)
/** /**
* mem_cgroup_margin - calculate chargeable space of a memory cgroup * mem_cgroup_margin - calculate chargeable space of a memory cgroup
* @mem: the memory cgroup * @memcg: the memory cgroup
* *
* Returns the maximum amount of memory @mem can be charged with, in * Returns the maximum amount of memory @mem can be charged with, in
* pages. * pages.
@ -1508,7 +1508,7 @@ static unsigned long mem_cgroup_reclaim(struct mem_cgroup *memcg,
/** /**
* test_mem_cgroup_node_reclaimable * test_mem_cgroup_node_reclaimable
* @mem: the target memcg * @memcg: the target memcg
* @nid: the node ID to be checked. * @nid: the node ID to be checked.
* @noswap : specify true here if the user wants flle only information. * @noswap : specify true here if the user wants flle only information.
* *

View File

@ -1225,7 +1225,15 @@ static inline unsigned long zap_pmd_range(struct mmu_gather *tlb,
next = pmd_addr_end(addr, end); next = pmd_addr_end(addr, end);
if (pmd_trans_huge(*pmd)) { if (pmd_trans_huge(*pmd)) {
if (next - addr != HPAGE_PMD_SIZE) { if (next - addr != HPAGE_PMD_SIZE) {
VM_BUG_ON(!rwsem_is_locked(&tlb->mm->mmap_sem)); #ifdef CONFIG_DEBUG_VM
if (!rwsem_is_locked(&tlb->mm->mmap_sem)) {
pr_err("%s: mmap_sem is unlocked! addr=0x%lx end=0x%lx vma->vm_start=0x%lx vma->vm_end=0x%lx\n",
__func__, addr, end,
vma->vm_start,
vma->vm_end);
BUG();
}
#endif
split_huge_page_pmd(vma->vm_mm, pmd); split_huge_page_pmd(vma->vm_mm, pmd);
} else if (zap_huge_pmd(tlb, vma, pmd, addr)) } else if (zap_huge_pmd(tlb, vma, pmd, addr))
goto next; goto next;
@ -1366,7 +1374,7 @@ void unmap_vmas(struct mmu_gather *tlb,
/** /**
* zap_page_range - remove user pages in a given range * zap_page_range - remove user pages in a given range
* @vma: vm_area_struct holding the applicable pages * @vma: vm_area_struct holding the applicable pages
* @address: starting address of pages to zap * @start: starting address of pages to zap
* @size: number of bytes to zap * @size: number of bytes to zap
* @details: details of nonlinear truncation or shared cache invalidation * @details: details of nonlinear truncation or shared cache invalidation
* *

View File

@ -184,6 +184,7 @@ unsigned long oom_badness(struct task_struct *p, struct mem_cgroup *memcg,
const nodemask_t *nodemask, unsigned long totalpages) const nodemask_t *nodemask, unsigned long totalpages)
{ {
long points; long points;
long adj;
if (oom_unkillable_task(p, memcg, nodemask)) if (oom_unkillable_task(p, memcg, nodemask))
return 0; return 0;
@ -192,7 +193,8 @@ unsigned long oom_badness(struct task_struct *p, struct mem_cgroup *memcg,
if (!p) if (!p)
return 0; return 0;
if (p->signal->oom_score_adj == OOM_SCORE_ADJ_MIN) { adj = p->signal->oom_score_adj;
if (adj == OOM_SCORE_ADJ_MIN) {
task_unlock(p); task_unlock(p);
return 0; return 0;
} }
@ -210,14 +212,11 @@ unsigned long oom_badness(struct task_struct *p, struct mem_cgroup *memcg,
* implementation used by LSMs. * implementation used by LSMs.
*/ */
if (has_capability_noaudit(p, CAP_SYS_ADMIN)) if (has_capability_noaudit(p, CAP_SYS_ADMIN))
points -= 30 * totalpages / 1000; adj -= 30;
/* /* Normalize to oom_score_adj units */
* /proc/pid/oom_score_adj ranges from -1000 to +1000 such that it may adj *= totalpages / 1000;
* either completely disable oom killing or always prefer a certain points += adj;
* task.
*/
points += p->signal->oom_score_adj * totalpages / 1000;
/* /*
* Never return 0 for an eligible task regardless of the root bonus and * Never return 0 for an eligible task regardless of the root bonus and
@ -366,7 +365,7 @@ static struct task_struct *select_bad_process(unsigned int *ppoints,
/** /**
* dump_tasks - dump current memory state of all system tasks * dump_tasks - dump current memory state of all system tasks
* @mem: current's memory controller, if constrained * @memcg: current's memory controller, if constrained
* @nodemask: nodemask passed to page allocator for mempolicy ooms * @nodemask: nodemask passed to page allocator for mempolicy ooms
* *
* Dumps the current memory state of all eligible tasks. Tasks not in the same * Dumps the current memory state of all eligible tasks. Tasks not in the same

View File

@ -392,7 +392,7 @@ static struct swap_cgroup *lookup_swap_cgroup(swp_entry_t ent,
/** /**
* swap_cgroup_cmpxchg - cmpxchg mem_cgroup's id for this swp_entry. * swap_cgroup_cmpxchg - cmpxchg mem_cgroup's id for this swp_entry.
* @end: swap entry to be cmpxchged * @ent: swap entry to be cmpxchged
* @old: old id * @old: old id
* @new: new id * @new: new id
* *
@ -422,7 +422,7 @@ unsigned short swap_cgroup_cmpxchg(swp_entry_t ent,
/** /**
* swap_cgroup_record - record mem_cgroup for this swp_entry. * swap_cgroup_record - record mem_cgroup for this swp_entry.
* @ent: swap entry to be recorded into * @ent: swap entry to be recorded into
* @mem: mem_cgroup to be recorded * @id: mem_cgroup to be recorded
* *
* Returns old value at success, 0 at failure. * Returns old value at success, 0 at failure.
* (Of course, old value can be 0.) * (Of course, old value can be 0.)

View File

@ -162,7 +162,6 @@ static int walk_hugetlb_range(struct vm_area_struct *vma,
/** /**
* walk_page_range - walk a memory map's page tables with a callback * walk_page_range - walk a memory map's page tables with a callback
* @mm: memory map to walk
* @addr: starting address * @addr: starting address
* @end: ending address * @end: ending address
* @walk: set of callbacks to invoke for each level of the tree * @walk: set of callbacks to invoke for each level of the tree

View File

@ -360,7 +360,6 @@ err_free:
* @chunk: chunk to depopulate * @chunk: chunk to depopulate
* @off: offset to the area to depopulate * @off: offset to the area to depopulate
* @size: size of the area to depopulate in bytes * @size: size of the area to depopulate in bytes
* @flush: whether to flush cache and tlb or not
* *
* For each cpu, depopulate and unmap pages [@page_start,@page_end) * For each cpu, depopulate and unmap pages [@page_start,@page_end)
* from @chunk. If @flush is true, vcache is flushed before unmapping * from @chunk. If @flush is true, vcache is flushed before unmapping

View File

@ -83,6 +83,8 @@ push(@signature_tags, "Signed-off-by:");
push(@signature_tags, "Reviewed-by:"); push(@signature_tags, "Reviewed-by:");
push(@signature_tags, "Acked-by:"); push(@signature_tags, "Acked-by:");
my $signature_pattern = "\(" . join("|", @signature_tags) . "\)";
# rfc822 email address - preloaded methods go here. # rfc822 email address - preloaded methods go here.
my $rfc822_lwsp = "(?:(?:\\r\\n)?[ \\t])"; my $rfc822_lwsp = "(?:(?:\\r\\n)?[ \\t])";
my $rfc822_char = '[\\000-\\377]'; my $rfc822_char = '[\\000-\\377]';
@ -473,7 +475,6 @@ my @subsystem = ();
my @status = (); my @status = ();
my %deduplicate_name_hash = (); my %deduplicate_name_hash = ();
my %deduplicate_address_hash = (); my %deduplicate_address_hash = ();
my $signature_pattern;
my @maintainers = get_maintainers(); my @maintainers = get_maintainers();