mirror of
				https://github.com/torvalds/linux.git
				synced 2025-11-04 10:40:15 +02:00 
			
		
		
		
	Merge branch 'akpm' (patches from Andrew)
Merge yet more updates from Andrew Morton:
 - a few MM remainders
 - misc things
 - autofs updates
 - signals
 - affs updates
 - ipc
 - nilfs2
 - spelling.txt updates
* emailed patches from Andrew Morton <akpm@linux-foundation.org>: (78 commits)
  mm, x86: fix HIGHMEM64 && PARAVIRT build config for native_pud_clear()
  mm: add arch-independent testcases for RODATA
  hfs: atomically read inode size
  mm: clarify mm_struct.mm_{users,count} documentation
  mm: use mmget_not_zero() helper
  mm: add new mmget() helper
  mm: add new mmgrab() helper
  checkpatch: warn when formats use %Z and suggest %z
  lib/vsprintf.c: remove %Z support
  scripts/spelling.txt: add some typo-words
  scripts/spelling.txt: add "followings" pattern and fix typo instances
  scripts/spelling.txt: add "therfore" pattern and fix typo instances
  scripts/spelling.txt: add "overwriten" pattern and fix typo instances
  scripts/spelling.txt: add "overwritting" pattern and fix typo instances
  scripts/spelling.txt: add "deintialize(d)" pattern and fix typo instances
  scripts/spelling.txt: add "disassocation" pattern and fix typo instances
  scripts/spelling.txt: add "omited" pattern and fix typo instances
  scripts/spelling.txt: add "explictely" pattern and fix typo instances
  scripts/spelling.txt: add "applys" pattern and fix typo instances
  scripts/spelling.txt: add "configuartion" pattern and fix typo instances
  ...
			
			
This commit is contained in:
		
						commit
						86292b33d4
					
				
					 423 changed files with 1287 additions and 945 deletions
				
			
		| 
						 | 
					@ -1020,7 +1020,7 @@ and other resources, etc.
 | 
				
			||||||
	</itemizedlist>
 | 
						</itemizedlist>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	<para>
 | 
						<para>
 | 
				
			||||||
	Of errors detected as above, the followings are not ATA/ATAPI
 | 
						Of errors detected as above, the following are not ATA/ATAPI
 | 
				
			||||||
	device errors but ATA bus errors and should be handled
 | 
						device errors but ATA bus errors and should be handled
 | 
				
			||||||
	according to <xref linkend="excatATAbusErr"/>.
 | 
						according to <xref linkend="excatATAbusErr"/>.
 | 
				
			||||||
	</para>
 | 
						</para>
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -57,7 +57,7 @@ Note: To get the ACPI debug object output (Store (AAAA, Debug)),
 | 
				
			||||||
3. undo your changes
 | 
					3. undo your changes
 | 
				
			||||||
   The "undo" operation is not supported for a new inserted method
 | 
					   The "undo" operation is not supported for a new inserted method
 | 
				
			||||||
   right now, i.e. we can not remove a method currently.
 | 
					   right now, i.e. we can not remove a method currently.
 | 
				
			||||||
   For an overrided method, in order to undo your changes, please
 | 
					   For an overridden method, in order to undo your changes, please
 | 
				
			||||||
   save a copy of the method original ASL code in step c) section 1,
 | 
					   save a copy of the method original ASL code in step c) section 1,
 | 
				
			||||||
   and redo step c) ~ g) to override the method with the original one.
 | 
					   and redo step c) ~ g) to override the method with the original one.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -152,7 +152,7 @@ tracing facility.
 | 
				
			||||||
	Users can enable/disable this debug tracing feature by executing
 | 
						Users can enable/disable this debug tracing feature by executing
 | 
				
			||||||
	the following command:
 | 
						the following command:
 | 
				
			||||||
	    # echo string > /sys/module/acpi/parameters/trace_state
 | 
						    # echo string > /sys/module/acpi/parameters/trace_state
 | 
				
			||||||
	Where "string" should be one of the followings:
 | 
						Where "string" should be one of the following:
 | 
				
			||||||
	"disable"
 | 
						"disable"
 | 
				
			||||||
	    Disable the method tracing feature.
 | 
						    Disable the method tracing feature.
 | 
				
			||||||
	"enable"
 | 
						"enable"
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -81,7 +81,7 @@ That defines some categories of errors:
 | 
				
			||||||
  still run, eventually replacing the affected hardware by a hot spare,
 | 
					  still run, eventually replacing the affected hardware by a hot spare,
 | 
				
			||||||
  if available.
 | 
					  if available.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  Also, when an error happens on an userspace process, it is also possible to
 | 
					  Also, when an error happens on a userspace process, it is also possible to
 | 
				
			||||||
  kill such process and let userspace restart it.
 | 
					  kill such process and let userspace restart it.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
The mechanism for handling non-fatal errors is usually complex and may
 | 
					The mechanism for handling non-fatal errors is usually complex and may
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -17,7 +17,7 @@ driver and currently works well under standard IDE subsystem. Actually it's
 | 
				
			||||||
one chip SSD. IO mode is ATA-like custom mode for the host that doesn't have
 | 
					one chip SSD. IO mode is ATA-like custom mode for the host that doesn't have
 | 
				
			||||||
IDE interface.
 | 
					IDE interface.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
Followings are brief descriptions about IO mode.
 | 
					Following are brief descriptions about IO mode.
 | 
				
			||||||
A. IO mode based on ATA protocol and uses some custom command. (read confirm,
 | 
					A. IO mode based on ATA protocol and uses some custom command. (read confirm,
 | 
				
			||||||
write confirm)
 | 
					write confirm)
 | 
				
			||||||
B. IO mode uses SRAM bus interface.
 | 
					B. IO mode uses SRAM bus interface.
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -319,7 +319,7 @@ Version History
 | 
				
			||||||
1.5.2   'mismatch_cnt' is zero unless [last_]sync_action is "check".
 | 
					1.5.2   'mismatch_cnt' is zero unless [last_]sync_action is "check".
 | 
				
			||||||
1.6.0   Add discard support (and devices_handle_discard_safely module param).
 | 
					1.6.0   Add discard support (and devices_handle_discard_safely module param).
 | 
				
			||||||
1.7.0   Add support for MD RAID0 mappings.
 | 
					1.7.0   Add support for MD RAID0 mappings.
 | 
				
			||||||
1.8.0   Explictely check for compatible flags in the superblock metadata
 | 
					1.8.0   Explicitly check for compatible flags in the superblock metadata
 | 
				
			||||||
	and reject to start the raid set if any are set by a newer
 | 
						and reject to start the raid set if any are set by a newer
 | 
				
			||||||
	target version, thus avoiding data corruption on a raid set
 | 
						target version, thus avoiding data corruption on a raid set
 | 
				
			||||||
	with a reshape in progress.
 | 
						with a reshape in progress.
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -234,7 +234,7 @@ see regulator.txt - with additional custom properties described below:
 | 
				
			||||||
- qcom,switch-mode-frequency:
 | 
					- qcom,switch-mode-frequency:
 | 
				
			||||||
	Usage: required
 | 
						Usage: required
 | 
				
			||||||
	Value type: <u32>
 | 
						Value type: <u32>
 | 
				
			||||||
	Definition: Frequency (Hz) of the swith mode power supply;
 | 
						Definition: Frequency (Hz) of the switch mode power supply;
 | 
				
			||||||
		    must be one of:
 | 
							    must be one of:
 | 
				
			||||||
		    19200000, 9600000, 6400000, 4800000, 3840000, 3200000,
 | 
							    19200000, 9600000, 6400000, 4800000, 3840000, 3200000,
 | 
				
			||||||
		    2740000, 2400000, 2130000, 1920000, 1750000, 1600000,
 | 
							    2740000, 2400000, 2130000, 1920000, 1750000, 1600000,
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -1,7 +1,7 @@
 | 
				
			||||||
* Marvell Armada 370 / Armada XP / Armada 3700 Ethernet Controller (NETA)
 | 
					* Marvell Armada 370 / Armada XP / Armada 3700 Ethernet Controller (NETA)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
Required properties:
 | 
					Required properties:
 | 
				
			||||||
- compatible: could be one of the followings
 | 
					- compatible: could be one of the following:
 | 
				
			||||||
	"marvell,armada-370-neta"
 | 
						"marvell,armada-370-neta"
 | 
				
			||||||
	"marvell,armada-xp-neta"
 | 
						"marvell,armada-xp-neta"
 | 
				
			||||||
	"marvell,armada-3700-neta"
 | 
						"marvell,armada-3700-neta"
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -136,7 +136,7 @@ Optional properties:
 | 
				
			||||||
  larger OPP table, based on what version of the hardware we are running on. We
 | 
					  larger OPP table, based on what version of the hardware we are running on. We
 | 
				
			||||||
  still can't have multiple nodes with the same opp-hz value in OPP table.
 | 
					  still can't have multiple nodes with the same opp-hz value in OPP table.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  It's an user defined array containing a hierarchy of hardware version numbers,
 | 
					  It's a user defined array containing a hierarchy of hardware version numbers,
 | 
				
			||||||
  supported by the OPP. For example: a platform with hierarchy of three levels
 | 
					  supported by the OPP. For example: a platform with hierarchy of three levels
 | 
				
			||||||
  of versions (A, B and C), this field should be like <X Y Z>, where X
 | 
					  of versions (A, B and C), this field should be like <X Y Z>, where X
 | 
				
			||||||
  corresponds to Version hierarchy A, Y corresponds to version hierarchy B and Z
 | 
					  corresponds to Version hierarchy A, Y corresponds to version hierarchy B and Z
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -6,7 +6,7 @@ the first two functions being GPIO in and out. The configuration on
 | 
				
			||||||
the pins includes drive strength and pull-up.
 | 
					the pins includes drive strength and pull-up.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
Required properties:
 | 
					Required properties:
 | 
				
			||||||
- compatible: Should be one of the followings (depending on you SoC):
 | 
					- compatible: Should be one of the following (depending on your SoC):
 | 
				
			||||||
  "allwinner,sun4i-a10-pinctrl"
 | 
					  "allwinner,sun4i-a10-pinctrl"
 | 
				
			||||||
  "allwinner,sun5i-a10s-pinctrl"
 | 
					  "allwinner,sun5i-a10s-pinctrl"
 | 
				
			||||||
  "allwinner,sun5i-a13-pinctrl"
 | 
					  "allwinner,sun5i-a13-pinctrl"
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -23,7 +23,7 @@ Optional Properties:
 | 
				
			||||||
- clock-names: The following clocks can be specified:
 | 
					- clock-names: The following clocks can be specified:
 | 
				
			||||||
	- oscclk: Oscillator clock.
 | 
						- oscclk: Oscillator clock.
 | 
				
			||||||
	- clkN: Input clocks to the devices in this power domain. These clocks
 | 
						- clkN: Input clocks to the devices in this power domain. These clocks
 | 
				
			||||||
		will be reparented to oscclk before swithing power domain off.
 | 
							will be reparented to oscclk before switching power domain off.
 | 
				
			||||||
		Their original parent will be brought back after turning on
 | 
							Their original parent will be brought back after turning on
 | 
				
			||||||
		the domain. Maximum of 4 clocks (N = 0 to 3) are supported.
 | 
							the domain. Maximum of 4 clocks (N = 0 to 3) are supported.
 | 
				
			||||||
	- asbN: Clocks required by asynchronous bridges (ASB) present in
 | 
						- asbN: Clocks required by asynchronous bridges (ASB) present in
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -10,7 +10,7 @@ From RK3368 SoCs, the GRF is divided into two sections,
 | 
				
			||||||
 | 
					
 | 
				
			||||||
Required Properties:
 | 
					Required Properties:
 | 
				
			||||||
 | 
					
 | 
				
			||||||
- compatible: GRF should be one of the followings
 | 
					- compatible: GRF should be one of the following:
 | 
				
			||||||
   - "rockchip,rk3036-grf", "syscon": for rk3036
 | 
					   - "rockchip,rk3036-grf", "syscon": for rk3036
 | 
				
			||||||
   - "rockchip,rk3066-grf", "syscon": for rk3066
 | 
					   - "rockchip,rk3066-grf", "syscon": for rk3066
 | 
				
			||||||
   - "rockchip,rk3188-grf", "syscon": for rk3188
 | 
					   - "rockchip,rk3188-grf", "syscon": for rk3188
 | 
				
			||||||
| 
						 | 
					@ -18,7 +18,7 @@ Required Properties:
 | 
				
			||||||
   - "rockchip,rk3288-grf", "syscon": for rk3288
 | 
					   - "rockchip,rk3288-grf", "syscon": for rk3288
 | 
				
			||||||
   - "rockchip,rk3368-grf", "syscon": for rk3368
 | 
					   - "rockchip,rk3368-grf", "syscon": for rk3368
 | 
				
			||||||
   - "rockchip,rk3399-grf", "syscon": for rk3399
 | 
					   - "rockchip,rk3399-grf", "syscon": for rk3399
 | 
				
			||||||
- compatible: PMUGRF should be one of the followings
 | 
					- compatible: PMUGRF should be one of the following:
 | 
				
			||||||
   - "rockchip,rk3368-pmugrf", "syscon": for rk3368
 | 
					   - "rockchip,rk3368-pmugrf", "syscon": for rk3368
 | 
				
			||||||
   - "rockchip,rk3399-pmugrf", "syscon": for rk3399
 | 
					   - "rockchip,rk3399-pmugrf", "syscon": for rk3399
 | 
				
			||||||
- compatible: SGRF should be one of the following
 | 
					- compatible: SGRF should be one of the following
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -5,7 +5,7 @@ audio data transfer between devices in the system.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
Required properties:
 | 
					Required properties:
 | 
				
			||||||
 | 
					
 | 
				
			||||||
- compatible: should be one of the followings
 | 
					- compatible: should be one of the following:
 | 
				
			||||||
   - "rockchip,rk3066-i2s": for rk3066
 | 
					   - "rockchip,rk3066-i2s": for rk3066
 | 
				
			||||||
   - "rockchip,rk3188-i2s", "rockchip,rk3066-i2s": for rk3188
 | 
					   - "rockchip,rk3188-i2s", "rockchip,rk3066-i2s": for rk3188
 | 
				
			||||||
   - "rockchip,rk3288-i2s", "rockchip,rk3066-i2s": for rk3288
 | 
					   - "rockchip,rk3288-i2s", "rockchip,rk3066-i2s": for rk3288
 | 
				
			||||||
| 
						 | 
					@ -17,7 +17,7 @@ Required properties:
 | 
				
			||||||
	Documentation/devicetree/bindings/dma/dma.txt
 | 
						Documentation/devicetree/bindings/dma/dma.txt
 | 
				
			||||||
- dma-names: should include "tx" and "rx".
 | 
					- dma-names: should include "tx" and "rx".
 | 
				
			||||||
- clocks: a list of phandle + clock-specifer pairs, one for each entry in clock-names.
 | 
					- clocks: a list of phandle + clock-specifer pairs, one for each entry in clock-names.
 | 
				
			||||||
- clock-names: should contain followings:
 | 
					- clock-names: should contain the following:
 | 
				
			||||||
   - "i2s_hclk": clock for I2S BUS
 | 
					   - "i2s_hclk": clock for I2S BUS
 | 
				
			||||||
   - "i2s_clk" : clock for I2S controller
 | 
					   - "i2s_clk" : clock for I2S controller
 | 
				
			||||||
- rockchip,playback-channels: max playback channels, if not set, 8 channels default.
 | 
					- rockchip,playback-channels: max playback channels, if not set, 8 channels default.
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -14,7 +14,7 @@ Required properties:
 | 
				
			||||||
- dma-names: should include "tx" and "rx".
 | 
					- dma-names: should include "tx" and "rx".
 | 
				
			||||||
- clocks: a list of phandle + clock-specifer pairs, one for each entry
 | 
					- clocks: a list of phandle + clock-specifer pairs, one for each entry
 | 
				
			||||||
  in clock-names.
 | 
					  in clock-names.
 | 
				
			||||||
- clock-names: should contain followings:
 | 
					- clock-names: should contain the following:
 | 
				
			||||||
   - "apb": the parent APB clock for this controller
 | 
					   - "apb": the parent APB clock for this controller
 | 
				
			||||||
   - "codec": the parent module clock
 | 
					   - "codec": the parent module clock
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -5,7 +5,7 @@ audio data transfer between devices in the system.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
Required properties:
 | 
					Required properties:
 | 
				
			||||||
 | 
					
 | 
				
			||||||
- compatible: should be one of the followings
 | 
					- compatible: should be one of the following:
 | 
				
			||||||
   - "allwinner,sun4i-a10-i2s"
 | 
					   - "allwinner,sun4i-a10-i2s"
 | 
				
			||||||
   - "allwinner,sun6i-a31-i2s"
 | 
					   - "allwinner,sun6i-a31-i2s"
 | 
				
			||||||
- reg: physical base address of the controller and length of memory mapped
 | 
					- reg: physical base address of the controller and length of memory mapped
 | 
				
			||||||
| 
						 | 
					@ -15,7 +15,7 @@ Required properties:
 | 
				
			||||||
	Documentation/devicetree/bindings/dma/dma.txt
 | 
						Documentation/devicetree/bindings/dma/dma.txt
 | 
				
			||||||
- dma-names: should include "tx" and "rx".
 | 
					- dma-names: should include "tx" and "rx".
 | 
				
			||||||
- clocks: a list of phandle + clock-specifer pairs, one for each entry in clock-names.
 | 
					- clocks: a list of phandle + clock-specifer pairs, one for each entry in clock-names.
 | 
				
			||||||
- clock-names: should contain followings:
 | 
					- clock-names: should contain the following:
 | 
				
			||||||
   - "apb" : clock for the I2S bus interface
 | 
					   - "apb" : clock for the I2S bus interface
 | 
				
			||||||
   - "mod" : module clock for the I2S controller
 | 
					   - "mod" : module clock for the I2S controller
 | 
				
			||||||
- #sound-dai-cells : Must be equal to 0
 | 
					- #sound-dai-cells : Must be equal to 0
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -179,6 +179,7 @@ struct autofs_dev_ioctl {
 | 
				
			||||||
				 * including this struct */
 | 
									 * including this struct */
 | 
				
			||||||
	__s32 ioctlfd;          /* automount command fd */
 | 
						__s32 ioctlfd;          /* automount command fd */
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						/* Command parameters */
 | 
				
			||||||
	union {
 | 
						union {
 | 
				
			||||||
		struct args_protover		protover;
 | 
							struct args_protover		protover;
 | 
				
			||||||
		struct args_protosubver		protosubver;
 | 
							struct args_protosubver		protosubver;
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -425,8 +425,20 @@ Each ioctl is passed a pointer to an `autofs_dev_ioctl` structure:
 | 
				
			||||||
                                         * including this struct */
 | 
					                                         * including this struct */
 | 
				
			||||||
                __s32 ioctlfd;          /* automount command fd */
 | 
					                __s32 ioctlfd;          /* automount command fd */
 | 
				
			||||||
 | 
					
 | 
				
			||||||
                __u32 arg1;             /* Command parameters */
 | 
							/* Command parameters */
 | 
				
			||||||
                __u32 arg2;
 | 
							union {
 | 
				
			||||||
 | 
								struct args_protover		protover;
 | 
				
			||||||
 | 
								struct args_protosubver		protosubver;
 | 
				
			||||||
 | 
								struct args_openmount		openmount;
 | 
				
			||||||
 | 
								struct args_ready		ready;
 | 
				
			||||||
 | 
								struct args_fail		fail;
 | 
				
			||||||
 | 
								struct args_setpipefd		setpipefd;
 | 
				
			||||||
 | 
								struct args_timeout		timeout;
 | 
				
			||||||
 | 
								struct args_requester		requester;
 | 
				
			||||||
 | 
								struct args_expire		expire;
 | 
				
			||||||
 | 
								struct args_askumount		askumount;
 | 
				
			||||||
 | 
								struct args_ismountpoint	ismountpoint;
 | 
				
			||||||
 | 
							};
 | 
				
			||||||
 | 
					
 | 
				
			||||||
                char path[0];
 | 
					                char path[0];
 | 
				
			||||||
        };
 | 
					        };
 | 
				
			||||||
| 
						 | 
					@ -446,25 +458,22 @@ Commands are:
 | 
				
			||||||
    set version numbers.
 | 
					    set version numbers.
 | 
				
			||||||
- **AUTOFS_DEV_IOCTL_OPENMOUNT_CMD**: return an open file descriptor
 | 
					- **AUTOFS_DEV_IOCTL_OPENMOUNT_CMD**: return an open file descriptor
 | 
				
			||||||
    on the root of an autofs filesystem.  The filesystem is identified
 | 
					    on the root of an autofs filesystem.  The filesystem is identified
 | 
				
			||||||
    by name and device number, which is stored in `arg1`.  Device
 | 
					    by name and device number, which is stored in `openmount.devid`.
 | 
				
			||||||
    numbers for existing filesystems can be found in
 | 
					    Device numbers for existing filesystems can be found in
 | 
				
			||||||
    `/proc/self/mountinfo`.
 | 
					    `/proc/self/mountinfo`.
 | 
				
			||||||
- **AUTOFS_DEV_IOCTL_CLOSEMOUNT_CMD**: same as `close(ioctlfd)`.
 | 
					- **AUTOFS_DEV_IOCTL_CLOSEMOUNT_CMD**: same as `close(ioctlfd)`.
 | 
				
			||||||
- **AUTOFS_DEV_IOCTL_SETPIPEFD_CMD**: if the filesystem is in
 | 
					- **AUTOFS_DEV_IOCTL_SETPIPEFD_CMD**: if the filesystem is in
 | 
				
			||||||
    catatonic mode, this can provide the write end of a new pipe
 | 
					    catatonic mode, this can provide the write end of a new pipe
 | 
				
			||||||
    in `arg1` to re-establish communication with a daemon.  The
 | 
					    in `setpipefd.pipefd` to re-establish communication with a daemon.
 | 
				
			||||||
    process group of the calling process is used to identify the
 | 
					    The process group of the calling process is used to identify the
 | 
				
			||||||
    daemon.
 | 
					    daemon.
 | 
				
			||||||
- **AUTOFS_DEV_IOCTL_REQUESTER_CMD**: `path` should be a
 | 
					- **AUTOFS_DEV_IOCTL_REQUESTER_CMD**: `path` should be a
 | 
				
			||||||
    name within the filesystem that has been auto-mounted on.
 | 
					    name within the filesystem that has been auto-mounted on.
 | 
				
			||||||
    arg1 is the dev number of the underlying autofs.  On successful
 | 
					    On successful return, `requester.uid` and `requester.gid` will be
 | 
				
			||||||
    return, `arg1` and `arg2` will be the UID and GID of the process
 | 
					    the UID and GID of the process which triggered that mount.
 | 
				
			||||||
    which triggered that mount.
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
- **AUTOFS_DEV_IOCTL_ISMOUNTPOINT_CMD**: Check if path is a
 | 
					- **AUTOFS_DEV_IOCTL_ISMOUNTPOINT_CMD**: Check if path is a
 | 
				
			||||||
    mountpoint of a particular type - see separate documentation for
 | 
					    mountpoint of a particular type - see separate documentation for
 | 
				
			||||||
    details.
 | 
					    details.
 | 
				
			||||||
 | 
					 | 
				
			||||||
- **AUTOFS_DEV_IOCTL_PROTOVER_CMD**:
 | 
					- **AUTOFS_DEV_IOCTL_PROTOVER_CMD**:
 | 
				
			||||||
- **AUTOFS_DEV_IOCTL_PROTOSUBVER_CMD**:
 | 
					- **AUTOFS_DEV_IOCTL_PROTOSUBVER_CMD**:
 | 
				
			||||||
- **AUTOFS_DEV_IOCTL_READY_CMD**:
 | 
					- **AUTOFS_DEV_IOCTL_READY_CMD**:
 | 
				
			||||||
| 
						 | 
					@ -474,7 +483,7 @@ Commands are:
 | 
				
			||||||
- **AUTOFS_DEV_IOCTL_EXPIRE_CMD**:
 | 
					- **AUTOFS_DEV_IOCTL_EXPIRE_CMD**:
 | 
				
			||||||
- **AUTOFS_DEV_IOCTL_ASKUMOUNT_CMD**:  These all have the same
 | 
					- **AUTOFS_DEV_IOCTL_ASKUMOUNT_CMD**:  These all have the same
 | 
				
			||||||
    function as the similarly named **AUTOFS_IOC** ioctls, except
 | 
					    function as the similarly named **AUTOFS_IOC** ioctls, except
 | 
				
			||||||
    that **FAIL** can be given an explicit error number in `arg1`
 | 
					    that **FAIL** can be given an explicit error number in `fail.status`
 | 
				
			||||||
    instead of assuming `ENOENT`, and this **EXPIRE** command
 | 
					    instead of assuming `ENOENT`, and this **EXPIRE** command
 | 
				
			||||||
    corresponds to **AUTOFS_IOC_EXPIRE_MULTI**.
 | 
					    corresponds to **AUTOFS_IOC_EXPIRE_MULTI**.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					@ -512,7 +521,7 @@ always be mounted "shared". e.g.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
> `mount --make-shared /autofs/mount/point`
 | 
					> `mount --make-shared /autofs/mount/point`
 | 
				
			||||||
 | 
					
 | 
				
			||||||
The automount daemon is only able to mange a single mount location for
 | 
					The automount daemon is only able to manage a single mount location for
 | 
				
			||||||
an autofs filesystem and if mounts on that are not 'shared', other
 | 
					an autofs filesystem and if mounts on that are not 'shared', other
 | 
				
			||||||
locations will not behave as expected.  In particular access to those
 | 
					locations will not behave as expected.  In particular access to those
 | 
				
			||||||
other locations will likely result in the `ELOOP` error
 | 
					other locations will likely result in the `ELOOP` error
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -6,7 +6,7 @@ Quota subsystem allows system administrator to set limits on used space and
 | 
				
			||||||
number of used inodes (inode is a filesystem structure which is associated with
 | 
					number of used inodes (inode is a filesystem structure which is associated with
 | 
				
			||||||
each file or directory) for users and/or groups. For both used space and number
 | 
					each file or directory) for users and/or groups. For both used space and number
 | 
				
			||||||
of used inodes there are actually two limits. The first one is called softlimit
 | 
					of used inodes there are actually two limits. The first one is called softlimit
 | 
				
			||||||
and the second one hardlimit.  An user can never exceed a hardlimit for any
 | 
					and the second one hardlimit.  A user can never exceed a hardlimit for any
 | 
				
			||||||
resource (unless he has CAP_SYS_RESOURCE capability). User is allowed to exceed
 | 
					resource (unless he has CAP_SYS_RESOURCE capability). User is allowed to exceed
 | 
				
			||||||
softlimit but only for limited period of time. This period is called "grace
 | 
					softlimit but only for limited period of time. This period is called "grace
 | 
				
			||||||
period" or "grace time". When grace time is over, user is not able to allocate
 | 
					period" or "grace time". When grace time is over, user is not able to allocate
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -59,14 +59,14 @@ Install selftests
 | 
				
			||||||
=================
 | 
					=================
 | 
				
			||||||
 | 
					
 | 
				
			||||||
You can use kselftest_install.sh tool installs selftests in default
 | 
					You can use kselftest_install.sh tool installs selftests in default
 | 
				
			||||||
location which is tools/testing/selftests/kselftest or an user specified
 | 
					location which is tools/testing/selftests/kselftest or a user specified
 | 
				
			||||||
location.
 | 
					location.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
To install selftests in default location:
 | 
					To install selftests in default location:
 | 
				
			||||||
   $ cd tools/testing/selftests
 | 
					   $ cd tools/testing/selftests
 | 
				
			||||||
   $ ./kselftest_install.sh
 | 
					   $ ./kselftest_install.sh
 | 
				
			||||||
 | 
					
 | 
				
			||||||
To install selftests in an user specified location:
 | 
					To install selftests in a user specified location:
 | 
				
			||||||
   $ cd tools/testing/selftests
 | 
					   $ cd tools/testing/selftests
 | 
				
			||||||
   $ ./kselftest_install.sh install_dir
 | 
					   $ ./kselftest_install.sh install_dir
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -20,7 +20,7 @@ existing low level CI API.
 | 
				
			||||||
ca_zap
 | 
					ca_zap
 | 
				
			||||||
~~~~~~
 | 
					~~~~~~
 | 
				
			||||||
 | 
					
 | 
				
			||||||
An userspace application, like ``ca_zap`` is required to handle encrypted
 | 
					A userspace application, like ``ca_zap`` is required to handle encrypted
 | 
				
			||||||
MPEG-TS streams.
 | 
					MPEG-TS streams.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
The ``ca_zap`` userland application is in charge of sending the
 | 
					The ``ca_zap`` userland application is in charge of sending the
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -9,7 +9,7 @@ frontend parameters
 | 
				
			||||||
The kind of parameters passed to the frontend device for tuning depend
 | 
					The kind of parameters passed to the frontend device for tuning depend
 | 
				
			||||||
on the kind of hardware you are using.
 | 
					on the kind of hardware you are using.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
The struct ``dvb_frontend_parameters`` uses an union with specific
 | 
					The struct ``dvb_frontend_parameters`` uses a union with specific
 | 
				
			||||||
per-system parameters. However, as newer delivery systems required more
 | 
					per-system parameters. However, as newer delivery systems required more
 | 
				
			||||||
data, the structure size weren't enough to fit, and just extending its
 | 
					data, the structure size weren't enough to fit, and just extending its
 | 
				
			||||||
size would break the existing applications. So, those parameters were
 | 
					size would break the existing applications. So, those parameters were
 | 
				
			||||||
| 
						 | 
					@ -23,7 +23,7 @@ So, newer applications should use
 | 
				
			||||||
instead, in order to be able to support the newer System Delivery like
 | 
					instead, in order to be able to support the newer System Delivery like
 | 
				
			||||||
DVB-S2, DVB-T2, DVB-C2, ISDB, etc.
 | 
					DVB-S2, DVB-T2, DVB-C2, ISDB, etc.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
All kinds of parameters are combined as an union in the
 | 
					All kinds of parameters are combined as a union in the
 | 
				
			||||||
FrontendParameters structure:
 | 
					FrontendParameters structure:
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -114,11 +114,11 @@ config options.
 | 
				
			||||||
    Memory model -> Sparse Memory  (CONFIG_SPARSEMEM)
 | 
					    Memory model -> Sparse Memory  (CONFIG_SPARSEMEM)
 | 
				
			||||||
    Allow for memory hot-add       (CONFIG_MEMORY_HOTPLUG)
 | 
					    Allow for memory hot-add       (CONFIG_MEMORY_HOTPLUG)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
- To enable memory removal, the followings are also necessary
 | 
					- To enable memory removal, the following are also necessary
 | 
				
			||||||
    Allow for memory hot remove    (CONFIG_MEMORY_HOTREMOVE)
 | 
					    Allow for memory hot remove    (CONFIG_MEMORY_HOTREMOVE)
 | 
				
			||||||
    Page Migration                 (CONFIG_MIGRATION)
 | 
					    Page Migration                 (CONFIG_MIGRATION)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
- For ACPI memory hotplug, the followings are also necessary
 | 
					- For ACPI memory hotplug, the following are also necessary
 | 
				
			||||||
    Memory hotplug (under ACPI Support menu) (CONFIG_ACPI_HOTPLUG_MEMORY)
 | 
					    Memory hotplug (under ACPI Support menu) (CONFIG_ACPI_HOTPLUG_MEMORY)
 | 
				
			||||||
    This option can be kernel module.
 | 
					    This option can be kernel module.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -38,7 +38,7 @@ Basic usage
 | 
				
			||||||
===========
 | 
					===========
 | 
				
			||||||
 | 
					
 | 
				
			||||||
MBIM functions are inactive when unmanaged. The cdc_mbim driver only
 | 
					MBIM functions are inactive when unmanaged. The cdc_mbim driver only
 | 
				
			||||||
provides an userspace interface to the MBIM control channel, and will
 | 
					provides a userspace interface to the MBIM control channel, and will
 | 
				
			||||||
not participate in the management of the function. This implies that a
 | 
					not participate in the management of the function. This implies that a
 | 
				
			||||||
userspace MBIM management application always is required to enable a
 | 
					userspace MBIM management application always is required to enable a
 | 
				
			||||||
MBIM function.
 | 
					MBIM function.
 | 
				
			||||||
| 
						 | 
					@ -200,7 +200,7 @@ structure described in section 10.5.29 of [1].
 | 
				
			||||||
The DSS VLAN subdevices are used as a practical interface between the
 | 
					The DSS VLAN subdevices are used as a practical interface between the
 | 
				
			||||||
shared MBIM data channel and a MBIM DSS aware userspace application.
 | 
					shared MBIM data channel and a MBIM DSS aware userspace application.
 | 
				
			||||||
It is not intended to be presented as-is to an end user. The
 | 
					It is not intended to be presented as-is to an end user. The
 | 
				
			||||||
assumption is that an userspace application initiating a DSS session
 | 
					assumption is that a userspace application initiating a DSS session
 | 
				
			||||||
also takes care of the necessary framing of the DSS data, presenting
 | 
					also takes care of the necessary framing of the DSS data, presenting
 | 
				
			||||||
the stream to the end user in an appropriate way for the stream type.
 | 
					the stream to the end user in an appropriate way for the stream type.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -549,7 +549,7 @@ ii.	Reduced by 1 max cmds sent to FW from Driver to make the reply_q_sz same
 | 
				
			||||||
3 Older Version   : 00.00.03.02
 | 
					3 Older Version   : 00.00.03.02
 | 
				
			||||||
 | 
					
 | 
				
			||||||
i.	Send stop adapter to FW & Dump pending FW cmds before declaring adapter dead.
 | 
					i.	Send stop adapter to FW & Dump pending FW cmds before declaring adapter dead.
 | 
				
			||||||
	New varible added to set dbg level.
 | 
						New variable added to set dbg level.
 | 
				
			||||||
ii.	Disable interrupt made as fn pointer as they are different for 1068 / 1078
 | 
					ii.	Disable interrupt made as fn pointer as they are different for 1068 / 1078
 | 
				
			||||||
iii.	Frame count optimization. Main frame can contain 2 SGE for 64 bit SGLs and
 | 
					iii.	Frame count optimization. Main frame can contain 2 SGE for 64 bit SGLs and
 | 
				
			||||||
	3 SGE for 32 bit SGL
 | 
						3 SGE for 32 bit SGL
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -697,7 +697,7 @@ If it's a regression, at best, send alsa-info outputs of both working
 | 
				
			||||||
and non-working kernels.  This is really helpful because we can
 | 
					and non-working kernels.  This is really helpful because we can
 | 
				
			||||||
compare the codec registers directly.
 | 
					compare the codec registers directly.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
Send a bug report either the followings:
 | 
					Send a bug report either the following:
 | 
				
			||||||
 | 
					
 | 
				
			||||||
kernel-bugzilla
 | 
					kernel-bugzilla
 | 
				
			||||||
    https://bugzilla.kernel.org/
 | 
					    https://bugzilla.kernel.org/
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -149,7 +149,7 @@ migration thread in the QEMU running in the destination node will
 | 
				
			||||||
receive the page that triggered the userfault and it'll map it as
 | 
					receive the page that triggered the userfault and it'll map it as
 | 
				
			||||||
usual with the UFFDIO_COPY|ZEROPAGE (without actually knowing if it
 | 
					usual with the UFFDIO_COPY|ZEROPAGE (without actually knowing if it
 | 
				
			||||||
was spontaneously sent by the source or if it was an urgent page
 | 
					was spontaneously sent by the source or if it was an urgent page
 | 
				
			||||||
requested through an userfault).
 | 
					requested through a userfault).
 | 
				
			||||||
 | 
					
 | 
				
			||||||
By the time the userfaults start, the QEMU in the destination node
 | 
					By the time the userfaults start, the QEMU in the destination node
 | 
				
			||||||
doesn't need to keep any per-page state bitmap relative to the live
 | 
					doesn't need to keep any per-page state bitmap relative to the live
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -7286,6 +7286,7 @@ M:	Masami Hiramatsu <mhiramat@kernel.org>
 | 
				
			||||||
S:	Maintained
 | 
					S:	Maintained
 | 
				
			||||||
F:	Documentation/kprobes.txt
 | 
					F:	Documentation/kprobes.txt
 | 
				
			||||||
F:	include/linux/kprobes.h
 | 
					F:	include/linux/kprobes.h
 | 
				
			||||||
 | 
					F:	include/asm-generic/kprobes.h
 | 
				
			||||||
F:	kernel/kprobes.c
 | 
					F:	kernel/kprobes.c
 | 
				
			||||||
 | 
					
 | 
				
			||||||
KS0108 LCD CONTROLLER DRIVER
 | 
					KS0108 LCD CONTROLLER DRIVER
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -29,7 +29,7 @@ config OPROFILE_EVENT_MULTIPLEX
 | 
				
			||||||
	  The number of hardware counters is limited. The multiplexing
 | 
						  The number of hardware counters is limited. The multiplexing
 | 
				
			||||||
	  feature enables OProfile to gather more events than counters
 | 
						  feature enables OProfile to gather more events than counters
 | 
				
			||||||
	  are provided by the hardware. This is realized by switching
 | 
						  are provided by the hardware. This is realized by switching
 | 
				
			||||||
	  between events at an user specified time interval.
 | 
						  between events at a user specified time interval.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	  If unsure, say N.
 | 
						  If unsure, say N.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -10,3 +10,4 @@ generic-y += preempt.h
 | 
				
			||||||
generic-y += sections.h
 | 
					generic-y += sections.h
 | 
				
			||||||
generic-y += trace_clock.h
 | 
					generic-y += trace_clock.h
 | 
				
			||||||
generic-y += current.h
 | 
					generic-y += current.h
 | 
				
			||||||
 | 
					generic-y += kprobes.h
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -144,7 +144,7 @@ smp_callin(void)
 | 
				
			||||||
		alpha_mv.smp_callin();
 | 
							alpha_mv.smp_callin();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	/* All kernel threads share the same mm context.  */
 | 
						/* All kernel threads share the same mm context.  */
 | 
				
			||||||
	atomic_inc(&init_mm.mm_count);
 | 
						mmgrab(&init_mm);
 | 
				
			||||||
	current->active_mm = &init_mm;
 | 
						current->active_mm = &init_mm;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	/* inform the notifiers about the new cpu */
 | 
						/* inform the notifiers about the new cpu */
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -9,6 +9,8 @@
 | 
				
			||||||
#ifndef _ARC_KPROBES_H
 | 
					#ifndef _ARC_KPROBES_H
 | 
				
			||||||
#define _ARC_KPROBES_H
 | 
					#define _ARC_KPROBES_H
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#include <asm-generic/kprobes.h>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#ifdef CONFIG_KPROBES
 | 
					#ifdef CONFIG_KPROBES
 | 
				
			||||||
 | 
					
 | 
				
			||||||
typedef u16 kprobe_opcode_t;
 | 
					typedef u16 kprobe_opcode_t;
 | 
				
			||||||
| 
						 | 
					@ -55,6 +57,6 @@ void trap_is_kprobe(unsigned long address, struct pt_regs *regs);
 | 
				
			||||||
static void trap_is_kprobe(unsigned long address, struct pt_regs *regs)
 | 
					static void trap_is_kprobe(unsigned long address, struct pt_regs *regs)
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
#endif
 | 
					#endif /* CONFIG_KPROBES */
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#endif
 | 
					#endif /* _ARC_KPROBES_H */
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -139,8 +139,8 @@ void start_kernel_secondary(void)
 | 
				
			||||||
	/* MMU, Caches, Vector Table, Interrupts etc */
 | 
						/* MMU, Caches, Vector Table, Interrupts etc */
 | 
				
			||||||
	setup_processor();
 | 
						setup_processor();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	atomic_inc(&mm->mm_users);
 | 
						mmget(mm);
 | 
				
			||||||
	atomic_inc(&mm->mm_count);
 | 
						mmgrab(mm);
 | 
				
			||||||
	current->active_mm = mm;
 | 
						current->active_mm = mm;
 | 
				
			||||||
	cpumask_set_cpu(cpu, mm_cpumask(mm));
 | 
						cpumask_set_cpu(cpu, mm_cpumask(mm));
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -1051,9 +1051,9 @@ int arc_unwind(struct unwind_frame_info *frame)
 | 
				
			||||||
		++ptr;
 | 
							++ptr;
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
	if (cie != NULL) {
 | 
						if (cie != NULL) {
 | 
				
			||||||
		/* get code aligment factor */
 | 
							/* get code alignment factor */
 | 
				
			||||||
		state.codeAlign = get_uleb128(&ptr, end);
 | 
							state.codeAlign = get_uleb128(&ptr, end);
 | 
				
			||||||
		/* get data aligment factor */
 | 
							/* get data alignment factor */
 | 
				
			||||||
		state.dataAlign = get_sleb128(&ptr, end);
 | 
							state.dataAlign = get_sleb128(&ptr, end);
 | 
				
			||||||
		if (state.codeAlign == 0 || state.dataAlign == 0 || ptr >= end)
 | 
							if (state.codeAlign == 0 || state.dataAlign == 0 || ptr >= end)
 | 
				
			||||||
			cie = NULL;
 | 
								cie = NULL;
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -1196,7 +1196,7 @@ skip:
 | 
				
			||||||
		bgt	loop1
 | 
							bgt	loop1
 | 
				
			||||||
finished:
 | 
					finished:
 | 
				
			||||||
		ldmfd	sp!, {r0-r7, r9-r11}
 | 
							ldmfd	sp!, {r0-r7, r9-r11}
 | 
				
			||||||
		mov	r10, #0			@ swith back to cache level 0
 | 
							mov	r10, #0			@ switch back to cache level 0
 | 
				
			||||||
		mcr	p15, 2, r10, c0, c0, 0	@ select current cache level in cssr
 | 
							mcr	p15, 2, r10, c0, c0, 0	@ select current cache level in cssr
 | 
				
			||||||
iflush:
 | 
					iflush:
 | 
				
			||||||
		mcr	p15, 0, r10, c7, c10, 4	@ DSB
 | 
							mcr	p15, 0, r10, c7, c10, 4	@ DSB
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -16,6 +16,9 @@
 | 
				
			||||||
#ifndef _ARM_KPROBES_H
 | 
					#ifndef _ARM_KPROBES_H
 | 
				
			||||||
#define _ARM_KPROBES_H
 | 
					#define _ARM_KPROBES_H
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#include <asm-generic/kprobes.h>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#ifdef CONFIG_KPROBES
 | 
				
			||||||
#include <linux/types.h>
 | 
					#include <linux/types.h>
 | 
				
			||||||
#include <linux/ptrace.h>
 | 
					#include <linux/ptrace.h>
 | 
				
			||||||
#include <linux/notifier.h>
 | 
					#include <linux/notifier.h>
 | 
				
			||||||
| 
						 | 
					@ -83,4 +86,5 @@ struct arch_optimized_insn {
 | 
				
			||||||
	 */
 | 
						 */
 | 
				
			||||||
};
 | 
					};
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#endif /* CONFIG_KPROBES */
 | 
				
			||||||
#endif /* _ARM_KPROBES_H */
 | 
					#endif /* _ARM_KPROBES_H */
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -22,7 +22,7 @@ struct mtd_info;
 | 
				
			||||||
 * set_vpp:	method called to enable or disable VPP
 | 
					 * set_vpp:	method called to enable or disable VPP
 | 
				
			||||||
 * mmcontrol:	method called to enable or disable Sync. Burst Read in OneNAND
 | 
					 * mmcontrol:	method called to enable or disable Sync. Burst Read in OneNAND
 | 
				
			||||||
 * parts:	optional array of mtd_partitions for static partitioning
 | 
					 * parts:	optional array of mtd_partitions for static partitioning
 | 
				
			||||||
 * nr_parts:	number of mtd_partitions for static partitoning
 | 
					 * nr_parts:	number of mtd_partitions for static partitioning
 | 
				
			||||||
 */
 | 
					 */
 | 
				
			||||||
struct flash_platform_data {
 | 
					struct flash_platform_data {
 | 
				
			||||||
	const char	*map_name;
 | 
						const char	*map_name;
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -371,7 +371,7 @@ asmlinkage void secondary_start_kernel(void)
 | 
				
			||||||
	 * reference and switch to it.
 | 
						 * reference and switch to it.
 | 
				
			||||||
	 */
 | 
						 */
 | 
				
			||||||
	cpu = smp_processor_id();
 | 
						cpu = smp_processor_id();
 | 
				
			||||||
	atomic_inc(&mm->mm_count);
 | 
						mmgrab(mm);
 | 
				
			||||||
	current->active_mm = mm;
 | 
						current->active_mm = mm;
 | 
				
			||||||
	cpumask_set_cpu(cpu, mm_cpumask(mm));
 | 
						cpumask_set_cpu(cpu, mm_cpumask(mm));
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -1,5 +1,5 @@
 | 
				
			||||||
/**
 | 
					/**
 | 
				
			||||||
 * OMAP and TWL PMIC specific intializations.
 | 
					 * OMAP and TWL PMIC specific initializations.
 | 
				
			||||||
 *
 | 
					 *
 | 
				
			||||||
 * Copyright (C) 2010 Texas Instruments Incorporated.
 | 
					 * Copyright (C) 2010 Texas Instruments Incorporated.
 | 
				
			||||||
 * Thara Gopinath
 | 
					 * Thara Gopinath
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -164,7 +164,7 @@ skip:
 | 
				
			||||||
	cmp	r3, r10
 | 
						cmp	r3, r10
 | 
				
			||||||
	bgt	flush_levels
 | 
						bgt	flush_levels
 | 
				
			||||||
finished:
 | 
					finished:
 | 
				
			||||||
	mov	r10, #0				@ swith back to cache level 0
 | 
						mov	r10, #0				@ switch back to cache level 0
 | 
				
			||||||
	mcr	p15, 2, r10, c0, c0, 0		@ select current cache level in cssr
 | 
						mcr	p15, 2, r10, c0, c0, 0		@ select current cache level in cssr
 | 
				
			||||||
	dsb	st
 | 
						dsb	st
 | 
				
			||||||
	isb
 | 
						isb
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -217,7 +217,7 @@ skip:
 | 
				
			||||||
	cmp	r3, r10
 | 
						cmp	r3, r10
 | 
				
			||||||
	bgt	flush_levels
 | 
						bgt	flush_levels
 | 
				
			||||||
finished:
 | 
					finished:
 | 
				
			||||||
	mov	r10, #0				@ swith back to cache level 0
 | 
						mov	r10, #0				@ switch back to cache level 0
 | 
				
			||||||
	write_csselr r10, r3			@ select current cache level in cssr
 | 
						write_csselr r10, r3			@ select current cache level in cssr
 | 
				
			||||||
	dsb	st
 | 
						dsb	st
 | 
				
			||||||
	isb
 | 
						isb
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -22,6 +22,7 @@
 | 
				
			||||||
#include <linux/types.h>
 | 
					#include <linux/types.h>
 | 
				
			||||||
#include <linux/stddef.h>
 | 
					#include <linux/stddef.h>
 | 
				
			||||||
#include <asm/probes.h>
 | 
					#include <asm/probes.h>
 | 
				
			||||||
 | 
					#include <asm/kprobes.h>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
void __init arm_probes_decode_init(void);
 | 
					void __init arm_probes_decode_init(void);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -16,6 +16,9 @@
 | 
				
			||||||
#ifndef _ARM_KPROBES_H
 | 
					#ifndef _ARM_KPROBES_H
 | 
				
			||||||
#define _ARM_KPROBES_H
 | 
					#define _ARM_KPROBES_H
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#include <asm-generic/kprobes.h>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#ifdef CONFIG_KPROBES
 | 
				
			||||||
#include <linux/types.h>
 | 
					#include <linux/types.h>
 | 
				
			||||||
#include <linux/ptrace.h>
 | 
					#include <linux/ptrace.h>
 | 
				
			||||||
#include <linux/percpu.h>
 | 
					#include <linux/percpu.h>
 | 
				
			||||||
| 
						 | 
					@ -57,4 +60,5 @@ int kprobe_single_step_handler(struct pt_regs *regs, unsigned int esr);
 | 
				
			||||||
void kretprobe_trampoline(void);
 | 
					void kretprobe_trampoline(void);
 | 
				
			||||||
void __kprobes *trampoline_probe_handler(struct pt_regs *regs);
 | 
					void __kprobes *trampoline_probe_handler(struct pt_regs *regs);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#endif /* CONFIG_KPROBES */
 | 
				
			||||||
#endif /* _ARM_KPROBES_H */
 | 
					#endif /* _ARM_KPROBES_H */
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -19,6 +19,7 @@
 | 
				
			||||||
#include <asm/sysreg.h>
 | 
					#include <asm/sysreg.h>
 | 
				
			||||||
#include <asm/system_misc.h>
 | 
					#include <asm/system_misc.h>
 | 
				
			||||||
#include <asm/traps.h>
 | 
					#include <asm/traps.h>
 | 
				
			||||||
 | 
					#include <asm/kprobes.h>
 | 
				
			||||||
#include <linux/uaccess.h>
 | 
					#include <linux/uaccess.h>
 | 
				
			||||||
#include <asm/cpufeature.h>
 | 
					#include <asm/cpufeature.h>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -31,6 +31,7 @@
 | 
				
			||||||
#include <asm/debug-monitors.h>
 | 
					#include <asm/debug-monitors.h>
 | 
				
			||||||
#include <asm/fixmap.h>
 | 
					#include <asm/fixmap.h>
 | 
				
			||||||
#include <asm/insn.h>
 | 
					#include <asm/insn.h>
 | 
				
			||||||
 | 
					#include <asm/kprobes.h>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#define AARCH64_INSN_SF_BIT	BIT(31)
 | 
					#define AARCH64_INSN_SF_BIT	BIT(31)
 | 
				
			||||||
#define AARCH64_INSN_N_BIT	BIT(22)
 | 
					#define AARCH64_INSN_N_BIT	BIT(22)
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -16,6 +16,8 @@
 | 
				
			||||||
#ifndef _ARM_KERNEL_KPROBES_ARM64_H
 | 
					#ifndef _ARM_KERNEL_KPROBES_ARM64_H
 | 
				
			||||||
#define _ARM_KERNEL_KPROBES_ARM64_H
 | 
					#define _ARM_KERNEL_KPROBES_ARM64_H
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#include <asm/kprobes.h>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
/*
 | 
					/*
 | 
				
			||||||
 * ARM strongly recommends a limit of 128 bytes between LoadExcl and
 | 
					 * ARM strongly recommends a limit of 128 bytes between LoadExcl and
 | 
				
			||||||
 * StoreExcl instructions in a single thread of execution. So keep the
 | 
					 * StoreExcl instructions in a single thread of execution. So keep the
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -222,7 +222,7 @@ asmlinkage void secondary_start_kernel(void)
 | 
				
			||||||
	 * All kernel threads share the same mm context; grab a
 | 
						 * All kernel threads share the same mm context; grab a
 | 
				
			||||||
	 * reference and switch to it.
 | 
						 * reference and switch to it.
 | 
				
			||||||
	 */
 | 
						 */
 | 
				
			||||||
	atomic_inc(&mm->mm_count);
 | 
						mmgrab(mm);
 | 
				
			||||||
	current->active_mm = mm;
 | 
						current->active_mm = mm;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	/*
 | 
						/*
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -62,7 +62,7 @@ D_h	.req	x14
 | 
				
			||||||
	sub	count, count, tmp2
 | 
						sub	count, count, tmp2
 | 
				
			||||||
	/*
 | 
						/*
 | 
				
			||||||
	* Copy the leading memory data from src to dst in an increasing
 | 
						* Copy the leading memory data from src to dst in an increasing
 | 
				
			||||||
	* address order.By this way,the risk of overwritting the source
 | 
						* address order.By this way,the risk of overwriting the source
 | 
				
			||||||
	* memory data is eliminated when the distance between src and
 | 
						* memory data is eliminated when the distance between src and
 | 
				
			||||||
	* dst is less than 16. The memory accesses here are alignment.
 | 
						* dst is less than 16. The memory accesses here are alignment.
 | 
				
			||||||
	*/
 | 
						*/
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -11,10 +11,14 @@
 | 
				
			||||||
#ifndef __ASM_AVR32_KPROBES_H
 | 
					#ifndef __ASM_AVR32_KPROBES_H
 | 
				
			||||||
#define __ASM_AVR32_KPROBES_H
 | 
					#define __ASM_AVR32_KPROBES_H
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#include <asm-generic/kprobes.h>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#define BREAKPOINT_INSTRUCTION	0xd673	/* breakpoint */
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#ifdef CONFIG_KPROBES
 | 
				
			||||||
#include <linux/types.h>
 | 
					#include <linux/types.h>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
typedef u16	kprobe_opcode_t;
 | 
					typedef u16	kprobe_opcode_t;
 | 
				
			||||||
#define BREAKPOINT_INSTRUCTION	0xd673	/* breakpoint */
 | 
					 | 
				
			||||||
#define MAX_INSN_SIZE		2
 | 
					#define MAX_INSN_SIZE		2
 | 
				
			||||||
#define MAX_STACK_SIZE		64	/* 32 would probably be OK */
 | 
					#define MAX_STACK_SIZE		64	/* 32 would probably be OK */
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					@ -46,4 +50,5 @@ extern int kprobe_exceptions_notify(struct notifier_block *self,
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#define flush_insn_slot(p)	do { } while (0)
 | 
					#define flush_insn_slot(p)	do { } while (0)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#endif /* CONFIG_KPROBES */
 | 
				
			||||||
#endif /* __ASM_AVR32_KPROBES_H */
 | 
					#endif /* __ASM_AVR32_KPROBES_H */
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -46,3 +46,4 @@ generic-y += unaligned.h
 | 
				
			||||||
generic-y += user.h
 | 
					generic-y += user.h
 | 
				
			||||||
generic-y += word-at-a-time.h
 | 
					generic-y += word-at-a-time.h
 | 
				
			||||||
generic-y += xor.h
 | 
					generic-y += xor.h
 | 
				
			||||||
 | 
					generic-y += kprobes.h
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -307,8 +307,8 @@ void secondary_start_kernel(void)
 | 
				
			||||||
	local_irq_disable();
 | 
						local_irq_disable();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	/* Attach the new idle task to the global mm. */
 | 
						/* Attach the new idle task to the global mm. */
 | 
				
			||||||
	atomic_inc(&mm->mm_users);
 | 
						mmget(mm);
 | 
				
			||||||
	atomic_inc(&mm->mm_count);
 | 
						mmgrab(mm);
 | 
				
			||||||
	current->active_mm = mm;
 | 
						current->active_mm = mm;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	preempt_disable();
 | 
						preempt_disable();
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -61,3 +61,4 @@ generic-y += user.h
 | 
				
			||||||
generic-y += vga.h
 | 
					generic-y += vga.h
 | 
				
			||||||
generic-y += word-at-a-time.h
 | 
					generic-y += word-at-a-time.h
 | 
				
			||||||
generic-y += xor.h
 | 
					generic-y += xor.h
 | 
				
			||||||
 | 
					generic-y += kprobes.h
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -45,3 +45,4 @@ generic-y += types.h
 | 
				
			||||||
generic-y += vga.h
 | 
					generic-y += vga.h
 | 
				
			||||||
generic-y += word-at-a-time.h
 | 
					generic-y += word-at-a-time.h
 | 
				
			||||||
generic-y += xor.h
 | 
					generic-y += xor.h
 | 
				
			||||||
 | 
					generic-y += kprobes.h
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -7,3 +7,4 @@ generic-y += mm-arch-hooks.h
 | 
				
			||||||
generic-y += preempt.h
 | 
					generic-y += preempt.h
 | 
				
			||||||
generic-y += trace_clock.h
 | 
					generic-y += trace_clock.h
 | 
				
			||||||
generic-y += word-at-a-time.h
 | 
					generic-y += word-at-a-time.h
 | 
				
			||||||
 | 
					generic-y += kprobes.h
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -188,7 +188,7 @@ int cxn_pin_by_pid(pid_t pid)
 | 
				
			||||||
		task_lock(tsk);
 | 
							task_lock(tsk);
 | 
				
			||||||
		if (tsk->mm) {
 | 
							if (tsk->mm) {
 | 
				
			||||||
			mm = tsk->mm;
 | 
								mm = tsk->mm;
 | 
				
			||||||
			atomic_inc(&mm->mm_users);
 | 
								mmget(mm);
 | 
				
			||||||
			ret = 0;
 | 
								ret = 0;
 | 
				
			||||||
		}
 | 
							}
 | 
				
			||||||
		task_unlock(tsk);
 | 
							task_unlock(tsk);
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -74,3 +74,4 @@ generic-y += unaligned.h
 | 
				
			||||||
generic-y += vga.h
 | 
					generic-y += vga.h
 | 
				
			||||||
generic-y += word-at-a-time.h
 | 
					generic-y += word-at-a-time.h
 | 
				
			||||||
generic-y += xor.h
 | 
					generic-y += xor.h
 | 
				
			||||||
 | 
					generic-y += kprobes.h
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -59,3 +59,4 @@ generic-y += unaligned.h
 | 
				
			||||||
generic-y += vga.h
 | 
					generic-y += vga.h
 | 
				
			||||||
generic-y += word-at-a-time.h
 | 
					generic-y += word-at-a-time.h
 | 
				
			||||||
generic-y += xor.h
 | 
					generic-y += xor.h
 | 
				
			||||||
 | 
					generic-y += kprobes.h
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -162,7 +162,7 @@ void start_secondary(void)
 | 
				
			||||||
	);
 | 
						);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	/*  Set the memory struct  */
 | 
						/*  Set the memory struct  */
 | 
				
			||||||
	atomic_inc(&init_mm.mm_count);
 | 
						mmgrab(&init_mm);
 | 
				
			||||||
	current->active_mm = &init_mm;
 | 
						current->active_mm = &init_mm;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	cpu = smp_processor_id();
 | 
						cpu = smp_processor_id();
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -23,14 +23,19 @@
 | 
				
			||||||
 * 2005-Apr     Rusty Lynch <rusty.lynch@intel.com> and Anil S Keshavamurthy
 | 
					 * 2005-Apr     Rusty Lynch <rusty.lynch@intel.com> and Anil S Keshavamurthy
 | 
				
			||||||
 *              <anil.s.keshavamurthy@intel.com> adapted from i386
 | 
					 *              <anil.s.keshavamurthy@intel.com> adapted from i386
 | 
				
			||||||
 */
 | 
					 */
 | 
				
			||||||
 | 
					#include <asm-generic/kprobes.h>
 | 
				
			||||||
 | 
					#include <asm/break.h>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#define BREAK_INST	(long)(__IA64_BREAK_KPROBE << 6)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#ifdef CONFIG_KPROBES
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#include <linux/types.h>
 | 
					#include <linux/types.h>
 | 
				
			||||||
#include <linux/ptrace.h>
 | 
					#include <linux/ptrace.h>
 | 
				
			||||||
#include <linux/percpu.h>
 | 
					#include <linux/percpu.h>
 | 
				
			||||||
#include <asm/break.h>
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
#define __ARCH_WANT_KPROBES_INSN_SLOT
 | 
					#define __ARCH_WANT_KPROBES_INSN_SLOT
 | 
				
			||||||
#define MAX_INSN_SIZE   2	/* last half is for kprobe-booster */
 | 
					#define MAX_INSN_SIZE   2	/* last half is for kprobe-booster */
 | 
				
			||||||
#define BREAK_INST	(long)(__IA64_BREAK_KPROBE << 6)
 | 
					 | 
				
			||||||
#define NOP_M_INST	(long)(1<<27)
 | 
					#define NOP_M_INST	(long)(1<<27)
 | 
				
			||||||
#define BRL_INST(i1, i2) ((long)((0xcL << 37) |	/* brl */ \
 | 
					#define BRL_INST(i1, i2) ((long)((0xcL << 37) |	/* brl */ \
 | 
				
			||||||
				(0x1L << 12) |	/* many */ \
 | 
									(0x1L << 12) |	/* many */ \
 | 
				
			||||||
| 
						 | 
					@ -124,4 +129,5 @@ extern void invalidate_stacked_regs(void);
 | 
				
			||||||
extern void flush_register_stack(void);
 | 
					extern void flush_register_stack(void);
 | 
				
			||||||
extern void arch_remove_kprobe(struct kprobe *p);
 | 
					extern void arch_remove_kprobe(struct kprobe *p);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#endif /* CONFIG_KPROBES */
 | 
				
			||||||
#endif /* _ASM_KPROBES_H */
 | 
					#endif /* _ASM_KPROBES_H */
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -994,7 +994,7 @@ cpu_init (void)
 | 
				
			||||||
	 */
 | 
						 */
 | 
				
			||||||
	ia64_setreg(_IA64_REG_CR_DCR,  (  IA64_DCR_DP | IA64_DCR_DK | IA64_DCR_DX | IA64_DCR_DR
 | 
						ia64_setreg(_IA64_REG_CR_DCR,  (  IA64_DCR_DP | IA64_DCR_DK | IA64_DCR_DX | IA64_DCR_DR
 | 
				
			||||||
					| IA64_DCR_DA | IA64_DCR_DD | IA64_DCR_LC));
 | 
										| IA64_DCR_DA | IA64_DCR_DD | IA64_DCR_LC));
 | 
				
			||||||
	atomic_inc(&init_mm.mm_count);
 | 
						mmgrab(&init_mm);
 | 
				
			||||||
	current->active_mm = &init_mm;
 | 
						current->active_mm = &init_mm;
 | 
				
			||||||
	BUG_ON(current->mm);
 | 
						BUG_ON(current->mm);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -525,7 +525,7 @@ static int sn_topology_show(struct seq_file *s, void *d)
 | 
				
			||||||
				/* both ends local to this partition */
 | 
									/* both ends local to this partition */
 | 
				
			||||||
				seq_puts(s, " local");
 | 
									seq_puts(s, " local");
 | 
				
			||||||
			else if (SN_HWPERF_FOREIGN(p))
 | 
								else if (SN_HWPERF_FOREIGN(p))
 | 
				
			||||||
				/* both ends of the link in foreign partiton */
 | 
									/* both ends of the link in foreign partition */
 | 
				
			||||||
				seq_puts(s, " foreign");
 | 
									seq_puts(s, " foreign");
 | 
				
			||||||
			else
 | 
								else
 | 
				
			||||||
				/* link straddles a partition */
 | 
									/* link straddles a partition */
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -11,3 +11,4 @@ generic-y += preempt.h
 | 
				
			||||||
generic-y += sections.h
 | 
					generic-y += sections.h
 | 
				
			||||||
generic-y += trace_clock.h
 | 
					generic-y += trace_clock.h
 | 
				
			||||||
generic-y += word-at-a-time.h
 | 
					generic-y += word-at-a-time.h
 | 
				
			||||||
 | 
					generic-y += kprobes.h
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -403,7 +403,7 @@ void __init cpu_init (void)
 | 
				
			||||||
	printk(KERN_INFO "Initializing CPU#%d\n", cpu_id);
 | 
						printk(KERN_INFO "Initializing CPU#%d\n", cpu_id);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	/* Set up and load the per-CPU TSS and LDT */
 | 
						/* Set up and load the per-CPU TSS and LDT */
 | 
				
			||||||
	atomic_inc(&init_mm.mm_count);
 | 
						mmgrab(&init_mm);
 | 
				
			||||||
	current->active_mm = &init_mm;
 | 
						current->active_mm = &init_mm;
 | 
				
			||||||
	if (current->mm)
 | 
						if (current->mm)
 | 
				
			||||||
		BUG();
 | 
							BUG();
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -3814,7 +3814,7 @@ CAS2W2_FILLER:
 | 
				
			||||||
#	(3) Save current DFC/SFC (ASSUMED TO BE EQUAL!!!); Then set	#
 | 
					#	(3) Save current DFC/SFC (ASSUMED TO BE EQUAL!!!); Then set	#
 | 
				
			||||||
#	    SFC/DFC according to whether exception occurred in user or	#
 | 
					#	    SFC/DFC according to whether exception occurred in user or	#
 | 
				
			||||||
#	    supervisor mode.						#
 | 
					#	    supervisor mode.						#
 | 
				
			||||||
#	(4) Use "plpaw" instruction to pre-load ATC with efective	#
 | 
					#	(4) Use "plpaw" instruction to pre-load ATC with effective	#
 | 
				
			||||||
#	    address page(s). THIS SHOULD NOT FAULT!!! The relevant	#
 | 
					#	    address page(s). THIS SHOULD NOT FAULT!!! The relevant	#
 | 
				
			||||||
#	    page(s) should have been made resident prior to entering	#
 | 
					#	    page(s) should have been made resident prior to entering	#
 | 
				
			||||||
#	    this routine.						#
 | 
					#	    this routine.						#
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -33,3 +33,4 @@ generic-y += trace_clock.h
 | 
				
			||||||
generic-y += types.h
 | 
					generic-y += types.h
 | 
				
			||||||
generic-y += word-at-a-time.h
 | 
					generic-y += word-at-a-time.h
 | 
				
			||||||
generic-y += xor.h
 | 
					generic-y += xor.h
 | 
				
			||||||
 | 
					generic-y += kprobes.h
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -54,3 +54,4 @@ generic-y += user.h
 | 
				
			||||||
generic-y += vga.h
 | 
					generic-y += vga.h
 | 
				
			||||||
generic-y += word-at-a-time.h
 | 
					generic-y += word-at-a-time.h
 | 
				
			||||||
generic-y += xor.h
 | 
					generic-y += xor.h
 | 
				
			||||||
 | 
					generic-y += kprobes.h
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -344,8 +344,8 @@ asmlinkage void secondary_start_kernel(void)
 | 
				
			||||||
	 * All kernel threads share the same mm context; grab a
 | 
						 * All kernel threads share the same mm context; grab a
 | 
				
			||||||
	 * reference and switch to it.
 | 
						 * reference and switch to it.
 | 
				
			||||||
	 */
 | 
						 */
 | 
				
			||||||
	atomic_inc(&mm->mm_users);
 | 
						mmget(mm);
 | 
				
			||||||
	atomic_inc(&mm->mm_count);
 | 
						mmgrab(mm);
 | 
				
			||||||
	current->active_mm = mm;
 | 
						current->active_mm = mm;
 | 
				
			||||||
	cpumask_set_cpu(cpu, mm_cpumask(mm));
 | 
						cpumask_set_cpu(cpu, mm_cpumask(mm));
 | 
				
			||||||
	enter_lazy_tlb(mm, current);
 | 
						enter_lazy_tlb(mm, current);
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -10,3 +10,4 @@ generic-y += preempt.h
 | 
				
			||||||
generic-y += syscalls.h
 | 
					generic-y += syscalls.h
 | 
				
			||||||
generic-y += trace_clock.h
 | 
					generic-y += trace_clock.h
 | 
				
			||||||
generic-y += word-at-a-time.h
 | 
					generic-y += word-at-a-time.h
 | 
				
			||||||
 | 
					generic-y += kprobes.h
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -22,6 +22,9 @@
 | 
				
			||||||
#ifndef _ASM_KPROBES_H
 | 
					#ifndef _ASM_KPROBES_H
 | 
				
			||||||
#define _ASM_KPROBES_H
 | 
					#define _ASM_KPROBES_H
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#include <asm-generic/kprobes.h>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#ifdef CONFIG_KPROBES
 | 
				
			||||||
#include <linux/ptrace.h>
 | 
					#include <linux/ptrace.h>
 | 
				
			||||||
#include <linux/types.h>
 | 
					#include <linux/types.h>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					@ -94,4 +97,5 @@ struct kprobe_ctlblk {
 | 
				
			||||||
extern int kprobe_exceptions_notify(struct notifier_block *self,
 | 
					extern int kprobe_exceptions_notify(struct notifier_block *self,
 | 
				
			||||||
				    unsigned long val, void *data);
 | 
									    unsigned long val, void *data);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#endif /* CONFIG_KPROBES */
 | 
				
			||||||
#endif /* _ASM_KPROBES_H */
 | 
					#endif /* _ASM_KPROBES_H */
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -2232,7 +2232,7 @@ void per_cpu_trap_init(bool is_boot_cpu)
 | 
				
			||||||
	if (!cpu_data[cpu].asid_cache)
 | 
						if (!cpu_data[cpu].asid_cache)
 | 
				
			||||||
		cpu_data[cpu].asid_cache = asid_first_version(cpu);
 | 
							cpu_data[cpu].asid_cache = asid_first_version(cpu);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	atomic_inc(&init_mm.mm_count);
 | 
						mmgrab(&init_mm);
 | 
				
			||||||
	current->active_mm = &init_mm;
 | 
						current->active_mm = &init_mm;
 | 
				
			||||||
	BUG_ON(current->mm);
 | 
						BUG_ON(current->mm);
 | 
				
			||||||
	enter_lazy_tlb(&init_mm, current);
 | 
						enter_lazy_tlb(&init_mm, current);
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -21,13 +21,17 @@
 | 
				
			||||||
#ifndef _ASM_KPROBES_H
 | 
					#ifndef _ASM_KPROBES_H
 | 
				
			||||||
#define _ASM_KPROBES_H
 | 
					#define _ASM_KPROBES_H
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#include <asm-generic/kprobes.h>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#define BREAKPOINT_INSTRUCTION	0xff
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#ifdef CONFIG_KPROBES
 | 
				
			||||||
#include <linux/types.h>
 | 
					#include <linux/types.h>
 | 
				
			||||||
#include <linux/ptrace.h>
 | 
					#include <linux/ptrace.h>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
struct kprobe;
 | 
					struct kprobe;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
typedef unsigned char kprobe_opcode_t;
 | 
					typedef unsigned char kprobe_opcode_t;
 | 
				
			||||||
#define BREAKPOINT_INSTRUCTION	0xff
 | 
					 | 
				
			||||||
#define MAX_INSN_SIZE 8
 | 
					#define MAX_INSN_SIZE 8
 | 
				
			||||||
#define MAX_STACK_SIZE 128
 | 
					#define MAX_STACK_SIZE 128
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					@ -47,4 +51,5 @@ extern int kprobe_exceptions_notify(struct notifier_block *self,
 | 
				
			||||||
 | 
					
 | 
				
			||||||
extern void arch_remove_kprobe(struct kprobe *p);
 | 
					extern void arch_remove_kprobe(struct kprobe *p);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#endif /* CONFIG_KPROBES */
 | 
				
			||||||
#endif /* _ASM_KPROBES_H */
 | 
					#endif /* _ASM_KPROBES_H */
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -589,7 +589,7 @@ static void __init smp_cpu_init(void)
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
	printk(KERN_INFO "Initializing CPU#%d\n", cpu_id);
 | 
						printk(KERN_INFO "Initializing CPU#%d\n", cpu_id);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	atomic_inc(&init_mm.mm_count);
 | 
						mmgrab(&init_mm);
 | 
				
			||||||
	current->active_mm = &init_mm;
 | 
						current->active_mm = &init_mm;
 | 
				
			||||||
	BUG_ON(current->mm);
 | 
						BUG_ON(current->mm);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -62,3 +62,4 @@ generic-y += user.h
 | 
				
			||||||
generic-y += vga.h
 | 
					generic-y += vga.h
 | 
				
			||||||
generic-y += word-at-a-time.h
 | 
					generic-y += word-at-a-time.h
 | 
				
			||||||
generic-y += xor.h
 | 
					generic-y += xor.h
 | 
				
			||||||
 | 
					generic-y += kprobes.h
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -67,3 +67,4 @@ generic-y += user.h
 | 
				
			||||||
generic-y += vga.h
 | 
					generic-y += vga.h
 | 
				
			||||||
generic-y += word-at-a-time.h
 | 
					generic-y += word-at-a-time.h
 | 
				
			||||||
generic-y += xor.h
 | 
					generic-y += xor.h
 | 
				
			||||||
 | 
					generic-y += kprobes.h
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -319,7 +319,7 @@ EXCEPTION_ENTRY(_timer_handler)
 | 
				
			||||||
	l.j    _ret_from_intr
 | 
						l.j    _ret_from_intr
 | 
				
			||||||
	 l.nop
 | 
						 l.nop
 | 
				
			||||||
 | 
					
 | 
				
			||||||
/* ---[ 0x600: Aligment exception ]-------------------------------------- */
 | 
					/* ---[ 0x600: Alignment exception ]-------------------------------------- */
 | 
				
			||||||
 | 
					
 | 
				
			||||||
EXCEPTION_ENTRY(_alignment_handler)
 | 
					EXCEPTION_ENTRY(_alignment_handler)
 | 
				
			||||||
	CLEAR_LWA_FLAG(r3)
 | 
						CLEAR_LWA_FLAG(r3)
 | 
				
			||||||
| 
						 | 
					@ -331,8 +331,8 @@ EXCEPTION_ENTRY(_alignment_handler)
 | 
				
			||||||
	 l.nop
 | 
						 l.nop
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#if 0
 | 
					#if 0
 | 
				
			||||||
EXCEPTION_ENTRY(_aligment_handler)
 | 
					EXCEPTION_ENTRY(_alignment_handler)
 | 
				
			||||||
//        l.mfspr r2,r0,SPR_EEAR_BASE     /* Load the efective addres */
 | 
					//        l.mfspr r2,r0,SPR_EEAR_BASE     /* Load the effective address */
 | 
				
			||||||
	l.addi	r2,r4,0
 | 
						l.addi	r2,r4,0
 | 
				
			||||||
//        l.mfspr r5,r0,SPR_EPCR_BASE     /* Load the insn address */
 | 
					//        l.mfspr r5,r0,SPR_EPCR_BASE     /* Load the insn address */
 | 
				
			||||||
	l.lwz   r5,PT_PC(r1)
 | 
						l.lwz   r5,PT_PC(r1)
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -325,7 +325,7 @@ _dispatch_do_ipage_fault:
 | 
				
			||||||
    .org 0x500
 | 
					    .org 0x500
 | 
				
			||||||
	EXCEPTION_HANDLE(_timer_handler)
 | 
						EXCEPTION_HANDLE(_timer_handler)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
/* ---[ 0x600: Aligment exception ]-------------------------------------- */
 | 
					/* ---[ 0x600: Alignment exception ]-------------------------------------- */
 | 
				
			||||||
    .org 0x600
 | 
					    .org 0x600
 | 
				
			||||||
	EXCEPTION_HANDLE(_alignment_handler)
 | 
						EXCEPTION_HANDLE(_alignment_handler)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					@ -640,8 +640,8 @@ _flush_tlb:
 | 
				
			||||||
 | 
					
 | 
				
			||||||
/* ========================================[ cache ]=== */
 | 
					/* ========================================[ cache ]=== */
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	/* aligment here so we don't change memory offsets with
 | 
						/* alignment here so we don't change memory offsets with
 | 
				
			||||||
	 * memory controler defined
 | 
						 * memory controller defined
 | 
				
			||||||
	 */
 | 
						 */
 | 
				
			||||||
	.align 0x2000
 | 
						.align 0x2000
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -19,8 +19,8 @@
 | 
				
			||||||
 | 
					
 | 
				
			||||||
/* TODO
 | 
					/* TODO
 | 
				
			||||||
 *		- clean up __offset & stuff
 | 
					 *		- clean up __offset & stuff
 | 
				
			||||||
 *		- change all 8192 aligment to PAGE !!!
 | 
					 *		- change all 8192 alignment to PAGE !!!
 | 
				
			||||||
 *		- recheck if all aligments are really needed
 | 
					 *		- recheck if all alignments are really needed
 | 
				
			||||||
 */
 | 
					 */
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#  define LOAD_OFFSET  PAGE_OFFSET
 | 
					#  define LOAD_OFFSET  PAGE_OFFSET
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -28,3 +28,4 @@ generic-y += user.h
 | 
				
			||||||
generic-y += vga.h
 | 
					generic-y += vga.h
 | 
				
			||||||
generic-y += word-at-a-time.h
 | 
					generic-y += word-at-a-time.h
 | 
				
			||||||
generic-y += xor.h
 | 
					generic-y += xor.h
 | 
				
			||||||
 | 
					generic-y += kprobes.h
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -279,7 +279,7 @@ smp_cpu_init(int cpunum)
 | 
				
			||||||
	set_cpu_online(cpunum, true);
 | 
						set_cpu_online(cpunum, true);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	/* Initialise the idle task for this CPU */
 | 
						/* Initialise the idle task for this CPU */
 | 
				
			||||||
	atomic_inc(&init_mm.mm_count);
 | 
						mmgrab(&init_mm);
 | 
				
			||||||
	current->active_mm = &init_mm;
 | 
						current->active_mm = &init_mm;
 | 
				
			||||||
	BUG_ON(current->mm);
 | 
						BUG_ON(current->mm);
 | 
				
			||||||
	enter_lazy_tlb(&init_mm, current);
 | 
						enter_lazy_tlb(&init_mm, current);
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -55,7 +55,7 @@ partition@1c00000 {
 | 
				
			||||||
				label = "kernel";
 | 
									label = "kernel";
 | 
				
			||||||
				reg = <0x01c00000 0x002e0000>;
 | 
									reg = <0x01c00000 0x002e0000>;
 | 
				
			||||||
			};
 | 
								};
 | 
				
			||||||
			partiton@1ee0000 {
 | 
								partition@1ee0000 {
 | 
				
			||||||
				label = "dtb";
 | 
									label = "dtb";
 | 
				
			||||||
				reg = <0x01ee0000 0x00020000>;
 | 
									reg = <0x01ee0000 0x00020000>;
 | 
				
			||||||
			};
 | 
								};
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -30,7 +30,7 @@ extern struct mmu_psize_def mmu_psize_defs[MMU_PAGE_COUNT];
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#ifndef __ASSEMBLY__
 | 
					#ifndef __ASSEMBLY__
 | 
				
			||||||
/*
 | 
					/*
 | 
				
			||||||
 * ISA 3.0 partiton and process table entry format
 | 
					 * ISA 3.0 partition and process table entry format
 | 
				
			||||||
 */
 | 
					 */
 | 
				
			||||||
struct prtb_entry {
 | 
					struct prtb_entry {
 | 
				
			||||||
	__be64 prtb0;
 | 
						__be64 prtb0;
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -109,7 +109,7 @@ static inline unsigned int fh_send_nmi(unsigned int vcpu_mask)
 | 
				
			||||||
#define FH_DTPROP_MAX_PROPLEN 32768
 | 
					#define FH_DTPROP_MAX_PROPLEN 32768
 | 
				
			||||||
 | 
					
 | 
				
			||||||
/**
 | 
					/**
 | 
				
			||||||
 * fh_partiton_get_dtprop - get a property from a guest device tree.
 | 
					 * fh_partition_get_dtprop - get a property from a guest device tree.
 | 
				
			||||||
 * @handle: handle of partition whose device tree is to be accessed
 | 
					 * @handle: handle of partition whose device tree is to be accessed
 | 
				
			||||||
 * @dtpath_addr: physical address of device tree path to access
 | 
					 * @dtpath_addr: physical address of device tree path to access
 | 
				
			||||||
 * @propname_addr: physical address of name of property
 | 
					 * @propname_addr: physical address of name of property
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -1,5 +1,8 @@
 | 
				
			||||||
#ifndef _ASM_POWERPC_KPROBES_H
 | 
					#ifndef _ASM_POWERPC_KPROBES_H
 | 
				
			||||||
#define _ASM_POWERPC_KPROBES_H
 | 
					#define _ASM_POWERPC_KPROBES_H
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#include <asm-generic/kprobes.h>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#ifdef __KERNEL__
 | 
					#ifdef __KERNEL__
 | 
				
			||||||
/*
 | 
					/*
 | 
				
			||||||
 *  Kernel Probes (KProbes)
 | 
					 *  Kernel Probes (KProbes)
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -707,7 +707,7 @@ void start_secondary(void *unused)
 | 
				
			||||||
	unsigned int cpu = smp_processor_id();
 | 
						unsigned int cpu = smp_processor_id();
 | 
				
			||||||
	int i, base;
 | 
						int i, base;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	atomic_inc(&init_mm.mm_count);
 | 
						mmgrab(&init_mm);
 | 
				
			||||||
	current->active_mm = &init_mm;
 | 
						current->active_mm = &init_mm;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	smp_store_cpu_info(cpu);
 | 
						smp_store_cpu_info(cpu);
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -14,6 +14,7 @@
 | 
				
			||||||
#include <asm/page.h>
 | 
					#include <asm/page.h>
 | 
				
			||||||
#include <asm/code-patching.h>
 | 
					#include <asm/code-patching.h>
 | 
				
			||||||
#include <linux/uaccess.h>
 | 
					#include <linux/uaccess.h>
 | 
				
			||||||
 | 
					#include <linux/kprobes.h>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
int patch_instruction(unsigned int *addr, unsigned int instr)
 | 
					int patch_instruction(unsigned int *addr, unsigned int instr)
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -3034,7 +3034,7 @@ static void pnv_ioda_setup_pe_res(struct pnv_ioda_pe *pe,
 | 
				
			||||||
/*
 | 
					/*
 | 
				
			||||||
 * This function is supposed to be called on basis of PE from top
 | 
					 * This function is supposed to be called on basis of PE from top
 | 
				
			||||||
 * to bottom style. So the the I/O or MMIO segment assigned to
 | 
					 * to bottom style. So the the I/O or MMIO segment assigned to
 | 
				
			||||||
 * parent PE could be overrided by its child PEs if necessary.
 | 
					 * parent PE could be overridden by its child PEs if necessary.
 | 
				
			||||||
 */
 | 
					 */
 | 
				
			||||||
static void pnv_ioda_setup_pe_seg(struct pnv_ioda_pe *pe)
 | 
					static void pnv_ioda_setup_pe_seg(struct pnv_ioda_pe *pe)
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -1020,7 +1020,7 @@ static u64 enable_ddw(struct pci_dev *dev, struct device_node *pdn)
 | 
				
			||||||
	/* check largest block * page size > max memory hotplug addr */
 | 
						/* check largest block * page size > max memory hotplug addr */
 | 
				
			||||||
	max_addr = memory_hotplug_max();
 | 
						max_addr = memory_hotplug_max();
 | 
				
			||||||
	if (query.largest_available_block < (max_addr >> page_shift)) {
 | 
						if (query.largest_available_block < (max_addr >> page_shift)) {
 | 
				
			||||||
		dev_dbg(&dev->dev, "can't map partiton max 0x%llx with %u "
 | 
							dev_dbg(&dev->dev, "can't map partition max 0x%llx with %u "
 | 
				
			||||||
			  "%llu-sized pages\n", max_addr,  query.largest_available_block,
 | 
								  "%llu-sized pages\n", max_addr,  query.largest_available_block,
 | 
				
			||||||
			  1ULL << page_shift);
 | 
								  1ULL << page_shift);
 | 
				
			||||||
		goto out_failed;
 | 
							goto out_failed;
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -1587,7 +1587,7 @@ extract_tbr (unsigned long insn,
 | 
				
			||||||
#define CTX(op, xop)   (OP (op) | (((unsigned long)(xop)) & 0x7))
 | 
					#define CTX(op, xop)   (OP (op) | (((unsigned long)(xop)) & 0x7))
 | 
				
			||||||
#define CTX_MASK CTX(0x3f, 0x7)
 | 
					#define CTX_MASK CTX(0x3f, 0x7)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
/* An User Context form instruction.  */
 | 
					/* A User Context form instruction.  */
 | 
				
			||||||
#define UCTX(op, xop)  (OP (op) | (((unsigned long)(xop)) & 0x1f))
 | 
					#define UCTX(op, xop)  (OP (op) | (((unsigned long)(xop)) & 0x1f))
 | 
				
			||||||
#define UCTX_MASK UCTX(0x3f, 0x1f)
 | 
					#define UCTX_MASK UCTX(0x3f, 0x1f)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -27,6 +27,11 @@
 | 
				
			||||||
 * 2005-Dec	Used as a template for s390 by Mike Grundy
 | 
					 * 2005-Dec	Used as a template for s390 by Mike Grundy
 | 
				
			||||||
 *		<grundym@us.ibm.com>
 | 
					 *		<grundym@us.ibm.com>
 | 
				
			||||||
 */
 | 
					 */
 | 
				
			||||||
 | 
					#include <asm-generic/kprobes.h>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#define BREAKPOINT_INSTRUCTION	0x0002
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#ifdef CONFIG_KPROBES
 | 
				
			||||||
#include <linux/types.h>
 | 
					#include <linux/types.h>
 | 
				
			||||||
#include <linux/ptrace.h>
 | 
					#include <linux/ptrace.h>
 | 
				
			||||||
#include <linux/percpu.h>
 | 
					#include <linux/percpu.h>
 | 
				
			||||||
| 
						 | 
					@ -37,7 +42,6 @@ struct pt_regs;
 | 
				
			||||||
struct kprobe;
 | 
					struct kprobe;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
typedef u16 kprobe_opcode_t;
 | 
					typedef u16 kprobe_opcode_t;
 | 
				
			||||||
#define BREAKPOINT_INSTRUCTION	0x0002
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
/* Maximum instruction size is 3 (16bit) halfwords: */
 | 
					/* Maximum instruction size is 3 (16bit) halfwords: */
 | 
				
			||||||
#define MAX_INSN_SIZE		0x0003
 | 
					#define MAX_INSN_SIZE		0x0003
 | 
				
			||||||
| 
						 | 
					@ -91,4 +95,5 @@ int probe_is_insn_relative_long(u16 *insn);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#define flush_insn_slot(p)	do { } while (0)
 | 
					#define flush_insn_slot(p)	do { } while (0)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#endif /* CONFIG_KPROBES */
 | 
				
			||||||
#endif	/* _ASM_S390_KPROBES_H */
 | 
					#endif	/* _ASM_S390_KPROBES_H */
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -73,7 +73,7 @@ void cpu_init(void)
 | 
				
			||||||
	get_cpu_id(id);
 | 
						get_cpu_id(id);
 | 
				
			||||||
	if (machine_has_cpu_mhz)
 | 
						if (machine_has_cpu_mhz)
 | 
				
			||||||
		update_cpu_mhz(NULL);
 | 
							update_cpu_mhz(NULL);
 | 
				
			||||||
	atomic_inc(&init_mm.mm_count);
 | 
						mmgrab(&init_mm);
 | 
				
			||||||
	current->active_mm = &init_mm;
 | 
						current->active_mm = &init_mm;
 | 
				
			||||||
	BUG_ON(current->mm);
 | 
						BUG_ON(current->mm);
 | 
				
			||||||
	enter_lazy_tlb(&init_mm, current);
 | 
						enter_lazy_tlb(&init_mm, current);
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -350,7 +350,7 @@ static void __add_vtimer(struct vtimer_list *timer, int periodic)
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
/*
 | 
					/*
 | 
				
			||||||
 * add_virt_timer - add an oneshot virtual CPU timer
 | 
					 * add_virt_timer - add a oneshot virtual CPU timer
 | 
				
			||||||
 */
 | 
					 */
 | 
				
			||||||
void add_virt_timer(struct vtimer_list *timer)
 | 
					void add_virt_timer(struct vtimer_list *timer)
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -13,3 +13,4 @@ generic-y += trace_clock.h
 | 
				
			||||||
generic-y += xor.h
 | 
					generic-y += xor.h
 | 
				
			||||||
generic-y += serial.h
 | 
					generic-y += serial.h
 | 
				
			||||||
generic-y += word-at-a-time.h
 | 
					generic-y += word-at-a-time.h
 | 
				
			||||||
 | 
					generic-y += kprobes.h
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -336,7 +336,7 @@ void __init trap_init(void)
 | 
				
			||||||
	set_except_vector(18, handle_dbe);
 | 
						set_except_vector(18, handle_dbe);
 | 
				
			||||||
	flush_icache_range(DEBUG_VECTOR_BASE_ADDR, IRQ_VECTOR_BASE_ADDR);
 | 
						flush_icache_range(DEBUG_VECTOR_BASE_ADDR, IRQ_VECTOR_BASE_ADDR);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	atomic_inc(&init_mm.mm_count);
 | 
						mmgrab(&init_mm);
 | 
				
			||||||
	current->active_mm = &init_mm;
 | 
						current->active_mm = &init_mm;
 | 
				
			||||||
	cpu_cache_init();
 | 
						cpu_cache_init();
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -1,13 +1,16 @@
 | 
				
			||||||
#ifndef __ASM_SH_KPROBES_H
 | 
					#ifndef __ASM_SH_KPROBES_H
 | 
				
			||||||
#define __ASM_SH_KPROBES_H
 | 
					#define __ASM_SH_KPROBES_H
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#include <asm-generic/kprobes.h>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#define BREAKPOINT_INSTRUCTION	0xc33a
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#ifdef CONFIG_KPROBES
 | 
					#ifdef CONFIG_KPROBES
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#include <linux/types.h>
 | 
					#include <linux/types.h>
 | 
				
			||||||
#include <linux/ptrace.h>
 | 
					#include <linux/ptrace.h>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
typedef insn_size_t kprobe_opcode_t;
 | 
					typedef insn_size_t kprobe_opcode_t;
 | 
				
			||||||
#define BREAKPOINT_INSTRUCTION	0xc33a
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
#define MAX_INSN_SIZE 16
 | 
					#define MAX_INSN_SIZE 16
 | 
				
			||||||
#define MAX_STACK_SIZE 64
 | 
					#define MAX_STACK_SIZE 64
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -99,7 +99,7 @@ static inline void handle_one_irq(unsigned int irq)
 | 
				
			||||||
			"mov	%0, r4		\n"
 | 
								"mov	%0, r4		\n"
 | 
				
			||||||
			"mov	r15, r8		\n"
 | 
								"mov	r15, r8		\n"
 | 
				
			||||||
			"jsr	@%1		\n"
 | 
								"jsr	@%1		\n"
 | 
				
			||||||
			/* swith to the irq stack */
 | 
								/* switch to the irq stack */
 | 
				
			||||||
			" mov	%2, r15		\n"
 | 
								" mov	%2, r15		\n"
 | 
				
			||||||
			/* restore the stack (ring zero) */
 | 
								/* restore the stack (ring zero) */
 | 
				
			||||||
			"mov	r8, r15		\n"
 | 
								"mov	r8, r15		\n"
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -178,8 +178,8 @@ asmlinkage void start_secondary(void)
 | 
				
			||||||
	struct mm_struct *mm = &init_mm;
 | 
						struct mm_struct *mm = &init_mm;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	enable_mmu();
 | 
						enable_mmu();
 | 
				
			||||||
	atomic_inc(&mm->mm_count);
 | 
						mmgrab(mm);
 | 
				
			||||||
	atomic_inc(&mm->mm_users);
 | 
						mmget(mm);
 | 
				
			||||||
	current->active_mm = mm;
 | 
						current->active_mm = mm;
 | 
				
			||||||
#ifdef CONFIG_MMU
 | 
					#ifdef CONFIG_MMU
 | 
				
			||||||
	enter_lazy_tlb(mm, current);
 | 
						enter_lazy_tlb(mm, current);
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -1,13 +1,17 @@
 | 
				
			||||||
#ifndef _SPARC64_KPROBES_H
 | 
					#ifndef _SPARC64_KPROBES_H
 | 
				
			||||||
#define _SPARC64_KPROBES_H
 | 
					#define _SPARC64_KPROBES_H
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#include <asm-generic/kprobes.h>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#define BREAKPOINT_INSTRUCTION   0x91d02070 /* ta 0x70 */
 | 
				
			||||||
 | 
					#define BREAKPOINT_INSTRUCTION_2 0x91d02071 /* ta 0x71 */
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#ifdef CONFIG_KPROBES
 | 
				
			||||||
#include <linux/types.h>
 | 
					#include <linux/types.h>
 | 
				
			||||||
#include <linux/percpu.h>
 | 
					#include <linux/percpu.h>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
typedef u32 kprobe_opcode_t;
 | 
					typedef u32 kprobe_opcode_t;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#define BREAKPOINT_INSTRUCTION   0x91d02070 /* ta 0x70 */
 | 
					 | 
				
			||||||
#define BREAKPOINT_INSTRUCTION_2 0x91d02071 /* ta 0x71 */
 | 
					 | 
				
			||||||
#define MAX_INSN_SIZE 2
 | 
					#define MAX_INSN_SIZE 2
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#define kretprobe_blacklist_size 0
 | 
					#define kretprobe_blacklist_size 0
 | 
				
			||||||
| 
						 | 
					@ -48,4 +52,6 @@ int kprobe_exceptions_notify(struct notifier_block *self,
 | 
				
			||||||
int kprobe_fault_handler(struct pt_regs *regs, int trapnr);
 | 
					int kprobe_fault_handler(struct pt_regs *regs, int trapnr);
 | 
				
			||||||
asmlinkage void __kprobes kprobe_trap(unsigned long trap_level,
 | 
					asmlinkage void __kprobes kprobe_trap(unsigned long trap_level,
 | 
				
			||||||
				      struct pt_regs *regs);
 | 
									      struct pt_regs *regs);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#endif /* CONFIG_KPROBES */
 | 
				
			||||||
#endif /* _SPARC64_KPROBES_H */
 | 
					#endif /* _SPARC64_KPROBES_H */
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -9,7 +9,7 @@ extern struct thread_info *current_set[NR_CPUS];
 | 
				
			||||||
 * Flush windows so that the VM switch which follows
 | 
					 * Flush windows so that the VM switch which follows
 | 
				
			||||||
 * would not pull the stack from under us.
 | 
					 * would not pull the stack from under us.
 | 
				
			||||||
 *
 | 
					 *
 | 
				
			||||||
 * SWITCH_ENTER and SWITH_DO_LAZY_FPU do not work yet (e.g. SMP does not work)
 | 
					 * SWITCH_ENTER and SWITCH_DO_LAZY_FPU do not work yet (e.g. SMP does not work)
 | 
				
			||||||
 * XXX WTF is the above comment? Found in late teen 2.4.x.
 | 
					 * XXX WTF is the above comment? Found in late teen 2.4.x.
 | 
				
			||||||
 */
 | 
					 */
 | 
				
			||||||
#ifdef CONFIG_SMP
 | 
					#ifdef CONFIG_SMP
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -93,7 +93,7 @@ void leon_cpu_pre_online(void *arg)
 | 
				
			||||||
			     : "memory" /* paranoid */);
 | 
								     : "memory" /* paranoid */);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	/* Attach to the address space of init_task. */
 | 
						/* Attach to the address space of init_task. */
 | 
				
			||||||
	atomic_inc(&init_mm.mm_count);
 | 
						mmgrab(&init_mm);
 | 
				
			||||||
	current->active_mm = &init_mm;
 | 
						current->active_mm = &init_mm;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	while (!cpumask_test_cpu(cpuid, &smp_commenced_mask))
 | 
						while (!cpumask_test_cpu(cpuid, &smp_commenced_mask))
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -122,7 +122,7 @@ void smp_callin(void)
 | 
				
			||||||
	current_thread_info()->new_child = 0;
 | 
						current_thread_info()->new_child = 0;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	/* Attach to the address space of init_task. */
 | 
						/* Attach to the address space of init_task. */
 | 
				
			||||||
	atomic_inc(&init_mm.mm_count);
 | 
						mmgrab(&init_mm);
 | 
				
			||||||
	current->active_mm = &init_mm;
 | 
						current->active_mm = &init_mm;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	/* inform the notifiers about the new cpu */
 | 
						/* inform the notifiers about the new cpu */
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -93,7 +93,7 @@ void sun4d_cpu_pre_online(void *arg)
 | 
				
			||||||
	show_leds(cpuid);
 | 
						show_leds(cpuid);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	/* Attach to the address space of init_task. */
 | 
						/* Attach to the address space of init_task. */
 | 
				
			||||||
	atomic_inc(&init_mm.mm_count);
 | 
						mmgrab(&init_mm);
 | 
				
			||||||
	current->active_mm = &init_mm;
 | 
						current->active_mm = &init_mm;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	local_ops->cache_all();
 | 
						local_ops->cache_all();
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
Some files were not shown because too many files have changed in this diff Show more
		Loading…
	
		Reference in a new issue