Skip to content

Commit d983367

Browse files
author
Alex Shi
committed
Merge tag 'v4.4.98' into linux-linaro-lsk-v4.4
This is the 4.4.98 stable release
2 parents 7effd4c + c4e3d53 commit d983367

59 files changed

Lines changed: 451 additions & 254 deletions

File tree

Some content is hidden

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

Makefile

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
VERSION = 4
22
PATCHLEVEL = 4
3-
SUBLEVEL = 97
3+
SUBLEVEL = 98
44
EXTRAVERSION =
55
NAME = Blurry Fish Butt
66

arch/arm/configs/omap2plus_defconfig

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -221,6 +221,7 @@ CONFIG_SERIO=m
221221
CONFIG_SERIAL_8250=y
222222
CONFIG_SERIAL_8250_CONSOLE=y
223223
CONFIG_SERIAL_8250_NR_UARTS=32
224+
CONFIG_SERIAL_8250_RUNTIME_UARTS=6
224225
CONFIG_SERIAL_8250_EXTENDED=y
225226
CONFIG_SERIAL_8250_MANY_PORTS=y
226227
CONFIG_SERIAL_8250_SHARE_IRQ=y

arch/arm/kernel/traps.c

Lines changed: 18 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -132,30 +132,26 @@ static void dump_mem(const char *lvl, const char *str, unsigned long bottom,
132132
set_fs(fs);
133133
}
134134

135-
static void dump_instr(const char *lvl, struct pt_regs *regs)
135+
static void __dump_instr(const char *lvl, struct pt_regs *regs)
136136
{
137137
unsigned long addr = instruction_pointer(regs);
138138
const int thumb = thumb_mode(regs);
139139
const int width = thumb ? 4 : 8;
140-
mm_segment_t fs;
141140
char str[sizeof("00000000 ") * 5 + 2 + 1], *p = str;
142141
int i;
143142

144143
/*
145-
* We need to switch to kernel mode so that we can use __get_user
146-
* to safely read from kernel space. Note that we now dump the
147-
* code first, just in case the backtrace kills us.
144+
* Note that we now dump the code first, just in case the backtrace
145+
* kills us.
148146
*/
149-
fs = get_fs();
150-
set_fs(KERNEL_DS);
151147

152148
for (i = -4; i < 1 + !!thumb; i++) {
153149
unsigned int val, bad;
154150

155151
if (thumb)
156-
bad = __get_user(val, &((u16 *)addr)[i]);
152+
bad = get_user(val, &((u16 *)addr)[i]);
157153
else
158-
bad = __get_user(val, &((u32 *)addr)[i]);
154+
bad = get_user(val, &((u32 *)addr)[i]);
159155

160156
if (!bad)
161157
p += sprintf(p, i == 0 ? "(%0*x) " : "%0*x ",
@@ -166,8 +162,20 @@ static void dump_instr(const char *lvl, struct pt_regs *regs)
166162
}
167163
}
168164
printk("%sCode: %s\n", lvl, str);
165+
}
169166

170-
set_fs(fs);
167+
static void dump_instr(const char *lvl, struct pt_regs *regs)
168+
{
169+
mm_segment_t fs;
170+
171+
if (!user_mode(regs)) {
172+
fs = get_fs();
173+
set_fs(KERNEL_DS);
174+
__dump_instr(lvl, regs);
175+
set_fs(fs);
176+
} else {
177+
__dump_instr(lvl, regs);
178+
}
171179
}
172180

173181
#ifdef CONFIG_ARM_UNWIND

arch/mips/ar7/platform.c

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -576,6 +576,7 @@ static int __init ar7_register_uarts(void)
576576
uart_port.type = PORT_AR7;
577577
uart_port.uartclk = clk_get_rate(bus_clk) / 2;
578578
uart_port.iotype = UPIO_MEM32;
579+
uart_port.flags = UPF_FIXED_TYPE;
579580
uart_port.regshift = 2;
580581

581582
uart_port.line = 0;
@@ -654,6 +655,10 @@ static int __init ar7_register_devices(void)
654655
u32 val;
655656
int res;
656657

658+
res = ar7_gpio_init();
659+
if (res)
660+
pr_warn("unable to register gpios: %d\n", res);
661+
657662
res = ar7_register_uarts();
658663
if (res)
659664
pr_err("unable to setup uart(s): %d\n", res);

arch/mips/ar7/prom.c

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -246,8 +246,6 @@ void __init prom_init(void)
246246
ar7_init_cmdline(fw_arg0, (char **)fw_arg1);
247247
ar7_init_env((struct env_var *)fw_arg2);
248248
console_config();
249-
250-
ar7_gpio_init();
251249
}
252250

253251
#define PORT(offset) (KSEG1ADDR(AR7_REGS_UART0 + (offset * 4)))

arch/mips/include/asm/mips-cm.h

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -238,8 +238,8 @@ BUILD_CM_Cx_R_(tcid_8_priority, 0x80)
238238
#define CM_GCR_BASE_GCRBASE_MSK (_ULCAST_(0x1ffff) << 15)
239239
#define CM_GCR_BASE_CMDEFTGT_SHF 0
240240
#define CM_GCR_BASE_CMDEFTGT_MSK (_ULCAST_(0x3) << 0)
241-
#define CM_GCR_BASE_CMDEFTGT_DISABLED 0
242-
#define CM_GCR_BASE_CMDEFTGT_MEM 1
241+
#define CM_GCR_BASE_CMDEFTGT_MEM 0
242+
#define CM_GCR_BASE_CMDEFTGT_RESERVED 1
243243
#define CM_GCR_BASE_CMDEFTGT_IOCU0 2
244244
#define CM_GCR_BASE_CMDEFTGT_IOCU1 3
245245

arch/mips/kernel/process.c

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -49,9 +49,7 @@
4949
#ifdef CONFIG_HOTPLUG_CPU
5050
void arch_cpu_idle_dead(void)
5151
{
52-
/* What the heck is this check doing ? */
53-
if (!cpumask_test_cpu(smp_processor_id(), &cpu_callin_map))
54-
play_dead();
52+
play_dead();
5553
}
5654
#endif
5755

arch/mips/kernel/smp.c

Lines changed: 21 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -64,6 +64,9 @@ EXPORT_SYMBOL(cpu_sibling_map);
6464
cpumask_t cpu_core_map[NR_CPUS] __read_mostly;
6565
EXPORT_SYMBOL(cpu_core_map);
6666

67+
static DECLARE_COMPLETION(cpu_starting);
68+
static DECLARE_COMPLETION(cpu_running);
69+
6770
/*
6871
* A logcal cpu mask containing only one VPE per core to
6972
* reduce the number of IPIs on large MT systems.
@@ -174,16 +177,25 @@ asmlinkage void start_secondary(void)
174177
cpumask_set_cpu(cpu, &cpu_coherent_mask);
175178
notify_cpu_starting(cpu);
176179

177-
cpumask_set_cpu(cpu, &cpu_callin_map);
180+
/* Notify boot CPU that we're starting & ready to sync counters */
181+
complete(&cpu_starting);
182+
178183
synchronise_count_slave(cpu);
179184

185+
/* The CPU is running and counters synchronised, now mark it online */
180186
set_cpu_online(cpu, true);
181187

182188
set_cpu_sibling_map(cpu);
183189
set_cpu_core_map(cpu);
184190

185191
calculate_cpu_foreign_map();
186192

193+
/*
194+
* Notify boot CPU that we're up & online and it can safely return
195+
* from __cpu_up
196+
*/
197+
complete(&cpu_running);
198+
187199
/*
188200
* irq will be enabled in ->smp_finish(), enabling it too early
189201
* is dangerous.
@@ -242,22 +254,23 @@ void smp_prepare_boot_cpu(void)
242254
{
243255
set_cpu_possible(0, true);
244256
set_cpu_online(0, true);
245-
cpumask_set_cpu(0, &cpu_callin_map);
246257
}
247258

248259
int __cpu_up(unsigned int cpu, struct task_struct *tidle)
249260
{
250261
mp_ops->boot_secondary(cpu, tidle);
251262

252-
/*
253-
* Trust is futile. We should really have timeouts ...
254-
*/
255-
while (!cpumask_test_cpu(cpu, &cpu_callin_map)) {
256-
udelay(100);
257-
schedule();
263+
/* Wait for CPU to start and be ready to sync counters */
264+
if (!wait_for_completion_timeout(&cpu_starting,
265+
msecs_to_jiffies(1000))) {
266+
pr_crit("CPU%u: failed to start\n", cpu);
267+
return -EIO;
258268
}
259269

260270
synchronise_count_master(cpu);
271+
272+
/* Wait for CPU to finish startup & mark itself online before return */
273+
wait_for_completion(&cpu_running);
261274
return 0;
262275
}
263276

arch/mips/mm/uasm-micromips.c

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -75,7 +75,7 @@ static struct insn insn_table_MM[] = {
7575
{ insn_jr, M(mm_pool32a_op, 0, 0, 0, mm_jalr_op, mm_pool32axf_op), RS },
7676
{ insn_lb, M(mm_lb32_op, 0, 0, 0, 0, 0), RT | RS | SIMM },
7777
{ insn_ld, 0, 0 },
78-
{ insn_lh, M(mm_lh32_op, 0, 0, 0, 0, 0), RS | RS | SIMM },
78+
{ insn_lh, M(mm_lh32_op, 0, 0, 0, 0, 0), RT | RS | SIMM },
7979
{ insn_ll, M(mm_pool32c_op, 0, 0, (mm_ll_func << 1), 0, 0), RS | RT | SIMM },
8080
{ insn_lld, 0, 0 },
8181
{ insn_lui, M(mm_pool32i_op, mm_lui_op, 0, 0, 0, 0), RS | SIMM },

arch/powerpc/boot/dts/fsl/kmcoge4.dts

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -83,6 +83,10 @@
8383
};
8484
};
8585

86+
sdhc@114000 {
87+
status = "disabled";
88+
};
89+
8690
i2c@119000 {
8791
status = "disabled";
8892
};

0 commit comments

Comments
 (0)