Skip to content

Commit 2bf7955

Browse files
author
Alex Shi
committed
Merge tag 'v4.4.8' into linux-linaro-lsk-v4.4
This is the 4.4.8 stable release
2 parents ad592b7 + 8c9aef0 commit 2bf7955

153 files changed

Lines changed: 1334 additions & 594 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.

Documentation/devicetree/bindings/pinctrl/img,pistachio-pinctrl.txt

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -134,12 +134,12 @@ mfio80 ddr_debug, mips_trace_data, mips_debug
134134
mfio81 dreq0, mips_trace_data, eth_debug
135135
mfio82 dreq1, mips_trace_data, eth_debug
136136
mfio83 mips_pll_lock, mips_trace_data, usb_debug
137-
mfio84 sys_pll_lock, mips_trace_data, usb_debug
138-
mfio85 wifi_pll_lock, mips_trace_data, sdhost_debug
139-
mfio86 bt_pll_lock, mips_trace_data, sdhost_debug
140-
mfio87 rpu_v_pll_lock, dreq2, socif_debug
141-
mfio88 rpu_l_pll_lock, dreq3, socif_debug
142-
mfio89 audio_pll_lock, dreq4, dreq5
137+
mfio84 audio_pll_lock, mips_trace_data, usb_debug
138+
mfio85 rpu_v_pll_lock, mips_trace_data, sdhost_debug
139+
mfio86 rpu_l_pll_lock, mips_trace_data, sdhost_debug
140+
mfio87 sys_pll_lock, dreq2, socif_debug
141+
mfio88 wifi_pll_lock, dreq3, socif_debug
142+
mfio89 bt_pll_lock, dreq4, dreq5
143143
tck
144144
trstn
145145
tdi

Documentation/kernel-parameters.txt

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3932,6 +3932,8 @@ bytes respectively. Such letter suffixes can also be entirely omitted.
39323932
sector if the number is odd);
39333933
i = IGNORE_DEVICE (don't bind to this
39343934
device);
3935+
j = NO_REPORT_LUNS (don't use report luns
3936+
command, uas only);
39353937
l = NOT_LOCKABLE (don't try to lock and
39363938
unlock ejectable media);
39373939
m = MAX_SECTORS_64 (don't transfer more

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 = 7
3+
SUBLEVEL = 8
44
EXTRAVERSION =
55
NAME = Blurry Fish Butt
66

arch/arm64/include/asm/opcodes.h

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1 +1,5 @@
1+
#ifdef CONFIG_CPU_BIG_ENDIAN
2+
#define CONFIG_CPU_ENDIAN_BE8 CONFIG_CPU_BIG_ENDIAN
3+
#endif
4+
15
#include <../../arm/include/asm/opcodes.h>

arch/arm64/kernel/debug-monitors.c

Lines changed: 11 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -186,20 +186,21 @@ static void clear_regs_spsr_ss(struct pt_regs *regs)
186186

187187
/* EL1 Single Step Handler hooks */
188188
static LIST_HEAD(step_hook);
189-
static DEFINE_RWLOCK(step_hook_lock);
189+
static DEFINE_SPINLOCK(step_hook_lock);
190190

191191
void register_step_hook(struct step_hook *hook)
192192
{
193-
write_lock(&step_hook_lock);
194-
list_add(&hook->node, &step_hook);
195-
write_unlock(&step_hook_lock);
193+
spin_lock(&step_hook_lock);
194+
list_add_rcu(&hook->node, &step_hook);
195+
spin_unlock(&step_hook_lock);
196196
}
197197

198198
void unregister_step_hook(struct step_hook *hook)
199199
{
200-
write_lock(&step_hook_lock);
201-
list_del(&hook->node);
202-
write_unlock(&step_hook_lock);
200+
spin_lock(&step_hook_lock);
201+
list_del_rcu(&hook->node);
202+
spin_unlock(&step_hook_lock);
203+
synchronize_rcu();
203204
}
204205

205206
/*
@@ -213,15 +214,15 @@ static int call_step_hook(struct pt_regs *regs, unsigned int esr)
213214
struct step_hook *hook;
214215
int retval = DBG_HOOK_ERROR;
215216

216-
read_lock(&step_hook_lock);
217+
rcu_read_lock();
217218

218-
list_for_each_entry(hook, &step_hook, node) {
219+
list_for_each_entry_rcu(hook, &step_hook, node) {
219220
retval = hook->fn(regs, esr);
220221
if (retval == DBG_HOOK_HANDLED)
221222
break;
222223
}
223224

224-
read_unlock(&step_hook_lock);
225+
rcu_read_unlock();
225226

226227
return retval;
227228
}

arch/mips/alchemy/devboards/db1000.c

Lines changed: 8 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -503,15 +503,15 @@ int __init db1000_dev_setup(void)
503503
if (board == BCSR_WHOAMI_DB1500) {
504504
c0 = AU1500_GPIO2_INT;
505505
c1 = AU1500_GPIO5_INT;
506-
d0 = AU1500_GPIO0_INT;
507-
d1 = AU1500_GPIO3_INT;
506+
d0 = 0; /* GPIO number, NOT irq! */
507+
d1 = 3; /* GPIO number, NOT irq! */
508508
s0 = AU1500_GPIO1_INT;
509509
s1 = AU1500_GPIO4_INT;
510510
} else if (board == BCSR_WHOAMI_DB1100) {
511511
c0 = AU1100_GPIO2_INT;
512512
c1 = AU1100_GPIO5_INT;
513-
d0 = AU1100_GPIO0_INT;
514-
d1 = AU1100_GPIO3_INT;
513+
d0 = 0; /* GPIO number, NOT irq! */
514+
d1 = 3; /* GPIO number, NOT irq! */
515515
s0 = AU1100_GPIO1_INT;
516516
s1 = AU1100_GPIO4_INT;
517517

@@ -545,15 +545,15 @@ int __init db1000_dev_setup(void)
545545
} else if (board == BCSR_WHOAMI_DB1000) {
546546
c0 = AU1000_GPIO2_INT;
547547
c1 = AU1000_GPIO5_INT;
548-
d0 = AU1000_GPIO0_INT;
549-
d1 = AU1000_GPIO3_INT;
548+
d0 = 0; /* GPIO number, NOT irq! */
549+
d1 = 3; /* GPIO number, NOT irq! */
550550
s0 = AU1000_GPIO1_INT;
551551
s1 = AU1000_GPIO4_INT;
552552
platform_add_devices(db1000_devs, ARRAY_SIZE(db1000_devs));
553553
} else if ((board == BCSR_WHOAMI_PB1500) ||
554554
(board == BCSR_WHOAMI_PB1500R2)) {
555555
c0 = AU1500_GPIO203_INT;
556-
d0 = AU1500_GPIO201_INT;
556+
d0 = 1; /* GPIO number, NOT irq! */
557557
s0 = AU1500_GPIO202_INT;
558558
twosocks = 0;
559559
flashsize = 64;
@@ -566,7 +566,7 @@ int __init db1000_dev_setup(void)
566566
*/
567567
} else if (board == BCSR_WHOAMI_PB1100) {
568568
c0 = AU1100_GPIO11_INT;
569-
d0 = AU1100_GPIO9_INT;
569+
d0 = 9; /* GPIO number, NOT irq! */
570570
s0 = AU1100_GPIO10_INT;
571571
twosocks = 0;
572572
flashsize = 64;
@@ -583,7 +583,6 @@ int __init db1000_dev_setup(void)
583583
} else
584584
return 0; /* unknown board, no further dev setup to do */
585585

586-
irq_set_irq_type(d0, IRQ_TYPE_EDGE_BOTH);
587586
irq_set_irq_type(c0, IRQ_TYPE_LEVEL_LOW);
588587
irq_set_irq_type(s0, IRQ_TYPE_LEVEL_LOW);
589588

@@ -597,7 +596,6 @@ int __init db1000_dev_setup(void)
597596
c0, d0, /*s0*/0, 0, 0);
598597

599598
if (twosocks) {
600-
irq_set_irq_type(d1, IRQ_TYPE_EDGE_BOTH);
601599
irq_set_irq_type(c1, IRQ_TYPE_LEVEL_LOW);
602600
irq_set_irq_type(s1, IRQ_TYPE_LEVEL_LOW);
603601

arch/mips/alchemy/devboards/db1550.c

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -514,7 +514,7 @@ static void __init db1550_devices(void)
514514
AU1000_PCMCIA_MEM_PHYS_ADDR + 0x000400000 - 1,
515515
AU1000_PCMCIA_IO_PHYS_ADDR,
516516
AU1000_PCMCIA_IO_PHYS_ADDR + 0x000010000 - 1,
517-
AU1550_GPIO3_INT, AU1550_GPIO0_INT,
517+
AU1550_GPIO3_INT, 0,
518518
/*AU1550_GPIO21_INT*/0, 0, 0);
519519

520520
db1x_register_pcmcia_socket(
@@ -524,7 +524,7 @@ static void __init db1550_devices(void)
524524
AU1000_PCMCIA_MEM_PHYS_ADDR + 0x004400000 - 1,
525525
AU1000_PCMCIA_IO_PHYS_ADDR + 0x004000000,
526526
AU1000_PCMCIA_IO_PHYS_ADDR + 0x004010000 - 1,
527-
AU1550_GPIO5_INT, AU1550_GPIO1_INT,
527+
AU1550_GPIO5_INT, 1,
528528
/*AU1550_GPIO22_INT*/0, 0, 1);
529529

530530
platform_device_register(&db1550_nand_dev);

arch/mips/kernel/unaligned.c

Lines changed: 30 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -885,7 +885,7 @@ static void emulate_load_store_insn(struct pt_regs *regs,
885885
{
886886
union mips_instruction insn;
887887
unsigned long value;
888-
unsigned int res;
888+
unsigned int res, preempted;
889889
unsigned long origpc;
890890
unsigned long orig31;
891891
void __user *fault_addr = NULL;
@@ -1226,27 +1226,36 @@ static void emulate_load_store_insn(struct pt_regs *regs,
12261226
if (!access_ok(VERIFY_READ, addr, sizeof(*fpr)))
12271227
goto sigbus;
12281228

1229-
/*
1230-
* Disable preemption to avoid a race between copying
1231-
* state from userland, migrating to another CPU and
1232-
* updating the hardware vector register below.
1233-
*/
1234-
preempt_disable();
1235-
1236-
res = __copy_from_user_inatomic(fpr, addr,
1237-
sizeof(*fpr));
1238-
if (res)
1239-
goto fault;
1240-
1241-
/*
1242-
* Update the hardware register if it is in use by the
1243-
* task in this quantum, in order to avoid having to
1244-
* save & restore the whole vector context.
1245-
*/
1246-
if (test_thread_flag(TIF_USEDMSA))
1247-
write_msa_wr(wd, fpr, df);
1229+
do {
1230+
/*
1231+
* If we have live MSA context keep track of
1232+
* whether we get preempted in order to avoid
1233+
* the register context we load being clobbered
1234+
* by the live context as it's saved during
1235+
* preemption. If we don't have live context
1236+
* then it can't be saved to clobber the value
1237+
* we load.
1238+
*/
1239+
preempted = test_thread_flag(TIF_USEDMSA);
1240+
1241+
res = __copy_from_user_inatomic(fpr, addr,
1242+
sizeof(*fpr));
1243+
if (res)
1244+
goto fault;
12481245

1249-
preempt_enable();
1246+
/*
1247+
* Update the hardware register if it is in use
1248+
* by the task in this quantum, in order to
1249+
* avoid having to save & restore the whole
1250+
* vector context.
1251+
*/
1252+
preempt_disable();
1253+
if (test_thread_flag(TIF_USEDMSA)) {
1254+
write_msa_wr(wd, fpr, df);
1255+
preempted = 0;
1256+
}
1257+
preempt_enable();
1258+
} while (preempted);
12501259
break;
12511260

12521261
case msa_st_op:

arch/parisc/include/asm/uaccess.h

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -76,6 +76,7 @@ struct exception_table_entry {
7676
*/
7777
struct exception_data {
7878
unsigned long fault_ip;
79+
unsigned long fault_gp;
7980
unsigned long fault_space;
8081
unsigned long fault_addr;
8182
};

arch/parisc/kernel/asm-offsets.c

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -299,6 +299,7 @@ int main(void)
299299
#endif
300300
BLANK();
301301
DEFINE(EXCDATA_IP, offsetof(struct exception_data, fault_ip));
302+
DEFINE(EXCDATA_GP, offsetof(struct exception_data, fault_gp));
302303
DEFINE(EXCDATA_SPACE, offsetof(struct exception_data, fault_space));
303304
DEFINE(EXCDATA_ADDR, offsetof(struct exception_data, fault_addr));
304305
BLANK();

0 commit comments

Comments
 (0)