mirror of
https://github.com/Fishwaldo/build.git
synced 2025-07-23 05:18:55 +00:00
Merging mvebu64 into stable
This commit is contained in:
parent
e15e2b8d2e
commit
e80a1ab3bf
54 changed files with 1028053 additions and 709 deletions
|
@ -1,6 +1,6 @@
|
|||
#
|
||||
# Automatically generated file; DO NOT EDIT.
|
||||
# Linux/arm64 4.4.127 Kernel Configuration
|
||||
# Linux/arm64 4.4.131 Kernel Configuration
|
||||
#
|
||||
CONFIG_ARM64=y
|
||||
CONFIG_64BIT=y
|
||||
|
@ -470,6 +470,7 @@ CONFIG_FRAME_VECTOR=y
|
|||
CONFIG_SECCOMP=y
|
||||
# CONFIG_XEN is not set
|
||||
CONFIG_FORCE_MAX_ZONEORDER=11
|
||||
CONFIG_HARDEN_BRANCH_PREDICTOR=y
|
||||
# CONFIG_ARMV8_DEPRECATED is not set
|
||||
|
||||
#
|
||||
|
@ -2355,6 +2356,7 @@ CONFIG_ATH10K_PCI=m
|
|||
CONFIG_ATH10K_DFS_CERTIFIED=y
|
||||
CONFIG_WCN36XX=m
|
||||
# CONFIG_WCN36XX_DEBUGFS is not set
|
||||
CONFIG_RTL8188EU=m
|
||||
CONFIG_B43=m
|
||||
CONFIG_B43_BCMA=y
|
||||
CONFIG_B43_SSB=y
|
||||
|
@ -4297,7 +4299,7 @@ CONFIG_USB_STORAGE_ONETOUCH=y
|
|||
CONFIG_USB_STORAGE_KARMA=y
|
||||
CONFIG_USB_STORAGE_CYPRESS_ATACB=y
|
||||
CONFIG_USB_STORAGE_ENE_UB6250=y
|
||||
CONFIG_USB_UAS=y
|
||||
CONFIG_USB_UAS=m
|
||||
|
||||
#
|
||||
# USB Imaging devices
|
||||
|
@ -5012,6 +5014,7 @@ CONFIG_ARM_SCPI_PROTOCOL=m
|
|||
# CONFIG_FIRMWARE_MEMMAP is not set
|
||||
CONFIG_DMIID=y
|
||||
# CONFIG_DMI_SYSFS is not set
|
||||
CONFIG_HAVE_ARM_SMCCC=y
|
||||
|
||||
#
|
||||
# EFI (Extensible Firmware Interface) Support
|
||||
|
@ -5098,7 +5101,7 @@ CONFIG_PRINT_QUOTA_WARNING=y
|
|||
CONFIG_QUOTA_TREE=m
|
||||
# CONFIG_QFMT_V1 is not set
|
||||
CONFIG_QFMT_V2=m
|
||||
CONFIG_QUOTACTL=m
|
||||
CONFIG_QUOTACTL=y
|
||||
CONFIG_AUTOFS4_FS=m
|
||||
CONFIG_FUSE_FS=m
|
||||
CONFIG_CUSE=m
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
#
|
||||
# Automatically generated file; DO NOT EDIT.
|
||||
# Linux/arm64 4.16.0-rc3 Kernel Configuration
|
||||
# Linux/arm64 4.16.7 Kernel Configuration
|
||||
#
|
||||
CONFIG_ARM64=y
|
||||
CONFIG_64BIT=y
|
||||
|
@ -35,7 +35,6 @@ CONFIG_FIX_EARLYCON_MEM=y
|
|||
CONFIG_PGTABLE_LEVELS=3
|
||||
CONFIG_ARCH_SUPPORTS_UPROBES=y
|
||||
CONFIG_ARCH_PROC_KCORE_TEXT=y
|
||||
CONFIG_DEFCONFIG_LIST="/lib/modules/$UNAME_RELEASE/.config"
|
||||
CONFIG_IRQ_WORK=y
|
||||
CONFIG_BUILDTIME_EXTABLE_SORT=y
|
||||
CONFIG_THREAD_INFO_IN_TASK=y
|
||||
|
@ -2532,6 +2531,7 @@ CONFIG_ATH10K_SDIO=m
|
|||
CONFIG_ATH10K_DFS_CERTIFIED=y
|
||||
CONFIG_WCN36XX=m
|
||||
# CONFIG_WCN36XX_DEBUGFS is not set
|
||||
CONFIG_RTL8188EU=m
|
||||
CONFIG_WLAN_VENDOR_ATMEL=y
|
||||
CONFIG_ATMEL=m
|
||||
CONFIG_PCI_ATMEL=m
|
||||
|
@ -3873,7 +3873,7 @@ CONFIG_USB_STORAGE=y
|
|||
# CONFIG_USB_STORAGE_KARMA is not set
|
||||
# CONFIG_USB_STORAGE_CYPRESS_ATACB is not set
|
||||
# CONFIG_USB_STORAGE_ENE_UB6250 is not set
|
||||
# CONFIG_USB_UAS is not set
|
||||
CONFIG_USB_UAS=m
|
||||
|
||||
#
|
||||
# USB Imaging devices
|
||||
|
@ -4728,9 +4728,9 @@ CONFIG_PRINT_QUOTA_WARNING=y
|
|||
# CONFIG_QFMT_V2 is not set
|
||||
CONFIG_QUOTACTL=y
|
||||
CONFIG_AUTOFS4_FS=y
|
||||
CONFIG_FUSE_FS=y
|
||||
CONFIG_CUSE=y
|
||||
CONFIG_OVERLAY_FS=y
|
||||
CONFIG_FUSE_FS=m
|
||||
CONFIG_CUSE=m
|
||||
CONFIG_OVERLAY_FS=m
|
||||
# CONFIG_OVERLAY_FS_REDIRECT_DIR is not set
|
||||
CONFIG_OVERLAY_FS_REDIRECT_ALWAYS_FOLLOW=y
|
||||
# CONFIG_OVERLAY_FS_INDEX is not set
|
||||
|
@ -4818,6 +4818,23 @@ CONFIG_UBIFS_FS_SECURITY=y
|
|||
# CONFIG_UFS_FS is not set
|
||||
CONFIG_EXOFS_FS=m
|
||||
# CONFIG_EXOFS_DEBUG is not set
|
||||
CONFIG_AUFS_FS=m
|
||||
CONFIG_AUFS_BRANCH_MAX_127=y
|
||||
# CONFIG_AUFS_BRANCH_MAX_511 is not set
|
||||
# CONFIG_AUFS_BRANCH_MAX_1023 is not set
|
||||
# CONFIG_AUFS_BRANCH_MAX_32767 is not set
|
||||
CONFIG_AUFS_SBILIST=y
|
||||
# CONFIG_AUFS_HNOTIFY is not set
|
||||
# CONFIG_AUFS_EXPORT is not set
|
||||
# CONFIG_AUFS_XATTR is not set
|
||||
# CONFIG_AUFS_FHSM is not set
|
||||
# CONFIG_AUFS_RDU is not set
|
||||
# CONFIG_AUFS_DIRREN is not set
|
||||
# CONFIG_AUFS_SHWH is not set
|
||||
# CONFIG_AUFS_BR_RAMFS is not set
|
||||
# CONFIG_AUFS_BR_FUSE is not set
|
||||
CONFIG_AUFS_BDEV_LOOP=y
|
||||
# CONFIG_AUFS_DEBUG is not set
|
||||
CONFIG_ORE=m
|
||||
CONFIG_NETWORK_FILESYSTEMS=y
|
||||
CONFIG_NFS_FS=y
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
#
|
||||
# Automatically generated file; DO NOT EDIT.
|
||||
# Linux/arm64 4.14.23 Kernel Configuration
|
||||
# Linux/arm64 4.14.39 Kernel Configuration
|
||||
#
|
||||
CONFIG_ARM64=y
|
||||
CONFIG_64BIT=y
|
||||
|
@ -2519,6 +2519,7 @@ CONFIG_ATH10K_SDIO=m
|
|||
CONFIG_ATH10K_DFS_CERTIFIED=y
|
||||
CONFIG_WCN36XX=m
|
||||
# CONFIG_WCN36XX_DEBUGFS is not set
|
||||
CONFIG_RTL8188EU=m
|
||||
CONFIG_WLAN_VENDOR_ATMEL=y
|
||||
CONFIG_ATMEL=m
|
||||
CONFIG_PCI_ATMEL=m
|
||||
|
@ -3855,7 +3856,7 @@ CONFIG_USB_STORAGE=y
|
|||
# CONFIG_USB_STORAGE_KARMA is not set
|
||||
# CONFIG_USB_STORAGE_CYPRESS_ATACB is not set
|
||||
# CONFIG_USB_STORAGE_ENE_UB6250 is not set
|
||||
# CONFIG_USB_UAS is not set
|
||||
CONFIG_USB_UAS=m
|
||||
|
||||
#
|
||||
# USB Imaging devices
|
||||
|
@ -4687,7 +4688,7 @@ CONFIG_PRINT_QUOTA_WARNING=y
|
|||
# CONFIG_QUOTA_DEBUG is not set
|
||||
# CONFIG_QFMT_V1 is not set
|
||||
# CONFIG_QFMT_V2 is not set
|
||||
CONFIG_QUOTACTL=m
|
||||
CONFIG_QUOTACTL=y
|
||||
CONFIG_AUTOFS4_FS=m
|
||||
CONFIG_FUSE_FS=m
|
||||
CONFIG_CUSE=m
|
||||
|
|
|
@ -38,7 +38,7 @@ case $BRANCH in
|
|||
|
||||
dev)
|
||||
KERNELSOURCE=$MAINLINE_KERNEL_SOURCE
|
||||
KERNELBRANCH='branch:master'
|
||||
KERNELBRANCH='branch:linux-4.16.y'
|
||||
KERNELDIR=$MAINLINE_KERNEL_DIR
|
||||
|
||||
KERNEL_USE_GCC='> 7.0'
|
||||
|
@ -60,7 +60,7 @@ write_uboot_platform()
|
|||
family_tweaks()
|
||||
{
|
||||
chroot $SDCARD /bin/bash -c "apt-get -y -qq remove --auto-remove linux-sound-base alsa-base alsa-utils bluez>/dev/null 2>&1"
|
||||
ln -sf interfaces.espressobin $SDCARD/etc/network/interfaces
|
||||
[[ -f $SDCARD/etc/netplan/armbian-default.yaml ]] && sed -i "s/^ renderer.*/ renderer: networkd/" $SDCARD/etc/netplan/armbian-default.yaml
|
||||
cp $SRC/packages/bsp/mvebu64/10* $SDCARD/etc/systemd/network/
|
||||
echo "#Marvell Espressobin Console" >> $SDCARD/etc/securetty
|
||||
echo "ttyMV0" >> $SDCARD/etc/securetty
|
||||
|
|
|
@ -944,44 +944,6 @@ index de7b4f97ac75..be519416c112 100644
|
|||
|
||||
#define lm_name_equal(name1, name2) \
|
||||
(((name1)->ln_number == (name2)->ln_number) && \
|
||||
diff --git a/include/linux/log2.h b/include/linux/log2.h
|
||||
index fd7ff3d91e6a..f38fae23bdac 100644
|
||||
--- a/include/linux/log2.h
|
||||
+++ b/include/linux/log2.h
|
||||
@@ -16,12 +16,6 @@
|
||||
#include <linux/bitops.h>
|
||||
|
||||
/*
|
||||
- * deal with unrepresentable constant logarithms
|
||||
- */
|
||||
-extern __attribute__((const, noreturn))
|
||||
-int ____ilog2_NaN(void);
|
||||
-
|
||||
-/*
|
||||
* non-constant log of base 2 calculators
|
||||
* - the arch may override these in asm/bitops.h if they can be implemented
|
||||
* more efficiently than using fls() and fls64()
|
||||
@@ -85,7 +79,7 @@ unsigned long __rounddown_pow_of_two(unsigned long n)
|
||||
#define ilog2(n) \
|
||||
( \
|
||||
__builtin_constant_p(n) ? ( \
|
||||
- (n) < 1 ? ____ilog2_NaN() : \
|
||||
+ (n) < 2 ? 0 : \
|
||||
(n) & (1ULL << 63) ? 63 : \
|
||||
(n) & (1ULL << 62) ? 62 : \
|
||||
(n) & (1ULL << 61) ? 61 : \
|
||||
@@ -148,10 +142,7 @@ unsigned long __rounddown_pow_of_two(unsigned long n)
|
||||
(n) & (1ULL << 4) ? 4 : \
|
||||
(n) & (1ULL << 3) ? 3 : \
|
||||
(n) & (1ULL << 2) ? 2 : \
|
||||
- (n) & (1ULL << 1) ? 1 : \
|
||||
- (n) & (1ULL << 0) ? 0 : \
|
||||
- ____ilog2_NaN() \
|
||||
- ) : \
|
||||
+ 1 ) : \
|
||||
(sizeof(n) <= 4) ? \
|
||||
__ilog2_u32(n) : \
|
||||
__ilog2_u64(n) \
|
||||
diff --git a/include/linux/usb.h b/include/linux/usb.h
|
||||
index 12891ffd4bf0..8c75af6b7d5b 100644
|
||||
--- a/include/linux/usb.h
|
||||
|
@ -1132,41 +1094,3 @@ index 1f376bce413c..ef6353f0adbd 100644
|
|||
|
||||
if (pcpu_nr_empty_pop_pages < PCPU_EMPTY_POP_PAGES_LOW)
|
||||
pcpu_schedule_balance_work();
|
||||
diff --git a/tools/include/linux/log2.h b/tools/include/linux/log2.h
|
||||
index 41446668ccce..d5677d39c1e4 100644
|
||||
--- a/tools/include/linux/log2.h
|
||||
+++ b/tools/include/linux/log2.h
|
||||
@@ -13,12 +13,6 @@
|
||||
#define _TOOLS_LINUX_LOG2_H
|
||||
|
||||
/*
|
||||
- * deal with unrepresentable constant logarithms
|
||||
- */
|
||||
-extern __attribute__((const, noreturn))
|
||||
-int ____ilog2_NaN(void);
|
||||
-
|
||||
-/*
|
||||
* non-constant log of base 2 calculators
|
||||
* - the arch may override these in asm/bitops.h if they can be implemented
|
||||
* more efficiently than using fls() and fls64()
|
||||
@@ -78,7 +72,7 @@ unsigned long __rounddown_pow_of_two(unsigned long n)
|
||||
#define ilog2(n) \
|
||||
( \
|
||||
__builtin_constant_p(n) ? ( \
|
||||
- (n) < 1 ? ____ilog2_NaN() : \
|
||||
+ (n) < 2 ? 0 : \
|
||||
(n) & (1ULL << 63) ? 63 : \
|
||||
(n) & (1ULL << 62) ? 62 : \
|
||||
(n) & (1ULL << 61) ? 61 : \
|
||||
@@ -141,10 +135,7 @@ unsigned long __rounddown_pow_of_two(unsigned long n)
|
||||
(n) & (1ULL << 4) ? 4 : \
|
||||
(n) & (1ULL << 3) ? 3 : \
|
||||
(n) & (1ULL << 2) ? 2 : \
|
||||
- (n) & (1ULL << 1) ? 1 : \
|
||||
- (n) & (1ULL << 0) ? 0 : \
|
||||
- ____ilog2_NaN() \
|
||||
- ) : \
|
||||
+ 1 ) : \
|
||||
(sizeof(n) <= 4) ? \
|
||||
__ilog2_u32(n) : \
|
||||
__ilog2_u64(n) \
|
||||
|
|
|
@ -10,74 +10,6 @@ index e6c7990497e7..dc5df61ea4be 100644
|
|||
EXTRAVERSION =
|
||||
NAME = Blurry Fish Butt
|
||||
|
||||
diff --git a/arch/arm/kvm/psci.c b/arch/arm/kvm/psci.c
|
||||
index a9b3b905e661..443db0c43d7c 100644
|
||||
--- a/arch/arm/kvm/psci.c
|
||||
+++ b/arch/arm/kvm/psci.c
|
||||
@@ -208,9 +208,10 @@ int kvm_psci_version(struct kvm_vcpu *vcpu)
|
||||
|
||||
static int kvm_psci_0_2_call(struct kvm_vcpu *vcpu)
|
||||
{
|
||||
- int ret = 1;
|
||||
+ struct kvm *kvm = vcpu->kvm;
|
||||
unsigned long psci_fn = vcpu_get_reg(vcpu, 0) & ~((u32) 0);
|
||||
unsigned long val;
|
||||
+ int ret = 1;
|
||||
|
||||
switch (psci_fn) {
|
||||
case PSCI_0_2_FN_PSCI_VERSION:
|
||||
@@ -230,7 +231,9 @@ static int kvm_psci_0_2_call(struct kvm_vcpu *vcpu)
|
||||
break;
|
||||
case PSCI_0_2_FN_CPU_ON:
|
||||
case PSCI_0_2_FN64_CPU_ON:
|
||||
+ mutex_lock(&kvm->lock);
|
||||
val = kvm_psci_vcpu_on(vcpu);
|
||||
+ mutex_unlock(&kvm->lock);
|
||||
break;
|
||||
case PSCI_0_2_FN_AFFINITY_INFO:
|
||||
case PSCI_0_2_FN64_AFFINITY_INFO:
|
||||
@@ -279,6 +282,7 @@ static int kvm_psci_0_2_call(struct kvm_vcpu *vcpu)
|
||||
|
||||
static int kvm_psci_0_1_call(struct kvm_vcpu *vcpu)
|
||||
{
|
||||
+ struct kvm *kvm = vcpu->kvm;
|
||||
unsigned long psci_fn = vcpu_get_reg(vcpu, 0) & ~((u32) 0);
|
||||
unsigned long val;
|
||||
|
||||
@@ -288,7 +292,9 @@ static int kvm_psci_0_1_call(struct kvm_vcpu *vcpu)
|
||||
val = PSCI_RET_SUCCESS;
|
||||
break;
|
||||
case KVM_PSCI_FN_CPU_ON:
|
||||
+ mutex_lock(&kvm->lock);
|
||||
val = kvm_psci_vcpu_on(vcpu);
|
||||
+ mutex_unlock(&kvm->lock);
|
||||
break;
|
||||
default:
|
||||
val = PSCI_RET_NOT_SUPPORTED;
|
||||
diff --git a/arch/arm64/kvm/sys_regs.c b/arch/arm64/kvm/sys_regs.c
|
||||
index d2650e84faf2..c2489f62c4fb 100644
|
||||
--- a/arch/arm64/kvm/sys_regs.c
|
||||
+++ b/arch/arm64/kvm/sys_regs.c
|
||||
@@ -1054,8 +1054,8 @@ static int kvm_handle_cp_64(struct kvm_vcpu *vcpu,
|
||||
{
|
||||
struct sys_reg_params params;
|
||||
u32 hsr = kvm_vcpu_get_hsr(vcpu);
|
||||
- int Rt = (hsr >> 5) & 0xf;
|
||||
- int Rt2 = (hsr >> 10) & 0xf;
|
||||
+ int Rt = (hsr >> 5) & 0x1f;
|
||||
+ int Rt2 = (hsr >> 10) & 0x1f;
|
||||
|
||||
params.is_aarch32 = true;
|
||||
params.is_32bit = false;
|
||||
@@ -1106,7 +1106,7 @@ static int kvm_handle_cp_32(struct kvm_vcpu *vcpu,
|
||||
{
|
||||
struct sys_reg_params params;
|
||||
u32 hsr = kvm_vcpu_get_hsr(vcpu);
|
||||
- int Rt = (hsr >> 5) & 0xf;
|
||||
+ int Rt = (hsr >> 5) & 0x1f;
|
||||
|
||||
params.is_aarch32 = true;
|
||||
params.is_32bit = true;
|
||||
diff --git a/arch/x86/boot/boot.h b/arch/x86/boot/boot.h
|
||||
index 9011a88353de..ed1e9206f830 100644
|
||||
--- a/arch/x86/boot/boot.h
|
||||
|
|
|
@ -153,93 +153,6 @@ index 9ea611ea69df..91ceeb7b4530 100644
|
|||
: "r" (x) \
|
||||
: cl); \
|
||||
\
|
||||
diff --git a/arch/arm64/include/asm/uaccess.h b/arch/arm64/include/asm/uaccess.h
|
||||
index b2ede967fe7d..d9ca1f2c0ea8 100644
|
||||
--- a/arch/arm64/include/asm/uaccess.h
|
||||
+++ b/arch/arm64/include/asm/uaccess.h
|
||||
@@ -92,11 +92,12 @@ static inline void set_fs(mm_segment_t fs)
|
||||
*/
|
||||
#define __range_ok(addr, size) \
|
||||
({ \
|
||||
+ unsigned long __addr = (unsigned long __force)(addr); \
|
||||
unsigned long flag, roksum; \
|
||||
__chk_user_ptr(addr); \
|
||||
asm("adds %1, %1, %3; ccmp %1, %4, #2, cc; cset %0, ls" \
|
||||
: "=&r" (flag), "=&r" (roksum) \
|
||||
- : "1" (addr), "Ir" (size), \
|
||||
+ : "1" (__addr), "Ir" (size), \
|
||||
"r" (current_thread_info()->addr_limit) \
|
||||
: "cc"); \
|
||||
flag; \
|
||||
diff --git a/arch/metag/include/asm/uaccess.h b/arch/metag/include/asm/uaccess.h
|
||||
index 07238b39638c..3db381205928 100644
|
||||
--- a/arch/metag/include/asm/uaccess.h
|
||||
+++ b/arch/metag/include/asm/uaccess.h
|
||||
@@ -28,24 +28,32 @@
|
||||
|
||||
#define segment_eq(a, b) ((a).seg == (b).seg)
|
||||
|
||||
-#define __kernel_ok (segment_eq(get_fs(), KERNEL_DS))
|
||||
-/*
|
||||
- * Explicitly allow NULL pointers here. Parts of the kernel such
|
||||
- * as readv/writev use access_ok to validate pointers, but want
|
||||
- * to allow NULL pointers for various reasons. NULL pointers are
|
||||
- * safe to allow through because the first page is not mappable on
|
||||
- * Meta.
|
||||
- *
|
||||
- * We also wish to avoid letting user code access the system area
|
||||
- * and the kernel half of the address space.
|
||||
- */
|
||||
-#define __user_bad(addr, size) (((addr) > 0 && (addr) < META_MEMORY_BASE) || \
|
||||
- ((addr) > PAGE_OFFSET && \
|
||||
- (addr) < LINCORE_BASE))
|
||||
-
|
||||
static inline int __access_ok(unsigned long addr, unsigned long size)
|
||||
{
|
||||
- return __kernel_ok || !__user_bad(addr, size);
|
||||
+ /*
|
||||
+ * Allow access to the user mapped memory area, but not the system area
|
||||
+ * before it. The check extends to the top of the address space when
|
||||
+ * kernel access is allowed (there's no real reason to user copy to the
|
||||
+ * system area in any case).
|
||||
+ */
|
||||
+ if (likely(addr >= META_MEMORY_BASE && addr < get_fs().seg &&
|
||||
+ size <= get_fs().seg - addr))
|
||||
+ return true;
|
||||
+ /*
|
||||
+ * Explicitly allow NULL pointers here. Parts of the kernel such
|
||||
+ * as readv/writev use access_ok to validate pointers, but want
|
||||
+ * to allow NULL pointers for various reasons. NULL pointers are
|
||||
+ * safe to allow through because the first page is not mappable on
|
||||
+ * Meta.
|
||||
+ */
|
||||
+ if (!addr)
|
||||
+ return true;
|
||||
+ /* Allow access to core code memory area... */
|
||||
+ if (addr >= LINCORE_CODE_BASE && addr <= LINCORE_CODE_LIMIT &&
|
||||
+ size <= LINCORE_CODE_LIMIT + 1 - addr)
|
||||
+ return true;
|
||||
+ /* ... but no other areas. */
|
||||
+ return false;
|
||||
}
|
||||
|
||||
#define access_ok(type, addr, size) __access_ok((unsigned long)(addr), \
|
||||
@@ -186,8 +194,13 @@ do { \
|
||||
extern long __must_check __strncpy_from_user(char *dst, const char __user *src,
|
||||
long count);
|
||||
|
||||
-#define strncpy_from_user(dst, src, count) __strncpy_from_user(dst, src, count)
|
||||
-
|
||||
+static inline long
|
||||
+strncpy_from_user(char *dst, const char __user *src, long count)
|
||||
+{
|
||||
+ if (!access_ok(VERIFY_READ, src, 1))
|
||||
+ return -EFAULT;
|
||||
+ return __strncpy_from_user(dst, src, count);
|
||||
+}
|
||||
/*
|
||||
* Return the size of a string (including the ending 0)
|
||||
*
|
||||
diff --git a/arch/powerpc/kernel/exceptions-64e.S b/arch/powerpc/kernel/exceptions-64e.S
|
||||
index 488e6314f993..5cc93f0b52ca 100644
|
||||
--- a/arch/powerpc/kernel/exceptions-64e.S
|
||||
|
|
|
@ -108,32 +108,6 @@ index 9622eb48f894..f2d2c0bbe21b 100644
|
|||
break; \
|
||||
} \
|
||||
} while (0)
|
||||
diff --git a/arch/arm64/include/asm/uaccess.h b/arch/arm64/include/asm/uaccess.h
|
||||
index d9ca1f2c0ea8..829fa6d3e561 100644
|
||||
--- a/arch/arm64/include/asm/uaccess.h
|
||||
+++ b/arch/arm64/include/asm/uaccess.h
|
||||
@@ -21,6 +21,7 @@
|
||||
/*
|
||||
* User space memory access functions
|
||||
*/
|
||||
+#include <linux/bitops.h>
|
||||
#include <linux/string.h>
|
||||
#include <linux/thread_info.h>
|
||||
|
||||
@@ -103,6 +104,13 @@ static inline void set_fs(mm_segment_t fs)
|
||||
flag; \
|
||||
})
|
||||
|
||||
+/*
|
||||
+ * When dealing with data aborts, watchpoints, or instruction traps we may end
|
||||
+ * up with a tagged userland pointer. Clear the tag to get a sane pointer to
|
||||
+ * pass on to access_ok(), for instance.
|
||||
+ */
|
||||
+#define untagged_addr(addr) sign_extend64(addr, 55)
|
||||
+
|
||||
#define access_ok(type, addr, size) __range_ok(addr, size)
|
||||
#define user_addr_max get_fs
|
||||
|
||||
diff --git a/arch/arm64/kernel/armv8_deprecated.c b/arch/arm64/kernel/armv8_deprecated.c
|
||||
index 937f5e58a4d3..478a00b9732b 100644
|
||||
--- a/arch/arm64/kernel/armv8_deprecated.c
|
||||
|
|
|
@ -101,28 +101,6 @@ index d5e3bc518968..d57f48543f76 100644
|
|||
pmx_gpio_init: pmx-init {
|
||||
marvell,pins = "mpp38";
|
||||
marvell,function = "gpio";
|
||||
diff --git a/arch/arm64/kvm/handle_exit.c b/arch/arm64/kvm/handle_exit.c
|
||||
index ba93a09eb536..5295aef7c8f0 100644
|
||||
--- a/arch/arm64/kvm/handle_exit.c
|
||||
+++ b/arch/arm64/kvm/handle_exit.c
|
||||
@@ -42,7 +42,7 @@ static int handle_hvc(struct kvm_vcpu *vcpu, struct kvm_run *run)
|
||||
|
||||
ret = kvm_psci_call(vcpu);
|
||||
if (ret < 0) {
|
||||
- kvm_inject_undefined(vcpu);
|
||||
+ vcpu_set_reg(vcpu, 0, ~0UL);
|
||||
return 1;
|
||||
}
|
||||
|
||||
@@ -51,7 +51,7 @@ static int handle_hvc(struct kvm_vcpu *vcpu, struct kvm_run *run)
|
||||
|
||||
static int handle_smc(struct kvm_vcpu *vcpu, struct kvm_run *run)
|
||||
{
|
||||
- kvm_inject_undefined(vcpu);
|
||||
+ vcpu_set_reg(vcpu, 0, ~0UL);
|
||||
return 1;
|
||||
}
|
||||
|
||||
diff --git a/arch/mips/ar7/platform.c b/arch/mips/ar7/platform.c
|
||||
index 3446b6fb3acb..9da4e2292fc7 100644
|
||||
--- a/arch/mips/ar7/platform.c
|
||||
|
|
1104
patch/kernel/mvebu64-default/04-patch-4.4.119-120.patch
Normal file
1104
patch/kernel/mvebu64-default/04-patch-4.4.119-120.patch
Normal file
File diff suppressed because it is too large
Load diff
1085
patch/kernel/mvebu64-default/04-patch-4.4.120-121.patch
Normal file
1085
patch/kernel/mvebu64-default/04-patch-4.4.120-121.patch
Normal file
File diff suppressed because it is too large
Load diff
2177
patch/kernel/mvebu64-default/04-patch-4.4.121-122.patch
Normal file
2177
patch/kernel/mvebu64-default/04-patch-4.4.121-122.patch
Normal file
File diff suppressed because it is too large
Load diff
3500
patch/kernel/mvebu64-default/04-patch-4.4.122-123.patch
Normal file
3500
patch/kernel/mvebu64-default/04-patch-4.4.122-123.patch
Normal file
File diff suppressed because it is too large
Load diff
3077
patch/kernel/mvebu64-default/04-patch-4.4.123-124.patch
Normal file
3077
patch/kernel/mvebu64-default/04-patch-4.4.123-124.patch
Normal file
File diff suppressed because it is too large
Load diff
1326
patch/kernel/mvebu64-default/04-patch-4.4.124-125.patch
Normal file
1326
patch/kernel/mvebu64-default/04-patch-4.4.124-125.patch
Normal file
File diff suppressed because it is too large
Load diff
455
patch/kernel/mvebu64-default/04-patch-4.4.125-126.patch
Normal file
455
patch/kernel/mvebu64-default/04-patch-4.4.125-126.patch
Normal file
|
@ -0,0 +1,455 @@
|
|||
diff --git a/Makefile b/Makefile
|
||||
index 7dcafa5dcd34..2b699c5f6de4 100644
|
||||
--- a/Makefile
|
||||
+++ b/Makefile
|
||||
@@ -1,6 +1,6 @@
|
||||
VERSION = 4
|
||||
PATCHLEVEL = 4
|
||||
-SUBLEVEL = 125
|
||||
+SUBLEVEL = 126
|
||||
EXTRAVERSION =
|
||||
NAME = Blurry Fish Butt
|
||||
|
||||
diff --git a/drivers/net/ethernet/arc/emac_rockchip.c b/drivers/net/ethernet/arc/emac_rockchip.c
|
||||
index c31c7407b753..425dae560322 100644
|
||||
--- a/drivers/net/ethernet/arc/emac_rockchip.c
|
||||
+++ b/drivers/net/ethernet/arc/emac_rockchip.c
|
||||
@@ -150,8 +150,10 @@ static int emac_rockchip_probe(struct platform_device *pdev)
|
||||
/* Optional regulator for PHY */
|
||||
priv->regulator = devm_regulator_get_optional(dev, "phy");
|
||||
if (IS_ERR(priv->regulator)) {
|
||||
- if (PTR_ERR(priv->regulator) == -EPROBE_DEFER)
|
||||
- return -EPROBE_DEFER;
|
||||
+ if (PTR_ERR(priv->regulator) == -EPROBE_DEFER) {
|
||||
+ err = -EPROBE_DEFER;
|
||||
+ goto out_clk_disable;
|
||||
+ }
|
||||
dev_err(dev, "no regulator found\n");
|
||||
priv->regulator = NULL;
|
||||
}
|
||||
diff --git a/drivers/net/ethernet/broadcom/bcmsysport.c b/drivers/net/ethernet/broadcom/bcmsysport.c
|
||||
index 027705117086..af9ec57bbebf 100644
|
||||
--- a/drivers/net/ethernet/broadcom/bcmsysport.c
|
||||
+++ b/drivers/net/ethernet/broadcom/bcmsysport.c
|
||||
@@ -729,37 +729,33 @@ static unsigned int __bcm_sysport_tx_reclaim(struct bcm_sysport_priv *priv,
|
||||
struct bcm_sysport_tx_ring *ring)
|
||||
{
|
||||
struct net_device *ndev = priv->netdev;
|
||||
- unsigned int c_index, last_c_index, last_tx_cn, num_tx_cbs;
|
||||
unsigned int pkts_compl = 0, bytes_compl = 0;
|
||||
+ unsigned int txbds_processed = 0;
|
||||
struct bcm_sysport_cb *cb;
|
||||
+ unsigned int txbds_ready;
|
||||
+ unsigned int c_index;
|
||||
u32 hw_ind;
|
||||
|
||||
/* Compute how many descriptors have been processed since last call */
|
||||
hw_ind = tdma_readl(priv, TDMA_DESC_RING_PROD_CONS_INDEX(ring->index));
|
||||
c_index = (hw_ind >> RING_CONS_INDEX_SHIFT) & RING_CONS_INDEX_MASK;
|
||||
- ring->p_index = (hw_ind & RING_PROD_INDEX_MASK);
|
||||
-
|
||||
- last_c_index = ring->c_index;
|
||||
- num_tx_cbs = ring->size;
|
||||
-
|
||||
- c_index &= (num_tx_cbs - 1);
|
||||
-
|
||||
- if (c_index >= last_c_index)
|
||||
- last_tx_cn = c_index - last_c_index;
|
||||
- else
|
||||
- last_tx_cn = num_tx_cbs - last_c_index + c_index;
|
||||
+ txbds_ready = (c_index - ring->c_index) & RING_CONS_INDEX_MASK;
|
||||
|
||||
netif_dbg(priv, tx_done, ndev,
|
||||
- "ring=%d c_index=%d last_tx_cn=%d last_c_index=%d\n",
|
||||
- ring->index, c_index, last_tx_cn, last_c_index);
|
||||
+ "ring=%d old_c_index=%u c_index=%u txbds_ready=%u\n",
|
||||
+ ring->index, ring->c_index, c_index, txbds_ready);
|
||||
|
||||
- while (last_tx_cn-- > 0) {
|
||||
- cb = ring->cbs + last_c_index;
|
||||
+ while (txbds_processed < txbds_ready) {
|
||||
+ cb = &ring->cbs[ring->clean_index];
|
||||
bcm_sysport_tx_reclaim_one(priv, cb, &bytes_compl, &pkts_compl);
|
||||
|
||||
ring->desc_count++;
|
||||
- last_c_index++;
|
||||
- last_c_index &= (num_tx_cbs - 1);
|
||||
+ txbds_processed++;
|
||||
+
|
||||
+ if (likely(ring->clean_index < ring->size - 1))
|
||||
+ ring->clean_index++;
|
||||
+ else
|
||||
+ ring->clean_index = 0;
|
||||
}
|
||||
|
||||
ring->c_index = c_index;
|
||||
@@ -1229,6 +1225,7 @@ static int bcm_sysport_init_tx_ring(struct bcm_sysport_priv *priv,
|
||||
netif_napi_add(priv->netdev, &ring->napi, bcm_sysport_tx_poll, 64);
|
||||
ring->index = index;
|
||||
ring->size = size;
|
||||
+ ring->clean_index = 0;
|
||||
ring->alloc_size = ring->size;
|
||||
ring->desc_cpu = p;
|
||||
ring->desc_count = ring->size;
|
||||
diff --git a/drivers/net/ethernet/broadcom/bcmsysport.h b/drivers/net/ethernet/broadcom/bcmsysport.h
|
||||
index f28bf545d7f4..8ace6ecb5f79 100644
|
||||
--- a/drivers/net/ethernet/broadcom/bcmsysport.h
|
||||
+++ b/drivers/net/ethernet/broadcom/bcmsysport.h
|
||||
@@ -638,7 +638,7 @@ struct bcm_sysport_tx_ring {
|
||||
unsigned int desc_count; /* Number of descriptors */
|
||||
unsigned int curr_desc; /* Current descriptor */
|
||||
unsigned int c_index; /* Last consumer index */
|
||||
- unsigned int p_index; /* Current producer index */
|
||||
+ unsigned int clean_index; /* Current clean index */
|
||||
struct bcm_sysport_cb *cbs; /* Transmit control blocks */
|
||||
struct dma_desc *desc_cpu; /* CPU view of the descriptor */
|
||||
struct bcm_sysport_priv *priv; /* private context backpointer */
|
||||
diff --git a/drivers/net/ethernet/freescale/fec_main.c b/drivers/net/ethernet/freescale/fec_main.c
|
||||
index 458e2d97d096..ae8e4fc22e7b 100644
|
||||
--- a/drivers/net/ethernet/freescale/fec_main.c
|
||||
+++ b/drivers/net/ethernet/freescale/fec_main.c
|
||||
@@ -3539,6 +3539,8 @@ fec_drv_remove(struct platform_device *pdev)
|
||||
fec_enet_mii_remove(fep);
|
||||
if (fep->reg_phy)
|
||||
regulator_disable(fep->reg_phy);
|
||||
+ pm_runtime_put(&pdev->dev);
|
||||
+ pm_runtime_disable(&pdev->dev);
|
||||
of_node_put(fep->phy_node);
|
||||
free_netdev(ndev);
|
||||
|
||||
diff --git a/drivers/net/ethernet/ti/cpsw.c b/drivers/net/ethernet/ti/cpsw.c
|
||||
index fc958067d10a..435466c17852 100644
|
||||
--- a/drivers/net/ethernet/ti/cpsw.c
|
||||
+++ b/drivers/net/ethernet/ti/cpsw.c
|
||||
@@ -878,7 +878,8 @@ static void _cpsw_adjust_link(struct cpsw_slave *slave,
|
||||
/* set speed_in input in case RMII mode is used in 100Mbps */
|
||||
if (phy->speed == 100)
|
||||
mac_control |= BIT(15);
|
||||
- else if (phy->speed == 10)
|
||||
+ /* in band mode only works in 10Mbps RGMII mode */
|
||||
+ else if ((phy->speed == 10) && phy_interface_is_rgmii(phy))
|
||||
mac_control |= BIT(18); /* In Band mode */
|
||||
|
||||
if (priv->rx_pause)
|
||||
diff --git a/drivers/net/team/team.c b/drivers/net/team/team.c
|
||||
index 61cd53838360..9bca36e1fefd 100644
|
||||
--- a/drivers/net/team/team.c
|
||||
+++ b/drivers/net/team/team.c
|
||||
@@ -2380,7 +2380,7 @@ send_done:
|
||||
if (!nlh) {
|
||||
err = __send_and_alloc_skb(&skb, team, portid, send_func);
|
||||
if (err)
|
||||
- goto errout;
|
||||
+ return err;
|
||||
goto send_done;
|
||||
}
|
||||
|
||||
@@ -2660,7 +2660,7 @@ send_done:
|
||||
if (!nlh) {
|
||||
err = __send_and_alloc_skb(&skb, team, portid, send_func);
|
||||
if (err)
|
||||
- goto errout;
|
||||
+ return err;
|
||||
goto send_done;
|
||||
}
|
||||
|
||||
diff --git a/drivers/s390/net/qeth_core_main.c b/drivers/s390/net/qeth_core_main.c
|
||||
index 75d37148c8cd..95c631125a20 100644
|
||||
--- a/drivers/s390/net/qeth_core_main.c
|
||||
+++ b/drivers/s390/net/qeth_core_main.c
|
||||
@@ -517,8 +517,7 @@ static inline int qeth_is_cq(struct qeth_card *card, unsigned int queue)
|
||||
queue == card->qdio.no_in_queues - 1;
|
||||
}
|
||||
|
||||
-
|
||||
-static int qeth_issue_next_read(struct qeth_card *card)
|
||||
+static int __qeth_issue_next_read(struct qeth_card *card)
|
||||
{
|
||||
int rc;
|
||||
struct qeth_cmd_buffer *iob;
|
||||
@@ -549,6 +548,17 @@ static int qeth_issue_next_read(struct qeth_card *card)
|
||||
return rc;
|
||||
}
|
||||
|
||||
+static int qeth_issue_next_read(struct qeth_card *card)
|
||||
+{
|
||||
+ int ret;
|
||||
+
|
||||
+ spin_lock_irq(get_ccwdev_lock(CARD_RDEV(card)));
|
||||
+ ret = __qeth_issue_next_read(card);
|
||||
+ spin_unlock_irq(get_ccwdev_lock(CARD_RDEV(card)));
|
||||
+
|
||||
+ return ret;
|
||||
+}
|
||||
+
|
||||
static struct qeth_reply *qeth_alloc_reply(struct qeth_card *card)
|
||||
{
|
||||
struct qeth_reply *reply;
|
||||
@@ -952,7 +962,7 @@ void qeth_clear_thread_running_bit(struct qeth_card *card, unsigned long thread)
|
||||
spin_lock_irqsave(&card->thread_mask_lock, flags);
|
||||
card->thread_running_mask &= ~thread;
|
||||
spin_unlock_irqrestore(&card->thread_mask_lock, flags);
|
||||
- wake_up(&card->wait_q);
|
||||
+ wake_up_all(&card->wait_q);
|
||||
}
|
||||
EXPORT_SYMBOL_GPL(qeth_clear_thread_running_bit);
|
||||
|
||||
@@ -1156,6 +1166,7 @@ static void qeth_irq(struct ccw_device *cdev, unsigned long intparm,
|
||||
}
|
||||
rc = qeth_get_problem(cdev, irb);
|
||||
if (rc) {
|
||||
+ card->read_or_write_problem = 1;
|
||||
qeth_clear_ipacmd_list(card);
|
||||
qeth_schedule_recovery(card);
|
||||
goto out;
|
||||
@@ -1174,7 +1185,7 @@ static void qeth_irq(struct ccw_device *cdev, unsigned long intparm,
|
||||
return;
|
||||
if (channel == &card->read &&
|
||||
channel->state == CH_STATE_UP)
|
||||
- qeth_issue_next_read(card);
|
||||
+ __qeth_issue_next_read(card);
|
||||
|
||||
iob = channel->iob;
|
||||
index = channel->buf_no;
|
||||
@@ -4969,8 +4980,6 @@ static void qeth_core_free_card(struct qeth_card *card)
|
||||
QETH_DBF_HEX(SETUP, 2, &card, sizeof(void *));
|
||||
qeth_clean_channel(&card->read);
|
||||
qeth_clean_channel(&card->write);
|
||||
- if (card->dev)
|
||||
- free_netdev(card->dev);
|
||||
kfree(card->ip_tbd_list);
|
||||
qeth_free_qdio_buffers(card);
|
||||
unregister_service_level(&card->qeth_service_level);
|
||||
diff --git a/drivers/s390/net/qeth_l2_main.c b/drivers/s390/net/qeth_l2_main.c
|
||||
index 58bcb3c9a86a..acdb5ccb0ab9 100644
|
||||
--- a/drivers/s390/net/qeth_l2_main.c
|
||||
+++ b/drivers/s390/net/qeth_l2_main.c
|
||||
@@ -1062,8 +1062,8 @@ static void qeth_l2_remove_device(struct ccwgroup_device *cgdev)
|
||||
qeth_l2_set_offline(cgdev);
|
||||
|
||||
if (card->dev) {
|
||||
- netif_napi_del(&card->napi);
|
||||
unregister_netdev(card->dev);
|
||||
+ free_netdev(card->dev);
|
||||
card->dev = NULL;
|
||||
}
|
||||
return;
|
||||
diff --git a/drivers/s390/net/qeth_l3_main.c b/drivers/s390/net/qeth_l3_main.c
|
||||
index 0d6888cbd96e..bbdb3b6c54bb 100644
|
||||
--- a/drivers/s390/net/qeth_l3_main.c
|
||||
+++ b/drivers/s390/net/qeth_l3_main.c
|
||||
@@ -3243,8 +3243,8 @@ static void qeth_l3_remove_device(struct ccwgroup_device *cgdev)
|
||||
qeth_l3_set_offline(cgdev);
|
||||
|
||||
if (card->dev) {
|
||||
- netif_napi_del(&card->napi);
|
||||
unregister_netdev(card->dev);
|
||||
+ free_netdev(card->dev);
|
||||
card->dev = NULL;
|
||||
}
|
||||
|
||||
diff --git a/drivers/scsi/sg.c b/drivers/scsi/sg.c
|
||||
index 4b43effbf4fc..cb19c9ad1b57 100644
|
||||
--- a/drivers/scsi/sg.c
|
||||
+++ b/drivers/scsi/sg.c
|
||||
@@ -2074,11 +2074,12 @@ sg_get_rq_mark(Sg_fd * sfp, int pack_id)
|
||||
if ((1 == resp->done) && (!resp->sg_io_owned) &&
|
||||
((-1 == pack_id) || (resp->header.pack_id == pack_id))) {
|
||||
resp->done = 2; /* guard against other readers */
|
||||
- break;
|
||||
+ write_unlock_irqrestore(&sfp->rq_list_lock, iflags);
|
||||
+ return resp;
|
||||
}
|
||||
}
|
||||
write_unlock_irqrestore(&sfp->rq_list_lock, iflags);
|
||||
- return resp;
|
||||
+ return NULL;
|
||||
}
|
||||
|
||||
/* always adds to end of list */
|
||||
diff --git a/kernel/irq/manage.c b/kernel/irq/manage.c
|
||||
index 4889a8ab77ce..a079ed14f230 100644
|
||||
--- a/kernel/irq/manage.c
|
||||
+++ b/kernel/irq/manage.c
|
||||
@@ -1189,10 +1189,8 @@ __setup_irq(unsigned int irq, struct irq_desc *desc, struct irqaction *new)
|
||||
* set the trigger type must match. Also all must
|
||||
* agree on ONESHOT.
|
||||
*/
|
||||
- unsigned int oldtype = irqd_get_trigger_type(&desc->irq_data);
|
||||
-
|
||||
if (!((old->flags & new->flags) & IRQF_SHARED) ||
|
||||
- (oldtype != (new->flags & IRQF_TRIGGER_MASK)) ||
|
||||
+ ((old->flags ^ new->flags) & IRQF_TRIGGER_MASK) ||
|
||||
((old->flags ^ new->flags) & IRQF_ONESHOT))
|
||||
goto mismatch;
|
||||
|
||||
diff --git a/net/core/skbuff.c b/net/core/skbuff.c
|
||||
index 86b619501350..284370b61b8c 100644
|
||||
--- a/net/core/skbuff.c
|
||||
+++ b/net/core/skbuff.c
|
||||
@@ -3571,7 +3571,7 @@ int sock_queue_err_skb(struct sock *sk, struct sk_buff *skb)
|
||||
|
||||
skb_queue_tail(&sk->sk_error_queue, skb);
|
||||
if (!sock_flag(sk, SOCK_DEAD))
|
||||
- sk->sk_data_ready(sk);
|
||||
+ sk->sk_error_report(sk);
|
||||
return 0;
|
||||
}
|
||||
EXPORT_SYMBOL(sock_queue_err_skb);
|
||||
diff --git a/net/dccp/proto.c b/net/dccp/proto.c
|
||||
index 9d43c1f40274..ff3b058cf58c 100644
|
||||
--- a/net/dccp/proto.c
|
||||
+++ b/net/dccp/proto.c
|
||||
@@ -789,6 +789,11 @@ int dccp_sendmsg(struct sock *sk, struct msghdr *msg, size_t len)
|
||||
if (skb == NULL)
|
||||
goto out_release;
|
||||
|
||||
+ if (sk->sk_state == DCCP_CLOSED) {
|
||||
+ rc = -ENOTCONN;
|
||||
+ goto out_discard;
|
||||
+ }
|
||||
+
|
||||
skb_reserve(skb, sk->sk_prot->max_header);
|
||||
rc = memcpy_from_msg(skb_put(skb, len), msg, len);
|
||||
if (rc != 0)
|
||||
diff --git a/net/ieee802154/6lowpan/core.c b/net/ieee802154/6lowpan/core.c
|
||||
index 20c49c724ba0..e8b279443d37 100644
|
||||
--- a/net/ieee802154/6lowpan/core.c
|
||||
+++ b/net/ieee802154/6lowpan/core.c
|
||||
@@ -206,9 +206,13 @@ static inline void lowpan_netlink_fini(void)
|
||||
static int lowpan_device_event(struct notifier_block *unused,
|
||||
unsigned long event, void *ptr)
|
||||
{
|
||||
- struct net_device *wdev = netdev_notifier_info_to_dev(ptr);
|
||||
+ struct net_device *ndev = netdev_notifier_info_to_dev(ptr);
|
||||
+ struct wpan_dev *wpan_dev;
|
||||
|
||||
- if (wdev->type != ARPHRD_IEEE802154)
|
||||
+ if (ndev->type != ARPHRD_IEEE802154)
|
||||
+ return NOTIFY_DONE;
|
||||
+ wpan_dev = ndev->ieee802154_ptr;
|
||||
+ if (!wpan_dev)
|
||||
goto out;
|
||||
|
||||
switch (event) {
|
||||
@@ -217,8 +221,8 @@ static int lowpan_device_event(struct notifier_block *unused,
|
||||
* also delete possible lowpan interfaces which belongs
|
||||
* to the wpan interface.
|
||||
*/
|
||||
- if (wdev->ieee802154_ptr->lowpan_dev)
|
||||
- lowpan_dellink(wdev->ieee802154_ptr->lowpan_dev, NULL);
|
||||
+ if (wpan_dev->lowpan_dev)
|
||||
+ lowpan_dellink(wpan_dev->lowpan_dev, NULL);
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
diff --git a/net/ipv4/inet_fragment.c b/net/ipv4/inet_fragment.c
|
||||
index c5fb2f694ed0..b34fa1bb278f 100644
|
||||
--- a/net/ipv4/inet_fragment.c
|
||||
+++ b/net/ipv4/inet_fragment.c
|
||||
@@ -119,6 +119,9 @@ out:
|
||||
|
||||
static bool inet_fragq_should_evict(const struct inet_frag_queue *q)
|
||||
{
|
||||
+ if (!hlist_unhashed(&q->list_evictor))
|
||||
+ return false;
|
||||
+
|
||||
return q->net->low_thresh == 0 ||
|
||||
frag_mem_limit(q->net) >= q->net->low_thresh;
|
||||
}
|
||||
diff --git a/net/ipv4/ip_sockglue.c b/net/ipv4/ip_sockglue.c
|
||||
index d35509212013..1b93ea766916 100644
|
||||
--- a/net/ipv4/ip_sockglue.c
|
||||
+++ b/net/ipv4/ip_sockglue.c
|
||||
@@ -241,7 +241,8 @@ int ip_cmsg_send(struct net *net, struct msghdr *msg, struct ipcm_cookie *ipc,
|
||||
src_info = (struct in6_pktinfo *)CMSG_DATA(cmsg);
|
||||
if (!ipv6_addr_v4mapped(&src_info->ipi6_addr))
|
||||
return -EINVAL;
|
||||
- ipc->oif = src_info->ipi6_ifindex;
|
||||
+ if (src_info->ipi6_ifindex)
|
||||
+ ipc->oif = src_info->ipi6_ifindex;
|
||||
ipc->addr = src_info->ipi6_addr.s6_addr32[3];
|
||||
continue;
|
||||
}
|
||||
@@ -264,7 +265,8 @@ int ip_cmsg_send(struct net *net, struct msghdr *msg, struct ipcm_cookie *ipc,
|
||||
if (cmsg->cmsg_len != CMSG_LEN(sizeof(struct in_pktinfo)))
|
||||
return -EINVAL;
|
||||
info = (struct in_pktinfo *)CMSG_DATA(cmsg);
|
||||
- ipc->oif = info->ipi_ifindex;
|
||||
+ if (info->ipi_ifindex)
|
||||
+ ipc->oif = info->ipi_ifindex;
|
||||
ipc->addr = info->ipi_spec_dst.s_addr;
|
||||
break;
|
||||
}
|
||||
diff --git a/net/ipv6/ndisc.c b/net/ipv6/ndisc.c
|
||||
index 55810e4899f1..3db8d7d1a986 100644
|
||||
--- a/net/ipv6/ndisc.c
|
||||
+++ b/net/ipv6/ndisc.c
|
||||
@@ -1478,7 +1478,8 @@ static void ndisc_fill_redirect_hdr_option(struct sk_buff *skb,
|
||||
*(opt++) = (rd_len >> 3);
|
||||
opt += 6;
|
||||
|
||||
- memcpy(opt, ipv6_hdr(orig_skb), rd_len - 8);
|
||||
+ skb_copy_bits(orig_skb, skb_network_offset(orig_skb), opt,
|
||||
+ rd_len - 8);
|
||||
}
|
||||
|
||||
void ndisc_send_redirect(struct sk_buff *skb, const struct in6_addr *target)
|
||||
diff --git a/net/iucv/af_iucv.c b/net/iucv/af_iucv.c
|
||||
index 20ab7b2ec463..aeffb65181f5 100644
|
||||
--- a/net/iucv/af_iucv.c
|
||||
+++ b/net/iucv/af_iucv.c
|
||||
@@ -2381,9 +2381,11 @@ static int afiucv_iucv_init(void)
|
||||
af_iucv_dev->driver = &af_iucv_driver;
|
||||
err = device_register(af_iucv_dev);
|
||||
if (err)
|
||||
- goto out_driver;
|
||||
+ goto out_iucv_dev;
|
||||
return 0;
|
||||
|
||||
+out_iucv_dev:
|
||||
+ put_device(af_iucv_dev);
|
||||
out_driver:
|
||||
driver_unregister(&af_iucv_driver);
|
||||
out_iucv:
|
||||
diff --git a/net/l2tp/l2tp_core.c b/net/l2tp/l2tp_core.c
|
||||
index ec8f6a6485e3..92df832a1896 100644
|
||||
--- a/net/l2tp/l2tp_core.c
|
||||
+++ b/net/l2tp/l2tp_core.c
|
||||
@@ -1518,9 +1518,14 @@ int l2tp_tunnel_create(struct net *net, int fd, int version, u32 tunnel_id, u32
|
||||
encap = cfg->encap;
|
||||
|
||||
/* Quick sanity checks */
|
||||
+ err = -EPROTONOSUPPORT;
|
||||
+ if (sk->sk_type != SOCK_DGRAM) {
|
||||
+ pr_debug("tunl %hu: fd %d wrong socket type\n",
|
||||
+ tunnel_id, fd);
|
||||
+ goto err;
|
||||
+ }
|
||||
switch (encap) {
|
||||
case L2TP_ENCAPTYPE_UDP:
|
||||
- err = -EPROTONOSUPPORT;
|
||||
if (sk->sk_protocol != IPPROTO_UDP) {
|
||||
pr_err("tunl %hu: fd %d wrong protocol, got %d, expected %d\n",
|
||||
tunnel_id, fd, sk->sk_protocol, IPPROTO_UDP);
|
||||
@@ -1528,7 +1533,6 @@ int l2tp_tunnel_create(struct net *net, int fd, int version, u32 tunnel_id, u32
|
||||
}
|
||||
break;
|
||||
case L2TP_ENCAPTYPE_IP:
|
||||
- err = -EPROTONOSUPPORT;
|
||||
if (sk->sk_protocol != IPPROTO_L2TP) {
|
||||
pr_err("tunl %hu: fd %d wrong protocol, got %d, expected %d\n",
|
||||
tunnel_id, fd, sk->sk_protocol, IPPROTO_L2TP);
|
||||
diff --git a/net/netlink/genetlink.c b/net/netlink/genetlink.c
|
||||
index 30c46aaf4575..d681dbaf00c1 100644
|
||||
--- a/net/netlink/genetlink.c
|
||||
+++ b/net/netlink/genetlink.c
|
||||
@@ -1143,7 +1143,7 @@ static int genlmsg_mcast(struct sk_buff *skb, u32 portid, unsigned long group,
|
||||
if (!err)
|
||||
delivered = true;
|
||||
else if (err != -ESRCH)
|
||||
- goto error;
|
||||
+ return err;
|
||||
return delivered ? 0 : -ESRCH;
|
||||
error:
|
||||
kfree_skb(skb);
|
2344
patch/kernel/mvebu64-default/04-patch-4.4.126-127.patch
Normal file
2344
patch/kernel/mvebu64-default/04-patch-4.4.126-127.patch
Normal file
File diff suppressed because it is too large
Load diff
5345
patch/kernel/mvebu64-default/04-patch-4.4.127-128.patch
Normal file
5345
patch/kernel/mvebu64-default/04-patch-4.4.127-128.patch
Normal file
File diff suppressed because it is too large
Load diff
3460
patch/kernel/mvebu64-default/04-patch-4.4.128-129.patch
Normal file
3460
patch/kernel/mvebu64-default/04-patch-4.4.128-129.patch
Normal file
File diff suppressed because it is too large
Load diff
2698
patch/kernel/mvebu64-default/04-patch-4.4.129-130.patch
Normal file
2698
patch/kernel/mvebu64-default/04-patch-4.4.129-130.patch
Normal file
File diff suppressed because it is too large
Load diff
1558
patch/kernel/mvebu64-default/04-patch-4.4.130-131.patch
Normal file
1558
patch/kernel/mvebu64-default/04-patch-4.4.130-131.patch
Normal file
File diff suppressed because it is too large
Load diff
File diff suppressed because it is too large
Load diff
315820
patch/kernel/mvebu64-default/wifi-0010-realtek-8188EU.patch
Normal file
315820
patch/kernel/mvebu64-default/wifi-0010-realtek-8188EU.patch
Normal file
File diff suppressed because it is too large
Load diff
|
@ -0,0 +1,24 @@
|
|||
diff --git a/drivers/net/wireless/Kconfig b/drivers/net/wireless/Kconfig
|
||||
index 95cdb48fad061..db9ee74578012 100644
|
||||
--- a/drivers/net/wireless/Kconfig
|
||||
+++ b/drivers/net/wireless/Kconfig
|
||||
@@ -266,6 +266,7 @@ config MWL8K
|
||||
will be called mwl8k. If unsure, say N.
|
||||
|
||||
source "drivers/net/wireless/ath/Kconfig"
|
||||
+source "drivers/net/wireless/rtl8188eu/Kconfig"
|
||||
source "drivers/net/wireless/b43/Kconfig"
|
||||
source "drivers/net/wireless/b43legacy/Kconfig"
|
||||
source "drivers/net/wireless/brcm80211/Kconfig"
|
||||
diff --git a/drivers/net/wireless/Makefile b/drivers/net/wireless/Makefile
|
||||
index edeb51f6fa551..2c4d8522929bf 100644
|
||||
--- a/drivers/net/wireless/Makefile
|
||||
+++ b/drivers/net/wireless/Makefile
|
||||
@@ -20,6 +20,7 @@ obj-$(CONFIG_PRISM54) += prism54/
|
||||
|
||||
obj-$(CONFIG_HOSTAP) += hostap/
|
||||
obj-$(CONFIG_B43) += b43/
|
||||
+obj-$(CONFIG_RTL8188EU) += rtl8188eu/
|
||||
obj-$(CONFIG_B43LEGACY) += b43legacy/
|
||||
obj-$(CONFIG_ZD1211RW) += zd1211rw/
|
||||
obj-$(CONFIG_WLAN) += realtek/
|
38511
patch/kernel/mvebu64-dev/0001-aufs4.16-20180409.patch
Normal file
38511
patch/kernel/mvebu64-dev/0001-aufs4.16-20180409.patch
Normal file
File diff suppressed because it is too large
Load diff
|
@ -1,51 +0,0 @@
|
|||
From 19f028017f93b19bd4142840a0714fc3b5c447a1 Mon Sep 17 00:00:00 2001
|
||||
From: Victor Gu <xigu@marvell.com>
|
||||
Date: Fri, 8 Sep 2017 11:53:42 +0200
|
||||
Subject: [PATCH 06/12] PCI: aardvark: fix logic in PCI configuration
|
||||
read/write functions
|
||||
|
||||
The PCI configuration space read/write functions were special casing
|
||||
the situation where PCI_SLOT(devfn) != 0, and returned
|
||||
PCIBIOS_DEVICE_NOT_FOUND in this case.
|
||||
|
||||
However, will this is what is intended for the root bus, it is not
|
||||
intended for the child busses, as it prevents discovering devices with
|
||||
PCI_SLOT(x) != 0. Therefore, we return PCIBIOS_DEVICE_NOT_FOUND only
|
||||
if we're on the root bus.
|
||||
|
||||
Fixes: 8c39d710363c1 ("PCI: aardvark: Add Aardvark PCI host controller driver")
|
||||
Cc: <stable@vger.kernel.org>
|
||||
Signed-off-by: Victor Gu <xigu@marvell.com>
|
||||
Reviewed-by: Wilson Ding <dingwei@marvell.com>
|
||||
Reviewed-by: Nadav Haklai <nadavh@marvell.com>
|
||||
[Thomas: tweak commit log.]
|
||||
Signed-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
|
||||
---
|
||||
drivers/pci/host/pci-aardvark.c | 4 ++--
|
||||
1 file changed, 2 insertions(+), 2 deletions(-)
|
||||
|
||||
diff --git a/drivers/pci/host/pci-aardvark.c b/drivers/pci/host/pci-aardvark.c
|
||||
index 5fb9b620ac78..582d75f864e3 100644
|
||||
--- a/drivers/pci/host/pci-aardvark.c
|
||||
+++ b/drivers/pci/host/pci-aardvark.c
|
||||
@@ -441,7 +441,7 @@ static int advk_pcie_rd_conf(struct pci_bus *bus, u32 devfn,
|
||||
u32 reg;
|
||||
int ret;
|
||||
|
||||
- if (PCI_SLOT(devfn) != 0) {
|
||||
+ if ((bus->number == pcie->root_bus_nr) && (PCI_SLOT(devfn) != 0)) {
|
||||
*val = 0xffffffff;
|
||||
return PCIBIOS_DEVICE_NOT_FOUND;
|
||||
}
|
||||
@@ -495,7 +495,7 @@ static int advk_pcie_wr_conf(struct pci_bus *bus, u32 devfn,
|
||||
int offset;
|
||||
int ret;
|
||||
|
||||
- if (PCI_SLOT(devfn) != 0)
|
||||
+ if ((bus->number == pcie->root_bus_nr) && (PCI_SLOT(devfn) != 0))
|
||||
return PCIBIOS_DEVICE_NOT_FOUND;
|
||||
|
||||
if (where % size)
|
||||
--
|
||||
2.14.1
|
||||
|
|
@ -1,38 +0,0 @@
|
|||
From e692c4478048fdcc01c939f28e9801aebdd622d3 Mon Sep 17 00:00:00 2001
|
||||
From: Victor Gu <xigu@marvell.com>
|
||||
Date: Fri, 8 Sep 2017 11:53:43 +0200
|
||||
Subject: [PATCH 07/12] PCI: aardvark: set PIO_ADDR_LS correctly in
|
||||
advk_pcie_rd_conf()
|
||||
|
||||
When setting the PIO_ADDR_LS register during a configuration read, we
|
||||
were properly passing the device number, function number and register
|
||||
number, but not the bus number, causing issues when reading the
|
||||
configuration of PCIe devices.
|
||||
|
||||
Fixes: 8c39d710363c1 ("PCI: aardvark: Add Aardvark PCI host controller driver")
|
||||
Cc: <stable@vger.kernel.org>
|
||||
Signed-off-by: Victor Gu <xigu@marvell.com>
|
||||
Reviewed-by: Wilson Ding <dingwei@marvell.com>
|
||||
Reviewed-by: Nadav Haklai <nadavh@marvell.com>
|
||||
[Thomas: tweak commit log.]
|
||||
Signed-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
|
||||
---
|
||||
drivers/pci/host/pci-aardvark.c | 2 +-
|
||||
1 file changed, 1 insertion(+), 1 deletion(-)
|
||||
|
||||
diff --git a/drivers/pci/host/pci-aardvark.c b/drivers/pci/host/pci-aardvark.c
|
||||
index 582d75f864e3..68ff10e17c74 100644
|
||||
--- a/drivers/pci/host/pci-aardvark.c
|
||||
+++ b/drivers/pci/host/pci-aardvark.c
|
||||
@@ -460,7 +460,7 @@ static int advk_pcie_rd_conf(struct pci_bus *bus, u32 devfn,
|
||||
advk_writel(pcie, reg, PIO_CTRL);
|
||||
|
||||
/* Program the address registers */
|
||||
- reg = PCIE_BDF(devfn) | PCIE_CONF_REG(where);
|
||||
+ reg = PCIE_CONF_ADDR(bus->number, devfn, where);
|
||||
advk_writel(pcie, reg, PIO_ADDR_LS);
|
||||
advk_writel(pcie, 0, PIO_ADDR_MS);
|
||||
|
||||
--
|
||||
2.14.1
|
||||
|
|
@ -28,7 +28,7 @@ diff --git a/drivers/pci/host/pci-aardvark.c b/drivers/pci/host/pci-aardvark.c
|
|||
index 68ff10e17c74..e361c673732f 100644
|
||||
--- a/drivers/pci/host/pci-aardvark.c
|
||||
+++ b/drivers/pci/host/pci-aardvark.c
|
||||
@@ -30,8 +30,10 @@
|
||||
@@ -27,8 +27,10 @@
|
||||
#define PCIE_CORE_DEV_CTRL_STATS_REG 0xc8
|
||||
#define PCIE_CORE_DEV_CTRL_STATS_RELAX_ORDER_DISABLE (0 << 4)
|
||||
#define PCIE_CORE_DEV_CTRL_STATS_MAX_PAYLOAD_SZ_SHIFT 5
|
||||
|
@ -36,9 +36,9 @@ index 68ff10e17c74..e361c673732f 100644
|
|||
#define PCIE_CORE_DEV_CTRL_STATS_SNOOP_DISABLE (0 << 11)
|
||||
#define PCIE_CORE_DEV_CTRL_STATS_MAX_RD_REQ_SIZE_SHIFT 12
|
||||
+#define PCIE_CORE_MPS_UNIT_BYTE 128
|
||||
#define PCIE_CORE_DEV_CTRL_STATS_MAX_RD_REQ_SZ 0x2
|
||||
#define PCIE_CORE_LINK_CTRL_STAT_REG 0xd0
|
||||
#define PCIE_CORE_LINK_L0S_ENTRY BIT(0)
|
||||
#define PCIE_CORE_LINK_TRAINING BIT(5)
|
||||
@@ -298,7 +300,8 @@ static void advk_pcie_setup_hw(struct advk_pcie *pcie)
|
||||
|
||||
/* Set PCIe Device Control and Status 1 PF0 register */
|
||||
|
|
|
@ -1,104 +0,0 @@
|
|||
From 364d845b2fd8c083f32a95377f5b3cd3f0cf2323 Mon Sep 17 00:00:00 2001
|
||||
From: Victor Gu <xigu@marvell.com>
|
||||
Date: Mon, 27 Mar 2017 18:28:25 +0800
|
||||
Subject: [PATCH 09/11] fix: pci: aardvark: use isr1 interrupt in legacy irq
|
||||
mode
|
||||
|
||||
The Aardvark has two interrupts sets, first set is bit[23:16] of
|
||||
PCIe ISR 0 register(RD0074840h), second set is bit[11:8] of PCIe
|
||||
ISR 1 register(RD0074848h). Only one set should be used, while
|
||||
another set should be masked.
|
||||
The second set is more advanced, the Legacy INT_X status bit is
|
||||
asserted once Assert_INTX message is received, and de-asserted after
|
||||
Deassert_INTX message is received, which provides alternate way
|
||||
besides of the assert/deassert interrupt pairs in PCIe ISR 0 register.
|
||||
|
||||
Change-Id: Idef2eb474a094754195a031ad580caa8a88f046d
|
||||
Signed-off-by: Victor Gu <xigu@marvell.com>
|
||||
Reviewed-on: http://vgitil04.il.marvell.com:8080/38024
|
||||
Tested-by: iSoC Platform CI <ykjenk@marvell.com>
|
||||
Reviewed-by: Evan Wang <xswang@marvell.com>
|
||||
---
|
||||
drivers/pci/host/pci-aardvark.c | 29 ++++++++++++++++++-----------
|
||||
1 file changed, 18 insertions(+), 11 deletions(-)
|
||||
|
||||
diff --git a/drivers/pci/host/pci-aardvark.c b/drivers/pci/host/pci-aardvark.c
|
||||
index 072bc70e900c..10154dcf219b 100644
|
||||
--- a/drivers/pci/host/pci-aardvark.c
|
||||
+++ b/drivers/pci/host/pci-aardvark.c
|
||||
@@ -103,7 +103,8 @@
|
||||
#define PCIE_ISR1_MASK_REG (CONTROL_BASE_ADDR + 0x4C)
|
||||
#define PCIE_ISR1_POWER_STATE_CHANGE BIT(4)
|
||||
#define PCIE_ISR1_FLUSH BIT(5)
|
||||
-#define PCIE_ISR1_ALL_MASK GENMASK(5, 4)
|
||||
+#define PCIE_ISR1_INTX_ASSERT(val) BIT(8 + (val))
|
||||
+#define PCIE_ISR1_ALL_MASK GENMASK(11, 4)
|
||||
#define PCIE_MSI_ADDR_LOW_REG (CONTROL_BASE_ADDR + 0x50)
|
||||
#define PCIE_MSI_ADDR_HIGH_REG (CONTROL_BASE_ADDR + 0x54)
|
||||
#define PCIE_MSI_STATUS_REG (CONTROL_BASE_ADDR + 0x58)
|
||||
@@ -612,9 +613,9 @@ static void advk_pcie_irq_mask(struct irq_data *d)
|
||||
irq_hw_number_t hwirq = irqd_to_hwirq(d);
|
||||
u32 mask;
|
||||
|
||||
- mask = advk_readl(pcie, PCIE_ISR0_MASK_REG);
|
||||
- mask |= PCIE_ISR0_INTX_ASSERT(hwirq);
|
||||
- advk_writel(pcie, mask, PCIE_ISR0_MASK_REG);
|
||||
+ mask = advk_readl(pcie, PCIE_ISR1_MASK_REG);
|
||||
+ mask |= PCIE_ISR1_INTX_ASSERT(hwirq);
|
||||
+ advk_writel(pcie, mask, PCIE_ISR1_MASK_REG);
|
||||
}
|
||||
|
||||
static void advk_pcie_irq_unmask(struct irq_data *d)
|
||||
@@ -623,9 +624,9 @@ static void advk_pcie_irq_unmask(struct irq_data *d)
|
||||
irq_hw_number_t hwirq = irqd_to_hwirq(d);
|
||||
u32 mask;
|
||||
|
||||
- mask = advk_readl(pcie, PCIE_ISR0_MASK_REG);
|
||||
- mask &= ~PCIE_ISR0_INTX_ASSERT(hwirq);
|
||||
- advk_writel(pcie, mask, PCIE_ISR0_MASK_REG);
|
||||
+ mask = advk_readl(pcie, PCIE_ISR1_MASK_REG);
|
||||
+ mask &= ~PCIE_ISR1_INTX_ASSERT(hwirq);
|
||||
+ advk_writel(pcie, mask, PCIE_ISR1_MASK_REG);
|
||||
}
|
||||
|
||||
static int advk_pcie_irq_map(struct irq_domain *h,
|
||||
@@ -769,14 +770,20 @@ static void advk_pcie_handle_msi(struct advk_pcie *pcie)
|
||||
static void advk_pcie_handle_int(struct advk_pcie *pcie)
|
||||
{
|
||||
u32 val, mask, status;
|
||||
+ u32 val2, mask2, status2;
|
||||
int i, virq;
|
||||
|
||||
val = advk_readl(pcie, PCIE_ISR0_REG);
|
||||
mask = advk_readl(pcie, PCIE_ISR0_MASK_REG);
|
||||
status = val & ((~mask) & PCIE_ISR0_ALL_MASK);
|
||||
|
||||
- if (!status) {
|
||||
+ val2 = advk_readl(pcie, PCIE_ISR1_REG);
|
||||
+ mask2 = advk_readl(pcie, PCIE_ISR1_MASK_REG);
|
||||
+ status2 = val2 & ((~mask2) & PCIE_ISR1_ALL_MASK);
|
||||
+
|
||||
+ if (!status && !status2) {
|
||||
advk_writel(pcie, val, PCIE_ISR0_REG);
|
||||
+ advk_writel(pcie, val2, PCIE_ISR1_REG);
|
||||
return;
|
||||
}
|
||||
|
||||
@@ -795,11 +795,11 @@ static void advk_pcie_handle_int(struct advk_pcie *pcie)
|
||||
|
||||
/* Process legacy interrupts */
|
||||
for (i = 0; i < PCI_NUM_INTX; i++) {
|
||||
- if (!(status & PCIE_ISR0_INTX_ASSERT(i)))
|
||||
+ if (!(status2 & PCIE_ISR1_INTX_ASSERT(i)))
|
||||
continue;
|
||||
|
||||
- advk_writel(pcie, PCIE_ISR0_INTX_ASSERT(i),
|
||||
- PCIE_ISR0_REG);
|
||||
+ advk_writel(pcie, PCIE_ISR1_INTX_ASSERT(i),
|
||||
+ PCIE_ISR1_REG);
|
||||
|
||||
virq = irq_find_mapping(pcie->irq_domain, i);
|
||||
generic_handle_irq(virq);
|
||||
--
|
||||
2.13.3
|
||||
|
20
patch/kernel/mvebu64-dev/0011-espressobin-enable-emmc.patch
Normal file
20
patch/kernel/mvebu64-dev/0011-espressobin-enable-emmc.patch
Normal file
|
@ -0,0 +1,20 @@
|
|||
diff --git a/arch/arm64/boot/dts/marvell/armada-3720-espressobin.dts b/arch/arm64/boot/dts/marvell/armada-3720-espressobin.dts
|
||||
index 2ce52ba..a759fd1 100644
|
||||
--- a/arch/arm64/boot/dts/marvell/armada-3720-espressobin.dts
|
||||
+++ b/arch/arm64/boot/dts/marvell/armada-3720-espressobin.dts
|
||||
@@ -96,6 +96,15 @@
|
||||
status = "okay";
|
||||
};
|
||||
|
||||
+&sdhci0 {
|
||||
+ non-removable;
|
||||
+ bus-width = <8>;
|
||||
+ mmc-ddr-1_8v;
|
||||
+ mmc-hs400-1_8v;
|
||||
+ marvell,pad-type = "fixed-1-8v";
|
||||
+ status = "okay";
|
||||
+};
|
||||
+
|
||||
/* Exported on the micro USB connector J5 through an FTDI */
|
||||
&uart0 {
|
||||
status = "okay";
|
16
patch/kernel/mvebu64-dev/enable_ath10_cards.patch
Normal file
16
patch/kernel/mvebu64-dev/enable_ath10_cards.patch
Normal file
|
@ -0,0 +1,16 @@
|
|||
diff --git a/drivers/pci/host/pci-aardvark.c b/drivers/pci/host/pci-aardvark.c
|
||||
index a42a040..1754456
|
||||
--- a/drivers/pci/host/pci-aardvark.c
|
||||
+++ b/drivers/pci/host/pci-aardvark.c
|
||||
@@ -312,9 +312,10 @@ static void advk_pcie_setup_hw(struct advk_pcie *pcie)
|
||||
advk_writel(pcie, reg, PCIE_CORE_CTRL2_REG);
|
||||
|
||||
/* Set GEN2 */
|
||||
+ /* Set GEN1 */
|
||||
reg = advk_readl(pcie, PCIE_CORE_CTRL0_REG);
|
||||
reg &= ~PCIE_GEN_SEL_MSK;
|
||||
- reg |= SPEED_GEN_2;
|
||||
+ reg |= SPEED_GEN_1;
|
||||
advk_writel(pcie, reg, PCIE_CORE_CTRL0_REG);
|
||||
|
||||
/* Set lane X1 */
|
File diff suppressed because it is too large
Load diff
|
@ -0,0 +1,24 @@
|
|||
diff --git a/drivers/net/wireless/Kconfig b/drivers/net/wireless/Kconfig
|
||||
index 95cdb48fad061..db9ee74578012 100644
|
||||
--- a/drivers/net/wireless/Kconfig
|
||||
+++ b/drivers/net/wireless/Kconfig
|
||||
@@ -32,6 +32,7 @@ config WIRELESS_WDS
|
||||
|
||||
source "drivers/net/wireless/admtek/Kconfig"
|
||||
source "drivers/net/wireless/ath/Kconfig"
|
||||
+source "drivers/net/wireless/rtl8188eu/Kconfig"
|
||||
source "drivers/net/wireless/atmel/Kconfig"
|
||||
source "drivers/net/wireless/broadcom/Kconfig"
|
||||
source "drivers/net/wireless/cisco/Kconfig"
|
||||
diff --git a/drivers/net/wireless/Makefile b/drivers/net/wireless/Makefile
|
||||
index edeb51f6fa551..2c4d8522929bf 100644
|
||||
--- a/drivers/net/wireless/Makefile
|
||||
+++ b/drivers/net/wireless/Makefile
|
||||
@@ -5,6 +5,7 @@
|
||||
|
||||
obj-$(CONFIG_WLAN_VENDOR_ADMTEK) += admtek/
|
||||
obj-$(CONFIG_WLAN_VENDOR_ATH) += ath/
|
||||
+obj-$(CONFIG_RTL8188EU) += rtl8188eu/
|
||||
obj-$(CONFIG_WLAN_VENDOR_ATMEL) += atmel/
|
||||
obj-$(CONFIG_WLAN_VENDOR_BROADCOM) += broadcom/
|
||||
obj-$(CONFIG_WLAN_VENDOR_CISCO) += cisco/
|
315820
patch/kernel/mvebu64-dev/wifi-2002-02-rtl8188eu.patch
Normal file
315820
patch/kernel/mvebu64-dev/wifi-2002-02-rtl8188eu.patch
Normal file
File diff suppressed because it is too large
Load diff
|
@ -1,26 +0,0 @@
|
|||
diff --git a/drivers/net/wireless/Kconfig b/drivers/net/wireless/Kconfig
|
||||
index 918f449..561b71c 100644
|
||||
--- a/drivers/net/wireless/Kconfig
|
||||
+++ b/drivers/net/wireless/Kconfig
|
||||
@@ -39,6 +39,8 @@ source "drivers/net/wireless/cisco/Kconfig"
|
||||
source "drivers/net/wireless/intel/Kconfig"
|
||||
source "drivers/net/wireless/intersil/Kconfig"
|
||||
source "drivers/net/wireless/marvell/Kconfig"
|
||||
+source "drivers/net/wireless/rtl8812au/Kconfig"
|
||||
+source "drivers/net/wireless/rtl8814au/Kconfig"
|
||||
source "drivers/net/wireless/mediatek/Kconfig"
|
||||
source "drivers/net/wireless/ralink/Kconfig"
|
||||
source "drivers/net/wireless/realtek/Kconfig"
|
||||
diff --git a/drivers/net/wireless/Makefile b/drivers/net/wireless/Makefile
|
||||
index 59df552..614ddf4 100644
|
||||
--- a/drivers/net/wireless/Makefile
|
||||
+++ b/drivers/net/wireless/Makefile
|
||||
@@ -12,6 +12,8 @@ obj-$(CONFIG_WLAN_VENDOR_CISCO) += cisco/
|
||||
obj-$(CONFIG_WLAN_VENDOR_INTEL) += intel/
|
||||
obj-$(CONFIG_WLAN_VENDOR_INTERSIL) += intersil/
|
||||
obj-$(CONFIG_WLAN_VENDOR_MARVELL) += marvell/
|
||||
+obj-$(CONFIG_RTL8812AU) += rtl8812au/
|
||||
+obj-$(CONFIG_RTL8814AU) += rtl8814au/
|
||||
obj-$(CONFIG_WLAN_VENDOR_MEDIATEK) += mediatek/
|
||||
obj-$(CONFIG_WLAN_VENDOR_RALINK) += ralink/
|
||||
obj-$(CONFIG_WLAN_VENDOR_REALTEK) += realtek/
|
|
@ -1,51 +0,0 @@
|
|||
From 19f028017f93b19bd4142840a0714fc3b5c447a1 Mon Sep 17 00:00:00 2001
|
||||
From: Victor Gu <xigu@marvell.com>
|
||||
Date: Fri, 8 Sep 2017 11:53:42 +0200
|
||||
Subject: [PATCH 06/12] PCI: aardvark: fix logic in PCI configuration
|
||||
read/write functions
|
||||
|
||||
The PCI configuration space read/write functions were special casing
|
||||
the situation where PCI_SLOT(devfn) != 0, and returned
|
||||
PCIBIOS_DEVICE_NOT_FOUND in this case.
|
||||
|
||||
However, will this is what is intended for the root bus, it is not
|
||||
intended for the child busses, as it prevents discovering devices with
|
||||
PCI_SLOT(x) != 0. Therefore, we return PCIBIOS_DEVICE_NOT_FOUND only
|
||||
if we're on the root bus.
|
||||
|
||||
Fixes: 8c39d710363c1 ("PCI: aardvark: Add Aardvark PCI host controller driver")
|
||||
Cc: <stable@vger.kernel.org>
|
||||
Signed-off-by: Victor Gu <xigu@marvell.com>
|
||||
Reviewed-by: Wilson Ding <dingwei@marvell.com>
|
||||
Reviewed-by: Nadav Haklai <nadavh@marvell.com>
|
||||
[Thomas: tweak commit log.]
|
||||
Signed-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
|
||||
---
|
||||
drivers/pci/host/pci-aardvark.c | 4 ++--
|
||||
1 file changed, 2 insertions(+), 2 deletions(-)
|
||||
|
||||
diff --git a/drivers/pci/host/pci-aardvark.c b/drivers/pci/host/pci-aardvark.c
|
||||
index 5fb9b620ac78..582d75f864e3 100644
|
||||
--- a/drivers/pci/host/pci-aardvark.c
|
||||
+++ b/drivers/pci/host/pci-aardvark.c
|
||||
@@ -441,7 +441,7 @@ static int advk_pcie_rd_conf(struct pci_bus *bus, u32 devfn,
|
||||
u32 reg;
|
||||
int ret;
|
||||
|
||||
- if (PCI_SLOT(devfn) != 0) {
|
||||
+ if ((bus->number == pcie->root_bus_nr) && (PCI_SLOT(devfn) != 0)) {
|
||||
*val = 0xffffffff;
|
||||
return PCIBIOS_DEVICE_NOT_FOUND;
|
||||
}
|
||||
@@ -495,7 +495,7 @@ static int advk_pcie_wr_conf(struct pci_bus *bus, u32 devfn,
|
||||
int offset;
|
||||
int ret;
|
||||
|
||||
- if (PCI_SLOT(devfn) != 0)
|
||||
+ if ((bus->number == pcie->root_bus_nr) && (PCI_SLOT(devfn) != 0))
|
||||
return PCIBIOS_DEVICE_NOT_FOUND;
|
||||
|
||||
if (where % size)
|
||||
--
|
||||
2.14.1
|
||||
|
|
@ -1,38 +0,0 @@
|
|||
From e692c4478048fdcc01c939f28e9801aebdd622d3 Mon Sep 17 00:00:00 2001
|
||||
From: Victor Gu <xigu@marvell.com>
|
||||
Date: Fri, 8 Sep 2017 11:53:43 +0200
|
||||
Subject: [PATCH 07/12] PCI: aardvark: set PIO_ADDR_LS correctly in
|
||||
advk_pcie_rd_conf()
|
||||
|
||||
When setting the PIO_ADDR_LS register during a configuration read, we
|
||||
were properly passing the device number, function number and register
|
||||
number, but not the bus number, causing issues when reading the
|
||||
configuration of PCIe devices.
|
||||
|
||||
Fixes: 8c39d710363c1 ("PCI: aardvark: Add Aardvark PCI host controller driver")
|
||||
Cc: <stable@vger.kernel.org>
|
||||
Signed-off-by: Victor Gu <xigu@marvell.com>
|
||||
Reviewed-by: Wilson Ding <dingwei@marvell.com>
|
||||
Reviewed-by: Nadav Haklai <nadavh@marvell.com>
|
||||
[Thomas: tweak commit log.]
|
||||
Signed-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
|
||||
---
|
||||
drivers/pci/host/pci-aardvark.c | 2 +-
|
||||
1 file changed, 1 insertion(+), 1 deletion(-)
|
||||
|
||||
diff --git a/drivers/pci/host/pci-aardvark.c b/drivers/pci/host/pci-aardvark.c
|
||||
index 582d75f864e3..68ff10e17c74 100644
|
||||
--- a/drivers/pci/host/pci-aardvark.c
|
||||
+++ b/drivers/pci/host/pci-aardvark.c
|
||||
@@ -460,7 +460,7 @@ static int advk_pcie_rd_conf(struct pci_bus *bus, u32 devfn,
|
||||
advk_writel(pcie, reg, PIO_CTRL);
|
||||
|
||||
/* Program the address registers */
|
||||
- reg = PCIE_BDF(devfn) | PCIE_CONF_REG(where);
|
||||
+ reg = PCIE_CONF_ADDR(bus->number, devfn, where);
|
||||
advk_writel(pcie, reg, PIO_ADDR_LS);
|
||||
advk_writel(pcie, 0, PIO_ADDR_MS);
|
||||
|
||||
--
|
||||
2.14.1
|
||||
|
|
@ -28,7 +28,7 @@ diff --git a/drivers/pci/host/pci-aardvark.c b/drivers/pci/host/pci-aardvark.c
|
|||
index 68ff10e17c74..e361c673732f 100644
|
||||
--- a/drivers/pci/host/pci-aardvark.c
|
||||
+++ b/drivers/pci/host/pci-aardvark.c
|
||||
@@ -30,8 +30,10 @@
|
||||
@@ -27,8 +27,10 @@
|
||||
#define PCIE_CORE_DEV_CTRL_STATS_REG 0xc8
|
||||
#define PCIE_CORE_DEV_CTRL_STATS_RELAX_ORDER_DISABLE (0 << 4)
|
||||
#define PCIE_CORE_DEV_CTRL_STATS_MAX_PAYLOAD_SZ_SHIFT 5
|
||||
|
@ -36,9 +36,9 @@ index 68ff10e17c74..e361c673732f 100644
|
|||
#define PCIE_CORE_DEV_CTRL_STATS_SNOOP_DISABLE (0 << 11)
|
||||
#define PCIE_CORE_DEV_CTRL_STATS_MAX_RD_REQ_SIZE_SHIFT 12
|
||||
+#define PCIE_CORE_MPS_UNIT_BYTE 128
|
||||
#define PCIE_CORE_DEV_CTRL_STATS_MAX_RD_REQ_SZ 0x2
|
||||
#define PCIE_CORE_LINK_CTRL_STAT_REG 0xd0
|
||||
#define PCIE_CORE_LINK_L0S_ENTRY BIT(0)
|
||||
#define PCIE_CORE_LINK_TRAINING BIT(5)
|
||||
@@ -298,7 +300,8 @@ static void advk_pcie_setup_hw(struct advk_pcie *pcie)
|
||||
|
||||
/* Set PCIe Device Control and Status 1 PF0 register */
|
||||
|
|
|
@ -1,104 +0,0 @@
|
|||
From 364d845b2fd8c083f32a95377f5b3cd3f0cf2323 Mon Sep 17 00:00:00 2001
|
||||
From: Victor Gu <xigu@marvell.com>
|
||||
Date: Mon, 27 Mar 2017 18:28:25 +0800
|
||||
Subject: [PATCH 09/11] fix: pci: aardvark: use isr1 interrupt in legacy irq
|
||||
mode
|
||||
|
||||
The Aardvark has two interrupts sets, first set is bit[23:16] of
|
||||
PCIe ISR 0 register(RD0074840h), second set is bit[11:8] of PCIe
|
||||
ISR 1 register(RD0074848h). Only one set should be used, while
|
||||
another set should be masked.
|
||||
The second set is more advanced, the Legacy INT_X status bit is
|
||||
asserted once Assert_INTX message is received, and de-asserted after
|
||||
Deassert_INTX message is received, which provides alternate way
|
||||
besides of the assert/deassert interrupt pairs in PCIe ISR 0 register.
|
||||
|
||||
Change-Id: Idef2eb474a094754195a031ad580caa8a88f046d
|
||||
Signed-off-by: Victor Gu <xigu@marvell.com>
|
||||
Reviewed-on: http://vgitil04.il.marvell.com:8080/38024
|
||||
Tested-by: iSoC Platform CI <ykjenk@marvell.com>
|
||||
Reviewed-by: Evan Wang <xswang@marvell.com>
|
||||
---
|
||||
drivers/pci/host/pci-aardvark.c | 29 ++++++++++++++++++-----------
|
||||
1 file changed, 18 insertions(+), 11 deletions(-)
|
||||
|
||||
diff --git a/drivers/pci/host/pci-aardvark.c b/drivers/pci/host/pci-aardvark.c
|
||||
index 072bc70e900c..10154dcf219b 100644
|
||||
--- a/drivers/pci/host/pci-aardvark.c
|
||||
+++ b/drivers/pci/host/pci-aardvark.c
|
||||
@@ -103,7 +103,8 @@
|
||||
#define PCIE_ISR1_MASK_REG (CONTROL_BASE_ADDR + 0x4C)
|
||||
#define PCIE_ISR1_POWER_STATE_CHANGE BIT(4)
|
||||
#define PCIE_ISR1_FLUSH BIT(5)
|
||||
-#define PCIE_ISR1_ALL_MASK GENMASK(5, 4)
|
||||
+#define PCIE_ISR1_INTX_ASSERT(val) BIT(8 + (val))
|
||||
+#define PCIE_ISR1_ALL_MASK GENMASK(11, 4)
|
||||
#define PCIE_MSI_ADDR_LOW_REG (CONTROL_BASE_ADDR + 0x50)
|
||||
#define PCIE_MSI_ADDR_HIGH_REG (CONTROL_BASE_ADDR + 0x54)
|
||||
#define PCIE_MSI_STATUS_REG (CONTROL_BASE_ADDR + 0x58)
|
||||
@@ -612,9 +613,9 @@ static void advk_pcie_irq_mask(struct irq_data *d)
|
||||
irq_hw_number_t hwirq = irqd_to_hwirq(d);
|
||||
u32 mask;
|
||||
|
||||
- mask = advk_readl(pcie, PCIE_ISR0_MASK_REG);
|
||||
- mask |= PCIE_ISR0_INTX_ASSERT(hwirq);
|
||||
- advk_writel(pcie, mask, PCIE_ISR0_MASK_REG);
|
||||
+ mask = advk_readl(pcie, PCIE_ISR1_MASK_REG);
|
||||
+ mask |= PCIE_ISR1_INTX_ASSERT(hwirq);
|
||||
+ advk_writel(pcie, mask, PCIE_ISR1_MASK_REG);
|
||||
}
|
||||
|
||||
static void advk_pcie_irq_unmask(struct irq_data *d)
|
||||
@@ -623,9 +624,9 @@ static void advk_pcie_irq_unmask(struct irq_data *d)
|
||||
irq_hw_number_t hwirq = irqd_to_hwirq(d);
|
||||
u32 mask;
|
||||
|
||||
- mask = advk_readl(pcie, PCIE_ISR0_MASK_REG);
|
||||
- mask &= ~PCIE_ISR0_INTX_ASSERT(hwirq);
|
||||
- advk_writel(pcie, mask, PCIE_ISR0_MASK_REG);
|
||||
+ mask = advk_readl(pcie, PCIE_ISR1_MASK_REG);
|
||||
+ mask &= ~PCIE_ISR1_INTX_ASSERT(hwirq);
|
||||
+ advk_writel(pcie, mask, PCIE_ISR1_MASK_REG);
|
||||
}
|
||||
|
||||
static int advk_pcie_irq_map(struct irq_domain *h,
|
||||
@@ -769,14 +770,20 @@ static void advk_pcie_handle_msi(struct advk_pcie *pcie)
|
||||
static void advk_pcie_handle_int(struct advk_pcie *pcie)
|
||||
{
|
||||
u32 val, mask, status;
|
||||
+ u32 val2, mask2, status2;
|
||||
int i, virq;
|
||||
|
||||
val = advk_readl(pcie, PCIE_ISR0_REG);
|
||||
mask = advk_readl(pcie, PCIE_ISR0_MASK_REG);
|
||||
status = val & ((~mask) & PCIE_ISR0_ALL_MASK);
|
||||
|
||||
- if (!status) {
|
||||
+ val2 = advk_readl(pcie, PCIE_ISR1_REG);
|
||||
+ mask2 = advk_readl(pcie, PCIE_ISR1_MASK_REG);
|
||||
+ status2 = val2 & ((~mask2) & PCIE_ISR1_ALL_MASK);
|
||||
+
|
||||
+ if (!status && !status2) {
|
||||
advk_writel(pcie, val, PCIE_ISR0_REG);
|
||||
+ advk_writel(pcie, val2, PCIE_ISR1_REG);
|
||||
return;
|
||||
}
|
||||
|
||||
@@ -795,11 +795,11 @@ static void advk_pcie_handle_int(struct advk_pcie *pcie)
|
||||
|
||||
/* Process legacy interrupts */
|
||||
for (i = 0; i < PCI_NUM_INTX; i++) {
|
||||
- if (!(status & PCIE_ISR0_INTX_ASSERT(i)))
|
||||
+ if (!(status2 & PCIE_ISR1_INTX_ASSERT(i)))
|
||||
continue;
|
||||
|
||||
- advk_writel(pcie, PCIE_ISR0_INTX_ASSERT(i),
|
||||
- PCIE_ISR0_REG);
|
||||
+ advk_writel(pcie, PCIE_ISR1_INTX_ASSERT(i),
|
||||
+ PCIE_ISR1_REG);
|
||||
|
||||
virq = irq_find_mapping(pcie->irq_domain, i);
|
||||
generic_handle_irq(virq);
|
||||
--
|
||||
2.13.3
|
||||
|
16
patch/kernel/mvebu64-next/enable_ath10_cards.patch
Normal file
16
patch/kernel/mvebu64-next/enable_ath10_cards.patch
Normal file
|
@ -0,0 +1,16 @@
|
|||
diff --git a/drivers/pci/host/pci-aardvark.c b/drivers/pci/host/pci-aardvark.c
|
||||
index a42a040..1754456
|
||||
--- a/drivers/pci/host/pci-aardvark.c
|
||||
+++ b/drivers/pci/host/pci-aardvark.c
|
||||
@@ -312,9 +312,10 @@ static void advk_pcie_setup_hw(struct advk_pcie *pcie)
|
||||
advk_writel(pcie, reg, PCIE_CORE_CTRL2_REG);
|
||||
|
||||
/* Set GEN2 */
|
||||
+ /* Set GEN1 */
|
||||
reg = advk_readl(pcie, PCIE_CORE_CTRL0_REG);
|
||||
reg &= ~PCIE_GEN_SEL_MSK;
|
||||
- reg |= SPEED_GEN_2;
|
||||
+ reg |= SPEED_GEN_1;
|
||||
advk_writel(pcie, reg, PCIE_CORE_CTRL0_REG);
|
||||
|
||||
/* Set lane X1 */
|
|
@ -0,0 +1,32 @@
|
|||
diff --git a/drivers/net/vxlan.c b/drivers/net/vxlan.c
|
||||
index bb44f0c..9e9202b
|
||||
--- a/drivers/net/vxlan.c
|
||||
+++ b/drivers/net/vxlan.c
|
||||
@@ -2155,13 +2155,6 @@ static void vxlan_xmit_one(struct sk_buff *skb, struct net_device *dev,
|
||||
}
|
||||
|
||||
ndst = &rt->dst;
|
||||
- if (skb_dst(skb)) {
|
||||
- int mtu = dst_mtu(ndst) - VXLAN_HEADROOM;
|
||||
-
|
||||
- skb_dst(skb)->ops->update_pmtu(skb_dst(skb), NULL,
|
||||
- skb, mtu);
|
||||
- }
|
||||
-
|
||||
tos = ip_tunnel_ecn_encap(tos, old_iph, skb);
|
||||
ttl = ttl ? : ip4_dst_hoplimit(&rt->dst);
|
||||
err = vxlan_build_skb(skb, ndst, sizeof(struct iphdr),
|
||||
@@ -2197,13 +2190,6 @@ static void vxlan_xmit_one(struct sk_buff *skb, struct net_device *dev,
|
||||
goto out_unlock;
|
||||
}
|
||||
|
||||
- if (skb_dst(skb)) {
|
||||
- int mtu = dst_mtu(ndst) - VXLAN6_HEADROOM;
|
||||
-
|
||||
- skb_dst(skb)->ops->update_pmtu(skb_dst(skb), NULL,
|
||||
- skb, mtu);
|
||||
- }
|
||||
-
|
||||
tos = ip_tunnel_ecn_encap(tos, old_iph, skb);
|
||||
ttl = ttl ? : ip6_dst_hoplimit(ndst);
|
||||
skb_scrub_packet(skb, xnet);
|
File diff suppressed because it is too large
Load diff
|
@ -0,0 +1,24 @@
|
|||
diff --git a/drivers/net/wireless/Kconfig b/drivers/net/wireless/Kconfig
|
||||
index 95cdb48fad061..db9ee74578012 100644
|
||||
--- a/drivers/net/wireless/Kconfig
|
||||
+++ b/drivers/net/wireless/Kconfig
|
||||
@@ -32,6 +32,7 @@ config WIRELESS_WDS
|
||||
|
||||
source "drivers/net/wireless/admtek/Kconfig"
|
||||
source "drivers/net/wireless/ath/Kconfig"
|
||||
+source "drivers/net/wireless/rtl8188eu/Kconfig"
|
||||
source "drivers/net/wireless/atmel/Kconfig"
|
||||
source "drivers/net/wireless/broadcom/Kconfig"
|
||||
source "drivers/net/wireless/cisco/Kconfig"
|
||||
diff --git a/drivers/net/wireless/Makefile b/drivers/net/wireless/Makefile
|
||||
index edeb51f6fa551..2c4d8522929bf 100644
|
||||
--- a/drivers/net/wireless/Makefile
|
||||
+++ b/drivers/net/wireless/Makefile
|
||||
@@ -5,6 +5,7 @@
|
||||
|
||||
obj-$(CONFIG_WLAN_VENDOR_ADMTEK) += admtek/
|
||||
obj-$(CONFIG_WLAN_VENDOR_ATH) += ath/
|
||||
+obj-$(CONFIG_RTL8188EU) += rtl8188eu/
|
||||
obj-$(CONFIG_WLAN_VENDOR_ATMEL) += atmel/
|
||||
obj-$(CONFIG_WLAN_VENDOR_BROADCOM) += broadcom/
|
||||
obj-$(CONFIG_WLAN_VENDOR_CISCO) += cisco/
|
315820
patch/kernel/mvebu64-next/wifi-2002-02-rtl8188eu.patch
Normal file
315820
patch/kernel/mvebu64-next/wifi-2002-02-rtl8188eu.patch
Normal file
File diff suppressed because it is too large
Load diff
Loading…
Add table
Add a link
Reference in a new issue