Linux 5.14.15
Greg Kroah-Hartman
maintainerDocumentation/networking/devlink/ice.rst +5 -4
@@ -30,10 +30,11 @@ The ``ice`` driver reports the following versions PHY, link, etc. * - ``fw.mgmt.api`` - running - - 1.5 - - 2-digit version number of the API exported over the AdminQ by the - management firmware. Used by the driver to identify what commands - are supported. + - 1.5.1 + - 3-digit version number (major.minor.patch) of the API exported over + the AdminQ by the management firmware. Used by the driver to + identify what commands are supported. Historical versions of the + kernel only displayed a 2-digit version number (major.minor). * - ``fw.mgmt.build`` - running - 0x305d955f
Makefile +1 -1
@@ -1,7 +1,7 @@ # SPDX-License-Identifier: GPL-2.0 VERSION = 5 PATCHLEVEL = 14 -SUBLEVEL = 14 +SUBLEVEL = 15 EXTRAVERSION = NAME = Opossums on Parade
arch/arm/Kconfig +1 -0
@@ -93,6 +93,7 @@ config ARM select HAVE_FTRACE_MCOUNT_RECORD if !XIP_KERNEL select HAVE_FUNCTION_GRAPH_TRACER if !THUMB2_KERNEL && !CC_IS_CLANG select HAVE_FUNCTION_TRACER if !XIP_KERNEL + select HAVE_FUTEX_CMPXCHG if FUTEX select HAVE_GCC_PLUGINS select HAVE_HW_BREAKPOINT if PERF_EVENTS && (CPU_V6 || CPU_V6K || CPU_V7) select HAVE_IRQ_TIME_ACCOUNTING
arch/arm/boot/dts/at91-sama5d27_som1_ek.dts +0 -1
@@ -71,7 +71,6 @@ apb { isc: isc@f0008000 { pinctrl-names = "default"; pinctrl-0 = <&pinctrl_isc_base &pinctrl_isc_data_8bit &pinctrl_isc_data_9_10 &pinctrl_isc_data_11_12>; - status = "okay"; }; qspi1: spi@f0024000 {
arch/arm/boot/dts/spear3xx.dtsi +1 -1
@@ -47,7 +47,7 @@ dma@fc400000 { }; gmac: eth@e0800000 { - compatible = "st,spear600-gmac"; + compatible = "snps,dwmac-3.40a"; reg = <0xe0800000 0x8000>; interrupts = <23 22>; interrupt-names = "macirq", "eth_wake_irq";
arch/arm/boot/dts/vexpress-v2m.dtsi +1 -1
@@ -19,7 +19,7 @@ */ / { - bus@4000000 { + bus@40000000 { motherboard { model = "V2M-P1"; arm,hbi = <0x190>;
arch/arm/boot/dts/vexpress-v2p-ca9.dts +1 -1
@@ -295,7 +295,7 @@ power-vd10-s3 { }; }; - smb: bus@4000000 { + smb: bus@40000000 { compatible = "simple-bus"; #address-cells = <2>;
arch/arm64/kvm/hyp/include/nvhe/gfp.h +1 -0
@@ -24,6 +24,7 @@ struct hyp_pool {/* Allocation */ void *hyp_alloc_pages (struct hyp_pool *pool,unsigned short order); +void hyp_split_page (struct hyp_page *page);void hyp_get_page (struct hyp_pool *pool,void *addr);void hyp_put_page (struct hyp_pool *pool,void *addr);
arch/arm64/kvm/hyp/nvhe/mem_protect.c +12 -1
@@ -35,7 +35,18 @@ static const u8 pkvm_hyp_id = 1;static void *host_s2_zalloc_pages_exact (size_t size) { -return hyp_alloc_pages (&host_s2_pool,get_order (size)); +void *addr =hyp_alloc_pages (&host_s2_pool,get_order (size)); + +hyp_split_page (hyp_virt_to_page (addr)); + +/* +* The size of concatenated PGDs is always a power of two of PAGE_SIZE, +* so there should be no need to free any of the tail pages to make the +* allocation exact. +*/ +WARN_ON (size != (PAGE_SIZE <<get_order (size))); + +return addr; }static void *host_s2_zalloc_page (void *pool)
arch/arm64/kvm/hyp/nvhe/page_alloc.c +14 -0
@@ -193,6 +193,20 @@ void hyp_get_page(struct hyp_pool *pool, void *addr)hyp_spin_unlock (&pool->lock); } +void hyp_split_page (struct hyp_page *p) +{ +unsigned short order = p->order; +unsigned int i; + + p->order =0 ; +for (i =1 ; i < (1 << order); i++) { +struct hyp_page *tail = p + i; + + tail->order =0 ; +hyp_set_page_refcounted (tail); + } +} +void *hyp_alloc_pages (struct hyp_pool *pool,unsigned short order) {unsigned short i = order;
arch/arm64/kvm/mmu.c +4 -2
@@ -1477,8 +1477,10 @@ int kvm_arch_prepare_memory_region(struct kvm *kvm,* when updating the PG_mte_tagged page flag, see * sanitise_mte_tags for more details. */ -if (kvm_has_mte (kvm) && vma->vm_flags &VM_SHARED ) -return -EINVAL ; +if (kvm_has_mte (kvm) && vma->vm_flags &VM_SHARED ) { + ret = -EINVAL ; +break ; + }if (vma->vm_flags &VM_PFNMAP ) {/* IO region dirty page logging not allowed */
arch/nios2/include/asm/irqflags.h +2 -2
@@ -9,7 +9,7 @@static inline unsigned long arch_local_save_flags (void ) { -return RDCTL (CTL_STATUS ); +return RDCTL (CTL_FSTATUS ); }/*
@@ -18,7 +18,7 @@ static inline unsigned long arch_local_save_flags(void)*/ static inline void arch_local_irq_restore (unsigned long flags) { -WRCTL (CTL_STATUS , flags); +WRCTL (CTL_FSTATUS , flags); }static inline void arch_local_irq_disable (void )
arch/nios2/include/asm/registers.h +1 -1
@@ -11,7 +11,7 @@#endif /* control register numbers */ -#define CTL_STATUS 0 +#define CTL_FSTATUS 0#define CTL_ESTATUS 1#define CTL_BSTATUS 2#define CTL_IENABLE 3
arch/parisc/math-emu/fpudispatch.c +53 -3
335 lines not on this page · raw message
arch/powerpc/include/asm/code-patching.h +1 -0
@@ -23,6 +23,7 @@#define BRANCH_ABSOLUTE 0x2bool is_offset_in_branch_range (long offset); +bool is_offset_in_cond_branch_range (long offset);int create_branch (struct ppc_inst *instr,const u32 *addr,unsigned long target,int flags); int create_cond_branch(struct ppc_inst *instr, const u32 *addr,
arch/powerpc/include/asm/security_features.h +5 -0
@@ -39,6 +39,11 @@ static inline bool security_ftr_enabled(u64 feature)return !!(powerpc_security_features & feature); } +#ifdef CONFIG_PPC_BOOK3S_64 +enum stf_barrier_type stf_barrier_type_get (void ); +#else +static inline enum stf_barrier_type stf_barrier_type_get (void ) {return STF_BARRIER_NONE ; } +#endif // Features indicating support for Spectre/Meltdown mitigations
arch/powerpc/kernel/idle_book3s.S +6 -4
@@ -126,14 +126,16 @@ _GLOBAL(idle_return_gpr_loss) /* * This is the sequence required to execute idle instructions, as * specified in ISA v2.07 (and earlier). MSR[IR] and MSR[DR] must be 0. - * - * The 0(r1) slot is used to save r2 in isa206, so use that here. + * We have to store a GPR somewhere, ptesync, then reload it, and create + * a false dependency on the result of the load. It doesn't matter which + * GPR we store, or where we store it. We have already stored r2 to the + * stack at -8(r1) in isa206_idle_insn_mayloss, so use that. */ #define IDLE_STATE_ENTER_SEQ_NORET(IDLE_INST) \ /* Magic NAP/SLEEP/WINKLE mode enter sequence */ \ - std r2,0(r1); \ + std r2,-8(r1); \ ptesync; \ - ld r2,0(r1); \ + ld r2,-8(r1); \ 236: cmpd cr0,r2,r2; \ bne 236b; \ IDLE_INST; \
arch/powerpc/kernel/security.c +5 -0
@@ -263,6 +263,11 @@ static int __init handle_no_stf_barrier(char *p)early_param ("no_stf_barrier" , handle_no_stf_barrier); +enum stf_barrier_type stf_barrier_type_get (void ) +{ +return stf_enabled_flush_types; +} +/* This is the generic flag used by other architectures */ static int __init handle_ssbd (char *p) {
arch/powerpc/kernel/smp.c +0 -2
@@ -1703,8 +1703,6 @@ void __cpu_die(unsigned int cpu)void arch_cpu_idle_dead (void ) { -sched_preempt_enable_no_resched (); -/* * Disable on the down path. This will be re-enabled by * start_secondary() via start_secondary_resume() below
arch/powerpc/kvm/book3s_hv_rmhandlers.S +17 -11
@@ -255,13 +255,16 @@ kvm_novcpu_exit: * r3 contains the SRR1 wakeup value, SRR1 is trashed. */ _GLOBAL(idle_kvm_start_guest) - ld r4,PACAEMERGSP(r13) mfcr r5 mflr r0 - std r1,0(r4) - std r5,8(r4) - std r0,16(r4) - subi r1,r4,STACK_FRAME_OVERHEAD + std r5, 8(r1) // Save CR in caller's frame + std r0, 16(r1) // Save LR in caller's frame + // Create frame on emergency stack + ld r4, PACAEMERGSP(r13) + stdu r1, -SWITCH_FRAME_SIZE(r4) + // Switch to new frame on emergency stack + mr r1, r4 + std r3, 32(r1) // Save SRR1 wakeup value SAVE_NVGPRS(r1) /*
@@ -313,6 +316,10 @@ kvm_unsplit_wakeup: kvm_secondary_got_guest: + // About to go to guest, clear saved SRR1 + li r0, 0 + std r0, 32(r1) + /* Set HSTATE_DSCR(r13) to something sensible */ ld r6, PACA_DSCR_DEFAULT(r13) std r6, HSTATE_DSCR(r13)
@@ -392,13 +399,12 @@ kvm_no_guest: mfspr r4, SPRN_LPCR rlwimi r4, r3, 0, LPCR_PECE0 | LPCR_PECE1 mtspr SPRN_LPCR, r4 - /* set up r3 for return */ - mfspr r3,SPRN_SRR1 + // Return SRR1 wakeup value, or 0 if we went into the guest + ld r3, 32(r1) REST_NVGPRS(r1) - addi r1, r1, STACK_FRAME_OVERHEAD - ld r0, 16(r1) - ld r5, 8(r1) - ld r1, 0(r1) + ld r1, 0(r1) // Switch back to caller stack + ld r0, 16(r1) // Reload LR + ld r5, 8(r1) // Reload CR mtlr r0 mtcr r5 blr
arch/powerpc/lib/code-patching.c +6 -1
@@ -228,6 +228,11 @@ bool is_offset_in_branch_range(long offset)return (offset >=-0x2000000 && offset <=0x1fffffc && !(offset &0x3 )); } +bool is_offset_in_cond_branch_range (long offset) +{ +return offset >=-0x8000 && offset <=0x7fff && !(offset &0x3 ); +} +/* * Helper to check if a given instruction is a conditional branch * Derived from the conditional checks in analyse_instr()
@@ -280,7 +285,7 @@ int create_cond_branch(struct ppc_inst *instr, const u32 *addr, offset = offset - (unsigned long )addr;/* Check we can represent the target in the instruction format */ -if (offset <-0x8000 || offset >0x7FFF || offset &0x3 ) +if (!is_offset_in_cond_branch_range (offset))return 1 ;/* Mask out the flags and target, so they don't step on each other. */
arch/powerpc/net/bpf_jit.h +21 -12
@@ -24,16 +24,30 @@#define EMIT (instr) PLANT_INSTR(image, ctx->idx, instr)/* Long jump; (unconditional 'branch') */ -#define PPC_JMP (dest) EMIT(PPC_INST_BRANCH | \ - (((dest) - (ctx->idx * 4)) & 0x03fffffc)) +#define PPC_JMP (dest) \ + do { \ + long offset = (long)(dest) - (ctx->idx * 4); \ + if (!is_offset_in_branch_range(offset)) { \ + pr_err_ratelimited("Branch offset 0x%lx (@%u) out of range\n", offset, ctx->idx); \ + return -ERANGE; \ + } \ + EMIT(PPC_INST_BRANCH | (offset & 0x03fffffc)); \ + } while (0) +/* blr; (unconditional 'branch' with link) to absolute address */ #define PPC_BL_ABS (dest) EMIT(PPC_INST_BL | \ (((dest) - (unsigned long)(image + ctx->idx)) & 0x03fffffc))/* "cond" here covers BO:BI fields. */ -#define PPC_BCC_SHORT (cond, dest) EMIT(PPC_INST_BRANCH_COND | \ - (((cond) & 0x3ff) << 16) | \ - (((dest) - (ctx->idx * 4)) & \ - 0xfffc)) +#define PPC_BCC_SHORT (cond, dest) \ + do { \ + long offset = (long)(dest) - (ctx->idx * 4); \ + if (!is_offset_in_cond_branch_range(offset)) { \ + pr_err_ratelimited("Conditional branch offset 0x%lx (@%u) out of range\n", offset, ctx->idx); \ + return -ERANGE; \ + } \ + EMIT(PPC_INST_BRANCH_COND | (((cond) & 0x3ff) << 16) | (offset & 0xfffc)); \ + } while (0) +/* Sign-extended 32-bit immediate load */ #define PPC_LI32 (d, i) do { \ if ((int)(uintptr_t)(i) >= -32768 && \
@@ -78,11 +92,6 @@#define PPC_FUNC_ADDR (d,i) do { PPC_LI32(d, i); } while(0)#endif -static inline bool is_nearbranch (int offset) -{ -return (offset <32768 ) && (offset >=-32768 ); -} -/* * The fly in the ointment of code size changing from pass to pass is * avoided by padding the short branch case with a NOP. If code size differs
@@ -91,7 +100,7 @@ static inline bool is_nearbranch(int offset)* state. */ #define PPC_BCC (cond, dest) do { \ - if (is_nearbranch((dest) - (ctx->idx * 4))) { \ + if (is_offset_in_cond_branch_range((long)(dest) - (ctx->idx * 4))) { \ PPC_BCC_SHORT(cond, dest); \ EMIT(PPC_RAW_NOP()); \ } else { \
arch/powerpc/net/bpf_jit64.h +4 -4
@@ -16,18 +16,18 @@* with our redzone usage. * * [ prev sp ] <------------- -* [ nv gpr save area ] 6*8 | +* [ nv gpr save area ] 5*8 | * [ tail_call_cnt ] 8 | -* [ local_tmp_var ] 8 | +* [ local_tmp_var ] 16 | * fp (r31) --> [ ebpf stack space ] upto 512 | * [ frame header ] 32/112 | * sp (r1) ---> [ stack pointer ] -------------- */ /* for gpr non volatile registers BPG_REG_6 to 10 */ -#define BPF_PPC_STACK_SAVE (6*8) +#define BPF_PPC_STACK_SAVE (5*8)/* for bpf JIT code internal usage */ -#define BPF_PPC_STACK_LOCALS 16 +#define BPF_PPC_STACK_LOCALS 24/* stack frame excluding BPF stack, ensure this is quadword aligned */ #define BPF_PPC_STACKFRAME (STACK_FRAME_MIN_SIZE + \ BPF_PPC_STACK_LOCALS + BPF_PPC_STACK_SAVE)
arch/powerpc/net/bpf_jit_comp.c +5 -1
@@ -210,7 +210,11 @@ struct bpf_prog *bpf_int_jit_compile(struct bpf_prog *fp)/* Now build the prologue, body code & epilogue for real. */ cgctx.idx =0 ;bpf_jit_build_prologue (code_base, &cgctx); -bpf_jit_build_body (fp, code_base, &cgctx, addrs, extra_pass); +if (bpf_jit_build_body (fp, code_base, &cgctx, addrs, extra_pass)) { +bpf_jit_binary_free (bpf_hdr); + fp = org_fp; + goto out_addrs; + }bpf_jit_build_epilogue (code_base, &cgctx);if (bpf_jit_enable >1 )
arch/powerpc/net/bpf_jit_comp32.c +6 -2
@@ -200,7 +200,7 @@ void bpf_jit_emit_func_call_rel(u32 *image, struct codegen_context *ctx, u64 fun } } -static void bpf_jit_emit_tail_call (u32 *image,struct codegen_context *ctx,u32 out) +static int bpf_jit_emit_tail_call (u32 *image,struct codegen_context *ctx,u32 out) {/* * By now, the eBPF program has already setup parameters in r3-r6
@@ -261,7 +261,9 @@ static void bpf_jit_emit_tail_call(u32 *image, struct codegen_context *ctx, u32bpf_jit_emit_common_epilogue (image, ctx);EMIT (PPC_RAW_BCTR ()); +/* out: */ +return 0 ; }/* Assemble the body code between the prologue & epilogue */
@@ -1090,7 +1092,9 @@ int bpf_jit_build_body(struct bpf_prog *fp, u32 *image, struct codegen_context **/ case BPF_JMP |BPF_TAIL_CALL : ctx->seen |=SEEN_TAILCALL ; -bpf_jit_emit_tail_call (image, ctx, addrs[i +1 ]); + ret =bpf_jit_emit_tail_call (image, ctx, addrs[i +1 ]); +if (ret <0 ) +return ret;break ;default :
arch/powerpc/net/bpf_jit_comp64.c +57 -6
117 lines not on this page · raw message
arch/s390/include/asm/pci.h +2 -0
@@ -207,6 +207,8 @@ int zpci_enable_device(struct zpci_dev *);int zpci_disable_device (struct zpci_dev *);int zpci_scan_configured_device (struct zpci_dev *zdev,u32 fh);int zpci_deconfigure_device (struct zpci_dev *zdev); +void zpci_device_reserved (struct zpci_dev *zdev); +bool zpci_is_device_configured (struct zpci_dev *zdev);int zpci_register_ioat (struct zpci_dev *,u8 ,u64 ,u64 ,u64 );int zpci_unregister_ioat (struct zpci_dev *,u8 );
arch/s390/pci/pci.c +42 -6
78 lines not on this page · raw message
arch/s390/pci/pci_event.c +2 -2
@@ -137,7 +137,7 @@ static void __zpci_event_availability(struct zpci_ccdf_avail *ccdf)/* The 0x0304 event may immediately reserve the device */ if (!clp_get_state (zdev->fid, &state) && state ==ZPCI_FN_STATE_RESERVED ) { -zpci_zdev_put (zdev); +zpci_device_reserved (zdev); } }break ;
@@ -148,7 +148,7 @@ static void __zpci_event_availability(struct zpci_ccdf_avail *ccdf)case 0x0308 :/* Standby -> Reserved */ if (!zdev)break ; -zpci_zdev_put (zdev); +zpci_device_reserved (zdev);break ;default :break ;
arch/sh/include/asm/pgtable-3level.h +1 -1
@@ -34,7 +34,7 @@ typedef struct { unsigned long long pmd; } pmd_t;static inline pmd_t *pud_pgtable (pud_t pud) { -return (pmd_t *)pud_val (pud); +return (pmd_t *)(unsigned long )pud_val (pud); }/* only used by the stubbed out hugetlb gup code, should never be called */
arch/x86/events/msr.c +1 -0
@@ -68,6 +68,7 @@ static bool test_intel(int idx, void *data)case INTEL_FAM6_BROADWELL_D :case INTEL_FAM6_BROADWELL_G :case INTEL_FAM6_BROADWELL_X : +case INTEL_FAM6_SAPPHIRERAPIDS_X :case INTEL_FAM6_ATOM_SILVERMONT :case INTEL_FAM6_ATOM_SILVERMONT_D :
arch/x86/include/asm/kvm_host.h +2 -1
@@ -695,7 +695,8 @@ struct kvm_vcpu_arch {struct kvm_pio_request pio;void *pio_data; -void *guest_ins_data; +void *sev_pio_data; +unsigned sev_pio_count;u8 event_exit_inst_len;
arch/x86/kvm/mmu/mmu.c +3 -3
@@ -4465,10 +4465,10 @@ static void update_pkru_bitmask(struct kvm_mmu *mmu)unsigned bit;bool wp; -if (!is_cr4_pke (mmu)) { - mmu->pkru_mask =0 ; + mmu->pkru_mask =0 ; + +if (!is_cr4_pke (mmu))return ; - } wp =is_cr0_wp (mmu);
arch/x86/kvm/svm/sev.c +14 -2
@@ -619,7 +619,12 @@ static int __sev_launch_update_vmsa(struct kvm *kvm, struct kvm_vcpu *vcpu, vmsa.handle =to_kvm_svm (kvm)->sev_info.handle; vmsa.address =__sme_pa (svm->vmsa); vmsa.len =PAGE_SIZE ; -return sev_issue_cmd (kvm,SEV_CMD_LAUNCH_UPDATE_VMSA , &vmsa, error); + ret =sev_issue_cmd (kvm,SEV_CMD_LAUNCH_UPDATE_VMSA , &vmsa, error); +if (ret) +return ret; + + vcpu->arch.guest_state_protected = true; +return 0 ; }static int sev_launch_update_vmsa (struct kvm *kvm,struct kvm_sev_cmd *argp)
@@ -1480,6 +1485,13 @@ static int sev_receive_update_data(struct kvm *kvm, struct kvm_sev_cmd *argp) goto e_free_trans; } +/* +* Flush (on non-coherent CPUs) before RECEIVE_UPDATE_DATA, the PSP +* encrypts the written data with the guest's key, and the cache may +* contain dirty, unencrypted data. +*/ +sev_clflush_pages (guest_page, n); +/* The RECEIVE_UPDATE_DATA command requires C-bit to be always set. */ data.guest_address = (page_to_pfn (guest_page[0 ]) <<PAGE_SHIFT ) + offset; data.guest_address |= sev_me_mask;
@@ -2584,7 +2596,7 @@ int sev_es_string_io(struct vcpu_svm *svm, int size, unsigned int port, int in)return -EINVAL ;return kvm_sev_es_string_io (&svm->vcpu, size, port, - svm->ghcb_sa, svm->ghcb_sa_len, in); + svm->ghcb_sa, svm->ghcb_sa_len / size, in); }void sev_es_init_vmcb (struct vcpu_svm *svm)
arch/x86/kvm/svm/svm.h +1 -1
@@ -191,7 +191,7 @@ struct vcpu_svm {/* SEV-ES scratch area support */ void *ghcb_sa; -u64 ghcb_sa_len; +u32 ghcb_sa_len;bool ghcb_sa_sync;bool ghcb_sa_free;
arch/x86/kvm/vmx/vmx.c +6 -11
@@ -6288,18 +6288,13 @@ static int vmx_sync_pir_to_irr(struct kvm_vcpu *vcpu)/* * If we are running L2 and L1 has a new pending interrupt -* which can be injected, we should re-evaluate -* what should be done with this new L1 interrupt. -* If L1 intercepts external-interrupts, we should -* exit from L2 to L1. Otherwise, interrupt should be -* delivered directly to L2. +* which can be injected, this may cause a vmexit or it may +* be injected into L2. Either way, this interrupt will be +* processed via KVM_REQ_EVENT, not RVI, because we do not use +* virtual interrupt delivery to inject L1 interrupts into L2. */ -if (is_guest_mode (vcpu) && max_irr_updated) { -if (nested_exit_on_intr (vcpu)) -kvm_vcpu_exiting_guest_mode (vcpu); -else -kvm_make_request (KVM_REQ_EVENT , vcpu); - } +if (is_guest_mode (vcpu) && max_irr_updated) +kvm_make_request (KVM_REQ_EVENT , vcpu); }else { max_irr =kvm_lapic_find_highest_irr (vcpu); }
arch/x86/kvm/x86.c +103 -47
221 lines not on this page · raw message
arch/x86/xen/enlighten.c +4 -5
@@ -52,9 +52,6 @@ DEFINE_PER_CPU(struct vcpu_info, xen_vcpu_info);DEFINE_PER_CPU (uint32_t, xen_vcpu_id);EXPORT_PER_CPU_SYMBOL (xen_vcpu_id); -enum xen_domain_type xen_domain_type =XEN_NATIVE ; -EXPORT_SYMBOL_GPL (xen_domain_type); -unsigned long *machine_to_phys_mapping = (void *)MACH2PHYS_VIRT_START ;EXPORT_SYMBOL (machine_to_phys_mapping);unsigned long machine_to_phys_nr;
@@ -69,9 +66,11 @@ __read_mostly int xen_have_vector_callback;EXPORT_SYMBOL_GPL (xen_have_vector_callback);/* -* NB: needs to live in .data because it's used by xen_prepare_pvh which runs -* before clearing the bss. +* NB: These need to live in .data or alike because they're used by +* xen_prepare_pvh() which runs before clearing the bss. */ +enum xen_domain_type __ro_after_init xen_domain_type =XEN_NATIVE ; +EXPORT_SYMBOL_GPL (xen_domain_type); uint32_t xen_start_flags __section(".data") = 0;EXPORT_SYMBOL (xen_start_flags);
arch/xtensa/platforms/xtfpga/setup.c +8 -4
@@ -51,8 +51,12 @@ void platform_power_off(void)void platform_restart (void ) { -/* Flush and reset the mmu, simulate a processor reset, and -* jump to the reset vector. */ +/* Try software reset first. */ +WRITE_ONCE (*(u32 *)XTFPGA_SWRST_VADDR ,0xdead ); + +/* If software reset did not work, flush and reset the mmu, +* simulate a processor reset, and jump to the reset vector. +*/ cpu_reset ();/* control never gets here */ }
@@ -66,7 +70,7 @@ void __init platform_calibrate_ccount(void)#endif -#ifdef CONFIG_OF +#ifdef CONFIG_USE_OF static void __init xtfpga_clk_setup (struct device_node *np) {
@@ -284,4 +288,4 @@ static int __init xtavnet_init(void)*/ arch_initcall (xtavnet_init); -#endif /* CONFIG_OF */ +#endif /* CONFIG_USE_OF */
block/blk-cgroup.c +3 -2
@@ -1916,10 +1916,11 @@ void blk_cgroup_bio_start(struct bio *bio) {int rwd =blk_cgroup_io_type (bio), cpu;struct blkg_iostat_set *bis; +unsigned long flags; cpu =get_cpu (); bis =per_cpu_ptr (bio->bi_blkg->iostat_cpu, cpu); -u64_stats_update_begin (&bis->sync); + flags =u64_stats_update_begin_irqsave (&bis->sync);/* * If the bio is flagged with BIO_CGROUP_ACCT it means this is a split
@@ -1931,7 +1932,7 @@ void blk_cgroup_bio_start(struct bio *bio) } bis->cur.ios[rwd]++; -u64_stats_update_end (&bis->sync); +u64_stats_update_end_irqrestore (&bis->sync, flags);if (cgroup_subsys_on_dfl (io_cgrp_subsys))cgroup_rstat_updated (bio->bi_blkg->blkcg->css.cgroup, cpu);put_cpu ();
block/blk-mq-debugfs.c +1 -0
@@ -129,6 +129,7 @@ static const char *const blk_queue_flag_name[] = {QUEUE_FLAG_NAME (PCI_P2PDMA ),QUEUE_FLAG_NAME (ZONE_RESETALL ),QUEUE_FLAG_NAME (RQ_ALLOC_TIME ), +QUEUE_FLAG_NAME (HCTX_ACTIVE ), QUEUE_FLAG_NAME(NOWAIT), };#undef QUEUE_FLAG_NAME
block/mq-deadline.c +6 -6
@@ -270,12 +270,6 @@ deadline_move_request(struct deadline_data *dd, struct dd_per_prio *per_prio,deadline_remove_request (rq->q, per_prio, rq); } -/* Number of requests queued for a given priority level. */ -static u32 dd_queued (struct deadline_data *dd,enum dd_prio prio) -{ -return dd_sum (dd, inserted, prio) -dd_sum (dd, completed, prio); -} -/* * deadline_check_fifo returns 0 if there are no expired requests on the fifo, * 1 otherwise. Requires !list_empty(&dd->fifo_list[data_dir])
@@ -953,6 +947,12 @@ static int dd_async_depth_show(void *data, struct seq_file *m)return 0 ; } +/* Number of requests queued for a given priority level. */ +static u32 dd_queued (struct deadline_data *dd,enum dd_prio prio) +{ +return dd_sum (dd, inserted, prio) -dd_sum (dd, completed, prio); +} +static int dd_queued_show (void *data,struct seq_file *m) {struct request_queue *q = data;
drivers/base/test/Makefile +1 -1
@@ -2,4 +2,4 @@ obj-$(CONFIG_TEST_ASYNC_DRIVER_PROBE) += test_async_driver_probe.o obj-$(CONFIG_DRIVER_PE_KUNIT_TEST) += property-entry-test.o -CFLAGS_REMOVE_property-entry-test.o += -fplugin-arg-structleak_plugin-byref -fplugin-arg-structleak_plugin-byref-all +CFLAGS_property-entry-test.o += $(DISABLE_STRUCTLEAK_PLUGIN)
drivers/gpu/drm/amd/amdgpu/amdgpu_device.c +4 -4
@@ -2342,10 +2342,6 @@ static int amdgpu_device_ip_init(struct amdgpu_device *adev)if (r) goto init_failed; - r =amdgpu_amdkfd_resume_iommu (adev); -if (r) - goto init_failed; - r =amdgpu_device_ip_hw_init_phase1 (adev);if (r) goto init_failed;
@@ -2384,6 +2380,10 @@ static int amdgpu_device_ip_init(struct amdgpu_device *adev)if (!adev->gmc.xgmi.pending_reset)amdgpu_amdkfd_device_init (adev); + r =amdgpu_amdkfd_resume_iommu (adev); +if (r) + goto init_failed; +amdgpu_fru_get_product_info (adev); init_failed:
drivers/gpu/drm/amd/display/Kconfig +2 -0
@@ -25,6 +25,8 @@ config DRM_AMD_DC_HDCP config DRM_AMD_DC_SI bool "AMD DC support for Southern Islands ASICs" + depends on DRM_AMDGPU_SI + depends on DRM_AMD_DC default n help Choose this option to enable new AMD DC support for SI asics
drivers/gpu/drm/kmb/kmb_crtc.c +38 -3
70 lines not on this page · raw message
drivers/gpu/drm/kmb/kmb_drv.c +5 -5
@@ -173,10 +173,10 @@ static int kmb_setup_mode_config(struct drm_device *drm) ret =drmm_mode_config_init (drm);if (ret)return ret; - drm->mode_config.min_width =KMB_MIN_WIDTH ; - drm->mode_config.min_height =KMB_MIN_HEIGHT ; - drm->mode_config.max_width =KMB_MAX_WIDTH ; - drm->mode_config.max_height =KMB_MAX_HEIGHT ; + drm->mode_config.min_width =KMB_FB_MIN_WIDTH ; + drm->mode_config.min_height =KMB_FB_MIN_HEIGHT ; + drm->mode_config.max_width =KMB_FB_MAX_WIDTH ; + drm->mode_config.max_height =KMB_FB_MAX_HEIGHT ; drm->mode_config.funcs = &kmb_mode_config_funcs; ret =kmb_setup_crtc (drm);
@@ -381,7 +381,7 @@ static irqreturn_t handle_lcd_irq(struct drm_device *dev)if (val &LAYER3_DMA_FIFO_UNDERFLOW )drm_dbg (&kmb->drm,"LAYER3:GL1 DMA UNDERFLOW val = 0x%lx" , val); -if (val &LAYER3_DMA_FIFO_UNDERFLOW ) +if (val &LAYER3_DMA_FIFO_OVERFLOW )drm_dbg (&kmb->drm,"LAYER3:GL1 DMA OVERFLOW val = 0x%lx" , val); }
drivers/gpu/drm/kmb/kmb_drv.h +13 -0
@@ -20,6 +20,18 @@#define DRIVER_MAJOR 1#define DRIVER_MINOR 1 +/* Platform definitions */ +#define KMB_CRTC_MIN_VFP 4 +#define KMB_CRTC_MAX_WIDTH 1920/* max width in pixels */ +#define KMB_CRTC_MAX_HEIGHT 1080/* max height in pixels */ +#define KMB_CRTC_MIN_WIDTH 1920 +#define KMB_CRTC_MIN_HEIGHT 1080 +#define KMB_FB_MAX_WIDTH 1920 +#define KMB_FB_MAX_HEIGHT 1080 +#define KMB_FB_MIN_WIDTH 1 +#define KMB_FB_MIN_HEIGHT 1 +#define KMB_MIN_VREFRESH 59/*vertical refresh in Hz */ +#define KMB_MAX_VREFRESH 60/*vertical refresh in Hz */ #define KMB_LCD_DEFAULT_CLK 200000000#define KMB_SYS_CLK_MHZ 500
@@ -45,6 +57,7 @@ struct kmb_drm_private {spinlock_t irq_lock;int irq_lcd;int sys_clk_mhz; +struct disp_cfg init_disp_cfg[KMB_MAX_PLANES ];struct layer_status plane_status[KMB_MAX_PLANES ];int kmb_under_flow;int kmb_flush_done;
drivers/gpu/drm/kmb/kmb_dsi.c +15 -10
@@ -482,6 +482,10 @@ static u32 mipi_tx_fg_section_cfg(struct kmb_dsi *kmb_dsi,return 0 ; } +#define CLK_DIFF_LOW 50 +#define CLK_DIFF_HI 60 +#define SYSCLK_500 500 +static void mipi_tx_fg_cfg_regs (struct kmb_dsi *kmb_dsi,u8 frame_gen,struct mipi_tx_frame_timing_cfg *fg_cfg) {
@@ -492,7 +496,12 @@ static void mipi_tx_fg_cfg_regs(struct kmb_dsi *kmb_dsi, u8 frame_gen,/* 500 Mhz system clock minus 50 to account for the difference in * MIPI clock speed in RTL tests */ - sysclk = kmb_dsi->sys_clk_mhz -50 ; +if (kmb_dsi->sys_clk_mhz ==SYSCLK_500 ) { + sysclk = kmb_dsi->sys_clk_mhz -CLK_DIFF_LOW ; + }else { +/* 700 Mhz clk*/ + sysclk = kmb_dsi->sys_clk_mhz -CLK_DIFF_HI ; + }/* PPL-Pixel Packing Layer, LLP-Low Level Protocol * Frame genartor timing parameters are clocked on the system clock,
@@ -1322,7 +1331,8 @@ static u32 mipi_tx_init_dphy(struct kmb_dsi *kmb_dsi,return 0 ; } -static void connect_lcd_to_mipi (struct kmb_dsi *kmb_dsi) +static void connect_lcd_to_mipi (struct kmb_dsi *kmb_dsi, +struct drm_atomic_state *old_state) {struct regmap *msscam;
@@ -1331,7 +1341,7 @@ static void connect_lcd_to_mipi(struct kmb_dsi *kmb_dsi)dev_dbg (kmb_dsi->dev,"failed to get msscam syscon" );return ; } - +drm_atomic_bridge_chain_enable (adv_bridge, old_state);/* DISABLE MIPI->CIF CONNECTION */ regmap_write (msscam,MSS_MIPI_CIF_CFG ,0 );
@@ -1342,7 +1352,7 @@ static void connect_lcd_to_mipi(struct kmb_dsi *kmb_dsi) }int kmb_dsi_mode_set (struct kmb_dsi *kmb_dsi,struct drm_display_mode *mode, -int sys_clk_mhz) +int sys_clk_mhz,struct drm_atomic_state *old_state) {u64 data_rate;
@@ -1384,18 +1394,13 @@ int kmb_dsi_mode_set(struct kmb_dsi *kmb_dsi, struct drm_display_mode *mode, mipi_tx_init_cfg.lane_rate_mbps = data_rate; } -kmb_write_mipi (kmb_dsi,DPHY_ENABLE ,0 ); -kmb_write_mipi (kmb_dsi,DPHY_INIT_CTRL0 ,0 ); -kmb_write_mipi (kmb_dsi,DPHY_INIT_CTRL1 ,0 ); -kmb_write_mipi (kmb_dsi,DPHY_INIT_CTRL2 ,0 ); -/* Initialize mipi controller */ mipi_tx_init_cntrl (kmb_dsi, &mipi_tx_init_cfg);/* Dphy initialization */ mipi_tx_init_dphy (kmb_dsi, &mipi_tx_init_cfg); -connect_lcd_to_mipi (kmb_dsi); +connect_lcd_to_mipi (kmb_dsi, old_state);dev_info (kmb_dsi->dev,"mipi hw initialized" );return 0 ;
drivers/gpu/drm/kmb/kmb_dsi.h +1 -1
@@ -380,7 +380,7 @@ int kmb_dsi_host_bridge_init(struct device *dev);struct kmb_dsi *kmb_dsi_init (struct platform_device *pdev);void kmb_dsi_host_unregister (struct kmb_dsi *kmb_dsi);int kmb_dsi_mode_set (struct kmb_dsi *kmb_dsi,struct drm_display_mode *mode, -int sys_clk_mhz); +int sys_clk_mhz,struct drm_atomic_state *old_state);int kmb_dsi_map_mmio (struct kmb_dsi *kmb_dsi);int kmb_dsi_clk_init (struct kmb_dsi *kmb_dsi);int kmb_dsi_encoder_init (struct drm_device *dev,struct kmb_dsi *kmb_dsi);
drivers/gpu/drm/kmb/kmb_plane.c +113 -9
219 lines not on this page · raw message
drivers/gpu/drm/kmb/kmb_plane.h +9 -2
@@ -35,6 +35,9 @@#define POSSIBLE_CRTCS 1#define to_kmb_plane (x) container_of(x, struct kmb_plane, base_plane) +#define POSSIBLE_CRTCS 1 +#define KMB_MAX_PLANES 2 +enum layer_id {LAYER_0 ,LAYER_1 ,
@@ -43,8 +46,6 @@ enum layer_id {/* KMB_MAX_PLANES */ }; -#define KMB_MAX_PLANES 1 -enum sub_plane_id {Y_PLANE ,U_PLANE ,
@@ -62,6 +63,12 @@ struct layer_status { u32 ctrl; }; +struct disp_cfg { +unsigned int width; +unsigned int height; +unsigned int format; +}; +struct kmb_plane *kmb_plane_init (struct drm_device *drm);void kmb_plane_destroy (struct drm_plane *plane);#endif /* __KMB_PLANE_H__ */
drivers/gpu/drm/kmb/kmb_regs.h +3 -0
@@ -43,8 +43,10 @@#define LCD_CTRL_OUTPUT_ENABLED BIT(19)#define LCD_CTRL_BPORCH_ENABLE BIT(21)#define LCD_CTRL_FPORCH_ENABLE BIT(22) +#define LCD_CTRL_ALPHA_BLEND_BKGND_DISABLE BIT(23)#define LCD_CTRL_PIPELINE_DMA BIT(28)#define LCD_CTRL_VHSYNC_IDLE_LVL BIT(31) +#define LCD_CTRL_ALPHA_ALL (0xff << 6)/* interrupts */ #define LCD_INT_STATUS (0x4 * 0x001)
@@ -115,6 +117,7 @@#define LCD_LAYER_ALPHA_EMBED BIT(5)#define LCD_LAYER_ALPHA_COMBI (LCD_LAYER_ALPHA_STATIC | \ LCD_LAYER_ALPHA_EMBED) +#define LCD_LAYER_ALPHA_DISABLED ~(LCD_LAYER_ALPHA_COMBI)/* RGB multiplied with alpha */ #define LCD_LAYER_ALPHA_PREMULT BIT(6)#define LCD_LAYER_INVERT_COL BIT(7)
drivers/gpu/drm/msm/adreno/a6xx_gmu.c +6 -0
@@ -296,6 +296,8 @@ int a6xx_gmu_set_oob(struct a6xx_gmu *gmu, enum a6xx_gmu_oob_state state)u32 val;int request, ack; +WARN_ON_ONCE (!mutex_is_locked (&gmu->lock)); +if (state >=ARRAY_SIZE (a6xx_gmu_oob_bits))return -EINVAL ;
@@ -337,6 +339,8 @@ void a6xx_gmu_clear_oob(struct a6xx_gmu *gmu, enum a6xx_gmu_oob_state state) {int bit; +WARN_ON_ONCE (!mutex_is_locked (&gmu->lock)); +if (state >=ARRAY_SIZE (a6xx_gmu_oob_bits))return ;
@@ -1478,6 +1482,8 @@ int a6xx_gmu_init(struct a6xx_gpu *a6xx_gpu, struct device_node *node)if (!pdev)return -ENODEV ; +mutex_init (&gmu->lock); + gmu->dev = &pdev->dev;of_dma_configure (gmu->dev, node, true);
drivers/gpu/drm/msm/adreno/a6xx_gmu.h +3 -0
@@ -44,6 +44,9 @@ struct a6xx_gmu_bo {struct a6xx_gmu {struct device *dev; +/* For serializing communication with the GMU: */ +struct mutex lock; +struct msm_gem_address_space *aspace;void *__iomem mmio;
drivers/gpu/drm/msm/adreno/a6xx_gpu.c +34 -6
@@ -859,7 +859,7 @@ static int a6xx_zap_shader_init(struct msm_gpu *gpu) A6XX_RBBM_INT_0_MASK_UCHE_OOB_ACCESS | \ A6XX_RBBM_INT_0_MASK_UCHE_TRAP_INTR) -static int a6xx_hw_init (struct msm_gpu *gpu) +static int hw_init (struct msm_gpu *gpu) {struct adreno_gpu *adreno_gpu =to_adreno_gpu (gpu);struct a6xx_gpu *a6xx_gpu =to_a6xx_gpu (adreno_gpu);
@@ -1107,6 +1107,19 @@ static int a6xx_hw_init(struct msm_gpu *gpu)return ret; } +static int a6xx_hw_init (struct msm_gpu *gpu) +{ +struct adreno_gpu *adreno_gpu =to_adreno_gpu (gpu); +struct a6xx_gpu *a6xx_gpu =to_a6xx_gpu (adreno_gpu); +int ret; + +mutex_lock (&a6xx_gpu->gmu.lock); + ret =hw_init (gpu); +mutex_unlock (&a6xx_gpu->gmu.lock); + +return ret; +} +static void a6xx_dump (struct msm_gpu *gpu) { DRM_DEV_INFO(&gpu->pdev->dev, "status: %08x\n",
@@ -1481,7 +1494,9 @@ static int a6xx_pm_resume(struct msm_gpu *gpu)trace_msm_gpu_resume (0 ); +mutex_lock (&a6xx_gpu->gmu.lock); ret =a6xx_gmu_resume (a6xx_gpu); +mutex_unlock (&a6xx_gpu->gmu.lock);if (ret)return ret;
@@ -1504,7 +1519,9 @@ static int a6xx_pm_suspend(struct msm_gpu *gpu)devfreq_suspend_device (gpu->devfreq.devfreq); +mutex_lock (&a6xx_gpu->gmu.lock); ret =a6xx_gmu_stop (a6xx_gpu); +mutex_unlock (&a6xx_gpu->gmu.lock);if (ret)return ret;
@@ -1519,18 +1536,19 @@ static int a6xx_get_timestamp(struct msm_gpu *gpu, uint64_t *value) {struct adreno_gpu *adreno_gpu =to_adreno_gpu (gpu);struct a6xx_gpu *a6xx_gpu =to_a6xx_gpu (adreno_gpu); -static DEFINE_MUTEX (perfcounter_oob); -mutex_lock (&perfcounter_oob); +mutex_lock (&a6xx_gpu->gmu.lock);/* Force the GPU power on so we can read this register */ a6xx_gmu_set_oob (&a6xx_gpu->gmu,GMU_OOB_PERFCOUNTER_SET ); *value =gpu_read64 (gpu,REG_A6XX_CP_ALWAYS_ON_COUNTER_LO , -REG_A6XX_CP_ALWAYS_ON_COUNTER_HI ); +REG_A6XX_CP_ALWAYS_ON_COUNTER_HI );a6xx_gmu_clear_oob (&a6xx_gpu->gmu,GMU_OOB_PERFCOUNTER_SET ); -mutex_unlock (&perfcounter_oob); + +mutex_unlock (&a6xx_gpu->gmu.lock); +return 0 ; }
@@ -1594,6 +1612,16 @@ static unsigned long a6xx_gpu_busy(struct msm_gpu *gpu)return (unsigned long )busy_time; } +void a6xx_gpu_set_freq (struct msm_gpu *gpu,struct dev_pm_opp *opp) +{ +struct adreno_gpu *adreno_gpu =to_adreno_gpu (gpu); +struct a6xx_gpu *a6xx_gpu =to_a6xx_gpu (adreno_gpu); + +mutex_lock (&a6xx_gpu->gmu.lock); +a6xx_gmu_set_freq (gpu, opp); +mutex_unlock (&a6xx_gpu->gmu.lock); +} +static struct msm_gem_address_space *a6xx_create_address_space (struct msm_gpu *gpu,struct platform_device *pdev) {
@@ -1740,7 +1768,7 @@ static const struct adreno_gpu_funcs funcs = {#endif .gpu_busy = a6xx_gpu_busy, .gpu_get_freq = a6xx_gmu_get_freq, - .gpu_set_freq = a6xx_gmu_set_freq, + .gpu_set_freq = a6xx_gpu_set_freq,#if defined(CONFIG_DRM_MSM_GPU_STATE ) .gpu_state_get = a6xx_gpu_state_get, .gpu_state_put = a6xx_gpu_state_put,
drivers/gpu/drm/mxsfb/mxsfb_drv.c +5 -1
@@ -268,7 +268,11 @@ static void mxsfb_irq_disable(struct drm_device *drm)struct mxsfb_drm_private *mxsfb = drm->dev_private;mxsfb_enable_axi_clk (mxsfb); - mxsfb->crtc.funcs->disable_vblank (&mxsfb->crtc); + +/* Disable and clear VBLANK IRQ */ +writel (CTRL1_CUR_FRAME_DONE_IRQ_EN , mxsfb->base +LCDC_CTRL1 +REG_CLR ); +writel (CTRL1_CUR_FRAME_DONE_IRQ , mxsfb->base +LCDC_CTRL1 +REG_CLR ); +mxsfb_disable_axi_clk (mxsfb); }
drivers/gpu/drm/panel/panel-ilitek-ili9881c.c +6 -6
@@ -590,14 +590,14 @@ static const struct drm_display_mode k101_im2byl02_default_mode = { .clock = 69700, .hdisplay = 800, - .hsync_start = 800 + 6, - .hsync_end = 800 + 6 + 15, - .htotal = 800 + 6 + 15 + 16, + .hsync_start = 800 + 52, + .hsync_end = 800 + 52 + 8, + .htotal = 800 + 52 + 8 + 48, .vdisplay = 1280, - .vsync_start = 1280 + 8, - .vsync_end = 1280 + 8 + 48, - .vtotal = 1280 + 8 + 48 + 52, + .vsync_start = 1280 + 16, + .vsync_end = 1280 + 16 + 6, + .vtotal = 1280 + 16 + 6 + 15, .width_mm = 135, .height_mm = 217,
drivers/iio/test/Makefile +1 -0
@@ -5,3 +5,4 @@ # Keep in alphabetical order obj-$(CONFIG_IIO_TEST_FORMAT) += iio-test-format.o +CFLAGS_iio-test-format.o += $(DISABLE_STRUCTLEAK_PLUGIN)
drivers/input/keyboard/snvs_pwrkey.c +29 -0
@@ -3,6 +3,7 @@// Driver for the IMX SNVS ON/OFF Power Key // Copyright (C) 2015 Freescale Semiconductor, Inc. All Rights Reserved. +#include <linux/clk.h> #include <linux/device.h> #include <linux/err.h> #include <linux/init.h>
@@ -99,6 +100,11 @@ static irqreturn_t imx_snvs_pwrkey_interrupt(int irq, void *dev_id)return IRQ_HANDLED ; } +static void imx_snvs_pwrkey_disable_clk (void *data) +{ +clk_disable_unprepare (data); +} +static void imx_snvs_pwrkey_act (void *pdata) {struct pwrkey_drv_data *pd = pdata;
@@ -111,6 +117,7 @@ static int imx_snvs_pwrkey_probe(struct platform_device *pdev)struct pwrkey_drv_data *pdata;struct input_dev *input;struct device_node *np; +struct clk *clk;int error;u32 vid;
@@ -134,6 +141,28 @@ static int imx_snvs_pwrkey_probe(struct platform_device *pdev)dev_warn (&pdev->dev,"KEY_POWER without setting in dts\n" ); } + clk =devm_clk_get_optional (&pdev->dev,NULL ); +if (IS_ERR (clk)) { +dev_err (&pdev->dev,"Failed to get snvs clock (%pe)\n" , clk); +return PTR_ERR (clk); + } + + error =clk_prepare_enable (clk); +if (error) { +dev_err (&pdev->dev,"Failed to enable snvs clock (%pe)\n" , +ERR_PTR (error)); +return error; + } + + error =devm_add_action_or_reset (&pdev->dev, + imx_snvs_pwrkey_disable_clk, clk); +if (error) { +dev_err (&pdev->dev, +"Failed to register clock cleanup handler (%pe)\n" , +ERR_PTR (error)); +return error; + } + pdata->wakeup =of_property_read_bool (np,"wakeup-source" ); pdata->irq =platform_get_irq (pdev,0 );
drivers/isdn/capi/kcapi.c +5 -0
@@ -480,6 +480,11 @@ int detach_capi_ctr(struct capi_ctr *ctr)ctr_down (ctr,CAPI_CTR_DETACHED ); +if (ctr->cnr <1 || ctr->cnr -1 >=CAPI_MAXCONTR ) { + err = -EINVAL ; + goto unlock_out; + } +if (capi_controller[ctr->cnr -1 ] != ctr) { err = -EINVAL ; goto unlock_out;
drivers/isdn/hardware/mISDN/netjet.c +1 -1
@@ -949,8 +949,8 @@ nj_release(struct tiger_hw *card)nj_disable_hwirq (card);mode_tiger (&card->bc[0 ],ISDN_P_NONE );mode_tiger (&card->bc[1 ],ISDN_P_NONE ); - card->isac.release (&card->isac);spin_unlock_irqrestore (&card->lock, flags); + card->isac.release (&card->isac);release_region (card->base, card->base_s); card->base_s =0 ; }
drivers/net/can/rcar/rcar_can.c +12 -8
@@ -846,10 +846,12 @@ static int __maybe_unused rcar_can_suspend(struct device *dev)struct rcar_can_priv *priv =netdev_priv (ndev);u16 ctlr; -if (netif_running (ndev)) { -netif_stop_queue (ndev); -netif_device_detach (ndev); - } +if (!netif_running (ndev)) +return 0 ; + +netif_stop_queue (ndev); +netif_device_detach (ndev); + ctlr =readw (&priv->regs->ctlr); ctlr |=RCAR_CAN_CTLR_CANM_HALT ;writew (ctlr, &priv->regs->ctlr);
@@ -868,6 +870,9 @@ static int __maybe_unused rcar_can_resume(struct device *dev)u16 ctlr;int err; +if (!netif_running (ndev)) +return 0 ; + err =clk_enable (priv->clk);if (err) {netdev_err (ndev,"clk_enable() failed, error %d\n" , err);
@@ -881,10 +886,9 @@ static int __maybe_unused rcar_can_resume(struct device *dev)writew (ctlr, &priv->regs->ctlr); priv->can.state =CAN_STATE_ERROR_ACTIVE ; -if (netif_running (ndev)) { -netif_device_attach (ndev); -netif_start_queue (ndev); - } +netif_device_attach (ndev); +netif_start_queue (ndev); +return 0 ; }
drivers/net/can/sja1000/peak_pci.c +4 -5
@@ -729,16 +729,15 @@ static void peak_pci_remove(struct pci_dev *pdev)struct net_device *prev_dev = chan->prev_dev;dev_info (&pdev->dev,"removing device %s\n" , dev->name); +/* do that only for first channel */ +if (!prev_dev && chan->pciec_card) +peak_pciec_remove (chan->pciec_card);unregister_sja1000dev (dev);free_sja1000dev (dev); dev = prev_dev; -if (!dev) { -/* do that only for first channel */ -if (chan->pciec_card) -peak_pciec_remove (chan->pciec_card); +if (!dev)break ; - } priv =netdev_priv (dev); chan = priv->priv; }
drivers/net/can/usb/peak_usb/pcan_usb_fd.c +2 -3
@@ -551,11 +551,10 @@ static int pcan_usb_fd_decode_status(struct pcan_usb_fd_if *usb_if, }else if (sm->channel_p_w_b &PUCAN_BUS_WARNING ) { new_state =CAN_STATE_ERROR_WARNING ; }else { -/* no error bit (so, no error skb, back to active state) */ - dev->can.state =CAN_STATE_ERROR_ACTIVE ; +/* back to (or still in) ERROR_ACTIVE state */ + new_state =CAN_STATE_ERROR_ACTIVE ; pdev->bec.txerr =0 ; pdev->bec.rxerr =0 ; -return 0 ; }/* state hasn't changed */
drivers/net/dsa/lantiq_gswip.c +1 -1
@@ -230,7 +230,7 @@#define GSWIP_SDMA_PCTRLp (p) (0xBC0 + ((p) * 0x6))#define GSWIP_SDMA_PCTRL_EN BIT(0)/* SDMA Port Enable */ #define GSWIP_SDMA_PCTRL_FCEN BIT(1)/* Flow Control Enable */ -#define GSWIP_SDMA_PCTRL_PAUFWD BIT(1)/* Pause Frame Forwarding */ +#define GSWIP_SDMA_PCTRL_PAUFWD BIT(3)/* Pause Frame Forwarding */ #define GSWIP_TABLE_ACTIVE_VLAN 0x01#define GSWIP_TABLE_VLAN_MAPPING 0x02
drivers/net/dsa/mt7530.c +1 -7
@@ -1031,9 +1031,6 @@ mt7530_port_enable(struct dsa_switch *ds, int port, {struct mt7530_priv *priv = ds->priv; -if (!dsa_is_user_port (ds, port)) -return 0 ; -mutex_lock (&priv->reg_mutex);/* Allow the user port gets connected to the cpu port and also
@@ -1056,9 +1053,6 @@ mt7530_port_disable(struct dsa_switch *ds, int port) {struct mt7530_priv *priv = ds->priv; -if (!dsa_is_user_port (ds, port)) -return ; -mutex_lock (&priv->reg_mutex);/* Clear up all port matrix which could be restored in the next
@@ -3132,7 +3126,7 @@ mt7530_probe(struct mdio_device *mdiodev)return -ENOMEM ; priv->ds->dev = &mdiodev->dev; - priv->ds->num_ports =DSA_MAX_PORTS ; + priv->ds->num_ports =MT7530_NUM_PORTS ;/* Use medatek,mcm property to distinguish hardware type that would * casues a little bit differences on power-on sequence.
drivers/net/ethernet/freescale/enetc/enetc_ethtool.c +1 -1
@@ -157,7 +157,7 @@ static const struct { { ENETC_PM0_TFRM, "MAC tx frames" }, { ENETC_PM0_TFCS, "MAC tx fcs errors" }, { ENETC_PM0_TVLAN, "MAC tx VLAN frames" }, - { ENETC_PM0_TERR, "MAC tx frames" }, + { ENETC_PM0_TERR, "MAC tx frame errors" }, { ENETC_PM0_TUCA, "MAC tx unicast frames" }, { ENETC_PM0_TMCA, "MAC tx multicast frames" }, { ENETC_PM0_TBCA, "MAC tx broadcast frames" },
drivers/net/ethernet/freescale/enetc/enetc_pf.c +4 -1
@@ -517,10 +517,13 @@ static void enetc_port_si_configure(struct enetc_si *si)static void enetc_configure_port_mac (struct enetc_hw *hw) { +int tc; +enetc_port_wr (hw,ENETC_PM0_MAXFRM ,ENETC_SET_MAXFRM (ENETC_RX_MAXFRM_SIZE )); -enetc_port_wr (hw,ENETC_PTCMSDUR (0 ),ENETC_MAC_MAXFRM_SIZE ); +for (tc =0 ; tc <8 ; tc++) +enetc_port_wr (hw,ENETC_PTCMSDUR (tc),ENETC_MAC_MAXFRM_SIZE );enetc_port_wr (hw,ENETC_PM0_CMD_CFG ,ENETC_PM0_CMD_PHY_TX_EN |ENETC_PM0_CMD_TXP |ENETC_PM0_PROMISC );
drivers/net/ethernet/hisilicon/hns3/hnae3.c +21 -0
@@ -10,6 +10,27 @@ static LIST_HEAD(hnae3_ae_algo_list);static LIST_HEAD (hnae3_client_list);static LIST_HEAD (hnae3_ae_dev_list); +void hnae3_unregister_ae_algo_prepare (struct hnae3_ae_algo *ae_algo) +{ +const struct pci_device_id *pci_id; +struct hnae3_ae_dev *ae_dev; + +if (!ae_algo) +return ; + +list_for_each_entry (ae_dev, &hnae3_ae_dev_list, node) { +if (!hnae3_get_bit (ae_dev->flag,HNAE3_DEV_INITED_B )) +continue ; + + pci_id =pci_match_id (ae_algo->pdev_id_table, ae_dev->pdev); +if (!pci_id) +continue ; +if (IS_ENABLED (CONFIG_PCI_IOV )) +pci_disable_sriov (ae_dev->pdev); + } +} +EXPORT_SYMBOL (hnae3_unregister_ae_algo_prepare); +/* we are keeping things simple and using single lock for all the * list. This is a non-critical code so other updations, if happen * in parallel, can wait.
drivers/net/ethernet/hisilicon/hns3/hnae3.h +1 -0
@@ -850,6 +850,7 @@ struct hnae3_handle {int hnae3_register_ae_dev (struct hnae3_ae_dev *ae_dev);void hnae3_unregister_ae_dev (struct hnae3_ae_dev *ae_dev); +void hnae3_unregister_ae_algo_prepare (struct hnae3_ae_algo *ae_algo);void hnae3_unregister_ae_algo (struct hnae3_ae_algo *ae_algo);void hnae3_register_ae_algo (struct hnae3_ae_algo *ae_algo);
drivers/net/ethernet/hisilicon/hns3/hns3_enet.c +22 -15
@@ -1845,7 +1845,6 @@ void hns3_shinfo_pack(struct skb_shared_info *shinfo, __u32 *size)static int hns3_skb_linearize (struct hns3_enet_ring *ring,struct sk_buff *skb, -u8 max_non_tso_bd_num,unsigned int bd_num) {/* 'bd_num == UINT_MAX' means the skb' fraglist has a
@@ -1862,8 +1861,7 @@ static int hns3_skb_linearize(struct hns3_enet_ring *ring,* will not help. */ if (skb->len >HNS3_MAX_TSO_SIZE || - (!skb_is_gso (skb) && skb->len > -HNS3_MAX_NON_TSO_SIZE (max_non_tso_bd_num))) { + (!skb_is_gso (skb) && skb->len >HNS3_MAX_NON_TSO_SIZE )) {u64_stats_update_begin (&ring->syncp); ring->stats.hw_limitation++;u64_stats_update_end (&ring->syncp);
@@ -1898,8 +1896,7 @@ static int hns3_nic_maybe_stop_tx(struct hns3_enet_ring *ring, goto out; } -if (hns3_skb_linearize (ring, skb, max_non_tso_bd_num, - bd_num)) +if (hns3_skb_linearize (ring, skb, bd_num))return -ENOMEM ; bd_num =hns3_tx_bd_count (skb->len);
@@ -3266,6 +3263,7 @@ static void hns3_buffer_detach(struct hns3_enet_ring *ring, int i) {hns3_unmap_buffer (ring, &ring->desc_cb[i]); ring->desc[i].addr =0 ; + ring->desc_cb[i].refill =0 ; } static void hns3_free_buffer_detach(struct hns3_enet_ring *ring, int i,
@@ -3343,6 +3341,7 @@ static int hns3_alloc_and_attach_buffer(struct hns3_enet_ring *ring, int i)return ret; ring->desc[i].addr =cpu_to_le64 (ring->desc_cb[i].dma); + ring->desc_cb[i].refill =1 ;return 0 ; }
@@ -3373,12 +3372,14 @@ static void hns3_replace_buffer(struct hns3_enet_ring *ring, int i,hns3_unmap_buffer (ring, &ring->desc_cb[i]); ring->desc_cb[i] = *res_cb; ring->desc[i].addr =cpu_to_le64 (ring->desc_cb[i].dma); + ring->desc_cb[i].refill =1 ; ring->desc[i].rx.bd_base_info =0 ; }static void hns3_reuse_buffer (struct hns3_enet_ring *ring,int i) { ring->desc_cb[i].reuse_flag =0 ; + ring->desc_cb[i].refill =1 ; ring->desc[i].addr =cpu_to_le64 (ring->desc_cb[i].dma + ring->desc_cb[i].page_offset); ring->desc[i].rx.bd_base_info =0 ;
@@ -3485,10 +3486,14 @@ static int hns3_desc_unused(struct hns3_enet_ring *ring)int ntc = ring->next_to_clean;int ntu = ring->next_to_use; +if (unlikely (ntc == ntu && !ring->desc_cb[ntc].refill)) +return ring->desc_num; +return ((ntc >= ntu) ?0 : ring->desc_num) + ntc - ntu; } -static void hns3_nic_alloc_rx_buffers (struct hns3_enet_ring *ring, +/* Return true if there is any allocation failure */ +static bool hns3_nic_alloc_rx_buffers (struct hns3_enet_ring *ring,int cleand_count) {struct hns3_desc_cb *desc_cb;
@@ -3513,7 +3518,10 @@ static void hns3_nic_alloc_rx_buffers(struct hns3_enet_ring *ring,hns3_rl_err (ring_to_netdev (ring),"alloc rx buffer failed: %d\n" , ret); -break ; + +writel (i, ring->tqp->io_base + +HNS3_RING_RX_RING_HEAD_REG ); +return true; }hns3_replace_buffer (ring, ring->next_to_use, &res_cbs);
@@ -3526,6 +3534,7 @@ static void hns3_nic_alloc_rx_buffers(struct hns3_enet_ring *ring, }writel (i, ring->tqp->io_base +HNS3_RING_RX_RING_HEAD_REG ); +return false; }static bool hns3_can_reuse_page (struct hns3_desc_cb *cb)
@@ -3824,6 +3833,7 @@ static void hns3_rx_ring_move_fw(struct hns3_enet_ring *ring) { ring->desc[ring->next_to_clean].rx.bd_base_info &=cpu_to_le32 (~BIT (HNS3_RXD_VLD_B )); + ring->desc_cb[ring->next_to_clean].refill =0 ; ring->next_to_clean +=1 ;if (unlikely (ring->next_to_clean == ring->desc_num))
@@ -4159,6 +4169,7 @@ int hns3_clean_rx_ring(struct hns3_enet_ring *ring, int budget, {#define RCB_NOF_ALLOC_RX_BUFF_ONCE 16int unused_count =hns3_desc_unused (ring); +bool failure = false;int recv_pkts =0 ;int err;
@@ -4167,9 +4178,9 @@ int hns3_clean_rx_ring(struct hns3_enet_ring *ring, int budget,while (recv_pkts < budget) {/* Reuse or realloc buffers */ if (unused_count >=RCB_NOF_ALLOC_RX_BUFF_ONCE ) { -hns3_nic_alloc_rx_buffers (ring, unused_count); - unused_count =hns3_desc_unused (ring) - - ring->pending_buf; + failure = failure || +hns3_nic_alloc_rx_buffers (ring, unused_count); + unused_count =0 ; }/* Poll one pkt */
@@ -4188,11 +4199,7 @@ int hns3_clean_rx_ring(struct hns3_enet_ring *ring, int budget, } out: -/* Make all data has been write before submit */ -if (unused_count >0 ) -hns3_nic_alloc_rx_buffers (ring, unused_count); - -return recv_pkts; +return failure ? budget : recv_pkts; }static void hns3_update_rx_int_coalesce (struct hns3_enet_tqp_vector *tqp_vector)
drivers/net/ethernet/hisilicon/hns3/hns3_enet.h +3 -4
@@ -185,11 +185,9 @@ enum hns3_nic_state {#define HNS3_MAX_BD_SIZE 65535#define HNS3_MAX_TSO_BD_NUM 63U -#define HNS3_MAX_TSO_SIZE \ - (HNS3_MAX_BD_SIZE * HNS3_MAX_TSO_BD_NUM) +#define HNS3_MAX_TSO_SIZE 1048576U +#define HNS3_MAX_NON_TSO_SIZE 9728U -#define HNS3_MAX_NON_TSO_SIZE (max_non_tso_bd_num) \ - (HNS3_MAX_BD_SIZE * (max_non_tso_bd_num))#define HNS3_VECTOR_GL0_OFFSET 0x100#define HNS3_VECTOR_GL1_OFFSET 0x200
@@ -324,6 +322,7 @@ struct hns3_desc_cb {u32 length;/* length of the buffer */ u16 reuse_flag; +u16 refill;/* desc type, used by the ring user to mark the type of the priv data */ u16 type;
drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_dcb.c +9 -0
@@ -133,6 +133,15 @@ static int hclge_ets_validate(struct hclge_dev *hdev, struct ieee_ets *ets, *changed = true;break ;case IEEE_8021QAZ_TSA_ETS : +/* The hardware will switch to sp mode if bandwidth is +* 0, so limit ets bandwidth must be greater than 0. +*/ +if (!ets->tc_tx_bw[i]) { +dev_err (&hdev->pdev->dev, +"tc%u ets bw cannot be 0\n" , i); +return -EINVAL ; + } +if (hdev->tm_info.tc_info[i].tc_sch_mode !=HCLGE_SCH_MODE_DWRR ) *changed = true;
drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_err.c +4 -1
@@ -995,8 +995,11 @@ static int hclge_config_tm_hw_err_int(struct hclge_dev *hdev, bool en)/* configure TM QCN hw errors */ hclge_cmd_setup_basic_desc (&desc,HCLGE_TM_QCN_MEM_INT_CFG , false); -if (en) + desc.data[0 ] =cpu_to_le32 (HCLGE_TM_QCN_ERR_INT_TYPE ); +if (en) { + desc.data[0 ] |=cpu_to_le32 (HCLGE_TM_QCN_FIFO_INT_EN ); desc.data[1 ] =cpu_to_le32 (HCLGE_TM_QCN_MEM_ERR_INT_EN ); + } ret =hclge_cmd_send (&hdev->hw, &desc,1 );if (ret)
drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_err.h +2 -0
@@ -50,6 +50,8 @@#define HCLGE_PPP_MPF_ECC_ERR_INT3_EN 0x003F#define HCLGE_PPP_MPF_ECC_ERR_INT3_EN_MASK 0x003F#define HCLGE_TM_SCH_ECC_ERR_INT_EN 0x3 +#define HCLGE_TM_QCN_ERR_INT_TYPE 0x29 +#define HCLGE_TM_QCN_FIFO_INT_EN 0xFFFF00#define HCLGE_TM_QCN_MEM_ERR_INT_EN 0xFFFFFF#define HCLGE_NCSI_ERR_INT_EN 0x3#define HCLGE_NCSI_ERR_INT_TYPE 0x9
drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_main.c +1 -0
@@ -13023,6 +13023,7 @@ static int hclge_init(void)static void hclge_exit (void ) { +hnae3_unregister_ae_algo_prepare (&ae_algo);hnae3_unregister_ae_algo (&ae_algo);destroy_workqueue (hclge_wq); }
drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_tm.c +2 -0
@@ -752,6 +752,8 @@ static void hclge_tm_pg_info_init(struct hclge_dev *hdev) hdev->tm_info.pg_info[i].tc_bit_map = hdev->hw_tc_map;for (k =0 ; k < hdev->tm_info.num_tc; k++) hdev->tm_info.pg_info[i].tc_dwrr[k] =BW_PERCENT ; +for (; k <HNAE3_MAX_TC ; k++) + hdev->tm_info.pg_info[i].tc_dwrr[k] =0 ; } }
drivers/net/ethernet/hisilicon/hns3/hns3vf/hclgevf_main.c +3 -3
@@ -2271,9 +2271,9 @@ static void hclgevf_reset_service_task(struct hclgevf_dev *hdev) hdev->reset_attempts =0 ; hdev->last_reset_time = jiffies; -while ((hdev->reset_type = -hclgevf_get_reset_level (hdev, &hdev->reset_pending)) - !=HNAE3_NONE_RESET ) + hdev->reset_type = +hclgevf_get_reset_level (hdev, &hdev->reset_pending); +if (hdev->reset_type !=HNAE3_NONE_RESET )hclgevf_reset (hdev); }else if (test_and_clear_bit (HCLGEVF_RESET_REQUESTED , &hdev->reset_state)) {
drivers/net/ethernet/intel/e1000e/e1000.h +3 -1
@@ -113,7 +113,8 @@ enum e1000_boards { board_pch2lan, board_pch_lpt, board_pch_spt, - board_pch_cnp + board_pch_cnp, + board_pch_tgp }; struct e1000_ps_page {
@@ -499,6 +500,7 @@ extern const struct e1000_info e1000_pch2_info;extern const struct e1000_info e1000_pch_lpt_info;extern const struct e1000_info e1000_pch_spt_info;extern const struct e1000_info e1000_pch_cnp_info; +extern const struct e1000_info e1000_pch_tgp_info;extern const struct e1000_info e1000_es2_info;void e1000e_ptp_init (struct e1000_adapter *adapter);
drivers/net/ethernet/intel/e1000e/ich8lan.c +30 -1
@@ -4804,7 +4804,7 @@ static s32 e1000_reset_hw_ich8lan(struct e1000_hw *hw)static s32 e1000_init_hw_ich8lan (struct e1000_hw *hw) {struct e1000_mac_info *mac = &hw->mac; -u32 ctrl_ext, txdctl, snoop; +u32 ctrl_ext, txdctl, snoop, fflt_dbg;s32 ret_val;u16 i;
@@ -4863,6 +4863,15 @@ static s32 e1000_init_hw_ich8lan(struct e1000_hw *hw) snoop = (u32 )~(PCIE_NO_SNOOP_ALL );e1000e_set_pcie_no_snoop (hw, snoop); +/* Enable workaround for packet loss issue on TGP PCH +* Do not gate DMA clock from the modPHY block +*/ +if (mac->type >= e1000_pch_tgp) { + fflt_dbg =er32 (FFLT_DBG ); + fflt_dbg |=E1000_FFLT_DBG_DONT_GATE_WAKE_DMA_CLK ; +ew32 (FFLT_DBG , fflt_dbg); + } + ctrl_ext =er32 (CTRL_EXT ); ctrl_ext |=E1000_CTRL_EXT_RO_DIS ;ew32 (CTRL_EXT , ctrl_ext);
@@ -5983,3 +5992,23 @@ const struct e1000_info e1000_pch_cnp_info = { .phy_ops = &ich8_phy_ops, .nvm_ops = &spt_nvm_ops, }; + +const struct e1000_info e1000_pch_tgp_info = { + .mac = e1000_pch_tgp, + .flags =FLAG_IS_ICH + |FLAG_HAS_WOL + |FLAG_HAS_HW_TIMESTAMP + |FLAG_HAS_CTRLEXT_ON_LOAD + |FLAG_HAS_AMT + |FLAG_HAS_FLASH + |FLAG_HAS_JUMBO_FRAMES + |FLAG_APME_IN_WUC , + .flags2 =FLAG2_HAS_PHY_STATS + |FLAG2_HAS_EEE , + .pba =26 , + .max_hw_frame_size =9022 , + .get_variants = e1000_get_variants_ich8lan, + .mac_ops = &ich8_mac_ops, + .phy_ops = &ich8_phy_ops, + .nvm_ops = &spt_nvm_ops, +};
drivers/net/ethernet/intel/e1000e/ich8lan.h +3 -0
@@ -286,6 +286,9 @@/* Proprietary Latency Tolerance Reporting PCI Capability */ #define E1000_PCI_LTR_CAP_LPT 0xA8 +/* Don't gate wake DMA clock */ +#define E1000_FFLT_DBG_DONT_GATE_WAKE_DMA_CLK 0x1000 +void e1000e_write_protect_nvm_ich8lan (struct e1000_hw *hw);void e1000e_set_kmrn_lock_loss_workaround_ich8lan (struct e1000_hw *hw,bool state);
drivers/net/ethernet/intel/e1000e/netdev.c +15 -14
@@ -51,6 +51,7 @@ static const struct e1000_info *e1000_info_tbl[] = { [board_pch_lpt] = &e1000_pch_lpt_info, [board_pch_spt] = &e1000_pch_spt_info, [board_pch_cnp] = &e1000_pch_cnp_info, + [board_pch_tgp] = &e1000_pch_tgp_info, };struct e1000_reg_info {
@@ -7844,20 +7845,20 @@ static const struct pci_device_id e1000_pci_tbl[] = { { PCI_VDEVICE(INTEL, E1000_DEV_ID_PCH_CMP_I219_V11), board_pch_cnp }, { PCI_VDEVICE(INTEL, E1000_DEV_ID_PCH_CMP_I219_LM12), board_pch_spt }, { PCI_VDEVICE(INTEL, E1000_DEV_ID_PCH_CMP_I219_V12), board_pch_spt }, - { PCI_VDEVICE(INTEL, E1000_DEV_ID_PCH_TGP_I219_LM13), board_pch_cnp }, - { PCI_VDEVICE(INTEL, E1000_DEV_ID_PCH_TGP_I219_V13), board_pch_cnp }, - { PCI_VDEVICE(INTEL, E1000_DEV_ID_PCH_TGP_I219_LM14), board_pch_cnp }, - { PCI_VDEVICE(INTEL, E1000_DEV_ID_PCH_TGP_I219_V14), board_pch_cnp }, - { PCI_VDEVICE(INTEL, E1000_DEV_ID_PCH_TGP_I219_LM15), board_pch_cnp }, - { PCI_VDEVICE(INTEL, E1000_DEV_ID_PCH_TGP_I219_V15), board_pch_cnp }, - { PCI_VDEVICE(INTEL, E1000_DEV_ID_PCH_ADP_I219_LM16), board_pch_cnp }, - { PCI_VDEVICE(INTEL, E1000_DEV_ID_PCH_ADP_I219_V16), board_pch_cnp }, - { PCI_VDEVICE(INTEL, E1000_DEV_ID_PCH_ADP_I219_LM17), board_pch_cnp }, - { PCI_VDEVICE(INTEL, E1000_DEV_ID_PCH_ADP_I219_V17), board_pch_cnp }, - { PCI_VDEVICE(INTEL, E1000_DEV_ID_PCH_MTP_I219_LM18), board_pch_cnp }, - { PCI_VDEVICE(INTEL, E1000_DEV_ID_PCH_MTP_I219_V18), board_pch_cnp }, - { PCI_VDEVICE(INTEL, E1000_DEV_ID_PCH_MTP_I219_LM19), board_pch_cnp }, - { PCI_VDEVICE(INTEL, E1000_DEV_ID_PCH_MTP_I219_V19), board_pch_cnp }, + { PCI_VDEVICE(INTEL, E1000_DEV_ID_PCH_TGP_I219_LM13), board_pch_tgp }, + { PCI_VDEVICE(INTEL, E1000_DEV_ID_PCH_TGP_I219_V13), board_pch_tgp }, + { PCI_VDEVICE(INTEL, E1000_DEV_ID_PCH_TGP_I219_LM14), board_pch_tgp }, + { PCI_VDEVICE(INTEL, E1000_DEV_ID_PCH_TGP_I219_V14), board_pch_tgp }, + { PCI_VDEVICE(INTEL, E1000_DEV_ID_PCH_TGP_I219_LM15), board_pch_tgp }, + { PCI_VDEVICE(INTEL, E1000_DEV_ID_PCH_TGP_I219_V15), board_pch_tgp }, + { PCI_VDEVICE(INTEL, E1000_DEV_ID_PCH_ADP_I219_LM16), board_pch_tgp }, + { PCI_VDEVICE(INTEL, E1000_DEV_ID_PCH_ADP_I219_V16), board_pch_tgp }, + { PCI_VDEVICE(INTEL, E1000_DEV_ID_PCH_ADP_I219_LM17), board_pch_tgp }, + { PCI_VDEVICE(INTEL, E1000_DEV_ID_PCH_ADP_I219_V17), board_pch_tgp }, + { PCI_VDEVICE(INTEL, E1000_DEV_ID_PCH_MTP_I219_LM18), board_pch_tgp }, + { PCI_VDEVICE(INTEL, E1000_DEV_ID_PCH_MTP_I219_V18), board_pch_tgp }, + { PCI_VDEVICE(INTEL, E1000_DEV_ID_PCH_MTP_I219_LM19), board_pch_tgp }, + { PCI_VDEVICE(INTEL, E1000_DEV_ID_PCH_MTP_I219_V19), board_pch_tgp }, { 0, 0, 0, 0, 0, 0, 0 } /* terminate list */ };
drivers/net/ethernet/intel/ice/ice_common.c +2 -0
@@ -25,6 +25,8 @@ static enum ice_status ice_set_mac_type(struct ice_hw *hw)case ICE_DEV_ID_E810C_BACKPLANE :case ICE_DEV_ID_E810C_QSFP :case ICE_DEV_ID_E810C_SFP : +case ICE_DEV_ID_E810_XXV_BACKPLANE : +case ICE_DEV_ID_E810_XXV_QSFP :case ICE_DEV_ID_E810_XXV_SFP : hw->mac_type =ICE_MAC_E810 ;break ;
drivers/net/ethernet/intel/ice/ice_devids.h +4 -0
@@ -21,6 +21,10 @@#define ICE_DEV_ID_E810C_QSFP 0x1592/* Intel(R) Ethernet Controller E810-C for SFP */ #define ICE_DEV_ID_E810C_SFP 0x1593 +/* Intel(R) Ethernet Controller E810-XXV for backplane */ +#define ICE_DEV_ID_E810_XXV_BACKPLANE 0x1599 +/* Intel(R) Ethernet Controller E810-XXV for QSFP */ +#define ICE_DEV_ID_E810_XXV_QSFP 0x159A/* Intel(R) Ethernet Controller E810-XXV for SFP */ #define ICE_DEV_ID_E810_XXV_SFP 0x159B/* Intel(R) Ethernet Connection E823-C for backplane */
drivers/net/ethernet/intel/ice/ice_devlink.c +2 -1
@@ -63,7 +63,8 @@ static int ice_info_fw_api(struct ice_pf *pf, struct ice_info_ctx *ctx) {struct ice_hw *hw = &pf->hw; -snprintf (ctx->buf,sizeof (ctx->buf),"%u.%u" , hw->api_maj_ver, hw->api_min_ver); +snprintf (ctx->buf,sizeof (ctx->buf),"%u.%u.%u" , hw->api_maj_ver, + hw->api_min_ver, hw->api_patch);return 0 ; }
drivers/net/ethernet/intel/ice/ice_flex_pipe.c +2 -2
@@ -1668,7 +1668,7 @@ static u16 ice_tunnel_idx_to_entry(struct ice_hw *hw, enum ice_tunnel_type type,for (i =0 ; i < hw->tnl.count && i <ICE_TUNNEL_MAX_ENTRIES ; i++)if (hw->tnl.tbl[i].valid && hw->tnl.tbl[i].type == type && - idx--) + idx-- ==0 )return i;WARN_ON_ONCE (1 );
@@ -1828,7 +1828,7 @@ int ice_udp_tunnel_set_port(struct net_device *netdev, unsigned int table,u16 index; tnl_type = ti->type ==UDP_TUNNEL_TYPE_VXLAN ?TNL_VXLAN :TNL_GENEVE ; - index =ice_tunnel_idx_to_entry (&pf->hw, idx, tnl_type); + index =ice_tunnel_idx_to_entry (&pf->hw, tnl_type, idx); status =ice_create_tunnel (&pf->hw, index, tnl_type,ntohs (ti->port));if (status) {
drivers/net/ethernet/intel/ice/ice_lib.c +9 -0
@@ -2841,6 +2841,7 @@ void ice_napi_del(struct ice_vsi *vsi)*/ int ice_vsi_release (struct ice_vsi *vsi) { +enum ice_status err;struct ice_pf *pf;if (!vsi->back)
@@ -2912,6 +2913,10 @@ int ice_vsi_release(struct ice_vsi *vsi)ice_fltr_remove_all (vsi);ice_rm_vsi_lan_cfg (vsi->port_info, vsi->idx); + err =ice_rm_vsi_rdma_cfg (vsi->port_info, vsi->idx); +if (err) +dev_err (ice_pf_to_dev (vsi->back),"Failed to remove RDMA scheduler config for VSI %u, err %d\n" , + vsi->vsi_num, err);ice_vsi_delete (vsi);ice_vsi_free_q_vectors (vsi);
@@ -3092,6 +3097,10 @@ int ice_vsi_rebuild(struct ice_vsi *vsi, bool init_vsi) prev_num_q_vectors =ice_vsi_rebuild_get_coalesce (vsi, coalesce);ice_rm_vsi_lan_cfg (vsi->port_info, vsi->idx); + ret =ice_rm_vsi_rdma_cfg (vsi->port_info, vsi->idx); +if (ret) +dev_err (ice_pf_to_dev (vsi->back),"Failed to remove RDMA scheduler config for VSI %u, err %d\n" , + vsi->vsi_num, ret);ice_vsi_free_q_vectors (vsi);/* SR-IOV determines needed MSIX resources all at once instead of per
drivers/net/ethernet/intel/ice/ice_main.c +7 -1
@@ -4224,6 +4224,9 @@ ice_probe(struct pci_dev *pdev, const struct pci_device_id __always_unused *ent)if (!pf)return -ENOMEM ; +/* initialize Auxiliary index to invalid value */ + pf->aux_idx =-1 ; +/* set up for high or low DMA */ err =dma_set_mask_and_coherent (dev,DMA_BIT_MASK (64 ));if (err)
@@ -4615,7 +4618,8 @@ static void ice_remove(struct pci_dev *pdev)ice_aq_cancel_waiting_tasks (pf);ice_unplug_aux_dev (pf); -ida_free (&ice_aux_ida, pf->aux_idx); +if (pf->aux_idx >=0 ) +ida_free (&ice_aux_ida, pf->aux_idx);set_bit (ICE_DOWN , pf->state);mutex_destroy (&(&pf->hw)->fdir_fltr_lock);
@@ -5016,6 +5020,8 @@ static const struct pci_device_id ice_pci_tbl[] = { { PCI_VDEVICE(INTEL, ICE_DEV_ID_E810C_BACKPLANE), 0 }, { PCI_VDEVICE(INTEL, ICE_DEV_ID_E810C_QSFP), 0 }, { PCI_VDEVICE(INTEL, ICE_DEV_ID_E810C_SFP), 0 }, + { PCI_VDEVICE(INTEL, ICE_DEV_ID_E810_XXV_BACKPLANE), 0 }, + { PCI_VDEVICE(INTEL, ICE_DEV_ID_E810_XXV_QSFP), 0 }, { PCI_VDEVICE(INTEL, ICE_DEV_ID_E810_XXV_SFP), 0 }, { PCI_VDEVICE(INTEL, ICE_DEV_ID_E823C_BACKPLANE), 0 }, { PCI_VDEVICE(INTEL, ICE_DEV_ID_E823C_QSFP), 0 },
drivers/net/ethernet/intel/ice/ice_sched.c +13 -0
@@ -2070,6 +2070,19 @@ enum ice_status ice_rm_vsi_lan_cfg(struct ice_port_info *pi, u16 vsi_handle)return ice_sched_rm_vsi_cfg (pi, vsi_handle,ICE_SCHED_NODE_OWNER_LAN ); } +/** +* ice_rm_vsi_rdma_cfg - remove VSI and its RDMA children nodes +* @pi: port information structure +* @vsi_handle: software VSI handle +* +* This function clears the VSI and its RDMA children nodes from scheduler tree +* for all TCs. +*/ +enum ice_status ice_rm_vsi_rdma_cfg (struct ice_port_info *pi,u16 vsi_handle) +{ +return ice_sched_rm_vsi_cfg (pi, vsi_handle,ICE_SCHED_NODE_OWNER_RDMA ); +} +/** * ice_get_agg_info - get the aggregator ID * @hw: pointer to the hardware structure
drivers/net/ethernet/intel/ice/ice_sched.h +1 -0
@@ -89,6 +89,7 @@ enum ice_status ice_sched_cfg_vsi(struct ice_port_info *pi, u16 vsi_handle, u8 tc, u16 maxqs, u8 owner, bool enable);enum ice_status ice_rm_vsi_lan_cfg (struct ice_port_info *pi,u16 vsi_handle); +enum ice_status ice_rm_vsi_rdma_cfg (struct ice_port_info *pi,u16 vsi_handle);/* Tx scheduler rate limiter functions */ enum ice_status
drivers/net/ethernet/intel/igc/igc_hw.h +1 -1
@@ -22,8 +22,8 @@#define IGC_DEV_ID_I220_V 0x15F7#define IGC_DEV_ID_I225_K 0x3100#define IGC_DEV_ID_I225_K2 0x3101 +#define IGC_DEV_ID_I226_K 0x3102#define IGC_DEV_ID_I225_LMVP 0x5502 -#define IGC_DEV_ID_I226_K 0x5504#define IGC_DEV_ID_I225_IT 0x0D9F#define IGC_DEV_ID_I226_LM 0x125B#define IGC_DEV_ID_I226_V 0x125C
drivers/net/ethernet/mellanox/mlx5/core/en/tc_tun.c +2 -0
@@ -10,6 +10,8 @@#include "en_tc.h" #include "rep/tc.h" #include "rep/neigh.h" +#include "lag.h" +#include "lag_mp.h" struct mlx5e_tc_tun_route_attr {struct net_device *out_dev;
drivers/net/ethernet/mellanox/mlx5/core/en_accel/ipsec_rxtx.c +27 -24
66 lines not on this page · raw message
drivers/net/ethernet/mellanox/mlx5/core/en_tc.c +2 -0
@@ -72,6 +72,8 @@#include "lib/fs_chains.h" #include "diag/en_tc_tracepoint.h" #include <asm/div64.h> +#include "lag.h" +#include "lag_mp.h" #define nic_chains (priv) ((priv)->fs.tc.chains)#define MLX5_MH_ACT_SZ MLX5_UN_SZ_BYTES(set_add_copy_action_in_auto)
drivers/net/ethernet/mellanox/mlx5/core/en_tx.c +11 -9
@@ -213,19 +213,18 @@ static inline void mlx5e_insert_vlan(void *start, struct sk_buff *skb, u16 ihs)memcpy (&vhdr->h_vlan_encapsulated_proto, skb->data + cpy1_sz, cpy2_sz); } -/* If packet is not IP's CHECKSUM_PARTIAL (e.g. icmd packet), -* need to set L3 checksum flag for IPsec -*/ static void ipsec_txwqe_build_eseg_csum (struct mlx5e_txqsq *sq,struct sk_buff *skb,struct mlx5_wqe_eth_seg *eseg) { +struct xfrm_offload *xo =xfrm_offload (skb); + eseg->cs_flags =MLX5_ETH_WQE_L3_CSUM ; -if (skb->encapsulation) { - eseg->cs_flags |=MLX5_ETH_WQE_L3_INNER_CSUM ; +if (xo->inner_ipproto) { + eseg->cs_flags |=MLX5_ETH_WQE_L4_INNER_CSUM |MLX5_ETH_WQE_L3_INNER_CSUM ; + }else if (likely (skb->ip_summed ==CHECKSUM_PARTIAL )) { + eseg->cs_flags |=MLX5_ETH_WQE_L4_CSUM ; sq->stats->csum_partial_inner++; - }else { - sq->stats->csum_partial++; } }
@@ -234,6 +233,11 @@ mlx5e_txwqe_build_eseg_csum(struct mlx5e_txqsq *sq, struct sk_buff *skb,struct mlx5e_accel_tx_state *accel, struct mlx5_wqe_eth_seg *eseg) { + if (unlikely(mlx5e_ipsec_eseg_meta(eseg))) { +ipsec_txwqe_build_eseg_csum (sq ,skb ,eseg ); +return ; + } +if (likely (skb->ip_summed ==CHECKSUM_PARTIAL )) { eseg->cs_flags =MLX5_ETH_WQE_L3_CSUM ;if (skb->encapsulation) {
@@ -249,8 +253,6 @@ mlx5e_txwqe_build_eseg_csum(struct mlx5e_txqsq *sq, struct sk_buff *skb, eseg->cs_flags =MLX5_ETH_WQE_L3_CSUM |MLX5_ETH_WQE_L4_CSUM ; sq->stats->csum_partial++;#endif - }else if (unlikely (mlx5e_ipsec_eseg_meta (eseg))) { -ipsec_txwqe_build_eseg_csum (sq, skb, eseg); }else sq->stats->csum_none++; }
drivers/net/ethernet/mellanox/mlx5/core/lag.c +12 -7
@@ -372,12 +372,17 @@ static void mlx5_do_bond(struct mlx5_lag *ldev)bool do_bond, roce_lag;int err; -if (!mlx5_lag_is_ready (ldev)) -return ; +if (!mlx5_lag_is_ready (ldev)) { + do_bond = false; + }else { +/* VF LAG is in multipath mode, ignore bond change requests */ +if (mlx5_lag_is_multipath (dev0)) +return ; - tracker = ldev->tracker; + tracker = ldev->tracker; - do_bond = tracker.is_bonded &&mlx5_lag_check_prereq (ldev); + do_bond = tracker.is_bonded &&mlx5_lag_check_prereq (ldev); + }if (do_bond && !__mlx5_lag_is_active (ldev)) { roce_lag = !mlx5_sriov_is_enabled(dev0) &&
@@ -691,11 +696,11 @@ void mlx5_lag_remove_netdev(struct mlx5_core_dev *dev,if (!ldev)return ; -if (__mlx5_lag_is_active (ldev)) -mlx5_disable_lag (ldev); -mlx5_ldev_remove_netdev (ldev, netdev); ldev->flags &= ~MLX5_LAG_FLAG_READY ; + +if (__mlx5_lag_is_active (ldev)) +mlx5_queue_bond_work (ldev,0 ); }/* Must be called with intf_mutex held */
drivers/net/ethernet/mellanox/mlx5/core/lag_mp.c +8 -5
@@ -9,20 +9,23 @@#include "eswitch.h" #include "lib/mlx5.h" +static bool __mlx5_lag_is_multipath (struct mlx5_lag *ldev) +{ +return !!(ldev->flags &MLX5_LAG_FLAG_MULTIPATH ); +} +static bool mlx5_lag_multipath_check_prereq (struct mlx5_lag *ldev) {if (!mlx5_lag_is_ready (ldev))return false; +if (__mlx5_lag_is_active (ldev) && !__mlx5_lag_is_multipath (ldev)) +return false; +return mlx5_esw_multipath_prereq (ldev->pf[MLX5_LAG_P1 ].dev, ldev->pf[MLX5_LAG_P2 ].dev); } -static bool __mlx5_lag_is_multipath (struct mlx5_lag *ldev) -{ -return !!(ldev->flags &MLX5_LAG_FLAG_MULTIPATH ); -} -bool mlx5_lag_is_multipath (struct mlx5_core_dev *dev) {struct mlx5_lag *ldev;
drivers/net/ethernet/mellanox/mlx5/core/lag_mp.h +2 -0
@@ -24,12 +24,14 @@ struct lag_mp {void mlx5_lag_mp_reset (struct mlx5_lag *ldev);int mlx5_lag_mp_init (struct mlx5_lag *ldev);void mlx5_lag_mp_cleanup (struct mlx5_lag *ldev); +bool mlx5_lag_is_multipath (struct mlx5_core_dev *dev);#else /* CONFIG_MLX5_ESWITCH */ static inline void mlx5_lag_mp_reset (struct mlx5_lag *ldev) {};static inline int mlx5_lag_mp_init (struct mlx5_lag *ldev) {return 0 ; }static inline void mlx5_lag_mp_cleanup (struct mlx5_lag *ldev) {} +bool mlx5_lag_is_multipath (struct mlx5_core_dev *dev) {return false; }#endif /* CONFIG_MLX5_ESWITCH */ #endif /* __MLX5_LAG_MP_H__ */
drivers/net/ethernet/stmicro/stmmac/dwmac-generic.c +1 -0
@@ -71,6 +71,7 @@ static int dwmac_generic_probe(struct platform_device *pdev)static const struct of_device_id dwmac_generic_match[] = { { .compatible ="st,spear600-gmac" }, + { .compatible ="snps,dwmac-3.40a" }, { .compatible ="snps,dwmac-3.50a" }, { .compatible ="snps,dwmac-3.610" }, { .compatible ="snps,dwmac-3.70a" },
drivers/net/ethernet/stmicro/stmmac/stmmac_main.c +1 -1
@@ -736,7 +736,7 @@ static int stmmac_hwtstamp_set(struct net_device *dev, struct ifreq *ifr) config.rx_filter =HWTSTAMP_FILTER_PTP_V2_EVENT ; ptp_v2 =PTP_TCR_TSVER2ENA ; snap_type_sel =PTP_TCR_SNAPTYPSEL_1 ; -if (priv->synopsys_id !=DWMAC_CORE_5_10 ) +if (priv->synopsys_id <DWMAC_CORE_4_10 ) ts_event_en =PTP_TCR_TSEVNTENA ; ptp_over_ipv4_udp =PTP_TCR_TSIPV4ENA ; ptp_over_ipv6_udp =PTP_TCR_TSIPV6ENA ;
drivers/net/ethernet/stmicro/stmmac/stmmac_platform.c +8 -0
@@ -508,6 +508,14 @@ stmmac_probe_config_dt(struct platform_device *pdev, u8 *mac) plat->pmt =1 ; } +if (of_device_is_compatible (np,"snps,dwmac-3.40a" )) { + plat->has_gmac =1 ; + plat->enh_desc =1 ; + plat->tx_coe =1 ; + plat->bugged_jumbo =1 ; + plat->pmt =1 ; + } + if (of_device_is_compatible(np, "snps,dwmac-4.00") || of_device_is_compatible(np, "snps,dwmac-4.10a") || of_device_is_compatible(np, "snps,dwmac-4.20a") ||
drivers/net/hamradio/baycom_epp.c +3 -3
@@ -623,16 +623,16 @@ static int receive(struct net_device *dev, int cnt)/* --------------------------------------------------------------------- */ -#ifdef __i386__ +#if defined(__i386__) && !defined(CONFIG_UML )#include <asm/msr.h> #define GETTICK (x) \ ({ \ if (boot_cpu_has(X86_FEATURE_TSC)) \ x = (unsigned int)rdtsc(); \ }) -#else /* __i386__ */ +#else /* __i386__ && !CONFIG_UML */ #define GETTICK (x) -#endif /* __i386__ */ +#endif /* __i386__ && !CONFIG_UML */ static void epp_bh (struct work_struct *work) {
drivers/net/phy/mdio_bus.c +1 -0
@@ -548,6 +548,7 @@ int __mdiobus_register(struct mii_bus *bus, struct module *owner) err =device_register (&bus->dev);if (err) {pr_err ("mii_bus %s failed to register\n" , bus->id); +put_device (&bus->dev);return -EINVAL ; }
drivers/net/usb/Kconfig +1 -0
@@ -117,6 +117,7 @@ config USB_LAN78XX select PHYLIB select MICROCHIP_PHY select FIXED_PHY + select CRC32 help This option adds support for Microchip LAN78XX based USB 2 & USB 3 10/100/1000 Ethernet adapters.
drivers/net/usb/r8152.c +15 -1
@@ -767,6 +767,7 @@ enum rtl8152_flags {PHY_RESET ,SCHEDULE_TASKLET ,GREEN_ETHERNET , + RX_EPROTO, };#define DEVICE_ID_THINKPAD_THUNDERBOLT3_DOCK_GEN2 0x3082
@@ -1770,6 +1771,14 @@ static void read_bulk_callback(struct urb *urb)rtl_set_unplug (tp);netif_device_detach (tp->netdev);return ; +case -EPROTO : + urb->actual_length =0 ; +spin_lock_irqsave (&tp->rx_lock, flags); +list_add_tail (&agg->list, &tp->rx_done); +spin_unlock_irqrestore (&tp->rx_lock, flags); +set_bit (RX_EPROTO , &tp->flags); +schedule_delayed_work (&tp->schedule,1 ); +return ;case -ENOENT :return ;/* the urb is in unlink state */ case -ETIME :
@@ -2425,6 +2434,7 @@ static int rx_bottom(struct r8152 *tp, int budget)if (list_empty (&tp->rx_done)) goto out1; +clear_bit (RX_EPROTO , &tp->flags);INIT_LIST_HEAD (&rx_queue);spin_lock_irqsave (&tp->rx_lock, flags);list_splice_init (&tp->rx_done, &rx_queue);
@@ -2441,7 +2451,7 @@ static int rx_bottom(struct r8152 *tp, int budget) agg = list_entry(cursor, struct rx_agg, list); urb = agg->urb; -if (urb->actual_length <ETH_ZLEN ) +if (urb->status !=0 || urb->actual_length <ETH_ZLEN ) goto submit; agg_free =rtl_get_free_rx (tp,GFP_ATOMIC );
@@ -6643,6 +6653,10 @@ static void rtl_work_func_t(struct work_struct *work) netif_carrier_ok(tp->netdev))tasklet_schedule (&tp->tx_tl);
Lines of this file are not shown. View the raw message.
fs/btrfs/tree-log.c +29 -18
47 lines not on this page · raw message
fs/ocfs2/alloc.c +12 -34
46 lines not on this page · raw message
include/linux/trace_recursion.h +9 -40
49 lines not on this page · raw message
kernel/ucount.c +49 -0
49 lines not on this page · raw message
net/can/isotp.c +36 -15
51 lines not on this page · raw message
net/ipv6/netfilter/ip6t_rt.c +6 -42
48 lines not on this page · raw message
tools/objtool/elf.c +25 -31
56 lines not on this page · raw message
tools/testing/selftests/net/forwarding/Makefile +1 -0
Lines of this file are not shown. View the raw message.
tools/testing/selftests/net/forwarding/forwarding.config.sample +2 -0
Lines of this file are not shown. View the raw message.
tools/testing/selftests/net/forwarding/ip6_forward_instats_vrf.sh new file +172 -0
172 lines not on this page · raw message
tools/testing/selftests/net/forwarding/lib.sh +8 -0
Lines of this file are not shown. View the raw message.
tools/testing/selftests/netfilter/nft_flowtable.sh +0 -1
Lines of this file are not shown. View the raw message.
tools/testing/selftests/vm/userfaultfd.c +20 -3
Lines of this file are not shown. View the raw message.
The rest of this diff is not shown. View the raw message.
Part of the diff is not shown here. View the raw message.
Greg Kroah-Hartman
maintainerI'm announcing the release of the 5.14.15 kernel.
All users of the 5.14 kernel series must upgrade.
The updated 5.14.y git tree can be found at:
git://git.kernel.org/pub/scm/linux/kernel/git/stable/linux-stable.git linux-5.14.y
and can be browsed at the normal kernel.org git web browser:
https://git.kernel.org/?p=linux/kernel/git/stable/linux-stable.git;a=summary
thanks,
greg k-h
------------
Documentation/networking/devlink/ice.rst | 9 Makefile | 2 arch/arm/Kconfig | 1 arch/arm/boot/dts/at91-sama5d27_som1_ek.dts | 1 arch/arm/boot/dts/spear3xx.dtsi | 2 arch/arm/boot/dts/vexpress-v2m.dtsi | 2 arch/arm/boot/dts/vexpress-v2p-ca9.dts | 2 arch/arm64/kvm/hyp/include/nvhe/gfp.h | 1 arch/arm64/kvm/hyp/nvhe/mem_protect.c | 13 arch/arm64/kvm/hyp/nvhe/page_alloc.c | 14 arch/arm64/kvm/mmu.c | 6 arch/nios2/include/asm/irqflags.h | 4 arch/nios2/include/asm/registers.h | 2 arch/parisc/math-emu/fpudispatch.c | 56 +++ arch/powerpc/include/asm/code-patching.h | 1 arch/powerpc/include/asm/security_features.h | 5 arch/powerpc/kernel/idle_book3s.S | 10 arch/powerpc/kernel/security.c | 5 arch/powerpc/kernel/smp.c | 2 arch/powerpc/kvm/book3s_hv_rmhandlers.S | 28 - arch/powerpc/lib/code-patching.c | 7 arch/powerpc/net/bpf_jit.h | 33 + arch/powerpc/net/bpf_jit64.h | 8 arch/powerpc/net/bpf_jit_comp.c | 6 arch/powerpc/net/bpf_jit_comp32.c | 8 arch/powerpc/net/bpf_jit_comp64.c | 63 +++ arch/s390/include/asm/pci.h | 2 arch/s390/pci/pci.c | 48 ++ arch/s390/pci/pci_event.c | 4 arch/sh/include/asm/pgtable-3level.h | 2 arch/x86/events/msr.c | 1 arch/x86/include/asm/kvm_host.h | 3 arch/x86/kvm/mmu/mmu.c | 6 arch/x86/kvm/svm/sev.c | 16 arch/x86/kvm/svm/svm.h | 2 arch/x86/kvm/vmx/vmx.c | 17 arch/x86/kvm/x86.c | 150 +++++--- arch/x86/xen/enlighten.c | 9 arch/xtensa/platforms/xtfpga/setup.c | 12 block/blk-cgroup.c | 5 block/blk-mq-debugfs.c | 1 block/mq-deadline.c | 12 drivers/base/test/Makefile | 2 drivers/gpu/drm/amd/amdgpu/amdgpu_device.c | 8 drivers/gpu/drm/amd/display/Kconfig | 2 drivers/gpu/drm/kmb/kmb_crtc.c | 41 ++ drivers/gpu/drm/kmb/kmb_drv.c | 10 drivers/gpu/drm/kmb/kmb_drv.h | 13 drivers/gpu/drm/kmb/kmb_dsi.c | 25 - drivers/gpu/drm/kmb/kmb_dsi.h | 2 drivers/gpu/drm/kmb/kmb_plane.c | 122 ++++++- drivers/gpu/drm/kmb/kmb_plane.h | 11 drivers/gpu/drm/kmb/kmb_regs.h | 3 drivers/gpu/drm/msm/adreno/a6xx_gmu.c | 6 drivers/gpu/drm/msm/adreno/a6xx_gmu.h | 3 drivers/gpu/drm/msm/adreno/a6xx_gpu.c | 40 +- drivers/gpu/drm/mxsfb/mxsfb_drv.c | 6 drivers/gpu/drm/panel/panel-ilitek-ili9881c.c | 12 drivers/iio/test/Makefile | 1 drivers/input/keyboard/snvs_pwrkey.c | 29 + drivers/isdn/capi/kcapi.c | 5 drivers/isdn/hardware/mISDN/netjet.c | 2 drivers/net/can/rcar/rcar_can.c | 20 - drivers/net/can/sja1000/peak_pci.c | 9 drivers/net/can/usb/peak_usb/pcan_usb_fd.c | 5 drivers/net/dsa/lantiq_gswip.c | 2 drivers/net/dsa/mt7530.c | 8 drivers/net/ethernet/freescale/enetc/enetc_ethtool.c | 2 drivers/net/ethernet/freescale/enetc/enetc_pf.c | 5 drivers/net/ethernet/hisilicon/hns3/hnae3.c | 21 + drivers/net/ethernet/hisilicon/hns3/hnae3.h | 1 drivers/net/ethernet/hisilicon/hns3/hns3_enet.c | 37 +- drivers/net/ethernet/hisilicon/hns3/hns3_enet.h | 7 drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_dcb.c | 9 drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_err.c | 5 drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_err.h | 2 drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_main.c | 1 drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_tm.c | 2 drivers/net/ethernet/hisilicon/hns3/hns3vf/hclgevf_main.c | 6 drivers/net/ethernet/intel/e1000e/e1000.h | 4 drivers/net/ethernet/intel/e1000e/ich8lan.c | 31 + drivers/net/ethernet/intel/e1000e/ich8lan.h | 3 drivers/net/ethernet/intel/e1000e/netdev.c | 29 - drivers/net/ethernet/intel/ice/ice_common.c | 2 drivers/net/ethernet/intel/ice/ice_devids.h | 4 drivers/net/ethernet/intel/ice/ice_devlink.c | 3 drivers/net/ethernet/intel/ice/ice_flex_pipe.c | 4 drivers/net/ethernet/intel/ice/ice_lib.c | 9 drivers/net/ethernet/intel/ice/ice_main.c | 8 drivers/net/ethernet/intel/ice/ice_sched.c | 13 drivers/net/ethernet/intel/ice/ice_sched.h | 1 drivers/net/ethernet/intel/igc/igc_hw.h | 2 drivers/net/ethernet/mellanox/mlx5/core/en/tc_tun.c | 2 drivers/net/ethernet/mellanox/mlx5/core/en_accel/ipsec_rxtx.c | 51 +- drivers/net/ethernet/mellanox/mlx5/core/en_tc.c | 2 drivers/net/ethernet/mellanox/mlx5/core/en_tx.c | 20 - drivers/net/ethernet/mellanox/mlx5/core/lag.c | 19 - drivers/net/ethernet/mellanox/mlx5/core/lag_mp.c | 13 drivers/net/ethernet/mellanox/mlx5/core/lag_mp.h | 2 drivers/net/ethernet/stmicro/stmmac/dwmac-generic.c | 1 drivers/net/ethernet/stmicro/stmmac/stmmac_main.c | 2 drivers/net/ethernet/stmicro/stmmac/stmmac_platform.c | 8 drivers/net/hamradio/baycom_epp.c | 6 drivers/net/phy/mdio_bus.c | 1 drivers/net/usb/Kconfig | 1 drivers/net/usb/r8152.c | 16 drivers/pci/hotplug/s390_pci_hpc.c | 9 drivers/pinctrl/stm32/pinctrl-stm32.c | 4 drivers/platform/x86/intel_scu_ipc.c | 4 drivers/ptp/ptp_clock.c | 15 drivers/scsi/hosts.c | 3 drivers/scsi/mpi3mr/mpi3mr_os.c | 2 drivers/scsi/qla2xxx/qla_bsg.c | 2 drivers/scsi/scsi_transport_iscsi.c | 2 drivers/scsi/storvsc_drv.c | 32 + drivers/spi/spi-mux.c | 7 drivers/spi/spi.c | 27 - drivers/thunderbolt/Makefile | 1 fs/autofs/waitq.c | 2 fs/btrfs/tree-log.c | 47 +- fs/ceph/caps.c | 12 fs/ceph/file.c | 1 fs/ceph/inode.c | 2 fs/ceph/mds_client.c | 17 fs/ceph/super.c | 17 fs/ceph/super.h | 3 fs/kernel_read_file.c | 2 fs/nfsd/nfsctl.c | 5 fs/ocfs2/alloc.c | 46 -- fs/ocfs2/super.c | 14 fs/userfaultfd.c | 12 include/linux/elfcore.h | 2 include/linux/mlx5/driver.h | 1 include/linux/secretmem.h | 2 include/linux/spi/spi.h | 3 include/linux/trace_recursion.h | 49 -- include/linux/user_namespace.h | 2 include/net/sctp/sm.h | 6 include/sound/hda_codec.h | 1 kernel/auditsc.c | 2 kernel/cred.c | 9 kernel/dma/debug.c | 12 kernel/sched/core.c | 1 kernel/signal.c | 25 - kernel/trace/ftrace.c | 4 kernel/ucount.c | 49 ++ lib/Makefile | 2 lib/kunit/executor_test.c | 4 mm/huge_memory.c | 6 mm/mempolicy.c | 16 mm/slub.c | 23 - net/bpf/test_run.c | 14 net/bridge/br_private.h | 4 net/can/isotp.c | 51 ++ net/can/j1939/j1939-priv.h | 1 net/can/j1939/main.c | 7 net/can/j1939/transport.c | 14 net/dsa/dsa2.c | 9 net/ipv4/tcp_ipv4.c | 19 - net/ipv6/ip6_output.c | 3 net/ipv6/netfilter/ip6t_rt.c | 48 -- net/netfilter/Kconfig | 2 net/netfilter/ipvs/ip_vs_ctl.c | 5 net/netfilter/nft_chain_filter.c | 9 net/netfilter/xt_IDLETIMER.c | 2 net/nfc/nci/rsp.c | 2 net/sched/act_ct.c | 2 scripts/Makefile.gcc-plugins | 4 security/keys/process_keys.c | 8 sound/hda/hdac_controller.c | 5 sound/pci/hda/hda_bind.c | 20 - sound/pci/hda/hda_codec.c | 1 sound/pci/hda/hda_controller.c | 24 - sound/pci/hda/hda_controller.h | 2 sound/pci/hda/hda_intel.c | 29 + sound/pci/hda/hda_intel.h | 4 sound/pci/hda/patch_realtek.c | 1 sound/soc/codecs/Kconfig | 1 sound/soc/codecs/cs4341.c | 7 sound/soc/codecs/nau8824.c | 4 sound/soc/codecs/pcm179x-spi.c | 1 sound/soc/codecs/pcm512x.c | 2 sound/soc/codecs/wm8960.c | 13 sound/soc/fsl/fsl_xcvr.c | 17 sound/soc/soc-dapm.c | 13 sound/usb/quirks-table.h | 32 + tools/lib/perf/tests/test-evlist.c | 6 tools/lib/perf/tests/test-evsel.c | 7 tools/objtool/elf.c | 56 +-- tools/testing/selftests/net/forwarding/Makefile | 1 tools/testing/selftests/net/forwarding/forwarding.config.sample | 2 tools/testing/selftests/net/forwarding/ip6_forward_instats_vrf.sh | 172 ++++++++++ tools/testing/selftests/net/forwarding/lib.sh | 8 tools/testing/selftests/netfilter/nft_flowtable.sh | 1 tools/testing/selftests/vm/userfaultfd.c | 23 + 195 files changed, 1756 insertions(+), 730 deletions(-)
Aleksander Jan Bajkowski (1):
net: dsa: lantiq_gswip: fix register definition
Alex Deucher (1):
drm/amdgpu/display: fix dependencies for DRM_AMD_DC_SI
Andrea Parri (Microsoft) (1):
scsi: storvsc: Fix validation for unsolicited incoming packets
Anitha Chrisanthus (4):
drm/kmb: Work around for higher system clock drm/kmb: Corrected typo in handle_lcd_irq drm/kmb: Enable ADV bridge after modeset drm/kmb: Limit supported mode to 1080p
Antoine Tenart (1):
netfilter: ipvs: make global sysctl readonly in non-init netns
Arnd Bergmann (1):
bitfield: build kunit tests without structleak plugin
Benjamin Coddington (1):
NFSD: Keep existing listeners on portlist error
Brendan Grieve (1):
ALSA: usb-audio: Provide quirk for Sennheiser GSP670 Headset
Brendan Higgins (4):
gcc-plugins/structleak: add makefile var for disabling structleak iio/test-format: build kunit tests without structleak plugin device property: build kunit tests without structleak plugin
thunderbolt: build kunit tests without structleak plugin
Brett Creeley (2):
ice: Fix failure to re-add LAN/RDMA Tx queues
ice: Print the api_patch as part of the fw.mgmt.api
Chenyi Qiang (1):
KVM: MMU: Reset mmu->pkru_mask to avoid stale data
Christophe JAILLET (1):
net: dsa: Fix an error handling path in 'dsa_switch_parse_ports_of()'
DENG Qingfang (1):
net: dsa: mt7530: correct ds->num_ports
Dan Johansen (1):
drm/panel: ilitek-ili9881c: Fix sync for Feixin K101-IM2BYL02 panel
Daniel Borkmann (1):
bpf, test, cgroup: Use sk_{alloc,free} for test cases
Dave Ertman (1):
ice: Avoid crash from unnecessary IDA free
Dexuan Cui (1):
scsi: core: Fix shost->cmd_per_lun calculation in scsi_add_host_with_dma()
Edmund Dea (3):
drm/kmb: Remove clearing DPHY regs
drm/kmb: Disable change of plane parameters
drm/kmb: Enable alpha blended second plane
Emeel Hakim (2):
net/mlx5e: IPsec: Fix a misuse of the software parser's fields net/mlx5e: IPsec: Fix work queue entry ethernet segment checksum flags
Eric Dumazet (1):
mm/mempolicy: do not allow illegal MPOL_F_NUMA_BALANCING | MPOL_LOCAL in mbind()
Eric W. Biederman (4):
ucounts: Move get_ucounts from cred_alloc_blank to key_change_session_keyring
ucounts: Pair inc_rlimit_ucounts with dec_rlimit_ucoutns in commit_creds
ucounts: Proper error handling in set_cred_ucounts
ucounts: Fix signal ucount refcounting
Eugen Hristev (1):
ARM: dts: at91: sama5d2_som1_ek: disable ISC node by default
Fabien Dessenne (1):
pinctrl: stm32: use valid pin identifier in stm32_pinctrl_resume()
Filipe Manana (1):
btrfs: deal with errors when checking if a dir entry exists during log replay
Florian Westphal (2):
netfilter: nf_tables: skip netdev events generated on netns removal
selftests: netfilter: remove stray bash debug line
Gaosheng Cui (1):
audit: fix possible null-pointer dereference in audit_filter_rules
Geert Uytterhoeven (2):
block/mq-deadline: Move dd_queued() to fix defined but not used warning
sh: pgtable-3level: fix cast to pointer from integer of different size
Gerald Schaefer (1):
dma-debug: fix sg checks in debug_dma_map_sg()
Greg Kroah-Hartman (1):
Linux 5.14.15
Guangbin Huang (2):
net: hns3: reset DWRR of unused tc to zero
net: hns3: add limit ets dwrr bandwidth cannot be 0
Guenter Roeck (1):
xtensa: xtfpga: Try software restart before simulating CPU reset
Hans de Goede (1):
ASoC: nau8824: Fix headphone vs headset, button-press detection no longer working
Hayes Wang (1):
r8152: avoid to resubmit rx immediately
Helge Deller (1):
parisc: math-emu: Fix fall-through warnings
Herve Codina (2):
net: stmmac: add support for dwmac 3.40a
ARM: dts: spear3xx: Fix gmac node
Ian Kent (1):
autofs: fix wait name hash calculation in autofs_wait()
Jan Beulich (1):
xen/x86: prevent PVH type from getting clobbered
Jan Kara (1):
ocfs2: fix data corruption after conversion from inline format
Jeff Layton (2):
ceph: skip existing superblocks that are blocklisted or shut down when mounting
ceph: fix handling of "meta" errors
Jiaran Zhang (1):
net: hns3: Add configuration of TM QCN error event
Johannes Thumshirn (1):
block: decode QUEUE_FLAG_HCTX_ACTIVE in debugfs output
Joy Gu (1):
scsi: qla2xxx: Fix a memory leak in an error path of qla2x00_process_els()
Juhee Kang (1):
netfilter: xt_IDLETIMER: fix panic that occurs when timer_type has garbage value
Kai Vehmanen (1):
ALSA: hda: avoid write to STATESTS if controller is in reset
Kan Liang (1):
perf/x86/msr: Add Sapphire Rapids CPU support
Kurt Kanzenbach (1):
net: stmmac: Fix E2E delay mechanism
Leonard Crestez (1):
tcp: md5: Fix overlap between vrf and non-vrf keys
Lin Ma (1):
nfc: nci: fix the UAF of rf_conn_info object
Lukas Bulwahn (1):
elfcore: correct reference to CONFIG_UML
Maor Dickman (1):
net/mlx5: Lag, change multipath and bonding to be mutually exclusive
Marc Kleine-Budde (1):
can: isotp: isotp_sendmsg(): fix return error on FC timeout on TX path
Marek Szyprowski (1):
mm/thp: decrease nr_thps in file's mapping on THP split
Marek Vasut (1):
drm: mxsfb: Fix NULL pointer dereference crash on unload
Mark Bloch (1):
net/mlx5: Lag, move lag destruction to a workqueue
Mark Brown (3):
ASoC: pcm179x: Add missing entries SPI to device ID table
ASoC: cs4341: Add SPI device ID table
spi: Fix deadlock when adding SPI controllers on SPI buses
Masahiro Kozuka (1):
KVM: SEV: Flush cache on non-coherent systems before RECEIVE_UPDATE_DATA
Matthew Wilcox (Oracle) (1):
vfs: check fd has read access in kernel_read_file_from_fd()
Max Filippov (1):
xtensa: xtfpga: use CONFIG_USE_OF instead of CONFIG_OF
Miaohe Lin (4):
mm, slub: fix mismatch between reconstructed freelist depth and cnt mm, slub: fix potential memoryleak in kmem_cache_open() mm, slub: fix potential use-after-free in slab_debugfs_fops mm, slub: fix incorrect memcg slab count for bulk free
Michael Ellerman (3):
KVM: PPC: Book3S HV: Fix stack handling in idle_kvm_start_guest()
KVM: PPC: Book3S HV: Make idle_kvm_start_guest() return 0 if it went to guest powerpc/idle: Don't corrupt back chain when going idle
Michael Forney (2):
objtool: Check for gelf_update_rel[a] failures
objtool: Update section header before relocations
Michal Swiatkowski (1):
ice: fix getting UDP tunnel entry
Mike Christie (1):
scsi: iscsi: Fix set_param() handling
Nadav Amit (1):
userfaultfd: fix a race between writeprotect and exit_mmap()
Nathan Lynch (1):
powerpc/smp: do not decrement idle task preempt count in CPU offline
Naveen N. Rao (4):
powerpc/lib: Add helper to check if offset is within conditional branch range powerpc/bpf: Validate branch ranges
powerpc/security: Add a helper to query stf_barrier type powerpc/bpf: Emit stf barrier instruction sequences for BPF_NOSPEC
Nick Desaulniers (1):
ARM: 9122/1: select HAVE_FUTEX_CMPXCHG
Niklas Schnelle (2):
s390/pci: cleanup resources only if necessary s390/pci: fix zpci_zdev_put() on reserve
Nikolay Aleksandrov (1):
net: bridge: mcast: use multicast_membership_interval for IGMPv3
Paolo Bonzini (11):
KVM: nVMX: promptly process interrupts delivered while in guest mode
KVM: SEV-ES: rename guest_ins_data to sev_pio_data
KVM: SEV-ES: clean up kvm_sev_es_ins/outs
KVM: SEV-ES: keep INS functions together
KVM: SEV-ES: fix length of string I/O
KVM: SEV-ES: go over the sev_pio_data buffer in multiple passes if needed
KVM: SEV-ES: reduce ghcb_sa_len to 32 bits
KVM: x86: leave vcpu->arch.pio.count alone in emulator_pio_in_out
KVM: x86: check for interrupts before deciding whether to exit the fast path
KVM: x86: split the two parts of emulator_pio_in
KVM: x86: remove unnecessary arguments from complete_emulator_pio_in
Paul Blakey (1):
net/sched: act_ct: Fix byte count on fragmented packets
Peng Li (1):
net: hns3: disable sriov before unload hclge layer
Peter Gonda (1):
KVM: SEV-ES: Set guest_state_protected after VMSA update
Peter Rosin (1):
ASoC: pcm512x: Mend accesses to the I2S_1 and I2S_2 registers
Peter Xu (1):
mm/userfaultfd: selftests: fix memory corruption with thp enabled
Prashant Malani (2):
platform/x86: intel_scu_ipc: Increase virtual timeout to 10s platform/x86: intel_scu_ipc: Update timeout value in comment
Quentin Perret (2):
KVM: arm64: Fix host stage-2 PGD refcount
KVM: arm64: Release mmap_lock when using VM_SHARED with MTE
Randy Dunlap (2):
hamradio: baycom_epp: fix build for UML
NIOS2: irqflags: rename a redefined register name
Rob Clark (1):
drm/msm/a6xx: Serialize GMU communication
Rob Herring (1):
arm: dts: vexpress-v2p-ca9: Fix the SMB unit-address
Sasha Neftin (3):
e1000e: Fix packet loss on Tiger Lake and later
igc: Update I226_K device ID
e1000e: Separate TGP board type from SPT
Sean Christopherson (1):
mm/secretmem: fix NULL page->mapping dereference in page_is_secretmem()
Shengjiu Wang (2):
ASoC: fsl_xcvr: Fix channel swap issue with ARC
ASoC: wm8960: Fix clock configuration on slave mode
Shunsuke Nakamura (2):
libperf test evsel: Fix build error on !x86 architectures libperf tests: Fix test_stat_cpu
Sreekanth Reddy (1):
scsi: mpi3mr: Fix duplicate device entries when scanning through sysfs
Srinivasa Rao Mandadapu (1):
ASoC: codec: wcd938x: Add irq config support
Stephane Grosjean (1):
can: peak_usb: pcan_usb_fd_decode_status(): fix back to ERROR_ACTIVE state notification
Stephen Suryaputra (1):
ipv6: When forwarding count rx stats on the orig netdev
Steven Clarkson (1):
ALSA: hda/realtek: Add quirk for Clevo PC50HS
Steven Rostedt (VMware) (1):
tracing: Have all levels of checks prevent recursion
Takashi Iwai (2):
ASoC: DAPM: Fix missing kctl change notifications
ALSA: hda: intel: Allow repeatedly probing on codec configuration errors
Tejun Heo (1):
blk-cgroup: blk_cgroup_bio_start() should use irq-safe operations on blkg->iostat_cpu
Tony Nguyen (1):
ice: Add missing E810 device ids
Uwe Kleine-König (2):
spi-mux: Fix false-positive lockdep splats
Input: snvs_pwrkey - add clk handling
Valentin Vidic (1):
ocfs2: mount fails with buffer overflow in strlen
Vegard Nossum (2):
lan78xx: select CRC32
netfilter: Kconfig: use 'default y' instead of 'm' for bool config option
Vladimir Oltean (2):
net: enetc: fix ethtool counter name for PM0_TERR
net: enetc: make sure all traffic classes can send large frames
Woody Lin (1):
sched/scs: Reset the shadow stack when idle_task_exit
Xiaolong Huang (1):
isdn: cpai: check ctr->cnr to avoid array index out of bound
Xin Long (2):
netfilter: ip6t_rt: fix rt0_hdr parsing in rt_mt6
sctp: fix transport encap_port update in sctp_vtag_verify
Xiyu Yang (1):
kunit: fix reference count leak in kfree_at_end
Yanfei Xu (1):
net: mdiobus: Fix memory leak in __mdiobus_register
Yang Yingliang (1):
ptp: Fix possible memory leak in ptp_clock_register()
Yifan Zhang (1):
drm/amdgpu: init iommu after amdkfd device init
Yoshihiro Shimoda (1):
can: rcar_can: fix suspend/resume
Yufeng Mo (1):
net: hns3: fix vf reset workqueue cannot exit
Yunsheng Lin (3):
net: hns3: schedule the polling again when allocation fails
net: hns3: fix the max tx size according to user manual
net: hns3: fix for miscalculation of rx unused desc
Zhang Changzhong (2):
can: j1939: j1939_xtp_rx_dat_one(): cancel session if receive TP.DT with error length
can: j1939: j1939_xtp_rx_rts_session_new(): abort TP less than 9 bytes
Zheyu Ma (2):
can: peak_pci: peak_pci_remove(): fix UAF
isdn: mISDN: Fix sleeping function called from invalid context
Ziyang Xuan (4):
can: isotp: isotp_sendmsg(): add result check for wait_event_interruptible()
can: isotp: isotp_sendmsg(): fix TX buffer concurrent access in isotp_sendmsg()
can: j1939: j1939_tp_rxtimer(): fix errant alert in j1939_tp_rxtimer
can: j1939: j1939_netdev_start(): fix UAF for rx_kref of j1939_priv