Skip to content

Commit 42cf0f2

Browse files
committed
Merge branch 'for-linus' of git://ftp.arm.linux.org.uk/~rmk/linux-arm
Pull ARM updates from Russell King: - clang assembly fixes from Ard - optimisations and cleanups for Aurora L2 cache support - efficient L2 cache support for secure monitor API on Exynos SoCs - debug menu cleanup from Daniel Thompson to allow better behaviour for multiplatform kernels - StrongARM SA11x0 conversion to irq domains, and pxa_timer - kprobes updates for older ARM CPUs - move probes support out of arch/arm/kernel to arch/arm/probes - add inline asm support for the rbit (reverse bits) instruction - provide an ARM mode secondary CPU entry point (for Qualcomm CPUs) - remove the unused ARMv3 user access code - add driver_override support to AMBA Primecell bus * 'for-linus' of git://ftp.arm.linux.org.uk/~rmk/linux-arm: (55 commits) ARM: 8256/1: driver coamba: add device binding path 'driver_override' ARM: 8301/1: qcom: Use secondary_startup_arm() ARM: 8302/1: Add a secondary_startup that assumes ARM mode ARM: 8300/1: teach __asmeq that r11 == fp and r12 == ip ARM: kprobes: Fix compilation error caused by superfluous '*' ARM: 8297/1: cache-l2x0: optimize aurora range operations ARM: 8296/1: cache-l2x0: clean up aurora cache handling ARM: 8284/1: sa1100: clear RCSR_SMR on resume ARM: 8283/1: sa1100: collie: clear PWER register on machine init ARM: 8282/1: sa1100: use handle_domain_irq ARM: 8281/1: sa1100: move GPIO-related IRQ code to gpio driver ARM: 8280/1: sa1100: switch to irq_domain_add_simple() ARM: 8279/1: sa1100: merge both GPIO irqdomains ARM: 8278/1: sa1100: split irq handling for low GPIOs ARM: 8291/1: replace magic number with PAGE_SHIFT macro in fixup_pv code ARM: 8290/1: decompressor: fix a wrong comment ARM: 8286/1: mm: Fix dma_contiguous_reserve comment ARM: 8248/1: pm: remove outdated comment ARM: 8274/1: Fix DEBUG_LL for multi-platform kernels (without PL01X) ARM: 8273/1: Seperate DEBUG_UART_PHYS from DEBUG_LL on EP93XX ...
2 parents a2f0bb0 + df9ab97 commit 42cf0f2

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

91 files changed

+2187
-1478
lines changed
Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,20 @@
1+
What: /sys/bus/amba/devices/.../driver_override
2+
Date: September 2014
3+
Contact: Antonios Motakis <[email protected]>
4+
Description:
5+
This file allows the driver for a device to be specified which
6+
will override standard OF, ACPI, ID table, and name matching.
7+
When specified, only a driver with a name matching the value
8+
written to driver_override will have an opportunity to bind to
9+
the device. The override is specified by writing a string to the
10+
driver_override file (echo vfio-amba > driver_override) and may
11+
be cleared with an empty string (echo > driver_override).
12+
This returns the device to standard matching rules binding.
13+
Writing to driver_override does not automatically unbind the
14+
device from its current driver or make any attempt to
15+
automatically load the specified driver. If no driver with a
16+
matching name is currently loaded in the kernel, the device will
17+
not bind to any driver. This also allows devices to opt-out of
18+
driver binding using a driver_override name such as "none".
19+
Only a single driver may be specified in the override, there is
20+
no support for parsing delimiters.

Documentation/devicetree/bindings/arm/l2cc.txt

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -57,6 +57,16 @@ Optional properties:
5757
- cache-id-part: cache id part number to be used if it is not present
5858
on hardware
5959
- wt-override: If present then L2 is forced to Write through mode
60+
- arm,double-linefill : Override double linefill enable setting. Enable if
61+
non-zero, disable if zero.
62+
- arm,double-linefill-incr : Override double linefill on INCR read. Enable
63+
if non-zero, disable if zero.
64+
- arm,double-linefill-wrap : Override double linefill on WRAP read. Enable
65+
if non-zero, disable if zero.
66+
- arm,prefetch-drop : Override prefetch drop enable setting. Enable if non-zero,
67+
disable if zero.
68+
- arm,prefetch-offset : Override prefetch offset value. Valid values are
69+
0-7, 15, 23, and 31.
6070

6171
Example:
6272

arch/arm/Kconfig

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -29,6 +29,7 @@ config ARM
2929
select HANDLE_DOMAIN_IRQ
3030
select HARDIRQS_SW_RESEND
3131
select HAVE_ARCH_AUDITSYSCALL if (AEABI && !OABI_COMPAT)
32+
select HAVE_ARCH_BITREVERSE if (CPU_32v7M || CPU_32v7) && !CPU_32v6
3233
select HAVE_ARCH_JUMP_LABEL if !XIP_KERNEL
3334
select HAVE_ARCH_KGDB
3435
select HAVE_ARCH_SECCOMP_FILTER if (AEABI && !OABI_COMPAT)
@@ -60,6 +61,7 @@ config ARM
6061
select HAVE_MEMBLOCK
6162
select HAVE_MOD_ARCH_SPECIFIC if ARM_UNWIND
6263
select HAVE_OPROFILE if (HAVE_PERF_EVENTS)
64+
select HAVE_OPTPROBES if !THUMB2_KERNEL
6365
select HAVE_PERF_EVENTS
6466
select HAVE_PERF_REGS
6567
select HAVE_PERF_USER_STACK_DUMP

arch/arm/Kconfig.debug

Lines changed: 81 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -397,6 +397,13 @@ choice
397397
Say Y here if you want the debug print routines to direct
398398
their output to UART1 serial port on KEYSTONE2 devices.
399399

400+
config DEBUG_KS8695_UART
401+
bool "KS8695 Debug UART"
402+
depends on ARCH_KS8695
403+
help
404+
Say Y here if you want kernel low-level debugging support
405+
on KS8695.
406+
400407
config DEBUG_MESON_UARTAO
401408
bool "Kernel low-level debugging via Meson6 UARTAO"
402409
depends on ARCH_MESON
@@ -496,6 +503,13 @@ choice
496503
Say Y here if you want kernel low-level debugging support
497504
on Vybrid based platforms.
498505

506+
config DEBUG_NETX_UART
507+
bool "Kernel low-level debugging messages via NetX UART"
508+
depends on ARCH_NETX
509+
help
510+
Say Y here if you want kernel low-level debugging support
511+
on Hilscher NetX based platforms.
512+
499513
config DEBUG_NOMADIK_UART
500514
bool "Kernel low-level debugging messages via NOMADIK UART"
501515
depends on ARCH_NOMADIK
@@ -520,6 +534,30 @@ choice
520534
Say Y here if you want kernel low-level debugging support
521535
on TI-NSPIRE CX models.
522536

537+
config DEBUG_OMAP1UART1
538+
bool "Kernel low-level debugging via OMAP1 UART1"
539+
depends on ARCH_OMAP1
540+
select DEBUG_UART_8250
541+
help
542+
Say Y here if you want kernel low-level debugging support
543+
on OMAP1 based platforms (except OMAP730) on the UART1.
544+
545+
config DEBUG_OMAP1UART2
546+
bool "Kernel low-level debugging via OMAP1 UART2"
547+
depends on ARCH_OMAP1
548+
select DEBUG_UART_8250
549+
help
550+
Say Y here if you want kernel low-level debugging support
551+
on OMAP1 based platforms (except OMAP730) on the UART2.
552+
553+
config DEBUG_OMAP1UART3
554+
bool "Kernel low-level debugging via OMAP1 UART3"
555+
depends on ARCH_OMAP1
556+
select DEBUG_UART_8250
557+
help
558+
Say Y here if you want kernel low-level debugging support
559+
on OMAP1 based platforms (except OMAP730) on the UART3.
560+
523561
config DEBUG_OMAP2UART1
524562
bool "OMAP2/3/4 UART1 (omap2/3 sdp boards and some omap3 boards)"
525563
depends on ARCH_OMAP2PLUS
@@ -562,6 +600,30 @@ choice
562600
depends on ARCH_OMAP2PLUS
563601
select DEBUG_OMAP2PLUS_UART
564602

603+
config DEBUG_OMAP7XXUART1
604+
bool "Kernel low-level debugging via OMAP730 UART1"
605+
depends on ARCH_OMAP730
606+
select DEBUG_UART_8250
607+
help
608+
Say Y here if you want kernel low-level debugging support
609+
on OMAP730 based platforms on the UART1.
610+
611+
config DEBUG_OMAP7XXUART2
612+
bool "Kernel low-level debugging via OMAP730 UART2"
613+
depends on ARCH_OMAP730
614+
select DEBUG_UART_8250
615+
help
616+
Say Y here if you want kernel low-level debugging support
617+
on OMAP730 based platforms on the UART2.
618+
619+
config DEBUG_OMAP7XXUART3
620+
bool "Kernel low-level debugging via OMAP730 UART3"
621+
depends on ARCH_OMAP730
622+
select DEBUG_UART_8250
623+
help
624+
Say Y here if you want kernel low-level debugging support
625+
on OMAP730 based platforms on the UART3.
626+
565627
config DEBUG_TI81XXUART1
566628
bool "Kernel low-level debugging messages via TI81XX UART1 (ti8148evm)"
567629
depends on ARCH_OMAP2PLUS
@@ -1031,15 +1093,6 @@ choice
10311093
This option selects UART0 on VIA/Wondermedia System-on-a-chip
10321094
devices, including VT8500, WM8505, WM8650 and WM8850.
10331095

1034-
config DEBUG_LL_UART_NONE
1035-
bool "No low-level debugging UART"
1036-
depends on !ARCH_MULTIPLATFORM
1037-
help
1038-
Say Y here if your platform doesn't provide a UART option
1039-
above. This relies on your platform choosing the right UART
1040-
definition internally in order for low-level debugging to
1041-
work.
1042-
10431096
config DEBUG_ICEDCC
10441097
bool "Kernel low-level debugging via EmbeddedICE DCC channel"
10451098
help
@@ -1183,7 +1236,9 @@ config DEBUG_LL_INCLUDE
11831236
DEBUG_IMX6Q_UART || \
11841237
DEBUG_IMX6SL_UART || \
11851238
DEBUG_IMX6SX_UART
1239+
default "debug/ks8695.S" if DEBUG_KS8695_UART
11861240
default "debug/msm.S" if DEBUG_MSM_UART || DEBUG_QCOM_UARTDM
1241+
default "debug/netx.S" if DEBUG_NETX_UART
11871242
default "debug/omap2plus.S" if DEBUG_OMAP2PLUS_UART
11881243
default "debug/renesas-scif.S" if DEBUG_R7S72100_SCIF2
11891244
default "debug/renesas-scif.S" if DEBUG_RCAR_GEN1_SCIF0
@@ -1208,12 +1263,7 @@ config DEBUG_LL_INCLUDE
12081263

12091264
# Compatibility options for PL01x
12101265
config DEBUG_UART_PL01X
1211-
def_bool ARCH_EP93XX || \
1212-
ARCH_INTEGRATOR || \
1213-
ARCH_SPEAR3XX || \
1214-
ARCH_SPEAR6XX || \
1215-
ARCH_SPEAR13XX || \
1216-
ARCH_VERSATILE
1266+
bool
12171267

12181268
# Compatibility options for 8250
12191269
config DEBUG_UART_8250
@@ -1229,6 +1279,7 @@ config DEBUG_UART_BCM63XX
12291279

12301280
config DEBUG_UART_PHYS
12311281
hex "Physical base address of debug UART"
1282+
default 0x00100a00 if DEBUG_NETX_UART
12321283
default 0x01c20000 if DEBUG_DAVINCI_DMx_UART0
12331284
default 0x01c28000 if DEBUG_SUNXI_UART0
12341285
default 0x01c28400 if DEBUG_SUNXI_UART1
@@ -1269,7 +1320,6 @@ config DEBUG_UART_PHYS
12691320
DEBUG_S3C2410_UART2)
12701321
default 0x78000000 if DEBUG_CNS3XXX
12711322
default 0x7c0003f8 if FOOTBRIDGE
1272-
default 0x78000000 if DEBUG_CNS3XXX
12731323
default 0x80010000 if DEBUG_ASM9260_UART
12741324
default 0x80070000 if DEBUG_IMX23_UART
12751325
default 0x80074000 if DEBUG_IMX28_UART
@@ -1310,12 +1360,17 @@ config DEBUG_UART_PHYS
13101360
default 0xffe40000 if DEBUG_RCAR_GEN1_SCIF0
13111361
default 0xffe42000 if DEBUG_RCAR_GEN1_SCIF2
13121362
default 0xfff36000 if DEBUG_HIGHBANK_UART
1363+
default 0xfffb0000 if DEBUG_OMAP1UART1 || DEBUG_OMAP7XXUART1
1364+
default 0xfffb0800 if DEBUG_OMAP1UART2 || DEBUG_OMAP7XXUART2
1365+
default 0xfffb9800 if DEBUG_OMAP1UART3 || DEBUG_OMAP7XXUART3
13131366
default 0xfffe8600 if DEBUG_UART_BCM63XX
13141367
default 0xfffff700 if ARCH_IOP33X
1315-
depends on DEBUG_LL_UART_8250 || DEBUG_LL_UART_PL01X || \
1368+
depends on ARCH_EP93XX || \
1369+
DEBUG_LL_UART_8250 || DEBUG_LL_UART_PL01X || \
13161370
DEBUG_LL_UART_EFM32 || \
13171371
DEBUG_UART_8250 || DEBUG_UART_PL01X || DEBUG_MESON_UARTAO || \
1318-
DEBUG_MSM_UART || DEBUG_QCOM_UARTDM || DEBUG_R7S72100_SCIF2 || \
1372+
DEBUG_MSM_UART || DEBUG_NETX_UART || \
1373+
DEBUG_QCOM_UARTDM || DEBUG_R7S72100_SCIF2 || \
13191374
DEBUG_RCAR_GEN1_SCIF0 || DEBUG_RCAR_GEN1_SCIF2 || \
13201375
DEBUG_RCAR_GEN2_SCIF0 || DEBUG_RCAR_GEN2_SCIF2 || \
13211376
DEBUG_RMOBILE_SCIFA0 || DEBUG_RMOBILE_SCIFA1 || \
@@ -1324,6 +1379,7 @@ config DEBUG_UART_PHYS
13241379

13251380
config DEBUG_UART_VIRT
13261381
hex "Virtual base address of debug UART"
1382+
default 0xe0000a00 if DEBUG_NETX_UART
13271383
default 0xe0010fe0 if ARCH_RPC
13281384
default 0xe1000000 if DEBUG_MSM_UART
13291385
default 0xf0000be0 if ARCH_EBSA110
@@ -1392,18 +1448,23 @@ config DEBUG_UART_VIRT
13921448
default 0xfef00000 if ARCH_IXP4XX && !CPU_BIG_ENDIAN
13931449
default 0xfef00003 if ARCH_IXP4XX && CPU_BIG_ENDIAN
13941450
default 0xfef36000 if DEBUG_HIGHBANK_UART
1451+
default 0xfefb0000 if DEBUG_OMAP1UART1 || DEBUG_OMAP7XXUART1
1452+
default 0xfefb0800 if DEBUG_OMAP1UART2 || DEBUG_OMAP7XXUART2
1453+
default 0xfefb9800 if DEBUG_OMAP1UART3 || DEBUG_OMAP7XXUART3
13951454
default 0xfefff700 if ARCH_IOP33X
13961455
default 0xff003000 if DEBUG_U300_UART
13971456
default DEBUG_UART_PHYS if !MMU
13981457
depends on DEBUG_LL_UART_8250 || DEBUG_LL_UART_PL01X || \
13991458
DEBUG_UART_8250 || DEBUG_UART_PL01X || DEBUG_MESON_UARTAO || \
1400-
DEBUG_MSM_UART || DEBUG_QCOM_UARTDM || DEBUG_S3C24XX_UART || \
1459+
DEBUG_MSM_UART || DEBUG_NETX_UART || \
1460+
DEBUG_QCOM_UARTDM || DEBUG_S3C24XX_UART || \
14011461
DEBUG_UART_BCM63XX || DEBUG_ASM9260_UART
14021462

14031463
config DEBUG_UART_8250_SHIFT
14041464
int "Register offset shift for the 8250 debug UART"
14051465
depends on DEBUG_LL_UART_8250 || DEBUG_UART_8250
1406-
default 0 if FOOTBRIDGE || ARCH_IOP32X || DEBUG_BCM_5301X
1466+
default 0 if FOOTBRIDGE || ARCH_IOP32X || DEBUG_BCM_5301X || \
1467+
DEBUG_OMAP7XXUART1 || DEBUG_OMAP7XXUART2 || DEBUG_OMAP7XXUART3
14071468
default 2
14081469

14091470
config DEBUG_UART_8250_WORD

arch/arm/Makefile

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -266,6 +266,7 @@ core-$(CONFIG_KVM_ARM_HOST) += arch/arm/kvm/
266266

267267
# If we have a machine-specific directory, then include it in the build.
268268
core-y += arch/arm/kernel/ arch/arm/mm/ arch/arm/common/
269+
core-y += arch/arm/probes/
269270
core-y += arch/arm/net/
270271
core-y += arch/arm/crypto/
271272
core-y += arch/arm/firmware/

arch/arm/boot/compressed/head.S

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -178,7 +178,7 @@ not_angel:
178178

179179
/*
180180
* Set up a page table only if it won't overwrite ourself.
181-
* That means r4 < pc && r4 - 16k page directory > &_end.
181+
* That means r4 < pc || r4 - 16k page directory > &_end.
182182
* Given that r4 > &_end is most unfrequent, we add a rough
183183
* additional 1MB of room for a possible appended DTB.
184184
*/

arch/arm/boot/dts/exynos4210.dtsi

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -81,6 +81,15 @@
8181
reg = <0x10023CA0 0x20>;
8282
};
8383

84+
l2c: l2-cache-controller@10502000 {
85+
compatible = "arm,pl310-cache";
86+
reg = <0x10502000 0x1000>;
87+
cache-unified;
88+
cache-level = <2>;
89+
arm,tag-latency = <2 2 1>;
90+
arm,data-latency = <2 2 1>;
91+
};
92+
8493
gic: interrupt-controller@10490000 {
8594
cpu-offset = <0x8000>;
8695
};

arch/arm/boot/dts/exynos4x12.dtsi

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -54,6 +54,20 @@
5454
reg = <0x10023CA0 0x20>;
5555
};
5656

57+
l2c: l2-cache-controller@10502000 {
58+
compatible = "arm,pl310-cache";
59+
reg = <0x10502000 0x1000>;
60+
cache-unified;
61+
cache-level = <2>;
62+
arm,tag-latency = <2 2 1>;
63+
arm,data-latency = <3 2 1>;
64+
arm,double-linefill = <1>;
65+
arm,double-linefill-incr = <0>;
66+
arm,double-linefill-wrap = <1>;
67+
arm,prefetch-drop = <1>;
68+
arm,prefetch-offset = <7>;
69+
};
70+
5771
clock: clock-controller@10030000 {
5872
compatible = "samsung,exynos4412-clock";
5973
reg = <0x10030000 0x20000>;

arch/arm/configs/iop32x_defconfig

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -106,6 +106,7 @@ CONFIG_MAGIC_SYSRQ=y
106106
CONFIG_DEBUG_KERNEL=y
107107
CONFIG_DEBUG_USER=y
108108
CONFIG_DEBUG_LL=y
109+
CONFIG_DEBUG_LL_UART_8250=y
109110
CONFIG_KEYS=y
110111
CONFIG_KEYS_DEBUG_PROC_KEYS=y
111112
CONFIG_CRYPTO_NULL=y

arch/arm/configs/iop33x_defconfig

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -87,5 +87,6 @@ CONFIG_DEBUG_KERNEL=y
8787
# CONFIG_RCU_CPU_STALL_DETECTOR is not set
8888
CONFIG_DEBUG_USER=y
8989
CONFIG_DEBUG_LL=y
90+
CONFIG_DEBUG_LL_UART_8250=y
9091
# CONFIG_CRYPTO_ANSI_CPRNG is not set
9192
# CONFIG_CRC32 is not set

arch/arm/configs/ixp4xx_defconfig

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -202,3 +202,4 @@ CONFIG_MAGIC_SYSRQ=y
202202
CONFIG_DEBUG_KERNEL=y
203203
CONFIG_DEBUG_ERRORS=y
204204
CONFIG_DEBUG_LL=y
205+
CONFIG_DEBUG_LL_UART_8250=y

arch/arm/configs/lpc32xx_defconfig

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -204,6 +204,7 @@ CONFIG_DEBUG_INFO=y
204204
# CONFIG_FTRACE is not set
205205
# CONFIG_ARM_UNWIND is not set
206206
CONFIG_DEBUG_LL=y
207+
CONFIG_DEBUG_LL_UART_8250=y
207208
CONFIG_EARLY_PRINTK=y
208209
CONFIG_CRYPTO_ANSI_CPRNG=y
209210
# CONFIG_CRYPTO_HW is not set

arch/arm/configs/mv78xx0_defconfig

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -132,6 +132,7 @@ CONFIG_SYSCTL_SYSCALL_CHECK=y
132132
CONFIG_DEBUG_USER=y
133133
CONFIG_DEBUG_ERRORS=y
134134
CONFIG_DEBUG_LL=y
135+
CONFIG_DEBUG_LL_UART_8250=y
135136
CONFIG_CRYPTO_CBC=m
136137
CONFIG_CRYPTO_ECB=m
137138
CONFIG_CRYPTO_PCBC=m

arch/arm/configs/orion5x_defconfig

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -156,6 +156,7 @@ CONFIG_LATENCYTOP=y
156156
# CONFIG_FTRACE is not set
157157
CONFIG_DEBUG_USER=y
158158
CONFIG_DEBUG_LL=y
159+
CONFIG_DEBUG_LL_UART_8250=y
159160
CONFIG_CRYPTO_CBC=m
160161
CONFIG_CRYPTO_ECB=m
161162
CONFIG_CRYPTO_PCBC=m

arch/arm/configs/rpc_defconfig

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -131,3 +131,4 @@ CONFIG_DEBUG_KERNEL=y
131131
CONFIG_DEBUG_USER=y
132132
CONFIG_DEBUG_ERRORS=y
133133
CONFIG_DEBUG_LL=y
134+
CONFIG_DEBUG_LL_UART_8250=y

arch/arm/include/asm/bitrev.h

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,20 @@
1+
#ifndef __ASM_BITREV_H
2+
#define __ASM_BITREV_H
3+
4+
static __always_inline __attribute_const__ u32 __arch_bitrev32(u32 x)
5+
{
6+
__asm__ ("rbit %0, %1" : "=r" (x) : "r" (x));
7+
return x;
8+
}
9+
10+
static __always_inline __attribute_const__ u16 __arch_bitrev16(u16 x)
11+
{
12+
return __arch_bitrev32((u32)x) >> 16;
13+
}
14+
15+
static __always_inline __attribute_const__ u8 __arch_bitrev8(u8 x)
16+
{
17+
return __arch_bitrev32((u32)x) >> 24;
18+
}
19+
20+
#endif

0 commit comments

Comments
 (0)