Kernel
Threads by month
- ----- 2025 -----
- February
- January
- ----- 2024 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2023 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2022 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2021 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2020 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2019 -----
- December
- 55 participants
- 16918 discussions

18 Aug '20
euleros inclusion
category: feature
bugzilla: NA
issues: #I1RC8Z
CVE: NA
In normal kexec, relocating kernel may cost 5 ~ 10 seconds, to
copy all segments from vmalloced memory to kernel boot memory,
because of disabled mmu.
We introduce quick kexec to save time of copying memory as above,
just like kdump(kexec on crash), by using reserved memory
"Quick Kexec".
Constructing quick kimage as the same as crash kernel,
then simply copy all segments of kimage to reserved memroy.
We also add this support in syscall kexec_load using flags
of KEXEC_QUICK.
Signed-off-by: Sang Yan <sangyan(a)huawei.com>
---
arch/Kconfig | 9 +++++++++
include/linux/ioport.h | 1 +
include/linux/kexec.h | 11 ++++++++++-
include/uapi/linux/kexec.h | 1 +
kernel/kexec.c | 10 ++++++++++
kernel/kexec_core.c | 41 ++++++++++++++++++++++++++++++++---------
6 files changed, 63 insertions(+), 10 deletions(-)
diff --git a/arch/Kconfig b/arch/Kconfig
index d3d70369..11580292 100644
--- a/arch/Kconfig
+++ b/arch/Kconfig
@@ -18,6 +18,15 @@ config KEXEC_CORE
select CRASH_CORE
bool
+config QUICK_KEXEC
+ bool "Support for quick kexec"
+ depends on KEXEC_CORE
+ help
+ It uses pre-reserved memory to accelerate kexec, just like
+ crash kexec, loads new kernel and initrd to reserved memory,
+ and boots new kernel on that memory. It will save the time
+ of relocating kernel.
+
config HAVE_IMA_KEXEC
bool
diff --git a/include/linux/ioport.h b/include/linux/ioport.h
index 5330288..1a438ec 100644
--- a/include/linux/ioport.h
+++ b/include/linux/ioport.h
@@ -139,6 +139,7 @@ enum {
IORES_DESC_PERSISTENT_MEMORY_LEGACY = 5,
IORES_DESC_DEVICE_PRIVATE_MEMORY = 6,
IORES_DESC_DEVICE_PUBLIC_MEMORY = 7,
+ IORES_DESC_QUICK_KEXEC = 8,
};
/* helpers to define resources */
diff --git a/include/linux/kexec.h b/include/linux/kexec.h
index d6b8d0a..98cf0fb 100644
--- a/include/linux/kexec.h
+++ b/include/linux/kexec.h
@@ -233,9 +233,10 @@ struct kimage {
unsigned long control_page;
/* Flags to indicate special processing */
- unsigned int type : 1;
+ unsigned int type : 2;
#define KEXEC_TYPE_DEFAULT 0
#define KEXEC_TYPE_CRASH 1
+#define KEXEC_TYPE_QUICK 2
unsigned int preserve_context : 1;
/* If set, we are using file mode kexec syscall */
unsigned int file_mode:1;
@@ -296,6 +297,11 @@ extern int kexec_load_disabled;
#define KEXEC_FLAGS (KEXEC_ON_CRASH | KEXEC_PRESERVE_CONTEXT)
#endif
+#ifdef CONFIG_QUICK_KEXEC
+#undef KEXEC_FLAGS
+#define KEXEC_FLAGS (KEXEC_ON_CRASH | KEXEC_QUICK)
+#endif
+
/* List of defined/legal kexec file flags */
#define KEXEC_FILE_FLAGS (KEXEC_FILE_UNLOAD | KEXEC_FILE_ON_CRASH | \
KEXEC_FILE_NO_INITRAMFS)
@@ -305,6 +311,9 @@ extern int kexec_load_disabled;
extern struct resource crashk_res;
extern struct resource crashk_low_res;
extern note_buf_t __percpu *crash_notes;
+#ifdef CONFIG_QUICK_KEXEC
+extern struct resource quick_kexec_res;
+#endif
/* flag to track if kexec reboot is in progress */
extern bool kexec_in_progress;
diff --git a/include/uapi/linux/kexec.h b/include/uapi/linux/kexec.h
index 6d11286..ca3cebe 100644
--- a/include/uapi/linux/kexec.h
+++ b/include/uapi/linux/kexec.h
@@ -12,6 +12,7 @@
/* kexec flags for different usage scenarios */
#define KEXEC_ON_CRASH 0x00000001
#define KEXEC_PRESERVE_CONTEXT 0x00000002
+#define KEXEC_QUICK 0x00000004
#define KEXEC_ARCH_MASK 0xffff0000
/*
diff --git a/kernel/kexec.c b/kernel/kexec.c
index 6855980..47dfad7 100644
--- a/kernel/kexec.c
+++ b/kernel/kexec.c
@@ -46,6 +46,9 @@ static int kimage_alloc_init(struct kimage **rimage, unsigned long entry,
int ret;
struct kimage *image;
bool kexec_on_panic = flags & KEXEC_ON_CRASH;
+#ifdef CONFIG_QUICK_KEXEC
+ bool kexec_on_quick = flags & KEXEC_QUICK;
+#endif
if (kexec_on_panic) {
/* Verify we have a valid entry point */
@@ -71,6 +74,13 @@ static int kimage_alloc_init(struct kimage **rimage, unsigned long entry,
image->type = KEXEC_TYPE_CRASH;
}
+#ifdef CONFIG_QUICK_KEXEC
+ if (kexec_on_quick) {
+ image->control_page = quick_kexec_res.start;
+ image->type = KEXEC_TYPE_QUICK;
+ }
+#endif
+
ret = sanity_check_segment_list(image);
if (ret)
goto out_free_image;
diff --git a/kernel/kexec_core.c b/kernel/kexec_core.c
index b36c9c4..595a757 100644
--- a/kernel/kexec_core.c
+++ b/kernel/kexec_core.c
@@ -74,6 +74,16 @@ struct resource crashk_low_res = {
.desc = IORES_DESC_CRASH_KERNEL
};
+#ifdef CONFIG_QUICK_KEXEC
+struct resource quick_kexec_res = {
+ .name = "Quick kexec",
+ .start = 0,
+ .end = 0,
+ .flags = IORESOURCE_BUSY | IORESOURCE_SYSTEM_RAM,
+ .desc = IORES_DESC_QUICK_KEXEC
+};
+#endif
+
int kexec_should_crash(struct task_struct *p)
{
/*
@@ -470,8 +480,10 @@ static struct page *kimage_alloc_normal_control_pages(struct kimage *image,
return pages;
}
-static struct page *kimage_alloc_crash_control_pages(struct kimage *image,
- unsigned int order)
+
+static struct page *kimage_alloc_special_control_pages(struct kimage *image,
+ unsigned int order,
+ unsigned long end)
{
/* Control pages are special, they are the intermediaries
* that are needed while we copy the rest of the pages
@@ -501,7 +513,7 @@ static struct page *kimage_alloc_crash_control_pages(struct kimage *image,
size = (1 << order) << PAGE_SHIFT;
hole_start = (image->control_page + (size - 1)) & ~(size - 1);
hole_end = hole_start + size - 1;
- while (hole_end <= crashk_res.end) {
+ while (hole_end <= end) {
unsigned long i;
cond_resched();
@@ -536,7 +548,6 @@ static struct page *kimage_alloc_crash_control_pages(struct kimage *image,
return pages;
}
-
struct page *kimage_alloc_control_pages(struct kimage *image,
unsigned int order)
{
@@ -547,8 +558,15 @@ struct page *kimage_alloc_control_pages(struct kimage *image,
pages = kimage_alloc_normal_control_pages(image, order);
break;
case KEXEC_TYPE_CRASH:
- pages = kimage_alloc_crash_control_pages(image, order);
+ pages = kimage_alloc_special_control_pages(image, order,
+ crashk_res.end);
+ break;
+#ifdef CONFIG_QUICK_KEXEC
+ case KEXEC_TYPE_QUICK:
+ pages = kimage_alloc_special_control_pages(image, order,
+ quick_kexec_res.end);
break;
+#endif
}
return pages;
@@ -898,11 +916,11 @@ static int kimage_load_normal_segment(struct kimage *image,
return result;
}
-static int kimage_load_crash_segment(struct kimage *image,
+static int kimage_load_special_segment(struct kimage *image,
struct kexec_segment *segment)
{
- /* For crash dumps kernels we simply copy the data from
- * user space to it's destination.
+ /* For crash dumps kernels and quick kexec kernels
+ * we simply copy the data from user space to it's destination.
* We do things a page at a time for the sake of kmap.
*/
unsigned long maddr;
@@ -976,8 +994,13 @@ int kimage_load_segment(struct kimage *image,
result = kimage_load_normal_segment(image, segment);
break;
case KEXEC_TYPE_CRASH:
- result = kimage_load_crash_segment(image, segment);
+ result = kimage_load_special_segment(image, segment);
+ break;
+#ifdef CONFIG_QUICK_KEXEC
+ case KEXEC_TYPE_QUICK:
+ result = kimage_load_special_segment(image, segment);
break;
+#endif
}
return result;
--
2.9.5
1
1
From: Hanjun Guo <guohanjun(a)huawei.com>
hulk inclusion
category: feature
bugzilla: NA
CVE: NA
---------------------------
New features were mereged but leave the defconfig un-updated,
such as Hygon CPU support, update it now.
Signed-off-by: Hanjun Guo <guohanjun(a)huawei.com>
Reviewed-by: Xie XiuQi <xiexiuqi(a)huawei.com>
Signed-off-by: Yang Yingliang <yangyingliang(a)huawei.com>
---
arch/x86/configs/hulk_defconfig | 105 ++++++++++++--------------
arch/x86/configs/openeuler_defconfig | 66 ++++++----------
arch/x86/configs/storage_ci_defconfig | 40 ++++++----
arch/x86/configs/syzkaller_defconfig | 56 ++++++++++----
4 files changed, 140 insertions(+), 127 deletions(-)
diff --git a/arch/x86/configs/hulk_defconfig b/arch/x86/configs/hulk_defconfig
index 0a74cfe00137..ddd209c39445 100644
--- a/arch/x86/configs/hulk_defconfig
+++ b/arch/x86/configs/hulk_defconfig
@@ -1,14 +1,15 @@
#
# Automatically generated file; DO NOT EDIT.
-# Linux/x86 4.19.21 Kernel Configuration
+# Linux/x86 4.19.138 Kernel Configuration
#
#
-# Compiler: gcc (GCC) 4.8.5 20150623 (Red Hat 4.8.5-28)
+# Compiler: gcc 7.5.0
#
CONFIG_CC_IS_GCC=y
-CONFIG_GCC_VERSION=40805
+CONFIG_GCC_VERSION=70500
CONFIG_CLANG_VERSION=0
+CONFIG_CC_HAS_ASM_GOTO=y
CONFIG_IRQ_WORK=y
CONFIG_BUILDTIME_EXTABLE_SORT=y
CONFIG_THREAD_INFO_IN_TASK=y
@@ -46,6 +47,7 @@ CONFIG_HAVE_ARCH_AUDITSYSCALL=y
CONFIG_AUDITSYSCALL=y
CONFIG_AUDIT_WATCH=y
CONFIG_AUDIT_TREE=y
+CONFIG_KTASK=y
#
# IRQ subsystem
@@ -150,14 +152,15 @@ CONFIG_CGROUP_PERF=y
CONFIG_CGROUP_BPF=y
# CONFIG_CGROUP_DEBUG is not set
CONFIG_SOCK_CGROUP_DATA=y
+# CONFIG_CGROUP_FILES is not set
CONFIG_NAMESPACES=y
CONFIG_UTS_NS=y
CONFIG_IPC_NS=y
CONFIG_USER_NS=y
CONFIG_PID_NS=y
CONFIG_NET_NS=y
-CONFIG_CHECKPOINT_RESTORE=y
CONFIG_SCHED_STEAL=y
+CONFIG_CHECKPOINT_RESTORE=y
CONFIG_SCHED_AUTOGROUP=y
# CONFIG_SYSFS_DEPRECATED is not set
CONFIG_RELAY=y
@@ -169,6 +172,7 @@ CONFIG_RD_LZMA=y
CONFIG_RD_XZ=y
CONFIG_RD_LZO=y
CONFIG_RD_LZ4=y
+CONFIG_INITRAMFS_FILE_METADATA=""
CONFIG_CC_OPTIMIZE_FOR_PERFORMANCE=y
# CONFIG_CC_OPTIMIZE_FOR_SIZE is not set
CONFIG_SYSCTL=y
@@ -307,6 +311,7 @@ CONFIG_XEN_SAVE_RESTORE=y
# CONFIG_XEN_DEBUG_FS is not set
# CONFIG_XEN_PVH is not set
CONFIG_KVM_GUEST=y
+CONFIG_ARCH_CPUIDLE_HALTPOLL=y
# CONFIG_KVM_DEBUG_FS is not set
CONFIG_PARAVIRT_TIME_ACCOUNTING=y
CONFIG_PARAVIRT_CLOCK=y
@@ -326,6 +331,7 @@ CONFIG_X86_MINIMUM_CPU_FAMILY=64
CONFIG_X86_DEBUGCTLMSR=y
CONFIG_CPU_SUP_INTEL=y
CONFIG_CPU_SUP_AMD=y
+CONFIG_CPU_SUP_HYGON=y
CONFIG_CPU_SUP_CENTAUR=y
CONFIG_HPET_TIMER=y
CONFIG_HPET_EMULATE_RTC=y
@@ -373,8 +379,8 @@ CONFIG_X86_DIRECT_GBPAGES=y
CONFIG_ARCH_HAS_MEM_ENCRYPT=y
CONFIG_AMD_MEM_ENCRYPT=y
# CONFIG_AMD_MEM_ENCRYPT_ACTIVE_BY_DEFAULT is not set
-CONFIG_ARCH_USE_MEMREMAP_PROT=y
CONFIG_NUMA=y
+CONFIG_NUMA_AWARE_SPINLOCKS=y
CONFIG_AMD_NUMA=y
CONFIG_X86_64_ACPI_NUMA=y
CONFIG_NODES_SPAN_OTHER_NODES=y
@@ -402,6 +408,9 @@ CONFIG_X86_SMAP=y
CONFIG_X86_INTEL_UMIP=y
# CONFIG_X86_INTEL_MPX is not set
CONFIG_X86_INTEL_MEMORY_PROTECTION_KEYS=y
+CONFIG_X86_INTEL_TSX_MODE_OFF=y
+# CONFIG_X86_INTEL_TSX_MODE_ON is not set
+# CONFIG_X86_INTEL_TSX_MODE_AUTO is not set
CONFIG_EFI=y
CONFIG_EFI_STUB=y
CONFIG_EFI_MIXED=y
@@ -436,6 +445,7 @@ CONFIG_LEGACY_VSYSCALL_EMULATE=y
# CONFIG_CMDLINE_BOOL is not set
CONFIG_MODIFY_LDT_SYSCALL=y
CONFIG_HAVE_LIVEPATCH_FTRACE=y
+CONFIG_HAVE_LIVEPATCH_WO_FTRACE=y
#
# Enable Livepatch
@@ -578,6 +588,8 @@ CONFIG_CPU_IDLE=y
# CONFIG_CPU_IDLE_GOV_LADDER is not set
CONFIG_CPU_IDLE_GOV_MENU=y
CONFIG_CPU_IDLE_GOV_TEO=y
+# CONFIG_CPU_IDLE_GOV_HALTPOLL is not set
+CONFIG_HALTPOLL_CPUIDLE=y
CONFIG_INTEL_IDLE=y
#
@@ -637,6 +649,7 @@ CONFIG_VMD=y
# DesignWare PCI Core Support
#
# CONFIG_PCIE_DW_PLAT_HOST is not set
+CONFIG_HISILICON_PCIE_CAE=m
#
# PCI Endpoint
@@ -669,7 +682,6 @@ CONFIG_YENTA_TOSHIBA=y
# Binary Emulations
#
CONFIG_IA32_EMULATION=y
-# CONFIG_IA32_AOUT is not set
# CONFIG_X86_X32 is not set
CONFIG_COMPAT_32=y
CONFIG_COMPAT=y
@@ -731,6 +743,7 @@ CONFIG_KVM_VFIO=y
CONFIG_KVM_GENERIC_DIRTYLOG_READ_PROTECT=y
CONFIG_KVM_COMPAT=y
CONFIG_HAVE_KVM_IRQ_BYPASS=y
+CONFIG_HAVE_KVM_NO_POLL=y
CONFIG_VIRTUALIZATION=y
CONFIG_KVM=m
CONFIG_KVM_INTEL=m
@@ -832,18 +845,16 @@ CONFIG_ARCH_HAS_STRICT_KERNEL_RWX=y
CONFIG_STRICT_KERNEL_RWX=y
CONFIG_ARCH_HAS_STRICT_MODULE_RWX=y
CONFIG_STRICT_MODULE_RWX=y
-CONFIG_ARCH_HAS_REFCOUNT=y
-# CONFIG_REFCOUNT_FULL is not set
CONFIG_HAVE_ARCH_PREL32_RELOCATIONS=y
+CONFIG_ARCH_USE_MEMREMAP_PROT=y
#
# GCOV-based kernel profiling
#
# CONFIG_GCOV_KERNEL is not set
CONFIG_ARCH_HAS_GCOV_PROFILE_ALL=y
-CONFIG_PLUGIN_HOSTCC="g++"
+CONFIG_PLUGIN_HOSTCC=""
CONFIG_HAVE_GCC_PLUGINS=y
-# CONFIG_GCC_PLUGINS is not set
CONFIG_RT_MUTEXES=y
CONFIG_BASE_SMALL=0
CONFIG_MODULES=y
@@ -996,6 +1007,7 @@ CONFIG_THP_SWAP=y
CONFIG_TRANSPARENT_HUGE_PAGECACHE=y
CONFIG_CLEANCACHE=y
CONFIG_FRONTSWAP=y
+# CONFIG_SHRINK_PAGECACHE is not set
# CONFIG_CMA is not set
CONFIG_MEM_SOFT_DIRTY=y
CONFIG_ZSWAP=y
@@ -1940,6 +1952,7 @@ CONFIG_MTD_UBI_BEB_LIMIT=20
# CONFIG_MTD_UBI_FASTMAP is not set
# CONFIG_MTD_UBI_GLUEBI is not set
# CONFIG_MTD_UBI_BLOCK is not set
+CONFIG_MTD_HISILICON_SFC=m
# CONFIG_OF is not set
CONFIG_ARCH_MIGHT_HAVE_PC_PARPORT=y
CONFIG_PARPORT=m
@@ -2124,7 +2137,6 @@ CONFIG_BLK_DEV_SD=m
CONFIG_CHR_DEV_ST=m
# CONFIG_CHR_DEV_OSST is not set
CONFIG_BLK_DEV_SR=m
-CONFIG_BLK_DEV_SR_VENDOR=y
CONFIG_CHR_DEV_SG=m
CONFIG_CHR_DEV_SCH=m
CONFIG_SCSI_ENCLOSURE=m
@@ -2505,6 +2517,9 @@ CONFIG_BE2NET_LANCER=y
CONFIG_BE2NET_SKYHAWK=y
# CONFIG_NET_VENDOR_EZCHIP is not set
# CONFIG_NET_VENDOR_HP is not set
+CONFIG_NET_VENDOR_HUAWEI=y
+# CONFIG_HINIC is not set
+# CONFIG_BMA is not set
# CONFIG_NET_VENDOR_I825XX is not set
CONFIG_NET_VENDOR_INTEL=y
# CONFIG_E100 is not set
@@ -2647,7 +2662,7 @@ CONFIG_LED_TRIGGER_PHY=y
#
CONFIG_AMD_PHY=m
CONFIG_AQUANTIA_PHY=m
-CONFIG_ASIX_PHY=m
+# CONFIG_AX88796B_PHY is not set
CONFIG_AT803X_PHY=m
CONFIG_BCM7XXX_PHY=m
CONFIG_BCM87XX_PHY=m
@@ -3286,6 +3301,7 @@ CONFIG_NOZOMI=m
CONFIG_N_HDLC=m
CONFIG_N_GSM=m
# CONFIG_TRACE_SINK is not set
+CONFIG_LDISC_AUTOLOAD=y
CONFIG_DEVMEM=y
# CONFIG_DEVKMEM is not set
@@ -3358,7 +3374,6 @@ CONFIG_HW_RANDOM_AMD=m
CONFIG_HW_RANDOM_VIA=m
CONFIG_HW_RANDOM_VIRTIO=y
CONFIG_NVRAM=y
-# CONFIG_R3964 is not set
# CONFIG_APPLICOM is not set
# CONFIG_MWAVE is not set
CONFIG_RAW_DRIVER=y
@@ -3602,6 +3617,7 @@ CONFIG_GPIO_ICH=m
# PCI GPIO expanders
#
# CONFIG_GPIO_AMD8111 is not set
+# CONFIG_GPIO_BT8XX is not set
# CONFIG_GPIO_ML_IOH is not set
# CONFIG_GPIO_PCI_IDIO_16 is not set
# CONFIG_GPIO_PCIE_IDIO_24 is not set
@@ -3964,8 +3980,6 @@ CONFIG_MFD_CORE=y
# CONFIG_MFD_INTEL_QUARK_I2C_GPIO is not set
CONFIG_LPC_ICH=m
CONFIG_LPC_SCH=m
-# CONFIG_INTEL_SOC_PMIC is not set
-# CONFIG_INTEL_SOC_PMIC_CHTWC is not set
# CONFIG_INTEL_SOC_PMIC_CHTDC_TI is not set
CONFIG_MFD_INTEL_LPSS=y
CONFIG_MFD_INTEL_LPSS_ACPI=y
@@ -4010,7 +4024,6 @@ CONFIG_MFD_SM501_GPIO=y
# CONFIG_TPS6507X is not set
# CONFIG_MFD_TPS65086 is not set
# CONFIG_MFD_TPS65090 is not set
-# CONFIG_MFD_TPS68470 is not set
# CONFIG_MFD_TI_LP873X is not set
# CONFIG_MFD_TPS6586X is not set
# CONFIG_MFD_TPS65910 is not set
@@ -4082,9 +4095,6 @@ CONFIG_VIDEO_V4L2=m
# CONFIG_VIDEO_ADV_DEBUG is not set
# CONFIG_VIDEO_FIXED_MINOR_RANGES is not set
CONFIG_VIDEO_TUNER=m
-CONFIG_VIDEOBUF_GEN=m
-CONFIG_VIDEOBUF_DMA_SG=m
-CONFIG_VIDEOBUF_VMALLOC=m
CONFIG_DVB_CORE=m
# CONFIG_DVB_MMAP is not set
CONFIG_DVB_NET=y
@@ -4158,7 +4168,6 @@ CONFIG_USB_PWC=m
# CONFIG_USB_PWC_DEBUG is not set
CONFIG_USB_PWC_INPUT_EVDEV=y
# CONFIG_VIDEO_CPIA2 is not set
-CONFIG_USB_ZR364XX=m
CONFIG_USB_STKWEBCAM=m
CONFIG_USB_S2255=m
# CONFIG_VIDEO_USBTV is not set
@@ -4181,13 +4190,6 @@ CONFIG_VIDEO_USBVISION=m
CONFIG_VIDEO_AU0828=m
CONFIG_VIDEO_AU0828_V4L2=y
# CONFIG_VIDEO_AU0828_RC is not set
-CONFIG_VIDEO_CX231XX=m
-CONFIG_VIDEO_CX231XX_RC=y
-CONFIG_VIDEO_CX231XX_ALSA=m
-CONFIG_VIDEO_CX231XX_DVB=m
-CONFIG_VIDEO_TM6000=m
-CONFIG_VIDEO_TM6000_ALSA=m
-CONFIG_VIDEO_TM6000_DVB=m
#
# Digital TV USB devices
@@ -4272,16 +4274,11 @@ CONFIG_VIDEO_IVTV=m
# CONFIG_VIDEO_IVTV_DEPRECATED_IOCTLS is not set
# CONFIG_VIDEO_IVTV_ALSA is not set
CONFIG_VIDEO_FB_IVTV=m
-# CONFIG_VIDEO_HEXIUM_GEMINI is not set
-# CONFIG_VIDEO_HEXIUM_ORION is not set
-# CONFIG_VIDEO_MXB is not set
# CONFIG_VIDEO_DT3155 is not set
#
# Media capture/analog/hybrid TV support
#
-CONFIG_VIDEO_CX18=m
-CONFIG_VIDEO_CX18_ALSA=m
CONFIG_VIDEO_CX23885=m
CONFIG_MEDIA_ALTERA_CI=m
# CONFIG_VIDEO_CX25821 is not set
@@ -4291,8 +4288,6 @@ CONFIG_VIDEO_CX88_BLACKBIRD=m
CONFIG_VIDEO_CX88_DVB=m
# CONFIG_VIDEO_CX88_ENABLE_VP3054 is not set
CONFIG_VIDEO_CX88_MPEG=m
-CONFIG_VIDEO_BT848=m
-CONFIG_DVB_BT8XX=m
CONFIG_VIDEO_SAA7134=m
CONFIG_VIDEO_SAA7134_ALSA=m
CONFIG_VIDEO_SAA7134_RC=y
@@ -4302,14 +4297,9 @@ CONFIG_VIDEO_SAA7164=m
#
# Media digital TV PCI Adapters
#
-CONFIG_DVB_AV7110_IR=y
-CONFIG_DVB_AV7110=m
-CONFIG_DVB_AV7110_OSD=y
CONFIG_DVB_BUDGET_CORE=m
CONFIG_DVB_BUDGET=m
CONFIG_DVB_BUDGET_CI=m
-CONFIG_DVB_BUDGET_AV=m
-CONFIG_DVB_BUDGET_PATCH=m
CONFIG_DVB_B2C2_FLEXCOP_PCI=m
# CONFIG_DVB_B2C2_FLEXCOP_PCI_DEBUG is not set
CONFIG_DVB_PLUTO2=m
@@ -4376,7 +4366,6 @@ CONFIG_VIDEOBUF2_DMA_SG=m
CONFIG_VIDEOBUF2_DVB=m
CONFIG_DVB_B2C2_FLEXCOP=m
CONFIG_VIDEO_SAA7146=m
-CONFIG_VIDEO_SAA7146_VV=m
CONFIG_SMS_SIANO_MDTV=m
CONFIG_SMS_SIANO_RC=y
# CONFIG_SMS_SIANO_DEBUGFS is not set
@@ -4391,11 +4380,8 @@ CONFIG_VIDEO_IR_I2C=m
#
# Audio decoders, processors and mixers
#
-CONFIG_VIDEO_TVAUDIO=m
-CONFIG_VIDEO_TDA7432=m
CONFIG_VIDEO_MSP3400=m
CONFIG_VIDEO_CS3308=m
-CONFIG_VIDEO_CS5345=m
CONFIG_VIDEO_CS53L32A=m
CONFIG_VIDEO_WM8775=m
CONFIG_VIDEO_WM8739=m
@@ -4519,7 +4505,6 @@ CONFIG_DVB_MN88473=m
#
# DVB-S (satellite) frontends
#
-CONFIG_DVB_CX24110=m
CONFIG_DVB_CX24123=m
CONFIG_DVB_MT312=m
CONFIG_DVB_ZL10036=m
@@ -4532,12 +4517,10 @@ CONFIG_DVB_STV6110=m
CONFIG_DVB_STV0900=m
CONFIG_DVB_TDA8083=m
CONFIG_DVB_TDA10086=m
-CONFIG_DVB_TDA8261=m
CONFIG_DVB_VES1X93=m
CONFIG_DVB_TUNER_ITD1000=m
CONFIG_DVB_TUNER_CX24113=m
CONFIG_DVB_TDA826X=m
-CONFIG_DVB_TUA6100=m
CONFIG_DVB_CX24116=m
CONFIG_DVB_CX24117=m
CONFIG_DVB_CX24120=m
@@ -4550,8 +4533,6 @@ CONFIG_DVB_TDA10071=m
#
# DVB-T (terrestrial) frontends
#
-CONFIG_DVB_SP8870=m
-CONFIG_DVB_SP887X=m
CONFIG_DVB_CX22700=m
CONFIG_DVB_CX22702=m
CONFIG_DVB_DRXD=m
@@ -4587,7 +4568,6 @@ CONFIG_DVB_STV0297=m
# ATSC (North American/Korean Terrestrial/Cable DTV) frontends
#
CONFIG_DVB_NXT200X=m
-CONFIG_DVB_OR51211=m
CONFIG_DVB_OR51132=m
CONFIG_DVB_BCM3510=m
CONFIG_DVB_LGDT330X=m
@@ -4707,6 +4687,7 @@ CONFIG_CHASH=m
# CONFIG_CHASH_STATS is not set
# CONFIG_CHASH_SELFTEST is not set
CONFIG_DRM_NOUVEAU=m
+CONFIG_NOUVEAU_LEGACY_CTX_SUPPORT=y
CONFIG_NOUVEAU_DEBUG=5
CONFIG_NOUVEAU_DEBUG_DEFAULT=3
# CONFIG_NOUVEAU_DEBUG_MMU is not set
@@ -4755,10 +4736,10 @@ CONFIG_DRM_PANEL_ORIENTATION_QUIRKS=y
#
# Frame buffer Devices
#
-CONFIG_FB=y
-# CONFIG_FIRMWARE_EDID is not set
CONFIG_FB_CMDLINE=y
CONFIG_FB_NOTIFY=y
+CONFIG_FB=y
+# CONFIG_FIRMWARE_EDID is not set
CONFIG_FB_BOOT_VESA_SUPPORT=y
CONFIG_FB_CFB_FILLRECT=y
CONFIG_FB_CFB_COPYAREA=y
@@ -5559,7 +5540,6 @@ CONFIG_USB_EMI62=m
CONFIG_USB_EMI26=m
CONFIG_USB_ADUTUX=m
CONFIG_USB_SEVSEG=m
-# CONFIG_USB_RIO500 is not set
CONFIG_USB_LEGOTOWER=m
CONFIG_USB_LCD=m
# CONFIG_USB_CYPRESS_CY7C63 is not set
@@ -5948,7 +5928,6 @@ CONFIG_VFIO_PCI_INTX=y
# CONFIG_VFIO_PCI_IGD is not set
CONFIG_VFIO_MDEV=m
CONFIG_VFIO_MDEV_DEVICE=m
-# CONFIG_VFIO_SPIMDEV is not set
CONFIG_IRQ_BYPASS_MANAGER=m
# CONFIG_VIRT_DRIVERS is not set
CONFIG_VIRTIO=y
@@ -6065,6 +6044,7 @@ CONFIG_PVPANIC=y
CONFIG_MLX_PLATFORM=m
CONFIG_INTEL_TURBO_MAX_3=y
# CONFIG_I2C_MULTI_INSTANTIATE is not set
+# CONFIG_INTEL_ATOMISP2_PM is not set
CONFIG_PMC_ATOM=y
# CONFIG_CHROME_PLATFORMS is not set
CONFIG_MELLANOX_PLATFORM=y
@@ -6100,9 +6080,14 @@ CONFIG_IOMMU_SUPPORT=y
#
# Generic IOMMU Pagetable Support
#
+
+#
+# Generic PASID table support
+#
# CONFIG_IOMMU_DEBUGFS is not set
CONFIG_IOMMU_DEFAULT_PASSTHROUGH=y
CONFIG_IOMMU_IOVA=y
+# CONFIG_IOMMU_PROCESS is not set
CONFIG_AMD_IOMMU=y
CONFIG_AMD_IOMMU_V2=m
CONFIG_DMAR_TABLE=y
@@ -6111,6 +6096,7 @@ CONFIG_INTEL_IOMMU=y
# CONFIG_INTEL_IOMMU_DEFAULT_ON is not set
CONFIG_INTEL_IOMMU_FLOPPY_WA=y
CONFIG_IRQ_REMAP=y
+# CONFIG_SMMU_BYPASS_DEV is not set
#
# Remoteproc drivers
@@ -6153,6 +6139,8 @@ CONFIG_IRQ_REMAP=y
# Xilinx SoC drivers
#
# CONFIG_XILINX_VCU is not set
+CONFIG_SOC_HISILICON_LBC=m
+CONFIG_SOC_HISILICON_SYSCTL=m
# CONFIG_PM_DEVFREQ is not set
# CONFIG_EXTCON is not set
# CONFIG_MEMORY is not set
@@ -6581,6 +6569,7 @@ CONFIG_NVMEM=y
# CONFIG_FPGA is not set
# CONFIG_UNISYS_VISORBUS is not set
# CONFIG_SIOX is not set
+# CONFIG_UACCE is not set
# CONFIG_SLIMBUS is not set
#
@@ -6676,7 +6665,6 @@ CONFIG_VFAT_FS=m
CONFIG_FAT_DEFAULT_CODEPAGE=437
CONFIG_FAT_DEFAULT_IOCHARSET="ascii"
# CONFIG_FAT_DEFAULT_UTF8 is not set
-# CONFIG_NTFS_FS is not set
#
# Pseudo filesystems
@@ -6927,6 +6915,7 @@ CONFIG_IMA_APPRAISE_BOOTPARAM=y
CONFIG_IMA_TRUSTED_KEYRING=y
# CONFIG_IMA_BLACKLIST_KEYRING is not set
# CONFIG_IMA_LOAD_X509 is not set
+# CONFIG_IMA_DIGEST_LIST is not set
CONFIG_EVM=y
CONFIG_EVM_ATTR_FSUUID=y
# CONFIG_EVM_ADD_XATTRS is not set
@@ -7142,13 +7131,15 @@ CONFIG_CRYPTO_DEV_CHELSIO=m
CONFIG_CHELSIO_IPSEC_INLINE=y
# CONFIG_CRYPTO_DEV_CHELSIO_TLS is not set
CONFIG_CRYPTO_DEV_VIRTIO=m
-# CONFIG_CRYPTO_DEV_HISILICON is not set
CONFIG_ASYMMETRIC_KEY_TYPE=y
CONFIG_ASYMMETRIC_PUBLIC_KEY_SUBTYPE=y
CONFIG_X509_CERTIFICATE_PARSER=y
CONFIG_PKCS7_MESSAGE_PARSER=y
# CONFIG_PKCS7_TEST_KEY is not set
CONFIG_SIGNED_PE_FILE_VERIFICATION=y
+# CONFIG_PGP_LIBRARY is not set
+# CONFIG_PGP_KEY_PARSER is not set
+# CONFIG_PGP_PRELOAD is not set
#
# Certificates for signature checking
@@ -7160,6 +7151,7 @@ CONFIG_SYSTEM_TRUSTED_KEYS=""
# CONFIG_SECONDARY_TRUSTED_KEYRING is not set
CONFIG_SYSTEM_BLACKLIST_KEYRING=y
CONFIG_SYSTEM_BLACKLIST_HASH_LIST=""
+# CONFIG_PGP_PRELOAD_PUBLIC_KEYS is not set
CONFIG_BINARY_PRINTF=y
#
@@ -7191,6 +7183,7 @@ CONFIG_CRC32_SLICEBY8=y
CONFIG_CRC7=m
CONFIG_LIBCRC32C=m
CONFIG_CRC8=m
+CONFIG_XXHASH=y
# CONFIG_RANDOM32_SELFTEST is not set
CONFIG_ZLIB_INFLATE=y
CONFIG_ZLIB_DEFLATE=y
@@ -7325,6 +7318,8 @@ CONFIG_DEBUG_STACKOVERFLOW=y
CONFIG_HAVE_ARCH_KASAN=y
# CONFIG_KASAN is not set
CONFIG_ARCH_HAS_KCOV=y
+CONFIG_CC_HAS_SANCOV_TRACE_PC=y
+# CONFIG_KCOV is not set
CONFIG_DEBUG_SHIRQ=y
#
diff --git a/arch/x86/configs/openeuler_defconfig b/arch/x86/configs/openeuler_defconfig
index 8a05478477dc..4c9de1198798 100644
--- a/arch/x86/configs/openeuler_defconfig
+++ b/arch/x86/configs/openeuler_defconfig
@@ -1,5 +1,13 @@
+#
+# Automatically generated file; DO NOT EDIT.
+# Linux/x86 4.19.138 Kernel Configuration
+#
+
+#
+# Compiler: gcc 7.5.0
+#
CONFIG_CC_IS_GCC=y
-CONFIG_GCC_VERSION=50400
+CONFIG_GCC_VERSION=70500
CONFIG_CLANG_VERSION=0
CONFIG_CC_HAS_ASM_GOTO=y
CONFIG_IRQ_WORK=y
@@ -151,8 +159,8 @@ CONFIG_IPC_NS=y
CONFIG_USER_NS=y
CONFIG_PID_NS=y
CONFIG_NET_NS=y
-CONFIG_CHECKPOINT_RESTORE=y
CONFIG_SCHED_STEAL=y
+CONFIG_CHECKPOINT_RESTORE=y
CONFIG_SCHED_AUTOGROUP=y
# CONFIG_SYSFS_DEPRECATED is not set
CONFIG_RELAY=y
@@ -303,6 +311,7 @@ CONFIG_XEN_SAVE_RESTORE=y
# CONFIG_XEN_DEBUG_FS is not set
# CONFIG_XEN_PVH is not set
CONFIG_KVM_GUEST=y
+CONFIG_ARCH_CPUIDLE_HALTPOLL=y
# CONFIG_KVM_DEBUG_FS is not set
CONFIG_PARAVIRT_TIME_ACCOUNTING=y
CONFIG_PARAVIRT_CLOCK=y
@@ -322,6 +331,7 @@ CONFIG_X86_MINIMUM_CPU_FAMILY=64
CONFIG_X86_DEBUGCTLMSR=y
CONFIG_CPU_SUP_INTEL=y
CONFIG_CPU_SUP_AMD=y
+CONFIG_CPU_SUP_HYGON=y
CONFIG_CPU_SUP_CENTAUR=y
CONFIG_HPET_TIMER=y
CONFIG_HPET_EMULATE_RTC=y
@@ -700,17 +710,15 @@ CONFIG_FW_CFG_SYSFS=y
#
# EFI (Extensible Firmware Interface) Support
#
-#CONFIG_EFI_VARS is not set
+# CONFIG_EFI_VARS is not set
CONFIG_EFI_ESRT=y
CONFIG_EFI_RUNTIME_MAP=y
# CONFIG_EFI_FAKE_MEMMAP is not set
CONFIG_EFI_RUNTIME_WRAPPERS=y
-# CONFIG_EFI_BOOTLOADER_CONTROL is not set
# CONFIG_EFI_CAPSULE_LOADER is not set
# CONFIG_EFI_TEST is not set
CONFIG_APPLE_PROPERTIES=y
# CONFIG_RESET_ATTACK_MITIGATION is not set
-CONFIG_EFI_CUSTOM_SSDT_OVERLAYS=y
CONFIG_UEFI_CPER=y
CONFIG_UEFI_CPER_X86=y
CONFIG_EFI_DEV_PATH_PARSER=y
@@ -731,6 +739,7 @@ CONFIG_KVM_VFIO=y
CONFIG_KVM_GENERIC_DIRTYLOG_READ_PROTECT=y
CONFIG_KVM_COMPAT=y
CONFIG_HAVE_KVM_IRQ_BYPASS=y
+CONFIG_HAVE_KVM_NO_POLL=y
CONFIG_VIRTUALIZATION=y
CONFIG_KVM=m
CONFIG_KVM_INTEL=m
@@ -832,8 +841,6 @@ CONFIG_ARCH_HAS_STRICT_KERNEL_RWX=y
CONFIG_STRICT_KERNEL_RWX=y
CONFIG_ARCH_HAS_STRICT_MODULE_RWX=y
CONFIG_STRICT_MODULE_RWX=y
-CONFIG_ARCH_HAS_REFCOUNT=y
-# CONFIG_REFCOUNT_FULL is not set
CONFIG_HAVE_ARCH_PREL32_RELOCATIONS=y
CONFIG_ARCH_USE_MEMREMAP_PROT=y
@@ -842,9 +849,8 @@ CONFIG_ARCH_USE_MEMREMAP_PROT=y
#
# CONFIG_GCOV_KERNEL is not set
CONFIG_ARCH_HAS_GCOV_PROFILE_ALL=y
-CONFIG_PLUGIN_HOSTCC="g++"
+CONFIG_PLUGIN_HOSTCC=""
CONFIG_HAVE_GCC_PLUGINS=y
-# CONFIG_GCC_PLUGINS is not set
CONFIG_RT_MUTEXES=y
CONFIG_BASE_SMALL=0
CONFIG_MODULES=y
@@ -2128,7 +2134,6 @@ CONFIG_BLK_DEV_SD=m
CONFIG_CHR_DEV_ST=m
# CONFIG_CHR_DEV_OSST is not set
CONFIG_BLK_DEV_SR=m
-CONFIG_BLK_DEV_SR_VENDOR=y
CONFIG_CHR_DEV_SG=m
CONFIG_CHR_DEV_SCH=m
CONFIG_SCSI_ENCLOSURE=m
@@ -2509,6 +2514,8 @@ CONFIG_BE2NET_LANCER=y
CONFIG_BE2NET_SKYHAWK=y
# CONFIG_NET_VENDOR_EZCHIP is not set
# CONFIG_NET_VENDOR_HP is not set
+CONFIG_NET_VENDOR_HUAWEI=y
+# CONFIG_HINIC is not set
CONFIG_BMA=m
# CONFIG_NET_VENDOR_I825XX is not set
CONFIG_NET_VENDOR_INTEL=y
@@ -3609,6 +3616,7 @@ CONFIG_GPIO_ICH=m
# PCI GPIO expanders
#
# CONFIG_GPIO_AMD8111 is not set
+# CONFIG_GPIO_BT8XX is not set
# CONFIG_GPIO_ML_IOH is not set
# CONFIG_GPIO_PCI_IDIO_16 is not set
# CONFIG_GPIO_PCIE_IDIO_24 is not set
@@ -4085,9 +4093,6 @@ CONFIG_VIDEO_V4L2=m
# CONFIG_VIDEO_ADV_DEBUG is not set
# CONFIG_VIDEO_FIXED_MINOR_RANGES is not set
CONFIG_VIDEO_TUNER=m
-CONFIG_VIDEOBUF_GEN=m
-CONFIG_VIDEOBUF_DMA_SG=m
-CONFIG_VIDEOBUF_VMALLOC=m
CONFIG_DVB_CORE=m
# CONFIG_DVB_MMAP is not set
CONFIG_DVB_NET=y
@@ -4161,7 +4166,6 @@ CONFIG_USB_PWC=m
# CONFIG_USB_PWC_DEBUG is not set
CONFIG_USB_PWC_INPUT_EVDEV=y
# CONFIG_VIDEO_CPIA2 is not set
-CONFIG_USB_ZR364XX=m
CONFIG_USB_STKWEBCAM=m
CONFIG_USB_S2255=m
# CONFIG_VIDEO_USBTV is not set
@@ -4184,13 +4188,6 @@ CONFIG_VIDEO_USBVISION=m
CONFIG_VIDEO_AU0828=m
CONFIG_VIDEO_AU0828_V4L2=y
# CONFIG_VIDEO_AU0828_RC is not set
-CONFIG_VIDEO_CX231XX=m
-CONFIG_VIDEO_CX231XX_RC=y
-CONFIG_VIDEO_CX231XX_ALSA=m
-CONFIG_VIDEO_CX231XX_DVB=m
-CONFIG_VIDEO_TM6000=m
-CONFIG_VIDEO_TM6000_ALSA=m
-CONFIG_VIDEO_TM6000_DVB=m
#
# Digital TV USB devices
@@ -4275,16 +4272,11 @@ CONFIG_VIDEO_IVTV=m
# CONFIG_VIDEO_IVTV_DEPRECATED_IOCTLS is not set
# CONFIG_VIDEO_IVTV_ALSA is not set
CONFIG_VIDEO_FB_IVTV=m
-# CONFIG_VIDEO_HEXIUM_GEMINI is not set
-# CONFIG_VIDEO_HEXIUM_ORION is not set
-# CONFIG_VIDEO_MXB is not set
# CONFIG_VIDEO_DT3155 is not set
#
# Media capture/analog/hybrid TV support
#
-CONFIG_VIDEO_CX18=m
-CONFIG_VIDEO_CX18_ALSA=m
CONFIG_VIDEO_CX23885=m
CONFIG_MEDIA_ALTERA_CI=m
# CONFIG_VIDEO_CX25821 is not set
@@ -4294,8 +4286,6 @@ CONFIG_VIDEO_CX88_BLACKBIRD=m
CONFIG_VIDEO_CX88_DVB=m
# CONFIG_VIDEO_CX88_ENABLE_VP3054 is not set
CONFIG_VIDEO_CX88_MPEG=m
-CONFIG_VIDEO_BT848=m
-CONFIG_DVB_BT8XX=m
CONFIG_VIDEO_SAA7134=m
CONFIG_VIDEO_SAA7134_ALSA=m
CONFIG_VIDEO_SAA7134_RC=y
@@ -4305,14 +4295,9 @@ CONFIG_VIDEO_SAA7164=m
#
# Media digital TV PCI Adapters
#
-CONFIG_DVB_AV7110_IR=y
-CONFIG_DVB_AV7110=m
-CONFIG_DVB_AV7110_OSD=y
CONFIG_DVB_BUDGET_CORE=m
CONFIG_DVB_BUDGET=m
CONFIG_DVB_BUDGET_CI=m
-CONFIG_DVB_BUDGET_AV=m
-CONFIG_DVB_BUDGET_PATCH=m
CONFIG_DVB_B2C2_FLEXCOP_PCI=m
# CONFIG_DVB_B2C2_FLEXCOP_PCI_DEBUG is not set
CONFIG_DVB_PLUTO2=m
@@ -4379,7 +4364,6 @@ CONFIG_VIDEOBUF2_DMA_SG=m
CONFIG_VIDEOBUF2_DVB=m
CONFIG_DVB_B2C2_FLEXCOP=m
CONFIG_VIDEO_SAA7146=m
-CONFIG_VIDEO_SAA7146_VV=m
CONFIG_SMS_SIANO_MDTV=m
CONFIG_SMS_SIANO_RC=y
# CONFIG_SMS_SIANO_DEBUGFS is not set
@@ -4394,11 +4378,8 @@ CONFIG_VIDEO_IR_I2C=m
#
# Audio decoders, processors and mixers
#
-CONFIG_VIDEO_TVAUDIO=m
-CONFIG_VIDEO_TDA7432=m
CONFIG_VIDEO_MSP3400=m
CONFIG_VIDEO_CS3308=m
-CONFIG_VIDEO_CS5345=m
CONFIG_VIDEO_CS53L32A=m
CONFIG_VIDEO_WM8775=m
CONFIG_VIDEO_WM8739=m
@@ -4522,7 +4503,6 @@ CONFIG_DVB_MN88473=m
#
# DVB-S (satellite) frontends
#
-CONFIG_DVB_CX24110=m
CONFIG_DVB_CX24123=m
CONFIG_DVB_MT312=m
CONFIG_DVB_ZL10036=m
@@ -4535,12 +4515,10 @@ CONFIG_DVB_STV6110=m
CONFIG_DVB_STV0900=m
CONFIG_DVB_TDA8083=m
CONFIG_DVB_TDA10086=m
-CONFIG_DVB_TDA8261=m
CONFIG_DVB_VES1X93=m
CONFIG_DVB_TUNER_ITD1000=m
CONFIG_DVB_TUNER_CX24113=m
CONFIG_DVB_TDA826X=m
-CONFIG_DVB_TUA6100=m
CONFIG_DVB_CX24116=m
CONFIG_DVB_CX24117=m
CONFIG_DVB_CX24120=m
@@ -4553,8 +4531,6 @@ CONFIG_DVB_TDA10071=m
#
# DVB-T (terrestrial) frontends
#
-CONFIG_DVB_SP8870=m
-CONFIG_DVB_SP887X=m
CONFIG_DVB_CX22700=m
CONFIG_DVB_CX22702=m
CONFIG_DVB_DRXD=m
@@ -4590,7 +4566,6 @@ CONFIG_DVB_STV0297=m
# ATSC (North American/Korean Terrestrial/Cable DTV) frontends
#
CONFIG_DVB_NXT200X=m
-CONFIG_DVB_OR51211=m
CONFIG_DVB_OR51132=m
CONFIG_DVB_BCM3510=m
CONFIG_DVB_LGDT330X=m
@@ -6110,6 +6085,7 @@ CONFIG_IOMMU_SUPPORT=y
# CONFIG_IOMMU_DEBUGFS is not set
CONFIG_IOMMU_DEFAULT_PASSTHROUGH=y
CONFIG_IOMMU_IOVA=y
+# CONFIG_IOMMU_PROCESS is not set
CONFIG_AMD_IOMMU=y
CONFIG_AMD_IOMMU_V2=m
CONFIG_DMAR_TABLE=y
@@ -6894,7 +6870,7 @@ CONFIG_SECURITY_NETWORK=y
CONFIG_PAGE_TABLE_ISOLATION=y
CONFIG_SECURITY_INFINIBAND=y
CONFIG_SECURITY_NETWORK_XFRM=y
-# CONFIG_SECURITY_PATH is not set
+CONFIG_SECURITY_PATH=y
CONFIG_INTEL_TXT=y
CONFIG_LSM_MMAP_MIN_ADDR=65535
CONFIG_HAVE_HARDENED_USERCOPY_ALLOCATOR=y
@@ -7349,6 +7325,8 @@ CONFIG_DEBUG_STACKOVERFLOW=y
CONFIG_HAVE_ARCH_KASAN=y
# CONFIG_KASAN is not set
CONFIG_ARCH_HAS_KCOV=y
+CONFIG_CC_HAS_SANCOV_TRACE_PC=y
+# CONFIG_KCOV is not set
CONFIG_DEBUG_SHIRQ=y
#
diff --git a/arch/x86/configs/storage_ci_defconfig b/arch/x86/configs/storage_ci_defconfig
index c7344e20d964..889f42e8a968 100644
--- a/arch/x86/configs/storage_ci_defconfig
+++ b/arch/x86/configs/storage_ci_defconfig
@@ -1,14 +1,15 @@
#
# Automatically generated file; DO NOT EDIT.
-# Linux/x86 4.19.44 Kernel Configuration
+# Linux/x86 4.19.138 Kernel Configuration
#
#
-# Compiler: gcc (Ubuntu 5.4.0-6ubuntu1~16.04.10) 5.4.0 20160609
+# Compiler: gcc (Ubuntu 7.5.0-6ubuntu2) 7.5.0
#
CONFIG_CC_IS_GCC=y
-CONFIG_GCC_VERSION=50400
+CONFIG_GCC_VERSION=70500
CONFIG_CLANG_VERSION=0
+CONFIG_CC_HAS_ASM_GOTO=y
CONFIG_CONSTRUCTORS=y
CONFIG_IRQ_WORK=y
CONFIG_BUILDTIME_EXTABLE_SORT=y
@@ -47,6 +48,7 @@ CONFIG_HAVE_ARCH_AUDITSYSCALL=y
CONFIG_AUDITSYSCALL=y
CONFIG_AUDIT_WATCH=y
CONFIG_AUDIT_TREE=y
+CONFIG_KTASK=y
#
# IRQ subsystem
@@ -157,8 +159,8 @@ CONFIG_IPC_NS=y
CONFIG_USER_NS=y
CONFIG_PID_NS=y
CONFIG_NET_NS=y
-# CONFIG_CHECKPOINT_RESTORE is not set
CONFIG_SCHED_STEAL=y
+# CONFIG_CHECKPOINT_RESTORE is not set
CONFIG_SCHED_AUTOGROUP=y
# CONFIG_SYSFS_DEPRECATED is not set
CONFIG_RELAY=y
@@ -170,6 +172,7 @@ CONFIG_RD_LZMA=y
CONFIG_RD_XZ=y
CONFIG_RD_LZO=y
CONFIG_RD_LZ4=y
+CONFIG_INITRAMFS_FILE_METADATA=""
CONFIG_CC_OPTIMIZE_FOR_PERFORMANCE=y
# CONFIG_CC_OPTIMIZE_FOR_SIZE is not set
CONFIG_SYSCTL=y
@@ -298,6 +301,7 @@ CONFIG_PARAVIRT=y
# CONFIG_PARAVIRT_SPINLOCKS is not set
# CONFIG_XEN is not set
CONFIG_KVM_GUEST=y
+CONFIG_ARCH_CPUIDLE_HALTPOLL=y
# CONFIG_KVM_DEBUG_FS is not set
CONFIG_PARAVIRT_TIME_ACCOUNTING=y
CONFIG_PARAVIRT_CLOCK=y
@@ -317,6 +321,7 @@ CONFIG_X86_MINIMUM_CPU_FAMILY=64
CONFIG_X86_DEBUGCTLMSR=y
CONFIG_CPU_SUP_INTEL=y
CONFIG_CPU_SUP_AMD=y
+CONFIG_CPU_SUP_HYGON=y
CONFIG_CPU_SUP_CENTAUR=y
CONFIG_HPET_TIMER=y
CONFIG_HPET_EMULATE_RTC=y
@@ -391,6 +396,9 @@ CONFIG_X86_SMAP=y
CONFIG_X86_INTEL_UMIP=y
CONFIG_X86_INTEL_MPX=y
CONFIG_X86_INTEL_MEMORY_PROTECTION_KEYS=y
+CONFIG_X86_INTEL_TSX_MODE_OFF=y
+# CONFIG_X86_INTEL_TSX_MODE_ON is not set
+# CONFIG_X86_INTEL_TSX_MODE_AUTO is not set
CONFIG_EFI=y
CONFIG_EFI_STUB=y
CONFIG_EFI_MIXED=y
@@ -422,6 +430,7 @@ CONFIG_LEGACY_VSYSCALL_EMULATE=y
# CONFIG_CMDLINE_BOOL is not set
CONFIG_MODIFY_LDT_SYSCALL=y
CONFIG_HAVE_LIVEPATCH_FTRACE=y
+CONFIG_HAVE_LIVEPATCH_WO_FTRACE=y
#
# Enable Livepatch
@@ -551,6 +560,8 @@ CONFIG_CPU_IDLE=y
# CONFIG_CPU_IDLE_GOV_LADDER is not set
CONFIG_CPU_IDLE_GOV_MENU=y
CONFIG_CPU_IDLE_GOV_TEO=y
+# CONFIG_CPU_IDLE_GOV_HALTPOLL is not set
+CONFIG_HALTPOLL_CPUIDLE=y
CONFIG_INTEL_IDLE=y
#
@@ -607,6 +618,7 @@ CONFIG_HOTPLUG_PCI_ACPI=y
# DesignWare PCI Core Support
#
# CONFIG_PCIE_DW_PLAT_HOST is not set
+CONFIG_HISILICON_PCIE_CAE=m
#
# PCI Endpoint
@@ -627,7 +639,6 @@ CONFIG_AMD_NB=y
# Binary Emulations
#
CONFIG_IA32_EMULATION=y
-# CONFIG_IA32_AOUT is not set
# CONFIG_X86_X32 is not set
CONFIG_COMPAT_32=y
CONFIG_COMPAT=y
@@ -646,7 +657,6 @@ CONFIG_FIRMWARE_MEMMAP=y
# CONFIG_DMIID is not set
# CONFIG_DMI_SYSFS is not set
CONFIG_DMI_SCAN_MACHINE_NON_EFI_FALLBACK=y
-CONFIG_ISCSI_IBFT_FIND=y
# CONFIG_ISCSI_IBFT is not set
# CONFIG_FW_CFG_SYSFS is not set
# CONFIG_GOOGLE_FIRMWARE is not set
@@ -663,7 +673,6 @@ CONFIG_EFI_RUNTIME_WRAPPERS=y
# CONFIG_EFI_TEST is not set
# CONFIG_APPLE_PROPERTIES is not set
# CONFIG_RESET_ATTACK_MITIGATION is not set
-CONFIG_EFI_CUSTOM_SSDT_OVERLAYS=y
CONFIG_UEFI_CPER=y
CONFIG_UEFI_CPER_X86=y
@@ -760,8 +769,6 @@ CONFIG_ARCH_HAS_STRICT_KERNEL_RWX=y
CONFIG_STRICT_KERNEL_RWX=y
CONFIG_ARCH_HAS_STRICT_MODULE_RWX=y
CONFIG_STRICT_MODULE_RWX=y
-CONFIG_ARCH_HAS_REFCOUNT=y
-# CONFIG_REFCOUNT_FULL is not set
CONFIG_HAVE_ARCH_PREL32_RELOCATIONS=y
#
@@ -1348,7 +1355,6 @@ CONFIG_BLK_DEV_SD=y
# CONFIG_CHR_DEV_ST is not set
# CONFIG_CHR_DEV_OSST is not set
CONFIG_BLK_DEV_SR=y
-CONFIG_BLK_DEV_SR_VENDOR=y
CONFIG_CHR_DEV_SG=y
# CONFIG_CHR_DEV_SCH is not set
CONFIG_SCSI_CONSTANTS=y
@@ -1670,6 +1676,8 @@ CONFIG_NET_VENDOR_EMULEX=y
CONFIG_NET_VENDOR_EZCHIP=y
CONFIG_NET_VENDOR_HP=y
# CONFIG_HP100 is not set
+CONFIG_NET_VENDOR_HUAWEI=y
+# CONFIG_BMA is not set
CONFIG_NET_VENDOR_I825XX=y
CONFIG_NET_VENDOR_INTEL=y
# CONFIG_E100 is not set
@@ -2049,10 +2057,10 @@ CONFIG_DRM_PANEL_ORIENTATION_QUIRKS=y
#
# Frame buffer Devices
#
-CONFIG_FB=y
-# CONFIG_FIRMWARE_EDID is not set
CONFIG_FB_CMDLINE=y
CONFIG_FB_NOTIFY=y
+CONFIG_FB=y
+# CONFIG_FIRMWARE_EDID is not set
CONFIG_FB_BOOT_VESA_SUPPORT=y
CONFIG_FB_CFB_FILLRECT=y
CONFIG_FB_CFB_COPYAREA=y
@@ -2537,7 +2545,6 @@ CONFIG_VFAT_FS=y
CONFIG_FAT_DEFAULT_CODEPAGE=437
CONFIG_FAT_DEFAULT_IOCHARSET="iso8859-1"
# CONFIG_FAT_DEFAULT_UTF8 is not set
-# CONFIG_NTFS_FS is not set
#
# Pseudo filesystems
@@ -2962,6 +2969,9 @@ CONFIG_ASYMMETRIC_KEY_TYPE=y
CONFIG_ASYMMETRIC_PUBLIC_KEY_SUBTYPE=y
CONFIG_X509_CERTIFICATE_PARSER=y
CONFIG_PKCS7_MESSAGE_PARSER=y
+# CONFIG_PGP_LIBRARY is not set
+# CONFIG_PGP_KEY_PARSER is not set
+# CONFIG_PGP_PRELOAD is not set
#
# Certificates for signature checking
@@ -2971,6 +2981,7 @@ CONFIG_SYSTEM_TRUSTED_KEYS=""
# CONFIG_SYSTEM_EXTRA_CERTIFICATE is not set
# CONFIG_SECONDARY_TRUSTED_KEYRING is not set
# CONFIG_SYSTEM_BLACKLIST_KEYRING is not set
+# CONFIG_PGP_PRELOAD_PUBLIC_KEYS is not set
CONFIG_BINARY_PRINTF=y
#
@@ -3002,6 +3013,7 @@ CONFIG_CRC32_SLICEBY8=y
# CONFIG_CRC7 is not set
CONFIG_LIBCRC32C=y
# CONFIG_CRC8 is not set
+CONFIG_XXHASH=y
# CONFIG_RANDOM32_SELFTEST is not set
CONFIG_ZLIB_INFLATE=y
CONFIG_ZLIB_DEFLATE=y
@@ -3128,6 +3140,8 @@ CONFIG_DEBUG_STACKOVERFLOW=y
CONFIG_HAVE_ARCH_KASAN=y
# CONFIG_KASAN is not set
CONFIG_ARCH_HAS_KCOV=y
+CONFIG_CC_HAS_SANCOV_TRACE_PC=y
+# CONFIG_KCOV is not set
CONFIG_DEBUG_SHIRQ=y
#
diff --git a/arch/x86/configs/syzkaller_defconfig b/arch/x86/configs/syzkaller_defconfig
index fe45137f8529..061f2fe87382 100644
--- a/arch/x86/configs/syzkaller_defconfig
+++ b/arch/x86/configs/syzkaller_defconfig
@@ -1,14 +1,15 @@
#
# Automatically generated file; DO NOT EDIT.
-# Linux/x86 4.19.32 Kernel Configuration
+# Linux/x86 4.19.138 Kernel Configuration
#
#
-# Compiler: gcc (Ubuntu 7.3.0-27ubuntu1~18.04) 7.3.0
+# Compiler: gcc (Ubuntu 7.5.0-6ubuntu2) 7.5.0
#
CONFIG_CC_IS_GCC=y
-CONFIG_GCC_VERSION=70300
+CONFIG_GCC_VERSION=70500
CONFIG_CLANG_VERSION=0
+CONFIG_CC_HAS_ASM_GOTO=y
CONFIG_CONSTRUCTORS=y
CONFIG_IRQ_WORK=y
CONFIG_BUILDTIME_EXTABLE_SORT=y
@@ -47,6 +48,7 @@ CONFIG_HAVE_ARCH_AUDITSYSCALL=y
CONFIG_AUDITSYSCALL=y
CONFIG_AUDIT_WATCH=y
CONFIG_AUDIT_TREE=y
+CONFIG_KTASK=y
#
# IRQ subsystem
@@ -158,6 +160,7 @@ CONFIG_IPC_NS=y
CONFIG_USER_NS=y
CONFIG_PID_NS=y
CONFIG_NET_NS=y
+# CONFIG_SCHED_STEAL is not set
# CONFIG_CHECKPOINT_RESTORE is not set
CONFIG_SCHED_AUTOGROUP=y
# CONFIG_SYSFS_DEPRECATED is not set
@@ -170,6 +173,7 @@ CONFIG_RD_LZMA=y
CONFIG_RD_XZ=y
CONFIG_RD_LZO=y
CONFIG_RD_LZ4=y
+CONFIG_INITRAMFS_FILE_METADATA=""
CONFIG_CC_OPTIMIZE_FOR_PERFORMANCE=y
# CONFIG_CC_OPTIMIZE_FOR_SIZE is not set
CONFIG_SYSCTL=y
@@ -311,6 +315,7 @@ CONFIG_XEN_SAVE_RESTORE=y
# CONFIG_XEN_DEBUG_FS is not set
# CONFIG_XEN_PVH is not set
CONFIG_KVM_GUEST=y
+CONFIG_ARCH_CPUIDLE_HALTPOLL=y
# CONFIG_KVM_DEBUG_FS is not set
CONFIG_PARAVIRT_TIME_ACCOUNTING=y
CONFIG_PARAVIRT_CLOCK=y
@@ -330,6 +335,7 @@ CONFIG_X86_MINIMUM_CPU_FAMILY=64
CONFIG_X86_DEBUGCTLMSR=y
CONFIG_CPU_SUP_INTEL=y
CONFIG_CPU_SUP_AMD=y
+CONFIG_CPU_SUP_HYGON=y
CONFIG_CPU_SUP_CENTAUR=y
CONFIG_HPET_TIMER=y
CONFIG_HPET_EMULATE_RTC=y
@@ -377,6 +383,7 @@ CONFIG_X86_DIRECT_GBPAGES=y
CONFIG_ARCH_HAS_MEM_ENCRYPT=y
# CONFIG_AMD_MEM_ENCRYPT is not set
CONFIG_NUMA=y
+CONFIG_NUMA_AWARE_SPINLOCKS=y
CONFIG_AMD_NUMA=y
CONFIG_X86_64_ACPI_NUMA=y
CONFIG_NODES_SPAN_OTHER_NODES=y
@@ -403,6 +410,9 @@ CONFIG_X86_SMAP=y
CONFIG_X86_INTEL_UMIP=y
CONFIG_X86_INTEL_MPX=y
CONFIG_X86_INTEL_MEMORY_PROTECTION_KEYS=y
+CONFIG_X86_INTEL_TSX_MODE_OFF=y
+# CONFIG_X86_INTEL_TSX_MODE_ON is not set
+# CONFIG_X86_INTEL_TSX_MODE_AUTO is not set
CONFIG_EFI=y
CONFIG_EFI_STUB=y
CONFIG_EFI_MIXED=y
@@ -433,6 +443,7 @@ CONFIG_LEGACY_VSYSCALL_EMULATE=y
# CONFIG_CMDLINE_BOOL is not set
CONFIG_MODIFY_LDT_SYSCALL=y
CONFIG_HAVE_LIVEPATCH_FTRACE=y
+CONFIG_HAVE_LIVEPATCH_WO_FTRACE=y
#
# Enable Livepatch
@@ -562,6 +573,9 @@ CONFIG_X86_INTEL_PSTATE=y
CONFIG_CPU_IDLE=y
# CONFIG_CPU_IDLE_GOV_LADDER is not set
CONFIG_CPU_IDLE_GOV_MENU=y
+# CONFIG_CPU_IDLE_GOV_TEO is not set
+# CONFIG_CPU_IDLE_GOV_HALTPOLL is not set
+CONFIG_HALTPOLL_CPUIDLE=y
CONFIG_INTEL_IDLE=y
#
@@ -620,6 +634,7 @@ CONFIG_HOTPLUG_PCI_ACPI=y
# DesignWare PCI Core Support
#
# CONFIG_PCIE_DW_PLAT_HOST is not set
+CONFIG_HISILICON_PCIE_CAE=m
#
# PCI Endpoint
@@ -647,7 +662,6 @@ CONFIG_CARDBUS=y
# Binary Emulations
#
CONFIG_IA32_EMULATION=y
-# CONFIG_IA32_AOUT is not set
# CONFIG_X86_X32 is not set
CONFIG_COMPAT_32=y
CONFIG_COMPAT=y
@@ -666,7 +680,6 @@ CONFIG_FIRMWARE_MEMMAP=y
CONFIG_DMIID=y
CONFIG_DMI_SYSFS=y
CONFIG_DMI_SCAN_MACHINE_NON_EFI_FALLBACK=y
-CONFIG_ISCSI_IBFT_FIND=y
# CONFIG_ISCSI_IBFT is not set
# CONFIG_FW_CFG_SYSFS is not set
# CONFIG_GOOGLE_FIRMWARE is not set
@@ -782,8 +795,6 @@ CONFIG_ARCH_HAS_STRICT_KERNEL_RWX=y
CONFIG_STRICT_KERNEL_RWX=y
CONFIG_ARCH_HAS_STRICT_MODULE_RWX=y
CONFIG_STRICT_MODULE_RWX=y
-CONFIG_ARCH_HAS_REFCOUNT=y
-# CONFIG_REFCOUNT_FULL is not set
CONFIG_HAVE_ARCH_PREL32_RELOCATIONS=y
#
@@ -1610,6 +1621,7 @@ CONFIG_IPVLAN=y
# CONFIG_IPVTAP is not set
# CONFIG_VXLAN is not set
# CONFIG_GENEVE is not set
+# CONFIG_GTP is not set
# CONFIG_MACSEC is not set
# CONFIG_NETCONSOLE is not set
CONFIG_TUN=y
@@ -1694,6 +1706,9 @@ CONFIG_NET_VENDOR_EMULEX=y
# CONFIG_BE2NET is not set
CONFIG_NET_VENDOR_EZCHIP=y
# CONFIG_NET_VENDOR_HP is not set
+CONFIG_NET_VENDOR_HUAWEI=y
+# CONFIG_HINIC is not set
+# CONFIG_BMA is not set
# CONFIG_NET_VENDOR_I825XX is not set
CONFIG_NET_VENDOR_INTEL=y
# CONFIG_E100 is not set
@@ -1795,7 +1810,7 @@ CONFIG_SWPHY=y
#
# CONFIG_AMD_PHY is not set
# CONFIG_AQUANTIA_PHY is not set
-# CONFIG_ASIX_PHY is not set
+# CONFIG_AX88796B_PHY is not set
# CONFIG_AT803X_PHY is not set
# CONFIG_BCM7XXX_PHY is not set
# CONFIG_BCM87XX_PHY is not set
@@ -2039,6 +2054,7 @@ CONFIG_SERIAL_NONSTANDARD=y
# CONFIG_N_HDLC is not set
# CONFIG_N_GSM is not set
# CONFIG_TRACE_SINK is not set
+CONFIG_LDISC_AUTOLOAD=y
CONFIG_DEVMEM=y
# CONFIG_DEVKMEM is not set
@@ -2098,7 +2114,6 @@ CONFIG_HW_RANDOM_INTEL=y
CONFIG_HW_RANDOM_AMD=y
CONFIG_HW_RANDOM_VIA=y
CONFIG_NVRAM=y
-# CONFIG_R3964 is not set
# CONFIG_APPLICOM is not set
# CONFIG_MWAVE is not set
CONFIG_RAW_DRIVER=y
@@ -2475,10 +2490,10 @@ CONFIG_DRM_PANEL_ORIENTATION_QUIRKS=y
#
# Frame buffer Devices
#
-CONFIG_FB=y
-# CONFIG_FIRMWARE_EDID is not set
CONFIG_FB_CMDLINE=y
CONFIG_FB_NOTIFY=y
+CONFIG_FB=y
+# CONFIG_FIRMWARE_EDID is not set
CONFIG_FB_BOOT_VESA_SUPPORT=y
CONFIG_FB_CFB_FILLRECT=y
CONFIG_FB_CFB_COPYAREA=y
@@ -2825,7 +2840,6 @@ CONFIG_USB_SERIAL_GENERIC=y
# CONFIG_USB_EMI26 is not set
# CONFIG_USB_ADUTUX is not set
# CONFIG_USB_SEVSEG is not set
-# CONFIG_USB_RIO500 is not set
# CONFIG_USB_LEGOTOWER is not set
# CONFIG_USB_LCD is not set
# CONFIG_USB_CYPRESS_CY7C63 is not set
@@ -3108,7 +3122,6 @@ CONFIG_STAGING=y
# Gasket devices
#
# CONFIG_STAGING_GASKET_FRAMEWORK is not set
-# CONFIG_XIL_AXIS_FIFO is not set
# CONFIG_EROFS_FS is not set
CONFIG_X86_PLATFORM_DEVICES=y
# CONFIG_ACER_WIRELESS is not set
@@ -3148,6 +3161,7 @@ CONFIG_PVPANIC=y
# CONFIG_SURFACE_PRO3_BUTTON is not set
# CONFIG_INTEL_PUNIT_IPC is not set
# CONFIG_INTEL_TURBO_MAX_3 is not set
+# CONFIG_INTEL_ATOMISP2_PM is not set
CONFIG_PMC_ATOM=y
# CONFIG_CHROME_PLATFORMS is not set
# CONFIG_MELLANOX_PLATFORM is not set
@@ -3176,6 +3190,10 @@ CONFIG_IOMMU_SUPPORT=y
#
# Generic IOMMU Pagetable Support
#
+
+#
+# Generic PASID table support
+#
# CONFIG_IOMMU_DEBUGFS is not set
# CONFIG_IOMMU_DEFAULT_PASSTHROUGH is not set
CONFIG_IOMMU_IOVA=y
@@ -3187,6 +3205,7 @@ CONFIG_INTEL_IOMMU=y
# CONFIG_INTEL_IOMMU_DEFAULT_ON is not set
CONFIG_INTEL_IOMMU_FLOPPY_WA=y
CONFIG_IRQ_REMAP=y
+# CONFIG_SMMU_BYPASS_DEV is not set
#
# Remoteproc drivers
@@ -3229,6 +3248,8 @@ CONFIG_IRQ_REMAP=y
# Xilinx SoC drivers
#
# CONFIG_XILINX_VCU is not set
+CONFIG_SOC_HISILICON_LBC=m
+CONFIG_SOC_HISILICON_SYSCTL=m
CONFIG_PM_DEVFREQ=y
#
@@ -3299,6 +3320,7 @@ CONFIG_NVMEM=y
CONFIG_PM_OPP=y
# CONFIG_UNISYS_VISORBUS is not set
# CONFIG_SIOX is not set
+# CONFIG_UACCE is not set
# CONFIG_SLIMBUS is not set
#
@@ -3359,7 +3381,6 @@ CONFIG_AUTOFS_FS=y
#
# CONFIG_MSDOS_FS is not set
# CONFIG_VFAT_FS is not set
-# CONFIG_NTFS_FS is not set
#
# Pseudo filesystems
@@ -3536,6 +3557,7 @@ CONFIG_IMA_APPRAISE_BOOTPARAM=y
CONFIG_IMA_TRUSTED_KEYRING=y
# CONFIG_IMA_BLACKLIST_KEYRING is not set
# CONFIG_IMA_LOAD_X509 is not set
+# CONFIG_IMA_DIGEST_LIST is not set
CONFIG_EVM=y
CONFIG_EVM_ATTR_FSUUID=y
# CONFIG_EVM_ADD_XATTRS is not set
@@ -3726,13 +3748,15 @@ CONFIG_CRYPTO_HW=y
# CONFIG_CRYPTO_DEV_QAT_C3XXXVF is not set
# CONFIG_CRYPTO_DEV_QAT_C62XVF is not set
# CONFIG_CRYPTO_DEV_NITROX_CNN55XX is not set
-# CONFIG_CRYPTO_DEV_HISILICON is not set
CONFIG_ASYMMETRIC_KEY_TYPE=y
CONFIG_ASYMMETRIC_PUBLIC_KEY_SUBTYPE=y
CONFIG_X509_CERTIFICATE_PARSER=y
CONFIG_PKCS7_MESSAGE_PARSER=y
# CONFIG_PKCS7_TEST_KEY is not set
CONFIG_SIGNED_PE_FILE_VERIFICATION=y
+# CONFIG_PGP_LIBRARY is not set
+# CONFIG_PGP_KEY_PARSER is not set
+# CONFIG_PGP_PRELOAD is not set
#
# Certificates for signature checking
@@ -3743,6 +3767,7 @@ CONFIG_SYSTEM_TRUSTED_KEYS=""
# CONFIG_SYSTEM_EXTRA_CERTIFICATE is not set
# CONFIG_SECONDARY_TRUSTED_KEYRING is not set
# CONFIG_SYSTEM_BLACKLIST_KEYRING is not set
+# CONFIG_PGP_PRELOAD_PUBLIC_KEYS is not set
CONFIG_BINARY_PRINTF=y
#
@@ -3773,6 +3798,7 @@ CONFIG_CRC32_SLICEBY8=y
# CONFIG_CRC7 is not set
# CONFIG_LIBCRC32C is not set
# CONFIG_CRC8 is not set
+CONFIG_XXHASH=y
# CONFIG_RANDOM32_SELFTEST is not set
CONFIG_ZLIB_INFLATE=y
CONFIG_ZLIB_DEFLATE=y
--
2.25.1
1
0
From: Xie XiuQi <xiexiuqi(a)huawei.com>
hulk inclusion
cagegory: feature
feature: support 1822 on x86 platform
After patch "5d57d1e24808 net/hinic: Add support for X86 Arch",
hinic driver could support x86 platform, so enable this config
by default.
Link: https://gitee.com/openeuler/kernel/issues/I1DC1F
Signed-off-by: Xie XiuQi <xiexiuqi(a)huawei.com>
Signed-off-by: Yang Yingliang <yangyingliang(a)huawei.com>
---
arch/x86/configs/hulk_defconfig | 1 +
arch/x86/configs/openeuler_defconfig | 1 +
arch/x86/configs/syzkaller_defconfig | 1 +
3 files changed, 3 insertions(+)
diff --git a/arch/x86/configs/hulk_defconfig b/arch/x86/configs/hulk_defconfig
index ddd209c39445..6a1d3307e34e 100644
--- a/arch/x86/configs/hulk_defconfig
+++ b/arch/x86/configs/hulk_defconfig
@@ -2526,6 +2526,7 @@ CONFIG_NET_VENDOR_INTEL=y
CONFIG_E1000=m
CONFIG_E1000E=m
CONFIG_E1000E_HWTS=y
+CONFIG_HINIC=m
CONFIG_IGB=m
CONFIG_IGB_HWMON=y
CONFIG_IGB_DCA=y
diff --git a/arch/x86/configs/openeuler_defconfig b/arch/x86/configs/openeuler_defconfig
index 4c9de1198798..747c6bd5967f 100644
--- a/arch/x86/configs/openeuler_defconfig
+++ b/arch/x86/configs/openeuler_defconfig
@@ -2523,6 +2523,7 @@ CONFIG_NET_VENDOR_INTEL=y
CONFIG_E1000=m
CONFIG_E1000E=m
CONFIG_E1000E_HWTS=y
+CONFIG_HINIC=m
CONFIG_IGB=m
CONFIG_IGB_HWMON=y
CONFIG_IGB_DCA=y
diff --git a/arch/x86/configs/syzkaller_defconfig b/arch/x86/configs/syzkaller_defconfig
index 061f2fe87382..ff5f843e09c4 100644
--- a/arch/x86/configs/syzkaller_defconfig
+++ b/arch/x86/configs/syzkaller_defconfig
@@ -1716,6 +1716,7 @@ CONFIG_E1000=y
CONFIG_E1000E=y
CONFIG_E1000E_HWTS=y
# CONFIG_IGB is not set
+CONFIG_HINIC=m
# CONFIG_IGBVF is not set
# CONFIG_IXGB is not set
# CONFIG_IXGBE is not set
--
2.25.1
1
0

17 Aug '20
hulk inclusion
category: bugfix
bugzilla:
CVE: NA
---------------------------
Add skcd->no_refcnt check which is missed when backporting
ad0f75e5f57c ("cgroup: fix cgroup_sk_alloc() for sk_clone_lock()").
This patch is needed in stable-4.9, stable-4.14 and stable-4.19.
Signed-off-by: Yang Yingliang <yangyingliang(a)huawei.com>
Reviewed-by: Kefeng Wang <wangkefeng.wang(a)huawei.com>
Signed-off-by: Yang Yingliang <yangyingliang(a)huawei.com>
---
kernel/cgroup/cgroup.c | 2 ++
1 file changed, 2 insertions(+)
diff --git a/kernel/cgroup/cgroup.c b/kernel/cgroup/cgroup.c
index 12fd72d94b7b..e38da89fad66 100644
--- a/kernel/cgroup/cgroup.c
+++ b/kernel/cgroup/cgroup.c
@@ -5955,6 +5955,8 @@ void cgroup_sk_clone(struct sock_cgroup_data *skcd)
{
/* Socket clone path */
if (skcd->val) {
+ if (skcd->is_data & 2)
+ return;
/*
* We might be cloning a socket which is left in an empty
* cgroup and the cgroup might have already been rmdir'd.
--
2.25.1
1
0

17 Aug '20
From: Chiqijun <chiqijun(a)huawei.com>
driver inclusion
category: bugfix
bugzilla: 4472
-----------------------------------------------------------------------
Fix misspelled word and wrong print format.
Signed-off-by: Chiqijun <chiqijun(a)huawei.com>
Reviewed-by: Zengweiliang <zengweiliang.zengweiliang(a)huawei.com>
Signed-off-by: Yang Yingliang <yangyingliang(a)huawei.com>
---
.../net/ethernet/huawei/hinic/hinic_api_cmd.c | 4 +-
drivers/net/ethernet/huawei/hinic/hinic_cfg.c | 20 +++---
.../net/ethernet/huawei/hinic/hinic_cmdq.c | 4 +-
drivers/net/ethernet/huawei/hinic/hinic_dcb.c | 34 +++++-----
drivers/net/ethernet/huawei/hinic/hinic_eqs.c | 4 +-
.../net/ethernet/huawei/hinic/hinic_ethtool.c | 20 +++---
.../net/ethernet/huawei/hinic/hinic_hwdev.c | 40 +++++------
drivers/net/ethernet/huawei/hinic/hinic_lld.c | 20 +++---
.../net/ethernet/huawei/hinic/hinic_main.c | 6 +-
.../net/ethernet/huawei/hinic/hinic_mbox.c | 9 +--
.../net/ethernet/huawei/hinic/hinic_mgmt.c | 20 +++---
.../net/ethernet/huawei/hinic/hinic_nic_cfg.c | 34 +++++-----
.../net/ethernet/huawei/hinic/hinic_nic_dbg.c | 6 +-
.../net/ethernet/huawei/hinic/hinic_nic_io.c | 2 +-
.../net/ethernet/huawei/hinic/hinic_nictool.c | 68 +++++++++----------
.../ethernet/huawei/hinic/hinic_port_cmd.h | 2 +-
.../net/ethernet/huawei/hinic/hinic_sriov.c | 4 +-
drivers/net/ethernet/huawei/hinic/hinic_tx.c | 4 +-
drivers/net/ethernet/huawei/hinic/hinic_wq.c | 2 +-
19 files changed, 154 insertions(+), 149 deletions(-)
diff --git a/drivers/net/ethernet/huawei/hinic/hinic_api_cmd.c b/drivers/net/ethernet/huawei/hinic/hinic_api_cmd.c
index 5a1e8655be38..6ce69dc73064 100644
--- a/drivers/net/ethernet/huawei/hinic/hinic_api_cmd.c
+++ b/drivers/net/ethernet/huawei/hinic/hinic_api_cmd.c
@@ -129,7 +129,7 @@ static void dump_api_chain_reg(struct hinic_api_cmd_chain *chain)
addr = HINIC_CSR_API_CMD_STATUS_0_ADDR(chain->chain_type);
val = hinic_hwif_read_reg(chain->hwdev->hwif, addr);
- sdk_err(dev, "Chain type: 0x%x, cpld error: 0x%x, check error: 0x%x, current fsm: 0x%x\n",
+ sdk_err(dev, "Chain type: 0x%x, cpld error: 0x%x, check error: 0x%x, current fsm: 0x%x\n",
chain->chain_type, HINIC_API_CMD_STATUS_GET(val, CPLD_ERR),
HINIC_API_CMD_STATUS_GET(val, CHKSUM_ERR),
HINIC_API_CMD_STATUS_GET(val, FSM));
@@ -161,7 +161,7 @@ static int chain_busy(struct hinic_api_cmd_chain *chain)
resp_header = be64_to_cpu(ctxt->resp->header);
if (ctxt->status &&
!HINIC_API_CMD_RESP_HEADER_VALID(resp_header)) {
- sdk_err(dev, "Context(0x%x) busy!, pi: %d, resp_header: 0x%08x%08x\n",
+ sdk_err(dev, "Context(0x%x) busy, pi: %d, resp_header: 0x%08x%08x\n",
ctxt->status, chain->prod_idx,
upper_32_bits(resp_header),
lower_32_bits(resp_header));
diff --git a/drivers/net/ethernet/huawei/hinic/hinic_cfg.c b/drivers/net/ethernet/huawei/hinic/hinic_cfg.c
index 18937d7d9057..303225e5689e 100644
--- a/drivers/net/ethernet/huawei/hinic/hinic_cfg.c
+++ b/drivers/net/ethernet/huawei/hinic/hinic_cfg.c
@@ -629,7 +629,7 @@ static int get_cap_from_pf(struct hinic_hwdev *dev, enum func_type type)
err = hinic_msg_to_mgmt_sync(dev, HINIC_MOD_CFGM, HINIC_CFG_MBOX_CAP,
&dev_cap, in_len, &dev_cap, &out_len, 0);
if (err || dev_cap.status || !out_len) {
- sdk_err(dev->dev_hdl, "Failed to get capability from PF, err: %d, status: 0x%x, out size: 0x%x\n",
+ sdk_err(dev->dev_hdl, "Failed to get capability from PF, err: %d, status: 0x%x, out size: 0x%x\n",
err, dev_cap.status, out_len);
return -EFAULT;
}
@@ -925,7 +925,7 @@ int hinic_vector_to_eqn(void *hwdev, enum hinic_service_type type, int vector)
if (type != SERVICE_T_ROCE && type != SERVICE_T_IWARP) {
sdk_err(dev->dev_hdl,
- "Service type :%d, only RDMA service could get eqn by vector.\n",
+ "Service type: %d, only RDMA service could get eqn by vector\n",
type);
return -EINVAL;
}
@@ -982,7 +982,7 @@ static int cfg_enable_interrupt(struct hinic_hwdev *dev)
irq_info = cfg_mgmt->irq_param_info.alloc_info;
- sdk_info(dev->dev_hdl, "Interrupt type: %d, irq num: %d.\n",
+ sdk_info(dev->dev_hdl, "Interrupt type: %d, irq num: %d\n",
cfg_mgmt->svc_cap.interrupt_type, nreq);
switch (cfg_mgmt->svc_cap.interrupt_type) {
@@ -1001,7 +1001,7 @@ static int cfg_enable_interrupt(struct hinic_hwdev *dev)
actual_irq = pci_enable_msix_range(pcidev, entry,
VECTOR_THRESHOLD, nreq);
if (actual_irq < 0) {
- sdk_err(dev->dev_hdl, "Alloc msix entries with threshold 2 failed.\n");
+ sdk_err(dev->dev_hdl, "Alloc msix entries with threshold 2 failed\n");
kfree(entry);
return -ENOMEM;
}
@@ -1009,7 +1009,7 @@ static int cfg_enable_interrupt(struct hinic_hwdev *dev)
nreq = (u16)actual_irq;
cfg_mgmt->irq_param_info.num_total = nreq;
cfg_mgmt->irq_param_info.num_irq_remain = nreq;
- sdk_info(dev->dev_hdl, "Request %d msix vector success.\n",
+ sdk_info(dev->dev_hdl, "Request %d msix vector success\n",
nreq);
for (i = 0; i < nreq; ++i) {
@@ -1059,12 +1059,12 @@ int hinic_alloc_irqs(void *hwdev, enum hinic_service_type type, u16 num,
if (num > free_num_irq) {
if (free_num_irq == 0) {
sdk_err(dev->dev_hdl,
- "no free irq resource in cfg mgmt.\n");
+ "no free irq resource in cfg mgmt\n");
mutex_unlock(&irq_info->irq_mutex);
return -ENOMEM;
}
- sdk_warn(dev->dev_hdl, "only %d irq resource in cfg mgmt.\n",
+ sdk_warn(dev->dev_hdl, "only %d irq resource in cfg mgmt\n",
free_num_irq);
num = free_num_irq;
}
@@ -1125,7 +1125,7 @@ void hinic_free_irq(void *hwdev, enum hinic_service_type type, u32 irq_id)
alloc_info[i].free = CFG_FREE;
irq_info->num_irq_remain++;
if (irq_info->num_irq_remain > max_num_irq) {
- sdk_err(dev->dev_hdl, "Find target,but over range\n");
+ sdk_err(dev->dev_hdl, "Find target, but over range\n");
mutex_unlock(&irq_info->irq_mutex);
return;
}
@@ -1135,7 +1135,7 @@ void hinic_free_irq(void *hwdev, enum hinic_service_type type, u32 irq_id)
}
if (i >= max_num_irq)
- sdk_warn(dev->dev_hdl, "Irq %d don`t need to free\n", irq_id);
+ sdk_warn(dev->dev_hdl, "Irq %d don't need to free\n", irq_id);
mutex_unlock(&irq_info->irq_mutex);
}
@@ -1262,7 +1262,7 @@ void hinic_free_ceq(void *hwdev, enum hinic_service_type type, int ceq_id)
}
if (i >= num_ceq)
- sdk_warn(dev->dev_hdl, "ceq %d don`t need to free.\n", ceq_id);
+ sdk_warn(dev->dev_hdl, "ceq %d don't need to free\n", ceq_id);
mutex_unlock(&eq->eq_mutex);
}
diff --git a/drivers/net/ethernet/huawei/hinic/hinic_cmdq.c b/drivers/net/ethernet/huawei/hinic/hinic_cmdq.c
index 7293ff216a7c..6d78d22272f0 100644
--- a/drivers/net/ethernet/huawei/hinic/hinic_cmdq.c
+++ b/drivers/net/ethernet/huawei/hinic/hinic_cmdq.c
@@ -251,7 +251,7 @@ struct hinic_cmd_buf *hinic_alloc_cmd_buf(void *hwdev)
void *dev;
if (!hwdev) {
- pr_err("Failed to alloc cmd buf, Invalid hwdev\n");
+ pr_err("Failed to alloc cmd buf, invalid hwdev\n");
return NULL;
}
@@ -1516,7 +1516,7 @@ int hinic_cmdqs_init(struct hinic_hwdev *hwdev)
err = init_cmdq(&cmdqs->cmdq[cmdq_type], hwdev,
&cmdqs->saved_wqs[cmdq_type], cmdq_type);
if (err) {
- sdk_err(hwdev->dev_hdl, "Failed to initialize cmdq type :%d\n",
+ sdk_err(hwdev->dev_hdl, "Failed to initialize cmdq type: %d\n",
cmdq_type);
goto init_cmdq_err;
}
diff --git a/drivers/net/ethernet/huawei/hinic/hinic_dcb.c b/drivers/net/ethernet/huawei/hinic/hinic_dcb.c
index e17a91f8bd59..0c7ae9133407 100644
--- a/drivers/net/ethernet/huawei/hinic/hinic_dcb.c
+++ b/drivers/net/ethernet/huawei/hinic/hinic_dcb.c
@@ -338,8 +338,8 @@ u8 hinic_setup_dcb_tool(struct net_device *netdev, u8 *dcb_en, bool wr_flag)
if (wr_flag) {
if (nic_dev->max_qps < nic_dev->dcb_cfg.pg_tcs && *dcb_en) {
- netif_err(nic_dev, drv, netdev,
- "max_qps:%d is less than %d\n",
+ nicif_err(nic_dev, drv, netdev,
+ "max_qps: %d is less than %d\n",
nic_dev->max_qps, nic_dev->dcb_cfg.pg_tcs);
return 1;
}
@@ -357,7 +357,7 @@ u8 hinic_setup_dcb_tool(struct net_device *netdev, u8 *dcb_en, bool wr_flag)
mutex_lock(&nic_dev->nic_mutex);
if (!err)
- netif_info(nic_dev, drv, netdev, "%s DCB\n",
+ nicif_info(nic_dev, drv, netdev, "%s DCB\n",
*dcb_en ? "Enable" : "Disable");
} else {
*dcb_en = (u8)test_bit(HINIC_DCB_ENABLE, &nic_dev->flags);
@@ -386,15 +386,15 @@ static u8 hinic_dcbnl_set_state(struct net_device *netdev, u8 state)
return 0;
if (nic_dev->max_qps < nic_dev->dcb_cfg.pg_tcs && state) {
- netif_err(nic_dev, drv, netdev,
- "max_qps:%d is less than %d\n",
+ nicif_err(nic_dev, drv, netdev,
+ "max_qps: %d is less than %d\n",
nic_dev->max_qps, nic_dev->dcb_cfg.pg_tcs);
return 1;
}
err = hinic_setup_tc(netdev, state ? nic_dev->dcb_cfg.pg_tcs : 0);
if (!err)
- netif_info(nic_dev, drv, netdev, "%s DCB\n",
+ nicif_info(nic_dev, drv, netdev, "%s DCB\n",
state ? "Enable" : "Disable");
return !!err;
@@ -1062,12 +1062,12 @@ static int __set_hw_ets(struct hinic_nic_dev *nic_dev)
err = hinic_dcb_set_ets(nic_dev->hwdev, up_tc, pg_bw, up_pgid,
up_bw, up_strict);
if (err) {
- hinic_err(nic_dev, drv, "Failed to set ets with mode:%d\n",
+ hinic_err(nic_dev, drv, "Failed to set ets with mode: %d\n",
nic_dev->dcbx_cap);
return err;
}
- hinic_info(nic_dev, drv, "Set ets to hw done with mode:%d\n",
+ hinic_info(nic_dev, drv, "Set ets to hw done with mode: %d\n",
nic_dev->dcbx_cap);
return 0;
@@ -1332,8 +1332,8 @@ static int hinic_dcbnl_ieee_set_ets(struct net_device *netdev,
if (max_tc != netdev_get_num_tc(netdev)) {
err = hinic_setup_tc(netdev, max_tc);
if (err) {
- netif_err(nic_dev, drv, netdev,
- "Failed to setup tc with max_tc:%d, err:%d\n",
+ nicif_err(nic_dev, drv, netdev,
+ "Failed to setup tc with max_tc: %d, err: %d\n",
max_tc, err);
memcpy(my_ets, &back_ets, sizeof(struct ieee_ets));
return err;
@@ -1386,7 +1386,7 @@ static int hinic_dcbnl_ieee_set_pfc(struct net_device *netdev,
pfc_map = pfc->pfc_en & nic_dev->up_valid_bitmap;
outof_range_pfc = pfc->pfc_en & (~nic_dev->up_valid_bitmap);
if (outof_range_pfc)
- netif_info(nic_dev, drv, netdev,
+ nicif_info(nic_dev, drv, netdev,
"pfc setting out of range, 0x%x will be ignored\n",
outof_range_pfc);
@@ -1407,7 +1407,7 @@ static int hinic_dcbnl_ieee_set_pfc(struct net_device *netdev,
err = hinic_dcb_set_pfc(nic_dev->hwdev, pfc_en, pfc_map);
if (err) {
hinic_info(nic_dev, drv,
- "Failed to set pfc to hw with pfc_map:0x%x err:%d\n",
+ "Failed to set pfc to hw with pfc_map: 0x%x err: %d\n",
pfc_map, err);
hinic_start_port_traffic_flow(nic_dev);
return err;
@@ -1416,7 +1416,7 @@ static int hinic_dcbnl_ieee_set_pfc(struct net_device *netdev,
hinic_start_port_traffic_flow(nic_dev);
my_pfc->pfc_en = pfc->pfc_en;
hinic_info(nic_dev, drv,
- "Set pfc successfully with pfc_map:0x%x, pfc_en:%d\n",
+ "Set pfc successfully with pfc_map: 0x%x, pfc_en: %d\n",
pfc_map, pfc_en);
return 0;
@@ -1479,7 +1479,7 @@ static u8 hinic_dcbnl_setdcbx(struct net_device *netdev, u8 mode)
((mode & DCB_CAP_DCBX_LLD_MANAGED) &&
(!(mode & DCB_CAP_DCBX_HOST)))) {
nicif_info(nic_dev, drv, netdev,
- "Set dcbx failed with invalid mode:%d\n", mode);
+ "Set dcbx failed with invalid mode: %d\n", mode);
return 1;
}
@@ -1497,7 +1497,7 @@ static u8 hinic_dcbnl_setdcbx(struct net_device *netdev, u8 mode)
err = hinic_setup_tc(netdev, 0);
if (err) {
nicif_err(nic_dev, drv, netdev,
- "Failed to setup tc with mode:%d\n",
+ "Failed to setup tc with mode: %d\n",
mode);
return 1;
}
@@ -1509,7 +1509,7 @@ static u8 hinic_dcbnl_setdcbx(struct net_device *netdev, u8 mode)
err = hinic_setup_tc(netdev, 0);
if (err) {
nicif_err(nic_dev, drv, netdev,
- "Failed to setup tc with mode:%d\n", mode);
+ "Failed to setup tc with mode: %d\n", mode);
return 1;
}
}
@@ -1617,7 +1617,7 @@ int __set_cos_up_map(struct hinic_nic_dev *nic_dev, u8 *cos_up)
return -EFAULT;
}
- nicif_info(nic_dev, drv, netdev, "Set cos2up:%d%d%d%d%d%d%d%d\n",
+ nicif_info(nic_dev, drv, netdev, "Set cos2up: %d%d%d%d%d%d%d%d\n",
cos_up[0], cos_up[1], cos_up[2], cos_up[3],
cos_up[4], cos_up[5], cos_up[6], cos_up[7]);
diff --git a/drivers/net/ethernet/huawei/hinic/hinic_eqs.c b/drivers/net/ethernet/huawei/hinic/hinic_eqs.c
index 22fc49d16462..6c352dff996a 100644
--- a/drivers/net/ethernet/huawei/hinic/hinic_eqs.c
+++ b/drivers/net/ethernet/huawei/hinic/hinic_eqs.c
@@ -486,7 +486,7 @@ static void ceq_event_handler(struct hinic_ceqs *ceqs, u32 ceqe)
u32 ceqe_data = CEQE_DATA(ceqe);
if (event >= HINIC_MAX_CEQ_EVENTS) {
- sdk_err(hwdev->dev_hdl, "Ceq unknown event:%d, ceqe date: 0x%x\n",
+ sdk_err(hwdev->dev_hdl, "Ceq unknown event: %d, ceqe date: 0x%x\n",
event, ceqe_data);
return;
}
@@ -1126,7 +1126,7 @@ static int init_eq(struct hinic_eq *eq, struct hinic_hwdev *hwdev, u16 q_id,
eq->orig_page_size = eq->page_size;
eq->num_pages = GET_EQ_NUM_PAGES(eq, eq->page_size);
if (eq->num_pages > HINIC_EQ_MAX_PAGES) {
- sdk_err(hwdev->dev_hdl, "Number pages:%d too many pages for eq\n",
+ sdk_err(hwdev->dev_hdl, "Number pages: %d too many pages for eq\n",
eq->num_pages);
return -EINVAL;
}
diff --git a/drivers/net/ethernet/huawei/hinic/hinic_ethtool.c b/drivers/net/ethernet/huawei/hinic/hinic_ethtool.c
index 98e230d4e3c1..f79594570002 100644
--- a/drivers/net/ethernet/huawei/hinic/hinic_ethtool.c
+++ b/drivers/net/ethernet/huawei/hinic/hinic_ethtool.c
@@ -753,7 +753,7 @@ static int hinic_set_settings_to_hw(struct hinic_nic_dev *nic_dev,
(autoneg ? "autong enable " : "autong disable ") : "");
if (err < 0 || err >= SET_LINK_STR_MAX_LEN) {
nicif_err(nic_dev, drv, netdev,
- "Failed snprintf link state, function return(%d) and dest_len(%d)\n",
+ "Failed to snprintf link state, function return(%d) and dest_len(%d)\n",
err, SET_LINK_STR_MAX_LEN);
return -EFAULT;
}
@@ -763,7 +763,7 @@ static int hinic_set_settings_to_hw(struct hinic_nic_dev *nic_dev,
"%sspeed %d ", set_link_str, speed);
if (err <= 0 || err >= SET_LINK_STR_MAX_LEN) {
nicif_err(nic_dev, drv, netdev,
- "Failed snprintf link speed, function return(%d) and dest_len(%d)\n",
+ "Failed to snprintf link speed, function return(%d) and dest_len(%d)\n",
err, SET_LINK_STR_MAX_LEN);
return -EFAULT;
}
@@ -897,7 +897,7 @@ static void hinic_get_drvinfo(struct net_device *netdev,
"%s", mgmt_ver);
if (err <= 0 || err >= (int)sizeof(info->fw_version))
nicif_err(nic_dev, drv, netdev,
- "Failed snprintf fw_version, function return(%d) and dest_len(%d)\n",
+ "Failed to snprintf fw_version, function return(%d) and dest_len(%d)\n",
err, (int)sizeof(info->fw_version));
}
@@ -997,7 +997,7 @@ static int hinic_set_ringparam(struct net_device *netdev,
ring->rx_pending > HINIC_MAX_QUEUE_DEPTH ||
ring->rx_pending < HINIC_MIN_QUEUE_DEPTH) {
nicif_err(nic_dev, drv, netdev,
- "Queue depth out of rang [%d-%d]\n",
+ "Queue depth out of range [%d-%d]\n",
HINIC_MIN_QUEUE_DEPTH, HINIC_MAX_QUEUE_DEPTH);
return -EINVAL;
}
@@ -1449,7 +1449,7 @@ static int __hinic_set_coalesce(struct net_device *netdev,
err = snprintf(obj_str, sizeof(obj_str), "for netdev");
if (err <= 0 || err >= OBJ_STR_MAX_LEN) {
nicif_err(nic_dev, drv, netdev,
- "Failed snprintf string, function return(%d) and dest_len(%d)\n",
+ "Failed to snprintf string, function return(%d) and dest_len(%d)\n",
err, OBJ_STR_MAX_LEN);
return -EFAULT;
}
@@ -1458,7 +1458,7 @@ static int __hinic_set_coalesce(struct net_device *netdev,
err = snprintf(obj_str, sizeof(obj_str), "for queue %d", queue);
if (err <= 0 || err >= OBJ_STR_MAX_LEN) {
nicif_err(nic_dev, drv, netdev,
- "Failed snprintf string, function return(%d) and dest_len(%d)\n",
+ "Failed to snprintf string, function return(%d) and dest_len(%d)\n",
err, OBJ_STR_MAX_LEN);
return -EFAULT;
}
@@ -1712,7 +1712,7 @@ static void hinic_get_strings(struct net_device *netdev,
return;
default:
nicif_err(nic_dev, drv, netdev,
- "Invalid string set %d.", stringset);
+ "Invalid string set %d", stringset);
return;
}
}
@@ -1913,7 +1913,7 @@ static int hinic_run_lp_test(struct hinic_nic_dev *nic_dev, u32 test_time)
}
dev_kfree_skb_any(skb_tmp);
- nicif_info(nic_dev, drv, netdev, "Loopback test succeed.\n");
+ nicif_info(nic_dev, drv, netdev, "Loopback test succeed\n");
return 0;
}
@@ -1961,7 +1961,7 @@ void hinic_lp_test(struct net_device *netdev, struct ethtool_test *eth_test,
lb_test_rx_buf = vmalloc(LP_PKT_CNT * LP_PKT_LEN);
if (!lb_test_rx_buf) {
nicif_err(nic_dev, drv, netdev,
- "Failed to alloc rx buffer for loopback test.\n");
+ "Failed to alloc rx buffer for loopback test\n");
err = 1;
} else {
nic_dev->lb_test_rx_buf = lb_test_rx_buf;
@@ -1980,7 +1980,7 @@ void hinic_lp_test(struct net_device *netdev, struct ethtool_test *eth_test,
if (!(test.flags & ETH_TEST_FL_EXTERNAL_LB)) {
if (hinic_set_loopback_mode(nic_dev->hwdev, false)) {
nicif_err(nic_dev, drv, netdev,
- "Failed to cancel port loopback mode after loopback test.\n");
+ "Failed to cancel port loopback mode after loopback test\n");
err = 1;
goto resume_link;
diff --git a/drivers/net/ethernet/huawei/hinic/hinic_hwdev.c b/drivers/net/ethernet/huawei/hinic/hinic_hwdev.c
index e815eec59b45..d19da7238f9b 100644
--- a/drivers/net/ethernet/huawei/hinic/hinic_hwdev.c
+++ b/drivers/net/ethernet/huawei/hinic/hinic_hwdev.c
@@ -1369,7 +1369,7 @@ int hinic_clean_root_ctxt(void *hwdev)
&root_ctxt, &out_size, 0);
if (err || !out_size || root_ctxt.status) {
sdk_err(((struct hinic_hwdev *)hwdev)->dev_hdl,
- "Failed to set root context, err: %d, status: 0x%x, out_size: 0x%x\n",
+ "Failed to clean root context, err: %d, status: 0x%x, out_size: 0x%x\n",
err, root_ctxt.status, out_size);
return -EFAULT;
}
@@ -1528,7 +1528,7 @@ static int hinic_vf_rx_tx_flush_in_pf(struct hinic_hwdev *hwdev, u16 vf_id)
HINIC_MGMT_CMD_START_FLR, &clr_res,
sizeof(clr_res), &clr_res, &out_size, 0);
if (err || !out_size || clr_res.status) {
- sdk_warn(hwdev->dev_hdl, "Failed to flush doorbell, err: %d, status: 0x%x, out_size: 0x%x\n",
+ sdk_warn(hwdev->dev_hdl, "Failed to start flr, err: %d, status: 0x%x, out_size: 0x%x\n",
err, clr_res.status, out_size);
ret = err ? err : (-EFAULT);
}
@@ -1759,7 +1759,7 @@ static int init_aeqs_msix_attr(struct hinic_hwdev *hwdev)
info.msix_index = eq->eq_irq.msix_entry_idx;
err = hinic_set_interrupt_cfg_direct(hwdev, &info);
if (err) {
- sdk_err(hwdev->dev_hdl, "Set msix attr for aeq %d failed\n",
+ sdk_err(hwdev->dev_hdl, "Failed to set msix attr for aeq %d\n",
q_id);
return -EFAULT;
}
@@ -1789,7 +1789,7 @@ static int init_ceqs_msix_attr(struct hinic_hwdev *hwdev)
info.msix_index = eq->eq_irq.msix_entry_idx;
err = hinic_set_interrupt_cfg(hwdev, info);
if (err) {
- sdk_err(hwdev->dev_hdl, "Set msix attr for ceq %d failed\n",
+ sdk_err(hwdev->dev_hdl, "Failed to set msix attr for ceq %d\n",
q_id);
return -EFAULT;
}
@@ -2032,7 +2032,7 @@ int comm_pf_mbox_handler(void *handle, u16 vf_id, u8 cmd, void *buf_in,
if (!hinic_mbox_check_cmd_valid(handle, hw_cmd_support_vf, vf_id, cmd,
buf_in, in_size, size)) {
sdk_err(((struct hinic_hwdev *)handle)->dev_hdl,
- "PF Receive VF(%d) common cmd(0x%x), mbox len(0x%x) is invalid\n",
+ "PF Receive VF(%d) common cmd(0x%x) or mbox len(0x%x) is invalid\n",
vf_id + hinic_glb_pf_vf_offset(handle), cmd, in_size);
err = HINIC_MBOX_VF_CMD_ERROR;
return err;
@@ -2050,8 +2050,8 @@ int comm_pf_mbox_handler(void *handle, u16 vf_id, u8 cmd, void *buf_in,
if (err && err != HINIC_DEV_BUSY_ACTIVE_FW &&
err != HINIC_MBOX_PF_BUSY_ACTIVE_FW)
sdk_err(((struct hinic_hwdev *)handle)->dev_hdl,
- "PF mbox common callback handler err: %d\n",
- err);
+ "PF mbox common cmd %d callback handler err: %d\n",
+ cmd, err);
}
return err;
@@ -2462,7 +2462,7 @@ int hinic_init_comm_ch(struct hinic_hwdev *hwdev)
err = __get_func_misc_info(hwdev);
if (err) {
- sdk_err(hwdev->dev_hdl, "Failed to get function msic information\n");
+ sdk_err(hwdev->dev_hdl, "Failed to get function misc information\n");
goto get_func_info_err;
}
@@ -3133,7 +3133,7 @@ int mqm_eqm_init(struct hinic_hwdev *hwdev)
&info_eqm_fix, sizeof(info_eqm_fix),
&info_eqm_fix, &len, 0);
if (ret || !len || info_eqm_fix.status) {
- sdk_err(hwdev->dev_hdl, "Get mqm fix info fail,err: %d, status: 0x%x, out_size: 0x%x\n",
+ sdk_err(hwdev->dev_hdl, "Get mqm fix info failed, err: %d, status: 0x%x, out_size: 0x%x\n",
ret, info_eqm_fix.status, len);
return -EFAULT;
}
@@ -3149,25 +3149,25 @@ int mqm_eqm_init(struct hinic_hwdev *hwdev)
kcalloc(hwdev->mqm_att.chunk_num,
sizeof(struct hinic_page_addr), GFP_KERNEL);
if (!(hwdev->mqm_att.brm_srch_page_addr)) {
- sdk_err(hwdev->dev_hdl, "Alloc virtual mem failed\r\n");
+ sdk_err(hwdev->dev_hdl, "Alloc virtual mem failed\n");
return -EFAULT;
}
ret = mqm_eqm_alloc_page_mem(hwdev);
if (ret) {
- sdk_err(hwdev->dev_hdl, "Alloc eqm page mem failed\r\n");
+ sdk_err(hwdev->dev_hdl, "Alloc eqm page mem failed\n");
goto err_page;
}
ret = mqm_eqm_set_page_2_hw(hwdev);
if (ret) {
- sdk_err(hwdev->dev_hdl, "Set page to hw failed\r\n");
+ sdk_err(hwdev->dev_hdl, "Set page to hw failed\n");
goto err_ecmd;
}
ret = mqm_eqm_set_cfg_2_hw(hwdev, 1);
if (ret) {
- sdk_err(hwdev->dev_hdl, "Set page to hw failed\r\n");
+ sdk_err(hwdev->dev_hdl, "Set page to hw failed\n");
goto err_ecmd;
}
@@ -3197,7 +3197,7 @@ void mqm_eqm_deinit(struct hinic_hwdev *hwdev)
ret = mqm_eqm_set_cfg_2_hw(hwdev, 0);
if (ret) {
- sdk_err(hwdev->dev_hdl, "Set mqm eqm cfg to chip fail! err: %d\n",
+ sdk_err(hwdev->dev_hdl, "Set mqm eqm cfg to chip fail, err: %d\n",
ret);
return;
}
@@ -3218,7 +3218,7 @@ int hinic_ppf_ext_db_init(void *dev)
ret = mqm_eqm_init(hwdev);
if (ret) {
- sdk_err(hwdev->dev_hdl, "MQM eqm init fail!\n");
+ sdk_err(hwdev->dev_hdl, "MQM eqm init failed\n");
return -EFAULT;
}
@@ -3425,7 +3425,7 @@ static void fault_report_show(struct hinic_hwdev *hwdev,
struct hinic_fault_event_stats *fault;
u8 node_id;
- sdk_err(hwdev->dev_hdl, "Fault event report received, func_id: %d.\n",
+ sdk_err(hwdev->dev_hdl, "Fault event report received, func_id: %d\n",
hinic_global_func_id(hwdev));
memset(type_str, 0, FAULT_SHOW_STR_LEN + 1);
@@ -3759,7 +3759,7 @@ static void sw_watchdog_timeout_info_show(struct hinic_hwdev *hwdev,
u32 *dump_addr, *reg, stack_len, i, j;
if (in_size != sizeof(*watchdog_info)) {
- sdk_err(hwdev->dev_hdl, "Invalid mgmt watchdog report, length: %d, should be %ld.\n",
+ sdk_err(hwdev->dev_hdl, "Invalid mgmt watchdog report, length: %d, should be %ld\n",
in_size, sizeof(*watchdog_info));
return;
}
@@ -3924,7 +3924,7 @@ static void hinic_fmw_act_ntc_handler(struct hinic_hwdev *hwdev,
struct hinic_fmw_act_ntc *notice_info;
if (in_size != sizeof(*notice_info)) {
- sdk_err(hwdev->dev_hdl, "Invalid mgmt firmware active notice, length: %d, should be %ld.\n",
+ sdk_err(hwdev->dev_hdl, "Invalid mgmt firmware active notice, length: %d, should be %ld\n",
in_size, sizeof(*notice_info));
return;
}
@@ -3957,7 +3957,7 @@ static void hinic_pcie_dfx_event_handler(struct hinic_hwdev *hwdev,
u32 *reg;
if (in_size != sizeof(*notice_info)) {
- sdk_err(hwdev->dev_hdl, "Invalid mgmt firmware active notice, length: %d, should be %ld.\n",
+ sdk_err(hwdev->dev_hdl, "Invalid mgmt firmware active notice, length: %d, should be %ld\n",
in_size, sizeof(*notice_info));
return;
}
@@ -4724,7 +4724,7 @@ u8 hinic_nic_sw_aeqe_handler(void *handle, u8 event, u64 data)
event_level = FAULT_LEVEL_FATAL;
break;
default:
- sdk_err(hwdev->dev_hdl, "Unsupported sw event %d to process.\n",
+ sdk_err(hwdev->dev_hdl, "Unsupported sw event %d to process\n",
event);
}
diff --git a/drivers/net/ethernet/huawei/hinic/hinic_lld.c b/drivers/net/ethernet/huawei/hinic/hinic_lld.c
index 81461da5e9aa..a19a1f67bc97 100644
--- a/drivers/net/ethernet/huawei/hinic/hinic_lld.c
+++ b/drivers/net/ethernet/huawei/hinic/hinic_lld.c
@@ -668,7 +668,7 @@ static void hinic_ignore_minor_version(char *version)
err = snprintf(version, max_ver_len, "%s.%s.%s.0",
ver_split[0], ver_split[1], ver_split[2]);
if (err <= 0 || err >= max_ver_len)
- pr_err("Failed snprintf version, function return(%d) and dest_len(%d)\n",
+ pr_err("Failed to snprintf version, function return(%d) and dest_len(%d)\n",
err, max_ver_len);
}
@@ -1087,7 +1087,7 @@ void *hinic_get_uld_dev_by_ifname(char *ifname, enum hinic_service_type type)
struct hinic_pcidev *dev;
if (type >= SERVICE_T_MAX) {
- pr_err("Service type :%d is error\n", type);
+ pr_err("Service type: %d is error\n", type);
return NULL;
}
@@ -1467,7 +1467,7 @@ struct net_device *hinic_get_netdev_by_lld(struct hinic_lld_dev *lld_dev)
nic_dev = pci_adapter->uld_dev[SERVICE_T_NIC];
if (!nic_dev) {
sdk_err(&pci_adapter->pcidev->dev,
- "There's no net device attached on the pci device");
+ "There's no net device attached on the pci device\n");
return NULL;
}
@@ -1501,7 +1501,7 @@ struct net_device *hinic_get_netdev_by_pcidev(struct pci_dev *pdev)
nic_dev = pci_adapter->uld_dev[SERVICE_T_NIC];
if (!nic_dev) {
sdk_err(&pci_adapter->pcidev->dev,
- "There`s no net device attached on the pci device");
+ "There`s no net device attached on the pci device\n");
return NULL;
}
@@ -1739,7 +1739,7 @@ int hinic_ovs_set_vf_nic_state(struct hinic_lld_dev *lld_dev, u16 vf_func_id,
if (err) {
sdk_err(&des_dev->pcidev->dev,
- "%s driver Set VF max_queue_num failed, err=%d.\n",
+ "%s driver Set VF max_queue_num failed, err=%d\n",
s_uld_name[SERVICE_T_NIC], err);
break;
@@ -2071,7 +2071,7 @@ static int alloc_chip_node(struct hinic_pcidev *pci_adapter)
HINIC_CHIP_NAME, i);
if (err <= 0 || err >= IFNAMSIZ) {
sdk_err(&pci_adapter->pcidev->dev,
- "Failed snprintf chip_name, function return(%d) and dest_len(%d)\n",
+ "Failed to snprintf chip_name, function return(%d) and dest_len(%d)\n",
err, IFNAMSIZ);
goto alloc_dbgtool_attr_file_err;
}
@@ -2080,7 +2080,7 @@ static int alloc_chip_node(struct hinic_pcidev *pci_adapter)
IFNAMSIZ, "%s%d", HINIC_CHIP_NAME, i);
if (err <= 0 || err >= IFNAMSIZ) {
sdk_err(&pci_adapter->pcidev->dev,
- "Failed snprintf dbgtool_attr_file_name, function return(%d) and dest_len(%d)\n",
+ "Failed to snprintf dbgtool_attr_file_name, function return(%d) and dest_len(%d)\n",
err, IFNAMSIZ);
goto alloc_dbgtool_attr_file_err;
}
@@ -2188,13 +2188,13 @@ int hinic_ovs_set_vf_load_state(struct pci_dev *pdev)
{
struct hinic_pcidev *pci_adapter;
if (!pdev) {
- pr_err("pdev is null.\n");
+ pr_err("pdev is null\n");
return -EINVAL;
}
pci_adapter = pci_get_drvdata(pdev);
if (!pci_adapter) {
- pr_err("pci_adapter is null.\n");
+ pr_err("pci_adapter is null\n");
return -EFAULT;
}
@@ -2699,7 +2699,7 @@ static int hinic_probe(struct pci_dev *pdev, const struct pci_device_id *id)
create_singlethread_workqueue(HINIC_SLAVE_NIC_DELAY);
if (!pci_adapter->slave_nic_init_workq) {
sdk_err(&pdev->dev,
- "Failed to create work queue:%s\n",
+ "Failed to create work queue: %s\n",
HINIC_SLAVE_NIC_DELAY);
goto ceate_nic_delay_work_fail;
}
diff --git a/drivers/net/ethernet/huawei/hinic/hinic_main.c b/drivers/net/ethernet/huawei/hinic/hinic_main.c
index 1679c24eba9d..56af81d132fd 100644
--- a/drivers/net/ethernet/huawei/hinic/hinic_main.c
+++ b/drivers/net/ethernet/huawei/hinic/hinic_main.c
@@ -407,7 +407,7 @@ static int hinic_setup_num_qps(struct hinic_nic_dev *nic_dev)
}
nic_dev->qps_irq_info = kzalloc(irq_size, GFP_KERNEL);
if (!nic_dev->qps_irq_info) {
- nicif_err(nic_dev, drv, netdev, "Failed to alloc msix entries\n");
+ nicif_err(nic_dev, drv, netdev, "Failed to alloc qps_irq_info\n");
return -ENOMEM;
}
@@ -560,7 +560,7 @@ static int hinic_request_irq(struct hinic_irq *irq_cfg, u16 q_id)
err = hinic_set_interrupt_cfg(nic_dev->hwdev, info);
if (err) {
nicif_err(nic_dev, drv, irq_cfg->netdev,
- "Failed to set RX interrupt coalescing attribute.\n");
+ "Failed to set RX interrupt coalescing attribute\n");
qp_del_napi(irq_cfg);
return err;
}
@@ -2977,7 +2977,7 @@ int hinic_enable_func_rss(struct hinic_nic_dev *nic_dev)
if (err) {
if (err == -ENOSPC)
nicif_warn(nic_dev, drv, netdev,
- "Failed to alloc RSS template,table is full\n");
+ "Failed to alloc RSS template, table is full\n");
else
nicif_err(nic_dev, drv, netdev,
"Failed to alloc RSS template\n");
diff --git a/drivers/net/ethernet/huawei/hinic/hinic_mbox.c b/drivers/net/ethernet/huawei/hinic/hinic_mbox.c
index fc91bdffe1eb..29feb9b4a16c 100644
--- a/drivers/net/ethernet/huawei/hinic/hinic_mbox.c
+++ b/drivers/net/ethernet/huawei/hinic/hinic_mbox.c
@@ -213,8 +213,8 @@ static bool check_func_id(struct hinic_hwdev *hwdev, u16 src_func_idx,
if (in_size < offset + sizeof(func_idx)) {
sdk_warn(hwdev->dev_hdl,
- "Reveice mailbox msg len: %d less than 10 Bytes is invalid\n",
- in_size);
+ "Receive mailbox msg len: %d less than %ld Bytes is invalid\n",
+ in_size, offset + sizeof(func_idx));
return false;
}
@@ -222,7 +222,7 @@ static bool check_func_id(struct hinic_hwdev *hwdev, u16 src_func_idx,
if (src_func_idx != func_idx) {
sdk_warn(hwdev->dev_hdl,
- "Reveice mailbox function id(0x%x) not equal to msg function id(0x%x)\n",
+ "Reveive mailbox function id(0x%x) not equal to msg function id(0x%x)\n",
src_func_idx, func_idx);
return false;
}
@@ -909,7 +909,8 @@ void hinic_mbox_func_aeqe_handler(void *handle, u8 *header, u8 size)
if (src >= HINIC_MAX_FUNCTIONS) {
sdk_err(func_to_func->hwdev->dev_hdl,
- "Mailbox source function id:%u is invalid\n", (u32)src);
+ "Mailbox source function id: %u is invalid\n",
+ (u32)src);
return;
}
diff --git a/drivers/net/ethernet/huawei/hinic/hinic_mgmt.c b/drivers/net/ethernet/huawei/hinic/hinic_mgmt.c
index 38abf8fe0817..3a8362cc7d01 100644
--- a/drivers/net/ethernet/huawei/hinic/hinic_mgmt.c
+++ b/drivers/net/ethernet/huawei/hinic/hinic_mgmt.c
@@ -680,7 +680,7 @@ static int hinic_read_clp_data(struct hinic_hwdev *hwdev,
err = hinic_read_clp_reg(hwdev, HINIC_CLP_RSP_HOST,
HINIC_CLP_READY_RSP_HOST, &ready);
if (err || delay_cnt > HINIC_CLP_DELAY_CNT_MAX) {
- sdk_err(hwdev->dev_hdl, "timeout with delay_cnt:%d\n",
+ sdk_err(hwdev->dev_hdl, "Timeout with delay_cnt: %d\n",
delay_cnt);
return -EINVAL;
}
@@ -692,7 +692,7 @@ static int hinic_read_clp_data(struct hinic_hwdev *hwdev,
return err;
if (temp_out_size > HINIC_CLP_SRAM_SIZE_REG_MAX || !temp_out_size) {
- sdk_err(hwdev->dev_hdl, "invalid temp_out_size:%d\n",
+ sdk_err(hwdev->dev_hdl, "Invalid temp_out_size: %d\n",
temp_out_size);
return -EINVAL;
}
@@ -757,14 +757,16 @@ static int hinic_check_clp_init_status(struct hinic_hwdev *hwdev)
err = hinic_read_clp_reg(hwdev, HINIC_CLP_REQ_HOST,
HINIC_CLP_BA_HOST, ®_value);
if (err || !reg_value) {
- sdk_err(hwdev->dev_hdl, "Wrong req ba value:0x%x\n", reg_value);
+ sdk_err(hwdev->dev_hdl, "Wrong req ba value: 0x%x\n",
+ reg_value);
return -EINVAL;
}
err = hinic_read_clp_reg(hwdev, HINIC_CLP_RSP_HOST,
HINIC_CLP_BA_HOST, ®_value);
if (err || !reg_value) {
- sdk_err(hwdev->dev_hdl, "Wrong rsp ba value:0x%x\n", reg_value);
+ sdk_err(hwdev->dev_hdl, "Wrong rsp ba value: 0x%x\n",
+ reg_value);
return -EINVAL;
}
@@ -822,7 +824,7 @@ int hinic_pf_clp_to_mgmt(void *hwdev, enum hinic_mod_type mod, u8 cmd,
if (real_size >
(HINIC_CLP_INPUT_BUFFER_LEN_HOST / HINIC_CLP_DATA_UNIT_HOST)) {
- sdk_err(dev->dev_hdl, "Invalid real_size:%d\n", real_size);
+ sdk_err(dev->dev_hdl, "Invalid real_size: %d\n", real_size);
return -EINVAL;
}
down(&clp_pf_to_mgmt->clp_msg_lock);
@@ -871,13 +873,13 @@ int hinic_pf_clp_to_mgmt(void *hwdev, enum hinic_mod_type mod, u8 cmd,
real_size = (u16)((real_size * HINIC_CLP_DATA_UNIT_HOST) & 0xffff);
if (real_size <= sizeof(header) ||
real_size > HINIC_CLP_INPUT_BUFFER_LEN_HOST) {
- sdk_err(dev->dev_hdl, "Invalid response size:%d", real_size);
+ sdk_err(dev->dev_hdl, "Invalid response size: %d", real_size);
up(&clp_pf_to_mgmt->clp_msg_lock);
return -EINVAL;
}
real_size = real_size - sizeof(header);
if (real_size != *out_size) {
- sdk_err(dev->dev_hdl, "Invalid real_size:%d, out_size:%d\n",
+ sdk_err(dev->dev_hdl, "Invalid real_size: %d, out_size: %d\n",
real_size, *out_size);
up(&clp_pf_to_mgmt->clp_msg_lock);
return -EINVAL;
@@ -1090,11 +1092,11 @@ static void mgmt_resp_msg_handler(struct hinic_msg_pf_to_mgmt *pf_to_mgmt,
pf_to_mgmt->event_flag == SEND_EVENT_START) {
complete(&recv_msg->recv_done);
} else if (recv_msg->msg_id != pf_to_mgmt->sync_msg_id) {
- sdk_err(dev, "Send msg id(0x%x) recv msg id(0x%x) dismatch, event state=%d\n",
+ sdk_err(dev, "Send msg id(0x%x) recv msg id(0x%x) dismatch, event state: %d\n",
pf_to_mgmt->sync_msg_id, recv_msg->msg_id,
pf_to_mgmt->event_flag);
} else {
- sdk_err(dev, "Wait timeout, send msg id(0x%x) recv msg id(0x%x), event state=%d!\n",
+ sdk_err(dev, "Wait timeout, send msg id(0x%x) recv msg id(0x%x), event state: %d\n",
pf_to_mgmt->sync_msg_id, recv_msg->msg_id,
pf_to_mgmt->event_flag);
}
diff --git a/drivers/net/ethernet/huawei/hinic/hinic_nic_cfg.c b/drivers/net/ethernet/huawei/hinic/hinic_nic_cfg.c
index 90b16ea9658d..1bac0ea08a52 100644
--- a/drivers/net/ethernet/huawei/hinic/hinic_nic_cfg.c
+++ b/drivers/net/ethernet/huawei/hinic/hinic_nic_cfg.c
@@ -309,7 +309,7 @@ int hinic_del_mac(void *hwdev, const u8 *mac_addr, u16 vlan_id, u16 func_id)
return -EINVAL;
}
if (mac_info.status == HINIC_PF_SET_VF_ALREADY) {
- nic_warn(nic_hwdev->dev_hdl, "PF has already set VF mac, Ignore delete operation.\n");
+ nic_warn(nic_hwdev->dev_hdl, "PF has already set VF mac, Ignore delete operation\n");
return HINIC_PF_SET_VF_ALREADY;
}
@@ -461,12 +461,14 @@ int hinic_set_port_mtu(void *hwdev, u32 new_mtu)
if (new_mtu < HINIC_MIN_MTU_SIZE) {
nic_err(nic_hwdev->dev_hdl,
- "Invalid mtu size, mtu size < 256bytes");
+ "Invalid mtu size, mtu size < %dbytes\n",
+ HINIC_MIN_MTU_SIZE);
return -EINVAL;
}
if (new_mtu > HINIC_MAX_JUMBO_FRAME_SIZE) {
- nic_err(nic_hwdev->dev_hdl, "Invalid mtu size, mtu size > 9600bytes");
+ nic_err(nic_hwdev->dev_hdl, "Invalid mtu size, mtu size > %dbytes\n",
+ HINIC_MAX_JUMBO_FRAME_SIZE);
return -EINVAL;
}
@@ -2220,7 +2222,7 @@ int hinic_get_mgmt_version(void *hwdev, u8 *mgmt_ver)
err = snprintf(mgmt_ver, HINIC_MGMT_VERSION_MAX_LEN, "%s", up_ver.ver);
if (err <= 0 || err >= HINIC_MGMT_VERSION_MAX_LEN) {
nic_err(dev->dev_hdl,
- "Failed snprintf fw version, function return(%d) and dest_len(%d)\n",
+ "Failed to snprintf fw version, function return(%d) and dest_len(%d)\n",
err, HINIC_MGMT_VERSION_MAX_LEN);
return -EINVAL;
}
@@ -2501,7 +2503,7 @@ static int hinic_del_vf_mac_msg_handler(struct hinic_nic_io *nic_io, u16 vf,
if (vf_info->pf_set_mac && !(vf_info->trust) &&
is_valid_ether_addr(mac_in->mac) &&
!memcmp(vf_info->vf_mac_addr, mac_in->mac, ETH_ALEN)) {
- nic_warn(nic_io->hwdev->dev_hdl, "PF has already set VF mac.\n");
+ nic_warn(nic_io->hwdev->dev_hdl, "PF has already set VF mac\n");
mac_out->status = HINIC_PF_SET_VF_ALREADY;
*out_size = sizeof(*mac_out);
return 0;
@@ -2530,12 +2532,12 @@ static int hinic_update_vf_mac_msg_handler(struct hinic_nic_io *nic_io, u16 vf,
int err;
if (!is_valid_ether_addr(mac_in->new_mac)) {
- nic_err(nic_io->hwdev->dev_hdl, "Update VF MAC is invalid.\n");
+ nic_err(nic_io->hwdev->dev_hdl, "Update VF MAC is invalid\n");
return -EINVAL;
}
if (vf_info->pf_set_mac && !(vf_info->trust)) {
- nic_warn(nic_io->hwdev->dev_hdl, "PF has already set VF mac.\n");
+ nic_warn(nic_io->hwdev->dev_hdl, "PF has already set VF mac\n");
mac_out->status = HINIC_PF_SET_VF_ALREADY;
*out_size = sizeof(*mac_out);
return 0;
@@ -2724,7 +2726,7 @@ int nic_pf_mbox_handler(void *hwdev, u16 vf_id, u8 cmd, void *buf_in,
if (!hinic_mbox_check_cmd_valid(hwdev, nic_cmd_support_vf, vf_id, cmd,
buf_in, in_size, size)) {
nic_err(((struct hinic_hwdev *)hwdev)->dev_hdl,
- "PF Receive VF nic cmd(0x%x), mbox len(0x%x) is invalid\n",
+ "PF Receive VF nic cmd(0x%x) or mbox len(0x%x) is invalid\n",
cmd, in_size);
err = HINIC_MBOX_VF_CMD_ERROR;
return err;
@@ -2793,7 +2795,7 @@ int nic_pf_mbox_handler(void *hwdev, u16 vf_id, u8 cmd, void *buf_in,
if (err && err != HINIC_DEV_BUSY_ACTIVE_FW &&
err != HINIC_MBOX_PF_BUSY_ACTIVE_FW)
- nic_err(nic_io->hwdev->dev_hdl, "PF receive VF L2NIC cmd: %d process error, err:%d\n",
+ nic_err(nic_io->hwdev->dev_hdl, "PF receive VF L2NIC cmd: %d process error, err: %d\n",
cmd, err);
return err;
}
@@ -3522,13 +3524,13 @@ int hinic_set_anti_attack(void *hwdev, bool enable)
&rate, sizeof(rate), &rate,
&out_size);
if (err || !out_size || rate.status) {
- nic_err(nic_hwdev->dev_hdl, "Can`t %s port Anti-Attack rate limit err: %d, status: 0x%x, out size: 0x%x\n",
+ nic_err(nic_hwdev->dev_hdl, "Can't %s port Anti-Attack rate limit err: %d, status: 0x%x, out size: 0x%x\n",
(enable ? "enable" : "disable"), err, rate.status,
out_size);
return -EINVAL;
}
- nic_info(nic_hwdev->dev_hdl, "%s port Anti-Attack rate limit succeed.\n",
+ nic_info(nic_hwdev->dev_hdl, "%s port Anti-Attack rate limit succeed\n",
(enable ? "Enable" : "Disable"));
return 0;
@@ -3616,13 +3618,13 @@ int hinic_set_super_cqe_state(void *hwdev, bool enable)
&super_cqe, sizeof(super_cqe), &super_cqe,
&out_size);
if (err || !out_size || super_cqe.status) {
- nic_err(nic_hwdev->dev_hdl, "Can`t %s surper cqe, err: %d, status: 0x%x, out size: 0x%x\n",
+ nic_err(nic_hwdev->dev_hdl, "Can't %s surper cqe, err: %d, status: 0x%x, out size: 0x%x\n",
(enable ? "enable" : "disable"), err, super_cqe.status,
out_size);
return -EINVAL;
}
- nic_info(nic_hwdev->dev_hdl, "%s super cqe succeed.\n",
+ nic_info(nic_hwdev->dev_hdl, "%s super cqe succeed\n",
(enable ? "Enable" : "Disable"));
return 0;
@@ -3960,16 +3962,16 @@ int hinic_disable_tx_promisc(void *hwdev)
info.cfg = HINIC_TX_PROMISC_DISABLE;
err = hinic_msg_to_mgmt_sync(hwdev, HINIC_MOD_L2NIC,
- HINIC_PORT_CMD_DISABLE_PROMISIC, &info,
+ HINIC_PORT_CMD_DISABLE_PROMISC, &info,
sizeof(info), &info, &out_size, 0);
if (err || !out_size || info.status) {
if (info.status == HINIC_MGMT_CMD_UNSUPPORTED) {
nic_info(((struct hinic_hwdev *)hwdev)->dev_hdl,
- "Unsupported to disable TX promisic\n");
+ "Unsupported to disable TX promisc\n");
return 0;
}
nic_err(((struct hinic_hwdev *)hwdev)->dev_hdl,
- "Failed to disable multihost promisic, err: %d, status: 0x%x, out size: 0x%x\n",
+ "Failed to disable multihost promisc, err: %d, status: 0x%x, out size: 0x%x\n",
err, info.status, out_size);
return -EFAULT;
}
diff --git a/drivers/net/ethernet/huawei/hinic/hinic_nic_dbg.c b/drivers/net/ethernet/huawei/hinic/hinic_nic_dbg.c
index e49a21fa952e..9bcdcd3ce1c0 100644
--- a/drivers/net/ethernet/huawei/hinic/hinic_nic_dbg.c
+++ b/drivers/net/ethernet/huawei/hinic/hinic_nic_dbg.c
@@ -101,7 +101,7 @@ u16 hinic_dbg_get_rq_hw_pi(void *hwdev, u16 q_id)
if (qp)
return cpu_to_be16(*qp->rq.pi_virt_addr);
- nic_err(((struct hinic_hwdev *)hwdev)->dev_hdl, "Get rq hw pi failed!\n");
+ nic_err(((struct hinic_hwdev *)hwdev)->dev_hdl, "Get rq hw pi failed\n");
return INVALID_PI;
}
@@ -184,7 +184,7 @@ static int get_wqe_info(struct hinic_wq *wq, u16 idx, u16 wqebb_cnt,
return -EFAULT;
if (*wqe_size != (u16)(wq->wqebb_size * wqebb_cnt)) {
- pr_err("Unexpect out buf size from user :%d, expect: %d\n",
+ pr_err("Unexpect out buf size from user: %d, expect: %d\n",
*wqe_size, (u16)(wq->wqebb_size * wqebb_cnt));
return -EFAULT;
}
@@ -231,7 +231,7 @@ int hinic_dbg_get_rq_wqe_info(void *hwdev, u16 q_id, u16 idx, u16 wqebb_cnt,
int hinic_dbg_get_hw_stats(const void *hwdev, u8 *hw_stats, u16 *out_size)
{
if (!hw_stats || *out_size != sizeof(struct hinic_hw_stats)) {
- pr_err("Unexpect out buf size from user :%d, expect: %lu\n",
+ pr_err("Unexpect out buf size from user: %d, expect: %lu\n",
*out_size, sizeof(struct hinic_hw_stats));
return -EFAULT;
}
diff --git a/drivers/net/ethernet/huawei/hinic/hinic_nic_io.c b/drivers/net/ethernet/huawei/hinic/hinic_nic_io.c
index f2fb0bc54570..b935c41a4435 100644
--- a/drivers/net/ethernet/huawei/hinic/hinic_nic_io.c
+++ b/drivers/net/ethernet/huawei/hinic/hinic_nic_io.c
@@ -253,7 +253,7 @@ int hinic_create_qps(void *dev, u16 num_qp, u16 sq_depth, u16 rq_depth,
max_qps = hinic_func_max_qnum(hwdev);
if (num_qp > max_qps) {
- nic_err(hwdev->dev_hdl, "Create number of qps: %d > max number of qps:%d\n",
+ nic_err(hwdev->dev_hdl, "Create number of qps: %d > max number of qps: %d\n",
num_qp, max_qps);
return -EINVAL;
}
diff --git a/drivers/net/ethernet/huawei/hinic/hinic_nictool.c b/drivers/net/ethernet/huawei/hinic/hinic_nictool.c
index 3fcb855bd605..8ef008af05e8 100644
--- a/drivers/net/ethernet/huawei/hinic/hinic_nictool.c
+++ b/drivers/net/ethernet/huawei/hinic/hinic_nictool.c
@@ -336,7 +336,7 @@ static int get_inter_num(struct hinic_nic_dev *nic_dev, void *buf_in,
if (*out_size != sizeof(u16)) {
nicif_err(nic_dev, drv, nic_dev->netdev,
- "Unexpect out buf size from user :%d, expect: %lu\n",
+ "Unexpect out buf size from user: %d, expect: %lu\n",
*out_size, sizeof(u16));
return -EFAULT;
}
@@ -381,7 +381,7 @@ static int get_num_cos(struct hinic_nic_dev *nic_dev, void *buf_in,
if (*out_size != sizeof(*num_cos)) {
nicif_err(nic_dev, drv, nic_dev->netdev,
- "Unexpect out buf size from user :%d, expect: %lu\n",
+ "Unexpect out buf size from user: %d, expect: %lu\n",
*out_size, sizeof(*num_cos));
return -EFAULT;
}
@@ -399,7 +399,7 @@ static int get_dcb_cos_up_map(struct hinic_nic_dev *nic_dev, void *buf_in,
if (*out_size != sizeof(*map)) {
nicif_err(nic_dev, drv, nic_dev->netdev,
- "Unexpect out buf size from user :%d, expect: %lu\n",
+ "Unexpect out buf size from user: %d, expect: %lu\n",
*out_size, sizeof(*map));
return -EFAULT;
}
@@ -438,7 +438,7 @@ static int get_rx_cqe_info(struct hinic_nic_dev *nic_dev, void *buf_in,
if (*out_size != sizeof(struct hinic_rq_cqe)) {
nicif_err(nic_dev, drv, nic_dev->netdev,
- "Unexpect out buf size from user :%d, expect: %lu\n",
+ "Unexpect out buf size from user: %d, expect: %lu\n",
*out_size, sizeof(struct hinic_rq_cqe));
return -EFAULT;
}
@@ -477,7 +477,7 @@ static int hinic_dbg_get_sq_info(struct hinic_nic_dev *nic_dev, u16 q_id,
if (*msg_size != sizeof(*sq_info)) {
nicif_err(nic_dev, drv, nic_dev->netdev,
- "Unexpect out buf size from user :%d, expect: %lu\n",
+ "Unexpect out buf size from user: %d, expect: %lu\n",
*msg_size, sizeof(*sq_info));
return -EFAULT;
}
@@ -576,7 +576,7 @@ static int get_loopback_mode(struct hinic_nic_dev *nic_dev, void *buf_in,
if (*out_size != sizeof(*mode)) {
nicif_err(nic_dev, drv, nic_dev->netdev,
- "Unexpect out buf size from user :%d, expect: %lu\n",
+ "Unexpect out buf size from user: %d, expect: %lu\n",
*out_size, sizeof(*mode));
return -EFAULT;
}
@@ -717,7 +717,7 @@ int set_pfc_control(struct hinic_nic_dev *nic_dev, void *buf_in,
pfc_en = *((u8 *)buf_in);
if (!(test_bit(HINIC_DCB_ENABLE, &nic_dev->flags))) {
nicif_err(nic_dev, drv, nic_dev->netdev,
- "Need to enable dcb first.\n");
+ "Need to enable dcb first\n");
err = 0xff;
goto exit;
}
@@ -752,7 +752,7 @@ int set_ets(struct hinic_nic_dev *nic_dev, void *buf_in,
if (!(test_bit(HINIC_DCB_ENABLE, &nic_dev->flags))) {
nicif_err(nic_dev, drv, nic_dev->netdev,
- "Need to enable dcb first.\n");
+ "Need to enable dcb first\n");
err = 0xff;
goto exit;
}
@@ -765,7 +765,7 @@ int set_ets(struct hinic_nic_dev *nic_dev, void *buf_in,
if (!(test_bit(HINIC_ETS_ENABLE, &nic_dev->flags))) {
nicif_err(nic_dev, drv, nic_dev->netdev,
- "Need to enable ets first.\n");
+ "Need to enable ets first\n");
err = 0xff;
goto exit;
}
@@ -792,7 +792,7 @@ int set_ets(struct hinic_nic_dev *nic_dev, void *buf_in,
err = hinic_dcbnl_set_ets_tool(nic_dev->netdev);
if (err) {
nicif_err(nic_dev, drv, nic_dev->netdev,
- "Failed to set ets [%d].\n", err);
+ "Failed to set ets [%d]\n", err);
}
exit:
*((u8 *)buf_out) = err;
@@ -838,7 +838,7 @@ int get_support_tc(struct hinic_nic_dev *nic_dev, void *buf_in,
if (*out_size != sizeof(*tc_num)) {
nicif_err(nic_dev, drv, nic_dev->netdev,
- "Unexpect out buf size from user :%d, expect: %lu\n",
+ "Unexpect out buf size from user: %d, expect: %lu\n",
*out_size, sizeof(*tc_num));
return -EFAULT;
}
@@ -881,7 +881,7 @@ int set_pfc_priority(struct hinic_nic_dev *nic_dev, void *buf_in,
if (!((test_bit(HINIC_DCB_ENABLE, &nic_dev->flags)) &&
nic_dev->tmp_dcb_cfg.pfc_state)) {
nicif_err(nic_dev, drv, nic_dev->netdev,
- "Need to enable pfc first.\n");
+ "Need to enable pfc first\n");
err = 0xff;
goto exit;
}
@@ -983,7 +983,7 @@ static int set_poll_weight(struct hinic_nic_dev *nic_dev, void *buf_in,
if (!buf_in || in_size != sizeof(*weight_info)) {
nicif_err(nic_dev, drv, nic_dev->netdev,
- "Unexpect in buf size from user :%u, expect: %lu\n",
+ "Unexpect in buf size from user: %u, expect: %lu\n",
*out_size, sizeof(*weight_info));
return -EFAULT;
}
@@ -999,7 +999,7 @@ static int get_homologue(struct hinic_nic_dev *nic_dev, void *buf_in,
struct hinic_homologues *homo = buf_out;
if (!buf_out || *out_size != sizeof(*homo)) {
nicif_err(nic_dev, drv, nic_dev->netdev,
- "Unexpect out buf size from user :%d, expect: %lu\n",
+ "Unexpect out buf size from user: %d, expect: %lu\n",
*out_size, sizeof(*homo));
return -EFAULT;
}
@@ -1020,7 +1020,7 @@ static int set_homologue(struct hinic_nic_dev *nic_dev, void *buf_in,
struct hinic_homologues *homo = buf_in;
if (!buf_in || in_size != sizeof(*homo)) {
nicif_err(nic_dev, drv, nic_dev->netdev,
- "Unexpect in buf size from user :%d, expect: %lu\n",
+ "Unexpect in buf size from user: %d, expect: %lu\n",
*out_size, sizeof(*homo));
return -EFAULT;
}
@@ -1030,7 +1030,7 @@ static int set_homologue(struct hinic_nic_dev *nic_dev, void *buf_in,
} else if (homo->homo_state == HINIC_HOMOLOGUES_OFF) {
clear_bit(HINIC_SAME_RXTX, &nic_dev->flags);
} else {
- pr_err("Invalid parameters.\n");
+ pr_err("Invalid parameters\n");
return -EFAULT;
}
@@ -1047,7 +1047,7 @@ static int get_sset_count(struct hinic_nic_dev *nic_dev, void *buf_in,
if (!buf_in || !buf_out || in_size != sizeof(u32) ||
*out_size != sizeof(u32)) {
nicif_err(nic_dev, drv, nic_dev->netdev,
- "Invalid parameters.\n");
+ "Invalid parameters\n");
return -EINVAL;
}
@@ -1083,7 +1083,7 @@ static int get_sset_stats(struct hinic_nic_dev *nic_dev, void *buf_in,
if (count * sizeof(*items) != *out_size) {
nicif_err(nic_dev, drv, nic_dev->netdev,
- "Unexpect out buf size from user :%d, expect: %lu\n",
+ "Unexpect out buf size from user: %d, expect: %lu\n",
*out_size, count * sizeof(*items));
return -EINVAL;
}
@@ -1112,7 +1112,7 @@ static int get_func_type(void *hwdev, void *buf_in, u32 in_size,
func_typ = hinic_func_type(hwdev);
if (!buf_out || *out_size != sizeof(u16)) {
- pr_err("Unexpect out buf size from user :%d, expect: %lu\n",
+ pr_err("Unexpect out buf size from user: %d, expect: %lu\n",
*out_size, sizeof(u16));
return -EFAULT;
}
@@ -1126,7 +1126,7 @@ static int get_func_id(void *hwdev, void *buf_in, u32 in_size,
u16 func_id;
if (!buf_out || *out_size != sizeof(u16)) {
- pr_err("Unexpect out buf size from user :%d, expect: %lu\n",
+ pr_err("Unexpect out buf size from user: %d, expect: %lu\n",
*out_size, sizeof(u16));
return -EFAULT;
}
@@ -1145,7 +1145,7 @@ static int get_chip_faults_stats(void *hwdev, void *buf_in, u32 in_size,
if (!buf_in || !buf_out || *out_size != sizeof(*fault_info) ||
in_size != sizeof(*fault_info)) {
- pr_err("Unexpect out buf size from user :%d, expect: %lu\n",
+ pr_err("Unexpect out buf size from user: %d, expect: %lu\n",
*out_size, sizeof(*fault_info));
return -EFAULT;
}
@@ -1178,7 +1178,7 @@ static int get_drv_version(void *hwdev, void *buf_in, u32 in_size,
int err;
if (*out_size != sizeof(*ver_info)) {
- pr_err("Unexpect out buf size from user :%d, expect: %lu\n",
+ pr_err("Unexpect out buf size from user: %d, expect: %lu\n",
*out_size, sizeof(*ver_info));
return -EFAULT;
}
@@ -1212,7 +1212,7 @@ static int get_single_card_info(void *hwdev, void *buf_in, u32 in_size,
{
if (!buf_in || !buf_out || in_size != sizeof(struct card_info) ||
*out_size != sizeof(struct card_info)) {
- pr_err("Unexpect out buf size from user :%d, expect: %lu\n",
+ pr_err("Unexpect out buf size from user: %d, expect: %lu\n",
*out_size, sizeof(struct card_info));
return -EFAULT;
}
@@ -1230,7 +1230,7 @@ static int get_device_id(void *hwdev, void *buf_in, u32 in_size,
int err;
if (!buf_out || !buf_in || *out_size != sizeof(u16) ||
in_size != sizeof(u16)) {
- pr_err("Unexpect out buf size from user :%d, expect: %lu\n",
+ pr_err("Unexpect out buf size from user: %d, expect: %lu\n",
*out_size, sizeof(u16));
return -EFAULT;
}
@@ -1297,7 +1297,7 @@ static int __get_card_usr_api_chain_mem(int card_idx)
(void *)__get_free_pages(GFP_KERNEL,
DBGTOOL_PAGE_ORDER);
if (!g_card_vir_addr[card_idx]) {
- pr_err("Alloc api chain memory fail for card %d.\n",
+ pr_err("Alloc api chain memory fail for card %d\n",
card_idx);
mutex_unlock(&g_addr_lock);
return -EFAULT;
@@ -1309,7 +1309,7 @@ static int __get_card_usr_api_chain_mem(int card_idx)
g_card_phy_addr[card_idx] =
virt_to_phys(g_card_vir_addr[card_idx]);
if (!g_card_phy_addr[card_idx]) {
- pr_err("phy addr for card %d is 0.\n", card_idx);
+ pr_err("phy addr for card %d is 0\n", card_idx);
free_pages((unsigned long)g_card_vir_addr[card_idx],
DBGTOOL_PAGE_ORDER);
g_card_vir_addr[card_idx] = NULL;
@@ -1589,7 +1589,7 @@ static int send_to_ucode(void *hwdev, struct msg_module *nt_msg,
nt_msg->ucode_cmd.ucode_db.ucode_cmd_type,
buf_in, buf_out, 0);
if (ret)
- pr_err("Send direct cmdq err: %d!\n", ret);
+ pr_err("Send direct cmdq err: %d\n", ret);
} else {
ret = hinic_cmdq_detail_resp
(hwdev, nt_msg->ucode_cmd.ucode_db.cmdq_ack_type,
@@ -1597,7 +1597,7 @@ static int send_to_ucode(void *hwdev, struct msg_module *nt_msg,
nt_msg->ucode_cmd.ucode_db.ucode_cmd_type,
buf_in, buf_out, 0);
if (ret)
- pr_err("Send detail cmdq err: %d!\n", ret);
+ pr_err("Send detail cmdq err: %d\n", ret);
}
return ret;
@@ -1732,7 +1732,7 @@ static int check_useparam_valid(struct msg_module *nt_msg, void *buf_in)
u32 rd_len = csr_write_msg->rd_len;
if (rd_len > TOOL_COUNTER_MAX_LEN) {
- pr_err("Csr read or write len is invalid!\n");
+ pr_err("Csr read or write len is invalid\n");
return -EINVAL;
}
@@ -1810,7 +1810,7 @@ static int sm_rd32(void *hwdev, u32 id, u8 instance,
ret = hinic_sm_ctr_rd32(hwdev, node, instance, id, &val1);
if (ret) {
- pr_err("Get sm ctr information (32 bits)failed!\n");
+ pr_err("Get sm ctr information (32 bits)failed\n");
val1 = 0xffffffff;
}
@@ -1827,7 +1827,7 @@ static int sm_rd64_pair(void *hwdev, u32 id, u8 instance,
ret = hinic_sm_ctr_rd64_pair(hwdev, node, instance, id, &val1, &val2);
if (ret) {
- pr_err("Get sm ctr information (64 bits pair)failed!\n");
+ pr_err("Get sm ctr information (64 bits pair)failed\n");
val1 = 0xffffffff;
}
@@ -1845,7 +1845,7 @@ static int sm_rd64(void *hwdev, u32 id, u8 instance,
ret = hinic_sm_ctr_rd64(hwdev, node, instance, id, &val1);
if (ret) {
- pr_err("Get sm ctr information (64 bits)failed!\n");
+ pr_err("Get sm ctr information (64 bits)failed\n");
val1 = 0xffffffff;
}
buf_out->val1 = val1;
@@ -1890,7 +1890,7 @@ static int send_to_sm(void *hwdev, struct msg_module *nt_msg,
}
if (ret)
- pr_err("Get sm information fail!\n");
+ pr_err("Get sm information fail\n");
*out_size = sizeof(struct sm_out_st);
@@ -2024,7 +2024,7 @@ static int get_self_test_cmd(struct msg_module *nt_msg)
ret = hinic_get_self_test_result(nt_msg->device_name, &res);
if (ret) {
- pr_err("Get self test result failed!\n");
+ pr_err("Get self test result failed\n");
return -EFAULT;
}
diff --git a/drivers/net/ethernet/huawei/hinic/hinic_port_cmd.h b/drivers/net/ethernet/huawei/hinic/hinic_port_cmd.h
index 0b13ba9d2f26..1d3c0301ba63 100644
--- a/drivers/net/ethernet/huawei/hinic/hinic_port_cmd.h
+++ b/drivers/net/ethernet/huawei/hinic/hinic_port_cmd.h
@@ -93,7 +93,7 @@ enum hinic_port_cmd {
HINIC_PORT_CMD_SET_JUMBO_FRAME_SIZE,
/* 0x4c ~ 0x57 have defined in base line */
- HINIC_PORT_CMD_DISABLE_PROMISIC = 0x4c,
+ HINIC_PORT_CMD_DISABLE_PROMISC = 0x4c,
HINIC_PORT_CMD_ENABLE_SPOOFCHK = 0x4e,
HINIC_PORT_CMD_GET_MGMT_VERSION = 0x58,
HINIC_PORT_CMD_GET_BOOT_VERSION,
diff --git a/drivers/net/ethernet/huawei/hinic/hinic_sriov.c b/drivers/net/ethernet/huawei/hinic/hinic_sriov.c
index 047023267ead..1a436c133785 100644
--- a/drivers/net/ethernet/huawei/hinic/hinic_sriov.c
+++ b/drivers/net/ethernet/huawei/hinic/hinic_sriov.c
@@ -39,7 +39,7 @@ int hinic_pci_sriov_disable(struct pci_dev *dev)
if (test_and_set_bit(HINIC_SRIOV_DISABLE, &sriov_info->state)) {
nic_err(&sriov_info->pdev->dev,
- "SR-IOV disable in process, please wait");
+ "SR-IOV disable in process, please wait\n");
return -EPERM;
}
@@ -190,7 +190,7 @@ int hinic_ndo_set_vf_mac(struct net_device *netdev, int vf, u8 *mac)
return err;
nic_info(&sriov_info->pdev->dev, "Setting MAC %pM on VF %d\n", mac, vf);
- nic_info(&sriov_info->pdev->dev, "Reload the VF driver to make this change effective.");
+ nic_info(&sriov_info->pdev->dev, "Reload the VF driver to make this change effective\n");
return 0;
}
diff --git a/drivers/net/ethernet/huawei/hinic/hinic_tx.c b/drivers/net/ethernet/huawei/hinic/hinic_tx.c
index b556132a72af..8d921ad104e8 100644
--- a/drivers/net/ethernet/huawei/hinic/hinic_tx.c
+++ b/drivers/net/ethernet/huawei/hinic/hinic_tx.c
@@ -949,7 +949,7 @@ int hinic_setup_all_tx_resources(struct net_device *netdev)
txq = &nic_dev->txqs[q_id];
tx_info_sz = txq->q_depth * sizeof(*txq->tx_info);
if (!tx_info_sz) {
- nicif_err(nic_dev, drv, netdev, "Cannot allocate zero size tx%d info\n",
+ nicif_err(nic_dev, drv, netdev, "Cannot allocate zero size txq%d info\n",
q_id);
err = -EINVAL;
goto init_txq_err;
@@ -965,7 +965,7 @@ int hinic_setup_all_tx_resources(struct net_device *netdev)
err = hinic_setup_tx_wqe(txq);
if (err != txq->q_depth) {
- nicif_err(nic_dev, drv, netdev, "Failed to setup Tx:%d wqe\n",
+ nicif_err(nic_dev, drv, netdev, "Failed to setup Tx: %d wqe\n",
q_id);
q_id++;
goto init_txq_err;
diff --git a/drivers/net/ethernet/huawei/hinic/hinic_wq.c b/drivers/net/ethernet/huawei/hinic/hinic_wq.c
index 032b28332a65..fcf98413d2de 100644
--- a/drivers/net/ethernet/huawei/hinic/hinic_wq.c
+++ b/drivers/net/ethernet/huawei/hinic/hinic_wq.c
@@ -55,7 +55,7 @@ static int queue_alloc_page(void *handle, u64 **vaddr, u64 *paddr,
}
if (!ADDR_4K_ALIGNED(dma_addr)) {
- sdk_err(handle, "Cla is not 4k aligned!\n");
+ sdk_err(handle, "Cla is not 4k aligned\n");
goto shadow_vaddr_err;
}
--
2.25.1
1
5
Adam Ford (1):
omapfb: dss: Fix max fclk divider for omap36xx
Ben Skeggs (2):
drm/nouveau/fbcon: fix module unload when fbcon init has failed for
some reason
drm/nouveau/fbcon: zero-initialise the mode_cmd2 structure
Christoph Hellwig (1):
net/9p: validate fds in p9_fd_open
Cong Wang (1):
ipv6: fix memory leaks on IPV6_ADDRFORM path
David Howells (1):
rxrpc: Fix race between recvmsg and sendmsg on immediate call failure
Dexuan Cui (1):
Drivers: hv: vmbus: Ignore CHANNELMSG_TL_CONNECT_RESULT(23)
Eric Biggers (1):
Smack: fix use-after-free in smk_write_relabel_self()
Erik Ekman (1):
USB: serial: qcserial: add EM7305 QDL product ID
Forest Crossman (2):
usb: xhci: define IDs for various ASMedia host controllers
usb: xhci: Fix ASMedia ASM1142 DMA addressing
Francesco Ruggeri (1):
igb: reinit_locked() should be called with rtnl_lock
Frank van der Linden (1):
xattr: break delegations in {set,remove}xattr
Greg Kroah-Hartman (3):
USB: iowarrior: fix up report size handling for some devices
mtd: properly check all write ioctls for permissions
Linux 4.19.139
Grzegorz Siwik (1):
i40e: Wrong truncation from u16 to u8
Hangbin Liu (1):
Revert "vxlan: fix tos value before xmit"
Hui Wang (1):
Revert "ALSA: hda: call runtime_allow() for all hda controllers"
Ido Schimmel (2):
ipv4: Silence suspicious RCU usage warning
vxlan: Ensure FDB dump is performed under RCU
Jann Horn (1):
binder: Prevent context manager from incrementing ref 0
Johan Hovold (5):
leds: wm831x-status: fix use-after-free on unbind
leds: da903x: fix use-after-free on unbind
leds: lm3533: fix use-after-free on unbind
leds: 88pm860x: fix use-after-free on unbind
net: lan78xx: replace bogus endpoint lookup
Julian Squires (1):
cfg80211: check vendor command doit pointer before use
Landen Chao (1):
net: ethernet: mtk_eth_soc: fix MTU warnings
Lorenzo Bianconi (1):
net: gre: recompute gre csum for sctp over gre tunnels
Martyna Szapar (2):
i40e: Fix of memory leak and integer truncation in i40e_virtchnl.c
i40e: Memory leak in i40e_config_iwarp_qvlist
Peilin Ye (4):
Bluetooth: Fix slab-out-of-bounds read in
hci_extended_inquiry_result_evt()
Bluetooth: Prevent out-of-bounds read in hci_inquiry_result_evt()
Bluetooth: Prevent out-of-bounds read in
hci_inquiry_result_with_rssi_evt()
openvswitch: Prevent kernel-infoleak in ovs_ct_put_key()
Philippe Duplessis-Guindon (1):
tools lib traceevent: Fix memory leak in process_dynamic_array_len
Qiushi Wu (1):
firmware: Fix a reference count leak.
Rustam Kovhaev (1):
usb: hso: check for return value in hso_serial_common_create()
Sergey Nemov (1):
i40e: add num_vectors checker in iwarp handler
Stephen Hemminger (1):
hv_netvsc: do not use VF device if link is down
Suren Baghdasaryan (1):
staging: android: ashmem: Fix lockdep warning for write operation
Takashi Iwai (1):
ALSA: seq: oss: Serialize ioctls
Willem de Bruijn (1):
selftests/net: relax cpu affinity requirement in msg_zerocopy test
Wolfram Sang (2):
i2c: slave: improve sanity check when registering
i2c: slave: add sanity check when unregistering
Xin Long (1):
net: thunderx: use spin_lock_bh in nicvf_set_rx_mode_task()
Xin Xiong (1):
atm: fix atm_dev refcnt leaks in atmtcp_remove_persistent
Makefile | 2 +-
drivers/android/binder.c | 15 ++-
drivers/atm/atmtcp.c | 10 +-
drivers/firmware/qemu_fw_cfg.c | 7 +-
drivers/gpu/drm/nouveau/nouveau_fbcon.c | 3 +-
drivers/hv/channel_mgmt.c | 21 ++--
drivers/hv/vmbus_drv.c | 4 +
drivers/i2c/i2c-core-slave.c | 7 +-
drivers/leds/leds-88pm860x.c | 14 ++-
drivers/leds/leds-da903x.c | 14 ++-
drivers/leds/leds-lm3533.c | 12 +-
drivers/leds/leds-wm831x-status.c | 14 ++-
drivers/mtd/mtdchar.c | 56 +++++++--
.../net/ethernet/cavium/thunder/nicvf_main.c | 4 +-
.../ethernet/intel/i40e/i40e_virtchnl_pf.c | 51 +++++---
drivers/net/ethernet/intel/igb/igb_main.c | 9 ++
drivers/net/ethernet/mediatek/mtk_eth_soc.c | 2 +
drivers/net/hyperv/netvsc_drv.c | 7 +-
drivers/net/usb/hso.c | 5 +-
drivers/net/usb/lan78xx.c | 117 +++++-------------
drivers/net/vxlan.c | 10 +-
drivers/staging/android/ashmem.c | 12 ++
drivers/usb/host/xhci-pci.c | 10 +-
drivers/usb/misc/iowarrior.c | 35 ++++--
drivers/usb/serial/qcserial.c | 1 +
drivers/video/fbdev/omap2/omapfb/dss/dss.c | 2 +-
fs/xattr.c | 84 +++++++++++--
include/linux/hyperv.h | 2 +
include/linux/xattr.h | 2 +
include/net/addrconf.h | 1 +
net/9p/trans_fd.c | 24 ++--
net/bluetooth/hci_event.c | 11 +-
net/ipv4/fib_trie.c | 2 +-
net/ipv4/gre_offload.c | 13 +-
net/ipv6/anycast.c | 17 ++-
net/ipv6/ipv6_sockglue.c | 1 +
net/openvswitch/conntrack.c | 38 +++---
net/rxrpc/call_object.c | 27 ++--
net/rxrpc/conn_object.c | 8 +-
net/rxrpc/recvmsg.c | 2 +-
net/rxrpc/sendmsg.c | 3 +
net/wireless/nl80211.c | 6 +-
security/smack/smackfs.c | 13 +-
sound/core/seq/oss/seq_oss.c | 8 +-
sound/pci/hda/hda_intel.c | 1 -
tools/lib/traceevent/event-parse.c | 1 +
tools/testing/selftests/net/msg_zerocopy.c | 5 +-
47 files changed, 483 insertions(+), 230 deletions(-)
--
2.25.1
1
48

[PATCH 01/26] arm64/ascend: Add new enable_oom_killer interface for oom contrl
by Yang Yingliang 17 Aug '20
by Yang Yingliang 17 Aug '20
17 Aug '20
From: Weilong Chen <chenweilong(a)huawei.com>
ascend inclusion
category: feature
bugzilla: NA
CVE: NA
-------------------------------------------------
Support disable oom-killer, and report oom events to bbox
vm.enable_oom_killer:
0: disable oom killer
1: enable oom killer (default,compatible with mainline)
2: disable oom killer and panic on oom
Signed-off-by: Weilong Chen <chenweilong(a)huawei.com>
Reviewed-by: Kefeng Wang <wangkefeng.wang(a)huawei.com>
Signed-off-by: Yang Yingliang <yangyingliang(a)huawei.com>
---
arch/arm64/Kconfig | 11 +++++++++
include/linux/oom.h | 11 +++++++++
kernel/sysctl.c | 12 ++++++++++
mm/memcontrol.c | 6 +++++
mm/oom_kill.c | 56 +++++++++++++++++++++++++++++++++++++++++++++
mm/util.c | 6 +++++
6 files changed, 102 insertions(+)
diff --git a/arch/arm64/Kconfig b/arch/arm64/Kconfig
index 10fabb5f633d..4412f14547af 100644
--- a/arch/arm64/Kconfig
+++ b/arch/arm64/Kconfig
@@ -1351,6 +1351,17 @@ config ASCEND_DVPP_MMAP
special memory for DvPP processor, the new flag is only valid for Ascend
platform.
+config ASCEND_OOM
+ bool "Enable support for disable oom killer"
+ default y
+ help
+ In some cases we hopes that the oom will not kill the process when it occurs,
+ be able to notify the black box to report the event, and be able to trigger
+ the panic to locate the problem.
+ vm.enable_oom_killer:
+ 0: disable oom killer
+ 1: enable oom killer (default,compatible with mainline)
+ 2: disable oom killer and panic on oom
endif
endmenu
diff --git a/include/linux/oom.h b/include/linux/oom.h
index 69864a547663..689d32ab694b 100644
--- a/include/linux/oom.h
+++ b/include/linux/oom.h
@@ -117,4 +117,15 @@ extern struct task_struct *find_lock_task_mm(struct task_struct *p);
extern int sysctl_oom_dump_tasks;
extern int sysctl_oom_kill_allocating_task;
extern int sysctl_panic_on_oom;
+
+#ifdef CONFIG_ASCEND_OOM
+#define HISI_OOM_TYPE_NOMEM 0
+#define HISI_OOM_TYPE_OVERCOMMIT 1
+#define HISI_OOM_TYPE_CGROUP 2
+
+extern int sysctl_enable_oom_killer;
+extern int register_hisi_oom_notifier(struct notifier_block *nb);
+extern int hisi_oom_notifier_call(unsigned long val, void *v);
+extern int unregister_hisi_oom_notifier(struct notifier_block *nb);
+#endif
#endif /* _INCLUDE_LINUX_OOM_H */
diff --git a/kernel/sysctl.c b/kernel/sysctl.c
index 54ae74d3180b..665c9e2a8802 100644
--- a/kernel/sysctl.c
+++ b/kernel/sysctl.c
@@ -1264,6 +1264,18 @@ static struct ctl_table vm_table[] = {
.extra1 = &zero,
.extra2 = &two,
},
+#ifdef CONFIG_ASCEND_OOM
+ {
+ /* 0: diasable, 1: enable, 2: disable and panic on oom */
+ .procname = "enable_oom_killer",
+ .data = &sysctl_enable_oom_killer,
+ .maxlen = sizeof(sysctl_enable_oom_killer),
+ .mode = 0644,
+ .proc_handler = proc_dointvec_minmax,
+ .extra1 = &zero,
+ .extra2 = &two,
+ },
+#endif
{
.procname = "oom_kill_allocating_task",
.data = &sysctl_oom_kill_allocating_task,
diff --git a/mm/memcontrol.c b/mm/memcontrol.c
index e0377bae0bf6..a63bfd73da9a 100644
--- a/mm/memcontrol.c
+++ b/mm/memcontrol.c
@@ -1729,6 +1729,9 @@ static enum oom_status mem_cgroup_oom(struct mem_cgroup *memcg, gfp_t mask, int
current->memcg_in_oom = memcg;
current->memcg_oom_gfp_mask = mask;
current->memcg_oom_order = order;
+#ifdef CONFIG_ASCEND_OOM
+ hisi_oom_notifier_call(HISI_OOM_TYPE_CGROUP, NULL);
+#endif
return OOM_ASYNC;
}
@@ -1802,6 +1805,9 @@ bool mem_cgroup_oom_synchronize(bool handle)
mem_cgroup_out_of_memory(memcg, current->memcg_oom_gfp_mask,
current->memcg_oom_order);
} else {
+#ifdef CONFIG_ASCEND_OOM
+ hisi_oom_notifier_call(HISI_OOM_TYPE_CGROUP, NULL);
+#endif
schedule();
mem_cgroup_unmark_under_oom(memcg);
finish_wait(&memcg_oom_waitq, &owait.wait);
diff --git a/mm/oom_kill.c b/mm/oom_kill.c
index 8a4570c53e83..c08041ecd286 100644
--- a/mm/oom_kill.c
+++ b/mm/oom_kill.c
@@ -52,6 +52,9 @@
int sysctl_panic_on_oom;
int sysctl_oom_kill_allocating_task;
int sysctl_oom_dump_tasks = 1;
+#ifdef CONFIG_ASCEND_OOM
+int sysctl_enable_oom_killer = 1;
+#endif
/*
* Serializes oom killer invocations (out_of_memory()) from all contexts to
@@ -1047,6 +1050,42 @@ int unregister_oom_notifier(struct notifier_block *nb)
}
EXPORT_SYMBOL_GPL(unregister_oom_notifier);
+#ifdef CONFIG_ASCEND_OOM
+static BLOCKING_NOTIFIER_HEAD(hisi_oom_notify_list);
+
+int register_hisi_oom_notifier(struct notifier_block *nb)
+{
+ return blocking_notifier_chain_register(&hisi_oom_notify_list, nb);
+}
+EXPORT_SYMBOL_GPL(register_hisi_oom_notifier);
+
+static unsigned long last_jiffies;
+int hisi_oom_notifier_call(unsigned long val, void *v)
+{
+ /* when enable oom killer, just return */
+ if (sysctl_enable_oom_killer == 1)
+ return 0;
+
+ /* Print time interval to 10 seconds */
+ if (time_after(jiffies, last_jiffies + 10 * HZ)) {
+ pr_err("OOM_NOTIFIER: oom type %lu\n", val);
+ dump_stack();
+ show_mem(SHOW_MEM_FILTER_NODES, NULL);
+ dump_tasks(NULL, 0);
+ last_jiffies = jiffies;
+ }
+
+ return blocking_notifier_call_chain(&hisi_oom_notify_list, val, v);
+}
+EXPORT_SYMBOL_GPL(hisi_oom_notifier_call);
+
+int unregister_hisi_oom_notifier(struct notifier_block *nb)
+{
+ return blocking_notifier_chain_unregister(&hisi_oom_notify_list, nb);
+}
+EXPORT_SYMBOL_GPL(unregister_hisi_oom_notifier);
+#endif
+
/**
* out_of_memory - kill the "best" process when we run out of memory
* @oc: pointer to struct oom_control
@@ -1060,10 +1099,27 @@ bool out_of_memory(struct oom_control *oc)
{
unsigned long freed = 0;
enum oom_constraint constraint = CONSTRAINT_NONE;
+#ifdef CONFIG_ASCEND_OOM
+ unsigned long oom_type;
+#endif
if (oom_killer_disabled)
return false;
+#ifdef CONFIG_ASCEND_OOM
+ if (sysctl_enable_oom_killer == 0 || sysctl_enable_oom_killer == 2) {
+ if (is_memcg_oom(oc))
+ oom_type = HISI_OOM_TYPE_CGROUP;
+ else
+ oom_type = HISI_OOM_TYPE_NOMEM;
+
+ hisi_oom_notifier_call(oom_type, NULL);
+ if (unlikely(sysctl_enable_oom_killer == 2))
+ panic("Out of memory, panic by sysctl_enable_oom_killer");
+ return false;
+ }
+#endif
+
if (!is_memcg_oom(oc)) {
blocking_notifier_call_chain(&oom_notify_list, 0, &freed);
if (freed > 0)
diff --git a/mm/util.c b/mm/util.c
index 5515219168e8..ed64ef1f8387 100644
--- a/mm/util.c
+++ b/mm/util.c
@@ -17,6 +17,9 @@
#include <asm/sections.h>
#include <linux/uaccess.h>
+#ifdef CONFIG_ASCEND_OOM
+#include <linux/oom.h>
+#endif
#include "internal.h"
@@ -744,6 +747,9 @@ int __vm_enough_memory(struct mm_struct *mm, long pages, int cap_sys_admin)
if (percpu_counter_read_positive(&vm_committed_as) < allowed)
return 0;
error:
+#ifdef CONFIG_ASCEND_OOM
+ hisi_oom_notifier_call(HISI_OOM_TYPE_OVERCOMMIT, NULL);
+#endif
vm_unacct_memory(pages);
return -ENOMEM;
--
2.25.1
1
25
Hi ALL,
[Description]
The kernel branch openEuler-1.0-LTS has import the patch f6b330acc
but has no no_refcnt
and build failed
[Debug]
the upstream commit ad0f75 has introduce the no_refcnt to the struct sock_cgroup_data.
Maybe we should the merge the patch or revert it on branch openEuler-1.0-LTS
2
1
Euleros inclusion
Category: feature
Bugzilla: NA
CVE: NA
Use reserved memory to create a pmem device to store the
processes information that dumped before kernel update.
When you want to use this feature you need to declare by
"pmemmem=pmem_size:pmem_phystart" in cmdline.
(exp: pmemmem=100M:0x202000000000)
Signed-off-by: zhuling <zhuling8(a)huawei.com>
---
arch/arm64/kernel/setup.c | 5 +++
arch/arm64/mm/init.c | 90 ++++++++++++++++++++++++++++++++++++++
drivers/nvdimm/Kconfig | 11 +++++
drivers/nvdimm/Makefile | 3 ++
drivers/nvdimm/kup_pmem.c | 107 ++++++++++++++++++++++++++++++++++++++++++++++
include/linux/ioport.h | 1 +
include/linux/mm.h | 4 ++
lib/Kconfig | 6 +++
8 files changed, 227 insertions(+)
create mode 100644 drivers/nvdimm/kup_pmem.c
diff --git a/arch/arm64/kernel/setup.c b/arch/arm64/kernel/setup.c
index 155b8a6..e96cade 100644
--- a/arch/arm64/kernel/setup.c
+++ b/arch/arm64/kernel/setup.c
@@ -251,6 +251,11 @@ static void __init request_standard_resources(void)
if (kernel_data.start >= res->start &&
kernel_data.end <= res->end)
request_resource(res, &kernel_data);
+#ifdef CONFIG_KUP_PMEM_MEMORY
+ if (pmem_res.end)
+ insert_resource(&iomem_resource, &pmem_res);
+#endif
+
#ifdef CONFIG_KEXEC_CORE
/* Userspace will find "Crash kernel" region in /proc/iomem. */
if (crashk_low_res.end && crashk_low_res.start >= res->start &&
diff --git a/arch/arm64/mm/init.c b/arch/arm64/mm/init.c
index e43764d..169d663 100644
--- a/arch/arm64/mm/init.c
+++ b/arch/arm64/mm/init.c
@@ -65,6 +65,18 @@ phys_addr_t arm64_dma_phys_limit __ro_after_init;
struct res_mem res_mem[MAX_RES_REGIONS];
int res_mem_count;
+#ifdef CONFIG_KUP_PMEM_MEMORY
+static unsigned long long pmem_size, pmem_phystart;
+
+struct resource pmem_res = {
+ .name = "Kpmem Dev",
+ .start = 0,
+ .end = 0,
+ .flags = IORESOURCE_MEM,
+ .desc = IORES_DESC_KPMEM_DEV
+};
+#endif
+
#ifdef CONFIG_BLK_DEV_INITRD
static int __init early_initrd(char *p)
{
@@ -192,6 +204,80 @@ static void __init kexec_reserve_crashkres_pages(void)
}
#endif /* CONFIG_KEXEC_CORE */
+#ifdef CONFIG_KUP_PMEM_MEMORY
+/*
+ * reserve_pmem() - reserves memory for pmem
+ *
+ * This function reserves memory area given in "pmemmem=" kernel command
+ * line parameter. The memory reserved is used by pmem restore progress
+ * when kernel update.
+ */
+static int __init parse_pmem(char *par)
+{
+ char *cur = par;
+
+ if(!par)
+ return 0;
+
+ pmem_size = 0;
+ pmem_phystart = 0;
+
+ pmem_size = memparse(par, &cur);
+ if (par == cur) {
+ pr_warn("pmem: memory value expected\n");
+ return -EINVAL;
+ }
+
+ if (*cur == ':')
+ pmem_phystart = memparse(cur+1, &cur);
+ else if (*cur != ' ' && *cur != '\0') {
+ pr_warn("pmem: unrecognized char %c\n", *cur);
+ return -EINVAL;
+ }
+
+ return 0;
+}
+early_param("pmemmem", parse_pmem);
+
+static void __init reserve_pmem(void)
+{
+ if (!pmem_size ||!pmem_phystart) {
+ return;
+ }
+
+ pmem_size = PAGE_ALIGN(pmem_size);
+
+ if (!memblock_is_region_memory(pmem_phystart, pmem_size)) {
+ pr_warn("cannot reserve pmem: region is not memory!\n");
+ return;
+ }
+
+ if (memblock_is_region_reserved(pmem_phystart, pmem_size)) {
+ pr_warn("cannot reserve pmem: region overlaps reserved memory!\n");
+ return;
+ }
+
+ if (!IS_ALIGNED(pmem_phystart, SZ_2M)) {
+ pr_warn("cannot reserve pmem: base address is not 2MB aligned\n");
+ return;
+ }
+ memblock_reserve(pmem_phystart, pmem_size);
+ memblock_remove(pmem_phystart, pmem_size);
+ pr_info("pmem reserved: 0x%016llx - 0x%016llx (%lld MB)\n",
+ pmem_phystart, pmem_phystart + pmem_size, pmem_size >> 20);
+
+ pmem_res.start = pmem_phystart;
+ pmem_res.end = pmem_phystart + pmem_size - 1;
+}
+#else
+static void __init reserve_pmem(void)
+{
+}
+static void __init reserve_pmem_pages(void)
+{
+}
+#endif /*CONFIG_KUP_PMEM_MEMORY*/
+
#ifdef CONFIG_CRASH_DUMP
static int __init early_init_dt_scan_elfcorehdr(unsigned long node,
const char *uname, int depth, void *data)
@@ -584,6 +670,10 @@ void __init arm64_memblock_init(void)
reserve_elfcorehdr();
+#ifdef CONFIG_KUP_PMEM_MEMORY
+ reserve_pmem();
+#endif
+
high_memory = __va(memblock_end_of_DRAM() - 1) + 1;
dma_contiguous_reserve(arm64_dma_phys_limit);
diff --git a/drivers/nvdimm/Kconfig b/drivers/nvdimm/Kconfig
index 9d36473..1097a8d 100644
--- a/drivers/nvdimm/Kconfig
+++ b/drivers/nvdimm/Kconfig
@@ -112,4 +112,15 @@ config OF_PMEM
Select Y if unsure.
+config KUP_PMEM
+ tristate "Persistent memory for kernel update"
+ depends on LIBNVDIMM
+ depends on KUP_PMEM_MEMORY
+ default LIBNVDIMM
+ help
+ Allows regions of persistent memory to be described in the
+ device-tree.
+
+ Select Y if unsure.
+
endif
diff --git a/drivers/nvdimm/Makefile b/drivers/nvdimm/Makefile
index e884704..853cbcb 100644
--- a/drivers/nvdimm/Makefile
+++ b/drivers/nvdimm/Makefile
@@ -5,6 +5,7 @@ obj-$(CONFIG_ND_BTT) += nd_btt.o
obj-$(CONFIG_ND_BLK) += nd_blk.o
obj-$(CONFIG_X86_PMEM_LEGACY) += nd_e820.o
obj-$(CONFIG_OF_PMEM) += of_pmem.o
+obj-$(CONFIG_KUP_PMEM) += nd_kup_pmem.o
nd_pmem-y := pmem.o
@@ -14,6 +15,8 @@ nd_blk-y := blk.o
nd_e820-y := e820.o
+nd_kup_pmem-y := kup_pmem.o
+
libnvdimm-y := core.o
libnvdimm-y += bus.o
libnvdimm-y += dimm_devs.o
diff --git a/drivers/nvdimm/kup_pmem.c b/drivers/nvdimm/kup_pmem.c
new file mode 100644
index 00000000..d9b0633
--- /dev/null
+++ b/drivers/nvdimm/kup_pmem.c
@@ -0,0 +1,107 @@
+/*
+ * Copyright (c) Huawei Technologies Co., Ltd. 2020. All rights reserved.
+ *
+ * This source code is licensed under the GNU General Public License,
+ * Version 2. See the file COPYING for more details.
+ *
+ * kup_pmem.c - kernel update support code.
+ * create a pmem device to store the processes information that is dumped
+ * when we want to kernel update.
+ */
+
+#include <linux/platform_device.h>
+#include <linux/memory_hotplug.h>
+#include <linux/libnvdimm.h>
+#include <linux/module.h>
+#include <asm/io.h>
+
+static const struct attribute_group *kup_pmem_attribute_groups[] = {
+ &nvdimm_bus_attribute_group,
+ NULL,
+};
+
+static const struct attribute_group *kup_pmem_region_attribute_groups[] = {
+ &nd_region_attribute_group,
+ &nd_device_attribute_group,
+ NULL,
+};
+
+static int kup_pmem_remove(struct platform_device *pdev)
+{
+ struct nvdimm_bus *nvdimm_bus = platform_get_drvdata(pdev);
+
+ nvdimm_bus_unregister(nvdimm_bus);
+
+ return 0;
+}
+
+static int kup_register_one(struct resource *res, void *data)
+{
+ struct nd_region_desc ndr_desc;
+ struct nvdimm_bus *nvdimm_bus = data;
+
+ memset(&ndr_desc, 0, sizeof(ndr_desc));
+ ndr_desc.res = res;
+ ndr_desc.attr_groups = kup_pmem_region_attribute_groups;
+ ndr_desc.numa_node = NUMA_NO_NODE;
+ set_bit(ND_REGION_PAGEMAP, &ndr_desc.flags);
+ if (!nvdimm_pmem_region_create(nvdimm_bus, &ndr_desc))
+ return -ENXIO;
+ return 0;
+}
+
+static int kup_pmem_probe(struct platform_device *pdev)
+{
+ static struct nvdimm_bus_descriptor nd_desc;
+ struct device *dev = &pdev->dev;
+ struct nvdimm_bus *nvdimm_bus;
+ int rc = -ENXIO;
+
+ nd_desc.attr_groups = kup_pmem_attribute_groups;
+ nd_desc.provider_name = "kup_pmem";
+ nd_desc.module = THIS_MODULE;
+ nvdimm_bus = nvdimm_bus_register(dev, &nd_desc);
+ if (!nvdimm_bus)
+ goto err;
+ platform_set_drvdata(pdev, nvdimm_bus);
+
+ rc = walk_iomem_res_desc(IORES_DESC_KPMEM_DEV,
+ IORESOURCE_MEM, 0, -1, nvdimm_bus, kup_register_one);
+ if (rc)
+ goto err;
+
+ return 0;
+err:
+ nvdimm_bus_unregister(nvdimm_bus);
+ dev_err(dev, "kup_pmem: failed to register legacy persistent memory ranges\n");
+ return rc;
+}
+
+static struct platform_driver kup_pmem_driver = {
+ .probe = kup_pmem_probe,
+ .remove = kup_pmem_remove,
+ .driver = {
+ .name = "kup_pmem",
+ },
+};
+static struct platform_device *pdev;
+
+static __init int register_kup_pmem(void)
+{
+ platform_driver_register(&kup_pmem_driver);
+ pdev = platform_device_alloc("kup_pmem", -1);
+
+ return platform_device_add(pdev);
+}
+
+static __exit void unregister_kup_pmem(void)
+{
+ platform_device_del(pdev);
+ platform_driver_unregister(&kup_pmem_driver);
+}
+
+module_init(register_kup_pmem);
+module_exit(unregister_kup_pmem);
+MODULE_ALIAS("platform:kup_pmem*");
+MODULE_LICENSE("GPL v2");
+MODULE_AUTHOR("Huawei Corporation");
diff --git a/include/linux/ioport.h b/include/linux/ioport.h
index 5330288..c5f59b9 100644
--- a/include/linux/ioport.h
+++ b/include/linux/ioport.h
@@ -139,6 +139,7 @@ enum {
IORES_DESC_PERSISTENT_MEMORY_LEGACY = 5,
IORES_DESC_DEVICE_PRIVATE_MEMORY = 6,
IORES_DESC_DEVICE_PUBLIC_MEMORY = 7,
+ IORES_DESC_KPMEM_DEV = 8,
};
/* helpers to define resources */
diff --git a/include/linux/mm.h b/include/linux/mm.h
index b985af8..d84b0f0 100644
--- a/include/linux/mm.h
+++ b/include/linux/mm.h
@@ -38,6 +38,10 @@ struct bdi_writeback;
void init_mm_internals(void);
+#ifdef CONFIG_KUP_PMEM_MEMORY
+extern struct resource pmem_res;
+#endif
+
#ifndef CONFIG_NEED_MULTIPLE_NODES /* Don't use mapnrs, do it properly */
extern unsigned long max_mapnr;
diff --git a/lib/Kconfig b/lib/Kconfig
index a3928d4..cc49a86 100644
--- a/lib/Kconfig
+++ b/lib/Kconfig
@@ -621,3 +621,9 @@ config GENERIC_LIB_CMPDI2
config GENERIC_LIB_UCMPDI2
bool
+
+config KUP_PMEM_MEMORY
+ bool "reserve memory for kup pmem to store image"
+ default y
+ help
+ Say y here to enable this feature
--
2.9.5
1
0
euleros inclusion
category: feature
bugzilla: NA
issues: #I1RC8Z
CVE: NA
In normal kexec, relocating kernel may cost 5 ~ 10 seconds, to
copy all segments from vmalloced memory to kernel boot memory,
because of disabled mmu.
We introduce quick kexec to save time of copying memory as above,
just like kdump(kexec on crash), by using reserved memory
"Quick Kexec".
Constructing quick kimage as the same as crash kernel,
then simply copy all segments of kimage to reserved memroy.
We also add this support in syscall kexec_load using flags
of KEXEC_QUICK.
Signed-off-by: Sang Yan <sangyan(a)huawei.com>
---
arch/Kconfig | 7 +++++++
include/linux/ioport.h | 3 +++
include/linux/kexec.h | 13 +++++++++++-
include/uapi/linux/kexec.h | 3 +++
kernel/kexec.c | 10 ++++++++++
kernel/kexec_core.c | 41 +++++++++++++++++++++++++++++---------
6 files changed, 67 insertions(+), 10 deletions(-)
diff --git a/arch/Kconfig b/arch/Kconfig
index b54e485e47ae..1a9d00a6e122 100644
--- a/arch/Kconfig
+++ b/arch/Kconfig
@@ -18,6 +18,13 @@ config KEXEC_CORE
select CRASH_CORE
bool
+config QUICK_KEXEC
+ bool "Support for quick kexec"
+ depends on KEXEC_CORE
+ help
+ Say y here to enable this feature.
+ It use reserved memory to accelerate kexec.
+
config HAVE_IMA_KEXEC
bool
diff --git a/include/linux/ioport.h b/include/linux/ioport.h
index 5330288da8db..a42a1800c133 100644
--- a/include/linux/ioport.h
+++ b/include/linux/ioport.h
@@ -139,6 +139,9 @@ enum {
IORES_DESC_PERSISTENT_MEMORY_LEGACY = 5,
IORES_DESC_DEVICE_PRIVATE_MEMORY = 6,
IORES_DESC_DEVICE_PUBLIC_MEMORY = 7,
+#ifdef CONFIG_QUICK_KEXEC
+ IORES_DESC_QUICK_KEXEC = 8,
+#endif
};
/* helpers to define resources */
diff --git a/include/linux/kexec.h b/include/linux/kexec.h
index d6b8d0a69720..d5e42a44f2ca 100644
--- a/include/linux/kexec.h
+++ b/include/linux/kexec.h
@@ -233,9 +233,12 @@ struct kimage {
unsigned long control_page;
/* Flags to indicate special processing */
- unsigned int type : 1;
+ unsigned int type : 2;
#define KEXEC_TYPE_DEFAULT 0
#define KEXEC_TYPE_CRASH 1
+#ifdef CONFIG_QUICK_KEXEC
+#define KEXEC_TYPE_QUICK 2
+#endif
unsigned int preserve_context : 1;
/* If set, we are using file mode kexec syscall */
unsigned int file_mode:1;
@@ -296,6 +299,11 @@ extern int kexec_load_disabled;
#define KEXEC_FLAGS (KEXEC_ON_CRASH | KEXEC_PRESERVE_CONTEXT)
#endif
+#ifdef CONFIG_QUICK_KEXEC
+#undef KEXEC_FLAGS
+#define KEXEC_FLAGS (KEXEC_ON_CRASH | KEXEC_QUICK)
+#endif
+
/* List of defined/legal kexec file flags */
#define KEXEC_FILE_FLAGS (KEXEC_FILE_UNLOAD | KEXEC_FILE_ON_CRASH | \
KEXEC_FILE_NO_INITRAMFS)
@@ -305,6 +313,9 @@ extern int kexec_load_disabled;
extern struct resource crashk_res;
extern struct resource crashk_low_res;
extern note_buf_t __percpu *crash_notes;
+#ifdef CONFIG_QUICK_KEXEC
+extern struct resource quick_kexec_res;
+#endif
/* flag to track if kexec reboot is in progress */
extern bool kexec_in_progress;
diff --git a/include/uapi/linux/kexec.h b/include/uapi/linux/kexec.h
index 6d112868272d..dcf9857452da 100644
--- a/include/uapi/linux/kexec.h
+++ b/include/uapi/linux/kexec.h
@@ -12,6 +12,9 @@
/* kexec flags for different usage scenarios */
#define KEXEC_ON_CRASH 0x00000001
#define KEXEC_PRESERVE_CONTEXT 0x00000002
+#ifdef CONFIG_QUICK_KEXEC
+#define KEXEC_QUICK 0x00000004
+#endif
#define KEXEC_ARCH_MASK 0xffff0000
/*
diff --git a/kernel/kexec.c b/kernel/kexec.c
index 68559808fdfa..47dfad722b7c 100644
--- a/kernel/kexec.c
+++ b/kernel/kexec.c
@@ -46,6 +46,9 @@ static int kimage_alloc_init(struct kimage **rimage, unsigned long entry,
int ret;
struct kimage *image;
bool kexec_on_panic = flags & KEXEC_ON_CRASH;
+#ifdef CONFIG_QUICK_KEXEC
+ bool kexec_on_quick = flags & KEXEC_QUICK;
+#endif
if (kexec_on_panic) {
/* Verify we have a valid entry point */
@@ -71,6 +74,13 @@ static int kimage_alloc_init(struct kimage **rimage, unsigned long entry,
image->type = KEXEC_TYPE_CRASH;
}
+#ifdef CONFIG_QUICK_KEXEC
+ if (kexec_on_quick) {
+ image->control_page = quick_kexec_res.start;
+ image->type = KEXEC_TYPE_QUICK;
+ }
+#endif
+
ret = sanity_check_segment_list(image);
if (ret)
goto out_free_image;
diff --git a/kernel/kexec_core.c b/kernel/kexec_core.c
index b36c9c46cd2c..595a757af656 100644
--- a/kernel/kexec_core.c
+++ b/kernel/kexec_core.c
@@ -74,6 +74,16 @@ struct resource crashk_low_res = {
.desc = IORES_DESC_CRASH_KERNEL
};
+#ifdef CONFIG_QUICK_KEXEC
+struct resource quick_kexec_res = {
+ .name = "Quick kexec",
+ .start = 0,
+ .end = 0,
+ .flags = IORESOURCE_BUSY | IORESOURCE_SYSTEM_RAM,
+ .desc = IORES_DESC_QUICK_KEXEC
+};
+#endif
+
int kexec_should_crash(struct task_struct *p)
{
/*
@@ -470,8 +480,10 @@ static struct page *kimage_alloc_normal_control_pages(struct kimage *image,
return pages;
}
-static struct page *kimage_alloc_crash_control_pages(struct kimage *image,
- unsigned int order)
+
+static struct page *kimage_alloc_special_control_pages(struct kimage *image,
+ unsigned int order,
+ unsigned long end)
{
/* Control pages are special, they are the intermediaries
* that are needed while we copy the rest of the pages
@@ -501,7 +513,7 @@ static struct page *kimage_alloc_crash_control_pages(struct kimage *image,
size = (1 << order) << PAGE_SHIFT;
hole_start = (image->control_page + (size - 1)) & ~(size - 1);
hole_end = hole_start + size - 1;
- while (hole_end <= crashk_res.end) {
+ while (hole_end <= end) {
unsigned long i;
cond_resched();
@@ -536,7 +548,6 @@ static struct page *kimage_alloc_crash_control_pages(struct kimage *image,
return pages;
}
-
struct page *kimage_alloc_control_pages(struct kimage *image,
unsigned int order)
{
@@ -547,8 +558,15 @@ struct page *kimage_alloc_control_pages(struct kimage *image,
pages = kimage_alloc_normal_control_pages(image, order);
break;
case KEXEC_TYPE_CRASH:
- pages = kimage_alloc_crash_control_pages(image, order);
+ pages = kimage_alloc_special_control_pages(image, order,
+ crashk_res.end);
+ break;
+#ifdef CONFIG_QUICK_KEXEC
+ case KEXEC_TYPE_QUICK:
+ pages = kimage_alloc_special_control_pages(image, order,
+ quick_kexec_res.end);
break;
+#endif
}
return pages;
@@ -898,11 +916,11 @@ static int kimage_load_normal_segment(struct kimage *image,
return result;
}
-static int kimage_load_crash_segment(struct kimage *image,
+static int kimage_load_special_segment(struct kimage *image,
struct kexec_segment *segment)
{
- /* For crash dumps kernels we simply copy the data from
- * user space to it's destination.
+ /* For crash dumps kernels and quick kexec kernels
+ * we simply copy the data from user space to it's destination.
* We do things a page at a time for the sake of kmap.
*/
unsigned long maddr;
@@ -976,8 +994,13 @@ int kimage_load_segment(struct kimage *image,
result = kimage_load_normal_segment(image, segment);
break;
case KEXEC_TYPE_CRASH:
- result = kimage_load_crash_segment(image, segment);
+ result = kimage_load_special_segment(image, segment);
+ break;
+#ifdef CONFIG_QUICK_KEXEC
+ case KEXEC_TYPE_QUICK:
+ result = kimage_load_special_segment(image, segment);
break;
+#endif
}
return result;
--
2.19.1
1
1