Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 22fd67c5 authored by Paul Mundt's avatar Paul Mundt
Browse files

Merge branches 'sh/earlytimer' and 'sh/shmobile-r2r-staging'

Loading
Loading
Loading
Loading
+59 −0
Original line number Diff line number Diff line
@@ -169,3 +169,62 @@ three different ways to find such a match:
      be probed later if another device registers.  (Which is OK, since
      this interface is only for use with non-hotpluggable devices.)


Early Platform Devices and Drivers
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
The early platform interfaces provide platform data to platform device
drivers early on during the system boot. The code is built on top of the
early_param() command line parsing and can be executed very early on.

Example: "earlyprintk" class early serial console in 6 steps

1. Registering early platform device data
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
The architecture code registers platform device data using the function
early_platform_add_devices(). In the case of early serial console this
should be hardware configuration for the serial port. Devices registered
at this point will later on be matched against early platform drivers.

2. Parsing kernel command line
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
The architecture code calls parse_early_param() to parse the kernel
command line. This will execute all matching early_param() callbacks.
User specified early platform devices will be registered at this point.
For the early serial console case the user can specify port on the
kernel command line as "earlyprintk=serial.0" where "earlyprintk" is
the class string, "serial" is the name of the platfrom driver and
0 is the platform device id. If the id is -1 then the dot and the
id can be omitted.

3. Installing early platform drivers belonging to a certain class
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
The architecture code may optionally force registration of all early
platform drivers belonging to a certain class using the function
early_platform_driver_register_all(). User specified devices from
step 2 have priority over these. This step is omitted by the serial
driver example since the early serial driver code should be disabled
unless the user has specified port on the kernel command line.

4. Early platform driver registration
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Compiled-in platform drivers making use of early_platform_init() are
automatically registered during step 2 or 3. The serial driver example
should use early_platform_init("earlyprintk", &platform_driver).

5. Probing of early platform drivers belonging to a certain class
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
The architecture code calls early_platform_driver_probe() to match
registered early platform devices associated with a certain class with
registered early platform drivers. Matched devices will get probed().
This step can be executed at any point during the early boot. As soon
as possible may be good for the serial port case.

6. Inside the early platform driver probe()
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
The driver code needs to take special care during early boot, especially
when it comes to memory allocation and interrupt registration. The code
in the probe() function can use is_early_platform_device() to check if
it is called at early platform device or at the regular platform device
time. The early serial driver performs register_console() at this point.

For further information, see <linux/platform_device.h>.
+3 −2
Original line number Diff line number Diff line
@@ -56,9 +56,10 @@ workloads and can fully utilize the bandwidth to the servers when doing bulk
data transfers.

POHMELFS clients operate with a working set of servers and are capable of balancing read-only
operations (like lookups or directory listings) between them.
operations (like lookups or directory listings) between them according to IO priorities.
Administrators can add or remove servers from the set at run-time via special commands (described
in Documentation/pohmelfs/info.txt file). Writes are replicated to all servers.
in Documentation/pohmelfs/info.txt file). Writes are replicated to all servers, which are connected
with write permission turned on. IO priority and permissions can be changed in run-time.

POHMELFS is capable of full data channel encryption and/or strong crypto hashing.
One can select any kernel supported cipher, encryption mode, hash type and operation mode
+17 −4
Original line number Diff line number Diff line
POHMELFS usage information.

Mount options:
Mount options.
All but index, number of crypto threads and maximum IO size can changed via remount.

idx=%u
 Each mountpoint is associated with a special index via this option.
 Administrator can add or remove servers from the given index, so all mounts,
@@ -52,16 +54,27 @@ mcache_timeout=%u

Usage examples.

Add (or remove if it already exists) server server1.net:1025 into the working set with index $idx
Add server server1.net:1025 into the working set with index $idx
with appropriate hash algorithm and key file and cipher algorithm, mode and key file:
$cfg -a server1.net -p 1025 -i $idx -K $hash_key -k $cipher_key
$cfg A add -a server1.net -p 1025 -i $idx -K $hash_key -k $cipher_key

Mount filesystem with given index $idx to /mnt mountpoint.
Client will connect to all servers specified in the working set via previous command:
mount -t pohmel -o idx=$idx q /mnt

One can add or remove servers from working set after mounting too.
Change permissions to read-only (-I 1 option, '-I 2' - write-only, 3 - rw):
$cfg A modify -a server1.net -p 1025 -i $idx -I 1

Change IO priority to 123 (node with the highest priority gets read requests).
$cfg A modify -a server1.net -p 1025 -i $idx -P 123

One can check currect status of all connections in the mountstats file:
# cat /proc/$PID/mountstats
...
device none mounted on /mnt with fstype pohmel
idx addr(:port) socket_type protocol active priority permissions
0 server1.net:1026 1 6 1 250 1
0 server2.net:1025 1 6 1 123 3

Server installation.

+20 −20
Original line number Diff line number Diff line
@@ -134,7 +134,7 @@ and is between 256 and 4096 characters. It is defined in the file
./include/asm/setup.h as COMMAND_LINE_SIZE.


	acpi=		[HW,ACPI,X86-64,i386]
	acpi=		[HW,ACPI,X86]
			Advanced Configuration and Power Interface
			Format: { force | off | ht | strict | noirq | rsdt }
			force -- enable ACPI if default was off
@@ -218,7 +218,7 @@ and is between 256 and 4096 characters. It is defined in the file
			acpi_osi="!string2"	# remove built-in string2
			acpi_osi=		# disable all strings

	acpi_pm_good	[X86-32,X86-64]
	acpi_pm_good	[X86]
			Override the pmtimer bug detection: force the kernel
			to assume that this machine's pmtimer latches its value
			and always returns good values.
@@ -459,7 +459,7 @@ and is between 256 and 4096 characters. It is defined in the file
			Also note the kernel might malfunction if you disable
			some critical bits.

	code_bytes	[IA32/X86_64] How many bytes of object code to print
	code_bytes	[X86] How many bytes of object code to print
			in an oops report.
			Range: 0 - 8192
			Default: 64
@@ -592,7 +592,7 @@ and is between 256 and 4096 characters. It is defined in the file
			MTRR settings.  This parameter disables that behavior,
			possibly causing your machine to run very slowly.

	disable_timer_pin_1 [i386,x86-64]
	disable_timer_pin_1 [X86]
			Disable PIN 1 of APIC timer
			Can be useful to work around chipset bugs.

@@ -624,7 +624,7 @@ and is between 256 and 4096 characters. It is defined in the file
			UART at the specified I/O port or MMIO address.
			The options are the same as for ttyS, above.

	earlyprintk=	[X86-32,X86-64,SH,BLACKFIN]
	earlyprintk=	[X86,SH,BLACKFIN]
			earlyprintk=vga
			earlyprintk=serial[,ttySn[,baudrate]]
			earlyprintk=dbgp
@@ -659,7 +659,7 @@ and is between 256 and 4096 characters. It is defined in the file
			See Documentation/block/as-iosched.txt and
			Documentation/block/deadline-iosched.txt for details.

	elfcorehdr=	[IA64,PPC,SH,X86-32,X86_64]
	elfcorehdr=	[IA64,PPC,SH,X86]
			Specifies physical address of start of kernel core
			image elf header. Generally kexec loader will
			pass this option to capture kernel.
@@ -938,7 +938,7 @@ and is between 256 and 4096 characters. It is defined in the file
			See comment before marvel_specify_io7 in
			arch/alpha/kernel/core_marvel.c.

	io_delay=	[X86-32,X86-64] I/O delay method
	io_delay=	[X86] I/O delay method
		0x80
			Standard port 0x80 based delay
		0xed
@@ -1000,7 +1000,7 @@ and is between 256 and 4096 characters. It is defined in the file

	keepinitrd	[HW,ARM]

	kernelcore=nn[KMG]	[KNL,X86-32,IA-64,PPC,X86-64] This parameter
	kernelcore=nn[KMG]	[KNL,X86,IA-64,PPC] This parameter
			specifies the amount of memory usable by the kernel
			for non-movable allocations.  The requested amount is
			spread evenly throughout all nodes in the system. The
@@ -1034,7 +1034,7 @@ and is between 256 and 4096 characters. It is defined in the file
			Configure the RouterBoard 532 series on-chip
			Ethernet adapter MAC address.

	kstack=N	[X86-32,X86-64] Print N words from the kernel stack
	kstack=N	[X86] Print N words from the kernel stack
			in oops dumps.

	l2cr=		[PPC]
@@ -1044,7 +1044,7 @@ and is between 256 and 4096 characters. It is defined in the file
	lapic		[X86-32,APIC] Enable the local APIC even if BIOS
			disabled it.

	lapic_timer_c2_ok	[X86-32,x86-64,APIC] trust the local apic timer
	lapic_timer_c2_ok	[X86,APIC] trust the local apic timer
			in C2 power state.

	libata.dma=	[LIBATA] DMA control
@@ -1229,7 +1229,7 @@ and is between 256 and 4096 characters. It is defined in the file
			[KNL,SH] Allow user to override the default size for
			per-device physically contiguous DMA buffers.

	memmap=exactmap	[KNL,X86-32,X86_64] Enable setting of an exact
	memmap=exactmap	[KNL,X86] Enable setting of an exact
			E820 memory map, as specified by the user.
			Such memmap=exactmap lines can be constructed based on
			BIOS output or other requirements. See the memmap=nn@ss
@@ -1320,7 +1320,7 @@ and is between 256 and 4096 characters. It is defined in the file
	mousedev.yres=	[MOUSE] Vertical screen resolution, used for devices
			reporting absolute coordinates, such as tablets

	movablecore=nn[KMG]	[KNL,X86-32,IA-64,PPC,X86-64] This parameter
	movablecore=nn[KMG]	[KNL,X86,IA-64,PPC] This parameter
			is similar to kernelcore except it specifies the
			amount of memory used for migratable allocations.
			If both kernelcore and movablecore is specified,
@@ -1422,7 +1422,7 @@ and is between 256 and 4096 characters. It is defined in the file
			when a NMI is triggered.
			Format: [state][,regs][,debounce][,die]

	nmi_watchdog=	[KNL,BUGS=X86-32,X86-64] Debugging features for SMP kernels
	nmi_watchdog=	[KNL,BUGS=X86] Debugging features for SMP kernels
			Format: [panic,][num]
			Valid num: 0,1,2
			0 - turn nmi_watchdog off
@@ -1475,11 +1475,11 @@ and is between 256 and 4096 characters. It is defined in the file

	nodsp		[SH] Disable hardware DSP at boot time.

	noefi		[X86-32,X86-64] Disable EFI runtime services support.
	noefi		[X86] Disable EFI runtime services support.

	noexec		[IA-64]

	noexec		[X86-32,X86-64]
	noexec		[X86]
			On X86-32 available only on PAE configured kernels.
			noexec=on: enable non-executable mappings (default)
			noexec=off: disable non-executable mappings
@@ -1525,7 +1525,7 @@ and is between 256 and 4096 characters. It is defined in the file
	noirqdebug	[X86-32] Disables the code which attempts to detect and
			disable unhandled interrupt sources.

	no_timer_check	[X86-32,X86_64,APIC] Disables the code which tests for
	no_timer_check	[X86,APIC] Disables the code which tests for
			broken timer IRQ sources.

	noisapnp	[ISAPNP] Disables ISA PnP code.
@@ -1689,7 +1689,7 @@ and is between 256 and 4096 characters. It is defined in the file
				disable the use of PCIE advanced error reporting.
		nodomains	[PCI] Disable support for multiple PCI
				root domains (aka PCI segments, in ACPI-speak).
		nommconf	[X86-32,X86_64] Disable use of MMCONFIG for PCI
		nommconf	[X86] Disable use of MMCONFIG for PCI
				Configuration
		nomsi		[MSI] If the PCI_MSI kernel config parameter is
				enabled, this kernel boot option can be used to
@@ -2380,7 +2380,7 @@ and is between 256 and 4096 characters. It is defined in the file
			reported either.

	unknown_nmi_panic
			[X86-32,X86-64]
			[X86]
			Set unknown_nmi_panic=1 early on boot.

	usbcore.autosuspend=
@@ -2447,12 +2447,12 @@ and is between 256 and 4096 characters. It is defined in the file
					medium is write-protected).
			Example: quirks=0419:aaf5:rl,0421:0433:rc

	vdso=		[X86-32,SH,x86-64]
	vdso=		[X86,SH]
			vdso=2: enable compat VDSO (default with COMPAT_VDSO)
			vdso=1: enable VDSO (default)
			vdso=0: disable VDSO mapping

	vdso32=		[X86-32,X86-64]
	vdso32=		[X86]
			vdso32=2: enable compat VDSO (default with COMPAT_VDSO)
			vdso32=1: enable 32-bit VDSO (default)
			vdso32=0: disable 32-bit VDSO mapping
+1 −1
Original line number Diff line number Diff line
@@ -1242,7 +1242,7 @@ monitoring is enabled, and vice-versa.
To add ARP targets:
# echo +192.168.0.100 > /sys/class/net/bond0/bonding/arp_ip_target
# echo +192.168.0.101 > /sys/class/net/bond0/bonding/arp_ip_target
	NOTE:  up to 10 target addresses may be specified.
	NOTE:  up to 16 target addresses may be specified.

To remove an ARP target:
# echo -192.168.0.100 > /sys/class/net/bond0/bonding/arp_ip_target
Loading