Merge branch 'akpm' (patches from Andrew Morton)
Merge misc fixes from Andrew Morton: "A bunch of fixes" * emailed patches fron Andrew Morton <akpm@linux-foundation.org>: ocfs2: check existence of old dentry in ocfs2_link() ocfs2: update inode size after zeroing the hole ocfs2: fix issue that ocfs2_setattr() does not deal with new_i_size==i_size mm/memory-failure.c: move refcount only in !MF_COUNT_INCREASED smp.h: fix x86+cpu.c sparse warnings about arch nonboot CPU calls mm: fix page leak at nfs_symlink() slub: do not assert not having lock in removing freed partial gitignore: add all.config ocfs2: fix ocfs2_sync_file() if filesystem is readonly drivers/edac/edac_mc_sysfs.c: poll timeout cannot be zero fs/file.c:fdtable: avoid triggering OOMs from alloc_fdmem xen: properly account for _PAGE_NUMA during xen pte translations mm/slub.c: list_lock may not be held in some circumstances drivers/md/bcache/extents.c: use %zi to format size_t vmcore: prevent PT_NOTE p_memsz overflow during header update drivers/message/i2o/i2o_config.c: fix deadlock in compat_ioctl(I2OGETIOPS) Documentation/: update 00-INDEX files checkpatch: fix detection of git repository get_maintainer: fix detection of git repository drivers/misc/sgi-gru/grukdump.c: unlocking should be conditional in gru_dump_context()
This commit is contained in:
commit
6792dfe383
44 changed files with 316 additions and 85 deletions
3
.gitignore
vendored
3
.gitignore
vendored
|
@ -92,3 +92,6 @@ extra_certificates
|
||||||
signing_key.priv
|
signing_key.priv
|
||||||
signing_key.x509
|
signing_key.x509
|
||||||
x509.genkey
|
x509.genkey
|
||||||
|
|
||||||
|
# Kconfig presets
|
||||||
|
all.config
|
||||||
|
|
|
@ -29,6 +29,8 @@ DMA-ISA-LPC.txt
|
||||||
- How to do DMA with ISA (and LPC) devices.
|
- How to do DMA with ISA (and LPC) devices.
|
||||||
DMA-attributes.txt
|
DMA-attributes.txt
|
||||||
- listing of the various possible attributes a DMA region can have
|
- listing of the various possible attributes a DMA region can have
|
||||||
|
dmatest.txt
|
||||||
|
- how to compile, configure and use the dmatest system.
|
||||||
DocBook/
|
DocBook/
|
||||||
- directory with DocBook templates etc. for kernel documentation.
|
- directory with DocBook templates etc. for kernel documentation.
|
||||||
EDID/
|
EDID/
|
||||||
|
@ -77,6 +79,8 @@ arm/
|
||||||
- directory with info about Linux on the ARM architecture.
|
- directory with info about Linux on the ARM architecture.
|
||||||
arm64/
|
arm64/
|
||||||
- directory with info about Linux on the 64 bit ARM architecture.
|
- directory with info about Linux on the 64 bit ARM architecture.
|
||||||
|
assoc_array.txt
|
||||||
|
- generic associative array intro.
|
||||||
atomic_ops.txt
|
atomic_ops.txt
|
||||||
- semantics and behavior of atomic and bitmask operations.
|
- semantics and behavior of atomic and bitmask operations.
|
||||||
auxdisplay/
|
auxdisplay/
|
||||||
|
@ -87,6 +91,8 @@ bad_memory.txt
|
||||||
- how to use kernel parameters to exclude bad RAM regions.
|
- how to use kernel parameters to exclude bad RAM regions.
|
||||||
basic_profiling.txt
|
basic_profiling.txt
|
||||||
- basic instructions for those who wants to profile Linux kernel.
|
- basic instructions for those who wants to profile Linux kernel.
|
||||||
|
bcache.txt
|
||||||
|
- Block-layer cache on fast SSDs to improve slow (raid) I/O performance.
|
||||||
binfmt_misc.txt
|
binfmt_misc.txt
|
||||||
- info on the kernel support for extra binary formats.
|
- info on the kernel support for extra binary formats.
|
||||||
blackfin/
|
blackfin/
|
||||||
|
@ -171,6 +177,8 @@ early-userspace/
|
||||||
- info about initramfs, klibc, and userspace early during boot.
|
- info about initramfs, klibc, and userspace early during boot.
|
||||||
edac.txt
|
edac.txt
|
||||||
- information on EDAC - Error Detection And Correction
|
- information on EDAC - Error Detection And Correction
|
||||||
|
efi-stub.txt
|
||||||
|
- How to use the EFI boot stub to bypass GRUB or elilo on EFI systems.
|
||||||
eisa.txt
|
eisa.txt
|
||||||
- info on EISA bus support.
|
- info on EISA bus support.
|
||||||
email-clients.txt
|
email-clients.txt
|
||||||
|
@ -195,8 +203,8 @@ futex-requeue-pi.txt
|
||||||
- info on requeueing of tasks from a non-PI futex to a PI futex
|
- info on requeueing of tasks from a non-PI futex to a PI futex
|
||||||
gcov.txt
|
gcov.txt
|
||||||
- use of GCC's coverage testing tool "gcov" with the Linux kernel
|
- use of GCC's coverage testing tool "gcov" with the Linux kernel
|
||||||
gpio.txt
|
gpio/
|
||||||
- overview of GPIO (General Purpose Input/Output) access conventions.
|
- gpio related documentation
|
||||||
hid/
|
hid/
|
||||||
- directory with information on human interface devices
|
- directory with information on human interface devices
|
||||||
highuid.txt
|
highuid.txt
|
||||||
|
@ -255,6 +263,8 @@ kernel-docs.txt
|
||||||
- listing of various WWW + books that document kernel internals.
|
- listing of various WWW + books that document kernel internals.
|
||||||
kernel-parameters.txt
|
kernel-parameters.txt
|
||||||
- summary listing of command line / boot prompt args for the kernel.
|
- summary listing of command line / boot prompt args for the kernel.
|
||||||
|
kernel-per-CPU-kthreads.txt
|
||||||
|
- List of all per-CPU kthreads and how they introduce jitter.
|
||||||
kmemcheck.txt
|
kmemcheck.txt
|
||||||
- info on dynamic checker that detects uses of uninitialized memory.
|
- info on dynamic checker that detects uses of uninitialized memory.
|
||||||
kmemleak.txt
|
kmemleak.txt
|
||||||
|
@ -299,8 +309,6 @@ memory-devices/
|
||||||
- directory with info on parts like the Texas Instruments EMIF driver
|
- directory with info on parts like the Texas Instruments EMIF driver
|
||||||
memory-hotplug.txt
|
memory-hotplug.txt
|
||||||
- Hotpluggable memory support, how to use and current status.
|
- Hotpluggable memory support, how to use and current status.
|
||||||
memory.txt
|
|
||||||
- info on typical Linux memory problems.
|
|
||||||
metag/
|
metag/
|
||||||
- directory with info about Linux on Meta architecture.
|
- directory with info about Linux on Meta architecture.
|
||||||
mips/
|
mips/
|
||||||
|
@ -311,6 +319,8 @@ mmc/
|
||||||
- directory with info about the MMC subsystem
|
- directory with info about the MMC subsystem
|
||||||
mn10300/
|
mn10300/
|
||||||
- directory with info about the mn10300 architecture port
|
- directory with info about the mn10300 architecture port
|
||||||
|
module-signing.txt
|
||||||
|
- Kernel module signing for increased security when loading modules.
|
||||||
mtd/
|
mtd/
|
||||||
- directory with info about memory technology devices (flash)
|
- directory with info about memory technology devices (flash)
|
||||||
mono.txt
|
mono.txt
|
||||||
|
@ -343,6 +353,8 @@ pcmcia/
|
||||||
- info on the Linux PCMCIA driver.
|
- info on the Linux PCMCIA driver.
|
||||||
percpu-rw-semaphore.txt
|
percpu-rw-semaphore.txt
|
||||||
- RCU based read-write semaphore optimized for locking for reading
|
- RCU based read-write semaphore optimized for locking for reading
|
||||||
|
phy.txt
|
||||||
|
- Description of the generic PHY framework.
|
||||||
pi-futex.txt
|
pi-futex.txt
|
||||||
- documentation on lightweight priority inheritance futexes.
|
- documentation on lightweight priority inheritance futexes.
|
||||||
pinctrl.txt
|
pinctrl.txt
|
||||||
|
@ -431,6 +443,8 @@ sysrq.txt
|
||||||
- info on the magic SysRq key.
|
- info on the magic SysRq key.
|
||||||
target/
|
target/
|
||||||
- directory with info on generating TCM v4 fabric .ko modules
|
- directory with info on generating TCM v4 fabric .ko modules
|
||||||
|
this_cpu_ops.txt
|
||||||
|
- List rationale behind and the way to use this_cpu operations.
|
||||||
thermal/
|
thermal/
|
||||||
- directory with information on managing thermal issues (CPU/temp)
|
- directory with information on managing thermal issues (CPU/temp)
|
||||||
trace/
|
trace/
|
||||||
|
@ -469,6 +483,8 @@ wimax/
|
||||||
- directory with info about Intel Wireless Wimax Connections
|
- directory with info about Intel Wireless Wimax Connections
|
||||||
workqueue.txt
|
workqueue.txt
|
||||||
- information on the Concurrency Managed Workqueue implementation
|
- information on the Concurrency Managed Workqueue implementation
|
||||||
|
ww-mutex-design.txt
|
||||||
|
- Intro to Mutex wait/would deadlock handling.s
|
||||||
x86/x86_64/
|
x86/x86_64/
|
||||||
- directory with info on Linux support for AMD x86-64 (Hammer) machines.
|
- directory with info on Linux support for AMD x86-64 (Hammer) machines.
|
||||||
xtensa/
|
xtensa/
|
||||||
|
|
|
@ -8,6 +8,8 @@ listRCU.txt
|
||||||
- Using RCU to Protect Read-Mostly Linked Lists
|
- Using RCU to Protect Read-Mostly Linked Lists
|
||||||
lockdep.txt
|
lockdep.txt
|
||||||
- RCU and lockdep checking
|
- RCU and lockdep checking
|
||||||
|
lockdep-splat.txt
|
||||||
|
- RCU Lockdep splats explained.
|
||||||
NMI-RCU.txt
|
NMI-RCU.txt
|
||||||
- Using RCU to Protect Dynamic NMI Handlers
|
- Using RCU to Protect Dynamic NMI Handlers
|
||||||
rcubarrier.txt
|
rcubarrier.txt
|
||||||
|
|
|
@ -4,6 +4,8 @@ Booting
|
||||||
- requirements for booting
|
- requirements for booting
|
||||||
Interrupts
|
Interrupts
|
||||||
- ARM Interrupt subsystem documentation
|
- ARM Interrupt subsystem documentation
|
||||||
|
IXP4xx
|
||||||
|
- Intel IXP4xx Network processor.
|
||||||
msm
|
msm
|
||||||
- MSM specific documentation
|
- MSM specific documentation
|
||||||
Netwinder
|
Netwinder
|
||||||
|
@ -24,8 +26,16 @@ SPEAr
|
||||||
- ST SPEAr platform Linux Overview
|
- ST SPEAr platform Linux Overview
|
||||||
VFP/
|
VFP/
|
||||||
- Release notes for Linux Kernel Vector Floating Point support code
|
- Release notes for Linux Kernel Vector Floating Point support code
|
||||||
|
cluster-pm-race-avoidance.txt
|
||||||
|
- Algorithm for CPU and Cluster setup/teardown
|
||||||
empeg/
|
empeg/
|
||||||
- Ltd's Empeg MP3 Car Audio Player
|
- Ltd's Empeg MP3 Car Audio Player
|
||||||
|
firmware.txt
|
||||||
|
- Secure firmware registration and calling.
|
||||||
|
kernel_mode_neon.txt
|
||||||
|
- How to use NEON instructions in kernel mode
|
||||||
|
kernel_user_helpers.txt
|
||||||
|
- Helper functions in kernel space made available for userspace.
|
||||||
mem_alignment
|
mem_alignment
|
||||||
- alignment abort handler documentation
|
- alignment abort handler documentation
|
||||||
memory.txt
|
memory.txt
|
||||||
|
@ -34,3 +44,7 @@ nwfpe/
|
||||||
- NWFPE floating point emulator documentation
|
- NWFPE floating point emulator documentation
|
||||||
swp_emulation
|
swp_emulation
|
||||||
- SWP/SWPB emulation handler/logging description
|
- SWP/SWPB emulation handler/logging description
|
||||||
|
tcm.txt
|
||||||
|
- ARM Tightly Coupled Memory
|
||||||
|
vlocks.txt
|
||||||
|
- Voting locks, low-level mechanism relying on memory system atomic writes.
|
||||||
|
|
|
@ -1,8 +1,10 @@
|
||||||
00-INDEX
|
00-INDEX
|
||||||
- This file
|
- This file
|
||||||
|
Makefile
|
||||||
|
- Makefile for gptimers example file.
|
||||||
bfin-gpio-notes.txt
|
bfin-gpio-notes.txt
|
||||||
- Notes in developing/using bfin-gpio driver.
|
- Notes in developing/using bfin-gpio driver.
|
||||||
|
|
||||||
bfin-spi-notes.txt
|
bfin-spi-notes.txt
|
||||||
- Notes for using bfin spi bus driver.
|
- Notes for using bfin spi bus driver.
|
||||||
|
gptimers-example.c
|
||||||
|
- gptimers example
|
||||||
|
|
|
@ -14,6 +14,8 @@ deadline-iosched.txt
|
||||||
- Deadline IO scheduler tunables
|
- Deadline IO scheduler tunables
|
||||||
ioprio.txt
|
ioprio.txt
|
||||||
- Block io priorities (in CFQ scheduler)
|
- Block io priorities (in CFQ scheduler)
|
||||||
|
null_blk.txt
|
||||||
|
- Null block for block-layer benchmarking.
|
||||||
queue-sysfs.txt
|
queue-sysfs.txt
|
||||||
- Queue's sysfs entries
|
- Queue's sysfs entries
|
||||||
request.txt
|
request.txt
|
||||||
|
|
|
@ -8,3 +8,5 @@ https://lists.ozlabs.org/listinfo/devicetree-discuss
|
||||||
- this file
|
- this file
|
||||||
booting-without-of.txt
|
booting-without-of.txt
|
||||||
- Booting Linux without Open Firmware, describes history and format of device trees.
|
- Booting Linux without Open Firmware, describes history and format of device trees.
|
||||||
|
usage-model.txt
|
||||||
|
- How Linux uses DT and what DT aims to solve.
|
|
@ -5,6 +5,8 @@ please mail me.
|
||||||
|
|
||||||
00-INDEX
|
00-INDEX
|
||||||
- this file.
|
- this file.
|
||||||
|
api.txt
|
||||||
|
- The frame buffer API between applications and buffer devices.
|
||||||
arkfb.txt
|
arkfb.txt
|
||||||
- info on the fbdev driver for ARK Logic chips.
|
- info on the fbdev driver for ARK Logic chips.
|
||||||
aty128fb.txt
|
aty128fb.txt
|
||||||
|
@ -51,12 +53,16 @@ sh7760fb.txt
|
||||||
- info on the SH7760/SH7763 integrated LCDC Framebuffer driver.
|
- info on the SH7760/SH7763 integrated LCDC Framebuffer driver.
|
||||||
sisfb.txt
|
sisfb.txt
|
||||||
- info on the framebuffer device driver for various SiS chips.
|
- info on the framebuffer device driver for various SiS chips.
|
||||||
|
sm501.txt
|
||||||
|
- info on the framebuffer device driver for sm501 videoframebuffer.
|
||||||
sstfb.txt
|
sstfb.txt
|
||||||
- info on the frame buffer driver for 3dfx' Voodoo Graphics boards.
|
- info on the frame buffer driver for 3dfx' Voodoo Graphics boards.
|
||||||
tgafb.txt
|
tgafb.txt
|
||||||
- info on the TGA (DECChip 21030) frame buffer driver.
|
- info on the TGA (DECChip 21030) frame buffer driver.
|
||||||
tridentfb.txt
|
tridentfb.txt
|
||||||
info on the framebuffer driver for some Trident chip based cards.
|
info on the framebuffer driver for some Trident chip based cards.
|
||||||
|
udlfb.txt
|
||||||
|
- Driver for DisplayLink USB 2.0 chips.
|
||||||
uvesafb.txt
|
uvesafb.txt
|
||||||
- info on the userspace VESA (VBE2+ compliant) frame buffer device.
|
- info on the userspace VESA (VBE2+ compliant) frame buffer device.
|
||||||
vesafb.txt
|
vesafb.txt
|
||||||
|
|
|
@ -2,6 +2,8 @@
|
||||||
- this file (info on some of the filesystems supported by linux).
|
- this file (info on some of the filesystems supported by linux).
|
||||||
Locking
|
Locking
|
||||||
- info on locking rules as they pertain to Linux VFS.
|
- info on locking rules as they pertain to Linux VFS.
|
||||||
|
Makefile
|
||||||
|
- Makefile for building the filsystems-part of DocBook.
|
||||||
9p.txt
|
9p.txt
|
||||||
- 9p (v9fs) is an implementation of the Plan 9 remote fs protocol.
|
- 9p (v9fs) is an implementation of the Plan 9 remote fs protocol.
|
||||||
adfs.txt
|
adfs.txt
|
||||||
|
|
|
@ -12,6 +12,8 @@ nfs41-server.txt
|
||||||
- info on the Linux server implementation of NFSv4 minor version 1.
|
- info on the Linux server implementation of NFSv4 minor version 1.
|
||||||
nfs-rdma.txt
|
nfs-rdma.txt
|
||||||
- how to install and setup the Linux NFS/RDMA client and server software
|
- how to install and setup the Linux NFS/RDMA client and server software
|
||||||
|
nfsd-admin-interfaces.txt
|
||||||
|
- Administrative interfaces for nfsd.
|
||||||
nfsroot.txt
|
nfsroot.txt
|
||||||
- short guide on setting up a diskless box with NFS root filesystem.
|
- short guide on setting up a diskless box with NFS root filesystem.
|
||||||
pnfs.txt
|
pnfs.txt
|
||||||
|
@ -20,5 +22,5 @@ rpc-cache.txt
|
||||||
- introduction to the caching mechanisms in the sunrpc layer.
|
- introduction to the caching mechanisms in the sunrpc layer.
|
||||||
idmapper.txt
|
idmapper.txt
|
||||||
- information for configuring request-keys to be used by idmapper
|
- information for configuring request-keys to be used by idmapper
|
||||||
knfsd-rpcgss.txt
|
rpc-server-gss.txt
|
||||||
- Information on GSS authentication support in the NFS Server
|
- Information on GSS authentication support in the NFS Server
|
||||||
|
|
|
@ -10,3 +10,5 @@ ide-tape.txt
|
||||||
- info on the IDE ATAPI streaming tape driver
|
- info on the IDE ATAPI streaming tape driver
|
||||||
ide.txt
|
ide.txt
|
||||||
- important info for users of ATA devices (IDE/EIDE disks and CD-ROMS).
|
- important info for users of ATA devices (IDE/EIDE disks and CD-ROMS).
|
||||||
|
warm-plug-howto.txt
|
||||||
|
- using sysfs to remove and add IDE devices.
|
|
@ -1,13 +1,15 @@
|
||||||
00-INDEX
|
00-INDEX
|
||||||
- This file
|
- This file
|
||||||
acer-wmi.txt
|
Makefile
|
||||||
- information on the Acer Laptop WMI Extras driver.
|
- Makefile for building dslm example program.
|
||||||
asus-laptop.txt
|
asus-laptop.txt
|
||||||
- information on the Asus Laptop Extras driver.
|
- information on the Asus Laptop Extras driver.
|
||||||
disk-shock-protection.txt
|
disk-shock-protection.txt
|
||||||
- information on hard disk shock protection.
|
- information on hard disk shock protection.
|
||||||
dslm.c
|
dslm.c
|
||||||
- Simple Disk Sleep Monitor program
|
- Simple Disk Sleep Monitor program
|
||||||
|
hpfall.c
|
||||||
|
- (HP) laptop accelerometer program for disk protection.
|
||||||
laptop-mode.txt
|
laptop-mode.txt
|
||||||
- how to conserve battery power using laptop-mode.
|
- how to conserve battery power using laptop-mode.
|
||||||
sony-laptop.txt
|
sony-laptop.txt
|
||||||
|
|
|
@ -1,3 +1,7 @@
|
||||||
|
00-INDEX
|
||||||
|
- This file
|
||||||
|
leds-blinkm.txt
|
||||||
|
- Driver for BlinkM LED-devices.
|
||||||
leds-class.txt
|
leds-class.txt
|
||||||
- documents LED handling under Linux.
|
- documents LED handling under Linux.
|
||||||
leds-lp3944.txt
|
leds-lp3944.txt
|
||||||
|
@ -12,3 +16,7 @@ leds-lp55xx.txt
|
||||||
- description about lp55xx common driver.
|
- description about lp55xx common driver.
|
||||||
leds-lm3556.txt
|
leds-lm3556.txt
|
||||||
- notes on how to use the leds-lm3556 driver.
|
- notes on how to use the leds-lm3556 driver.
|
||||||
|
ledtrig-oneshot.txt
|
||||||
|
- One-shot LED trigger for both sporadic and dense events.
|
||||||
|
ledtrig-transient.txt
|
||||||
|
- LED Transient Trigger, one shot timer activation.
|
||||||
|
|
|
@ -1,5 +1,7 @@
|
||||||
00-INDEX
|
00-INDEX
|
||||||
- this file
|
- this file
|
||||||
|
README.buddha
|
||||||
|
- Amiga Buddha and Catweasel IDE Driver
|
||||||
kernel-options.txt
|
kernel-options.txt
|
||||||
- command line options for Linux/m68k
|
- command line options for Linux/m68k
|
||||||
|
|
||||||
|
|
|
@ -6,8 +6,14 @@
|
||||||
- information on the 3Com Etherlink III Series Ethernet cards.
|
- information on the 3Com Etherlink III Series Ethernet cards.
|
||||||
6pack.txt
|
6pack.txt
|
||||||
- info on the 6pack protocol, an alternative to KISS for AX.25
|
- info on the 6pack protocol, an alternative to KISS for AX.25
|
||||||
DLINK.txt
|
LICENSE.qla3xxx
|
||||||
- info on the D-Link DE-600/DE-620 parallel port pocket adapters
|
- GPLv2 for QLogic Linux Networking HBA Driver
|
||||||
|
LICENSE.qlge
|
||||||
|
- GPLv2 for QLogic Linux qlge NIC Driver
|
||||||
|
LICENSE.qlcnic
|
||||||
|
- GPLv2 for QLogic Linux qlcnic NIC Driver
|
||||||
|
Makefile
|
||||||
|
- Makefile for docsrc.
|
||||||
PLIP.txt
|
PLIP.txt
|
||||||
- PLIP: The Parallel Line Internet Protocol device driver
|
- PLIP: The Parallel Line Internet Protocol device driver
|
||||||
README.ipw2100
|
README.ipw2100
|
||||||
|
@ -17,7 +23,7 @@ README.ipw2200
|
||||||
README.sb1000
|
README.sb1000
|
||||||
- info on General Instrument/NextLevel SURFboard1000 cable modem.
|
- info on General Instrument/NextLevel SURFboard1000 cable modem.
|
||||||
alias.txt
|
alias.txt
|
||||||
- info on using alias network devices
|
- info on using alias network devices.
|
||||||
arcnet-hardware.txt
|
arcnet-hardware.txt
|
||||||
- tons of info on ARCnet, hubs, jumper settings for ARCnet cards, etc.
|
- tons of info on ARCnet, hubs, jumper settings for ARCnet cards, etc.
|
||||||
arcnet.txt
|
arcnet.txt
|
||||||
|
@ -80,7 +86,7 @@ framerelay.txt
|
||||||
- info on using Frame Relay/Data Link Connection Identifier (DLCI).
|
- info on using Frame Relay/Data Link Connection Identifier (DLCI).
|
||||||
gen_stats.txt
|
gen_stats.txt
|
||||||
- Generic networking statistics for netlink users.
|
- Generic networking statistics for netlink users.
|
||||||
generic_hdlc.txt
|
generic-hdlc.txt
|
||||||
- The generic High Level Data Link Control (HDLC) layer.
|
- The generic High Level Data Link Control (HDLC) layer.
|
||||||
generic_netlink.txt
|
generic_netlink.txt
|
||||||
- info on Generic Netlink
|
- info on Generic Netlink
|
||||||
|
@ -88,6 +94,8 @@ gianfar.txt
|
||||||
- Gianfar Ethernet Driver.
|
- Gianfar Ethernet Driver.
|
||||||
i40e.txt
|
i40e.txt
|
||||||
- README for the Intel Ethernet Controller XL710 Driver (i40e).
|
- README for the Intel Ethernet Controller XL710 Driver (i40e).
|
||||||
|
i40evf.txt
|
||||||
|
- Short note on the Driver for the Intel(R) XL710 X710 Virtual Function
|
||||||
ieee802154.txt
|
ieee802154.txt
|
||||||
- Linux IEEE 802.15.4 implementation, API and drivers
|
- Linux IEEE 802.15.4 implementation, API and drivers
|
||||||
igb.txt
|
igb.txt
|
||||||
|
@ -102,6 +110,8 @@ ipddp.txt
|
||||||
- AppleTalk-IP Decapsulation and AppleTalk-IP Encapsulation
|
- AppleTalk-IP Decapsulation and AppleTalk-IP Encapsulation
|
||||||
iphase.txt
|
iphase.txt
|
||||||
- Interphase PCI ATM (i)Chip IA Linux driver info.
|
- Interphase PCI ATM (i)Chip IA Linux driver info.
|
||||||
|
ipsec.txt
|
||||||
|
- Note on not compressing IPSec payload and resulting failed policy check.
|
||||||
ipv6.txt
|
ipv6.txt
|
||||||
- Options to the ipv6 kernel module.
|
- Options to the ipv6 kernel module.
|
||||||
ipvs-sysctl.txt
|
ipvs-sysctl.txt
|
||||||
|
@ -120,6 +130,8 @@ lapb-module.txt
|
||||||
- programming information of the LAPB module.
|
- programming information of the LAPB module.
|
||||||
ltpc.txt
|
ltpc.txt
|
||||||
- the Apple or Farallon LocalTalk PC card driver
|
- the Apple or Farallon LocalTalk PC card driver
|
||||||
|
mac80211-auth-assoc-deauth.txt
|
||||||
|
- authentication and association / deauth-disassoc with max80211
|
||||||
mac80211-injection.txt
|
mac80211-injection.txt
|
||||||
- HOWTO use packet injection with mac80211
|
- HOWTO use packet injection with mac80211
|
||||||
multiqueue.txt
|
multiqueue.txt
|
||||||
|
@ -134,6 +146,10 @@ netdevices.txt
|
||||||
- info on network device driver functions exported to the kernel.
|
- info on network device driver functions exported to the kernel.
|
||||||
netif-msg.txt
|
netif-msg.txt
|
||||||
- Design of the network interface message level setting (NETIF_MSG_*).
|
- Design of the network interface message level setting (NETIF_MSG_*).
|
||||||
|
netlink_mmap.txt
|
||||||
|
- memory mapped I/O with netlink
|
||||||
|
nf_conntrack-sysctl.txt
|
||||||
|
- list of netfilter-sysctl knobs.
|
||||||
nfc.txt
|
nfc.txt
|
||||||
- The Linux Near Field Communication (NFS) subsystem.
|
- The Linux Near Field Communication (NFS) subsystem.
|
||||||
openvswitch.txt
|
openvswitch.txt
|
||||||
|
@ -176,7 +192,7 @@ skfp.txt
|
||||||
- SysKonnect FDDI (SK-5xxx, Compaq Netelligent) driver info.
|
- SysKonnect FDDI (SK-5xxx, Compaq Netelligent) driver info.
|
||||||
smc9.txt
|
smc9.txt
|
||||||
- the driver for SMC's 9000 series of Ethernet cards
|
- the driver for SMC's 9000 series of Ethernet cards
|
||||||
spider-net.txt
|
spider_net.txt
|
||||||
- README for the Spidernet Driver (as found in PS3 / Cell BE).
|
- README for the Spidernet Driver (as found in PS3 / Cell BE).
|
||||||
stmmac.txt
|
stmmac.txt
|
||||||
- README for the STMicro Synopsys Ethernet driver.
|
- README for the STMicro Synopsys Ethernet driver.
|
||||||
|
@ -188,6 +204,8 @@ tcp.txt
|
||||||
- short blurb on how TCP output takes place.
|
- short blurb on how TCP output takes place.
|
||||||
tcp-thin.txt
|
tcp-thin.txt
|
||||||
- kernel tuning options for low rate 'thin' TCP streams.
|
- kernel tuning options for low rate 'thin' TCP streams.
|
||||||
|
team.txt
|
||||||
|
- pointer to information for ethernet teaming devices.
|
||||||
tlan.txt
|
tlan.txt
|
||||||
- ThunderLAN (Compaq Netelligent 10/100, Olicom OC-2xxx) driver info.
|
- ThunderLAN (Compaq Netelligent 10/100, Olicom OC-2xxx) driver info.
|
||||||
tproxy.txt
|
tproxy.txt
|
||||||
|
@ -200,6 +218,8 @@ vortex.txt
|
||||||
- info on using 3Com Vortex (3c590, 3c592, 3c595, 3c597) Ethernet cards.
|
- info on using 3Com Vortex (3c590, 3c592, 3c595, 3c597) Ethernet cards.
|
||||||
vxge.txt
|
vxge.txt
|
||||||
- README for the Neterion X3100 PCIe Server Adapter.
|
- README for the Neterion X3100 PCIe Server Adapter.
|
||||||
|
vxlan.txt
|
||||||
|
- Virtual extensible LAN overview
|
||||||
x25.txt
|
x25.txt
|
||||||
- general info on X.25 development.
|
- general info on X.25 development.
|
||||||
x25-iface.txt
|
x25-iface.txt
|
||||||
|
|
|
@ -4,6 +4,8 @@ apm-acpi.txt
|
||||||
- basic info about the APM and ACPI support.
|
- basic info about the APM and ACPI support.
|
||||||
basic-pm-debugging.txt
|
basic-pm-debugging.txt
|
||||||
- Debugging suspend and resume
|
- Debugging suspend and resume
|
||||||
|
charger-manager.txt
|
||||||
|
- Battery charger management.
|
||||||
devices.txt
|
devices.txt
|
||||||
- How drivers interact with system-wide power management
|
- How drivers interact with system-wide power management
|
||||||
drivers-testing.txt
|
drivers-testing.txt
|
||||||
|
@ -22,6 +24,8 @@ pm_qos_interface.txt
|
||||||
- info on Linux PM Quality of Service interface
|
- info on Linux PM Quality of Service interface
|
||||||
power_supply_class.txt
|
power_supply_class.txt
|
||||||
- Tells userspace about battery, UPS, AC or DC power supply properties
|
- Tells userspace about battery, UPS, AC or DC power supply properties
|
||||||
|
runtime_pm.txt
|
||||||
|
- Power management framework for I/O devices.
|
||||||
s2ram.txt
|
s2ram.txt
|
||||||
- How to get suspend to ram working (and debug it when it isn't)
|
- How to get suspend to ram working (and debug it when it isn't)
|
||||||
states.txt
|
states.txt
|
||||||
|
@ -38,7 +42,5 @@ tricks.txt
|
||||||
- How to trick software suspend (to disk) into working when it isn't
|
- How to trick software suspend (to disk) into working when it isn't
|
||||||
userland-swsusp.txt
|
userland-swsusp.txt
|
||||||
- Experimental implementation of software suspend in userspace
|
- Experimental implementation of software suspend in userspace
|
||||||
video_extension.txt
|
|
||||||
- ACPI video extensions
|
|
||||||
video.txt
|
video.txt
|
||||||
- Video issues during resume from suspend
|
- Video issues during resume from suspend
|
||||||
|
|
|
@ -16,11 +16,13 @@ Debugging390.txt
|
||||||
- hints for debugging on s390 systems.
|
- hints for debugging on s390 systems.
|
||||||
driver-model.txt
|
driver-model.txt
|
||||||
- information on s390 devices and the driver model.
|
- information on s390 devices and the driver model.
|
||||||
|
kvm.txt
|
||||||
|
- ioctl calls to /dev/kvm on s390.
|
||||||
monreader.txt
|
monreader.txt
|
||||||
- information on accessing the z/VM monitor stream from Linux.
|
- information on accessing the z/VM monitor stream from Linux.
|
||||||
|
qeth.txt
|
||||||
|
- HiperSockets Bridge Port Support.
|
||||||
s390dbf.txt
|
s390dbf.txt
|
||||||
- information on using the s390 debug feature.
|
- information on using the s390 debug feature.
|
||||||
TAPE
|
zfcpdump.txt
|
||||||
- information on the driver for channel-attached tapes.
|
|
||||||
zfcpdump
|
|
||||||
- information on the s390 SCSI dump tool.
|
- information on the s390 SCSI dump tool.
|
||||||
|
|
|
@ -2,6 +2,8 @@
|
||||||
- this file.
|
- this file.
|
||||||
sched-arch.txt
|
sched-arch.txt
|
||||||
- CPU Scheduler implementation hints for architecture specific code.
|
- CPU Scheduler implementation hints for architecture specific code.
|
||||||
|
sched-bwc.txt
|
||||||
|
- CFS bandwidth control overview.
|
||||||
sched-design-CFS.txt
|
sched-design-CFS.txt
|
||||||
- goals, design and implementation of the Completely Fair Scheduler.
|
- goals, design and implementation of the Completely Fair Scheduler.
|
||||||
sched-domains.txt
|
sched-domains.txt
|
||||||
|
|
|
@ -36,6 +36,8 @@ NinjaSCSI.txt
|
||||||
- info on WorkBiT NinjaSCSI-32/32Bi driver
|
- info on WorkBiT NinjaSCSI-32/32Bi driver
|
||||||
aacraid.txt
|
aacraid.txt
|
||||||
- Driver supporting Adaptec RAID controllers
|
- Driver supporting Adaptec RAID controllers
|
||||||
|
advansys.txt
|
||||||
|
- List of Advansys Host Adapters
|
||||||
aha152x.txt
|
aha152x.txt
|
||||||
- info on driver for Adaptec AHA152x based adapters
|
- info on driver for Adaptec AHA152x based adapters
|
||||||
aic79xx.txt
|
aic79xx.txt
|
||||||
|
@ -44,6 +46,12 @@ aic7xxx.txt
|
||||||
- info on driver for Adaptec controllers
|
- info on driver for Adaptec controllers
|
||||||
arcmsr_spec.txt
|
arcmsr_spec.txt
|
||||||
- ARECA FIRMWARE SPEC (for IOP331 adapter)
|
- ARECA FIRMWARE SPEC (for IOP331 adapter)
|
||||||
|
bfa.txt
|
||||||
|
- Brocade FC/FCOE adapter driver.
|
||||||
|
bnx2fc.txt
|
||||||
|
- FCoE hardware offload for Broadcom network interfaces.
|
||||||
|
cxgb3i.txt
|
||||||
|
- Chelsio iSCSI Linux Driver
|
||||||
dc395x.txt
|
dc395x.txt
|
||||||
- README file for the dc395x SCSI driver
|
- README file for the dc395x SCSI driver
|
||||||
dpti.txt
|
dpti.txt
|
||||||
|
@ -52,18 +60,24 @@ dtc3x80.txt
|
||||||
- info on driver for DTC 2x80 based adapters
|
- info on driver for DTC 2x80 based adapters
|
||||||
g_NCR5380.txt
|
g_NCR5380.txt
|
||||||
- info on driver for NCR5380 and NCR53c400 based adapters
|
- info on driver for NCR5380 and NCR53c400 based adapters
|
||||||
|
hpsa.txt
|
||||||
|
- HP Smart Array Controller SCSI driver.
|
||||||
hptiop.txt
|
hptiop.txt
|
||||||
- HIGHPOINT ROCKETRAID 3xxx RAID DRIVER
|
- HIGHPOINT ROCKETRAID 3xxx RAID DRIVER
|
||||||
in2000.txt
|
in2000.txt
|
||||||
- info on in2000 driver
|
- info on in2000 driver
|
||||||
libsas.txt
|
libsas.txt
|
||||||
- Serial Attached SCSI management layer.
|
- Serial Attached SCSI management layer.
|
||||||
|
link_power_management_policy.txt
|
||||||
|
- Link power management options.
|
||||||
lpfc.txt
|
lpfc.txt
|
||||||
- LPFC driver release notes
|
- LPFC driver release notes
|
||||||
megaraid.txt
|
megaraid.txt
|
||||||
- Common Management Module, shared code handling ioctls for LSI drivers
|
- Common Management Module, shared code handling ioctls for LSI drivers
|
||||||
ncr53c8xx.txt
|
ncr53c8xx.txt
|
||||||
- info on driver for NCR53c8xx based adapters
|
- info on driver for NCR53c8xx based adapters
|
||||||
|
osd.txt
|
||||||
|
Object-Based Storage Device, command set introduction.
|
||||||
osst.txt
|
osst.txt
|
||||||
- info on driver for OnStream SC-x0 SCSI tape
|
- info on driver for OnStream SC-x0 SCSI tape
|
||||||
ppa.txt
|
ppa.txt
|
||||||
|
@ -74,6 +88,8 @@ scsi-changer.txt
|
||||||
- README for the SCSI media changer driver
|
- README for the SCSI media changer driver
|
||||||
scsi-generic.txt
|
scsi-generic.txt
|
||||||
- info on the sg driver for generic (non-disk/CD/tape) SCSI devices.
|
- info on the sg driver for generic (non-disk/CD/tape) SCSI devices.
|
||||||
|
scsi-parameters.txt
|
||||||
|
- List of SCSI-parameters to pass to the kernel at module load-time.
|
||||||
scsi.txt
|
scsi.txt
|
||||||
- short blurb on using SCSI support as a module.
|
- short blurb on using SCSI support as a module.
|
||||||
scsi_mid_low_api.txt
|
scsi_mid_low_api.txt
|
||||||
|
|
|
@ -4,10 +4,12 @@ README.cycladesZ
|
||||||
- info on Cyclades-Z firmware loading.
|
- info on Cyclades-Z firmware loading.
|
||||||
digiepca.txt
|
digiepca.txt
|
||||||
- info on Digi Intl. {PC,PCI,EISA}Xx and Xem series cards.
|
- info on Digi Intl. {PC,PCI,EISA}Xx and Xem series cards.
|
||||||
hayes-esp.txt
|
driver
|
||||||
- info on using the Hayes ESP serial driver.
|
- intro to the low level serial driver.
|
||||||
moxa-smartio
|
moxa-smartio
|
||||||
- file with info on installing/using Moxa multiport serial driver.
|
- file with info on installing/using Moxa multiport serial driver.
|
||||||
|
n_gsm.txt
|
||||||
|
- GSM 0710 tty multiplexer howto.
|
||||||
riscom8.txt
|
riscom8.txt
|
||||||
- notes on using the RISCom/8 multi-port serial driver.
|
- notes on using the RISCom/8 multi-port serial driver.
|
||||||
rocket.txt
|
rocket.txt
|
||||||
|
|
22
Documentation/spi/00-INDEX
Normal file
22
Documentation/spi/00-INDEX
Normal file
|
@ -0,0 +1,22 @@
|
||||||
|
00-INDEX
|
||||||
|
- this file.
|
||||||
|
Makefile
|
||||||
|
- Makefile for the example sourcefiles.
|
||||||
|
butterfly
|
||||||
|
- AVR Butterfly SPI driver overview and pin configuration.
|
||||||
|
ep93xx_spi
|
||||||
|
- Basic EP93xx SPI driver configuration.
|
||||||
|
pxa2xx
|
||||||
|
- PXA2xx SPI master controller build by spi_message fifo wq
|
||||||
|
spidev
|
||||||
|
- Intro to the userspace API for spi devices
|
||||||
|
spidev_fdx.c
|
||||||
|
- spidev example file
|
||||||
|
spi-lm70llp
|
||||||
|
- Connecting an LM70-LLP sensor to the kernel via the SPI subsys.
|
||||||
|
spi-sc18is602
|
||||||
|
- NXP SC18IS602/603 I2C-bus to SPI bridge
|
||||||
|
spi-summary
|
||||||
|
- (Linux) SPI overview. If unsure about SPI or SPI in Linux, start here.
|
||||||
|
spidev_test.c
|
||||||
|
- SPI testing utility.
|
|
@ -8,6 +8,8 @@ hpet_example.c
|
||||||
- sample hpet timer test program
|
- sample hpet timer test program
|
||||||
hrtimers.txt
|
hrtimers.txt
|
||||||
- subsystem for high-resolution kernel timers
|
- subsystem for high-resolution kernel timers
|
||||||
|
Makefile
|
||||||
|
- Build and link hpet_example
|
||||||
NO_HZ.txt
|
NO_HZ.txt
|
||||||
- Summary of the different methods for the scheduler clock-interrupts management.
|
- Summary of the different methods for the scheduler clock-interrupts management.
|
||||||
timers-howto.txt
|
timers-howto.txt
|
||||||
|
|
|
@ -20,5 +20,7 @@ ppc-pv.txt
|
||||||
- the paravirtualization interface on PowerPC.
|
- the paravirtualization interface on PowerPC.
|
||||||
review-checklist.txt
|
review-checklist.txt
|
||||||
- review checklist for KVM patches.
|
- review checklist for KVM patches.
|
||||||
|
s390-diag.txt
|
||||||
|
- Diagnose hypercall description (for IBM S/390)
|
||||||
timekeeping.txt
|
timekeeping.txt
|
||||||
- timekeeping virtualization for x86-based architectures.
|
- timekeeping virtualization for x86-based architectures.
|
||||||
|
|
|
@ -16,8 +16,6 @@ hwpoison.txt
|
||||||
- explains what hwpoison is
|
- explains what hwpoison is
|
||||||
ksm.txt
|
ksm.txt
|
||||||
- how to use the Kernel Samepage Merging feature.
|
- how to use the Kernel Samepage Merging feature.
|
||||||
locking
|
|
||||||
- info on how locking and synchronization is done in the Linux vm code.
|
|
||||||
numa
|
numa
|
||||||
- information about NUMA specific code in the Linux vm.
|
- information about NUMA specific code in the Linux vm.
|
||||||
numa_memory_policy.txt
|
numa_memory_policy.txt
|
||||||
|
@ -32,6 +30,8 @@ slub.txt
|
||||||
- a short users guide for SLUB.
|
- a short users guide for SLUB.
|
||||||
soft-dirty.txt
|
soft-dirty.txt
|
||||||
- short explanation for soft-dirty PTEs
|
- short explanation for soft-dirty PTEs
|
||||||
|
split_page_table_lock
|
||||||
|
- Separate per-table lock to improve scalability of the old page_table_lock.
|
||||||
transhuge.txt
|
transhuge.txt
|
||||||
- Transparent Hugepage Support, alternative way of using hugepages.
|
- Transparent Hugepage Support, alternative way of using hugepages.
|
||||||
unevictable-lru.txt
|
unevictable-lru.txt
|
||||||
|
|
|
@ -4,7 +4,9 @@ ds2482
|
||||||
- The Maxim/Dallas Semiconductor DS2482 provides 1-wire busses.
|
- The Maxim/Dallas Semiconductor DS2482 provides 1-wire busses.
|
||||||
ds2490
|
ds2490
|
||||||
- The Maxim/Dallas Semiconductor DS2490 builds USB <-> W1 bridges.
|
- The Maxim/Dallas Semiconductor DS2490 builds USB <-> W1 bridges.
|
||||||
mxc_w1
|
mxc-w1
|
||||||
- W1 master controller driver found on Freescale MX2/MX3 SoCs
|
- W1 master controller driver found on Freescale MX2/MX3 SoCs
|
||||||
|
omap-hdq
|
||||||
|
- HDQ/1-wire module of TI OMAP 2430/3430.
|
||||||
w1-gpio
|
w1-gpio
|
||||||
- GPIO 1-wire bus master driver.
|
- GPIO 1-wire bus master driver.
|
||||||
|
|
|
@ -4,3 +4,5 @@ w1_therm
|
||||||
- The Maxim/Dallas Semiconductor ds18*20 temperature sensor.
|
- The Maxim/Dallas Semiconductor ds18*20 temperature sensor.
|
||||||
w1_ds2423
|
w1_ds2423
|
||||||
- The Maxim/Dallas Semiconductor ds2423 counter device.
|
- The Maxim/Dallas Semiconductor ds2423 counter device.
|
||||||
|
w1_ds28e04
|
||||||
|
- The Maxim/Dallas Semiconductor ds28e04 eeprom.
|
||||||
|
|
|
@ -1,6 +1,20 @@
|
||||||
00-INDEX
|
00-INDEX
|
||||||
- this file
|
- this file
|
||||||
mtrr.txt
|
boot.txt
|
||||||
- how to use x86 Memory Type Range Registers to increase performance
|
- List of boot protocol versions
|
||||||
|
early-microcode.txt
|
||||||
|
- How to load microcode from an initrd-CPIO archive early to fix CPU issues.
|
||||||
|
earlyprintk.txt
|
||||||
|
- Using earlyprintk with a USB2 debug port key.
|
||||||
|
entry_64.txt
|
||||||
|
- Describe (some of the) kernel entry points for x86.
|
||||||
exception-tables.txt
|
exception-tables.txt
|
||||||
- why and how Linux kernel uses exception tables on x86
|
- why and how Linux kernel uses exception tables on x86
|
||||||
|
mtrr.txt
|
||||||
|
- how to use x86 Memory Type Range Registers to increase performance
|
||||||
|
pat.txt
|
||||||
|
- Page Attribute Table intro and API
|
||||||
|
usb-legacy-support.txt
|
||||||
|
- how to fix/avoid quirks when using emulated PS/2 mouse/keyboard.
|
||||||
|
zero-page.txt
|
||||||
|
- layout of the first page of memory.
|
||||||
|
|
|
@ -445,10 +445,20 @@ static inline int pte_same(pte_t a, pte_t b)
|
||||||
return a.pte == b.pte;
|
return a.pte == b.pte;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static inline int pteval_present(pteval_t pteval)
|
||||||
|
{
|
||||||
|
/*
|
||||||
|
* Yes Linus, _PAGE_PROTNONE == _PAGE_NUMA. Expressing it this
|
||||||
|
* way clearly states that the intent is that protnone and numa
|
||||||
|
* hinting ptes are considered present for the purposes of
|
||||||
|
* pagetable operations like zapping, protection changes, gup etc.
|
||||||
|
*/
|
||||||
|
return pteval & (_PAGE_PRESENT | _PAGE_PROTNONE | _PAGE_NUMA);
|
||||||
|
}
|
||||||
|
|
||||||
static inline int pte_present(pte_t a)
|
static inline int pte_present(pte_t a)
|
||||||
{
|
{
|
||||||
return pte_flags(a) & (_PAGE_PRESENT | _PAGE_PROTNONE |
|
return pteval_present(pte_flags(a));
|
||||||
_PAGE_NUMA);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
#define pte_accessible pte_accessible
|
#define pte_accessible pte_accessible
|
||||||
|
|
|
@ -365,7 +365,7 @@ void xen_ptep_modify_prot_commit(struct mm_struct *mm, unsigned long addr,
|
||||||
/* Assume pteval_t is equivalent to all the other *val_t types. */
|
/* Assume pteval_t is equivalent to all the other *val_t types. */
|
||||||
static pteval_t pte_mfn_to_pfn(pteval_t val)
|
static pteval_t pte_mfn_to_pfn(pteval_t val)
|
||||||
{
|
{
|
||||||
if (val & _PAGE_PRESENT) {
|
if (pteval_present(val)) {
|
||||||
unsigned long mfn = (val & PTE_PFN_MASK) >> PAGE_SHIFT;
|
unsigned long mfn = (val & PTE_PFN_MASK) >> PAGE_SHIFT;
|
||||||
unsigned long pfn = mfn_to_pfn(mfn);
|
unsigned long pfn = mfn_to_pfn(mfn);
|
||||||
|
|
||||||
|
@ -381,7 +381,7 @@ static pteval_t pte_mfn_to_pfn(pteval_t val)
|
||||||
|
|
||||||
static pteval_t pte_pfn_to_mfn(pteval_t val)
|
static pteval_t pte_pfn_to_mfn(pteval_t val)
|
||||||
{
|
{
|
||||||
if (val & _PAGE_PRESENT) {
|
if (pteval_present(val)) {
|
||||||
unsigned long pfn = (val & PTE_PFN_MASK) >> PAGE_SHIFT;
|
unsigned long pfn = (val & PTE_PFN_MASK) >> PAGE_SHIFT;
|
||||||
pteval_t flags = val & PTE_FLAGS_MASK;
|
pteval_t flags = val & PTE_FLAGS_MASK;
|
||||||
unsigned long mfn;
|
unsigned long mfn;
|
||||||
|
|
|
@ -61,7 +61,7 @@ static int edac_set_poll_msec(const char *val, struct kernel_param *kp)
|
||||||
ret = kstrtol(val, 0, &l);
|
ret = kstrtol(val, 0, &l);
|
||||||
if (ret)
|
if (ret)
|
||||||
return ret;
|
return ret;
|
||||||
if ((int)l != l)
|
if (!l || ((int)l != l))
|
||||||
return -EINVAL;
|
return -EINVAL;
|
||||||
*((int *)kp->arg) = l;
|
*((int *)kp->arg) = l;
|
||||||
|
|
||||||
|
|
|
@ -194,7 +194,7 @@ err:
|
||||||
mutex_unlock(&b->c->bucket_lock);
|
mutex_unlock(&b->c->bucket_lock);
|
||||||
bch_extent_to_text(buf, sizeof(buf), k);
|
bch_extent_to_text(buf, sizeof(buf), k);
|
||||||
btree_bug(b,
|
btree_bug(b,
|
||||||
"inconsistent btree pointer %s: bucket %li pin %i prio %i gen %i last_gc %i mark %llu gc_gen %i",
|
"inconsistent btree pointer %s: bucket %zi pin %i prio %i gen %i last_gc %i mark %llu gc_gen %i",
|
||||||
buf, PTR_BUCKET_NR(b->c, k, i), atomic_read(&g->pin),
|
buf, PTR_BUCKET_NR(b->c, k, i), atomic_read(&g->pin),
|
||||||
g->prio, g->gen, g->last_gc, GC_MARK(g), g->gc_gen);
|
g->prio, g->gen, g->last_gc, GC_MARK(g), g->gc_gen);
|
||||||
return true;
|
return true;
|
||||||
|
|
|
@ -754,19 +754,19 @@ static long i2o_cfg_compat_ioctl(struct file *file, unsigned cmd,
|
||||||
unsigned long arg)
|
unsigned long arg)
|
||||||
{
|
{
|
||||||
int ret;
|
int ret;
|
||||||
mutex_lock(&i2o_cfg_mutex);
|
|
||||||
switch (cmd) {
|
switch (cmd) {
|
||||||
case I2OGETIOPS:
|
case I2OGETIOPS:
|
||||||
ret = i2o_cfg_ioctl(file, cmd, arg);
|
ret = i2o_cfg_ioctl(file, cmd, arg);
|
||||||
break;
|
break;
|
||||||
case I2OPASSTHRU32:
|
case I2OPASSTHRU32:
|
||||||
|
mutex_lock(&i2o_cfg_mutex);
|
||||||
ret = i2o_cfg_passthru32(file, cmd, arg);
|
ret = i2o_cfg_passthru32(file, cmd, arg);
|
||||||
|
mutex_unlock(&i2o_cfg_mutex);
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
ret = -ENOIOCTLCMD;
|
ret = -ENOIOCTLCMD;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
mutex_unlock(&i2o_cfg_mutex);
|
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -139,8 +139,11 @@ static int gru_dump_context(struct gru_state *gru, int ctxnum,
|
||||||
|
|
||||||
ubuf += sizeof(hdr);
|
ubuf += sizeof(hdr);
|
||||||
ubufcch = ubuf;
|
ubufcch = ubuf;
|
||||||
if (gru_user_copy_handle(&ubuf, cch))
|
if (gru_user_copy_handle(&ubuf, cch)) {
|
||||||
goto fail;
|
if (cch_locked)
|
||||||
|
unlock_cch_handle(cch);
|
||||||
|
return -EFAULT;
|
||||||
|
}
|
||||||
if (cch_locked)
|
if (cch_locked)
|
||||||
ubufcch->delresp = 0;
|
ubufcch->delresp = 0;
|
||||||
bytes = sizeof(hdr) + GRU_CACHE_LINE_BYTES;
|
bytes = sizeof(hdr) + GRU_CACHE_LINE_BYTES;
|
||||||
|
@ -179,10 +182,6 @@ static int gru_dump_context(struct gru_state *gru, int ctxnum,
|
||||||
ret = -EFAULT;
|
ret = -EFAULT;
|
||||||
|
|
||||||
return ret ? ret : bytes;
|
return ret ? ret : bytes;
|
||||||
|
|
||||||
fail:
|
|
||||||
unlock_cch_handle(cch);
|
|
||||||
return -EFAULT;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
int gru_dump_chiplet_request(unsigned long arg)
|
int gru_dump_chiplet_request(unsigned long arg)
|
||||||
|
|
|
@ -34,7 +34,7 @@ static void *alloc_fdmem(size_t size)
|
||||||
* vmalloc() if the allocation size will be considered "large" by the VM.
|
* vmalloc() if the allocation size will be considered "large" by the VM.
|
||||||
*/
|
*/
|
||||||
if (size <= (PAGE_SIZE << PAGE_ALLOC_COSTLY_ORDER)) {
|
if (size <= (PAGE_SIZE << PAGE_ALLOC_COSTLY_ORDER)) {
|
||||||
void *data = kmalloc(size, GFP_KERNEL|__GFP_NOWARN);
|
void *data = kmalloc(size, GFP_KERNEL|__GFP_NOWARN|__GFP_NORETRY);
|
||||||
if (data != NULL)
|
if (data != NULL)
|
||||||
return data;
|
return data;
|
||||||
}
|
}
|
||||||
|
|
|
@ -1846,6 +1846,11 @@ int nfs_symlink(struct inode *dir, struct dentry *dentry, const char *symname)
|
||||||
GFP_KERNEL)) {
|
GFP_KERNEL)) {
|
||||||
SetPageUptodate(page);
|
SetPageUptodate(page);
|
||||||
unlock_page(page);
|
unlock_page(page);
|
||||||
|
/*
|
||||||
|
* add_to_page_cache_lru() grabs an extra page refcount.
|
||||||
|
* Drop it here to avoid leaking this page later.
|
||||||
|
*/
|
||||||
|
page_cache_release(page);
|
||||||
} else
|
} else
|
||||||
__free_page(page);
|
__free_page(page);
|
||||||
|
|
||||||
|
|
|
@ -7158,7 +7158,7 @@ int ocfs2_truncate_inline(struct inode *inode, struct buffer_head *di_bh,
|
||||||
if (end > i_size_read(inode))
|
if (end > i_size_read(inode))
|
||||||
end = i_size_read(inode);
|
end = i_size_read(inode);
|
||||||
|
|
||||||
BUG_ON(start >= end);
|
BUG_ON(start > end);
|
||||||
|
|
||||||
if (!(OCFS2_I(inode)->ip_dyn_features & OCFS2_INLINE_DATA_FL) ||
|
if (!(OCFS2_I(inode)->ip_dyn_features & OCFS2_INLINE_DATA_FL) ||
|
||||||
!(le16_to_cpu(di->i_dyn_features) & OCFS2_INLINE_DATA_FL) ||
|
!(le16_to_cpu(di->i_dyn_features) & OCFS2_INLINE_DATA_FL) ||
|
||||||
|
|
|
@ -185,6 +185,9 @@ static int ocfs2_sync_file(struct file *file, loff_t start, loff_t end,
|
||||||
file->f_path.dentry->d_name.name,
|
file->f_path.dentry->d_name.name,
|
||||||
(unsigned long long)datasync);
|
(unsigned long long)datasync);
|
||||||
|
|
||||||
|
if (ocfs2_is_hard_readonly(osb) || ocfs2_is_soft_readonly(osb))
|
||||||
|
return -EROFS;
|
||||||
|
|
||||||
err = filemap_write_and_wait_range(inode->i_mapping, start, end);
|
err = filemap_write_and_wait_range(inode->i_mapping, start, end);
|
||||||
if (err)
|
if (err)
|
||||||
return err;
|
return err;
|
||||||
|
@ -474,11 +477,6 @@ static int ocfs2_truncate_file(struct inode *inode,
|
||||||
goto bail;
|
goto bail;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* lets handle the simple truncate cases before doing any more
|
|
||||||
* cluster locking. */
|
|
||||||
if (new_i_size == le64_to_cpu(fe->i_size))
|
|
||||||
goto bail;
|
|
||||||
|
|
||||||
down_write(&OCFS2_I(inode)->ip_alloc_sem);
|
down_write(&OCFS2_I(inode)->ip_alloc_sem);
|
||||||
|
|
||||||
ocfs2_resv_discard(&osb->osb_la_resmap,
|
ocfs2_resv_discard(&osb->osb_la_resmap,
|
||||||
|
@ -718,7 +716,8 @@ leave:
|
||||||
* While a write will already be ordering the data, a truncate will not.
|
* While a write will already be ordering the data, a truncate will not.
|
||||||
* Thus, we need to explicitly order the zeroed pages.
|
* Thus, we need to explicitly order the zeroed pages.
|
||||||
*/
|
*/
|
||||||
static handle_t *ocfs2_zero_start_ordered_transaction(struct inode *inode)
|
static handle_t *ocfs2_zero_start_ordered_transaction(struct inode *inode,
|
||||||
|
struct buffer_head *di_bh)
|
||||||
{
|
{
|
||||||
struct ocfs2_super *osb = OCFS2_SB(inode->i_sb);
|
struct ocfs2_super *osb = OCFS2_SB(inode->i_sb);
|
||||||
handle_t *handle = NULL;
|
handle_t *handle = NULL;
|
||||||
|
@ -735,7 +734,14 @@ static handle_t *ocfs2_zero_start_ordered_transaction(struct inode *inode)
|
||||||
}
|
}
|
||||||
|
|
||||||
ret = ocfs2_jbd2_file_inode(handle, inode);
|
ret = ocfs2_jbd2_file_inode(handle, inode);
|
||||||
if (ret < 0)
|
if (ret < 0) {
|
||||||
|
mlog_errno(ret);
|
||||||
|
goto out;
|
||||||
|
}
|
||||||
|
|
||||||
|
ret = ocfs2_journal_access_di(handle, INODE_CACHE(inode), di_bh,
|
||||||
|
OCFS2_JOURNAL_ACCESS_WRITE);
|
||||||
|
if (ret)
|
||||||
mlog_errno(ret);
|
mlog_errno(ret);
|
||||||
|
|
||||||
out:
|
out:
|
||||||
|
@ -751,7 +757,7 @@ out:
|
||||||
* to be too fragile to do exactly what we need without us having to
|
* to be too fragile to do exactly what we need without us having to
|
||||||
* worry about recursive locking in ->write_begin() and ->write_end(). */
|
* worry about recursive locking in ->write_begin() and ->write_end(). */
|
||||||
static int ocfs2_write_zero_page(struct inode *inode, u64 abs_from,
|
static int ocfs2_write_zero_page(struct inode *inode, u64 abs_from,
|
||||||
u64 abs_to)
|
u64 abs_to, struct buffer_head *di_bh)
|
||||||
{
|
{
|
||||||
struct address_space *mapping = inode->i_mapping;
|
struct address_space *mapping = inode->i_mapping;
|
||||||
struct page *page;
|
struct page *page;
|
||||||
|
@ -759,6 +765,7 @@ static int ocfs2_write_zero_page(struct inode *inode, u64 abs_from,
|
||||||
handle_t *handle = NULL;
|
handle_t *handle = NULL;
|
||||||
int ret = 0;
|
int ret = 0;
|
||||||
unsigned zero_from, zero_to, block_start, block_end;
|
unsigned zero_from, zero_to, block_start, block_end;
|
||||||
|
struct ocfs2_dinode *di = (struct ocfs2_dinode *)di_bh->b_data;
|
||||||
|
|
||||||
BUG_ON(abs_from >= abs_to);
|
BUG_ON(abs_from >= abs_to);
|
||||||
BUG_ON(abs_to > (((u64)index + 1) << PAGE_CACHE_SHIFT));
|
BUG_ON(abs_to > (((u64)index + 1) << PAGE_CACHE_SHIFT));
|
||||||
|
@ -801,7 +808,8 @@ static int ocfs2_write_zero_page(struct inode *inode, u64 abs_from,
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!handle) {
|
if (!handle) {
|
||||||
handle = ocfs2_zero_start_ordered_transaction(inode);
|
handle = ocfs2_zero_start_ordered_transaction(inode,
|
||||||
|
di_bh);
|
||||||
if (IS_ERR(handle)) {
|
if (IS_ERR(handle)) {
|
||||||
ret = PTR_ERR(handle);
|
ret = PTR_ERR(handle);
|
||||||
handle = NULL;
|
handle = NULL;
|
||||||
|
@ -818,8 +826,22 @@ static int ocfs2_write_zero_page(struct inode *inode, u64 abs_from,
|
||||||
ret = 0;
|
ret = 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (handle)
|
if (handle) {
|
||||||
|
/*
|
||||||
|
* fs-writeback will release the dirty pages without page lock
|
||||||
|
* whose offset are over inode size, the release happens at
|
||||||
|
* block_write_full_page_endio().
|
||||||
|
*/
|
||||||
|
i_size_write(inode, abs_to);
|
||||||
|
inode->i_blocks = ocfs2_inode_sector_count(inode);
|
||||||
|
di->i_size = cpu_to_le64((u64)i_size_read(inode));
|
||||||
|
inode->i_mtime = inode->i_ctime = CURRENT_TIME;
|
||||||
|
di->i_mtime = di->i_ctime = cpu_to_le64(inode->i_mtime.tv_sec);
|
||||||
|
di->i_ctime_nsec = cpu_to_le32(inode->i_mtime.tv_nsec);
|
||||||
|
di->i_mtime_nsec = di->i_ctime_nsec;
|
||||||
|
ocfs2_journal_dirty(handle, di_bh);
|
||||||
ocfs2_commit_trans(OCFS2_SB(inode->i_sb), handle);
|
ocfs2_commit_trans(OCFS2_SB(inode->i_sb), handle);
|
||||||
|
}
|
||||||
|
|
||||||
out_unlock:
|
out_unlock:
|
||||||
unlock_page(page);
|
unlock_page(page);
|
||||||
|
@ -915,7 +937,7 @@ out:
|
||||||
* has made sure that the entire range needs zeroing.
|
* has made sure that the entire range needs zeroing.
|
||||||
*/
|
*/
|
||||||
static int ocfs2_zero_extend_range(struct inode *inode, u64 range_start,
|
static int ocfs2_zero_extend_range(struct inode *inode, u64 range_start,
|
||||||
u64 range_end)
|
u64 range_end, struct buffer_head *di_bh)
|
||||||
{
|
{
|
||||||
int rc = 0;
|
int rc = 0;
|
||||||
u64 next_pos;
|
u64 next_pos;
|
||||||
|
@ -931,7 +953,7 @@ static int ocfs2_zero_extend_range(struct inode *inode, u64 range_start,
|
||||||
next_pos = (zero_pos & PAGE_CACHE_MASK) + PAGE_CACHE_SIZE;
|
next_pos = (zero_pos & PAGE_CACHE_MASK) + PAGE_CACHE_SIZE;
|
||||||
if (next_pos > range_end)
|
if (next_pos > range_end)
|
||||||
next_pos = range_end;
|
next_pos = range_end;
|
||||||
rc = ocfs2_write_zero_page(inode, zero_pos, next_pos);
|
rc = ocfs2_write_zero_page(inode, zero_pos, next_pos, di_bh);
|
||||||
if (rc < 0) {
|
if (rc < 0) {
|
||||||
mlog_errno(rc);
|
mlog_errno(rc);
|
||||||
break;
|
break;
|
||||||
|
@ -977,7 +999,7 @@ int ocfs2_zero_extend(struct inode *inode, struct buffer_head *di_bh,
|
||||||
range_end = zero_to_size;
|
range_end = zero_to_size;
|
||||||
|
|
||||||
ret = ocfs2_zero_extend_range(inode, range_start,
|
ret = ocfs2_zero_extend_range(inode, range_start,
|
||||||
range_end);
|
range_end, di_bh);
|
||||||
if (ret) {
|
if (ret) {
|
||||||
mlog_errno(ret);
|
mlog_errno(ret);
|
||||||
break;
|
break;
|
||||||
|
@ -1145,14 +1167,14 @@ int ocfs2_setattr(struct dentry *dentry, struct iattr *attr)
|
||||||
goto bail_unlock_rw;
|
goto bail_unlock_rw;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (size_change && attr->ia_size != i_size_read(inode)) {
|
if (size_change) {
|
||||||
status = inode_newsize_ok(inode, attr->ia_size);
|
status = inode_newsize_ok(inode, attr->ia_size);
|
||||||
if (status)
|
if (status)
|
||||||
goto bail_unlock;
|
goto bail_unlock;
|
||||||
|
|
||||||
inode_dio_wait(inode);
|
inode_dio_wait(inode);
|
||||||
|
|
||||||
if (i_size_read(inode) > attr->ia_size) {
|
if (i_size_read(inode) >= attr->ia_size) {
|
||||||
if (ocfs2_should_order_data(inode)) {
|
if (ocfs2_should_order_data(inode)) {
|
||||||
status = ocfs2_begin_ordered_truncate(inode,
|
status = ocfs2_begin_ordered_truncate(inode,
|
||||||
attr->ia_size);
|
attr->ia_size);
|
||||||
|
|
|
@ -664,6 +664,7 @@ static int ocfs2_link(struct dentry *old_dentry,
|
||||||
struct ocfs2_super *osb = OCFS2_SB(dir->i_sb);
|
struct ocfs2_super *osb = OCFS2_SB(dir->i_sb);
|
||||||
struct ocfs2_dir_lookup_result lookup = { NULL, };
|
struct ocfs2_dir_lookup_result lookup = { NULL, };
|
||||||
sigset_t oldset;
|
sigset_t oldset;
|
||||||
|
u64 old_de_ino;
|
||||||
|
|
||||||
trace_ocfs2_link((unsigned long long)OCFS2_I(inode)->ip_blkno,
|
trace_ocfs2_link((unsigned long long)OCFS2_I(inode)->ip_blkno,
|
||||||
old_dentry->d_name.len, old_dentry->d_name.name,
|
old_dentry->d_name.len, old_dentry->d_name.name,
|
||||||
|
@ -686,6 +687,22 @@ static int ocfs2_link(struct dentry *old_dentry,
|
||||||
goto out;
|
goto out;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
err = ocfs2_lookup_ino_from_name(dir, old_dentry->d_name.name,
|
||||||
|
old_dentry->d_name.len, &old_de_ino);
|
||||||
|
if (err) {
|
||||||
|
err = -ENOENT;
|
||||||
|
goto out;
|
||||||
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Check whether another node removed the source inode while we
|
||||||
|
* were in the vfs.
|
||||||
|
*/
|
||||||
|
if (old_de_ino != OCFS2_I(inode)->ip_blkno) {
|
||||||
|
err = -ENOENT;
|
||||||
|
goto out;
|
||||||
|
}
|
||||||
|
|
||||||
err = ocfs2_check_dir_for_entry(dir, dentry->d_name.name,
|
err = ocfs2_check_dir_for_entry(dir, dentry->d_name.name,
|
||||||
dentry->d_name.len);
|
dentry->d_name.len);
|
||||||
if (err)
|
if (err)
|
||||||
|
|
|
@ -468,17 +468,24 @@ static int __init update_note_header_size_elf64(const Elf64_Ehdr *ehdr_ptr)
|
||||||
return rc;
|
return rc;
|
||||||
}
|
}
|
||||||
nhdr_ptr = notes_section;
|
nhdr_ptr = notes_section;
|
||||||
while (real_sz < max_sz) {
|
while (nhdr_ptr->n_namesz != 0) {
|
||||||
if (nhdr_ptr->n_namesz == 0)
|
|
||||||
break;
|
|
||||||
sz = sizeof(Elf64_Nhdr) +
|
sz = sizeof(Elf64_Nhdr) +
|
||||||
((nhdr_ptr->n_namesz + 3) & ~3) +
|
((nhdr_ptr->n_namesz + 3) & ~3) +
|
||||||
((nhdr_ptr->n_descsz + 3) & ~3);
|
((nhdr_ptr->n_descsz + 3) & ~3);
|
||||||
|
if ((real_sz + sz) > max_sz) {
|
||||||
|
pr_warn("Warning: Exceeded p_memsz, dropping PT_NOTE entry n_namesz=0x%x, n_descsz=0x%x\n",
|
||||||
|
nhdr_ptr->n_namesz, nhdr_ptr->n_descsz);
|
||||||
|
break;
|
||||||
|
}
|
||||||
real_sz += sz;
|
real_sz += sz;
|
||||||
nhdr_ptr = (Elf64_Nhdr*)((char*)nhdr_ptr + sz);
|
nhdr_ptr = (Elf64_Nhdr*)((char*)nhdr_ptr + sz);
|
||||||
}
|
}
|
||||||
kfree(notes_section);
|
kfree(notes_section);
|
||||||
phdr_ptr->p_memsz = real_sz;
|
phdr_ptr->p_memsz = real_sz;
|
||||||
|
if (real_sz == 0) {
|
||||||
|
pr_warn("Warning: Zero PT_NOTE entries found\n");
|
||||||
|
return -EINVAL;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
|
@ -648,17 +655,24 @@ static int __init update_note_header_size_elf32(const Elf32_Ehdr *ehdr_ptr)
|
||||||
return rc;
|
return rc;
|
||||||
}
|
}
|
||||||
nhdr_ptr = notes_section;
|
nhdr_ptr = notes_section;
|
||||||
while (real_sz < max_sz) {
|
while (nhdr_ptr->n_namesz != 0) {
|
||||||
if (nhdr_ptr->n_namesz == 0)
|
|
||||||
break;
|
|
||||||
sz = sizeof(Elf32_Nhdr) +
|
sz = sizeof(Elf32_Nhdr) +
|
||||||
((nhdr_ptr->n_namesz + 3) & ~3) +
|
((nhdr_ptr->n_namesz + 3) & ~3) +
|
||||||
((nhdr_ptr->n_descsz + 3) & ~3);
|
((nhdr_ptr->n_descsz + 3) & ~3);
|
||||||
|
if ((real_sz + sz) > max_sz) {
|
||||||
|
pr_warn("Warning: Exceeded p_memsz, dropping PT_NOTE entry n_namesz=0x%x, n_descsz=0x%x\n",
|
||||||
|
nhdr_ptr->n_namesz, nhdr_ptr->n_descsz);
|
||||||
|
break;
|
||||||
|
}
|
||||||
real_sz += sz;
|
real_sz += sz;
|
||||||
nhdr_ptr = (Elf32_Nhdr*)((char*)nhdr_ptr + sz);
|
nhdr_ptr = (Elf32_Nhdr*)((char*)nhdr_ptr + sz);
|
||||||
}
|
}
|
||||||
kfree(notes_section);
|
kfree(notes_section);
|
||||||
phdr_ptr->p_memsz = real_sz;
|
phdr_ptr->p_memsz = real_sz;
|
||||||
|
if (real_sz == 0) {
|
||||||
|
pr_warn("Warning: Zero PT_NOTE entries found\n");
|
||||||
|
return -EINVAL;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
|
|
|
@ -188,6 +188,9 @@ static inline void kick_all_cpus_sync(void) { }
|
||||||
*/
|
*/
|
||||||
extern void arch_disable_smp_support(void);
|
extern void arch_disable_smp_support(void);
|
||||||
|
|
||||||
|
extern void arch_enable_nonboot_cpus_begin(void);
|
||||||
|
extern void arch_enable_nonboot_cpus_end(void);
|
||||||
|
|
||||||
void smp_setup_processor_id(void);
|
void smp_setup_processor_id(void);
|
||||||
|
|
||||||
#endif /* __LINUX_SMP_H */
|
#endif /* __LINUX_SMP_H */
|
||||||
|
|
|
@ -945,8 +945,10 @@ static int hwpoison_user_mappings(struct page *p, unsigned long pfn,
|
||||||
* to it. Similarly, page lock is shifted.
|
* to it. Similarly, page lock is shifted.
|
||||||
*/
|
*/
|
||||||
if (hpage != p) {
|
if (hpage != p) {
|
||||||
put_page(hpage);
|
if (!(flags & MF_COUNT_INCREASED)) {
|
||||||
get_page(p);
|
put_page(hpage);
|
||||||
|
get_page(p);
|
||||||
|
}
|
||||||
lock_page(p);
|
lock_page(p);
|
||||||
unlock_page(hpage);
|
unlock_page(hpage);
|
||||||
*hpagep = p;
|
*hpagep = p;
|
||||||
|
|
40
mm/slub.c
40
mm/slub.c
|
@ -1004,21 +1004,19 @@ static inline void slab_free_hook(struct kmem_cache *s, void *x)
|
||||||
static void add_full(struct kmem_cache *s,
|
static void add_full(struct kmem_cache *s,
|
||||||
struct kmem_cache_node *n, struct page *page)
|
struct kmem_cache_node *n, struct page *page)
|
||||||
{
|
{
|
||||||
lockdep_assert_held(&n->list_lock);
|
|
||||||
|
|
||||||
if (!(s->flags & SLAB_STORE_USER))
|
if (!(s->flags & SLAB_STORE_USER))
|
||||||
return;
|
return;
|
||||||
|
|
||||||
|
lockdep_assert_held(&n->list_lock);
|
||||||
list_add(&page->lru, &n->full);
|
list_add(&page->lru, &n->full);
|
||||||
}
|
}
|
||||||
|
|
||||||
static void remove_full(struct kmem_cache *s, struct kmem_cache_node *n, struct page *page)
|
static void remove_full(struct kmem_cache *s, struct kmem_cache_node *n, struct page *page)
|
||||||
{
|
{
|
||||||
lockdep_assert_held(&n->list_lock);
|
|
||||||
|
|
||||||
if (!(s->flags & SLAB_STORE_USER))
|
if (!(s->flags & SLAB_STORE_USER))
|
||||||
return;
|
return;
|
||||||
|
|
||||||
|
lockdep_assert_held(&n->list_lock);
|
||||||
list_del(&page->lru);
|
list_del(&page->lru);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1520,11 +1518,9 @@ static void discard_slab(struct kmem_cache *s, struct page *page)
|
||||||
/*
|
/*
|
||||||
* Management of partially allocated slabs.
|
* Management of partially allocated slabs.
|
||||||
*/
|
*/
|
||||||
static inline void add_partial(struct kmem_cache_node *n,
|
static inline void
|
||||||
struct page *page, int tail)
|
__add_partial(struct kmem_cache_node *n, struct page *page, int tail)
|
||||||
{
|
{
|
||||||
lockdep_assert_held(&n->list_lock);
|
|
||||||
|
|
||||||
n->nr_partial++;
|
n->nr_partial++;
|
||||||
if (tail == DEACTIVATE_TO_TAIL)
|
if (tail == DEACTIVATE_TO_TAIL)
|
||||||
list_add_tail(&page->lru, &n->partial);
|
list_add_tail(&page->lru, &n->partial);
|
||||||
|
@ -1532,13 +1528,25 @@ static inline void add_partial(struct kmem_cache_node *n,
|
||||||
list_add(&page->lru, &n->partial);
|
list_add(&page->lru, &n->partial);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static inline void add_partial(struct kmem_cache_node *n,
|
||||||
|
struct page *page, int tail)
|
||||||
|
{
|
||||||
|
lockdep_assert_held(&n->list_lock);
|
||||||
|
__add_partial(n, page, tail);
|
||||||
|
}
|
||||||
|
|
||||||
|
static inline void
|
||||||
|
__remove_partial(struct kmem_cache_node *n, struct page *page)
|
||||||
|
{
|
||||||
|
list_del(&page->lru);
|
||||||
|
n->nr_partial--;
|
||||||
|
}
|
||||||
|
|
||||||
static inline void remove_partial(struct kmem_cache_node *n,
|
static inline void remove_partial(struct kmem_cache_node *n,
|
||||||
struct page *page)
|
struct page *page)
|
||||||
{
|
{
|
||||||
lockdep_assert_held(&n->list_lock);
|
lockdep_assert_held(&n->list_lock);
|
||||||
|
__remove_partial(n, page);
|
||||||
list_del(&page->lru);
|
|
||||||
n->nr_partial--;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|
@ -2906,12 +2914,10 @@ static void early_kmem_cache_node_alloc(int node)
|
||||||
inc_slabs_node(kmem_cache_node, node, page->objects);
|
inc_slabs_node(kmem_cache_node, node, page->objects);
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* the lock is for lockdep's sake, not for any actual
|
* No locks need to be taken here as it has just been
|
||||||
* race protection
|
* initialized and there is no concurrent access.
|
||||||
*/
|
*/
|
||||||
spin_lock(&n->list_lock);
|
__add_partial(n, page, DEACTIVATE_TO_HEAD);
|
||||||
add_partial(n, page, DEACTIVATE_TO_HEAD);
|
|
||||||
spin_unlock(&n->list_lock);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
static void free_kmem_cache_nodes(struct kmem_cache *s)
|
static void free_kmem_cache_nodes(struct kmem_cache *s)
|
||||||
|
@ -3197,7 +3203,7 @@ static void free_partial(struct kmem_cache *s, struct kmem_cache_node *n)
|
||||||
|
|
||||||
list_for_each_entry_safe(page, h, &n->partial, lru) {
|
list_for_each_entry_safe(page, h, &n->partial, lru) {
|
||||||
if (!page->inuse) {
|
if (!page->inuse) {
|
||||||
remove_partial(n, page);
|
__remove_partial(n, page);
|
||||||
discard_slab(s, page);
|
discard_slab(s, page);
|
||||||
} else {
|
} else {
|
||||||
list_slab_objects(s, page,
|
list_slab_objects(s, page,
|
||||||
|
|
|
@ -471,7 +471,7 @@ sub seed_camelcase_includes {
|
||||||
|
|
||||||
$camelcase_seeded = 1;
|
$camelcase_seeded = 1;
|
||||||
|
|
||||||
if (-d ".git") {
|
if (-e ".git") {
|
||||||
my $git_last_include_commit = `git log --no-merges --pretty=format:"%h%n" -1 -- include`;
|
my $git_last_include_commit = `git log --no-merges --pretty=format:"%h%n" -1 -- include`;
|
||||||
chomp $git_last_include_commit;
|
chomp $git_last_include_commit;
|
||||||
$camelcase_cache = ".checkpatch-camelcase.git.$git_last_include_commit";
|
$camelcase_cache = ".checkpatch-camelcase.git.$git_last_include_commit";
|
||||||
|
@ -499,7 +499,7 @@ sub seed_camelcase_includes {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (-d ".git") {
|
if (-e ".git") {
|
||||||
$files = `git ls-files "include/*.h"`;
|
$files = `git ls-files "include/*.h"`;
|
||||||
@include_files = split('\n', $files);
|
@include_files = split('\n', $files);
|
||||||
}
|
}
|
||||||
|
|
|
@ -95,7 +95,7 @@ my %VCS_cmds;
|
||||||
|
|
||||||
my %VCS_cmds_git = (
|
my %VCS_cmds_git = (
|
||||||
"execute_cmd" => \&git_execute_cmd,
|
"execute_cmd" => \&git_execute_cmd,
|
||||||
"available" => '(which("git") ne "") && (-d ".git")',
|
"available" => '(which("git") ne "") && (-e ".git")',
|
||||||
"find_signers_cmd" =>
|
"find_signers_cmd" =>
|
||||||
"git log --no-color --follow --since=\$email_git_since " .
|
"git log --no-color --follow --since=\$email_git_since " .
|
||||||
'--numstat --no-merges ' .
|
'--numstat --no-merges ' .
|
||||||
|
|
Loading…
Add table
Reference in a new issue