Skip to content

Commit fb79670

Browse files
committed
Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net
Both conflict were simple overlapping changes. In the kaweth case, Eric Dumazet's skb_cow() bug fix overlapped the conversion of the driver in net-next to use in-netdev stats. Signed-off-by: David S. Miller <davem@davemloft.net>
2 parents 1f4407e + 94836ec commit fb79670

File tree

59 files changed

+575
-245
lines changed

Some content is hidden

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

59 files changed

+575
-245
lines changed

Documentation/devicetree/bindings/pci/hisilicon-pcie.txt

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -44,13 +44,19 @@ Hip05 Example (note that Hip06 is the same except compatible):
4444
};
4545

4646
HiSilicon Hip06/Hip07 PCIe host bridge DT (almost-ECAM) description.
47+
48+
Some BIOSes place the host controller in a mode where it is ECAM
49+
compliant for all devices other than the root complex. In such cases,
50+
the host controller should be described as below.
51+
4752
The properties and their meanings are identical to those described in
4853
host-generic-pci.txt except as listed below.
4954

5055
Properties of the host controller node that differ from
5156
host-generic-pci.txt:
5257

53-
- compatible : Must be "hisilicon,pcie-almost-ecam"
58+
- compatible : Must be "hisilicon,hip06-pcie-ecam", or
59+
"hisilicon,hip07-pcie-ecam"
5460

5561
- reg : Two entries: First the ECAM configuration space for any
5662
other bus underneath the root bus. Second, the base
@@ -59,7 +65,7 @@ host-generic-pci.txt:
5965

6066
Example:
6167
pcie0: pcie@a0090000 {
62-
compatible = "hisilicon,pcie-almost-ecam";
68+
compatible = "hisilicon,hip06-pcie-ecam";
6369
reg = <0 0xb0000000 0 0x2000000>, /* ECAM configuration space */
6470
<0 0xa0090000 0 0x10000>; /* host bridge registers */
6571
bus-range = <0 31>;

MAINTAINERS

Lines changed: 16 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2592,12 +2592,26 @@ F: include/uapi/linux/if_bonding.h
25922592

25932593
BPF (Safe dynamic programs and tools)
25942594
M: Alexei Starovoitov <ast@kernel.org>
2595+
M: Daniel Borkmann <daniel@iogearbox.net>
25952596
L: netdev@vger.kernel.org
25962597
L: linux-kernel@vger.kernel.org
25972598
S: Supported
2599+
F: arch/x86/net/bpf_jit*
2600+
F: Documentation/networking/filter.txt
2601+
F: include/linux/bpf*
2602+
F: include/linux/filter.h
2603+
F: include/uapi/linux/bpf*
2604+
F: include/uapi/linux/filter.h
25982605
F: kernel/bpf/
2599-
F: tools/testing/selftests/bpf/
2606+
F: kernel/trace/bpf_trace.c
26002607
F: lib/test_bpf.c
2608+
F: net/bpf/
2609+
F: net/core/filter.c
2610+
F: net/sched/act_bpf.c
2611+
F: net/sched/cls_bpf.c
2612+
F: samples/bpf/
2613+
F: tools/net/bpf*
2614+
F: tools/testing/selftests/bpf/
26012615

26022616
BROADCOM B44 10/100 ETHERNET DRIVER
26032617
M: Michael Chan <michael.chan@broadcom.com>
@@ -8777,6 +8791,7 @@ W: http://www.linuxfoundation.org/en/Net
87778791
Q: http://patchwork.ozlabs.org/project/netdev/list/
87788792
T: git git://git.kernel.org/pub/scm/linux/kernel/git/davem/net.git
87798793
T: git git://git.kernel.org/pub/scm/linux/kernel/git/davem/net-next.git
8794+
B: mailto:netdev@vger.kernel.org
87808795
S: Maintained
87818796
F: net/
87828797
F: include/net/
@@ -12491,7 +12506,6 @@ F: drivers/clk/ti/
1249112506
F: include/linux/clk/ti.h
1249212507

1249312508
TI ETHERNET SWITCH DRIVER (CPSW)
12494-
M: Mugunthan V N <mugunthanvnm@ti.com>
1249512509
R: Grygorii Strashko <grygorii.strashko@ti.com>
1249612510
L: linux-omap@vger.kernel.org
1249712511
L: netdev@vger.kernel.org

arch/powerpc/include/asm/exception-64s.h

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -236,9 +236,9 @@ END_FTR_SECTION_NESTED(ftr,ftr,943)
236236
mtctr reg; \
237237
bctr
238238

239-
#define BRANCH_LINK_TO_FAR(reg, label) \
240-
__LOAD_FAR_HANDLER(reg, label); \
241-
mtctr reg; \
239+
#define BRANCH_LINK_TO_FAR(label) \
240+
__LOAD_FAR_HANDLER(r12, label); \
241+
mtctr r12; \
242242
bctrl
243243

244244
/*
@@ -265,7 +265,7 @@ END_FTR_SECTION_NESTED(ftr,ftr,943)
265265
#define BRANCH_TO_COMMON(reg, label) \
266266
b label
267267

268-
#define BRANCH_LINK_TO_FAR(reg, label) \
268+
#define BRANCH_LINK_TO_FAR(label) \
269269
bl label
270270

271271
#define BRANCH_TO_KVM(reg, label) \

arch/powerpc/kernel/entry_64.S

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -689,7 +689,7 @@ resume_kernel:
689689

690690
addi r8,r1,INT_FRAME_SIZE /* Get the kprobed function entry */
691691

692-
lwz r3,GPR1(r1)
692+
ld r3,GPR1(r1)
693693
subi r3,r3,INT_FRAME_SIZE /* dst: Allocate a trampoline exception frame */
694694
mr r4,r1 /* src: current exception frame */
695695
mr r1,r3 /* Reroute the trampoline frame to r1 */
@@ -703,8 +703,8 @@ resume_kernel:
703703
addi r6,r6,8
704704
bdnz 2b
705705

706-
/* Do real store operation to complete stwu */
707-
lwz r5,GPR1(r1)
706+
/* Do real store operation to complete stdu */
707+
ld r5,GPR1(r1)
708708
std r8,0(r5)
709709

710710
/* Clear _TIF_EMULATE_STACK_STORE flag */

arch/powerpc/kernel/exceptions-64s.S

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -982,7 +982,7 @@ TRAMP_REAL_BEGIN(hmi_exception_early)
982982
EXCEPTION_PROLOG_COMMON_2(PACA_EXGEN)
983983
EXCEPTION_PROLOG_COMMON_3(0xe60)
984984
addi r3,r1,STACK_FRAME_OVERHEAD
985-
BRANCH_LINK_TO_FAR(r4, hmi_exception_realmode)
985+
BRANCH_LINK_TO_FAR(hmi_exception_realmode) /* Function call ABI */
986986
/* Windup the stack. */
987987
/* Move original HSRR0 and HSRR1 into the respective regs */
988988
ld r9,_MSR(r1)

arch/s390/include/asm/pgtable.h

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1051,6 +1051,8 @@ static inline void set_pte_at(struct mm_struct *mm, unsigned long addr,
10511051
{
10521052
if (!MACHINE_HAS_NX)
10531053
pte_val(entry) &= ~_PAGE_NOEXEC;
1054+
if (pte_present(entry))
1055+
pte_val(entry) &= ~_PAGE_UNUSED;
10541056
if (mm_has_pgste(mm))
10551057
ptep_set_pte_at(mm, addr, ptep, entry);
10561058
else

block/blk-mq.c

Lines changed: 10 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2928,8 +2928,17 @@ bool blk_mq_poll(struct request_queue *q, blk_qc_t cookie)
29282928
hctx = q->queue_hw_ctx[blk_qc_t_to_queue_num(cookie)];
29292929
if (!blk_qc_t_is_internal(cookie))
29302930
rq = blk_mq_tag_to_rq(hctx->tags, blk_qc_t_to_tag(cookie));
2931-
else
2931+
else {
29322932
rq = blk_mq_tag_to_rq(hctx->sched_tags, blk_qc_t_to_tag(cookie));
2933+
/*
2934+
* With scheduling, if the request has completed, we'll
2935+
* get a NULL return here, as we clear the sched tag when
2936+
* that happens. The request still remains valid, like always,
2937+
* so we should be safe with just the NULL check.
2938+
*/
2939+
if (!rq)
2940+
return false;
2941+
}
29332942

29342943
return __blk_mq_poll(hctx, rq);
29352944
}

block/elevator.c

Lines changed: 10 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1098,12 +1098,20 @@ int elevator_change(struct request_queue *q, const char *name)
10981098
}
10991099
EXPORT_SYMBOL(elevator_change);
11001100

1101+
static inline bool elv_support_iosched(struct request_queue *q)
1102+
{
1103+
if (q->mq_ops && q->tag_set && (q->tag_set->flags &
1104+
BLK_MQ_F_NO_SCHED))
1105+
return false;
1106+
return true;
1107+
}
1108+
11011109
ssize_t elv_iosched_store(struct request_queue *q, const char *name,
11021110
size_t count)
11031111
{
11041112
int ret;
11051113

1106-
if (!(q->mq_ops || q->request_fn))
1114+
if (!(q->mq_ops || q->request_fn) || !elv_support_iosched(q))
11071115
return count;
11081116

11091117
ret = __elevator_change(q, name);
@@ -1135,7 +1143,7 @@ ssize_t elv_iosched_show(struct request_queue *q, char *name)
11351143
len += sprintf(name+len, "[%s] ", elv->elevator_name);
11361144
continue;
11371145
}
1138-
if (__e->uses_mq && q->mq_ops)
1146+
if (__e->uses_mq && q->mq_ops && elv_support_iosched(q))
11391147
len += sprintf(name+len, "%s ", __e->elevator_name);
11401148
else if (!__e->uses_mq && !q->mq_ops)
11411149
len += sprintf(name+len, "%s ", __e->elevator_name);

drivers/acpi/power.c

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -200,6 +200,7 @@ static int acpi_power_get_list_state(struct list_head *list, int *state)
200200
return -EINVAL;
201201

202202
/* The state of the list is 'on' IFF all resources are 'on'. */
203+
cur_state = 0;
203204
list_for_each_entry(entry, list, node) {
204205
struct acpi_power_resource *resource = entry->resource;
205206
acpi_handle handle = resource->device.handle;

drivers/block/mtip32xx/mtip32xx.c

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3969,7 +3969,7 @@ static int mtip_block_initialize(struct driver_data *dd)
39693969
dd->tags.reserved_tags = 1;
39703970
dd->tags.cmd_size = sizeof(struct mtip_cmd);
39713971
dd->tags.numa_node = dd->numa_node;
3972-
dd->tags.flags = BLK_MQ_F_SHOULD_MERGE;
3972+
dd->tags.flags = BLK_MQ_F_SHOULD_MERGE | BLK_MQ_F_NO_SCHED;
39733973
dd->tags.driver_data = dd;
39743974
dd->tags.timeout = MTIP_NCQ_CMD_TIMEOUT_MS;
39753975

drivers/clk/clk-stm32f4.c

Lines changed: 10 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -429,6 +429,13 @@ static const struct clk_div_table pll_divp_table[] = {
429429
{ 0, 2 }, { 1, 4 }, { 2, 6 }, { 3, 8 }, { 0 }
430430
};
431431

432+
static const struct clk_div_table pll_divq_table[] = {
433+
{ 2, 2 }, { 3, 3 }, { 4, 4 }, { 5, 5 }, { 6, 6 }, { 7, 7 },
434+
{ 8, 8 }, { 9, 9 }, { 10, 10 }, { 11, 11 }, { 12, 12 }, { 13, 13 },
435+
{ 14, 14 }, { 15, 15 },
436+
{ 0 }
437+
};
438+
432439
static const struct clk_div_table pll_divr_table[] = {
433440
{ 2, 2 }, { 3, 3 }, { 4, 4 }, { 5, 5 }, { 6, 6 }, { 7, 7 }, { 0 }
434441
};
@@ -496,9 +503,9 @@ struct stm32f4_div_data {
496503

497504
#define MAX_PLL_DIV 3
498505
static const struct stm32f4_div_data div_data[MAX_PLL_DIV] = {
499-
{ 16, 2, 0, pll_divp_table },
500-
{ 24, 4, CLK_DIVIDER_ONE_BASED, NULL },
501-
{ 28, 3, 0, pll_divr_table },
506+
{ 16, 2, 0, pll_divp_table },
507+
{ 24, 4, 0, pll_divq_table },
508+
{ 28, 3, 0, pll_divr_table },
502509
};
503510

504511
struct stm32f4_pll_data {

drivers/clk/sunxi-ng/Kconfig

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
config SUNXI_CCU
22
bool "Clock support for Allwinner SoCs"
33
depends on ARCH_SUNXI || COMPILE_TEST
4+
select RESET_CONTROLLER
45
default ARCH_SUNXI
56

67
if SUNXI_CCU
@@ -135,6 +136,7 @@ config SUN8I_V3S_CCU
135136
config SUN9I_A80_CCU
136137
bool "Support for the Allwinner A80 CCU"
137138
select SUNXI_CCU_DIV
139+
select SUNXI_CCU_MULT
138140
select SUNXI_CCU_GATE
139141
select SUNXI_CCU_NKMP
140142
select SUNXI_CCU_NM

drivers/clk/sunxi-ng/ccu-sun8i-a33.c

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -752,6 +752,13 @@ static const struct sunxi_ccu_desc sun8i_a33_ccu_desc = {
752752
.num_resets = ARRAY_SIZE(sun8i_a33_ccu_resets),
753753
};
754754

755+
static struct ccu_pll_nb sun8i_a33_pll_cpu_nb = {
756+
.common = &pll_cpux_clk.common,
757+
/* copy from pll_cpux_clk */
758+
.enable = BIT(31),
759+
.lock = BIT(28),
760+
};
761+
755762
static struct ccu_mux_nb sun8i_a33_cpu_nb = {
756763
.common = &cpux_clk.common,
757764
.cm = &cpux_clk.mux,
@@ -783,6 +790,10 @@ static void __init sun8i_a33_ccu_setup(struct device_node *node)
783790

784791
sunxi_ccu_probe(node, reg, &sun8i_a33_ccu_desc);
785792

793+
/* Gate then ungate PLL CPU after any rate changes */
794+
ccu_pll_notifier_register(&sun8i_a33_pll_cpu_nb);
795+
796+
/* Reparent CPU during PLL CPU rate changes */
786797
ccu_mux_notifier_register(pll_cpux_clk.common.hw.clk,
787798
&sun8i_a33_cpu_nb);
788799
}

drivers/clk/sunxi-ng/ccu_common.c

Lines changed: 49 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -14,11 +14,13 @@
1414
* GNU General Public License for more details.
1515
*/
1616

17+
#include <linux/clk.h>
1718
#include <linux/clk-provider.h>
1819
#include <linux/iopoll.h>
1920
#include <linux/slab.h>
2021

2122
#include "ccu_common.h"
23+
#include "ccu_gate.h"
2224
#include "ccu_reset.h"
2325

2426
static DEFINE_SPINLOCK(ccu_lock);
@@ -39,6 +41,53 @@ void ccu_helper_wait_for_lock(struct ccu_common *common, u32 lock)
3941
WARN_ON(readl_relaxed_poll_timeout(addr, reg, reg & lock, 100, 70000));
4042
}
4143

44+
/*
45+
* This clock notifier is called when the frequency of a PLL clock is
46+
* changed. In common PLL designs, changes to the dividers take effect
47+
* almost immediately, while changes to the multipliers (implemented
48+
* as dividers in the feedback loop) take a few cycles to work into
49+
* the feedback loop for the PLL to stablize.
50+
*
51+
* Sometimes when the PLL clock rate is changed, the decrease in the
52+
* divider is too much for the decrease in the multiplier to catch up.
53+
* The PLL clock rate will spike, and in some cases, might lock up
54+
* completely.
55+
*
56+
* This notifier callback will gate and then ungate the clock,
57+
* effectively resetting it, so it proceeds to work. Care must be
58+
* taken to reparent consumers to other temporary clocks during the
59+
* rate change, and that this notifier callback must be the first
60+
* to be registered.
61+
*/
62+
static int ccu_pll_notifier_cb(struct notifier_block *nb,
63+
unsigned long event, void *data)
64+
{
65+
struct ccu_pll_nb *pll = to_ccu_pll_nb(nb);
66+
int ret = 0;
67+
68+
if (event != POST_RATE_CHANGE)
69+
goto out;
70+
71+
ccu_gate_helper_disable(pll->common, pll->enable);
72+
73+
ret = ccu_gate_helper_enable(pll->common, pll->enable);
74+
if (ret)
75+
goto out;
76+
77+
ccu_helper_wait_for_lock(pll->common, pll->lock);
78+
79+
out:
80+
return notifier_from_errno(ret);
81+
}
82+
83+
int ccu_pll_notifier_register(struct ccu_pll_nb *pll_nb)
84+
{
85+
pll_nb->clk_nb.notifier_call = ccu_pll_notifier_cb;
86+
87+
return clk_notifier_register(pll_nb->common->hw.clk,
88+
&pll_nb->clk_nb);
89+
}
90+
4291
int sunxi_ccu_probe(struct device_node *node, void __iomem *reg,
4392
const struct sunxi_ccu_desc *desc)
4493
{

drivers/clk/sunxi-ng/ccu_common.h

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -83,6 +83,18 @@ struct sunxi_ccu_desc {
8383

8484
void ccu_helper_wait_for_lock(struct ccu_common *common, u32 lock);
8585

86+
struct ccu_pll_nb {
87+
struct notifier_block clk_nb;
88+
struct ccu_common *common;
89+
90+
u32 enable;
91+
u32 lock;
92+
};
93+
94+
#define to_ccu_pll_nb(_nb) container_of(_nb, struct ccu_pll_nb, clk_nb)
95+
96+
int ccu_pll_notifier_register(struct ccu_pll_nb *pll_nb);
97+
8698
int sunxi_ccu_probe(struct device_node *node, void __iomem *reg,
8799
const struct sunxi_ccu_desc *desc);
88100

drivers/hid/wacom_wac.c

Lines changed: 11 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2006,7 +2006,7 @@ static void wacom_wac_pen_event(struct hid_device *hdev, struct hid_field *field
20062006
return;
20072007
case HID_DG_TOOLSERIALNUMBER:
20082008
wacom_wac->serial[0] = (wacom_wac->serial[0] & ~0xFFFFFFFFULL);
2009-
wacom_wac->serial[0] |= value;
2009+
wacom_wac->serial[0] |= (__u32)value;
20102010
return;
20112011
case WACOM_HID_WD_SENSE:
20122012
wacom_wac->hid_data.sense_state = value;
@@ -2176,6 +2176,16 @@ static void wacom_wac_finger_usage_mapping(struct hid_device *hdev,
21762176
wacom_wac->hid_data.cc_index = field->index;
21772177
wacom_wac->hid_data.cc_value_index = usage->usage_index;
21782178
break;
2179+
case HID_DG_CONTACTID:
2180+
if ((field->logical_maximum - field->logical_minimum) < touch_max) {
2181+
/*
2182+
* The HID descriptor for G11 sensors leaves logical
2183+
* maximum set to '1' despite it being a multitouch
2184+
* device. Override to a sensible number.
2185+
*/
2186+
field->logical_maximum = 255;
2187+
}
2188+
break;
21792189
}
21802190
}
21812191

0 commit comments

Comments
 (0)