Skip to content

Commit ae5112a

Browse files
author
Ingo Molnar
committed
Merge branch 'perf/urgent' into perf/core, to pick up fixes
Signed-off-by: Ingo Molnar <[email protected]>
2 parents e2cf00c + 0b3589b commit ae5112a

File tree

255 files changed

+2518
-1454
lines changed

Some content is hidden

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

255 files changed

+2518
-1454
lines changed

Documentation/devicetree/bindings/interrupt-controller/snps,archs-idu-intc.txt

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,9 @@ Properties:
1515
Second cell specifies the irq distribution mode to cores
1616
0=Round Robin; 1=cpu0, 2=cpu1, 4=cpu2, 8=cpu3
1717

18+
The second cell in interrupts property is deprecated and may be ignored by
19+
the kernel.
20+
1821
intc accessed via the special ARC AUX register interface, hence "reg" property
1922
is not specified.
2023

Documentation/devicetree/bindings/net/mediatek-net.txt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@ have dual GMAC each represented by a child node..
77
* Ethernet controller node
88

99
Required properties:
10-
- compatible: Should be "mediatek,mt7623-eth"
10+
- compatible: Should be "mediatek,mt2701-eth"
1111
- reg: Address and length of the register set for the device
1212
- interrupts: Should contain the three frame engines interrupts in numeric
1313
order. These are fe_int0, fe_int1 and fe_int2.

Documentation/devicetree/bindings/net/phy.txt

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -19,8 +19,9 @@ Optional Properties:
1919
specifications. If neither of these are specified, the default is to
2020
assume clause 22.
2121

22-
If the phy's identifier is known then the list may contain an entry
23-
of the form: "ethernet-phy-idAAAA.BBBB" where
22+
If the PHY reports an incorrect ID (or none at all) then the
23+
"compatible" list may contain an entry with the correct PHY ID in the
24+
form: "ethernet-phy-idAAAA.BBBB" where
2425
AAAA - The value of the 16 bit Phy Identifier 1 register as
2526
4 hex digits. This is the chip vendor OUI bits 3:18
2627
BBBB - The value of the 16 bit Phy Identifier 2 register as

Documentation/power/states.txt

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -35,9 +35,7 @@ only one way to cause the system to go into the Suspend-To-RAM state (write
3535
The default suspend mode (ie. the one to be used without writing anything into
3636
/sys/power/mem_sleep) is either "deep" (if Suspend-To-RAM is supported) or
3737
"s2idle", but it can be overridden by the value of the "mem_sleep_default"
38-
parameter in the kernel command line. On some ACPI-based systems, depending on
39-
the information in the FADT, the default may be "s2idle" even if Suspend-To-RAM
40-
is supported.
38+
parameter in the kernel command line.
4139

4240
The properties of all of the sleep states are described below.
4341

MAINTAINERS

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3567,7 +3567,7 @@ F: drivers/infiniband/hw/cxgb3/
35673567
F: include/uapi/rdma/cxgb3-abi.h
35683568

35693569
CXGB4 ETHERNET DRIVER (CXGB4)
3570-
M: Hariprasad S <hariprasad@chelsio.com>
3570+
M: Ganesh Goudar <ganeshgr@chelsio.com>
35713571
35723572
W: http://www.chelsio.com
35733573
S: Supported
@@ -4153,7 +4153,7 @@ F: Documentation/gpu/i915.rst
41534153
INTEL GVT-g DRIVERS (Intel GPU Virtualization)
41544154
M: Zhenyu Wang <[email protected]>
41554155
M: Zhi Wang <[email protected]>
4156-
L: igvt-g-dev@lists.01.org
4156+
L: intel-gvt-dev@lists.freedesktop.org
41574157
41584158
W: https://01.org/igvt-g
41594159
T: git https://github.com/01org/gvt-linux.git

Makefile

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,8 @@
11
VERSION = 4
22
PATCHLEVEL = 10
33
SUBLEVEL = 0
4-
EXTRAVERSION = -rc5
5-
NAME = Anniversary Edition
4+
EXTRAVERSION = -rc6
5+
NAME = Fearless Coyote
66

77
# *DOCUMENTATION*
88
# To see a list of typical targets execute "make help"

arch/arc/include/asm/delay.h

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -26,7 +26,9 @@ static inline void __delay(unsigned long loops)
2626
" lp 1f \n"
2727
" nop \n"
2828
"1: \n"
29-
: : "r"(loops));
29+
:
30+
: "r"(loops)
31+
: "lp_count");
3032
}
3133

3234
extern void __bad_udelay(void);

arch/arc/kernel/head.S

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -71,14 +71,14 @@ ENTRY(stext)
7171
GET_CPU_ID r5
7272
cmp r5, 0
7373
mov.nz r0, r5
74-
#ifdef CONFIG_ARC_SMP_HALT_ON_RESET
75-
; Non-Master can proceed as system would be booted sufficiently
76-
jnz first_lines_of_secondary
77-
#else
74+
bz .Lmaster_proceed
75+
7876
; Non-Masters wait for Master to boot enough and bring them up
79-
jnz arc_platform_smp_wait_to_boot
80-
#endif
81-
; Master falls thru
77+
; when they resume, tail-call to entry point
78+
mov blink, @first_lines_of_secondary
79+
j arc_platform_smp_wait_to_boot
80+
81+
.Lmaster_proceed:
8282
#endif
8383

8484
; Clear BSS before updating any globals

arch/arc/kernel/mcip.c

Lines changed: 23 additions & 32 deletions
Original file line numberDiff line numberDiff line change
@@ -93,11 +93,10 @@ static void mcip_probe_n_setup(void)
9393
READ_BCR(ARC_REG_MCIP_BCR, mp);
9494

9595
sprintf(smp_cpuinfo_buf,
96-
"Extn [SMP]\t: ARConnect (v%d): %d cores with %s%s%s%s%s\n",
96+
"Extn [SMP]\t: ARConnect (v%d): %d cores with %s%s%s%s\n",
9797
mp.ver, mp.num_cores,
9898
IS_AVAIL1(mp.ipi, "IPI "),
9999
IS_AVAIL1(mp.idu, "IDU "),
100-
IS_AVAIL1(mp.llm, "LLM "),
101100
IS_AVAIL1(mp.dbg, "DEBUG "),
102101
IS_AVAIL1(mp.gfrc, "GFRC"));
103102

@@ -175,7 +174,6 @@ static void idu_irq_unmask(struct irq_data *data)
175174
raw_spin_unlock_irqrestore(&mcip_lock, flags);
176175
}
177176

178-
#ifdef CONFIG_SMP
179177
static int
180178
idu_irq_set_affinity(struct irq_data *data, const struct cpumask *cpumask,
181179
bool force)
@@ -205,12 +203,27 @@ idu_irq_set_affinity(struct irq_data *data, const struct cpumask *cpumask,
205203

206204
return IRQ_SET_MASK_OK;
207205
}
208-
#endif
206+
207+
static void idu_irq_enable(struct irq_data *data)
208+
{
209+
/*
210+
* By default send all common interrupts to all available online CPUs.
211+
* The affinity of common interrupts in IDU must be set manually since
212+
* in some cases the kernel will not call irq_set_affinity() by itself:
213+
* 1. When the kernel is not configured with support of SMP.
214+
* 2. When the kernel is configured with support of SMP but upper
215+
* interrupt controllers does not support setting of the affinity
216+
* and cannot propagate it to IDU.
217+
*/
218+
idu_irq_set_affinity(data, cpu_online_mask, false);
219+
idu_irq_unmask(data);
220+
}
209221

210222
static struct irq_chip idu_irq_chip = {
211223
.name = "MCIP IDU Intc",
212224
.irq_mask = idu_irq_mask,
213225
.irq_unmask = idu_irq_unmask,
226+
.irq_enable = idu_irq_enable,
214227
#ifdef CONFIG_SMP
215228
.irq_set_affinity = idu_irq_set_affinity,
216229
#endif
@@ -243,36 +256,14 @@ static int idu_irq_xlate(struct irq_domain *d, struct device_node *n,
243256
const u32 *intspec, unsigned int intsize,
244257
irq_hw_number_t *out_hwirq, unsigned int *out_type)
245258
{
246-
irq_hw_number_t hwirq = *out_hwirq = intspec[0];
247-
int distri = intspec[1];
248-
unsigned long flags;
249-
259+
/*
260+
* Ignore value of interrupt distribution mode for common interrupts in
261+
* IDU which resides in intspec[1] since setting an affinity using value
262+
* from Device Tree is deprecated in ARC.
263+
*/
264+
*out_hwirq = intspec[0];
250265
*out_type = IRQ_TYPE_NONE;
251266

252-
/* XXX: validate distribution scheme again online cpu mask */
253-
if (distri == 0) {
254-
/* 0 - Round Robin to all cpus, otherwise 1 bit per core */
255-
raw_spin_lock_irqsave(&mcip_lock, flags);
256-
idu_set_dest(hwirq, BIT(num_online_cpus()) - 1);
257-
idu_set_mode(hwirq, IDU_M_TRIG_LEVEL, IDU_M_DISTRI_RR);
258-
raw_spin_unlock_irqrestore(&mcip_lock, flags);
259-
} else {
260-
/*
261-
* DEST based distribution for Level Triggered intr can only
262-
* have 1 CPU, so generalize it to always contain 1 cpu
263-
*/
264-
int cpu = ffs(distri);
265-
266-
if (cpu != fls(distri))
267-
pr_warn("IDU irq %lx distri mode set to cpu %x\n",
268-
hwirq, cpu);
269-
270-
raw_spin_lock_irqsave(&mcip_lock, flags);
271-
idu_set_dest(hwirq, cpu);
272-
idu_set_mode(hwirq, IDU_M_TRIG_LEVEL, IDU_M_DISTRI_DEST);
273-
raw_spin_unlock_irqrestore(&mcip_lock, flags);
274-
}
275-
276267
return 0;
277268
}
278269

arch/arc/kernel/smp.c

Lines changed: 20 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -90,22 +90,37 @@ void __init smp_cpus_done(unsigned int max_cpus)
9090
*/
9191
static volatile int wake_flag;
9292

93+
#ifdef CONFIG_ISA_ARCOMPACT
94+
95+
#define __boot_read(f) f
96+
#define __boot_write(f, v) f = v
97+
98+
#else
99+
100+
#define __boot_read(f) arc_read_uncached_32(&f)
101+
#define __boot_write(f, v) arc_write_uncached_32(&f, v)
102+
103+
#endif
104+
93105
static void arc_default_smp_cpu_kick(int cpu, unsigned long pc)
94106
{
95107
BUG_ON(cpu == 0);
96-
wake_flag = cpu;
108+
109+
__boot_write(wake_flag, cpu);
97110
}
98111

99112
void arc_platform_smp_wait_to_boot(int cpu)
100113
{
101-
while (wake_flag != cpu)
114+
/* for halt-on-reset, we've waited already */
115+
if (IS_ENABLED(CONFIG_ARC_SMP_HALT_ON_RESET))
116+
return;
117+
118+
while (__boot_read(wake_flag) != cpu)
102119
;
103120

104-
wake_flag = 0;
105-
__asm__ __volatile__("j @first_lines_of_secondary \n");
121+
__boot_write(wake_flag, 0);
106122
}
107123

108-
109124
const char *arc_platform_smp_cpuinfo(void)
110125
{
111126
return plat_smp_ops.info ? : "";

arch/arc/kernel/unaligned.c

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -241,8 +241,9 @@ int misaligned_fixup(unsigned long address, struct pt_regs *regs,
241241
if (state.fault)
242242
goto fault;
243243

244+
/* clear any remanants of delay slot */
244245
if (delay_mode(regs)) {
245-
regs->ret = regs->bta;
246+
regs->ret = regs->bta ~1U;
246247
regs->status32 &= ~STATUS_DE_MASK;
247248
} else {
248249
regs->ret += state.instr_len;

arch/arm64/kernel/topology.c

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@
1111
* for more details.
1212
*/
1313

14+
#include <linux/acpi.h>
1415
#include <linux/cpu.h>
1516
#include <linux/cpumask.h>
1617
#include <linux/init.h>
@@ -209,7 +210,12 @@ static struct notifier_block init_cpu_capacity_notifier = {
209210

210211
static int __init register_cpufreq_notifier(void)
211212
{
212-
if (cap_parsing_failed)
213+
/*
214+
* on ACPI-based systems we need to use the default cpu capacity
215+
* until we have the necessary code to parse the cpu capacity, so
216+
* skip registering cpufreq notifier.
217+
*/
218+
if (!acpi_disabled || cap_parsing_failed)
213219
return -EINVAL;
214220

215221
if (!alloc_cpumask_var(&cpus_to_visit, GFP_KERNEL)) {

arch/parisc/include/asm/bitops.h

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@
66
#endif
77

88
#include <linux/compiler.h>
9-
#include <asm/types.h> /* for BITS_PER_LONG/SHIFT_PER_LONG */
9+
#include <asm/types.h>
1010
#include <asm/byteorder.h>
1111
#include <asm/barrier.h>
1212
#include <linux/atomic.h>
@@ -17,6 +17,12 @@
1717
* to include/asm-i386/bitops.h or kerneldoc
1818
*/
1919

20+
#if __BITS_PER_LONG == 64
21+
#define SHIFT_PER_LONG 6
22+
#else
23+
#define SHIFT_PER_LONG 5
24+
#endif
25+
2026
#define CHOP_SHIFTCOUNT(x) (((unsigned long) (x)) & (BITS_PER_LONG - 1))
2127

2228

arch/parisc/include/uapi/asm/bitsperlong.h

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3,10 +3,8 @@
33

44
#if defined(__LP64__)
55
#define __BITS_PER_LONG 64
6-
#define SHIFT_PER_LONG 6
76
#else
87
#define __BITS_PER_LONG 32
9-
#define SHIFT_PER_LONG 5
108
#endif
119

1210
#include <asm-generic/bitsperlong.h>

arch/parisc/include/uapi/asm/swab.h

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
#ifndef _PARISC_SWAB_H
22
#define _PARISC_SWAB_H
33

4+
#include <asm/bitsperlong.h>
45
#include <linux/types.h>
56
#include <linux/compiler.h>
67

@@ -38,7 +39,7 @@ static inline __attribute_const__ __u32 __arch_swab32(__u32 x)
3839
}
3940
#define __arch_swab32 __arch_swab32
4041

41-
#if BITS_PER_LONG > 32
42+
#if __BITS_PER_LONG > 32
4243
/*
4344
** From "PA-RISC 2.0 Architecture", HP Professional Books.
4445
** See Appendix I page 8 , "Endian Byte Swapping".
@@ -61,6 +62,6 @@ static inline __attribute_const__ __u64 __arch_swab64(__u64 x)
6162
return x;
6263
}
6364
#define __arch_swab64 __arch_swab64
64-
#endif /* BITS_PER_LONG > 32 */
65+
#endif /* __BITS_PER_LONG > 32 */
6566

6667
#endif /* _PARISC_SWAB_H */

arch/s390/kernel/ptrace.c

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -963,6 +963,11 @@ static int s390_fpregs_set(struct task_struct *target,
963963
if (target == current)
964964
save_fpu_regs();
965965

966+
if (MACHINE_HAS_VX)
967+
convert_vx_to_fp(fprs, target->thread.fpu.vxrs);
968+
else
969+
memcpy(&fprs, target->thread.fpu.fprs, sizeof(fprs));
970+
966971
/* If setting FPC, must validate it first. */
967972
if (count > 0 && pos < offsetof(s390_fp_regs, fprs)) {
968973
u32 ufpc[2] = { target->thread.fpu.fpc, 0 };
@@ -1067,6 +1072,9 @@ static int s390_vxrs_low_set(struct task_struct *target,
10671072
if (target == current)
10681073
save_fpu_regs();
10691074

1075+
for (i = 0; i < __NUM_VXRS_LOW; i++)
1076+
vxrs[i] = *((__u64 *)(target->thread.fpu.vxrs + i) + 1);
1077+
10701078
rc = user_regset_copyin(&pos, &count, &kbuf, &ubuf, vxrs, 0, -1);
10711079
if (rc == 0)
10721080
for (i = 0; i < __NUM_VXRS_LOW; i++)

arch/s390/mm/pgtable.c

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -202,7 +202,7 @@ static inline pgste_t ptep_xchg_start(struct mm_struct *mm,
202202
return pgste;
203203
}
204204

205-
static inline void ptep_xchg_commit(struct mm_struct *mm,
205+
static inline pte_t ptep_xchg_commit(struct mm_struct *mm,
206206
unsigned long addr, pte_t *ptep,
207207
pgste_t pgste, pte_t old, pte_t new)
208208
{
@@ -220,6 +220,7 @@ static inline void ptep_xchg_commit(struct mm_struct *mm,
220220
} else {
221221
*ptep = new;
222222
}
223+
return old;
223224
}
224225

225226
pte_t ptep_xchg_direct(struct mm_struct *mm, unsigned long addr,
@@ -231,7 +232,7 @@ pte_t ptep_xchg_direct(struct mm_struct *mm, unsigned long addr,
231232
preempt_disable();
232233
pgste = ptep_xchg_start(mm, addr, ptep);
233234
old = ptep_flush_direct(mm, addr, ptep);
234-
ptep_xchg_commit(mm, addr, ptep, pgste, old, new);
235+
old = ptep_xchg_commit(mm, addr, ptep, pgste, old, new);
235236
preempt_enable();
236237
return old;
237238
}
@@ -246,7 +247,7 @@ pte_t ptep_xchg_lazy(struct mm_struct *mm, unsigned long addr,
246247
preempt_disable();
247248
pgste = ptep_xchg_start(mm, addr, ptep);
248249
old = ptep_flush_lazy(mm, addr, ptep);
249-
ptep_xchg_commit(mm, addr, ptep, pgste, old, new);
250+
old = ptep_xchg_commit(mm, addr, ptep, pgste, old, new);
250251
preempt_enable();
251252
return old;
252253
}

0 commit comments

Comments
 (0)