Skip to content

Commit 91d95be

Browse files
author
Alex Shi
committed
Merge tag 'v4.4.66' into linux-linaro-lsk-v4.4
This is the 4.4.66 stable release
2 parents f63c6ea + 0c49a2c commit 91d95be

48 files changed

Lines changed: 377 additions & 109 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/clock/sunxi.txt

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,7 @@ Required properties:
1818
"allwinner,sun4i-a10-cpu-clk" - for the CPU multiplexer clock
1919
"allwinner,sun4i-a10-axi-clk" - for the AXI clock
2020
"allwinner,sun8i-a23-axi-clk" - for the AXI clock on A23
21+
"allwinner,sun4i-a10-gates-clk" - for generic gates on all compatible SoCs
2122
"allwinner,sun4i-a10-axi-gates-clk" - for the AXI gates
2223
"allwinner,sun4i-a10-ahb-clk" - for the AHB clock
2324
"allwinner,sun5i-a13-ahb-clk" - for the AHB clock on A13
@@ -43,6 +44,7 @@ Required properties:
4344
"allwinner,sun6i-a31-apb0-gates-clk" - for the APB0 gates on A31
4445
"allwinner,sun7i-a20-apb0-gates-clk" - for the APB0 gates on A20
4546
"allwinner,sun8i-a23-apb0-gates-clk" - for the APB0 gates on A23
47+
"allwinner,sun8i-h3-apb0-gates-clk" - for the APB0 gates on H3
4648
"allwinner,sun9i-a80-apb0-gates-clk" - for the APB0 gates on A80
4749
"allwinner,sun4i-a10-apb1-clk" - for the APB1 clock
4850
"allwinner,sun9i-a80-apb1-clk" - for the APB1 bus clock on A80

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

arch/arc/include/asm/entry-arcv2.h

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,7 @@
1616
;
1717
; Now manually save: r12, sp, fp, gp, r25
1818

19+
PUSH r30
1920
PUSH r12
2021

2122
; Saving pt_regs->sp correctly requires some extra work due to the way
@@ -72,6 +73,7 @@
7273
POPAX AUX_USER_SP
7374
1:
7475
POP r12
76+
POP r30
7577

7678
.endm
7779

arch/arc/include/asm/ptrace.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -84,7 +84,7 @@ struct pt_regs {
8484
unsigned long fp;
8585
unsigned long sp; /* user/kernel sp depending on where we came from */
8686

87-
unsigned long r12;
87+
unsigned long r12, r30;
8888

8989
/*------- Below list auto saved by h/w -----------*/
9090
unsigned long r0, r1, r2, r3, r4, r5, r6, r7, r8, r9, r10, r11;

arch/arm/mach-omap2/timer.c

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -496,15 +496,16 @@ void __init omap_init_time(void)
496496
__omap_sync32k_timer_init(1, "timer_32k_ck", "ti,timer-alwon",
497497
2, "timer_sys_ck", NULL, false);
498498

499-
if (of_have_populated_dt())
500-
clocksource_probe();
499+
clocksource_probe();
501500
}
502501

503502
#if defined(CONFIG_ARCH_OMAP3) || defined(CONFIG_SOC_AM43XX)
504503
void __init omap3_secure_sync32k_timer_init(void)
505504
{
506505
__omap_sync32k_timer_init(12, "secure_32k_fck", "ti,timer-secure",
507506
2, "timer_sys_ck", NULL, false);
507+
508+
clocksource_probe();
508509
}
509510
#endif /* CONFIG_ARCH_OMAP3 */
510511

@@ -513,6 +514,8 @@ void __init omap3_gptimer_timer_init(void)
513514
{
514515
__omap_sync32k_timer_init(2, "timer_sys_ck", NULL,
515516
1, "timer_sys_ck", "ti,timer-alwon", true);
517+
518+
clocksource_probe();
516519
}
517520
#endif
518521

arch/mips/kernel/crash.c

Lines changed: 13 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -14,12 +14,22 @@ static int crashing_cpu = -1;
1414
static cpumask_t cpus_in_crash = CPU_MASK_NONE;
1515

1616
#ifdef CONFIG_SMP
17-
static void crash_shutdown_secondary(void *ignore)
17+
static void crash_shutdown_secondary(void *passed_regs)
1818
{
19-
struct pt_regs *regs;
19+
struct pt_regs *regs = passed_regs;
2020
int cpu = smp_processor_id();
2121

22-
regs = task_pt_regs(current);
22+
/*
23+
* If we are passed registers, use those. Otherwise get the
24+
* regs from the last interrupt, which should be correct, as
25+
* we are in an interrupt. But if the regs are not there,
26+
* pull them from the top of the stack. They are probably
27+
* wrong, but we need something to keep from crashing again.
28+
*/
29+
if (!regs)
30+
regs = get_irq_regs();
31+
if (!regs)
32+
regs = task_pt_regs(current);
2333

2434
if (!cpu_online(cpu))
2535
return;

arch/mips/kernel/elf.c

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -206,7 +206,7 @@ int arch_check_elf(void *_ehdr, bool has_interpreter,
206206
else if ((prog_req.fr1 && prog_req.frdefault) ||
207207
(prog_req.single && !prog_req.frdefault))
208208
/* Make sure 64-bit MIPS III/IV/64R1 will not pick FR1 */
209-
state->overall_fp_mode = ((current_cpu_data.fpu_id & MIPS_FPIR_F64) &&
209+
state->overall_fp_mode = ((raw_current_cpu_data.fpu_id & MIPS_FPIR_F64) &&
210210
cpu_has_mips_r2_r6) ?
211211
FP_FR1 : FP_FR0;
212212
else if (prog_req.fr1)

arch/mips/kernel/kgdb.c

Lines changed: 33 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -244,35 +244,53 @@ static int compute_signal(int tt)
244244
void sleeping_thread_to_gdb_regs(unsigned long *gdb_regs, struct task_struct *p)
245245
{
246246
int reg;
247-
struct thread_info *ti = task_thread_info(p);
248-
unsigned long ksp = (unsigned long)ti + THREAD_SIZE - 32;
249-
struct pt_regs *regs = (struct pt_regs *)ksp - 1;
250247
#if (KGDB_GDB_REG_SIZE == 32)
251248
u32 *ptr = (u32 *)gdb_regs;
252249
#else
253250
u64 *ptr = (u64 *)gdb_regs;
254251
#endif
255252

256253
for (reg = 0; reg < 16; reg++)
257-
*(ptr++) = regs->regs[reg];
254+
*(ptr++) = 0;
258255

259256
/* S0 - S7 */
260-
for (reg = 16; reg < 24; reg++)
261-
*(ptr++) = regs->regs[reg];
257+
*(ptr++) = p->thread.reg16;
258+
*(ptr++) = p->thread.reg17;
259+
*(ptr++) = p->thread.reg18;
260+
*(ptr++) = p->thread.reg19;
261+
*(ptr++) = p->thread.reg20;
262+
*(ptr++) = p->thread.reg21;
263+
*(ptr++) = p->thread.reg22;
264+
*(ptr++) = p->thread.reg23;
262265

263266
for (reg = 24; reg < 28; reg++)
264267
*(ptr++) = 0;
265268

266269
/* GP, SP, FP, RA */
267-
for (reg = 28; reg < 32; reg++)
268-
*(ptr++) = regs->regs[reg];
269-
270-
*(ptr++) = regs->cp0_status;
271-
*(ptr++) = regs->lo;
272-
*(ptr++) = regs->hi;
273-
*(ptr++) = regs->cp0_badvaddr;
274-
*(ptr++) = regs->cp0_cause;
275-
*(ptr++) = regs->cp0_epc;
270+
*(ptr++) = (long)p;
271+
*(ptr++) = p->thread.reg29;
272+
*(ptr++) = p->thread.reg30;
273+
*(ptr++) = p->thread.reg31;
274+
275+
*(ptr++) = p->thread.cp0_status;
276+
277+
/* lo, hi */
278+
*(ptr++) = 0;
279+
*(ptr++) = 0;
280+
281+
/*
282+
* BadVAddr, Cause
283+
* Ideally these would come from the last exception frame up the stack
284+
* but that requires unwinding, otherwise we can't know much for sure.
285+
*/
286+
*(ptr++) = 0;
287+
*(ptr++) = 0;
288+
289+
/*
290+
* PC
291+
* use return address (RA), i.e. the moment after return from resume()
292+
*/
293+
*(ptr++) = p->thread.reg31;
276294
}
277295

278296
void kgdb_arch_set_pc(struct pt_regs *regs, unsigned long pc)

arch/sparc/include/asm/pgtable_64.h

Lines changed: 8 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -668,26 +668,27 @@ static inline unsigned long pmd_pfn(pmd_t pmd)
668668
return pte_pfn(pte);
669669
}
670670

671-
#ifdef CONFIG_TRANSPARENT_HUGEPAGE
672-
static inline unsigned long pmd_dirty(pmd_t pmd)
671+
#define __HAVE_ARCH_PMD_WRITE
672+
static inline unsigned long pmd_write(pmd_t pmd)
673673
{
674674
pte_t pte = __pte(pmd_val(pmd));
675675

676-
return pte_dirty(pte);
676+
return pte_write(pte);
677677
}
678678

679-
static inline unsigned long pmd_young(pmd_t pmd)
679+
#ifdef CONFIG_TRANSPARENT_HUGEPAGE
680+
static inline unsigned long pmd_dirty(pmd_t pmd)
680681
{
681682
pte_t pte = __pte(pmd_val(pmd));
682683

683-
return pte_young(pte);
684+
return pte_dirty(pte);
684685
}
685686

686-
static inline unsigned long pmd_write(pmd_t pmd)
687+
static inline unsigned long pmd_young(pmd_t pmd)
687688
{
688689
pte_t pte = __pte(pmd_val(pmd));
689690

690-
return pte_write(pte);
691+
return pte_young(pte);
691692
}
692693

693694
static inline unsigned long pmd_trans_huge(pmd_t pmd)

arch/sparc/mm/init_64.c

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1493,7 +1493,7 @@ bool kern_addr_valid(unsigned long addr)
14931493
if ((long)addr < 0L) {
14941494
unsigned long pa = __pa(addr);
14951495

1496-
if ((addr >> max_phys_bits) != 0UL)
1496+
if ((pa >> max_phys_bits) != 0UL)
14971497
return false;
14981498

14991499
return pfn_valid(pa >> PAGE_SHIFT);

0 commit comments

Comments
 (0)