Skip to content

Commit d8a7f3b

Browse files
committed
Merge remote-tracking branch 'stable/linux-3.18.y' into rpi-3.18.y
2 parents 190b13d + d1034e8 commit d8a7f3b

File tree

165 files changed

+1595
-848
lines changed

Some content is hidden

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

165 files changed

+1595
-848
lines changed

Makefile

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
VERSION = 3
22
PATCHLEVEL = 18
3-
SUBLEVEL = 8
3+
SUBLEVEL = 9
44
EXTRAVERSION =
55
NAME = Diseased Newt
66

arch/arc/include/asm/pgtable.h

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -259,7 +259,8 @@ static inline void pmd_set(pmd_t *pmdp, pte_t *ptep)
259259
#define pmd_clear(xp) do { pmd_val(*(xp)) = 0; } while (0)
260260

261261
#define pte_page(x) (mem_map + \
262-
(unsigned long)(((pte_val(x) - PAGE_OFFSET) >> PAGE_SHIFT)))
262+
(unsigned long)(((pte_val(x) - CONFIG_LINUX_LINK_BASE) >> \
263+
PAGE_SHIFT)))
263264

264265
#define mk_pte(page, pgprot) \
265266
({ \

arch/arm/boot/dts/am335x-bone-common.dtsi

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -195,6 +195,7 @@
195195

196196
&usb0 {
197197
status = "okay";
198+
dr_mode = "peripheral";
198199
};
199200

200201
&usb1 {

arch/arm/boot/dts/bcm63138.dtsi

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -66,8 +66,9 @@
6666
reg = <0x1d000 0x1000>;
6767
cache-unified;
6868
cache-level = <2>;
69-
cache-sets = <16>;
70-
cache-size = <0x80000>;
69+
cache-size = <524288>;
70+
cache-sets = <1024>;
71+
cache-line-size = <32>;
7172
interrupts = <GIC_PPI 0 IRQ_TYPE_LEVEL_HIGH>;
7273
};
7374

arch/arm/boot/dts/tegra20.dtsi

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -68,9 +68,9 @@
6868
reset-names = "2d";
6969
};
7070

71-
gr3d@54140000 {
71+
gr3d@54180000 {
7272
compatible = "nvidia,tegra20-gr3d";
73-
reg = <0x54140000 0x00040000>;
73+
reg = <0x54180000 0x00040000>;
7474
clocks = <&tegra_car TEGRA20_CLK_GR3D>;
7575
resets = <&tegra_car 24>;
7676
reset-names = "3d";
@@ -130,9 +130,9 @@
130130
status = "disabled";
131131
};
132132

133-
dsi@542c0000 {
133+
dsi@54300000 {
134134
compatible = "nvidia,tegra20-dsi";
135-
reg = <0x542c0000 0x00040000>;
135+
reg = <0x54300000 0x00040000>;
136136
clocks = <&tegra_car TEGRA20_CLK_DSI>;
137137
resets = <&tegra_car 48>;
138138
reset-names = "dsi";

arch/arm/mach-mvebu/system-controller.c

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -126,7 +126,7 @@ int mvebu_system_controller_get_soc_id(u32 *dev, u32 *rev)
126126
return -ENODEV;
127127
}
128128

129-
#ifdef CONFIG_SMP
129+
#if defined(CONFIG_SMP) && defined(CONFIG_MACH_MVEBU_V7)
130130
void mvebu_armada375_smp_wa_init(void)
131131
{
132132
u32 dev, rev;

arch/arm/mach-omap2/omap_hwmod_7xx_data.c

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2017,7 +2017,7 @@ static struct omap_hwmod dra7xx_uart3_hwmod = {
20172017
.class = &dra7xx_uart_hwmod_class,
20182018
.clkdm_name = "l4per_clkdm",
20192019
.main_clk = "uart3_gfclk_mux",
2020-
.flags = HWMOD_SWSUP_SIDLE_ACT,
2020+
.flags = HWMOD_SWSUP_SIDLE_ACT | DEBUG_OMAP4UART3_FLAGS,
20212021
.prcm = {
20222022
.omap4 = {
20232023
.clkctrl_offs = DRA7XX_CM_L4PER_UART3_CLKCTRL_OFFSET,

arch/arm/mach-pxa/corgi.c

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -26,6 +26,7 @@
2626
#include <linux/i2c.h>
2727
#include <linux/i2c/pxa-i2c.h>
2828
#include <linux/io.h>
29+
#include <linux/regulator/machine.h>
2930
#include <linux/spi/spi.h>
3031
#include <linux/spi/ads7846.h>
3132
#include <linux/spi/corgi_lcd.h>
@@ -752,6 +753,8 @@ static void __init corgi_init(void)
752753
sharpsl_nand_partitions[1].size = 53 * 1024 * 1024;
753754

754755
platform_add_devices(devices, ARRAY_SIZE(devices));
756+
757+
regulator_has_full_constraints();
755758
}
756759

757760
static void __init fixup_corgi(struct tag *tags, char **cmdline)

arch/arm/mach-pxa/hx4700.c

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -893,6 +893,8 @@ static void __init hx4700_init(void)
893893
mdelay(10);
894894
gpio_set_value(GPIO71_HX4700_ASIC3_nRESET, 1);
895895
mdelay(10);
896+
897+
regulator_has_full_constraints();
896898
}
897899

898900
MACHINE_START(H4700, "HP iPAQ HX4700")

arch/arm/mach-pxa/poodle.c

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,7 @@
2525
#include <linux/gpio.h>
2626
#include <linux/i2c.h>
2727
#include <linux/i2c/pxa-i2c.h>
28+
#include <linux/regulator/machine.h>
2829
#include <linux/spi/spi.h>
2930
#include <linux/spi/ads7846.h>
3031
#include <linux/spi/pxa2xx_spi.h>
@@ -455,6 +456,7 @@ static void __init poodle_init(void)
455456
pxa_set_i2c_info(NULL);
456457
i2c_register_board_info(0, ARRAY_AND_SIZE(poodle_i2c_devices));
457458
poodle_init_spi();
459+
regulator_has_full_constraints();
458460
}
459461

460462
static void __init fixup_poodle(struct tag *tags, char **cmdline)

arch/arm/mach-sa1100/pm.c

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -81,6 +81,7 @@ static int sa11x0_pm_enter(suspend_state_t state)
8181
/*
8282
* Ensure not to come back here if it wasn't intended
8383
*/
84+
RCSR = RCSR_SMR;
8485
PSPR = 0;
8586

8687
/*

arch/arm/mach-vexpress/Kconfig

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -75,6 +75,7 @@ config ARCH_VEXPRESS_TC2_PM
7575
depends on MCPM
7676
select ARM_CCI
7777
select ARCH_VEXPRESS_SPC
78+
select ARM_CPU_SUSPEND
7879
help
7980
Support for CPU and cluster power management on Versatile Express
8081
with a TC2 (A15x2 A7x3) big.LITTLE core tile.

arch/arm64/kernel/signal32.c

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -154,8 +154,7 @@ int copy_siginfo_to_user32(compat_siginfo_t __user *to, const siginfo_t *from)
154154
case __SI_TIMER:
155155
err |= __put_user(from->si_tid, &to->si_tid);
156156
err |= __put_user(from->si_overrun, &to->si_overrun);
157-
err |= __put_user((compat_uptr_t)(unsigned long)from->si_ptr,
158-
&to->si_ptr);
157+
err |= __put_user(from->si_int, &to->si_int);
159158
break;
160159
case __SI_POLL:
161160
err |= __put_user(from->si_band, &to->si_band);
@@ -184,7 +183,7 @@ int copy_siginfo_to_user32(compat_siginfo_t __user *to, const siginfo_t *from)
184183
case __SI_MESGQ: /* But this is */
185184
err |= __put_user(from->si_pid, &to->si_pid);
186185
err |= __put_user(from->si_uid, &to->si_uid);
187-
err |= __put_user((compat_uptr_t)(unsigned long)from->si_ptr, &to->si_ptr);
186+
err |= __put_user(from->si_int, &to->si_int);
188187
break;
189188
default: /* this is just in case for now ... */
190189
err |= __put_user(from->si_pid, &to->si_pid);

arch/metag/include/asm/processor.h

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -149,8 +149,8 @@ extern void exit_thread(void);
149149

150150
unsigned long get_wchan(struct task_struct *p);
151151

152-
#define KSTK_EIP(tsk) ((tsk)->thread.kernel_context->CurrPC)
153-
#define KSTK_ESP(tsk) ((tsk)->thread.kernel_context->AX[0].U0)
152+
#define KSTK_EIP(tsk) (task_pt_regs(tsk)->ctx.CurrPC)
153+
#define KSTK_ESP(tsk) (task_pt_regs(tsk)->ctx.AX[0].U0)
154154

155155
#define user_stack_pointer(regs) ((regs)->ctx.AX[0].U0)
156156

arch/mips/alchemy/common/clock.c

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -128,6 +128,8 @@ static unsigned long alchemy_clk_cpu_recalc(struct clk_hw *hw,
128128
t = 396000000;
129129
else {
130130
t = alchemy_rdsys(AU1000_SYS_CPUPLL) & 0x7f;
131+
if (alchemy_get_cputype() < ALCHEMY_CPU_AU1300)
132+
t &= 0x3f;
131133
t *= parent_rate;
132134
}
133135

arch/mips/include/asm/asmmacro.h

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -304,7 +304,7 @@
304304
.set push
305305
.set noat
306306
SET_HARDFLOAT
307-
add $1, \base, \off
307+
addu $1, \base, \off
308308
.word LDD_MSA_INSN | (\wd << 6)
309309
.set pop
310310
.endm
@@ -313,7 +313,7 @@
313313
.set push
314314
.set noat
315315
SET_HARDFLOAT
316-
add $1, \base, \off
316+
addu $1, \base, \off
317317
.word STD_MSA_INSN | (\wd << 6)
318318
.set pop
319319
.endm

arch/mips/include/asm/cpu-info.h

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -84,6 +84,11 @@ struct cpuinfo_mips {
8484
* (shifted by _CACHE_SHIFT)
8585
*/
8686
unsigned int writecombine;
87+
/*
88+
* Simple counter to prevent enabling HTW in nested
89+
* htw_start/htw_stop calls
90+
*/
91+
unsigned int htw_seq;
8792
} __attribute__((aligned(SMP_CACHE_BYTES)));
8893

8994
extern struct cpuinfo_mips cpu_data[];

arch/mips/include/asm/mmu_context.h

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,6 @@ do { \
2525
if (cpu_has_htw) { \
2626
write_c0_pwbase(pgd); \
2727
back_to_back_c0_hazard(); \
28-
htw_reset(); \
2928
} \
3029
} while (0)
3130

@@ -142,6 +141,7 @@ static inline void switch_mm(struct mm_struct *prev, struct mm_struct *next,
142141
unsigned long flags;
143142
local_irq_save(flags);
144143

144+
htw_stop();
145145
/* Check if our ASID is of an older version and thus invalid */
146146
if ((cpu_context(cpu, next) ^ asid_cache(cpu)) & ASID_VERSION_MASK)
147147
get_new_mmu_context(next, cpu);
@@ -154,6 +154,7 @@ static inline void switch_mm(struct mm_struct *prev, struct mm_struct *next,
154154
*/
155155
cpumask_clear_cpu(cpu, mm_cpumask(prev));
156156
cpumask_set_cpu(cpu, mm_cpumask(next));
157+
htw_start();
157158

158159
local_irq_restore(flags);
159160
}
@@ -180,6 +181,7 @@ activate_mm(struct mm_struct *prev, struct mm_struct *next)
180181

181182
local_irq_save(flags);
182183

184+
htw_stop();
183185
/* Unconditionally get a new ASID. */
184186
get_new_mmu_context(next, cpu);
185187

@@ -189,6 +191,7 @@ activate_mm(struct mm_struct *prev, struct mm_struct *next)
189191
/* mark mmu ownership change */
190192
cpumask_clear_cpu(cpu, mm_cpumask(prev));
191193
cpumask_set_cpu(cpu, mm_cpumask(next));
194+
htw_start();
192195

193196
local_irq_restore(flags);
194197
}
@@ -203,6 +206,7 @@ drop_mmu_context(struct mm_struct *mm, unsigned cpu)
203206
unsigned long flags;
204207

205208
local_irq_save(flags);
209+
htw_stop();
206210

207211
if (cpumask_test_cpu(cpu, mm_cpumask(mm))) {
208212
get_new_mmu_context(mm, cpu);
@@ -211,6 +215,7 @@ drop_mmu_context(struct mm_struct *mm, unsigned cpu)
211215
/* will get a new context next time */
212216
cpu_context(cpu, mm) = 0;
213217
}
218+
htw_start();
214219
local_irq_restore(flags);
215220
}
216221

arch/mips/include/asm/pgtable.h

Lines changed: 25 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -99,29 +99,35 @@ extern void paging_init(void);
9999

100100
#define htw_stop() \
101101
do { \
102-
if (cpu_has_htw) \
103-
write_c0_pwctl(read_c0_pwctl() & \
104-
~(1 << MIPS_PWCTL_PWEN_SHIFT)); \
102+
unsigned long flags; \
103+
\
104+
if (cpu_has_htw) { \
105+
local_irq_save(flags); \
106+
if(!raw_current_cpu_data.htw_seq++) { \
107+
write_c0_pwctl(read_c0_pwctl() & \
108+
~(1 << MIPS_PWCTL_PWEN_SHIFT)); \
109+
back_to_back_c0_hazard(); \
110+
} \
111+
local_irq_restore(flags); \
112+
} \
105113
} while(0)
106114

107115
#define htw_start() \
108116
do { \
109-
if (cpu_has_htw) \
110-
write_c0_pwctl(read_c0_pwctl() | \
111-
(1 << MIPS_PWCTL_PWEN_SHIFT)); \
112-
} while(0)
113-
114-
115-
#define htw_reset() \
116-
do { \
117+
unsigned long flags; \
118+
\
117119
if (cpu_has_htw) { \
118-
htw_stop(); \
119-
back_to_back_c0_hazard(); \
120-
htw_start(); \
121-
back_to_back_c0_hazard(); \
120+
local_irq_save(flags); \
121+
if (!--raw_current_cpu_data.htw_seq) { \
122+
write_c0_pwctl(read_c0_pwctl() | \
123+
(1 << MIPS_PWCTL_PWEN_SHIFT)); \
124+
back_to_back_c0_hazard(); \
125+
} \
126+
local_irq_restore(flags); \
122127
} \
123128
} while(0)
124129

130+
125131
extern void set_pte_at(struct mm_struct *mm, unsigned long addr, pte_t *ptep,
126132
pte_t pteval);
127133

@@ -153,12 +159,13 @@ static inline void pte_clear(struct mm_struct *mm, unsigned long addr, pte_t *pt
153159
{
154160
pte_t null = __pte(0);
155161

162+
htw_stop();
156163
/* Preserve global status for the pair */
157164
if (ptep_buddy(ptep)->pte_low & _PAGE_GLOBAL)
158165
null.pte_low = null.pte_high = _PAGE_GLOBAL;
159166

160167
set_pte_at(mm, addr, ptep, null);
161-
htw_reset();
168+
htw_start();
162169
}
163170
#else
164171

@@ -188,14 +195,15 @@ static inline void set_pte(pte_t *ptep, pte_t pteval)
188195

189196
static inline void pte_clear(struct mm_struct *mm, unsigned long addr, pte_t *ptep)
190197
{
198+
htw_stop();
191199
#if !defined(CONFIG_CPU_R3000) && !defined(CONFIG_CPU_TX39XX)
192200
/* Preserve global status for the pair */
193201
if (pte_val(*ptep_buddy(ptep)) & _PAGE_GLOBAL)
194202
set_pte_at(mm, addr, ptep, __pte(_PAGE_GLOBAL));
195203
else
196204
#endif
197205
set_pte_at(mm, addr, ptep, __pte(0));
198-
htw_reset();
206+
htw_start();
199207
}
200208
#endif
201209

0 commit comments

Comments
 (0)