diff --git a/api/api.c b/api/api.c
index 2e955f7baf2..05f0203584d 100644
--- a/api/api.c
+++ b/api/api.c
@@ -13,6 +13,7 @@
 #include <env_internal.h>
 #include <time.h>
 #include <linux/delay.h>
+#include <linux/string.h>
 #include <linux/types.h>
 #include <api_public.h>
 #include <u-boot/crc.h>
diff --git a/api/api_net.c b/api/api_net.c
index 7515c26e8b4..63ac3ee09c7 100644
--- a/api/api_net.c
+++ b/api/api_net.c
@@ -8,6 +8,7 @@
 #include <config.h>
 #include <common.h>
 #include <net.h>
+#include <linux/string.h>
 #include <linux/types.h>
 #include <api_public.h>
 
diff --git a/arch/arc/lib/relocate.c b/arch/arc/lib/relocate.c
index 7f531c95eec..a1663c1eb39 100644
--- a/arch/arc/lib/relocate.c
+++ b/arch/arc/lib/relocate.c
@@ -8,6 +8,7 @@
 #include <log.h>
 #include <asm-generic/sections.h>
 #include <asm/global_data.h>
+#include <linux/string.h>
 
 extern ulong __image_copy_start;
 extern ulong __ivt_start;
diff --git a/arch/arm/cpu/arm1136/mx35/generic.c b/arch/arm/cpu/arm1136/mx35/generic.c
index cbf76ab4fee..99e7ec0744f 100644
--- a/arch/arm/cpu/arm1136/mx35/generic.c
+++ b/arch/arm/cpu/arm1136/mx35/generic.c
@@ -24,6 +24,7 @@
 #endif
 #include <netdev.h>
 #include <spl.h>
+#include <linux/string.h>
 
 #define CLK_CODE(arm, ahb, sel) (((arm) << 16) + ((ahb) << 8) + (sel))
 #define CLK_CODE_ARM(c)		(((c) >> 16) & 0xFF)
diff --git a/arch/arm/cpu/arm926ejs/mxs/mxs.c b/arch/arm/cpu/arm926ejs/mxs/mxs.c
index c9362136fbf..91ea4f02d02 100644
--- a/arch/arm/cpu/arm926ejs/mxs/mxs.c
+++ b/arch/arm/cpu/arm926ejs/mxs/mxs.c
@@ -26,6 +26,7 @@
 #include <asm/arch/imx-regs.h>
 #include <asm/arch/sys_proto.h>
 #include <linux/compiler.h>
+#include <linux/string.h>
 
 DECLARE_GLOBAL_DATA_PTR;
 
diff --git a/arch/arm/cpu/arm926ejs/mxs/spl_boot.c b/arch/arm/cpu/arm926ejs/mxs/spl_boot.c
index a16a15e79d8..35f503f93b0 100644
--- a/arch/arm/cpu/arm926ejs/mxs/spl_boot.c
+++ b/arch/arm/cpu/arm926ejs/mxs/spl_boot.c
@@ -17,6 +17,7 @@
 #include <asm/arch/sys_proto.h>
 #include <asm/gpio.h>
 #include <linux/compiler.h>
+#include <linux/string.h>
 
 #include "mxs_init.h"
 
diff --git a/arch/arm/cpu/arm926ejs/spear/cpu.c b/arch/arm/cpu/arm926ejs/spear/cpu.c
index 21065410746..93fd7a6d8df 100644
--- a/arch/arm/cpu/arm926ejs/spear/cpu.c
+++ b/arch/arm/cpu/arm926ejs/spear/cpu.c
@@ -10,6 +10,7 @@
 #include <asm/io.h>
 #include <asm/arch/hardware.h>
 #include <asm/arch/spr_misc.h>
+#include <linux/string.h>
 
 int arch_cpu_init(void)
 {
diff --git a/arch/arm/cpu/arm926ejs/spear/spr_misc.c b/arch/arm/cpu/arm926ejs/spear/spr_misc.c
index 044052b32f9..a910b7134f3 100644
--- a/arch/arm/cpu/arm926ejs/spear/spr_misc.c
+++ b/arch/arm/cpu/arm926ejs/spear/spr_misc.c
@@ -17,6 +17,7 @@
 #include <asm/arch/hardware.h>
 #include <asm/arch/spr_emi.h>
 #include <asm/arch/spr_defs.h>
+#include <linux/string.h>
 
 #define CPU		0
 #define DDR		1
diff --git a/arch/arm/cpu/armv7/bcm235xx/clk-bcm235xx.c b/arch/arm/cpu/armv7/bcm235xx/clk-bcm235xx.c
index 39217c5b2bf..abdbcb068ee 100644
--- a/arch/arm/cpu/armv7/bcm235xx/clk-bcm235xx.c
+++ b/arch/arm/cpu/armv7/bcm235xx/clk-bcm235xx.c
@@ -14,6 +14,7 @@
 #include <linux/errno.h>
 #include <asm/arch/sysmap.h>
 #include <asm/kona-common/clk.h>
+#include <linux/string.h>
 #include "clk-core.h"
 
 #define CLOCK_1K		1000
diff --git a/arch/arm/cpu/armv7/bcm235xx/clk-core.c b/arch/arm/cpu/armv7/bcm235xx/clk-core.c
index d7edefee231..a6bd627e20e 100644
--- a/arch/arm/cpu/armv7/bcm235xx/clk-core.c
+++ b/arch/arm/cpu/armv7/bcm235xx/clk-core.c
@@ -17,6 +17,7 @@
 #include <bitfield.h>
 #include <asm/arch/sysmap.h>
 #include <asm/kona-common/clk.h>
+#include <linux/string.h>
 #include "clk-core.h"
 
 #define CLK_WR_ACCESS_PASSWORD	0x00a5a501
diff --git a/arch/arm/cpu/armv7/bcm281xx/clk-bcm281xx.c b/arch/arm/cpu/armv7/bcm281xx/clk-bcm281xx.c
index 8f6260e7857..ee0e7530480 100644
--- a/arch/arm/cpu/armv7/bcm281xx/clk-bcm281xx.c
+++ b/arch/arm/cpu/armv7/bcm281xx/clk-bcm281xx.c
@@ -14,6 +14,7 @@
 #include <linux/errno.h>
 #include <asm/arch/sysmap.h>
 #include <asm/kona-common/clk.h>
+#include <linux/string.h>
 #include "clk-core.h"
 
 #define CLOCK_1K		1000
diff --git a/arch/arm/cpu/armv7/bcm281xx/clk-core.c b/arch/arm/cpu/armv7/bcm281xx/clk-core.c
index 26b673a5405..a70979d0933 100644
--- a/arch/arm/cpu/armv7/bcm281xx/clk-core.c
+++ b/arch/arm/cpu/armv7/bcm281xx/clk-core.c
@@ -17,6 +17,7 @@
 #include <bitfield.h>
 #include <asm/arch/sysmap.h>
 #include <asm/kona-common/clk.h>
+#include <linux/string.h>
 #include "clk-core.h"
 
 #define CLK_WR_ACCESS_PASSWORD	0x00a5a501
diff --git a/arch/arm/cpu/armv7/ls102xa/fdt.c b/arch/arm/cpu/armv7/ls102xa/fdt.c
index d1d09f93650..b2e80751a98 100644
--- a/arch/arm/cpu/armv7/ls102xa/fdt.c
+++ b/arch/arm/cpu/armv7/ls102xa/fdt.c
@@ -20,6 +20,7 @@
 #include <asm/arch/immap_ls102xa.h>
 #include <fsl_sec.h>
 #include <dm.h>
+#include <linux/string.h>
 
 DECLARE_GLOBAL_DATA_PTR;
 
diff --git a/arch/arm/cpu/armv7/vf610/generic.c b/arch/arm/cpu/armv7/vf610/generic.c
index c23ddc12b45..3f266178c98 100644
--- a/arch/arm/cpu/armv7/vf610/generic.c
+++ b/arch/arm/cpu/armv7/vf610/generic.c
@@ -21,6 +21,7 @@
 #ifdef CONFIG_FSL_ESDHC_IMX
 #include <fsl_esdhc_imx.h>
 #endif
+#include <linux/string.h>
 
 #ifdef CONFIG_FSL_ESDHC_IMX
 DECLARE_GLOBAL_DATA_PTR;
diff --git a/arch/arm/cpu/armv7/virt-v7.c b/arch/arm/cpu/armv7/virt-v7.c
index 5ffeca13d91..8731af9f687 100644
--- a/arch/arm/cpu/armv7/virt-v7.c
+++ b/arch/arm/cpu/armv7/virt-v7.c
@@ -15,6 +15,7 @@
 #include <asm/gic.h>
 #include <asm/io.h>
 #include <asm/secure.h>
+#include <linux/string.h>
 
 static unsigned int read_id_pfr1(void)
 {
diff --git a/arch/arm/cpu/armv8/cache_v8.c b/arch/arm/cpu/armv8/cache_v8.c
index 15cecb5e0b3..0930d206ccd 100644
--- a/arch/arm/cpu/armv8/cache_v8.c
+++ b/arch/arm/cpu/armv8/cache_v8.c
@@ -15,6 +15,7 @@
 #include <asm/global_data.h>
 #include <asm/system.h>
 #include <asm/armv8/mmu.h>
+#include <linux/string.h>
 
 DECLARE_GLOBAL_DATA_PTR;
 
diff --git a/arch/arm/cpu/armv8/cpu.c b/arch/arm/cpu/armv8/cpu.c
index ea40c55dd2c..21c10cf6c7c 100644
--- a/arch/arm/cpu/armv8/cpu.c
+++ b/arch/arm/cpu/armv8/cpu.c
@@ -18,6 +18,7 @@
 #include <asm/system.h>
 #include <asm/secure.h>
 #include <linux/compiler.h>
+#include <linux/string.h>
 
 /*
  * sdelay() - simple spin loop.
diff --git a/arch/arm/cpu/armv8/fsl-layerscape/cpu.c b/arch/arm/cpu/armv8/fsl-layerscape/cpu.c
index 3654cbf3b49..5839f0b9c9e 100644
--- a/arch/arm/cpu/armv8/fsl-layerscape/cpu.c
+++ b/arch/arm/cpu/armv8/fsl-layerscape/cpu.c
@@ -40,6 +40,7 @@
 #include <asm/arch/clock.h>
 #include <hwconfig.h>
 #include <fsl_qbman.h>
+#include <linux/string.h>
 
 #ifdef CONFIG_TFABOOT
 #include <env_internal.h>
diff --git a/arch/arm/cpu/armv8/fsl-layerscape/fdt.c b/arch/arm/cpu/armv8/fsl-layerscape/fdt.c
index 7400b2cf292..ab4f4a5eb1a 100644
--- a/arch/arm/cpu/armv8/fsl-layerscape/fdt.c
+++ b/arch/arm/cpu/armv8/fsl-layerscape/fdt.c
@@ -31,6 +31,7 @@
 #endif
 #include <asm/arch/speed.h>
 #include <fsl_qbman.h>
+#include <linux/string.h>
 
 int fdt_fixup_phy_connection(void *blob, int offset, phy_interface_t phyc)
 {
diff --git a/arch/arm/cpu/armv8/fsl-layerscape/fsl_lsch2_serdes.c b/arch/arm/cpu/armv8/fsl-layerscape/fsl_lsch2_serdes.c
index 41c89b8904e..4a2f22d0366 100644
--- a/arch/arm/cpu/armv8/fsl-layerscape/fsl_lsch2_serdes.c
+++ b/arch/arm/cpu/armv8/fsl-layerscape/fsl_lsch2_serdes.c
@@ -10,6 +10,7 @@
 #include <linux/errno.h>
 #include <asm/arch/fsl_serdes.h>
 #include <asm/arch/soc.h>
+#include <linux/string.h>
 
 #ifdef CONFIG_SYS_FSL_SRDS_1
 static u8 serdes1_prtcl_map[SERDES_PRCTL_COUNT];
diff --git a/arch/arm/cpu/armv8/fsl-layerscape/fsl_lsch3_serdes.c b/arch/arm/cpu/armv8/fsl-layerscape/fsl_lsch3_serdes.c
index aa6fd6b28ce..f14636a0f5d 100644
--- a/arch/arm/cpu/armv8/fsl-layerscape/fsl_lsch3_serdes.c
+++ b/arch/arm/cpu/armv8/fsl-layerscape/fsl_lsch3_serdes.c
@@ -14,6 +14,7 @@
 #include <asm/arch/fsl_serdes.h>
 #include <asm/arch/soc.h>
 #include <fsl-mc/ldpaa_wriop.h>
+#include <linux/string.h>
 
 #ifdef CONFIG_SYS_FSL_SRDS_1
 static u8 serdes1_prtcl_map[SERDES_PRCTL_COUNT];
diff --git a/arch/arm/cpu/armv8/fsl-layerscape/ls1028_ids.c b/arch/arm/cpu/armv8/fsl-layerscape/ls1028_ids.c
index 49df8b37900..2d25c92c6ee 100644
--- a/arch/arm/cpu/armv8/fsl-layerscape/ls1028_ids.c
+++ b/arch/arm/cpu/armv8/fsl-layerscape/ls1028_ids.c
@@ -9,6 +9,7 @@
 #include <asm/arch-fsl-layerscape/immap_lsch3.h>
 #include <asm/arch-fsl-layerscape/fsl_icid.h>
 #include <asm/arch-fsl-layerscape/fsl_portals.h>
+#include <linux/string.h>
 
 struct icid_id_table icid_tbl[] = {
 	SET_USB_ICID(1, "snps,dwc3", FSL_USB1_STREAM_ID),
diff --git a/arch/arm/cpu/armv8/fsl-layerscape/mp.c b/arch/arm/cpu/armv8/fsl-layerscape/mp.c
index 5ac545f9df8..8675007da51 100644
--- a/arch/arm/cpu/armv8/fsl-layerscape/mp.c
+++ b/arch/arm/cpu/armv8/fsl-layerscape/mp.c
@@ -14,6 +14,7 @@
 #include <asm/arch/mp.h>
 #include <asm/arch/soc.h>
 #include <linux/delay.h>
+#include <linux/string.h>
 #include "cpu.h"
 #include <asm/arch-fsl-layerscape/soc.h>
 #include <efi_loader.h>
diff --git a/arch/arm/cpu/armv8/fsl-layerscape/spl.c b/arch/arm/cpu/armv8/fsl-layerscape/spl.c
index 7d594a9f749..7c44dc7a95a 100644
--- a/arch/arm/cpu/armv8/fsl-layerscape/spl.c
+++ b/arch/arm/cpu/armv8/fsl-layerscape/spl.c
@@ -20,6 +20,7 @@
 #include <asm/arch/fdt.h>
 #include <asm/arch/ppa.h>
 #include <asm/arch/soc.h>
+#include <linux/string.h>
 
 DECLARE_GLOBAL_DATA_PTR;
 
diff --git a/arch/arm/cpu/armv8/sec_firmware.c b/arch/arm/cpu/armv8/sec_firmware.c
index c6c4fcc7e07..46d58d176c5 100644
--- a/arch/arm/cpu/armv8/sec_firmware.c
+++ b/arch/arm/cpu/armv8/sec_firmware.c
@@ -18,6 +18,7 @@
 #include <asm/types.h>
 #include <asm/macro.h>
 #include <asm/armv8/sec_firmware.h>
+#include <linux/string.h>
 
 DECLARE_GLOBAL_DATA_PTR;
 extern void c_runtime_cpu_setup(void);
diff --git a/arch/arm/cpu/armv8/spin_table.c b/arch/arm/cpu/armv8/spin_table.c
index 42a0962fdcd..6aafb3b6ea3 100644
--- a/arch/arm/cpu/armv8/spin_table.c
+++ b/arch/arm/cpu/armv8/spin_table.c
@@ -7,6 +7,7 @@
 #include <common.h>
 #include <linux/libfdt.h>
 #include <asm/spin_table.h>
+#include <linux/string.h>
 
 int spin_table_update_dt(void *fdt)
 {
diff --git a/arch/arm/cpu/armv8/spl_data.c b/arch/arm/cpu/armv8/spl_data.c
index 8fd986a67a2..f8f9fe2e026 100644
--- a/arch/arm/cpu/armv8/spl_data.c
+++ b/arch/arm/cpu/armv8/spl_data.c
@@ -5,6 +5,7 @@
 
 #include <common.h>
 #include <spl.h>
+#include <linux/string.h>
 
 char __data_save_start[0] __section(.__data_save_start);
 char __data_save_end[0] __section(.__data_save_end);
diff --git a/arch/arm/include/asm/io.h b/arch/arm/include/asm/io.h
index 8959749ad65..c53224bb2b8 100644
--- a/arch/arm/include/asm/io.h
+++ b/arch/arm/include/asm/io.h
@@ -30,6 +30,7 @@
 #if 0	/* XXX###XXX */
 #include <asm/arch/hardware.h>
 #endif	/* XXX###XXX */
+#include <linux/string.h>
 
 static inline void sync(void)
 {
diff --git a/arch/arm/lib/bootm.c b/arch/arm/lib/bootm.c
index 70c181e45b7..101f9d9b3ae 100644
--- a/arch/arm/lib/bootm.c
+++ b/arch/arm/lib/bootm.c
@@ -23,6 +23,7 @@
 #include <dm/root.h>
 #include <env.h>
 #include <image.h>
+#include <linux/string.h>
 #include <u-boot/zlib.h>
 #include <asm/byteorder.h>
 #include <linux/libfdt.h>
diff --git a/arch/arm/lib/eabi_compat.c b/arch/arm/lib/eabi_compat.c
index f7029918d4f..35ce83a6fac 100644
--- a/arch/arm/lib/eabi_compat.c
+++ b/arch/arm/lib/eabi_compat.c
@@ -6,6 +6,7 @@
  */
 
 #include <common.h>
+#include <linux/string.h>
 
 int raise (int signum)
 {
diff --git a/arch/arm/lib/psci-dt.c b/arch/arm/lib/psci-dt.c
index 0ed29a43f10..6acefab42c0 100644
--- a/arch/arm/lib/psci-dt.c
+++ b/arch/arm/lib/psci-dt.c
@@ -13,6 +13,7 @@
 #ifdef CONFIG_ARMV8_SEC_FIRMWARE_SUPPORT
 #include <asm/armv8/sec_firmware.h>
 #endif
+#include <linux/string.h>
 
 int fdt_psci(void *fdt)
 {
diff --git a/arch/arm/lib/semihosting.c b/arch/arm/lib/semihosting.c
index 904fddd6c04..73c860dbb3d 100644
--- a/arch/arm/lib/semihosting.c
+++ b/arch/arm/lib/semihosting.c
@@ -15,6 +15,7 @@
 #include <command.h>
 #include <env.h>
 #include <log.h>
+#include <linux/string.h>
 
 #define SYSOPEN		0x01
 #define SYSCLOSE	0x02
diff --git a/arch/arm/mach-bcm283x/include/mach/mbox.h b/arch/arm/mach-bcm283x/include/mach/mbox.h
index 2ae2d3d97c3..70029eefded 100644
--- a/arch/arm/mach-bcm283x/include/mach/mbox.h
+++ b/arch/arm/mach-bcm283x/include/mach/mbox.h
@@ -6,8 +6,9 @@
 #ifndef _BCM2835_MBOX_H
 #define _BCM2835_MBOX_H
 
-#include <linux/compiler.h>
 #include <asm/arch/base.h>
+#include <linux/compiler.h>
+#include <linux/string.h>
 
 /*
  * The BCM2835 SoC contains (at least) two CPUs; the VideoCore (a/k/a "GPU")
diff --git a/arch/arm/mach-imx/cmd_bmode.c b/arch/arm/mach-imx/cmd_bmode.c
index 19bfd9f9a03..2ad9e6c5f2b 100644
--- a/arch/arm/mach-imx/cmd_bmode.c
+++ b/arch/arm/mach-imx/cmd_bmode.c
@@ -8,6 +8,7 @@
 #include <asm/mach-imx/boot_mode.h>
 #include <malloc.h>
 #include <command.h>
+#include <linux/string.h>
 
 static const struct boot_mode *modes[2];
 
diff --git a/arch/arm/mach-imx/cmd_nandbcb.c b/arch/arm/mach-imx/cmd_nandbcb.c
index 44fc37695db..21010d455ab 100644
--- a/arch/arm/mach-imx/cmd_nandbcb.c
+++ b/arch/arm/mach-imx/cmd_nandbcb.c
@@ -18,6 +18,7 @@
 #include <nand.h>
 #include <dm/devres.h>
 #include <linux/bug.h>
+#include <linux/string.h>
 
 #include <asm/io.h>
 #include <jffs2/jffs2.h>
diff --git a/arch/arm/mach-imx/imx8/ahab.c b/arch/arm/mach-imx/imx8/ahab.c
index bbcefc8e9b6..9eb38cac029 100644
--- a/arch/arm/mach-imx/imx8/ahab.c
+++ b/arch/arm/mach-imx/imx8/ahab.c
@@ -15,6 +15,7 @@
 #include <asm/arch/sys_proto.h>
 #include <asm/arch/image.h>
 #include <console.h>
+#include <linux/string.h>
 
 DECLARE_GLOBAL_DATA_PTR;
 
diff --git a/arch/arm/mach-imx/imx8/fdt.c b/arch/arm/mach-imx/imx8/fdt.c
index 776d2b24345..94da4d0951d 100644
--- a/arch/arm/mach-imx/imx8/fdt.c
+++ b/arch/arm/mach-imx/imx8/fdt.c
@@ -12,6 +12,7 @@
 #include <fdt_support.h>
 #include <linux/libfdt.h>
 #include <linux/printk.h>
+#include <linux/string.h>
 
 DECLARE_GLOBAL_DATA_PTR;
 
diff --git a/arch/arm/mach-imx/imx8/image.c b/arch/arm/mach-imx/imx8/image.c
index 5abc0d3a39f..638aac2eafe 100644
--- a/arch/arm/mach-imx/imx8/image.c
+++ b/arch/arm/mach-imx/imx8/image.c
@@ -14,6 +14,7 @@
 #include <asm/arch/image.h>
 #include <asm/arch/sys_proto.h>
 #include <asm/mach-imx/boot_mode.h>
+#include <linux/string.h>
 
 #define MMC_DEV		0
 #define QSPI_DEV	1
diff --git a/arch/arm/mach-imx/imx8/parse-container.c b/arch/arm/mach-imx/imx8/parse-container.c
index 375098902f8..ed69abc76d8 100644
--- a/arch/arm/mach-imx/imx8/parse-container.c
+++ b/arch/arm/mach-imx/imx8/parse-container.c
@@ -9,6 +9,7 @@
 #include <spl.h>
 #include <asm/arch/image.h>
 #include <asm/arch/sci/sci.h>
+#include <linux/string.h>
 
 #define SEC_SECURE_RAM_BASE		0x31800000UL
 #define SEC_SECURE_RAM_END_BASE		(SEC_SECURE_RAM_BASE + 0xFFFFUL)
diff --git a/arch/arm/mach-imx/imx8m/soc.c b/arch/arm/mach-imx/imx8m/soc.c
index e5d7815658b..5e714b2973c 100644
--- a/arch/arm/mach-imx/imx8m/soc.c
+++ b/arch/arm/mach-imx/imx8m/soc.c
@@ -29,6 +29,7 @@
 #include <imx_sip.h>
 #include <linux/arm-smccc.h>
 #include <linux/bitops.h>
+#include <linux/string.h>
 
 DECLARE_GLOBAL_DATA_PTR;
 
diff --git a/arch/arm/mach-imx/mx5/clock.c b/arch/arm/mach-imx/mx5/clock.c
index bbaddd5a33f..cc93716c74e 100644
--- a/arch/arm/mach-imx/mx5/clock.c
+++ b/arch/arm/mach-imx/mx5/clock.c
@@ -16,6 +16,7 @@
 #include <asm/arch/clock.h>
 #include <div64.h>
 #include <asm/arch/sys_proto.h>
+#include <linux/string.h>
 
 enum pll_clocks {
 	PLL1_CLOCK = 0,
diff --git a/arch/arm/mach-imx/mx6/module_fuse.c b/arch/arm/mach-imx/mx6/module_fuse.c
index 0f4565e3117..0305b2a7e02 100644
--- a/arch/arm/mach-imx/mx6/module_fuse.c
+++ b/arch/arm/mach-imx/mx6/module_fuse.c
@@ -10,6 +10,7 @@
 #include <asm/arch/imx-regs.h>
 #include <asm/mach-imx/module_fuse.h>
 #include <linux/errno.h>
+#include <linux/string.h>
 
 static struct fuse_entry_desc mx6_fuse_descs[] = {
 #if defined(CONFIG_MX6ULL)
diff --git a/arch/arm/mach-imx/spl_imx_romapi.c b/arch/arm/mach-imx/spl_imx_romapi.c
index 9f4d95982e5..dc13a397ea8 100644
--- a/arch/arm/mach-imx/spl_imx_romapi.c
+++ b/arch/arm/mach-imx/spl_imx_romapi.c
@@ -10,6 +10,7 @@
 #include <asm/global_data.h>
 #include <linux/libfdt.h>
 #include <spl.h>
+#include <linux/string.h>
 
 #include <asm/arch/sys_proto.h>
 
diff --git a/arch/arm/mach-imx/video.c b/arch/arm/mach-imx/video.c
index 1bc9b7cc7e1..4d76ecc2969 100644
--- a/arch/arm/mach-imx/video.c
+++ b/arch/arm/mach-imx/video.c
@@ -4,6 +4,7 @@
 #include <env.h>
 #include <linux/errno.h>
 #include <asm/mach-imx/video.h>
+#include <linux/string.h>
 
 #ifdef CONFIG_IMX_HDMI
 #include <asm/arch/mxc_hdmi.h>
diff --git a/arch/arm/mach-k3/common.c b/arch/arm/mach-k3/common.c
index f8985b099f7..0d74dfc29d8 100644
--- a/arch/arm/mach-k3/common.c
+++ b/arch/arm/mach-k3/common.c
@@ -14,6 +14,7 @@
 #include <spl.h>
 #include <asm/global_data.h>
 #include <linux/printk.h>
+#include <linux/string.h>
 #include "common.h"
 #include <dm.h>
 #include <remoteproc.h>
diff --git a/arch/arm/mach-keystone/cmd_clock.c b/arch/arm/mach-keystone/cmd_clock.c
index 7165d666e5e..15fa0ebddea 100644
--- a/arch/arm/mach-keystone/cmd_clock.c
+++ b/arch/arm/mach-keystone/cmd_clock.c
@@ -11,6 +11,7 @@
 #include <asm/arch/hardware.h>
 #include <asm/arch/clock.h>
 #include <asm/arch/psc_defs.h>
+#include <linux/string.h>
 
 struct pll_init_data cmd_pll_data = {
 	.pll = MAIN_PLL,
diff --git a/arch/arm/mach-keystone/cmd_mon.c b/arch/arm/mach-keystone/cmd_mon.c
index 049d5734734..f9d5cda827f 100644
--- a/arch/arm/mach-keystone/cmd_mon.c
+++ b/arch/arm/mach-keystone/cmd_mon.c
@@ -9,6 +9,7 @@
 #include <common.h>
 #include <command.h>
 #include <image.h>
+#include <linux/string.h>
 #include <mach/mon.h>
 asm(".arch_extension sec\n\t");
 
diff --git a/arch/arm/mach-keystone/ddr3_spd.c b/arch/arm/mach-keystone/ddr3_spd.c
index 3803449c2b0..e84f3253b39 100644
--- a/arch/arm/mach-keystone/ddr3_spd.c
+++ b/arch/arm/mach-keystone/ddr3_spd.c
@@ -7,6 +7,7 @@
 
 #include <common.h>
 #include <log.h>
+#include <linux/string.h>
 
 #include <i2c.h>
 #include <ddr_spd.h>
diff --git a/arch/arm/mach-keystone/mon.c b/arch/arm/mach-keystone/mon.c
index 58995d73ac8..bbae14c58f1 100644
--- a/arch/arm/mach-keystone/mon.c
+++ b/arch/arm/mach-keystone/mon.c
@@ -10,6 +10,7 @@
 #include <asm/unaligned.h>
 #include <common.h>
 #include <command.h>
+#include <linux/string.h>
 #include <mach/mon.h>
 #include <spl.h>
 asm(".arch_extension sec\n\t");
diff --git a/arch/arm/mach-meson/sm.c b/arch/arm/mach-meson/sm.c
index 1a8f23cb1fa..e8036b94a0a 100644
--- a/arch/arm/mach-meson/sm.c
+++ b/arch/arm/mach-meson/sm.c
@@ -20,6 +20,7 @@
 #include <linux/bitfield.h>
 #include <regmap.h>
 #include <syscon.h>
+#include <linux/string.h>
 
 #define FN_GET_SHARE_MEM_INPUT_BASE	0x82000020
 #define FN_GET_SHARE_MEM_OUTPUT_BASE	0x82000021
diff --git a/arch/arm/mach-mvebu/armada3700/cpu.c b/arch/arm/mach-mvebu/armada3700/cpu.c
index 70f76c7d707..7ab5c653f1e 100644
--- a/arch/arm/mach-mvebu/armada3700/cpu.c
+++ b/arch/arm/mach-mvebu/armada3700/cpu.c
@@ -18,6 +18,7 @@
 #include <asm/arch/soc.h>
 #include <asm/armv8/mmu.h>
 #include <sort.h>
+#include <linux/string.h>
 
 /* Armada 3700 */
 #define MVEBU_GPIO_NB_REG_BASE		(MVEBU_REGISTER(0x13800))
diff --git a/arch/arm/mach-mvebu/serdes/axp/high_speed_env_lib.c b/arch/arm/mach-mvebu/serdes/axp/high_speed_env_lib.c
index ea3b4c7d5b7..3ebda4ec684 100644
--- a/arch/arm/mach-mvebu/serdes/axp/high_speed_env_lib.c
+++ b/arch/arm/mach-mvebu/serdes/axp/high_speed_env_lib.c
@@ -10,6 +10,7 @@
 #include <asm/arch/cpu.h>
 #include <asm/arch/soc.h>
 #include <linux/delay.h>
+#include <linux/string.h>
 
 #include "high_speed_env_spec.h"
 #include "board_env_spec.h"
diff --git a/arch/arm/mach-omap2/emif-common.c b/arch/arm/mach-omap2/emif-common.c
index 312f868fbc7..8346d899e47 100644
--- a/arch/arm/mach-omap2/emif-common.c
+++ b/arch/arm/mach-omap2/emif-common.c
@@ -22,6 +22,7 @@
 #include <linux/compiler.h>
 #include <asm/ti-common/ti-edma3.h>
 #include <linux/delay.h>
+#include <linux/string.h>
 
 static int emif1_enabled = -1, emif2_enabled = -1;
 
diff --git a/arch/arm/mach-omap2/omap3/board.c b/arch/arm/mach-omap2/omap3/board.c
index f08c8ab43a0..c741652f241 100644
--- a/arch/arm/mach-omap2/omap3/board.c
+++ b/arch/arm/mach-omap2/omap3/board.c
@@ -28,6 +28,7 @@
 #include <asm/gpio.h>
 #include <asm/omap_common.h>
 #include <linux/compiler.h>
+#include <linux/string.h>
 
 /* Declarations */
 extern omap3_sysinfo sysinfo;
diff --git a/arch/arm/mach-omap2/sec-common.c b/arch/arm/mach-omap2/sec-common.c
index 0551bc125e8..4fca91ffbd0 100644
--- a/arch/arm/mach-omap2/sec-common.c
+++ b/arch/arm/mach-omap2/sec-common.c
@@ -19,6 +19,7 @@
 #include <init.h>
 #include <log.h>
 #include <stdarg.h>
+#include <linux/string.h>
 
 #include <asm/arch/sys_proto.h>
 #include <asm/cache.h>
diff --git a/arch/arm/mach-rockchip/board.c b/arch/arm/mach-rockchip/board.c
index eed8f589d23..2c41e58f598 100644
--- a/arch/arm/mach-rockchip/board.c
+++ b/arch/arm/mach-rockchip/board.c
@@ -17,6 +17,7 @@
 #include <asm/arch-rockchip/clock.h>
 #include <asm/arch-rockchip/periph.h>
 #include <asm/arch-rockchip/misc.h>
+#include <linux/string.h>
 #include <power/regulator.h>
 
 DECLARE_GLOBAL_DATA_PTR;
diff --git a/arch/arm/mach-rockchip/boot_mode.c b/arch/arm/mach-rockchip/boot_mode.c
index c6d19541ac7..10d8a1ac5e9 100644
--- a/arch/arm/mach-rockchip/boot_mode.c
+++ b/arch/arm/mach-rockchip/boot_mode.c
@@ -13,6 +13,7 @@
 #include <dm/device.h>
 #include <dm/uclass.h>
 #include <linux/printk.h>
+#include <linux/string.h>
 
 #if (CONFIG_ROCKCHIP_BOOT_MODE_REG == 0)
 
diff --git a/arch/arm/mach-rockchip/misc.c b/arch/arm/mach-rockchip/misc.c
index 28c7c7214cb..3cbb1794254 100644
--- a/arch/arm/mach-rockchip/misc.c
+++ b/arch/arm/mach-rockchip/misc.c
@@ -16,6 +16,7 @@
 #include <log.h>
 #include <dm/uclass-internal.h>
 #include <misc.h>
+#include <linux/string.h>
 #include <u-boot/crc.h>
 #include <u-boot/sha256.h>
 
diff --git a/arch/arm/mach-rockchip/spl-boot-order.c b/arch/arm/mach-rockchip/spl-boot-order.c
index e05c12e0cd3..ddc4081dbb4 100644
--- a/arch/arm/mach-rockchip/spl-boot-order.c
+++ b/arch/arm/mach-rockchip/spl-boot-order.c
@@ -9,6 +9,7 @@
 #include <mmc.h>
 #include <spl.h>
 #include <asm/global_data.h>
+#include <linux/string.h>
 
 #if CONFIG_IS_ENABLED(OF_LIBFDT)
 /**
diff --git a/arch/arm/mach-socfpga/clock_manager_arria10.c b/arch/arm/mach-socfpga/clock_manager_arria10.c
index 58d5d3fd8a5..9f46df6b2f9 100644
--- a/arch/arm/mach-socfpga/clock_manager_arria10.c
+++ b/arch/arm/mach-socfpga/clock_manager_arria10.c
@@ -12,6 +12,7 @@
 #include <dm/device-internal.h>
 #include <asm/arch/clock_manager.h>
 #include <linux/delay.h>
+#include <linux/string.h>
 
 #ifdef CONFIG_SPL_BUILD
 
diff --git a/arch/arm/mach-socfpga/misc_s10.c b/arch/arm/mach-socfpga/misc_s10.c
index 733856c33c1..1e9a3f62059 100644
--- a/arch/arm/mach-socfpga/misc_s10.c
+++ b/arch/arm/mach-socfpga/misc_s10.c
@@ -21,6 +21,7 @@
 #include <asm/pl310.h>
 #include <linux/libfdt.h>
 #include <asm/arch/mailbox_s10.h>
+#include <linux/string.h>
 
 #include <dt-bindings/reset/altr,rst-mgr-s10.h>
 
diff --git a/arch/arm/mach-socfpga/pinmux_arria10.c b/arch/arm/mach-socfpga/pinmux_arria10.c
index f378fce7f02..a38b19c395e 100644
--- a/arch/arm/mach-socfpga/pinmux_arria10.c
+++ b/arch/arm/mach-socfpga/pinmux_arria10.c
@@ -8,6 +8,7 @@
 #include <asm/io.h>
 #include <common.h>
 #include <fdtdec.h>
+#include <linux/string.h>
 
 static int do_pinctr_pin(const void *blob, int child, const char *node_name)
 {
diff --git a/arch/arm/mach-stm32mp/cmd_stm32key.c b/arch/arm/mach-stm32mp/cmd_stm32key.c
index eb3d74bc836..ad857e95c46 100644
--- a/arch/arm/mach-stm32mp/cmd_stm32key.c
+++ b/arch/arm/mach-stm32mp/cmd_stm32key.c
@@ -10,6 +10,7 @@
 #include <dm/device.h>
 #include <dm/uclass.h>
 #include <linux/printk.h>
+#include <linux/string.h>
 
 #define STM32_OTP_HASH_KEY_START 24
 #define STM32_OTP_HASH_KEY_SIZE 8
diff --git a/arch/arm/mach-stm32mp/cmd_stm32prog/cmd_stm32prog.c b/arch/arm/mach-stm32mp/cmd_stm32prog/cmd_stm32prog.c
index 6dd680d739c..68cd9d1547d 100644
--- a/arch/arm/mach-stm32mp/cmd_stm32prog/cmd_stm32prog.c
+++ b/arch/arm/mach-stm32mp/cmd_stm32prog/cmd_stm32prog.c
@@ -9,6 +9,7 @@
 #include <image.h>
 #include <asm/arch/stm32prog.h>
 #include <linux/printk.h>
+#include <linux/string.h>
 #include "stm32prog.h"
 
 struct stm32prog_data *stm32prog_data;
diff --git a/arch/arm/mach-stm32mp/cmd_stm32prog/stm32prog.c b/arch/arm/mach-stm32mp/cmd_stm32prog/stm32prog.c
index 35181a6b756..02923c80802 100644
--- a/arch/arm/mach-stm32mp/cmd_stm32prog/stm32prog.c
+++ b/arch/arm/mach-stm32mp/cmd_stm32prog/stm32prog.c
@@ -19,6 +19,7 @@
 #include <linux/mtd/mtd.h>
 #include <linux/printk.h>
 #include <linux/sizes.h>
+#include <linux/string.h>
 
 #include "stm32prog.h"
 
diff --git a/arch/arm/mach-stm32mp/cmd_stm32prog/stm32prog_serial.c b/arch/arm/mach-stm32mp/cmd_stm32prog/stm32prog_serial.c
index 9d94959cfee..d48f0378a55 100644
--- a/arch/arm/mach-stm32mp/cmd_stm32prog/stm32prog_serial.c
+++ b/arch/arm/mach-stm32mp/cmd_stm32prog/stm32prog_serial.c
@@ -14,6 +14,7 @@
 #include <dm/device-internal.h>
 #include <linux/delay.h>
 #include <linux/printk.h>
+#include <linux/string.h>
 #include "stm32prog.h"
 
 /* - configuration part -----------------------------*/
diff --git a/arch/arm/mach-stm32mp/cmd_stm32prog/stm32prog_usb.c b/arch/arm/mach-stm32mp/cmd_stm32prog/stm32prog_usb.c
index 134c3b117f5..33bf7a44b38 100644
--- a/arch/arm/mach-stm32mp/cmd_stm32prog/stm32prog_usb.c
+++ b/arch/arm/mach-stm32mp/cmd_stm32prog/stm32prog_usb.c
@@ -10,6 +10,7 @@
 #include <asm/arch/stm32prog.h>
 #include <asm/arch/sys_proto.h>
 #include <linux/printk.h>
+#include <linux/string.h>
 #include "stm32prog.h"
 
 static int stm32prog_set_phase(struct stm32prog_data *data, u8 phase,
diff --git a/arch/arm/mach-stm32mp/fdt.c b/arch/arm/mach-stm32mp/fdt.c
index 9dbc595cc4f..5a7d761586c 100644
--- a/arch/arm/mach-stm32mp/fdt.c
+++ b/arch/arm/mach-stm32mp/fdt.c
@@ -11,6 +11,7 @@
 #include <asm/arch/sys_proto.h>
 #include <dt-bindings/pinctrl/stm32-pinfunc.h>
 #include <linux/io.h>
+#include <linux/string.h>
 
 #define ETZPC_DECPROT(n)	(STM32_ETZPC_BASE + 0x10 + 4 * (n))
 #define ETZPC_DECPROT_NB	6
diff --git a/arch/arm/mach-tegra/cboot.c b/arch/arm/mach-tegra/cboot.c
index 6a47c104b72..b89f7badb52 100644
--- a/arch/arm/mach-tegra/cboot.c
+++ b/arch/arm/mach-tegra/cboot.c
@@ -16,6 +16,7 @@
 #include <string.h>
 #include <asm/global_data.h>
 #include <linux/printk.h>
+#include <linux/string.h>
 
 #include <linux/ctype.h>
 #include <linux/sizes.h>
diff --git a/arch/arm/mach-tegra/tegra20/emc.c b/arch/arm/mach-tegra/tegra20/emc.c
index d55b09b4ac8..58abf790bd1 100644
--- a/arch/arm/mach-tegra/tegra20/emc.c
+++ b/arch/arm/mach-tegra/tegra20/emc.c
@@ -12,6 +12,7 @@
 #include <asm/arch/clock.h>
 #include <asm/arch/emc.h>
 #include <asm/arch/tegra.h>
+#include <linux/string.h>
 
 /*
  * The EMC registers have shadow registers.  When the EMC clock is updated
diff --git a/arch/arm/mach-tegra/tegra20/warmboot.c b/arch/arm/mach-tegra/tegra20/warmboot.c
index 3d3758f6e6f..b36b2f652ba 100644
--- a/arch/arm/mach-tegra/tegra20/warmboot.c
+++ b/arch/arm/mach-tegra/tegra20/warmboot.c
@@ -20,6 +20,7 @@
 #include <asm/arch-tegra/pmc.h>
 #include <asm/arch-tegra/fuse.h>
 #include <asm/arch-tegra/warmboot.h>
+#include <linux/string.h>
 
 DECLARE_GLOBAL_DATA_PTR;
 
diff --git a/arch/arm/mach-tegra/xusb-padctl-common.c b/arch/arm/mach-tegra/xusb-padctl-common.c
index 5de403c30e4..42d64cf2c75 100644
--- a/arch/arm/mach-tegra/xusb-padctl-common.c
+++ b/arch/arm/mach-tegra/xusb-padctl-common.c
@@ -9,6 +9,7 @@
 #include <errno.h>
 #include <log.h>
 #include <linux/printk.h>
+#include <linux/string.h>
 
 #include "xusb-padctl-common.h"
 
diff --git a/arch/arm/mach-uniphier/base-address.c b/arch/arm/mach-uniphier/base-address.c
index d7456f8df6f..1ba55eb7ebb 100644
--- a/arch/arm/mach-uniphier/base-address.c
+++ b/arch/arm/mach-uniphier/base-address.c
@@ -10,6 +10,7 @@
 #include <linux/libfdt.h>
 #include <linux/sizes.h>
 #include <asm/global_data.h>
+#include <linux/string.h>
 
 #include "base-address.h"
 #include "sc64-regs.h"
diff --git a/arch/arm/mach-uniphier/board_late_init.c b/arch/arm/mach-uniphier/board_late_init.c
index d7d6643961c..2bfcf861b63 100644
--- a/arch/arm/mach-uniphier/board_late_init.c
+++ b/arch/arm/mach-uniphier/board_late_init.c
@@ -14,6 +14,7 @@
 #include <stdio.h>
 #include <linux/io.h>
 #include <linux/printk.h>
+#include <linux/string.h>
 
 #include "init.h"
 
diff --git a/arch/arm/mach-uniphier/dram/cmd_ddrmphy.c b/arch/arm/mach-uniphier/dram/cmd_ddrmphy.c
index 629f8b90c9d..be4ce3265bb 100644
--- a/arch/arm/mach-uniphier/dram/cmd_ddrmphy.c
+++ b/arch/arm/mach-uniphier/dram/cmd_ddrmphy.c
@@ -9,6 +9,7 @@
 #include <linux/io.h>
 #include <linux/printk.h>
 #include <linux/sizes.h>
+#include <linux/string.h>
 
 #include "../soc-info.h"
 #include "ddrmphy-regs.h"
diff --git a/arch/arm/mach-uniphier/dram/cmd_ddrphy.c b/arch/arm/mach-uniphier/dram/cmd_ddrphy.c
index ca519d1c7e0..3ccafe20638 100644
--- a/arch/arm/mach-uniphier/dram/cmd_ddrphy.c
+++ b/arch/arm/mach-uniphier/dram/cmd_ddrphy.c
@@ -10,6 +10,7 @@
 #include <linux/io.h>
 #include <linux/printk.h>
 #include <linux/sizes.h>
+#include <linux/string.h>
 
 #include "../soc-info.h"
 #include "ddrphy-regs.h"
diff --git a/arch/arm/mach-uniphier/pinctrl-glue.c b/arch/arm/mach-uniphier/pinctrl-glue.c
index 2e072646959..e2a59c9b17d 100644
--- a/arch/arm/mach-uniphier/pinctrl-glue.c
+++ b/arch/arm/mach-uniphier/pinctrl-glue.c
@@ -7,6 +7,7 @@
 #include <linux/errno.h>
 #include <dm.h>
 #include <dm/pinctrl.h>
+#include <linux/string.h>
 
 #include "init.h"
 
diff --git a/arch/arm/mach-versal/mp.c b/arch/arm/mach-versal/mp.c
index c97c311d313..540c010f52c 100644
--- a/arch/arm/mach-versal/mp.c
+++ b/arch/arm/mach-versal/mp.c
@@ -9,6 +9,7 @@
 #include <asm/io.h>
 #include <asm/arch/hardware.h>
 #include <asm/arch/sys_proto.h>
+#include <linux/string.h>
 
 DECLARE_GLOBAL_DATA_PTR;
 
diff --git a/arch/arm/mach-zynq/ddrc.c b/arch/arm/mach-zynq/ddrc.c
index 28988ef95b5..65c255da209 100644
--- a/arch/arm/mach-zynq/ddrc.c
+++ b/arch/arm/mach-zynq/ddrc.c
@@ -8,6 +8,7 @@
 #include <asm/io.h>
 #include <asm/arch/sys_proto.h>
 #include <asm/arch/hardware.h>
+#include <linux/string.h>
 
 #ifndef CONFIG_ZYNQ_DDRC_INIT
 void zynq_ddrc_init(void) {}
diff --git a/arch/arm/mach-zynq/slcr.c b/arch/arm/mach-zynq/slcr.c
index 5d9f4d23f34..d7c879dc82d 100644
--- a/arch/arm/mach-zynq/slcr.c
+++ b/arch/arm/mach-zynq/slcr.c
@@ -8,6 +8,7 @@
 #include <malloc.h>
 #include <asm/arch/hardware.h>
 #include <asm/arch/sys_proto.h>
+#include <linux/string.h>
 
 #define SLCR_LOCK_MAGIC		0x767B
 #define SLCR_UNLOCK_MAGIC	0xDF0D
diff --git a/arch/arm/mach-zynq/spl.c b/arch/arm/mach-zynq/spl.c
index 239ce3436a6..eceb6e114c0 100644
--- a/arch/arm/mach-zynq/spl.c
+++ b/arch/arm/mach-zynq/spl.c
@@ -10,6 +10,7 @@
 #include <log.h>
 #include <spl.h>
 #include <generated/dt.h>
+#include <linux/string.h>
 
 #include <asm/io.h>
 #include <asm/spl.h>
diff --git a/arch/arm/mach-zynqmp/cpu.c b/arch/arm/mach-zynqmp/cpu.c
index 29743cae5aa..a03b29acb83 100644
--- a/arch/arm/mach-zynqmp/cpu.c
+++ b/arch/arm/mach-zynqmp/cpu.c
@@ -15,6 +15,7 @@
 #include <asm/io.h>
 #include <zynqmp_firmware.h>
 #include <asm/cache.h>
+#include <linux/string.h>
 
 #define ZYNQ_SILICON_VER_MASK	0xF000
 #define ZYNQ_SILICON_VER_SHIFT	12
diff --git a/arch/arm/mach-zynqmp/mp.c b/arch/arm/mach-zynqmp/mp.c
index 656678a1551..b699f36f1d3 100644
--- a/arch/arm/mach-zynqmp/mp.c
+++ b/arch/arm/mach-zynqmp/mp.c
@@ -11,6 +11,7 @@
 #include <asm/arch/sys_proto.h>
 #include <asm/io.h>
 #include <linux/delay.h>
+#include <linux/string.h>
 
 #define LOCK		0
 #define SPLIT		1
diff --git a/arch/microblaze/include/asm/io.h b/arch/microblaze/include/asm/io.h
index 8e6be0ae267..fd77dcd0218 100644
--- a/arch/microblaze/include/asm/io.h
+++ b/arch/microblaze/include/asm/io.h
@@ -18,6 +18,7 @@
 #define __MICROBLAZE_IO_H__
 
 #include <asm/types.h>
+#include <linux/string.h>
 
 #define IO_SPACE_LIMIT 0xFFFFFFFF
 
diff --git a/arch/mips/include/asm/io.h b/arch/mips/include/asm/io.h
index d3ad6693013..836cd436872 100644
--- a/arch/mips/include/asm/io.h
+++ b/arch/mips/include/asm/io.h
@@ -11,6 +11,7 @@
 
 #include <linux/bug.h>
 #include <linux/compiler.h>
+#include <linux/string.h>
 #include <linux/types.h>
 
 #include <asm/addrspace.h>
diff --git a/arch/mips/lib/bootm.c b/arch/mips/lib/bootm.c
index c28bca1bbb8..ec165a32b0a 100644
--- a/arch/mips/lib/bootm.c
+++ b/arch/mips/lib/bootm.c
@@ -14,6 +14,7 @@
 #include <asm/addrspace.h>
 #include <asm/global_data.h>
 #include <asm/io.h>
+#include <linux/string.h>
 
 DECLARE_GLOBAL_DATA_PTR;
 
diff --git a/arch/mips/lib/reloc.c b/arch/mips/lib/reloc.c
index c1c04bc08e8..a0c60c40c86 100644
--- a/arch/mips/lib/reloc.c
+++ b/arch/mips/lib/reloc.c
@@ -33,6 +33,7 @@
 #include <asm/relocs.h>
 #include <asm/sections.h>
 #include <linux/bitops.h>
+#include <linux/string.h>
 
 /**
  * read_uint() - Read an unsigned integer from the buffer
diff --git a/arch/mips/lib/traps.c b/arch/mips/lib/traps.c
index 7c2fdf4a1a9..510ef4c6c09 100644
--- a/arch/mips/lib/traps.c
+++ b/arch/mips/lib/traps.c
@@ -20,6 +20,7 @@
 #include <asm/mipsregs.h>
 #include <asm/addrspace.h>
 #include <asm/system.h>
+#include <linux/string.h>
 
 DECLARE_GLOBAL_DATA_PTR;
 
diff --git a/arch/mips/mach-jz47xx/jz4780/jz4780.c b/arch/mips/mach-jz47xx/jz4780/jz4780.c
index 43f5651f832..de9bd05fcfd 100644
--- a/arch/mips/mach-jz47xx/jz4780/jz4780.c
+++ b/arch/mips/mach-jz47xx/jz4780/jz4780.c
@@ -15,6 +15,7 @@
 #include <asm/global_data.h>
 #include <asm/io.h>
 #include <asm/sections.h>
+#include <linux/string.h>
 #include <mach/jz4780.h>
 #include <mach/jz4780_dram.h>
 #include <mmc.h>
diff --git a/arch/mips/mach-mtmips/cpu.c b/arch/mips/mach-mtmips/cpu.c
index 76ad4f63205..f9cdce5ff8d 100644
--- a/arch/mips/mach-mtmips/cpu.c
+++ b/arch/mips/mach-mtmips/cpu.c
@@ -10,6 +10,7 @@
 #include <linux/bitops.h>
 #include <linux/io.h>
 #include <linux/sizes.h>
+#include <linux/string.h>
 
 DECLARE_GLOBAL_DATA_PTR;
 
diff --git a/arch/nds32/lib/bootm.c b/arch/nds32/lib/bootm.c
index b3b8bc29037..4668ed9af8b 100644
--- a/arch/nds32/lib/bootm.c
+++ b/arch/nds32/lib/bootm.c
@@ -13,6 +13,7 @@
 #include <image.h>
 #include <log.h>
 #include <asm/global_data.h>
+#include <linux/string.h>
 #include <u-boot/zlib.h>
 #include <asm/byteorder.h>
 #include <asm/bootm.h>
diff --git a/arch/nios2/cpu/cpu.c b/arch/nios2/cpu/cpu.c
index b55c8fbc584..c670d51f1df 100644
--- a/arch/nios2/cpu/cpu.c
+++ b/arch/nios2/cpu/cpu.c
@@ -15,6 +15,7 @@
 #include <asm/cache.h>
 #include <asm/global_data.h>
 #include <asm/system.h>
+#include <linux/string.h>
 
 DECLARE_GLOBAL_DATA_PTR;
 
diff --git a/arch/nios2/include/asm/io.h b/arch/nios2/include/asm/io.h
index 817cd72e00b..b22134cf29c 100644
--- a/arch/nios2/include/asm/io.h
+++ b/arch/nios2/include/asm/io.h
@@ -8,6 +8,7 @@
 #define __ASM_NIOS2_IO_H_
 
 #include <asm/global_data.h>
+#include <linux/string.h>
 
 static inline void sync(void)
 {
diff --git a/arch/powerpc/cpu/mpc83xx/ecc.c b/arch/powerpc/cpu/mpc83xx/ecc.c
index 1343dd3d3a3..903983ded3e 100644
--- a/arch/powerpc/cpu/mpc83xx/ecc.c
+++ b/arch/powerpc/cpu/mpc83xx/ecc.c
@@ -10,6 +10,7 @@
 #include <irq_func.h>
 #include <mpc83xx.h>
 #include <command.h>
+#include <linux/string.h>
 
 #if defined(CONFIG_DDR_ECC) && defined(CONFIG_DDR_ECC_CMD)
 void ecc_print_status(void)
diff --git a/arch/powerpc/cpu/mpc85xx/commproc.c b/arch/powerpc/cpu/mpc85xx/commproc.c
index 8e8427a08bb..a63519bb5cd 100644
--- a/arch/powerpc/cpu/mpc85xx/commproc.c
+++ b/arch/powerpc/cpu/mpc85xx/commproc.c
@@ -25,6 +25,7 @@
 #include <asm-offsets.h>
 #include <asm/cpm_85xx.h>
 #include <asm/global_data.h>
+#include <linux/string.h>
 
 DECLARE_GLOBAL_DATA_PTR;
 
diff --git a/arch/powerpc/cpu/mpc85xx/cpu_init.c b/arch/powerpc/cpu/mpc85xx/cpu_init.c
index fcc2c7be31a..ad6e79396e7 100644
--- a/arch/powerpc/cpu/mpc85xx/cpu_init.c
+++ b/arch/powerpc/cpu/mpc85xx/cpu_init.c
@@ -35,6 +35,7 @@
 #include <hwconfig.h>
 #include <linux/compiler.h>
 #include <linux/delay.h>
+#include <linux/string.h>
 #include "mp.h"
 #ifdef CONFIG_CHAIN_OF_TRUST
 #include <fsl_validate.h>
diff --git a/arch/powerpc/cpu/mpc85xx/ether_fcc.c b/arch/powerpc/cpu/mpc85xx/ether_fcc.c
index 3c4eb1a7eba..c6f89e0eba9 100644
--- a/arch/powerpc/cpu/mpc85xx/ether_fcc.c
+++ b/arch/powerpc/cpu/mpc85xx/ether_fcc.c
@@ -30,6 +30,7 @@
 #include <command.h>
 #include <config.h>
 #include <net.h>
+#include <linux/string.h>
 
 #if defined(CONFIG_MII) || defined(CONFIG_CMD_MII)
 #include <miiphy.h>
diff --git a/arch/powerpc/cpu/mpc85xx/fdt.c b/arch/powerpc/cpu/mpc85xx/fdt.c
index 08331f4c649..4eecbe667ec 100644
--- a/arch/powerpc/cpu/mpc85xx/fdt.c
+++ b/arch/powerpc/cpu/mpc85xx/fdt.c
@@ -27,6 +27,7 @@
 #ifdef CONFIG_SYS_DPAA_FMAN
 #include <fsl_fman.h>
 #endif
+#include <linux/string.h>
 
 DECLARE_GLOBAL_DATA_PTR;
 
diff --git a/arch/powerpc/cpu/mpc85xx/fsl_corenet2_serdes.c b/arch/powerpc/cpu/mpc85xx/fsl_corenet2_serdes.c
index ee5015ec8f3..29a64b309b2 100644
--- a/arch/powerpc/cpu/mpc85xx/fsl_corenet2_serdes.c
+++ b/arch/powerpc/cpu/mpc85xx/fsl_corenet2_serdes.c
@@ -13,6 +13,7 @@
 #include <linux/delay.h>
 #include <linux/errno.h>
 #include <fsl_errata.h>
+#include <linux/string.h>
 #include "fsl_corenet2_serdes.h"
 
 #ifdef CONFIG_SYS_FSL_SRDS_1
diff --git a/arch/powerpc/cpu/mpc85xx/liodn.c b/arch/powerpc/cpu/mpc85xx/liodn.c
index e552378e78b..a85c8117920 100644
--- a/arch/powerpc/cpu/mpc85xx/liodn.c
+++ b/arch/powerpc/cpu/mpc85xx/liodn.c
@@ -7,6 +7,7 @@
 #include <log.h>
 #include <linux/libfdt.h>
 #include <fdt_support.h>
+#include <linux/string.h>
 
 #include <asm/immap_85xx.h>
 #include <asm/io.h>
diff --git a/arch/powerpc/cpu/mpc85xx/mp.c b/arch/powerpc/cpu/mpc85xx/mp.c
index 653efe09f93..c9854a82a96 100644
--- a/arch/powerpc/cpu/mpc85xx/mp.c
+++ b/arch/powerpc/cpu/mpc85xx/mp.c
@@ -17,6 +17,7 @@
 #include <asm/fsl_law.h>
 #include <fsl_ddr_sdram.h>
 #include <linux/delay.h>
+#include <linux/string.h>
 #include "mp.h"
 
 DECLARE_GLOBAL_DATA_PTR;
diff --git a/arch/powerpc/cpu/mpc85xx/portals.c b/arch/powerpc/cpu/mpc85xx/portals.c
index 52e2124fb97..c0f18d924b6 100644
--- a/arch/powerpc/cpu/mpc85xx/portals.c
+++ b/arch/powerpc/cpu/mpc85xx/portals.c
@@ -6,6 +6,7 @@
 #include <common.h>
 #include <linux/libfdt.h>
 #include <fdt_support.h>
+#include <linux/string.h>
 
 #include <asm/processor.h>
 #include <asm/io.h>
diff --git a/arch/powerpc/cpu/mpc86xx/mp.c b/arch/powerpc/cpu/mpc86xx/mp.c
index e6795e06c98..2d23742a2bd 100644
--- a/arch/powerpc/cpu/mpc86xx/mp.c
+++ b/arch/powerpc/cpu/mpc86xx/mp.c
@@ -12,6 +12,7 @@
 #include <lmb.h>
 #include <asm/io.h>
 #include <asm/mp.h>
+#include <linux/string.h>
 
 DECLARE_GLOBAL_DATA_PTR;
 
diff --git a/arch/powerpc/cpu/mpc8xxx/fsl_pamu.c b/arch/powerpc/cpu/mpc8xxx/fsl_pamu.c
index 2c378b76158..bc5958511d7 100644
--- a/arch/powerpc/cpu/mpc8xxx/fsl_pamu.c
+++ b/arch/powerpc/cpu/mpc8xxx/fsl_pamu.c
@@ -11,6 +11,7 @@
 #include <linux/log2.h>
 #include <malloc.h>
 #include <asm/fsl_pamu.h>
+#include <linux/string.h>
 
 struct paace *ppaact;
 struct paace *sec;
diff --git a/arch/powerpc/include/asm/io.h b/arch/powerpc/include/asm/io.h
index 6d76e3e99cc..ccc5e664cf4 100644
--- a/arch/powerpc/include/asm/io.h
+++ b/arch/powerpc/include/asm/io.h
@@ -8,6 +8,7 @@
 #define _PPC_IO_H
 
 #include <asm/byteorder.h>
+#include <linux/string.h>
 
 #ifdef CONFIG_ADDR_MAP
 #include <addr_map.h>
diff --git a/arch/riscv/cpu/cpu.c b/arch/riscv/cpu/cpu.c
index bfa2d4a4269..53fc9455f75 100644
--- a/arch/riscv/cpu/cpu.c
+++ b/arch/riscv/cpu/cpu.c
@@ -11,6 +11,7 @@
 #include <asm/encoding.h>
 #include <dm/uclass-internal.h>
 #include <linux/bitops.h>
+#include <linux/string.h>
 
 /*
  * The variables here must be stored in the data section since they are used
diff --git a/arch/riscv/lib/andes_plic.c b/arch/riscv/lib/andes_plic.c
index 1707beeea73..eb3463b49a8 100644
--- a/arch/riscv/lib/andes_plic.c
+++ b/arch/riscv/lib/andes_plic.c
@@ -19,6 +19,7 @@
 #include <asm/syscon.h>
 #include <cpu.h>
 #include <linux/err.h>
+#include <linux/string.h>
 
 /* pending register */
 #define PENDING_REG(base, hart)	((ulong)(base) + 0x1000 + ((hart) / 4) * 4)
diff --git a/arch/riscv/lib/fdt_fixup.c b/arch/riscv/lib/fdt_fixup.c
index 8c11b8a99e3..d0a33474497 100644
--- a/arch/riscv/lib/fdt_fixup.c
+++ b/arch/riscv/lib/fdt_fixup.c
@@ -11,6 +11,7 @@
 #include <log.h>
 #include <mapmem.h>
 #include <asm/global_data.h>
+#include <linux/string.h>
 
 DECLARE_GLOBAL_DATA_PTR;
 
diff --git a/arch/sandbox/cpu/eth-raw-os.c b/arch/sandbox/cpu/eth-raw-os.c
index da01d1addf9..8ef8f65ebaf 100644
--- a/arch/sandbox/cpu/eth-raw-os.c
+++ b/arch/sandbox/cpu/eth-raw-os.c
@@ -7,6 +7,7 @@
 #include <asm/eth-raw-os.h>
 #include <errno.h>
 #include <fcntl.h>
+#include <linux/string.h>
 #include <net/if.h>
 #include <netinet/in.h>
 #include <netinet/ip.h>
diff --git a/arch/sandbox/cpu/os.c b/arch/sandbox/cpu/os.c
index e7ec892bdf0..e4192b07be5 100644
--- a/arch/sandbox/cpu/os.c
+++ b/arch/sandbox/cpu/os.c
@@ -16,6 +16,7 @@
 #include <termios.h>
 #include <time.h>
 #include <unistd.h>
+#include <linux/string.h>
 #include <sys/mman.h>
 #include <sys/stat.h>
 #include <sys/time.h>
diff --git a/arch/sandbox/cpu/sdl.c b/arch/sandbox/cpu/sdl.c
index 6416cab96c1..813fdcdac60 100644
--- a/arch/sandbox/cpu/sdl.c
+++ b/arch/sandbox/cpu/sdl.c
@@ -9,6 +9,7 @@
 #include <linux/input.h>
 #include <SDL2/SDL.h>
 #include <asm/state.h>
+#include <linux/string.h>
 
 /**
  * struct buf_info - a data buffer holding audio data
diff --git a/arch/sandbox/cpu/spl.c b/arch/sandbox/cpu/spl.c
index 17a3507406c..8998f92858e 100644
--- a/arch/sandbox/cpu/spl.c
+++ b/arch/sandbox/cpu/spl.c
@@ -13,6 +13,7 @@
 #include <asm/global_data.h>
 #include <asm/spl.h>
 #include <asm/state.h>
+#include <linux/string.h>
 
 DECLARE_GLOBAL_DATA_PTR;
 
diff --git a/arch/sandbox/cpu/start.c b/arch/sandbox/cpu/start.c
index c50d14eaf22..9845d3e8fcb 100644
--- a/arch/sandbox/cpu/start.c
+++ b/arch/sandbox/cpu/start.c
@@ -17,6 +17,7 @@
 #include <asm/sections.h>
 #include <asm/state.h>
 #include <linux/ctype.h>
+#include <linux/string.h>
 
 DECLARE_GLOBAL_DATA_PTR;
 
diff --git a/arch/sandbox/cpu/state.c b/arch/sandbox/cpu/state.c
index 34b6fff7e7a..ec432d06429 100644
--- a/arch/sandbox/cpu/state.c
+++ b/arch/sandbox/cpu/state.c
@@ -10,6 +10,7 @@
 #include <os.h>
 #include <asm/malloc.h>
 #include <asm/state.h>
+#include <linux/string.h>
 
 /* Main state record for the sandbox */
 static struct sandbox_state main_state;
diff --git a/arch/sandbox/lib/bootm.c b/arch/sandbox/lib/bootm.c
index d1d460b84a4..ab9f8a5f9c9 100644
--- a/arch/sandbox/lib/bootm.c
+++ b/arch/sandbox/lib/bootm.c
@@ -8,6 +8,7 @@
 #include <bootstage.h>
 #include <image.h>
 #include <asm/io.h>
+#include <linux/string.h>
 
 #define	LINUX_ARM_ZIMAGE_MAGIC	0x016f2818
 
diff --git a/arch/sh/lib/board.c b/arch/sh/lib/board.c
index 3fa093a02ea..f43213a50e9 100644
--- a/arch/sh/lib/board.c
+++ b/arch/sh/lib/board.c
@@ -6,6 +6,7 @@
 #include <common.h>
 #include <init.h>
 #include <asm/global_data.h>
+#include <linux/string.h>
 
 DECLARE_GLOBAL_DATA_PTR;
 
diff --git a/arch/sh/lib/bootm.c b/arch/sh/lib/bootm.c
index dc94f837856..71d964586c5 100644
--- a/arch/sh/lib/bootm.c
+++ b/arch/sh/lib/bootm.c
@@ -13,6 +13,7 @@
 #include <image.h>
 #include <asm/byteorder.h>
 #include <asm/zimage.h>
+#include <linux/string.h>
 
 #ifdef CONFIG_SYS_DEBUG
 static void hexdump(unsigned char *buf, int len)
diff --git a/arch/sh/lib/zimageboot.c b/arch/sh/lib/zimageboot.c
index c38f0933f89..d1067a60f1e 100644
--- a/arch/sh/lib/zimageboot.c
+++ b/arch/sh/lib/zimageboot.c
@@ -15,6 +15,7 @@
 #include <irq_func.h>
 #include <asm/io.h>
 #include <asm/zimage.h>
+#include <linux/string.h>
 
 int do_sh_zimageboot(struct cmd_tbl *cmdtp, int flag, int argc,
 		     char *const argv[])
diff --git a/arch/x86/cpu/acpi_gpe.c b/arch/x86/cpu/acpi_gpe.c
index 9baf4f65b36..47ee817eb7a 100644
--- a/arch/x86/cpu/acpi_gpe.c
+++ b/arch/x86/cpu/acpi_gpe.c
@@ -13,6 +13,7 @@
 #include <asm/io.h>
 #include <dt-bindings/interrupt-controller/irq.h>
 #include <dt-bindings/interrupt-controller/x86-irq.h>
+#include <linux/string.h>
 
 /**
  * struct acpi_gpe_priv - private driver information
diff --git a/arch/x86/cpu/apollolake/fsp_bindings.c b/arch/x86/cpu/apollolake/fsp_bindings.c
index 9130af9ce0a..d1190075495 100644
--- a/arch/x86/cpu/apollolake/fsp_bindings.c
+++ b/arch/x86/cpu/apollolake/fsp_bindings.c
@@ -7,6 +7,7 @@
 #include <dm.h>
 #include <log.h>
 #include <asm/arch/fsp_bindings.h>
+#include <linux/string.h>
 
 /**
  * read_u8_prop() - Read an u8 property from devicetree (scalar or array)
diff --git a/arch/x86/cpu/apollolake/pmc.c b/arch/x86/cpu/apollolake/pmc.c
index 192dec7109a..83d165c0d9b 100644
--- a/arch/x86/cpu/apollolake/pmc.c
+++ b/arch/x86/cpu/apollolake/pmc.c
@@ -17,6 +17,7 @@
 #include <asm/io.h>
 #include <asm/pci.h>
 #include <linux/bitops.h>
+#include <linux/string.h>
 #include <power/acpi_pmc.h>
 
 #define GPIO_GPE_CFG		0x1050
diff --git a/arch/x86/cpu/apollolake/spl.c b/arch/x86/cpu/apollolake/spl.c
index 5a53831dc6a..a318bca5a62 100644
--- a/arch/x86/cpu/apollolake/spl.c
+++ b/arch/x86/cpu/apollolake/spl.c
@@ -19,6 +19,7 @@
 #include <asm/arch/iomap.h>
 #include <dm/device-internal.h>
 #include <dm/uclass-internal.h>
+#include <linux/string.h>
 
 /* This reads the next phase from mapped SPI flash */
 static int rom_load_image(struct spl_image_info *spl_image,
diff --git a/arch/x86/cpu/baytrail/acpi.c b/arch/x86/cpu/baytrail/acpi.c
index 07757b88a30..e6c721a16ba 100644
--- a/arch/x86/cpu/baytrail/acpi.c
+++ b/arch/x86/cpu/baytrail/acpi.c
@@ -14,6 +14,7 @@
 #include <asm/arch/global_nvs.h>
 #include <asm/arch/iomap.h>
 #include <dm/uclass-internal.h>
+#include <linux/string.h>
 
 void acpi_create_fadt(struct acpi_fadt *fadt, struct acpi_facs *facs,
 		      void *dsdt)
diff --git a/arch/x86/cpu/broadwell/me.c b/arch/x86/cpu/broadwell/me.c
index ae16ce26499..4ae084bf452 100644
--- a/arch/x86/cpu/broadwell/me.c
+++ b/arch/x86/cpu/broadwell/me.c
@@ -10,6 +10,7 @@
 #include <log.h>
 #include <asm/arch/me.h>
 #include <linux/delay.h>
+#include <linux/string.h>
 
 static inline void me_read_dword_ptr(struct udevice *dev, void *ptr, int offset)
 {
diff --git a/arch/x86/cpu/broadwell/northbridge.c b/arch/x86/cpu/broadwell/northbridge.c
index 141babc51c3..4f3ccf589e5 100644
--- a/arch/x86/cpu/broadwell/northbridge.c
+++ b/arch/x86/cpu/broadwell/northbridge.c
@@ -11,6 +11,7 @@
 #include <asm/arch/iomap.h>
 #include <asm/arch/pch.h>
 #include <asm/arch/pei_data.h>
+#include <linux/string.h>
 
 __weak asmlinkage void sdram_console_tx_byte(unsigned char byte)
 {
diff --git a/arch/x86/cpu/broadwell/pinctrl_broadwell.c b/arch/x86/cpu/broadwell/pinctrl_broadwell.c
index 85bd37101ba..2bc3ef97214 100644
--- a/arch/x86/cpu/broadwell/pinctrl_broadwell.c
+++ b/arch/x86/cpu/broadwell/pinctrl_broadwell.c
@@ -19,6 +19,7 @@
 #include <dt-bindings/gpio/x86-gpio.h>
 #include <dm/pinctrl.h>
 #include <dm/uclass-internal.h>
+#include <linux/string.h>
 
 DECLARE_GLOBAL_DATA_PTR;
 
diff --git a/arch/x86/cpu/broadwell/refcode.c b/arch/x86/cpu/broadwell/refcode.c
index 1e0a34de0c8..ee045a34833 100644
--- a/arch/x86/cpu/broadwell/refcode.c
+++ b/arch/x86/cpu/broadwell/refcode.c
@@ -12,6 +12,7 @@
 #include <init.h>
 #include <log.h>
 #include <asm/arch/pei_data.h>
+#include <linux/string.h>
 
 #define RMODULE_MAGIC		0xf8fe
 #define RMODULE_VERSION_1	1
diff --git a/arch/x86/cpu/broadwell/sdram.c b/arch/x86/cpu/broadwell/sdram.c
index c104a849a54..874b2034b9f 100644
--- a/arch/x86/cpu/broadwell/sdram.c
+++ b/arch/x86/cpu/broadwell/sdram.c
@@ -24,6 +24,7 @@
 #include <asm/arch/pch.h>
 #include <asm/arch/pei_data.h>
 #include <asm/arch/pm.h>
+#include <linux/string.h>
 
 ulong board_get_usable_ram_top(ulong total_size)
 {
diff --git a/arch/x86/cpu/cpu_x86.c b/arch/x86/cpu/cpu_x86.c
index dc7c8116d04..8b3a9e75d1d 100644
--- a/arch/x86/cpu/cpu_x86.c
+++ b/arch/x86/cpu/cpu_x86.c
@@ -9,6 +9,7 @@
 #include <errno.h>
 #include <asm/cpu.h>
 #include <asm/global_data.h>
+#include <linux/string.h>
 
 DECLARE_GLOBAL_DATA_PTR;
 
diff --git a/arch/x86/cpu/efi/payload.c b/arch/x86/cpu/efi/payload.c
index 9a73b768e9b..d9955bb4714 100644
--- a/arch/x86/cpu/efi/payload.c
+++ b/arch/x86/cpu/efi/payload.c
@@ -15,6 +15,7 @@
 #include <asm/e820.h>
 #include <asm/global_data.h>
 #include <asm/post.h>
+#include <linux/string.h>
 
 DECLARE_GLOBAL_DATA_PTR;
 
diff --git a/arch/x86/cpu/i386/cpu.c b/arch/x86/cpu/i386/cpu.c
index 7f6b1a93e1b..f0a01c2295f 100644
--- a/arch/x86/cpu/i386/cpu.c
+++ b/arch/x86/cpu/i386/cpu.c
@@ -32,6 +32,7 @@
 #include <asm/msr.h>
 #include <asm/mtrr.h>
 #include <asm/processor-flags.h>
+#include <linux/string.h>
 
 DECLARE_GLOBAL_DATA_PTR;
 
diff --git a/arch/x86/cpu/intel_common/itss.c b/arch/x86/cpu/intel_common/itss.c
index 2f47bfe20e7..d6bc051397b 100644
--- a/arch/x86/cpu/intel_common/itss.c
+++ b/arch/x86/cpu/intel_common/itss.c
@@ -19,6 +19,7 @@
 #include <spl.h>
 #include <asm/global_data.h>
 #include <asm/itss.h>
+#include <linux/string.h>
 
 struct itss_platdata {
 #if CONFIG_IS_ENABLED(OF_PLATDATA)
diff --git a/arch/x86/cpu/intel_common/report_platform.c b/arch/x86/cpu/intel_common/report_platform.c
index a3612817c45..2de29bbbe25 100644
--- a/arch/x86/cpu/intel_common/report_platform.c
+++ b/arch/x86/cpu/intel_common/report_platform.c
@@ -11,6 +11,7 @@
 #include <asm/pci.h>
 #include <asm/report_platform.h>
 #include <asm/arch/pch.h>
+#include <linux/string.h>
 
 static void report_cpu_info(void)
 {
diff --git a/arch/x86/cpu/ivybridge/sata.c b/arch/x86/cpu/ivybridge/sata.c
index f47ecdffae7..40cb0415868 100644
--- a/arch/x86/cpu/ivybridge/sata.c
+++ b/arch/x86/cpu/ivybridge/sata.c
@@ -14,6 +14,7 @@
 #include <asm/pch_common.h>
 #include <asm/pci.h>
 #include <asm/arch/pch.h>
+#include <linux/string.h>
 
 DECLARE_GLOBAL_DATA_PTR;
 
diff --git a/arch/x86/cpu/ivybridge/sdram.c b/arch/x86/cpu/ivybridge/sdram.c
index 99bc48021e6..a86ecd7ac40 100644
--- a/arch/x86/cpu/ivybridge/sdram.c
+++ b/arch/x86/cpu/ivybridge/sdram.c
@@ -36,6 +36,7 @@
 #include <asm/arch/pch.h>
 #include <asm/post.h>
 #include <asm/arch/sandybridge.h>
+#include <linux/string.h>
 
 DECLARE_GLOBAL_DATA_PTR;
 
diff --git a/arch/x86/cpu/mp_init.c b/arch/x86/cpu/mp_init.c
index bd656d09520..22cd1dbe52a 100644
--- a/arch/x86/cpu/mp_init.c
+++ b/arch/x86/cpu/mp_init.c
@@ -31,6 +31,7 @@
 #include <dm/root.h>
 #include <linux/delay.h>
 #include <linux/linkage.h>
+#include <linux/string.h>
 
 DECLARE_GLOBAL_DATA_PTR;
 
diff --git a/arch/x86/cpu/qfw_cpu.c b/arch/x86/cpu/qfw_cpu.c
index 349bab1583a..2747cb312c7 100644
--- a/arch/x86/cpu/qfw_cpu.c
+++ b/arch/x86/cpu/qfw_cpu.c
@@ -11,6 +11,7 @@
 #include <dm/lists.h>
 #include <dm/uclass-internal.h>
 #include <dm/root.h>
+#include <linux/string.h>
 
 int qemu_cpu_fixup(void)
 {
diff --git a/arch/x86/cpu/quark/acpi.c b/arch/x86/cpu/quark/acpi.c
index 82b776ff65f..655f2a1ce6a 100644
--- a/arch/x86/cpu/quark/acpi.c
+++ b/arch/x86/cpu/quark/acpi.c
@@ -9,6 +9,7 @@
 #include <asm/tables.h>
 #include <asm/arch/global_nvs.h>
 #include <asm/arch/iomap.h>
+#include <linux/string.h>
 
 void acpi_create_fadt(struct acpi_fadt *fadt, struct acpi_facs *facs,
 		      void *dsdt)
diff --git a/arch/x86/cpu/quark/dram.c b/arch/x86/cpu/quark/dram.c
index 2287dce12b5..d38c3d0809a 100644
--- a/arch/x86/cpu/quark/dram.c
+++ b/arch/x86/cpu/quark/dram.c
@@ -18,6 +18,7 @@
 #include <asm/arch/mrc.h>
 #include <asm/arch/msg_port.h>
 #include <asm/arch/quark.h>
+#include <linux/string.h>
 
 DECLARE_GLOBAL_DATA_PTR;
 
diff --git a/arch/x86/cpu/quark/smc.c b/arch/x86/cpu/quark/smc.c
index b4b3e1204bd..fa47e587a23 100644
--- a/arch/x86/cpu/quark/smc.c
+++ b/arch/x86/cpu/quark/smc.c
@@ -12,6 +12,7 @@
 #include <asm/arch/device.h>
 #include <asm/arch/mrc.h>
 #include <asm/arch/msg_port.h>
+#include <linux/string.h>
 #include "mrc_util.h"
 #include "hte.h"
 #include "smc.h"
diff --git a/arch/x86/cpu/tangier/acpi.c b/arch/x86/cpu/tangier/acpi.c
index 41bd177e095..7a0020c74fe 100644
--- a/arch/x86/cpu/tangier/acpi.c
+++ b/arch/x86/cpu/tangier/acpi.c
@@ -15,6 +15,7 @@
 #include <asm/arch/global_nvs.h>
 #include <asm/arch/iomap.h>
 #include <dm/uclass-internal.h>
+#include <linux/string.h>
 
 void acpi_create_fadt(struct acpi_fadt *fadt, struct acpi_facs *facs,
 		      void *dsdt)
diff --git a/arch/x86/cpu/tangier/sdram.c b/arch/x86/cpu/tangier/sdram.c
index 0f0ab4102be..e1531385fb8 100644
--- a/arch/x86/cpu/tangier/sdram.c
+++ b/arch/x86/cpu/tangier/sdram.c
@@ -10,6 +10,7 @@
 #include <asm/global_data.h>
 #include <asm/sfi.h>
 #include <linux/printk.h>
+#include <linux/string.h>
 
 DECLARE_GLOBAL_DATA_PTR;
 
diff --git a/arch/x86/include/asm/io.h b/arch/x86/include/asm/io.h
index 83dc09757e0..f0119c47b85 100644
--- a/arch/x86/include/asm/io.h
+++ b/arch/x86/include/asm/io.h
@@ -8,6 +8,7 @@
 #define _ASM_IO_H
 
 #include <compiler.h>
+#include <linux/string.h>
 
 /*
  * This file contains the definitions for the x86 IO instructions
diff --git a/arch/x86/include/asm/me_common.h b/arch/x86/include/asm/me_common.h
index 49d88623edf..56e328846cf 100644
--- a/arch/x86/include/asm/me_common.h
+++ b/arch/x86/include/asm/me_common.h
@@ -13,6 +13,7 @@
 #define __ASM_ME_COMMON_H
 
 #include <linux/compiler.h>
+#include <linux/string.h>
 #include <linux/types.h>
 #include <pci.h>
 
diff --git a/arch/x86/lib/acpi.c b/arch/x86/lib/acpi.c
index 155fffabf08..ffdc9e8257e 100644
--- a/arch/x86/lib/acpi.c
+++ b/arch/x86/lib/acpi.c
@@ -8,6 +8,7 @@
 #include <acpi/acpi_table.h>
 #include <asm/io.h>
 #include <asm/tables.h>
+#include <linux/string.h>
 
 static struct acpi_rsdp *acpi_valid_rsdp(struct acpi_rsdp *rsdp)
 {
diff --git a/arch/x86/lib/acpi_nhlt.c b/arch/x86/lib/acpi_nhlt.c
index c64dd9c0081..8df5ddd4a7a 100644
--- a/arch/x86/lib/acpi_nhlt.c
+++ b/arch/x86/lib/acpi_nhlt.c
@@ -17,6 +17,7 @@
 #include <asm/acpi_nhlt.h>
 #include <asm/unaligned.h>
 #include <dm/acpi.h>
+#include <linux/string.h>
 
 #define NHLT_RID		1
 #define NHLT_SSID		1
diff --git a/arch/x86/lib/acpi_s3.c b/arch/x86/lib/acpi_s3.c
index 2c70acbe7b0..244764152b2 100644
--- a/arch/x86/lib/acpi_s3.c
+++ b/arch/x86/lib/acpi_s3.c
@@ -10,6 +10,7 @@
 #include <asm/global_data.h>
 #include <asm/post.h>
 #include <linux/linkage.h>
+#include <linux/string.h>
 
 DECLARE_GLOBAL_DATA_PTR;
 
diff --git a/arch/x86/lib/acpi_table.c b/arch/x86/lib/acpi_table.c
index c574f0c6230..c6500f62ad8 100644
--- a/arch/x86/lib/acpi_table.c
+++ b/arch/x86/lib/acpi_table.c
@@ -25,6 +25,7 @@
 #include <asm/arch/global_nvs.h>
 #include <dm/acpi.h>
 #include <linux/err.h>
+#include <linux/string.h>
 
 /*
  * IASL compiles the dsdt entries and writes the hex values
diff --git a/arch/x86/lib/bios.c b/arch/x86/lib/bios.c
index fbdc3b04e36..a4499972c32 100644
--- a/arch/x86/lib/bios.c
+++ b/arch/x86/lib/bios.c
@@ -17,6 +17,7 @@
 #include <asm/i8259.h>
 #include <asm/io.h>
 #include <asm/post.h>
+#include <linux/string.h>
 #include "bios.h"
 
 /* Interrupt handlers for each interrupt the ROM can call */
diff --git a/arch/x86/lib/cmd_boot.c b/arch/x86/lib/cmd_boot.c
index 4facbe5f32f..b128b43cebe 100644
--- a/arch/x86/lib/cmd_boot.c
+++ b/arch/x86/lib/cmd_boot.c
@@ -19,6 +19,7 @@
 #include <malloc.h>
 #include <asm/global_data.h>
 #include <asm/u-boot-x86.h>
+#include <linux/string.h>
 
 DECLARE_GLOBAL_DATA_PTR;
 
diff --git a/arch/x86/lib/coreboot_table.c b/arch/x86/lib/coreboot_table.c
index 6eab0452fda..b0377dcee17 100644
--- a/arch/x86/lib/coreboot_table.c
+++ b/arch/x86/lib/coreboot_table.c
@@ -11,6 +11,7 @@
 #include <asm/coreboot_tables.h>
 #include <asm/e820.h>
 #include <asm/global_data.h>
+#include <linux/string.h>
 
 DECLARE_GLOBAL_DATA_PTR;
 
diff --git a/arch/x86/lib/fsp1/fsp_support.c b/arch/x86/lib/fsp1/fsp_support.c
index d84c632f140..25aa71c6c20 100644
--- a/arch/x86/lib/fsp1/fsp_support.c
+++ b/arch/x86/lib/fsp1/fsp_support.c
@@ -8,6 +8,7 @@
 #include <log.h>
 #include <asm/fsp1/fsp_support.h>
 #include <asm/post.h>
+#include <linux/string.h>
 
 struct fsp_header *__attribute__((optimize("O0"))) fsp_find_header(void)
 {
diff --git a/arch/x86/lib/fsp2/fsp_meminit.c b/arch/x86/lib/fsp2/fsp_meminit.c
index 022e2cb64e5..abbe1a011dd 100644
--- a/arch/x86/lib/fsp2/fsp_meminit.c
+++ b/arch/x86/lib/fsp2/fsp_meminit.c
@@ -18,6 +18,7 @@
 #include <asm/fsp2/fsp_internal.h>
 #include <asm/arch/fsp/fsp_configs.h>
 #include <asm/arch/fsp/fsp_m_upd.h>
+#include <linux/string.h>
 
 static int prepare_mrc_cache_type(enum mrc_type_t type,
 				  struct mrc_data_container **cachep)
diff --git a/arch/x86/lib/fsp2/fsp_silicon_init.c b/arch/x86/lib/fsp2/fsp_silicon_init.c
index f86dbfa6c63..ca064eaf716 100644
--- a/arch/x86/lib/fsp2/fsp_silicon_init.c
+++ b/arch/x86/lib/fsp2/fsp_silicon_init.c
@@ -18,6 +18,7 @@
 #include <asm/fsp/fsp_infoheader.h>
 #include <asm/fsp2/fsp_internal.h>
 #include <asm/global_data.h>
+#include <linux/string.h>
 
 int fsp_silicon_init(bool s3wake, bool use_spi_flash)
 {
diff --git a/arch/x86/lib/fsp2/fsp_support.c b/arch/x86/lib/fsp2/fsp_support.c
index bcdf429f06a..1f68479ec58 100644
--- a/arch/x86/lib/fsp2/fsp_support.c
+++ b/arch/x86/lib/fsp2/fsp_support.c
@@ -11,6 +11,7 @@
 #include <asm/fsp/fsp_support.h>
 #include <asm/fsp2/fsp_internal.h>
 #include <asm/global_data.h>
+#include <linux/string.h>
 
 /* The amount of the FSP header to probe to obtain what we need */
 #define PROBE_BUF_SIZE 0x180
diff --git a/arch/x86/lib/mpspec.c b/arch/x86/lib/mpspec.c
index 8021d8f75a4..78724564605 100644
--- a/arch/x86/lib/mpspec.c
+++ b/arch/x86/lib/mpspec.c
@@ -19,6 +19,7 @@
 #include <asm/mpspec.h>
 #include <asm/tables.h>
 #include <dm/uclass-internal.h>
+#include <linux/string.h>
 
 DECLARE_GLOBAL_DATA_PTR;
 
diff --git a/arch/x86/lib/mrccache.c b/arch/x86/lib/mrccache.c
index b5269156801..12c24e1e46f 100644
--- a/arch/x86/lib/mrccache.c
+++ b/arch/x86/lib/mrccache.c
@@ -19,6 +19,7 @@
 #include <asm/mrccache.h>
 #include <dm/device-internal.h>
 #include <dm/uclass-internal.h>
+#include <linux/string.h>
 
 DECLARE_GLOBAL_DATA_PTR;
 
diff --git a/arch/x86/lib/physmem.c b/arch/x86/lib/physmem.c
index c11101b44ec..1589a887350 100644
--- a/arch/x86/lib/physmem.c
+++ b/arch/x86/lib/physmem.c
@@ -14,6 +14,7 @@
 #include <asm/cpu.h>
 #include <asm/global_data.h>
 #include <linux/compiler.h>
+#include <linux/string.h>
 
 DECLARE_GLOBAL_DATA_PTR;
 
diff --git a/arch/x86/lib/pirq_routing.c b/arch/x86/lib/pirq_routing.c
index caeaec9287f..8aeba8496a9 100644
--- a/arch/x86/lib/pirq_routing.c
+++ b/arch/x86/lib/pirq_routing.c
@@ -11,6 +11,7 @@
 #include <asm/global_data.h>
 #include <asm/pci.h>
 #include <asm/pirq_routing.h>
+#include <linux/string.h>
 
 DECLARE_GLOBAL_DATA_PTR;
 
diff --git a/arch/x86/lib/relocate.c b/arch/x86/lib/relocate.c
index 6fe51516477..ffccbf54dfc 100644
--- a/arch/x86/lib/relocate.c
+++ b/arch/x86/lib/relocate.c
@@ -21,6 +21,7 @@
 #include <asm/u-boot-x86.h>
 #include <asm/sections.h>
 #include <elf.h>
+#include <linux/string.h>
 
 DECLARE_GLOBAL_DATA_PTR;
 
diff --git a/arch/x86/lib/scu.c b/arch/x86/lib/scu.c
index d29d701631d..a9d06d82bb4 100644
--- a/arch/x86/lib/scu.c
+++ b/arch/x86/lib/scu.c
@@ -20,6 +20,7 @@
 #include <linux/errno.h>
 #include <linux/io.h>
 #include <linux/kernel.h>
+#include <linux/string.h>
 
 /* SCU register map */
 struct ipc_regs {
diff --git a/arch/x86/lib/sfi.c b/arch/x86/lib/sfi.c
index b48bd5d8f36..2e68504d886 100644
--- a/arch/x86/lib/sfi.c
+++ b/arch/x86/lib/sfi.c
@@ -20,6 +20,7 @@
 #include <asm/sfi.h>
 #include <asm/tables.h>
 #include <dm/uclass-internal.h>
+#include <linux/string.h>
 
 struct table_info {
 	u32 base;
diff --git a/arch/x86/lib/spl.c b/arch/x86/lib/spl.c
index a220c71b576..96885c6cc55 100644
--- a/arch/x86/lib/spl.c
+++ b/arch/x86/lib/spl.c
@@ -24,6 +24,7 @@
 #include <asm/processor.h>
 #include <asm/spl.h>
 #include <asm-generic/sections.h>
+#include <linux/string.h>
 
 DECLARE_GLOBAL_DATA_PTR;
 
diff --git a/arch/x86/lib/string.c b/arch/x86/lib/string.c
index c6263cd2f5a..d85b77a9624 100644
--- a/arch/x86/lib/string.c
+++ b/arch/x86/lib/string.c
@@ -7,6 +7,7 @@
 
 /* From glibc-2.14, sysdeps/i386/memset.c */
 
+#include <linux/string.h>
 #include <linux/types.h>
 #include <linux/compiler.h>
 #include <asm/string.h>
diff --git a/arch/x86/lib/tables.c b/arch/x86/lib/tables.c
index 730552a0ea5..e4ed0f4aae1 100644
--- a/arch/x86/lib/tables.c
+++ b/arch/x86/lib/tables.c
@@ -13,6 +13,7 @@
 #include <asm/mpspec.h>
 #include <asm/tables.h>
 #include <asm/coreboot_tables.h>
+#include <linux/string.h>
 
 /**
  * Function prototype to write a specific configuration table
diff --git a/arch/x86/lib/zimage.c b/arch/x86/lib/zimage.c
index d2b6002008a..e7c0ff32120 100644
--- a/arch/x86/lib/zimage.c
+++ b/arch/x86/lib/zimage.c
@@ -29,6 +29,7 @@
 #endif
 #include <linux/compiler.h>
 #include <linux/libfdt.h>
+#include <linux/string.h>
 
 /*
  * Memory lay-out:
diff --git a/arch/xtensa/include/asm/io.h b/arch/xtensa/include/asm/io.h
index 76a646e8825..14e90619360 100644
--- a/arch/xtensa/include/asm/io.h
+++ b/arch/xtensa/include/asm/io.h
@@ -9,6 +9,7 @@
 #ifndef _XTENSA_IO_H
 #define _XTENSA_IO_H
 
+#include <linux/string.h>
 #include <linux/types.h>
 #include <asm/byteorder.h>
 
diff --git a/arch/xtensa/lib/bootm.c b/arch/xtensa/lib/bootm.c
index b51d329c670..c33bcf2f9ed 100644
--- a/arch/xtensa/lib/bootm.c
+++ b/arch/xtensa/lib/bootm.c
@@ -10,6 +10,7 @@
 #include <cpu_func.h>
 #include <env.h>
 #include <asm/global_data.h>
+#include <linux/string.h>
 #include <u-boot/zlib.h>
 #include <asm/byteorder.h>
 #include <asm/addrspace.h>
diff --git a/arch/xtensa/lib/relocate.c b/arch/xtensa/lib/relocate.c
index 91141f581e1..ffe39d4a03c 100644
--- a/arch/xtensa/lib/relocate.c
+++ b/arch/xtensa/lib/relocate.c
@@ -6,6 +6,7 @@
 #include <relocate.h>
 #include <asm/sections.h>
 #include <asm/string.h>
+#include <linux/string.h>
 
 int clear_bss(void)
 {
diff --git a/board/Arcturus/ucp1020/cmd_arc.c b/board/Arcturus/ucp1020/cmd_arc.c
index 4b30b66e208..99652dde928 100644
--- a/board/Arcturus/ucp1020/cmd_arc.c
+++ b/board/Arcturus/ucp1020/cmd_arc.c
@@ -19,6 +19,7 @@
 #include <mmc.h>
 #include <version.h>
 #include <asm/io.h>
+#include <linux/string.h>
 #include <linux/stringify.h>
 
 static ulong fwenv_addr[MAX_FWENV_ADDR];
diff --git a/board/Arcturus/ucp1020/ddr.c b/board/Arcturus/ucp1020/ddr.c
index a3285ebe5cd..712023faf7d 100644
--- a/board/Arcturus/ucp1020/ddr.c
+++ b/board/Arcturus/ucp1020/ddr.c
@@ -16,6 +16,7 @@
 #include <fsl_ddr_dimm_params.h>
 #include <asm/io.h>
 #include <asm/fsl_law.h>
+#include <linux/string.h>
 
 #ifdef CONFIG_SYS_DDR_RAW_TIMING
 #if defined(CONFIG_UCP1020) || defined(CONFIG_UCP1020T1)
diff --git a/board/Arcturus/ucp1020/spl.c b/board/Arcturus/ucp1020/spl.c
index 34660e59f44..b5db24da294 100644
--- a/board/Arcturus/ucp1020/spl.c
+++ b/board/Arcturus/ucp1020/spl.c
@@ -21,6 +21,7 @@
 #include <fsl_esdhc.h>
 #include <spi_flash.h>
 #include <asm/global_data.h>
+#include <linux/string.h>
 
 DECLARE_GLOBAL_DATA_PTR;
 
diff --git a/board/Arcturus/ucp1020/ucp1020.c b/board/Arcturus/ucp1020/ucp1020.c
index 24d1d57ec4b..0846bb0e9ef 100644
--- a/board/Arcturus/ucp1020/ucp1020.c
+++ b/board/Arcturus/ucp1020/ucp1020.c
@@ -40,6 +40,7 @@
 #include <asm/fsl_law.h>
 #include <asm/fsl_lbc.h>
 #include <asm/mp.h>
+#include <linux/string.h>
 #include "ucp1020.h"
 
 void spi_set_speed(struct spi_slave *slave, uint hz)
diff --git a/board/BuR/common/common.c b/board/BuR/common/common.c
index d2d4ea5835b..c42711d9733 100644
--- a/board/BuR/common/common.c
+++ b/board/BuR/common/common.c
@@ -17,6 +17,7 @@
 #include <lcd.h>
 #include <asm/global_data.h>
 #include <linux/delay.h>
+#include <linux/string.h>
 #include "bur_common.h"
 
 DECLARE_GLOBAL_DATA_PTR;
diff --git a/board/BuS/eb_cpu5282/eb_cpu5282.c b/board/BuS/eb_cpu5282/eb_cpu5282.c
index 03a02ffd29c..fb612c70752 100644
--- a/board/BuS/eb_cpu5282/eb_cpu5282.c
+++ b/board/BuS/eb_cpu5282/eb_cpu5282.c
@@ -10,6 +10,7 @@
 #include <common.h>
 #include <command.h>
 #include <asm/global_data.h>
+#include <linux/string.h>
 #include "asm/m5282.h"
 #include <bmp_layout.h>
 #include <env.h>
diff --git a/board/CZ.NIC/turris_omnia/turris_omnia.c b/board/CZ.NIC/turris_omnia/turris_omnia.c
index 0353d58a361..b84227a56e0 100644
--- a/board/CZ.NIC/turris_omnia/turris_omnia.c
+++ b/board/CZ.NIC/turris_omnia/turris_omnia.c
@@ -23,6 +23,7 @@
 #include <fdt_support.h>
 #include <time.h>
 #include <linux/bitops.h>
+#include <linux/string.h>
 #include <u-boot/crc.h>
 # include <atsha204a-i2c.h>
 
diff --git a/board/Synology/ds109/ds109.c b/board/Synology/ds109/ds109.c
index bf57ffff438..7159535ec45 100644
--- a/board/Synology/ds109/ds109.c
+++ b/board/Synology/ds109/ds109.c
@@ -15,6 +15,7 @@
 #include <asm/arch/soc.h>
 #include <asm/arch/mpp.h>
 #include <linux/delay.h>
+#include <linux/string.h>
 #include "ds109.h"
 
 DECLARE_GLOBAL_DATA_PTR;
diff --git a/board/Synology/ds414/cmd_syno.c b/board/Synology/ds414/cmd_syno.c
index a120c3123ff..94a56368970 100644
--- a/board/Synology/ds414/cmd_syno.c
+++ b/board/Synology/ds414/cmd_syno.c
@@ -13,6 +13,7 @@
 #include <spi.h>
 #include <spi_flash.h>
 #include <linux/mtd/mtd.h>
+#include <linux/string.h>
 
 #include <asm/io.h>
 #include "../drivers/ddr/marvell/axp/ddr3_init.h"
diff --git a/board/advantech/imx8qm_rom7720_a1/spl.c b/board/advantech/imx8qm_rom7720_a1/spl.c
index 8493bb01588..5a9a0090535 100644
--- a/board/advantech/imx8qm_rom7720_a1/spl.c
+++ b/board/advantech/imx8qm_rom7720_a1/spl.c
@@ -10,6 +10,7 @@
 #include <spl.h>
 #include <fsl_esdhc.h>
 #include <asm/global_data.h>
+#include <linux/string.h>
 
 #include <asm/io.h>
 #include <asm/gpio.h>
diff --git a/board/aristainetos/aristainetos.c b/board/aristainetos/aristainetos.c
index a28f67a0b13..ab73a928d66 100644
--- a/board/aristainetos/aristainetos.c
+++ b/board/aristainetos/aristainetos.c
@@ -34,6 +34,7 @@
 #include <miiphy.h>
 #include <lcd.h>
 #include <led.h>
+#include <linux/string.h>
 #include <power/pmic.h>
 #include <power/regulator.h>
 #include <power/da9063_pmic.h>
diff --git a/board/armltd/vexpress/vexpress_common.c b/board/armltd/vexpress/vexpress_common.c
index d34c03bf9dd..d359a36c774 100644
--- a/board/armltd/vexpress/vexpress_common.c
+++ b/board/armltd/vexpress/vexpress_common.c
@@ -29,6 +29,7 @@
 #include <asm/arch/systimer.h>
 #include <asm/arch/sysctrl.h>
 #include <asm/arch/wdt.h>
+#include <linux/string.h>
 #include "../drivers/mmc/arm_pl180_mmci.h"
 
 static struct systimer *systimer_base = (struct systimer *)V2M_TIMER01;
diff --git a/board/armltd/vexpress/vexpress_tc2.c b/board/armltd/vexpress/vexpress_tc2.c
index 8ee24bdde73..fe5389b4e44 100644
--- a/board/armltd/vexpress/vexpress_tc2.c
+++ b/board/armltd/vexpress/vexpress_tc2.c
@@ -11,6 +11,7 @@
 #include <asm/u-boot.h>
 #include <common.h>
 #include <linux/libfdt.h>
+#include <linux/string.h>
 
 #define SCC_BASE	0x7fff0000
 
diff --git a/board/armltd/vexpress64/vexpress64.c b/board/armltd/vexpress64/vexpress64.c
index 6bf2ed23190..cc118a02f11 100644
--- a/board/armltd/vexpress64/vexpress64.c
+++ b/board/armltd/vexpress64/vexpress64.c
@@ -16,6 +16,7 @@
 #include <asm/io.h>
 #include <linux/compiler.h>
 #include <dm/platform_data/serial_pl01x.h>
+#include <linux/string.h>
 #include "pcie.h"
 #include <asm/armv8/mmu.h>
 
diff --git a/board/atmel/common/mac-spi-nor.c b/board/atmel/common/mac-spi-nor.c
index ced27b65e63..3b150dac7d8 100644
--- a/board/atmel/common/mac-spi-nor.c
+++ b/board/atmel/common/mac-spi-nor.c
@@ -11,6 +11,7 @@
 #include <net.h>
 #include <linux/mtd/spi-nor.h>
 #include <netdev.h>
+#include <linux/string.h>
 
 #define ETH_ADDR_SIZE			6
 
diff --git a/board/atmel/common/video_display.c b/board/atmel/common/video_display.c
index a5049f4aad4..33725a01f50 100644
--- a/board/atmel/common/video_display.c
+++ b/board/atmel/common/video_display.c
@@ -16,6 +16,7 @@
 #include <asm/global_data.h>
 #include <asm/io.h>
 #include <asm/arch/clk.h>
+#include <linux/string.h>
 
 DECLARE_GLOBAL_DATA_PTR;
 
diff --git a/board/atmel/sama5d3xek/sama5d3xek.c b/board/atmel/sama5d3xek/sama5d3xek.c
index b6f8dcd91dc..4fe979bc8a5 100644
--- a/board/atmel/sama5d3xek/sama5d3xek.c
+++ b/board/atmel/sama5d3xek/sama5d3xek.c
@@ -19,6 +19,7 @@
 #include <spl.h>
 #include <asm/arch/atmel_mpddrc.h>
 #include <asm/arch/at91_wdt.h>
+#include <linux/string.h>
 
 DECLARE_GLOBAL_DATA_PTR;
 
diff --git a/board/barco/platinum/spl_picon.c b/board/barco/platinum/spl_picon.c
index 253a64d28eb..aa33d1feb32 100644
--- a/board/barco/platinum/spl_picon.c
+++ b/board/barco/platinum/spl_picon.c
@@ -18,6 +18,7 @@
 #include <asm/mach-imx/iomux-v3.h>
 #include <asm/mach-imx/mxc_i2c.h>
 #include <spl.h>
+#include <linux/string.h>
 
 #include "platinum.h"
 
diff --git a/board/barco/platinum/spl_titanium.c b/board/barco/platinum/spl_titanium.c
index 8c91b752ffe..ef1e2c419b4 100644
--- a/board/barco/platinum/spl_titanium.c
+++ b/board/barco/platinum/spl_titanium.c
@@ -18,6 +18,7 @@
 #include <asm/mach-imx/iomux-v3.h>
 #include <asm/mach-imx/mxc_i2c.h>
 #include <spl.h>
+#include <linux/string.h>
 
 #include "platinum.h"
 
diff --git a/board/beacon/imx8mm/spl.c b/board/beacon/imx8mm/spl.c
index 12266b22a42..572dc519123 100644
--- a/board/beacon/imx8mm/spl.c
+++ b/board/beacon/imx8mm/spl.c
@@ -14,6 +14,7 @@
 #include <asm/arch/sys_proto.h>
 #include <asm/mach-imx/boot_mode.h>
 #include <asm/arch/ddr.h>
+#include <linux/string.h>
 
 #include <dm/uclass.h>
 #include <dm/device.h>
diff --git a/board/beckhoff/mx53cx9020/mx53cx9020.c b/board/beckhoff/mx53cx9020/mx53cx9020.c
index a3657db8266..e451ef9ef36 100644
--- a/board/beckhoff/mx53cx9020/mx53cx9020.c
+++ b/board/beckhoff/mx53cx9020/mx53cx9020.c
@@ -18,6 +18,7 @@
 #include <ACEX1K.h>
 #include <asm/gpio.h>
 #include <linux/delay.h>
+#include <linux/string.h>
 
 enum LED_GPIOS {
 	GPIO_SD1_CD = IMX_GPIO_NR(1, 1),
diff --git a/board/bluewater/gurnard/gurnard.c b/board/bluewater/gurnard/gurnard.c
index c5c8bcc598e..2ac23674f9c 100644
--- a/board/bluewater/gurnard/gurnard.c
+++ b/board/bluewater/gurnard/gurnard.c
@@ -35,6 +35,7 @@
 #include <asm/arch/gpio.h>
 #include <dm/uclass-internal.h>
 #include <linux/delay.h>
+#include <linux/string.h>
 
 #ifdef CONFIG_GURNARD_SPLASH
 #include "splash_logo.h"
diff --git a/board/boundary/nitrogen6x/nitrogen6x.c b/board/boundary/nitrogen6x/nitrogen6x.c
index 84e14d1124f..3cc093ed530 100644
--- a/board/boundary/nitrogen6x/nitrogen6x.c
+++ b/board/boundary/nitrogen6x/nitrogen6x.c
@@ -35,6 +35,7 @@
 #include <i2c.h>
 #include <input.h>
 #include <netdev.h>
+#include <linux/string.h>
 #include <usb/ehci-ci.h>
 
 DECLARE_GLOBAL_DATA_PTR;
diff --git a/board/cavium/thunderx/atf.c b/board/cavium/thunderx/atf.c
index 64aa198765f..a60c944089d 100644
--- a/board/cavium/thunderx/atf.c
+++ b/board/cavium/thunderx/atf.c
@@ -8,6 +8,7 @@
 #include <asm/cache.h>
 #include <asm/io.h>
 #include <asm/ptrace.h>
+#include <linux/string.h>
 
 #include <asm/system.h>
 #include <cavium/thunderx_svc.h>
diff --git a/board/cobra5272/flash.c b/board/cobra5272/flash.c
index 9aa8f118baf..cefcc6634ff 100644
--- a/board/cobra5272/flash.c
+++ b/board/cobra5272/flash.c
@@ -12,6 +12,7 @@
 #include <time.h>
 #include <uuid.h>
 #include <linux/delay.h>
+#include <linux/string.h>
 
 #define PHYS_FLASH_1 CONFIG_SYS_FLASH_BASE
 #define FLASH_BANK_SIZE 0x200000
@@ -72,7 +73,7 @@ unsigned long flash_init(void)
 			(AMD_ID_PL160CB & FLASH_TYPEMASK);
 		flash_info[i].size = FLASH_BANK_SIZE;
 		flash_info[i].sector_count = CONFIG_SYS_MAX_FLASH_SECT;
-		memset (flash_info[i].protect, 0, CONFIG_SYS_MAX_FLASH_SECT);
+		memset(flash_info[i].protect, 0, CONFIG_SYS_MAX_FLASH_SECT);
 		if (i == 0)
 			flashbase = PHYS_FLASH_1;
 		else
diff --git a/board/compulab/cl-som-imx7/spl.c b/board/compulab/cl-som-imx7/spl.c
index 9c7332b43b5..0128b912801 100644
--- a/board/compulab/cl-som-imx7/spl.c
+++ b/board/compulab/cl-som-imx7/spl.c
@@ -16,6 +16,7 @@
 #include <asm/arch-mx7/mx7-pins.h>
 #include <asm/arch-mx7/clock.h>
 #include <asm/arch-mx7/mx7-ddr.h>
+#include <linux/string.h>
 #include "common.h"
 
 #ifdef CONFIG_FSL_ESDHC_IMX
diff --git a/board/compulab/cm_fx6/cm_fx6.c b/board/compulab/cm_fx6/cm_fx6.c
index 2b11b7ee189..46da479a45f 100644
--- a/board/compulab/cm_fx6/cm_fx6.c
+++ b/board/compulab/cm_fx6/cm_fx6.c
@@ -37,6 +37,7 @@
 #include <dm/device-internal.h>
 #include <jffs2/load_kernel.h>
 #include <linux/delay.h>
+#include <linux/string.h>
 #include "common.h"
 #include "../common/eeprom.h"
 #include "../common/common.h"
diff --git a/board/compulab/common/eeprom.c b/board/compulab/common/eeprom.c
index 5206cf5c0ad..fa4ab7d6567 100644
--- a/board/compulab/common/eeprom.c
+++ b/board/compulab/common/eeprom.c
@@ -13,6 +13,7 @@
 #include <eeprom_field.h>
 #include <asm/setup.h>
 #include <linux/kernel.h>
+#include <linux/string.h>
 #include "eeprom.h"
 
 #ifndef CONFIG_SYS_I2C_EEPROM_ADDR
diff --git a/board/compulab/common/omap3_display.c b/board/compulab/common/omap3_display.c
index cb9ebae7f96..e1511e82ecc 100644
--- a/board/compulab/common/omap3_display.c
+++ b/board/compulab/common/omap3_display.c
@@ -16,6 +16,7 @@
 #include <lcd.h>
 #include <scf0403_lcd.h>
 #include <asm/arch-omap3/dss.h>
+#include <linux/string.h>
 
 enum display_type {
 	NONE,
diff --git a/board/congatec/cgtqmx6eval/cgtqmx6eval.c b/board/congatec/cgtqmx6eval/cgtqmx6eval.c
index 6ae4a1af892..3f74cd87890 100644
--- a/board/congatec/cgtqmx6eval/cgtqmx6eval.c
+++ b/board/congatec/cgtqmx6eval/cgtqmx6eval.c
@@ -29,6 +29,7 @@
 #include <i2c.h>
 #include <input.h>
 #include <linux/delay.h>
+#include <linux/string.h>
 #include <power/pmic.h>
 #include <power/pfuze100_pmic.h>
 #include <linux/fb.h>
diff --git a/board/corscience/tricorder/tricorder-eeprom.c b/board/corscience/tricorder/tricorder-eeprom.c
index d0b91864c27..266f43a0058 100644
--- a/board/corscience/tricorder/tricorder-eeprom.c
+++ b/board/corscience/tricorder/tricorder-eeprom.c
@@ -9,6 +9,7 @@
 #include <display_options.h>
 #include <eeprom.h>
 #include <i2c.h>
+#include <linux/string.h>
 #include <u-boot/crc.h>
 
 #include "tricorder-eeprom.h"
diff --git a/board/corscience/tricorder/tricorder.c b/board/corscience/tricorder/tricorder.c
index 3f4a40fd659..a6fc7f67d02 100644
--- a/board/corscience/tricorder/tricorder.c
+++ b/board/corscience/tricorder/tricorder.c
@@ -21,6 +21,7 @@
 #include <asm/arch/mux.h>
 #include <asm/arch/sys_proto.h>
 #include <asm/arch/mem.h>
+#include <linux/string.h>
 #include "tricorder.h"
 #include "tricorder-eeprom.h"
 
diff --git a/board/creative/xfi3/spl_boot.c b/board/creative/xfi3/spl_boot.c
index 67c1e9801b9..64a13cef305 100644
--- a/board/creative/xfi3/spl_boot.c
+++ b/board/creative/xfi3/spl_boot.c
@@ -11,6 +11,7 @@
 #include <asm/arch/iomux-mx23.h>
 #include <asm/arch/imx-regs.h>
 #include <asm/arch/sys_proto.h>
+#include <linux/string.h>
 
 #define	MUX_CONFIG_EMI	(MXS_PAD_1V8 | MXS_PAD_12MA | MXS_PAD_PULLUP)
 #define	MUX_CONFIG_SSP	(MXS_PAD_3V3 | MXS_PAD_8MA | MXS_PAD_PULLUP)
diff --git a/board/cssi/MCR3000/MCR3000.c b/board/cssi/MCR3000/MCR3000.c
index c20e8714949..2603ad4c57d 100644
--- a/board/cssi/MCR3000/MCR3000.c
+++ b/board/cssi/MCR3000/MCR3000.c
@@ -19,6 +19,7 @@
 #include <dm/uclass.h>
 #include <wdt.h>
 #include <linux/delay.h>
+#include <linux/string.h>
 
 DECLARE_GLOBAL_DATA_PTR;
 
diff --git a/board/davinci/da8xxevm/da850evm.c b/board/davinci/da8xxevm/da850evm.c
index 383a8617384..7b3f303f3a7 100644
--- a/board/davinci/da8xxevm/da850evm.c
+++ b/board/davinci/da8xxevm/da850evm.c
@@ -27,6 +27,7 @@
 #include <hwconfig.h>
 #include <asm/mach-types.h>
 #include <asm/gpio.h>
+#include <linux/string.h>
 
 #ifdef CONFIG_MMC_DAVINCI
 #include <mmc.h>
diff --git a/board/davinci/da8xxevm/omapl138_lcdk.c b/board/davinci/da8xxevm/omapl138_lcdk.c
index 7607e313b75..3f4bd39ec8f 100644
--- a/board/davinci/da8xxevm/omapl138_lcdk.c
+++ b/board/davinci/da8xxevm/omapl138_lcdk.c
@@ -26,6 +26,7 @@
 #include <mmc.h>
 #include <asm/arch/sdmmc_defs.h>
 #endif
+#include <linux/string.h>
 
 DECLARE_GLOBAL_DATA_PTR;
 
diff --git a/board/dhelectronics/dh_imx6/dh_imx6.c b/board/dhelectronics/dh_imx6/dh_imx6.c
index 2969e90a707..c8c99a2aa47 100644
--- a/board/dhelectronics/dh_imx6/dh_imx6.c
+++ b/board/dhelectronics/dh_imx6/dh_imx6.c
@@ -34,6 +34,7 @@
 #include <mmc.h>
 #include <usb.h>
 #include <linux/delay.h>
+#include <linux/string.h>
 #include <usb/ehci-ci.h>
 
 DECLARE_GLOBAL_DATA_PTR;
diff --git a/board/dhelectronics/dh_imx6/dh_imx6_spl.c b/board/dhelectronics/dh_imx6/dh_imx6_spl.c
index e49e97724a5..dd8f1625be3 100644
--- a/board/dhelectronics/dh_imx6/dh_imx6_spl.c
+++ b/board/dhelectronics/dh_imx6/dh_imx6_spl.c
@@ -26,6 +26,7 @@
 #include <mmc.h>
 #include <spl.h>
 #include <linux/delay.h>
+#include <linux/string.h>
 
 #define ENET_PAD_CTRL							\
 	(PAD_CTL_PUS_100K_UP | PAD_CTL_SPEED_MED | PAD_CTL_DSE_40ohm |	\
diff --git a/board/dhelectronics/dh_stm32mp1/board.c b/board/dhelectronics/dh_stm32mp1/board.c
index f4694e4b883..851024f52b3 100644
--- a/board/dhelectronics/dh_stm32mp1/board.c
+++ b/board/dhelectronics/dh_stm32mp1/board.c
@@ -36,6 +36,7 @@
 #include <linux/bitops.h>
 #include <linux/delay.h>
 #include <linux/printk.h>
+#include <linux/string.h>
 #include <power/regulator.h>
 #include <remoteproc.h>
 #include <reset.h>
diff --git a/board/egnite/ethernut5/ethernut5_pwrman.c b/board/egnite/ethernut5/ethernut5_pwrman.c
index 81f1abf2fad..56c33bfade4 100644
--- a/board/egnite/ethernut5/ethernut5_pwrman.c
+++ b/board/egnite/ethernut5/ethernut5_pwrman.c
@@ -39,6 +39,7 @@
 #include <asm/io.h>
 #include <i2c.h>
 #include <linux/delay.h>
+#include <linux/string.h>
 
 #include "ethernut5_pwrman.h"
 
diff --git a/board/el/el6x/el6x.c b/board/el/el6x/el6x.c
index ddac58f73d2..382a255d162 100644
--- a/board/el/el6x/el6x.c
+++ b/board/el/el6x/el6x.c
@@ -31,6 +31,7 @@
 #include <asm/arch/sys_proto.h>
 #include <i2c.h>
 #include <input.h>
+#include <linux/string.h>
 #include <power/pmic.h>
 #include <power/pfuze100_pmic.h>
 #include <asm/arch/mx6-ddr.h>
diff --git a/board/engicam/common/board.c b/board/engicam/common/board.c
index df9149e0d6d..28080d423b3 100644
--- a/board/engicam/common/board.c
+++ b/board/engicam/common/board.c
@@ -17,6 +17,7 @@
 #include <asm/arch/sys_proto.h>
 #include <watchdog.h>
 #include <asm/global_data.h>
+#include <linux/string.h>
 
 #include "board.h"
 
diff --git a/board/engicam/common/spl.c b/board/engicam/common/spl.c
index 6a0612481a8..d57419a78ef 100644
--- a/board/engicam/common/spl.c
+++ b/board/engicam/common/spl.c
@@ -11,6 +11,7 @@
 #include <serial.h>
 #include <spl.h>
 #include <linux/delay.h>
+#include <linux/string.h>
 
 #include <asm/io.h>
 #include <asm/gpio.h>
diff --git a/board/esd/meesc/meesc.c b/board/esd/meesc/meesc.c
index eaa525eb004..81aa22bc831 100644
--- a/board/esd/meesc/meesc.c
+++ b/board/esd/meesc/meesc.c
@@ -28,6 +28,7 @@
 #include <asm/arch/at91_pio.h>
 #include <asm/arch/clk.h>
 #include <netdev.h>
+#include <linux/string.h>
 
 DECLARE_GLOBAL_DATA_PTR;
 
diff --git a/board/esd/vme8349/caddy.c b/board/esd/vme8349/caddy.c
index ba91f4b3c84..fc4855a5bea 100644
--- a/board/esd/vme8349/caddy.c
+++ b/board/esd/vme8349/caddy.c
@@ -15,6 +15,7 @@
 #include <pci.h>
 #include <asm/mmu.h>
 #include <asm/io.h>
+#include <linux/string.h>
 
 #include "caddy.h"
 
diff --git a/board/esd/vme8349/vme8349.c b/board/esd/vme8349/vme8349.c
index d388fc6d490..56dd2269cb8 100644
--- a/board/esd/vme8349/vme8349.c
+++ b/board/esd/vme8349/vme8349.c
@@ -28,6 +28,7 @@
 #include <spd_sdram.h>
 #include <i2c.h>
 #include <netdev.h>
+#include <linux/string.h>
 
 DECLARE_GLOBAL_DATA_PTR;
 
diff --git a/board/firefly/roc-pc-rk3399/roc-pc-rk3399.c b/board/firefly/roc-pc-rk3399/roc-pc-rk3399.c
index 93e7d776fb2..7029bf7bf86 100644
--- a/board/firefly/roc-pc-rk3399/roc-pc-rk3399.c
+++ b/board/firefly/roc-pc-rk3399/roc-pc-rk3399.c
@@ -9,6 +9,7 @@
 #include <log.h>
 #include <spl_gpio.h>
 #include <asm/io.h>
+#include <linux/string.h>
 #include <power/regulator.h>
 
 #include <asm/arch-rockchip/cru.h>
diff --git a/board/freescale/common/fsl_validate.c b/board/freescale/common/fsl_validate.c
index 564a8b3b54f..213545e777f 100644
--- a/board/freescale/common/fsl_validate.c
+++ b/board/freescale/common/fsl_validate.c
@@ -13,6 +13,7 @@
 #include <command.h>
 #include <log.h>
 #include <malloc.h>
+#include <linux/string.h>
 #include <u-boot/rsa-mod-exp.h>
 #include <hash.h>
 #include <fsl_secboot_err.h>
diff --git a/board/freescale/common/ngpixis.c b/board/freescale/common/ngpixis.c
index 37a6f775a05..a89b07986bb 100644
--- a/board/freescale/common/ngpixis.c
+++ b/board/freescale/common/ngpixis.c
@@ -32,6 +32,7 @@
 #include <common.h>
 #include <command.h>
 #include <asm/io.h>
+#include <linux/string.h>
 
 #include "ngpixis.h"
 
diff --git a/board/freescale/common/pixis.c b/board/freescale/common/pixis.c
index 4127fbc1396..99e8069ad29 100644
--- a/board/freescale/common/pixis.c
+++ b/board/freescale/common/pixis.c
@@ -8,6 +8,7 @@
 #include <common.h>
 #include <command.h>
 #include <asm/io.h>
+#include <linux/string.h>
 
 #define pixis_base (u8 *)PIXIS_BASE
 
diff --git a/board/freescale/common/qixis.c b/board/freescale/common/qixis.c
index 1696c24e27b..8592b0f0f0a 100644
--- a/board/freescale/common/qixis.c
+++ b/board/freescale/common/qixis.c
@@ -11,6 +11,7 @@
 #include <command.h>
 #include <asm/io.h>
 #include <linux/compiler.h>
+#include <linux/string.h>
 #include <linux/time.h>
 #include <i2c.h>
 #include "qixis.h"
diff --git a/board/freescale/common/sgmii_riser.c b/board/freescale/common/sgmii_riser.c
index 23157930101..e6481f69516 100644
--- a/board/freescale/common/sgmii_riser.c
+++ b/board/freescale/common/sgmii_riser.c
@@ -19,6 +19,7 @@
 #include <linux/libfdt.h>
 #include <tsec.h>
 #include <fdt_support.h>
+#include <linux/string.h>
 
 void fsl_sgmii_riser_init(struct tsec_info_struct *tsec_info, int num)
 {
diff --git a/board/freescale/common/sys_eeprom.c b/board/freescale/common/sys_eeprom.c
index 728245d81cd..566920d5feb 100644
--- a/board/freescale/common/sys_eeprom.c
+++ b/board/freescale/common/sys_eeprom.c
@@ -13,6 +13,7 @@
 #include <init.h>
 #include <linux/ctype.h>
 #include <linux/delay.h>
+#include <linux/string.h>
 #include <u-boot/crc.h>
 
 #ifdef CONFIG_SYS_I2C_EEPROM_CCID
diff --git a/board/freescale/corenet_ds/ddr.c b/board/freescale/corenet_ds/ddr.c
index 2c440673e7c..a8e499869f5 100644
--- a/board/freescale/corenet_ds/ddr.c
+++ b/board/freescale/corenet_ds/ddr.c
@@ -14,6 +14,7 @@
 #include <fsl_ddr_sdram.h>
 #include <fsl_ddr_dimm_params.h>
 #include <asm/fsl_law.h>
+#include <linux/string.h>
 
 DECLARE_GLOBAL_DATA_PTR;
 
diff --git a/board/freescale/corenet_ds/eth_hydra.c b/board/freescale/corenet_ds/eth_hydra.c
index 8112c12568d..90ce999be0c 100644
--- a/board/freescale/corenet_ds/eth_hydra.c
+++ b/board/freescale/corenet_ds/eth_hydra.c
@@ -56,6 +56,7 @@
 #include <malloc.h>
 #include <fdt_support.h>
 #include <fsl_dtsec.h>
+#include <linux/string.h>
 
 #include "../common/ngpixis.h"
 #include "../common/fman.h"
diff --git a/board/freescale/corenet_ds/eth_superhydra.c b/board/freescale/corenet_ds/eth_superhydra.c
index 35daa1e80f3..296b2b10027 100644
--- a/board/freescale/corenet_ds/eth_superhydra.c
+++ b/board/freescale/corenet_ds/eth_superhydra.c
@@ -57,6 +57,7 @@
 #include <malloc.h>
 #include <fdt_support.h>
 #include <fsl_dtsec.h>
+#include <linux/string.h>
 
 #include "../common/ngpixis.h"
 #include "../common/fman.h"
diff --git a/board/freescale/imx8mm_evk/spl.c b/board/freescale/imx8mm_evk/spl.c
index 64bc60651d3..fbc13ad128a 100644
--- a/board/freescale/imx8mm_evk/spl.c
+++ b/board/freescale/imx8mm_evk/spl.c
@@ -19,6 +19,7 @@
 #include <asm/arch/sys_proto.h>
 #include <asm/mach-imx/boot_mode.h>
 #include <asm/arch/ddr.h>
+#include <linux/string.h>
 
 #include <dm/uclass.h>
 #include <dm/device.h>
diff --git a/board/freescale/imx8mn_evk/spl.c b/board/freescale/imx8mn_evk/spl.c
index 6d5c7a5b467..9f3c5884128 100644
--- a/board/freescale/imx8mn_evk/spl.c
+++ b/board/freescale/imx8mn_evk/spl.c
@@ -20,6 +20,7 @@
 #include <asm/arch/sys_proto.h>
 #include <asm/mach-imx/boot_mode.h>
 #include <asm/arch/ddr.h>
+#include <linux/string.h>
 
 #include <dm/uclass.h>
 #include <dm/device.h>
diff --git a/board/freescale/imx8mq_evk/spl.c b/board/freescale/imx8mq_evk/spl.c
index 82753585f2f..66a0be0b3df 100644
--- a/board/freescale/imx8mq_evk/spl.c
+++ b/board/freescale/imx8mq_evk/spl.c
@@ -24,6 +24,7 @@
 #include <fsl_esdhc_imx.h>
 #include <mmc.h>
 #include <linux/delay.h>
+#include <linux/string.h>
 #include <power/pmic.h>
 #include <power/pfuze100_pmic.h>
 #include <spl.h>
diff --git a/board/freescale/imx8qm_mek/imx8qm_mek.c b/board/freescale/imx8qm_mek/imx8qm_mek.c
index c6772206244..7b280be8e94 100644
--- a/board/freescale/imx8qm_mek/imx8qm_mek.c
+++ b/board/freescale/imx8qm_mek/imx8qm_mek.c
@@ -18,6 +18,7 @@
 #include <asm/arch/imx8-pins.h>
 #include <asm/arch/iomux.h>
 #include <asm/arch/sys_proto.h>
+#include <linux/string.h>
 
 DECLARE_GLOBAL_DATA_PTR;
 
diff --git a/board/freescale/imx8qm_mek/spl.c b/board/freescale/imx8qm_mek/spl.c
index 944ba745c09..cdbff80e31b 100644
--- a/board/freescale/imx8qm_mek/spl.c
+++ b/board/freescale/imx8qm_mek/spl.c
@@ -17,6 +17,7 @@
 #include <dm/device-internal.h>
 #include <dm/lists.h>
 #include <asm/arch/sys_proto.h>
+#include <linux/string.h>
 
 DECLARE_GLOBAL_DATA_PTR;
 
diff --git a/board/freescale/imx8qxp_mek/imx8qxp_mek.c b/board/freescale/imx8qxp_mek/imx8qxp_mek.c
index 7179823a223..645e9923548 100644
--- a/board/freescale/imx8qxp_mek/imx8qxp_mek.c
+++ b/board/freescale/imx8qxp_mek/imx8qxp_mek.c
@@ -21,6 +21,7 @@
 #include <asm/arch/snvs_security_sc.h>
 #include <asm/arch/iomux.h>
 #include <asm/arch/sys_proto.h>
+#include <linux/string.h>
 
 DECLARE_GLOBAL_DATA_PTR;
 
diff --git a/board/freescale/imx8qxp_mek/spl.c b/board/freescale/imx8qxp_mek/spl.c
index ae6b64ff6ea..9eb4268ce3f 100644
--- a/board/freescale/imx8qxp_mek/spl.c
+++ b/board/freescale/imx8qxp_mek/spl.c
@@ -22,6 +22,7 @@
 #include <asm/arch/imx8-pins.h>
 #include <asm/arch/iomux.h>
 #include <asm/arch/sys_proto.h>
+#include <linux/string.h>
 
 DECLARE_GLOBAL_DATA_PTR;
 
diff --git a/board/freescale/ls1012aqds/ls1012aqds.c b/board/freescale/ls1012aqds/ls1012aqds.c
index b77808ea57b..5c89385acca 100644
--- a/board/freescale/ls1012aqds/ls1012aqds.c
+++ b/board/freescale/ls1012aqds/ls1012aqds.c
@@ -29,6 +29,7 @@
 #include <spl.h>
 #include <netdev.h>
 #include <fsl_sec.h>
+#include <linux/string.h>
 #include "../common/qixis.h"
 #include "ls1012aqds_qixis.h"
 #include "ls1012aqds_pfe.h"
diff --git a/board/freescale/ls1012ardb/ls1012ardb.c b/board/freescale/ls1012ardb/ls1012ardb.c
index ed6dc9ff712..02f3ff6aa02 100644
--- a/board/freescale/ls1012ardb/ls1012ardb.c
+++ b/board/freescale/ls1012ardb/ls1012ardb.c
@@ -28,6 +28,7 @@
 #include <fsl_mmdc.h>
 #include <netdev.h>
 #include <fsl_sec.h>
+#include <linux/string.h>
 
 DECLARE_GLOBAL_DATA_PTR;
 
diff --git a/board/freescale/ls1021aiot/dcu.c b/board/freescale/ls1021aiot/dcu.c
index e4fbcbcaad3..55706549852 100644
--- a/board/freescale/ls1021aiot/dcu.c
+++ b/board/freescale/ls1021aiot/dcu.c
@@ -8,6 +8,7 @@
 #include <common.h>
 #include <fsl_dcu_fb.h>
 #include <asm/global_data.h>
+#include <linux/string.h>
 #include "div64.h"
 #include "../common/dcu_sii9022a.h"
 
diff --git a/board/freescale/ls1021aiot/ls1021aiot.c b/board/freescale/ls1021aiot/ls1021aiot.c
index bfe61376042..d257f9723e3 100644
--- a/board/freescale/ls1021aiot/ls1021aiot.c
+++ b/board/freescale/ls1021aiot/ls1021aiot.c
@@ -14,6 +14,7 @@
 #include <asm/arch/ls102xa_stream_id.h>
 #include <asm/global_data.h>
 #include <linux/delay.h>
+#include <linux/string.h>
 
 #include <asm/arch/ls102xa_devdis.h>
 #include <asm/arch/ls102xa_soc.h>
diff --git a/board/freescale/ls1021aqds/dcu.c b/board/freescale/ls1021aqds/dcu.c
index f66961ca590..1bfd94bb7a1 100644
--- a/board/freescale/ls1021aqds/dcu.c
+++ b/board/freescale/ls1021aqds/dcu.c
@@ -11,6 +11,7 @@
 #include <common.h>
 #include <fsl_dcu_fb.h>
 #include <i2c.h>
+#include <linux/string.h>
 #include "div64.h"
 #include "../common/diu_ch7301.h"
 #include "ls1021aqds_qixis.h"
diff --git a/board/freescale/ls1021aqds/ddr.c b/board/freescale/ls1021aqds/ddr.c
index 66fe1519cc6..e63fe63e40c 100644
--- a/board/freescale/ls1021aqds/ddr.c
+++ b/board/freescale/ls1021aqds/ddr.c
@@ -12,6 +12,7 @@
 #include <asm/io.h>
 #include <asm/arch/clock.h>
 #include <linux/delay.h>
+#include <linux/string.h>
 #include "ddr.h"
 
 DECLARE_GLOBAL_DATA_PTR;
diff --git a/board/freescale/ls1021aqds/eth.c b/board/freescale/ls1021aqds/eth.c
index a9f162b974d..9cf797477b8 100644
--- a/board/freescale/ls1021aqds/eth.c
+++ b/board/freescale/ls1021aqds/eth.c
@@ -20,6 +20,7 @@
 #include <fsl_mdio.h>
 #include <tsec.h>
 #include <malloc.h>
+#include <linux/string.h>
 
 #include "../common/sgmii_riser.h"
 #include "../common/qixis.h"
diff --git a/board/freescale/ls1021aqds/ls1021aqds.c b/board/freescale/ls1021aqds/ls1021aqds.c
index 4169a0fc859..d3af462e68a 100644
--- a/board/freescale/ls1021aqds/ls1021aqds.c
+++ b/board/freescale/ls1021aqds/ls1021aqds.c
@@ -25,6 +25,7 @@
 #include <fsl_devdis.h>
 #include <fsl_validate.h>
 #include <fsl_ddr.h>
+#include <linux/string.h>
 #include "../common/sleep.h"
 #include "../common/qixis.h"
 #include "ls1021aqds_qixis.h"
diff --git a/board/freescale/ls1021atsn/ls1021atsn.c b/board/freescale/ls1021atsn/ls1021atsn.c
index c1acd3040c4..010d243754c 100644
--- a/board/freescale/ls1021atsn/ls1021atsn.c
+++ b/board/freescale/ls1021atsn/ls1021atsn.c
@@ -13,6 +13,7 @@
 #include <asm/arch/fsl_serdes.h>
 #include <asm/global_data.h>
 #include <linux/delay.h>
+#include <linux/string.h>
 #include "../common/sleep.h"
 #include <fsl_validate.h>
 #include <fsl_immap.h>
diff --git a/board/freescale/ls1021atwr/dcu.c b/board/freescale/ls1021atwr/dcu.c
index 7bf283e3d66..b52d297bb96 100644
--- a/board/freescale/ls1021atwr/dcu.c
+++ b/board/freescale/ls1021atwr/dcu.c
@@ -8,6 +8,7 @@
 #include <common.h>
 #include <fsl_dcu_fb.h>
 #include <asm/global_data.h>
+#include <linux/string.h>
 #include "div64.h"
 #include "../common/dcu_sii9022a.h"
 
diff --git a/board/freescale/ls1021atwr/ls1021atwr.c b/board/freescale/ls1021atwr/ls1021atwr.c
index 0cd38a14b83..72014b2173a 100644
--- a/board/freescale/ls1021atwr/ls1021atwr.c
+++ b/board/freescale/ls1021atwr/ls1021atwr.c
@@ -30,6 +30,7 @@
 #include <fsl_devdis.h>
 #include <spl.h>
 #include <linux/delay.h>
+#include <linux/string.h>
 #include "../common/sleep.h"
 #ifdef CONFIG_U_QE
 #include <fsl_qe.h>
diff --git a/board/freescale/ls1043aqds/eth.c b/board/freescale/ls1043aqds/eth.c
index 95412df1d7b..fc4dc210f90 100644
--- a/board/freescale/ls1043aqds/eth.c
+++ b/board/freescale/ls1043aqds/eth.c
@@ -16,6 +16,7 @@
 #include <linux/libfdt.h>
 #include <malloc.h>
 #include <asm/arch/fsl_serdes.h>
+#include <linux/string.h>
 
 #include "../common/qixis.h"
 #include "../common/fman.h"
diff --git a/board/freescale/ls1043ardb/cpld.c b/board/freescale/ls1043ardb/cpld.c
index 5d2e8015a05..90faa0ba209 100644
--- a/board/freescale/ls1043ardb/cpld.c
+++ b/board/freescale/ls1043ardb/cpld.c
@@ -8,6 +8,7 @@
 #include <common.h>
 #include <command.h>
 #include <asm/io.h>
+#include <linux/string.h>
 #include "cpld.h"
 
 u8 cpld_read(unsigned int reg)
diff --git a/board/freescale/ls1043ardb/ddr.c b/board/freescale/ls1043ardb/ddr.c
index 08b43ff5e4c..75346de3726 100644
--- a/board/freescale/ls1043ardb/ddr.c
+++ b/board/freescale/ls1043ardb/ddr.c
@@ -7,6 +7,7 @@
 #include <fsl_ddr_sdram.h>
 #include <fsl_ddr_dimm_params.h>
 #include <asm/global_data.h>
+#include <linux/string.h>
 #include "ddr.h"
 #include <log.h>
 #include <vsprintf.h>
diff --git a/board/freescale/ls1046afrwy/eth.c b/board/freescale/ls1046afrwy/eth.c
index 06ccfe9e8ed..1b27d3e8538 100644
--- a/board/freescale/ls1046afrwy/eth.c
+++ b/board/freescale/ls1046afrwy/eth.c
@@ -11,6 +11,7 @@
 #include <fsl_dtsec.h>
 #include <fsl_mdio.h>
 #include <malloc.h>
+#include <linux/string.h>
 
 #include "../common/fman.h"
 
diff --git a/board/freescale/ls1046ardb/cpld.c b/board/freescale/ls1046ardb/cpld.c
index 548601a5ae1..252b5adaf5e 100644
--- a/board/freescale/ls1046ardb/cpld.c
+++ b/board/freescale/ls1046ardb/cpld.c
@@ -8,6 +8,7 @@
 #include <common.h>
 #include <command.h>
 #include <asm/io.h>
+#include <linux/string.h>
 #include "cpld.h"
 
 u8 cpld_read(unsigned int reg)
diff --git a/board/freescale/ls1046ardb/eth.c b/board/freescale/ls1046ardb/eth.c
index 4905302d8cd..ddfee621793 100644
--- a/board/freescale/ls1046ardb/eth.c
+++ b/board/freescale/ls1046ardb/eth.c
@@ -11,6 +11,7 @@
 #include <fsl_dtsec.h>
 #include <fsl_mdio.h>
 #include <malloc.h>
+#include <linux/string.h>
 
 #include "../common/fman.h"
 
diff --git a/board/freescale/ls1088a/eth_ls1088aqds.c b/board/freescale/ls1088a/eth_ls1088aqds.c
index bf4f57e6f8a..f1cccf7d73f 100644
--- a/board/freescale/ls1088a/eth_ls1088aqds.c
+++ b/board/freescale/ls1088a/eth_ls1088aqds.c
@@ -21,6 +21,7 @@
 #include <fsl-mc/fsl_mc.h>
 #include <fsl-mc/ldpaa_wriop.h>
 #include <linux/delay.h>
+#include <linux/string.h>
 
 #include "../common/qixis.h"
 
diff --git a/board/freescale/ls1088a/ls1088a.c b/board/freescale/ls1088a/ls1088a.c
index 41453709eac..8fcd8ef7cdd 100644
--- a/board/freescale/ls1088a/ls1088a.c
+++ b/board/freescale/ls1088a/ls1088a.c
@@ -27,6 +27,7 @@
 #include <asm/arch/fsl_serdes.h>
 #include <asm/arch/soc.h>
 #include <asm/arch-fsl-layerscape/fsl_icid.h>
+#include <linux/string.h>
 
 #include "../common/qixis.h"
 #include "ls1088a_qixis.h"
diff --git a/board/freescale/ls2080a/ddr.c b/board/freescale/ls2080a/ddr.c
index 29d7bd1c5ee..a647cc6a3f7 100644
--- a/board/freescale/ls2080a/ddr.c
+++ b/board/freescale/ls2080a/ddr.c
@@ -10,6 +10,7 @@
 #include <asm/arch/soc.h>
 #include <asm/arch/clock.h>
 #include <asm/global_data.h>
+#include <linux/string.h>
 #include "ddr.h"
 
 DECLARE_GLOBAL_DATA_PTR;
diff --git a/board/freescale/ls2080aqds/eth.c b/board/freescale/ls2080aqds/eth.c
index 4b7f85540dc..1b8235c9a09 100644
--- a/board/freescale/ls2080aqds/eth.c
+++ b/board/freescale/ls2080aqds/eth.c
@@ -19,6 +19,7 @@
 #include <fsl-mc/fsl_mc.h>
 #include <fsl-mc/ldpaa_wriop.h>
 #include <linux/delay.h>
+#include <linux/string.h>
 
 #include "../common/qixis.h"
 
diff --git a/board/freescale/ls2080aqds/ls2080aqds.c b/board/freescale/ls2080aqds/ls2080aqds.c
index 3ab93388724..87d7e5312f4 100644
--- a/board/freescale/ls2080aqds/ls2080aqds.c
+++ b/board/freescale/ls2080aqds/ls2080aqds.c
@@ -24,6 +24,7 @@
 #include <fsl_sec.h>
 #include <asm/arch/ppa.h>
 #include <asm/arch-fsl-layerscape/fsl_icid.h>
+#include <linux/string.h>
 
 
 #include "../common/qixis.h"
diff --git a/board/freescale/lx2160a/eth_lx2160aqds.c b/board/freescale/lx2160a/eth_lx2160aqds.c
index 437f0bc4cf6..b069e4fb266 100644
--- a/board/freescale/lx2160a/eth_lx2160aqds.c
+++ b/board/freescale/lx2160a/eth_lx2160aqds.c
@@ -24,6 +24,7 @@
 #include <fsl-mc/fsl_mc.h>
 #include <fsl-mc/ldpaa_wriop.h>
 #include <linux/libfdt.h>
+#include <linux/string.h>
 
 #include "../common/qixis.h"
 
diff --git a/board/freescale/lx2160a/lx2160a.c b/board/freescale/lx2160a/lx2160a.c
index 1d781841c40..8d87b29cfde 100644
--- a/board/freescale/lx2160a/lx2160a.c
+++ b/board/freescale/lx2160a/lx2160a.c
@@ -30,6 +30,7 @@
 #include <asm/arch/config.h>
 #include <asm/arch/fsl_serdes.h>
 #include <asm/arch/soc.h>
+#include <linux/string.h>
 #include "../common/qixis.h"
 #include "../common/vid.h"
 #include <fsl_immap.h>
diff --git a/board/freescale/mpc8323erdb/mpc8323erdb.c b/board/freescale/mpc8323erdb/mpc8323erdb.c
index cef3216a6fe..977bd512059 100644
--- a/board/freescale/mpc8323erdb/mpc8323erdb.c
+++ b/board/freescale/mpc8323erdb/mpc8323erdb.c
@@ -22,6 +22,7 @@
 #include <asm/global_data.h>
 #include <linux/delay.h>
 #include <linux/libfdt.h>
+#include <linux/string.h>
 #include <u-boot/crc.h>
 #if defined(CONFIG_PCI)
 #include <pci.h>
diff --git a/board/freescale/mpc8349itx/mpc8349itx.c b/board/freescale/mpc8349itx/mpc8349itx.c
index 5b4c290df14..356b0ea2daa 100644
--- a/board/freescale/mpc8349itx/mpc8349itx.c
+++ b/board/freescale/mpc8349itx/mpc8349itx.c
@@ -24,6 +24,7 @@
 #include <linux/libfdt.h>
 #endif
 #include <linux/delay.h>
+#include <linux/string.h>
 
 #include "../../../arch/powerpc/cpu/mpc83xx/hrcw/hrcw.h"
 #include "../../../arch/powerpc/cpu/mpc83xx/elbc/elbc.h"
diff --git a/board/freescale/mpc837xemds/mpc837xemds.c b/board/freescale/mpc837xemds/mpc837xemds.c
index 71875cf8f8e..c4233aad741 100644
--- a/board/freescale/mpc837xemds/mpc837xemds.c
+++ b/board/freescale/mpc837xemds/mpc837xemds.c
@@ -21,6 +21,7 @@
 #include <fsl_esdhc.h>
 #include <fsl_mdio.h>
 #include <phy.h>
+#include <linux/string.h>
 #include "pci.h"
 #include "../common/pq-mds-pib.h"
 
diff --git a/board/freescale/mpc837xemds/pci.c b/board/freescale/mpc837xemds/pci.c
index 188e60ac08c..3e5a64d14f0 100644
--- a/board/freescale/mpc837xemds/pci.c
+++ b/board/freescale/mpc837xemds/pci.c
@@ -15,6 +15,7 @@
 #include <asm/fsl_i2c.h>
 #include <asm/fsl_mpc83xx_serdes.h>
 #include <linux/delay.h>
+#include <linux/string.h>
 
 static struct pci_region pci_regions[] = {
 	{
diff --git a/board/freescale/mpc8569mds/mpc8569mds.c b/board/freescale/mpc8569mds/mpc8569mds.c
index 1d2cffbacdf..b4b75f3642a 100644
--- a/board/freescale/mpc8569mds/mpc8569mds.c
+++ b/board/freescale/mpc8569mds/mpc8569mds.c
@@ -28,6 +28,7 @@
 #include <fdt_support.h>
 #include <fsl_esdhc.h>
 #include <phy.h>
+#include <linux/string.h>
 
 #include "bcsr.h"
 #if defined(CONFIG_PQ_MDS_PIB)
diff --git a/board/freescale/mpc8610hpcd/mpc8610hpcd_diu.c b/board/freescale/mpc8610hpcd/mpc8610hpcd_diu.c
index 9b96d0d33f2..3e45a3390a2 100644
--- a/board/freescale/mpc8610hpcd/mpc8610hpcd_diu.c
+++ b/board/freescale/mpc8610hpcd/mpc8610hpcd_diu.c
@@ -13,6 +13,7 @@
 #include <log.h>
 #include <asm/io.h>
 #include <fsl_diu_fb.h>
+#include <linux/string.h>
 #include "../common/pixis.h"
 
 #define PX_BRDCFG0_DLINK	0x10
diff --git a/board/freescale/mx51evk/mx51evk_video.c b/board/freescale/mx51evk/mx51evk_video.c
index 3715c5d738f..2aa456f1c5f 100644
--- a/board/freescale/mx51evk/mx51evk_video.c
+++ b/board/freescale/mx51evk/mx51evk_video.c
@@ -11,6 +11,7 @@
 #include <asm/arch/iomux-mx51.h>
 #include <linux/fb.h>
 #include <ipu_pixfmt.h>
+#include <linux/string.h>
 
 #define MX51EVK_LCD_3V3		IMX_GPIO_NR(4, 9)
 #define MX51EVK_LCD_5V		IMX_GPIO_NR(4, 10)
diff --git a/board/freescale/mx53loco/mx53loco_video.c b/board/freescale/mx53loco/mx53loco_video.c
index ff3fc8ce3e6..67c279adf18 100644
--- a/board/freescale/mx53loco/mx53loco_video.c
+++ b/board/freescale/mx53loco/mx53loco_video.c
@@ -11,6 +11,7 @@
 #include <asm/arch/iomux-mx53.h>
 #include <linux/fb.h>
 #include <ipu_pixfmt.h>
+#include <linux/string.h>
 
 #define MX53LOCO_LCD_POWER		IMX_GPIO_NR(3, 24)
 
diff --git a/board/freescale/mx6memcal/spl.c b/board/freescale/mx6memcal/spl.c
index c82b532f6d5..87020e3ffb1 100644
--- a/board/freescale/mx6memcal/spl.c
+++ b/board/freescale/mx6memcal/spl.c
@@ -16,6 +16,7 @@
 #include <asm/arch/mx6-pins.h>
 #include <asm/arch/sys_proto.h>
 #include <spl.h>
+#include <linux/string.h>
 
 DECLARE_GLOBAL_DATA_PTR;
 
diff --git a/board/freescale/mx6sabreauto/mx6sabreauto.c b/board/freescale/mx6sabreauto/mx6sabreauto.c
index e92ef26d0ad..f8612c82342 100644
--- a/board/freescale/mx6sabreauto/mx6sabreauto.c
+++ b/board/freescale/mx6sabreauto/mx6sabreauto.c
@@ -32,6 +32,7 @@
 #include <asm/mach-imx/video.h>
 #include <asm/arch/crm_regs.h>
 #include <pca953x.h>
+#include <linux/string.h>
 #include <power/pmic.h>
 #include <power/pfuze100_pmic.h>
 #include "../common/pfuze.h"
diff --git a/board/freescale/mx6sabresd/mx6sabresd.c b/board/freescale/mx6sabresd/mx6sabresd.c
index bc28173668e..15f5b654c1b 100644
--- a/board/freescale/mx6sabresd/mx6sabresd.c
+++ b/board/freescale/mx6sabresd/mx6sabresd.c
@@ -30,6 +30,7 @@
 #include <asm/arch/sys_proto.h>
 #include <i2c.h>
 #include <input.h>
+#include <linux/string.h>
 #include <power/pmic.h>
 #include <power/pfuze100_pmic.h>
 #include "../common/pfuze.h"
diff --git a/board/freescale/mx6slevk/mx6slevk.c b/board/freescale/mx6slevk/mx6slevk.c
index 2c90a35e2c9..24086a124f0 100644
--- a/board/freescale/mx6slevk/mx6slevk.c
+++ b/board/freescale/mx6slevk/mx6slevk.c
@@ -24,6 +24,7 @@
 #include <fsl_esdhc_imx.h>
 #include <i2c.h>
 #include <mmc.h>
+#include <linux/string.h>
 #include <power/pmic.h>
 #include <power/pfuze100_pmic.h>
 #include "../common/pfuze.h"
diff --git a/board/freescale/mx6ul_14x14_evk/mx6ul_14x14_evk.c b/board/freescale/mx6ul_14x14_evk/mx6ul_14x14_evk.c
index b916ea01029..ef2408715cf 100644
--- a/board/freescale/mx6ul_14x14_evk/mx6ul_14x14_evk.c
+++ b/board/freescale/mx6ul_14x14_evk/mx6ul_14x14_evk.c
@@ -27,6 +27,7 @@
 #include <linux/sizes.h>
 #include <mmc.h>
 #include <netdev.h>
+#include <linux/string.h>
 #include <power/pmic.h>
 #include <power/pfuze3000_pmic.h>
 #include "../common/pfuze.h"
diff --git a/board/freescale/p1010rdb/ddr.c b/board/freescale/p1010rdb/ddr.c
index 2625195f81b..9444a39b6e8 100644
--- a/board/freescale/p1010rdb/ddr.c
+++ b/board/freescale/p1010rdb/ddr.c
@@ -13,6 +13,7 @@
 #include <fsl_ddr_dimm_params.h>
 #include <asm/io.h>
 #include <asm/fsl_law.h>
+#include <linux/string.h>
 
 DECLARE_GLOBAL_DATA_PTR;
 
diff --git a/board/freescale/p1010rdb/p1010rdb.c b/board/freescale/p1010rdb/p1010rdb.c
index 4f87f03965c..3ffec6a02f1 100644
--- a/board/freescale/p1010rdb/p1010rdb.c
+++ b/board/freescale/p1010rdb/p1010rdb.c
@@ -29,6 +29,7 @@
 #include <asm/fsl_pci.h>
 #include <hwconfig.h>
 #include <i2c.h>
+#include <linux/string.h>
 
 DECLARE_GLOBAL_DATA_PTR;
 
diff --git a/board/freescale/p1010rdb/spl.c b/board/freescale/p1010rdb/spl.c
index 91be63c2cf4..059ce8e100f 100644
--- a/board/freescale/p1010rdb/spl.c
+++ b/board/freescale/p1010rdb/spl.c
@@ -16,6 +16,7 @@
 #include <fsl_esdhc.h>
 #include <spi_flash.h>
 #include <asm/global_data.h>
+#include <linux/string.h>
 #include "../common/spl.h"
 
 DECLARE_GLOBAL_DATA_PTR;
diff --git a/board/freescale/p1023rdb/ddr.c b/board/freescale/p1023rdb/ddr.c
index dc7a909e03b..9971ed544cd 100644
--- a/board/freescale/p1023rdb/ddr.c
+++ b/board/freescale/p1023rdb/ddr.c
@@ -11,6 +11,7 @@
 #include <fsl_ddr_dimm_params.h>
 #include <asm/io.h>
 #include <asm/fsl_law.h>
+#include <linux/string.h>
 
 /* CONFIG_SYS_DDR_RAW_TIMING */
 /*
diff --git a/board/freescale/p1_p2_rdb_pc/ddr.c b/board/freescale/p1_p2_rdb_pc/ddr.c
index 2346f6a0c27..2c7e5fe4c7b 100644
--- a/board/freescale/p1_p2_rdb_pc/ddr.c
+++ b/board/freescale/p1_p2_rdb_pc/ddr.c
@@ -12,6 +12,7 @@
 #include <fsl_ddr_dimm_params.h>
 #include <asm/io.h>
 #include <asm/fsl_law.h>
+#include <linux/string.h>
 
 #ifdef CONFIG_SYS_DDR_RAW_TIMING
 #if	defined(CONFIG_P1020RDB_PROTO) || \
diff --git a/board/freescale/p1_p2_rdb_pc/spl.c b/board/freescale/p1_p2_rdb_pc/spl.c
index 101c748838e..46c5d15ad18 100644
--- a/board/freescale/p1_p2_rdb_pc/spl.c
+++ b/board/freescale/p1_p2_rdb_pc/spl.c
@@ -17,6 +17,7 @@
 #include <fsl_esdhc.h>
 #include <spi_flash.h>
 #include <asm/global_data.h>
+#include <linux/string.h>
 #include "../common/spl.h"
 
 DECLARE_GLOBAL_DATA_PTR;
diff --git a/board/freescale/p2041rdb/cpld.c b/board/freescale/p2041rdb/cpld.c
index b042fe3bcbc..84f1b3c7710 100644
--- a/board/freescale/p2041rdb/cpld.c
+++ b/board/freescale/p2041rdb/cpld.c
@@ -14,6 +14,7 @@
 #include <common.h>
 #include <command.h>
 #include <asm/io.h>
+#include <linux/string.h>
 
 #include "cpld.h"
 
diff --git a/board/freescale/qemu-ppce500/qemu-ppce500.c b/board/freescale/qemu-ppce500/qemu-ppce500.c
index aa5774fd797..b38d03c07a3 100644
--- a/board/freescale/qemu-ppce500/qemu-ppce500.c
+++ b/board/freescale/qemu-ppce500/qemu-ppce500.c
@@ -23,6 +23,7 @@
 #include <fdtdec.h>
 #include <errno.h>
 #include <malloc.h>
+#include <linux/string.h>
 
 DECLARE_GLOBAL_DATA_PTR;
 
diff --git a/board/freescale/t102xrdb/cpld.c b/board/freescale/t102xrdb/cpld.c
index 47c3b1627e3..5dc3e54bbc3 100644
--- a/board/freescale/t102xrdb/cpld.c
+++ b/board/freescale/t102xrdb/cpld.c
@@ -10,6 +10,7 @@
 #include <common.h>
 #include <command.h>
 #include <asm/io.h>
+#include <linux/string.h>
 #include "cpld.h"
 
 u8 cpld_read(unsigned int reg)
diff --git a/board/freescale/t102xrdb/ddr.c b/board/freescale/t102xrdb/ddr.c
index 818c20cf1b5..f4cdbf5b446 100644
--- a/board/freescale/t102xrdb/ddr.c
+++ b/board/freescale/t102xrdb/ddr.c
@@ -15,6 +15,7 @@
 #include <asm/fsl_law.h>
 #include <asm/mpc85xx_gpio.h>
 #include <linux/delay.h>
+#include <linux/string.h>
 
 DECLARE_GLOBAL_DATA_PTR;
 
diff --git a/board/freescale/t102xrdb/spl.c b/board/freescale/t102xrdb/spl.c
index 7ed42ed246f..d8bfbd82791 100644
--- a/board/freescale/t102xrdb/spl.c
+++ b/board/freescale/t102xrdb/spl.c
@@ -15,6 +15,7 @@
 #include <fsl_esdhc.h>
 #include <spi_flash.h>
 #include <asm/global_data.h>
+#include <linux/string.h>
 #include "../common/sleep.h"
 #include "../common/spl.h"
 
diff --git a/board/freescale/t102xrdb/t102xrdb.c b/board/freescale/t102xrdb/t102xrdb.c
index 2770e104ee6..c51555a97e2 100644
--- a/board/freescale/t102xrdb/t102xrdb.c
+++ b/board/freescale/t102xrdb/t102xrdb.c
@@ -21,6 +21,7 @@
 #include <asm/fsl_serdes.h>
 #include <asm/fsl_liodn.h>
 #include <fm_eth.h>
+#include <linux/string.h>
 #include "t102xrdb.h"
 #ifdef CONFIG_TARGET_T1024RDB
 #include "cpld.h"
diff --git a/board/freescale/t104xrdb/cpld.c b/board/freescale/t104xrdb/cpld.c
index ac34095f3b6..6ab7bbdd332 100644
--- a/board/freescale/t104xrdb/cpld.c
+++ b/board/freescale/t104xrdb/cpld.c
@@ -13,6 +13,7 @@
 #include <common.h>
 #include <command.h>
 #include <asm/io.h>
+#include <linux/string.h>
 
 #include "cpld.h"
 
diff --git a/board/freescale/t104xrdb/spl.c b/board/freescale/t104xrdb/spl.c
index 033a1054ff3..2e29b3995d8 100644
--- a/board/freescale/t104xrdb/spl.c
+++ b/board/freescale/t104xrdb/spl.c
@@ -15,6 +15,7 @@
 #include <fsl_esdhc.h>
 #include <spi_flash.h>
 #include <asm/global_data.h>
+#include <linux/string.h>
 #include "../common/sleep.h"
 #include "../common/spl.h"
 
diff --git a/board/freescale/t208xqds/eth_t208xqds.c b/board/freescale/t208xqds/eth_t208xqds.c
index 5044b5695b6..e110f3babf1 100644
--- a/board/freescale/t208xqds/eth_t208xqds.c
+++ b/board/freescale/t208xqds/eth_t208xqds.c
@@ -27,6 +27,7 @@
 #include <fsl_dtsec.h>
 #include <asm/fsl_serdes.h>
 #include <hwconfig.h>
+#include <linux/string.h>
 #include "../common/qixis.h"
 #include "../common/fman.h"
 #include "t208xqds_qixis.h"
diff --git a/board/freescale/t208xqds/spl.c b/board/freescale/t208xqds/spl.c
index 6863243b3dd..4345c29c3b1 100644
--- a/board/freescale/t208xqds/spl.c
+++ b/board/freescale/t208xqds/spl.c
@@ -15,6 +15,7 @@
 #include <fsl_esdhc.h>
 #include <spi_flash.h>
 #include <asm/global_data.h>
+#include <linux/string.h>
 #include "../common/qixis.h"
 #include "t208xqds_qixis.h"
 #include "../common/spl.h"
diff --git a/board/freescale/t208xrdb/cpld.c b/board/freescale/t208xrdb/cpld.c
index b9ba62adffc..81e220ff114 100644
--- a/board/freescale/t208xrdb/cpld.c
+++ b/board/freescale/t208xrdb/cpld.c
@@ -7,6 +7,7 @@
 
 #include <common.h>
 #include <command.h>
+#include <linux/string.h>
 #include "cpld.h"
 
 u8 cpld_read(unsigned int reg)
diff --git a/board/freescale/t208xrdb/spl.c b/board/freescale/t208xrdb/spl.c
index cfa6789d2df..a9bf5fb6466 100644
--- a/board/freescale/t208xrdb/spl.c
+++ b/board/freescale/t208xrdb/spl.c
@@ -15,6 +15,7 @@
 #include <fsl_esdhc.h>
 #include <spi_flash.h>
 #include <asm/global_data.h>
+#include <linux/string.h>
 #include "../common/spl.h"
 
 DECLARE_GLOBAL_DATA_PTR;
diff --git a/board/freescale/t4rdb/cpld.c b/board/freescale/t4rdb/cpld.c
index d484509bc20..5bc149f4ab6 100644
--- a/board/freescale/t4rdb/cpld.c
+++ b/board/freescale/t4rdb/cpld.c
@@ -17,6 +17,7 @@
 #include <common.h>
 #include <command.h>
 #include <asm/io.h>
+#include <linux/string.h>
 
 #include "cpld.h"
 
diff --git a/board/freescale/t4rdb/spl.c b/board/freescale/t4rdb/spl.c
index 42db384a15d..79763119968 100644
--- a/board/freescale/t4rdb/spl.c
+++ b/board/freescale/t4rdb/spl.c
@@ -18,6 +18,7 @@
 #include <mmc.h>
 #include <fsl_esdhc.h>
 #include <i2c.h>
+#include <linux/string.h>
 
 #include "t4rdb.h"
 
diff --git a/board/gardena/smart-gateway-mt7688/board.c b/board/gardena/smart-gateway-mt7688/board.c
index 8a3a6e34825..0c36f53a5a7 100644
--- a/board/gardena/smart-gateway-mt7688/board.c
+++ b/board/gardena/smart-gateway-mt7688/board.c
@@ -16,6 +16,7 @@
 #include <spi.h>
 #include <spi_flash.h>
 #include <linux/delay.h>
+#include <linux/string.h>
 #include <linux/stringify.h>
 #include <u-boot/crc.h>
 #include <uuid.h>
diff --git a/board/gateworks/gw_ventana/eeprom.c b/board/gateworks/gw_ventana/eeprom.c
index a5a151d85b4..325527ceee1 100644
--- a/board/gateworks/gw_ventana/eeprom.c
+++ b/board/gateworks/gw_ventana/eeprom.c
@@ -13,6 +13,7 @@
 #include <malloc.h>
 #include <asm/bitops.h>
 #include <linux/delay.h>
+#include <linux/string.h>
 
 #include "gsc.h"
 #include "ventana_eeprom.h"
diff --git a/board/gateworks/gw_ventana/gsc.c b/board/gateworks/gw_ventana/gsc.c
index bcb6bca3462..54ca5da4fa0 100644
--- a/board/gateworks/gw_ventana/gsc.c
+++ b/board/gateworks/gw_ventana/gsc.c
@@ -13,6 +13,7 @@
 #include <common.h>
 #include <i2c.h>
 #include <linux/ctype.h>
+#include <linux/string.h>
 
 #include "ventana_eeprom.h"
 #include "gsc.h"
diff --git a/board/gateworks/gw_ventana/gw_ventana.c b/board/gateworks/gw_ventana/gw_ventana.c
index bf4d6913067..b0cfd2e931a 100644
--- a/board/gateworks/gw_ventana/gw_ventana.c
+++ b/board/gateworks/gw_ventana/gw_ventana.c
@@ -38,6 +38,7 @@
 #include <pci.h>
 #include <linux/delay.h>
 #include <linux/libfdt.h>
+#include <linux/string.h>
 #include <power/pmic.h>
 #include <power/ltc3676_pmic.h>
 #include <power/pfuze100_pmic.h>
diff --git a/board/gdsys/a38x/hre.c b/board/gdsys/a38x/hre.c
index 699241b3e62..615973894a1 100644
--- a/board/gdsys/a38x/hre.c
+++ b/board/gdsys/a38x/hre.c
@@ -11,6 +11,7 @@
 #include <i2c.h>
 #include <mmc.h>
 #include <tpm-v1.h>
+#include <linux/string.h>
 #include <u-boot/crc.h>
 #include <u-boot/sha1.h>
 #include <asm/byteorder.h>
diff --git a/board/gdsys/a38x/ihs_phys.c b/board/gdsys/a38x/ihs_phys.c
index c23d1509214..31a4aa26b50 100644
--- a/board/gdsys/a38x/ihs_phys.c
+++ b/board/gdsys/a38x/ihs_phys.c
@@ -4,6 +4,7 @@
 #include <asm-generic/gpio.h>
 #include <linux/bitops.h>
 #include <linux/delay.h>
+#include <linux/string.h>
 
 #include "ihs_phys.h"
 #include "dt_helpers.h"
diff --git a/board/gdsys/a38x/keyprogram.c b/board/gdsys/a38x/keyprogram.c
index 853981aadbb..38e25e8fd24 100644
--- a/board/gdsys/a38x/keyprogram.c
+++ b/board/gdsys/a38x/keyprogram.c
@@ -11,6 +11,7 @@
 #include <malloc.h>
 #include <linux/ctype.h>
 #include <asm/unaligned.h>
+#include <linux/string.h>
 
 #include "hre.h"
 
diff --git a/board/gdsys/common/cmd_ioloop.c b/board/gdsys/common/cmd_ioloop.c
index 3ea2bec8ebd..88bf9b2aadd 100644
--- a/board/gdsys/common/cmd_ioloop.c
+++ b/board/gdsys/common/cmd_ioloop.c
@@ -9,6 +9,7 @@
 #include <console.h>
 #include <linux/bitops.h>
 #include <linux/delay.h>
+#include <linux/string.h>
 
 #include <gdsys_fpga.h>
 
diff --git a/board/gdsys/common/ihs_mdio.c b/board/gdsys/common/ihs_mdio.c
index 5f1215e9e8a..3a51338d92a 100644
--- a/board/gdsys/common/ihs_mdio.c
+++ b/board/gdsys/common/ihs_mdio.c
@@ -6,6 +6,7 @@
 
 #include <common.h>
 #include <linux/delay.h>
+#include <linux/string.h>
 
 #include <miiphy.h>
 #ifdef CONFIG_GDSYS_LEGACY_DRIVERS
diff --git a/board/gdsys/common/ioep-fpga.c b/board/gdsys/common/ioep-fpga.c
index 7292d7ab5a4..9c01661dc32 100644
--- a/board/gdsys/common/ioep-fpga.c
+++ b/board/gdsys/common/ioep-fpga.c
@@ -445,6 +445,7 @@ static int get_features(unsigned int fpga, struct fpga_features *features)
 }
 
 #include <linux/bitops.h>
+#include <linux/string.h>
 #endif
 
 bool ioep_fpga_has_osd(unsigned int fpga)
diff --git a/board/gdsys/common/osd.c b/board/gdsys/common/osd.c
index 679f8f30191..9fe95f02059 100644
--- a/board/gdsys/common/osd.c
+++ b/board/gdsys/common/osd.c
@@ -503,4 +503,5 @@ U_BOOT_CMD(
 	") size_y(max. " __stringify(MAX_Y_CHARS) ")\n"
 );
 
+#include <linux/string.h>
 #endif /* CONFIG_GDSYS_LEGACY_DRIVERS */
diff --git a/board/gdsys/common/osd_cmd.c b/board/gdsys/common/osd_cmd.c
index fe6249794e7..120e1efc81e 100644
--- a/board/gdsys/common/osd_cmd.c
+++ b/board/gdsys/common/osd_cmd.c
@@ -15,6 +15,7 @@
 #include <hexdump.h>
 #include <video_osd.h>
 #include <malloc.h>
+#include <linux/string.h>
 
 static int do_osd_write(struct cmd_tbl *cmdtp, int flag, int argc,
 			char *const argv[])
diff --git a/board/gdsys/mpc8308/hrcon.c b/board/gdsys/mpc8308/hrcon.c
index b5c681c2d1e..446a756fbbe 100644
--- a/board/gdsys/mpc8308/hrcon.c
+++ b/board/gdsys/mpc8308/hrcon.c
@@ -21,6 +21,7 @@
 #include <asm/io.h>
 #include <asm/fsl_serdes.h>
 #include <asm/fsl_mpc83xx_serdes.h>
+#include <linux/string.h>
 
 #include "mpc8308.h"
 
diff --git a/board/gdsys/mpc8308/strider.c b/board/gdsys/mpc8308/strider.c
index 91fec74fb03..983d2847614 100644
--- a/board/gdsys/mpc8308/strider.c
+++ b/board/gdsys/mpc8308/strider.c
@@ -21,6 +21,7 @@
 #include <asm/io.h>
 #include <asm/fsl_serdes.h>
 #include <asm/fsl_mpc83xx_serdes.h>
+#include <linux/string.h>
 
 #include "mpc8308.h"
 
diff --git a/board/gdsys/p1022/controlcenterd-id.c b/board/gdsys/p1022/controlcenterd-id.c
index 495ef8e1f83..6ec49996ab9 100644
--- a/board/gdsys/p1022/controlcenterd-id.c
+++ b/board/gdsys/p1022/controlcenterd-id.c
@@ -24,6 +24,7 @@
 #include <mmc.h>
 #include <tpm-v1.h>
 #include <linux/delay.h>
+#include <linux/string.h>
 #include <u-boot/crc.h>
 #include <u-boot/sha1.h>
 #include <asm/byteorder.h>
diff --git a/board/gdsys/p1022/ddr.c b/board/gdsys/p1022/ddr.c
index eb06d224711..b2d44da4adc 100644
--- a/board/gdsys/p1022/ddr.c
+++ b/board/gdsys/p1022/ddr.c
@@ -8,6 +8,7 @@
 #include <common.h>
 #include <i2c.h>
 #include <log.h>
+#include <linux/string.h>
 
 #include <fsl_ddr_sdram.h>
 #include <fsl_ddr_dimm_params.h>
diff --git a/board/ge/bx50v3/bx50v3.c b/board/ge/bx50v3/bx50v3.c
index be5fb0e49cc..3876b25420b 100644
--- a/board/ge/bx50v3/bx50v3.c
+++ b/board/ge/bx50v3/bx50v3.c
@@ -29,6 +29,7 @@
 #include <asm/arch/crm_regs.h>
 #include <asm/io.h>
 #include <asm/arch/sys_proto.h>
+#include <linux/string.h>
 #include <power/regulator.h>
 #include <power/da9063_pmic.h>
 #include <input.h>
diff --git a/board/ge/mx53ppd/mx53ppd.c b/board/ge/mx53ppd/mx53ppd.c
index 4de82cd5cd2..7018b29d5ac 100644
--- a/board/ge/mx53ppd/mx53ppd.c
+++ b/board/ge/mx53ppd/mx53ppd.c
@@ -28,6 +28,7 @@
 #include <mmc.h>
 #include <fsl_esdhc_imx.h>
 #include <asm/gpio.h>
+#include <linux/string.h>
 #include <power/pmic.h>
 #include <dialog_pmic.h>
 #include <fsl_pmic.h>
diff --git a/board/google/imx8mq_phanbell/spl.c b/board/google/imx8mq_phanbell/spl.c
index eec3f3d931b..fd5d745118c 100644
--- a/board/google/imx8mq_phanbell/spl.c
+++ b/board/google/imx8mq_phanbell/spl.c
@@ -24,6 +24,7 @@
 #include <fsl_esdhc_imx.h>
 #include <mmc.h>
 #include <spl.h>
+#include <linux/string.h>
 
 DECLARE_GLOBAL_DATA_PTR;
 
diff --git a/board/grinn/liteboard/board.c b/board/grinn/liteboard/board.c
index 48392c48e5c..46c7138b303 100644
--- a/board/grinn/liteboard/board.c
+++ b/board/grinn/liteboard/board.c
@@ -29,6 +29,7 @@
 #include <mmc.h>
 #include <netdev.h>
 #include <spl.h>
+#include <linux/string.h>
 
 DECLARE_GLOBAL_DATA_PTR;
 
diff --git a/board/imgtec/malta/malta.c b/board/imgtec/malta/malta.c
index c04f727961d..4a6fd785731 100644
--- a/board/imgtec/malta/malta.c
+++ b/board/imgtec/malta/malta.c
@@ -15,6 +15,7 @@
 #include <rtc.h>
 #include <asm/global_data.h>
 #include <linux/delay.h>
+#include <linux/string.h>
 
 #include <asm/addrspace.h>
 #include <asm/io.h>
diff --git a/board/isee/igep00x0/igep00x0.c b/board/isee/igep00x0/igep00x0.c
index e0ca3c2588f..836a3f91957 100644
--- a/board/isee/igep00x0/igep00x0.c
+++ b/board/isee/igep00x0/igep00x0.c
@@ -27,6 +27,7 @@
 #include <jffs2/load_kernel.h>
 #include <mtd_node.h>
 #include <fdt_support.h>
+#include <linux/string.h>
 #include "igep00x0.h"
 
 static const struct ns16550_platdata igep_serial = {
diff --git a/board/k+p/kp_imx53/kp_id_rev.c b/board/k+p/kp_imx53/kp_id_rev.c
index 7103a3e0f2b..3e9315f5522 100644
--- a/board/k+p/kp_imx53/kp_id_rev.c
+++ b/board/k+p/kp_imx53/kp_id_rev.c
@@ -12,6 +12,7 @@
 #include <common.h>
 #include <env.h>
 #include <i2c.h>
+#include <linux/string.h>
 #include "kp_id_rev.h"
 #include <net.h>
 
diff --git a/board/k+p/kp_imx6q_tpc/kp_imx6q_tpc_spl.c b/board/k+p/kp_imx6q_tpc/kp_imx6q_tpc_spl.c
index 103c4531a64..4bd2e8d0e87 100644
--- a/board/k+p/kp_imx6q_tpc/kp_imx6q_tpc_spl.c
+++ b/board/k+p/kp_imx6q_tpc/kp_imx6q_tpc_spl.c
@@ -18,6 +18,7 @@
 #include <errno.h>
 #include <spl.h>
 #include <linux/delay.h>
+#include <linux/string.h>
 
 DECLARE_GLOBAL_DATA_PTR;
 
diff --git a/board/keymile/common/common.c b/board/keymile/common/common.c
index d85a5eac165..4f64a1805f7 100644
--- a/board/keymile/common/common.c
+++ b/board/keymile/common/common.c
@@ -19,6 +19,7 @@
 #include <asm/io.h>
 #include <linux/ctype.h>
 #include <linux/delay.h>
+#include <linux/string.h>
 
 #if defined(CONFIG_POST)
 #include "post.h"
diff --git a/board/keymile/common/ivm.c b/board/keymile/common/ivm.c
index 60b89fe348c..ef51e81996b 100644
--- a/board/keymile/common/ivm.c
+++ b/board/keymile/common/ivm.c
@@ -8,6 +8,7 @@
 #include <cli_hush.h>
 #include <env.h>
 #include <i2c.h>
+#include <linux/string.h>
 #include "common.h"
 
 #define MAC_STR_SZ	20
diff --git a/board/kosagi/novena/novena.c b/board/kosagi/novena/novena.c
index 815ecf55c4d..383d3705734 100644
--- a/board/kosagi/novena/novena.c
+++ b/board/kosagi/novena/novena.c
@@ -39,6 +39,7 @@
 #include <malloc.h>
 #include <mmc.h>
 #include <netdev.h>
+#include <linux/string.h>
 #include <power/pmic.h>
 #include <power/pfuze100_pmic.h>
 #include <stdio_dev.h>
diff --git a/board/laird/wb50n/wb50n.c b/board/laird/wb50n/wb50n.c
index 8fa989a2a4f..f1a7555ac9c 100644
--- a/board/laird/wb50n/wb50n.c
+++ b/board/laird/wb50n/wb50n.c
@@ -20,6 +20,7 @@
 #include <spl.h>
 #include <asm/arch/atmel_mpddrc.h>
 #include <asm/arch/at91_wdt.h>
+#include <linux/string.h>
 
 DECLARE_GLOBAL_DATA_PTR;
 
diff --git a/board/liebherr/display5/display5.c b/board/liebherr/display5/display5.c
index 1c8660f773a..c47f43a9164 100644
--- a/board/liebherr/display5/display5.c
+++ b/board/liebherr/display5/display5.c
@@ -27,6 +27,7 @@
 #include <netdev.h>
 #include <i2c.h>
 #include <linux/delay.h>
+#include <linux/string.h>
 
 #include <dm.h>
 #include <dm/platform_data/serial_mxc.h>
diff --git a/board/liebherr/display5/spl.c b/board/liebherr/display5/spl.c
index b8658c8d617..a48eba58f9d 100644
--- a/board/liebherr/display5/spl.c
+++ b/board/liebherr/display5/spl.c
@@ -19,6 +19,7 @@
 #include <asm/arch/clock.h>
 #include <asm/arch/mx6-ddr.h>
 #include <asm/arch/mx6-pins.h>
+#include <linux/string.h>
 #include "asm/arch/crm_regs.h"
 #include <asm/arch/sys_proto.h>
 #include <asm/arch/imx-regs.h>
diff --git a/board/liebherr/mccmon6/spl.c b/board/liebherr/mccmon6/spl.c
index 56eae3b4e9e..1153a7e19f8 100644
--- a/board/liebherr/mccmon6/spl.c
+++ b/board/liebherr/mccmon6/spl.c
@@ -23,6 +23,7 @@
 #include <serial.h>
 #include <spl.h>
 #include <linux/delay.h>
+#include <linux/string.h>
 
 #include <asm/arch/mx6-ddr.h>
 /*
diff --git a/board/mediatek/mt7623/mt7623_rfb.c b/board/mediatek/mt7623/mt7623_rfb.c
index 755e879085c..090270b20d1 100644
--- a/board/mediatek/mt7623/mt7623_rfb.c
+++ b/board/mediatek/mt7623/mt7623_rfb.c
@@ -6,6 +6,7 @@
 #include <common.h>
 #include <mmc.h>
 #include <asm/global_data.h>
+#include <linux/string.h>
 
 DECLARE_GLOBAL_DATA_PTR;
 
diff --git a/board/menlo/m53menlo/m53menlo.c b/board/menlo/m53menlo/m53menlo.c
index c34baca602c..eee12ccdc68 100644
--- a/board/menlo/m53menlo/m53menlo.c
+++ b/board/menlo/m53menlo/m53menlo.c
@@ -34,6 +34,7 @@
 #include <netdev.h>
 #include <spl.h>
 #include <splash.h>
+#include <linux/string.h>
 #include <usb/ehci-ci.h>
 #include <video_console.h>
 
diff --git a/board/mscc/jr2/jr2.c b/board/mscc/jr2/jr2.c
index 1cd720c7d84..2aca78ac794 100644
--- a/board/mscc/jr2/jr2.c
+++ b/board/mscc/jr2/jr2.c
@@ -12,6 +12,7 @@
 #include <miiphy.h>
 #include <linux/bitops.h>
 #include <linux/delay.h>
+#include <linux/string.h>
 
 enum {
 	BOARD_TYPE_PCB110 = 0xAABBCE00,
diff --git a/board/mscc/luton/luton.c b/board/mscc/luton/luton.c
index 038902d08a9..ebb9060f3d7 100644
--- a/board/mscc/luton/luton.c
+++ b/board/mscc/luton/luton.c
@@ -10,6 +10,7 @@
 #include <asm/io.h>
 #include <led.h>
 #include <miiphy.h>
+#include <linux/string.h>
 
 enum {
 	BOARD_TYPE_PCB090 = 0xAABBCD00,
diff --git a/board/mscc/ocelot/ocelot.c b/board/mscc/ocelot/ocelot.c
index 51e1aeccf57..d26b93f12bd 100644
--- a/board/mscc/ocelot/ocelot.c
+++ b/board/mscc/ocelot/ocelot.c
@@ -17,6 +17,7 @@
 #include <miiphy.h>
 #include <linux/bitops.h>
 #include <linux/printk.h>
+#include <linux/string.h>
 
 DECLARE_GLOBAL_DATA_PTR;
 
diff --git a/board/mscc/serval/serval.c b/board/mscc/serval/serval.c
index 94c1c42b79b..0da835828f8 100644
--- a/board/mscc/serval/serval.c
+++ b/board/mscc/serval/serval.c
@@ -10,6 +10,7 @@
 #include <asm/io.h>
 #include <led.h>
 #include <miiphy.h>
+#include <linux/string.h>
 
 enum {
 	BOARD_TYPE_PCB106 = 0xAABBCD00,
diff --git a/board/mscc/servalt/servalt.c b/board/mscc/servalt/servalt.c
index 2fb48b74e8f..818863a5df5 100644
--- a/board/mscc/servalt/servalt.c
+++ b/board/mscc/servalt/servalt.c
@@ -9,6 +9,7 @@
 #include <asm/global_data.h>
 #include <asm/io.h>
 #include <led.h>
+#include <linux/string.h>
 
 enum {
 	BOARD_TYPE_PCB116 = 0xAABBCE00,
diff --git a/board/nokia/rx51/rx51.c b/board/nokia/rx51/rx51.c
index 5cf6a54dc60..20d82447b01 100644
--- a/board/nokia/rx51/rx51.c
+++ b/board/nokia/rx51/rx51.c
@@ -38,6 +38,7 @@
 #include <asm/arch/mux.h>
 #include <asm/arch/sys_proto.h>
 #include <asm/arch/mmc_host_def.h>
+#include <linux/string.h>
 
 #include "rx51.h"
 #include "tag_omap.h"
diff --git a/board/nvidia/p2371-2180/p2371-2180.c b/board/nvidia/p2371-2180/p2371-2180.c
index 7423a97ad0e..0f4796b559b 100644
--- a/board/nvidia/p2371-2180/p2371-2180.c
+++ b/board/nvidia/p2371-2180/p2371-2180.c
@@ -15,6 +15,7 @@
 #include <asm/arch/gpio.h>
 #include <asm/arch/pinmux.h>
 #include <asm/arch-tegra/cboot.h>
+#include <linux/string.h>
 #include "../p2571/max77620_init.h"
 
 void pin_mux_mmc(void)
diff --git a/board/nvidia/p2771-0000/p2771-0000.c b/board/nvidia/p2771-0000/p2771-0000.c
index 508c4d27b7f..e96edcc1c91 100644
--- a/board/nvidia/p2771-0000/p2771-0000.c
+++ b/board/nvidia/p2771-0000/p2771-0000.c
@@ -11,6 +11,7 @@
 #include <net.h>
 #include <linux/libfdt.h>
 #include <asm/arch-tegra/cboot.h>
+#include <linux/string.h>
 #include "../p2571/max77620_init.h"
 
 void pin_mux_mmc(void)
diff --git a/board/nvidia/p3450-0000/p3450-0000.c b/board/nvidia/p3450-0000/p3450-0000.c
index e6b66966c1b..2a16b1e3b46 100644
--- a/board/nvidia/p3450-0000/p3450-0000.c
+++ b/board/nvidia/p3450-0000/p3450-0000.c
@@ -14,6 +14,7 @@
 #include <asm/arch-tegra/cboot.h>
 #include <asm/arch/gpio.h>
 #include <asm/arch/pinmux.h>
+#include <linux/string.h>
 #include "../p2571/max77620_init.h"
 
 void pin_mux_mmc(void)
diff --git a/board/phytec/pcm058/pcm058.c b/board/phytec/pcm058/pcm058.c
index 5e5b129ef1f..a2304b764d6 100644
--- a/board/phytec/pcm058/pcm058.c
+++ b/board/phytec/pcm058/pcm058.c
@@ -18,6 +18,7 @@
 #include <asm/mach-imx/boot_mode.h>
 #include <asm/arch/sys_proto.h>
 #include <dm.h>
+#include <linux/string.h>
 
 DECLARE_GLOBAL_DATA_PTR;
 
diff --git a/board/phytec/pfla02/pfla02.c b/board/phytec/pfla02/pfla02.c
index 076ce6711ef..996fcedfa2c 100644
--- a/board/phytec/pfla02/pfla02.c
+++ b/board/phytec/pfla02/pfla02.c
@@ -32,6 +32,7 @@
 #include <netdev.h>
 #include <asm/arch/sys_proto.h>
 #include <asm/sections.h>
+#include <linux/string.h>
 
 DECLARE_GLOBAL_DATA_PTR;
 
diff --git a/board/qualcomm/dragonboard410c/dragonboard410c.c b/board/qualcomm/dragonboard410c/dragonboard410c.c
index 646013cfc93..1aa67f96d3d 100644
--- a/board/qualcomm/dragonboard410c/dragonboard410c.c
+++ b/board/qualcomm/dragonboard410c/dragonboard410c.c
@@ -19,6 +19,7 @@
 #include <asm/arch/dram.h>
 #include <asm/arch/misc.h>
 #include <linux/delay.h>
+#include <linux/string.h>
 
 DECLARE_GLOBAL_DATA_PTR;
 
diff --git a/board/renesas/salvator-x/salvator-x.c b/board/renesas/salvator-x/salvator-x.c
index 1d0cab8914f..30596822299 100644
--- a/board/renesas/salvator-x/salvator-x.c
+++ b/board/renesas/salvator-x/salvator-x.c
@@ -29,6 +29,7 @@
 #include <asm/arch/sh_sdhi.h>
 #include <i2c.h>
 #include <mmc.h>
+#include <linux/string.h>
 
 DECLARE_GLOBAL_DATA_PTR;
 
diff --git a/board/renesas/sh7752evb/sh7752evb.c b/board/renesas/sh7752evb/sh7752evb.c
index 522b4bd610d..07c51e7147e 100644
--- a/board/renesas/sh7752evb/sh7752evb.c
+++ b/board/renesas/sh7752evb/sh7752evb.c
@@ -16,6 +16,7 @@
 #include <spi.h>
 #include <spi_flash.h>
 #include <linux/delay.h>
+#include <linux/string.h>
 
 int checkboard(void)
 {
diff --git a/board/renesas/sh7753evb/sh7753evb.c b/board/renesas/sh7753evb/sh7753evb.c
index f34dec1dfab..8f6f2eee904 100644
--- a/board/renesas/sh7753evb/sh7753evb.c
+++ b/board/renesas/sh7753evb/sh7753evb.c
@@ -16,6 +16,7 @@
 #include <spi.h>
 #include <spi_flash.h>
 #include <linux/delay.h>
+#include <linux/string.h>
 
 int checkboard(void)
 {
diff --git a/board/renesas/sh7757lcr/sh7757lcr.c b/board/renesas/sh7757lcr/sh7757lcr.c
index e933e3e7306..a81bdbf9cdc 100644
--- a/board/renesas/sh7757lcr/sh7757lcr.c
+++ b/board/renesas/sh7757lcr/sh7757lcr.c
@@ -15,6 +15,7 @@
 #include <asm/mmc.h>
 #include <spi.h>
 #include <spi_flash.h>
+#include <linux/string.h>
 
 int checkboard(void)
 {
diff --git a/board/renesas/stout/cpld.c b/board/renesas/stout/cpld.c
index b56ed1703f5..e6e0a3a3e3d 100644
--- a/board/renesas/stout/cpld.c
+++ b/board/renesas/stout/cpld.c
@@ -12,6 +12,7 @@
 #include <cpu_func.h>
 #include <asm/io.h>
 #include <asm/gpio.h>
+#include <linux/string.h>
 #include "cpld.h"
 
 #define SCLK			(92 + 24)
diff --git a/board/renesas/ulcb/cpld.c b/board/renesas/ulcb/cpld.c
index a20a34a92a8..c9579a9dd17 100644
--- a/board/renesas/ulcb/cpld.c
+++ b/board/renesas/ulcb/cpld.c
@@ -14,6 +14,7 @@
 #include <errno.h>
 #include <linux/err.h>
 #include <sysreset.h>
+#include <linux/string.h>
 
 #define CPLD_ADDR_MODE		0x00 /* RW */
 #define CPLD_ADDR_MUX		0x02 /* RW */
diff --git a/board/renesas/ulcb/ulcb.c b/board/renesas/ulcb/ulcb.c
index 66aff8e1108..09711559aef 100644
--- a/board/renesas/ulcb/ulcb.c
+++ b/board/renesas/ulcb/ulcb.c
@@ -27,6 +27,7 @@
 #include <asm/arch/sh_sdhi.h>
 #include <i2c.h>
 #include <mmc.h>
+#include <linux/string.h>
 
 DECLARE_GLOBAL_DATA_PTR;
 
diff --git a/board/samsung/common/gadget.c b/board/samsung/common/gadget.c
index 6d783e61e0d..da6fbb9b358 100644
--- a/board/samsung/common/gadget.c
+++ b/board/samsung/common/gadget.c
@@ -5,6 +5,7 @@
  */
 
 #include <common.h>
+#include <linux/string.h>
 #include <linux/usb/ch9.h>
 
 int g_dnl_bind_fixup(struct usb_device_descriptor *dev, const char *name)
diff --git a/board/samsung/origen/tools/mkorigenspl.c b/board/samsung/origen/tools/mkorigenspl.c
index f4be8672450..8f13d26db33 100644
--- a/board/samsung/origen/tools/mkorigenspl.c
+++ b/board/samsung/origen/tools/mkorigenspl.c
@@ -9,6 +9,7 @@
 #include <fcntl.h>
 #include <errno.h>
 #include <string.h>
+#include <linux/string.h>
 #include <sys/stat.h>
 
 #define BUFSIZE			(16*1024)
diff --git a/board/samsung/smdkv310/tools/mksmdkv310spl.c b/board/samsung/smdkv310/tools/mksmdkv310spl.c
index 378b85d7229..e76c9412f7b 100644
--- a/board/samsung/smdkv310/tools/mksmdkv310spl.c
+++ b/board/samsung/smdkv310/tools/mksmdkv310spl.c
@@ -9,6 +9,7 @@
 #include <fcntl.h>
 #include <errno.h>
 #include <string.h>
+#include <linux/string.h>
 #include <sys/stat.h>
 
 #define CHECKSUM_OFFSET		(14*1024-4)
diff --git a/board/sandisk/sansa_fuze_plus/spl_boot.c b/board/sandisk/sansa_fuze_plus/spl_boot.c
index 633c77408dd..37f866ccdc3 100644
--- a/board/sandisk/sansa_fuze_plus/spl_boot.c
+++ b/board/sandisk/sansa_fuze_plus/spl_boot.c
@@ -11,6 +11,7 @@
 #include <asm/arch/iomux-mx23.h>
 #include <asm/arch/imx-regs.h>
 #include <asm/arch/sys_proto.h>
+#include <linux/string.h>
 
 #define	MUX_CONFIG_EMI	(MXS_PAD_1V8 | MXS_PAD_12MA | MXS_PAD_PULLUP)
 #define	MUX_CONFIG_SSP	(MXS_PAD_3V3 | MXS_PAD_4MA | MXS_PAD_PULLUP)
diff --git a/board/sbc8548/ddr.c b/board/sbc8548/ddr.c
index 61bc77c418a..c3239fd1e1a 100644
--- a/board/sbc8548/ddr.c
+++ b/board/sbc8548/ddr.c
@@ -6,6 +6,7 @@
 #include <common.h>
 #include <i2c.h>
 #include <linux/delay.h>
+#include <linux/string.h>
 
 #include <fsl_ddr_sdram.h>
 #include <fsl_ddr_dimm_params.h>
diff --git a/board/siemens/capricorn/board.c b/board/siemens/capricorn/board.c
index 56973a10908..6f34bd73f0d 100644
--- a/board/siemens/capricorn/board.c
+++ b/board/siemens/capricorn/board.c
@@ -28,6 +28,7 @@
 #include <asm/arch-imx8/clock.h>
 #endif
 #include <linux/delay.h>
+#include <linux/string.h>
 #include "../common/factoryset.h"
 
 #define GPIO_PAD_CTRL \
diff --git a/board/siemens/capricorn/spl.c b/board/siemens/capricorn/spl.c
index 8e077d73aef..da893629172 100644
--- a/board/siemens/capricorn/spl.c
+++ b/board/siemens/capricorn/spl.c
@@ -14,6 +14,7 @@
 #include <dm/device.h>
 #include <dm/uclass-internal.h>
 #include <dm/device-internal.h>
+#include <linux/string.h>
 
 DECLARE_GLOBAL_DATA_PTR;
 
diff --git a/board/siemens/common/board.c b/board/siemens/common/board.c
index 1bdf404ac3e..19f27f6805a 100644
--- a/board/siemens/common/board.c
+++ b/board/siemens/common/board.c
@@ -34,6 +34,7 @@
 #include <cpsw.h>
 #include <watchdog.h>
 #include <asm/mach-types.h>
+#include <linux/string.h>
 #include "../common/factoryset.h"
 
 DECLARE_GLOBAL_DATA_PTR;
diff --git a/board/siemens/common/factoryset.c b/board/siemens/common/factoryset.c
index 2e3ae1a54da..5ceb0871fa0 100644
--- a/board/siemens/common/factoryset.c
+++ b/board/siemens/common/factoryset.c
@@ -22,6 +22,7 @@
 #include <net.h>
 #include <errno.h>
 #include <g_dnl.h>
+#include <linux/string.h>
 #include "factoryset.h"
 
 #define EEPR_PG_SZ		0x80
diff --git a/board/siemens/pxm2/board.c b/board/siemens/pxm2/board.c
index b5e9b4242cd..7f36848b265 100644
--- a/board/siemens/pxm2/board.c
+++ b/board/siemens/pxm2/board.c
@@ -28,6 +28,7 @@
 #include <asm/arch/gpio.h>
 #include <asm/arch/mmc_host_def.h>
 #include <asm/arch/sys_proto.h>
+#include <linux/string.h>
 #include "../../../drivers/video/da8xx-fb.h"
 #include <asm/io.h>
 #include <asm/emif.h>
diff --git a/board/siemens/rut/board.c b/board/siemens/rut/board.c
index e0f232d3b80..22d8c40a53b 100644
--- a/board/siemens/rut/board.c
+++ b/board/siemens/rut/board.c
@@ -35,6 +35,7 @@
 #include <video.h>
 #include <watchdog.h>
 #include <linux/delay.h>
+#include <linux/string.h>
 #include "board.h"
 #include "../common/factoryset.h"
 #include "../../../drivers/video/da8xx-fb.h"
diff --git a/board/sks-kinkel/sksimx6/sksimx6.c b/board/sks-kinkel/sksimx6/sksimx6.c
index cec3ade96cf..bfe4634fdd7 100644
--- a/board/sks-kinkel/sksimx6/sksimx6.c
+++ b/board/sks-kinkel/sksimx6/sksimx6.c
@@ -26,6 +26,7 @@
 #include <netdev.h>
 #include <miiphy.h>
 #include <micrel.h>
+#include <linux/string.h>
 
 #include <common.h>
 #include <malloc.h>
diff --git a/board/softing/vining_2000/vining_2000.c b/board/softing/vining_2000/vining_2000.c
index aaeeee361e5..1c5863714c6 100644
--- a/board/softing/vining_2000/vining_2000.c
+++ b/board/softing/vining_2000/vining_2000.c
@@ -29,6 +29,7 @@
 #include <i2c.h>
 #include <miiphy.h>
 #include <netdev.h>
+#include <linux/string.h>
 #include <power/pmic.h>
 #include <power/pfuze100_pmic.h>
 #include <usb.h>
diff --git a/board/softing/vining_fpga/socfpga.c b/board/softing/vining_fpga/socfpga.c
index aaedf034504..34ce6a13003 100644
--- a/board/softing/vining_fpga/socfpga.c
+++ b/board/softing/vining_fpga/socfpga.c
@@ -15,6 +15,7 @@
 #include <asm/gpio.h>
 #include <i2c.h>
 #include <linux/delay.h>
+#include <linux/string.h>
 
 DECLARE_GLOBAL_DATA_PTR;
 
diff --git a/board/solidrun/clearfog/clearfog.c b/board/solidrun/clearfog/clearfog.c
index 3a2f8b81788..a4d60e1540c 100644
--- a/board/solidrun/clearfog/clearfog.c
+++ b/board/solidrun/clearfog/clearfog.c
@@ -16,6 +16,7 @@
 #include <asm/arch/soc.h>
 #include <linux/bitops.h>
 #include <linux/delay.h>
+#include <linux/string.h>
 #include "../common/tlv_data.h"
 
 #include "../drivers/ddr/marvell/a38x/ddr3_init.h"
diff --git a/board/solidrun/common/tlv_data.c b/board/solidrun/common/tlv_data.c
index 11d6e4a1380..1daf14812ef 100644
--- a/board/solidrun/common/tlv_data.c
+++ b/board/solidrun/common/tlv_data.c
@@ -6,6 +6,7 @@
 #include <common.h>
 #include <compiler.h>
 #include <tlv_eeprom.h>
+#include <linux/string.h>
 #include "tlv_data.h"
 
 #define SR_TLV_CODE_RAM_SIZE	0x81
diff --git a/board/solidrun/mx6cuboxi/mx6cuboxi.c b/board/solidrun/mx6cuboxi/mx6cuboxi.c
index 3eadc38f6fd..e56e32e8c84 100644
--- a/board/solidrun/mx6cuboxi/mx6cuboxi.c
+++ b/board/solidrun/mx6cuboxi/mx6cuboxi.c
@@ -38,6 +38,7 @@
 #include <asm/arch/sys_proto.h>
 #include <spl.h>
 #include <usb.h>
+#include <linux/string.h>
 #include <usb/ehci-ci.h>
 
 DECLARE_GLOBAL_DATA_PTR;
diff --git a/board/st/common/stm32mp_dfu.c b/board/st/common/stm32mp_dfu.c
index 8e74030d280..95d63aaf54f 100644
--- a/board/st/common/stm32mp_dfu.c
+++ b/board/st/common/stm32mp_dfu.c
@@ -13,6 +13,7 @@
 #include <mtd_node.h>
 #include <asm/arch/stm32prog.h>
 #include <linux/printk.h>
+#include <linux/string.h>
 
 #define DFU_ALT_BUF_LEN SZ_1K
 
diff --git a/board/st/common/stm32mp_mtdparts.c b/board/st/common/stm32mp_mtdparts.c
index 7151cad6d0f..b7dfd4cb741 100644
--- a/board/st/common/stm32mp_mtdparts.c
+++ b/board/st/common/stm32mp_mtdparts.c
@@ -15,6 +15,7 @@
 #include <asm/arch/sys_proto.h>
 #include <asm/global_data.h>
 #include <linux/printk.h>
+#include <linux/string.h>
 
 #define MTDPARTS_LEN		256
 #define MTDIDS_LEN		128
diff --git a/board/st/stm32mp1/stm32mp1.c b/board/st/stm32mp1/stm32mp1.c
index ed3b35195ec..68c3111f518 100644
--- a/board/st/stm32mp1/stm32mp1.c
+++ b/board/st/stm32mp1/stm32mp1.c
@@ -40,6 +40,7 @@
 #include <linux/err.h>
 #include <linux/iopoll.h>
 #include <linux/printk.h>
+#include <linux/string.h>
 #include <power/regulator.h>
 #include <usb/dwc2_udc.h>
 
diff --git a/board/sunxi/board.c b/board/sunxi/board.c
index 7812860042f..193ec8cff57 100644
--- a/board/sunxi/board.c
+++ b/board/sunxi/board.c
@@ -31,6 +31,7 @@
 #include <asm/global_data.h>
 #include <linux/delay.h>
 #include <linux/printk.h>
+#include <linux/string.h>
 #include <u-boot/crc.h>
 #ifndef CONFIG_ARM64
 #include <asm/armv7.h>
diff --git a/board/synopsys/emsdp/emsdp.c b/board/synopsys/emsdp/emsdp.c
index 997120ec5e1..a2eaf36ef13 100644
--- a/board/synopsys/emsdp/emsdp.c
+++ b/board/synopsys/emsdp/emsdp.c
@@ -11,6 +11,7 @@
 #include <malloc.h>
 #include <asm/global_data.h>
 #include <linux/bitops.h>
+#include <linux/string.h>
 
 #include <asm/arcregs.h>
 
diff --git a/board/synopsys/hsdk/hsdk.c b/board/synopsys/hsdk/hsdk.c
index 892b94bb083..8644a41fe0b 100644
--- a/board/synopsys/hsdk/hsdk.c
+++ b/board/synopsys/hsdk/hsdk.c
@@ -25,6 +25,7 @@
 #include <dwmmc.h>
 #include <malloc.h>
 #include <usb.h>
+#include <linux/string.h>
 
 #include "clk-lib.h"
 #include "env-lib.h"
diff --git a/board/syteco/zmx25/zmx25.c b/board/syteco/zmx25/zmx25.c
index 2d4c5cce892..a3e5efad7c6 100644
--- a/board/syteco/zmx25/zmx25.c
+++ b/board/syteco/zmx25/zmx25.c
@@ -23,6 +23,7 @@
 #include <asm/arch/imx-regs.h>
 #include <asm/arch/iomux-mx25.h>
 #include <linux/delay.h>
+#include <linux/string.h>
 
 DECLARE_GLOBAL_DATA_PTR;
 
diff --git a/board/technexion/pico-imx6/spl.c b/board/technexion/pico-imx6/spl.c
index 3b36bb8df13..7b6cdd6c3b1 100644
--- a/board/technexion/pico-imx6/spl.c
+++ b/board/technexion/pico-imx6/spl.c
@@ -24,6 +24,7 @@
 #include <asm/io.h>
 #include <asm/arch/sys_proto.h>
 #include <spl.h>
+#include <linux/string.h>
 
 #if defined(CONFIG_SPL_BUILD)
 #include <asm/arch/mx6-ddr.h>
diff --git a/board/technexion/pico-imx6ul/spl.c b/board/technexion/pico-imx6ul/spl.c
index 38077795442..faee99e8d29 100644
--- a/board/technexion/pico-imx6ul/spl.c
+++ b/board/technexion/pico-imx6ul/spl.c
@@ -17,6 +17,7 @@
 #include <fsl_esdhc_imx.h>
 #include <linux/libfdt.h>
 #include <spl.h>
+#include <linux/string.h>
 
 #if defined(CONFIG_SPL_BUILD)
 
diff --git a/board/technexion/pico-imx7d/spl.c b/board/technexion/pico-imx7d/spl.c
index bed0f21f44d..ccb094f1884 100644
--- a/board/technexion/pico-imx7d/spl.c
+++ b/board/technexion/pico-imx7d/spl.c
@@ -18,6 +18,7 @@
 #include <asm/gpio.h>
 #include <fsl_esdhc_imx.h>
 #include <spl.h>
+#include <linux/string.h>
 
 #if defined(CONFIG_SPL_BUILD)
 
diff --git a/board/technexion/pico-imx8mq/spl.c b/board/technexion/pico-imx8mq/spl.c
index 8b853a914e8..b434e1e16f2 100644
--- a/board/technexion/pico-imx8mq/spl.c
+++ b/board/technexion/pico-imx8mq/spl.c
@@ -21,6 +21,7 @@
 #include <fsl_esdhc_imx.h>
 #include <mmc.h>
 #include <spl.h>
+#include <linux/string.h>
 
 #include "lpddr4_timing.h"
 
diff --git a/board/theadorable/fpga.c b/board/theadorable/fpga.c
index 3a33e15eacc..4cfc4bbf0ac 100644
--- a/board/theadorable/fpga.c
+++ b/board/theadorable/fpga.c
@@ -13,6 +13,7 @@
 #include <asm/arch/cpu.h>
 #include <asm/arch/soc.h>
 #include <asm/arch-mvebu/spi.h>
+#include <linux/string.h>
 #include "theadorable.h"
 
 /*
diff --git a/board/theobroma-systems/puma_rk3399/puma-rk3399.c b/board/theobroma-systems/puma_rk3399/puma-rk3399.c
index deeba3084a8..715dcbdc7bc 100644
--- a/board/theobroma-systems/puma_rk3399/puma-rk3399.c
+++ b/board/theobroma-systems/puma_rk3399/puma-rk3399.c
@@ -11,6 +11,7 @@
 #include <misc.h>
 #include <spl.h>
 #include <syscon.h>
+#include <linux/string.h>
 #include <u-boot/crc.h>
 #include <usb.h>
 #include <dm/pinctrl.h>
diff --git a/board/ti/am335x/board.c b/board/ti/am335x/board.c
index 211a9bf7446..be474a8472c 100644
--- a/board/ti/am335x/board.c
+++ b/board/ti/am335x/board.c
@@ -39,6 +39,7 @@
 #include <cpsw.h>
 #include <linux/bitops.h>
 #include <linux/delay.h>
+#include <linux/string.h>
 #include <power/tps65217.h>
 #include <power/tps65910.h>
 #include <env_internal.h>
diff --git a/board/ti/am335x/board.h b/board/ti/am335x/board.h
index 48df914af96..b8ceddb20b1 100644
--- a/board/ti/am335x/board.h
+++ b/board/ti/am335x/board.h
@@ -20,6 +20,7 @@
  * REG_COS_COUNT_2 do not have any effect on current versions of
  * AM335x.
  */
+#include <linux/string.h>
 #define EMIF_OCP_CONFIG_BEAGLEBONE_BLACK       0x00141414
 #define EMIF_OCP_CONFIG_AM335X_EVM             0x003d3d3d
 
diff --git a/board/ti/am43xx/board.c b/board/ti/am43xx/board.c
index 8f5bf3581f4..ba479672c66 100644
--- a/board/ti/am43xx/board.c
+++ b/board/ti/am43xx/board.c
@@ -28,6 +28,7 @@
 #include <asm/arch/gpio.h>
 #include <asm/emif.h>
 #include <asm/omap_common.h>
+#include <linux/string.h>
 #include "../common/board_detect.h"
 #include "board.h"
 #include <power/pmic.h>
diff --git a/board/ti/am43xx/board.h b/board/ti/am43xx/board.h
index 06b737445d4..e28813f4bb8 100644
--- a/board/ti/am43xx/board.h
+++ b/board/ti/am43xx/board.h
@@ -12,6 +12,7 @@
 #define _BOARD_H_
 
 #include <asm/arch/omap.h>
+#include <linux/string.h>
 
 #define DEV_ATTR_MAX_OFFSET    5
 #define DEV_ATTR_MIN_OFFSET    0
diff --git a/board/ti/am57xx/board.c b/board/ti/am57xx/board.c
index be09d719cbe..d9b28dff52b 100644
--- a/board/ti/am57xx/board.c
+++ b/board/ti/am57xx/board.c
@@ -33,6 +33,7 @@
 #include <asm/arch/gpio.h>
 #include <asm/arch/omap.h>
 #include <usb.h>
+#include <linux/string.h>
 #include <linux/usb/gadget.h>
 #include <dwc3-uboot.h>
 #include <dwc3-omap-uboot.h>
diff --git a/board/ti/am65x/evm.c b/board/ti/am65x/evm.c
index 8c29e6ae882..655789d9b9b 100644
--- a/board/ti/am65x/evm.c
+++ b/board/ti/am65x/evm.c
@@ -23,6 +23,7 @@
 #include <spl.h>
 #include <asm/arch/sys_proto.h>
 #include <linux/printk.h>
+#include <linux/string.h>
 
 #include "../common/board_detect.h"
 
diff --git a/board/ti/beagle/beagle.c b/board/ti/beagle/beagle.c
index 888a9584919..25297b0ae0c 100644
--- a/board/ti/beagle/beagle.c
+++ b/board/ti/beagle/beagle.c
@@ -35,6 +35,7 @@
 #include <asm/mach-types.h>
 #include <asm/omap_musb.h>
 #include <linux/errno.h>
+#include <linux/string.h>
 #include <linux/usb/ch9.h>
 #include <linux/usb/gadget.h>
 #include <linux/usb/musb.h>
diff --git a/board/ti/common/board_detect.c b/board/ti/common/board_detect.c
index 9d1bee1c255..f51bacfbbcd 100644
--- a/board/ti/common/board_detect.c
+++ b/board/ti/common/board_detect.c
@@ -20,6 +20,7 @@
 #include <errno.h>
 #include <malloc.h>
 #include <linux/printk.h>
+#include <linux/string.h>
 
 #include "board_detect.h"
 
diff --git a/board/ti/j721e/evm.c b/board/ti/j721e/evm.c
index 220c2e5cfb8..58ecc188831 100644
--- a/board/ti/j721e/evm.c
+++ b/board/ti/j721e/evm.c
@@ -24,6 +24,7 @@
 #include <dm.h>
 #include <dm/uclass-internal.h>
 #include <linux/printk.h>
+#include <linux/string.h>
 
 #include "../common/board_detect.h"
 
diff --git a/board/ti/ks2_evm/board.c b/board/ti/ks2_evm/board.c
index 9e5f08e3372..078b89073fc 100644
--- a/board/ti/ks2_evm/board.c
+++ b/board/ti/ks2_evm/board.c
@@ -8,6 +8,7 @@
 
 #include <common.h>
 #include <asm/global_data.h>
+#include <linux/string.h>
 #include "board.h"
 #include <env.h>
 #include <hang.h>
diff --git a/board/ti/ks2_evm/board_k2e.c b/board/ti/ks2_evm/board_k2e.c
index 39abb24e156..b5258b66e10 100644
--- a/board/ti/ks2_evm/board_k2e.c
+++ b/board/ti/ks2_evm/board_k2e.c
@@ -12,6 +12,7 @@
 #include <asm/arch/ddr3.h>
 #include <asm/arch/hardware.h>
 #include <asm/ti-common/keystone_net.h>
+#include <linux/string.h>
 
 unsigned int get_external_clk(u32 clk)
 {
diff --git a/board/ti/ks2_evm/board_k2g.c b/board/ti/ks2_evm/board_k2g.c
index a71024bcbce..b6ef7164d9f 100644
--- a/board/ti/ks2_evm/board_k2g.c
+++ b/board/ti/ks2_evm/board_k2g.c
@@ -20,6 +20,7 @@
 #include <remoteproc.h>
 #include <linux/bitops.h>
 #include <linux/delay.h>
+#include <linux/string.h>
 #include "mux-k2g.h"
 #include "../common/board_detect.h"
 
diff --git a/board/ti/ks2_evm/board_k2hk.c b/board/ti/ks2_evm/board_k2hk.c
index 12c4649c3c4..6a9935c7ef5 100644
--- a/board/ti/ks2_evm/board_k2hk.c
+++ b/board/ti/ks2_evm/board_k2hk.c
@@ -12,6 +12,7 @@
 #include <asm/arch/clock.h>
 #include <asm/arch/hardware.h>
 #include <asm/ti-common/keystone_net.h>
+#include <linux/string.h>
 
 unsigned int external_clk[ext_clk_count] = {
 	[sys_clk]	=	122880000,
diff --git a/board/ti/ks2_evm/board_k2l.c b/board/ti/ks2_evm/board_k2l.c
index f759ee36466..459530ecb9d 100644
--- a/board/ti/ks2_evm/board_k2l.c
+++ b/board/ti/ks2_evm/board_k2l.c
@@ -12,6 +12,7 @@
 #include <asm/arch/ddr3.h>
 #include <asm/arch/hardware.h>
 #include <asm/ti-common/keystone_net.h>
+#include <linux/string.h>
 
 unsigned int get_external_clk(u32 clk)
 {
diff --git a/board/ti/sdp4430/cmd_bat.c b/board/ti/sdp4430/cmd_bat.c
index 6c1e6ca393c..2b8f4bc69de 100644
--- a/board/ti/sdp4430/cmd_bat.c
+++ b/board/ti/sdp4430/cmd_bat.c
@@ -5,6 +5,7 @@
 
 #include <common.h>
 #include <command.h>
+#include <linux/string.h>
 
 #ifdef CONFIG_CMD_BAT
 #include <twl6030.h>
diff --git a/board/toradex/apalis-tk1/apalis-tk1.c b/board/toradex/apalis-tk1/apalis-tk1.c
index 349b3119370..2883f1b98c5 100644
--- a/board/toradex/apalis-tk1/apalis-tk1.c
+++ b/board/toradex/apalis-tk1/apalis-tk1.c
@@ -17,6 +17,7 @@
 #include <pci_tegra.h>
 #include <linux/delay.h>
 #include <linux/printk.h>
+#include <linux/string.h>
 #include <power/as3722.h>
 #include <power/pmic.h>
 
diff --git a/board/toradex/apalis_imx6/apalis_imx6.c b/board/toradex/apalis_imx6/apalis_imx6.c
index 17f6094687b..d17f90f86fd 100644
--- a/board/toradex/apalis_imx6/apalis_imx6.c
+++ b/board/toradex/apalis_imx6/apalis_imx6.c
@@ -15,6 +15,7 @@
 #include <asm/global_data.h>
 #include <linux/bitops.h>
 #include <linux/delay.h>
+#include <linux/string.h>
 
 #include <ahci.h>
 #include <asm/arch/clock.h>
diff --git a/board/toradex/colibri_imx6/colibri_imx6.c b/board/toradex/colibri_imx6/colibri_imx6.c
index 64a8406ec77..1f18552b57c 100644
--- a/board/toradex/colibri_imx6/colibri_imx6.c
+++ b/board/toradex/colibri_imx6/colibri_imx6.c
@@ -15,6 +15,7 @@
 #include <asm/global_data.h>
 #include <linux/bitops.h>
 #include <linux/delay.h>
+#include <linux/string.h>
 
 #include <asm/arch/clock.h>
 #include <asm/arch/crm_regs.h>
diff --git a/board/toradex/common/tdx-cfg-block.c b/board/toradex/common/tdx-cfg-block.c
index ad0a4307a26..5c88a984b7e 100644
--- a/board/toradex/common/tdx-cfg-block.c
+++ b/board/toradex/common/tdx-cfg-block.c
@@ -5,6 +5,7 @@
 
 #include <common.h>
 #include <asm/global_data.h>
+#include <linux/string.h>
 #include "tdx-cfg-block.h"
 #include <command.h>
 #include <asm/cache.h>
diff --git a/board/toradex/common/tdx-common.c b/board/toradex/common/tdx-common.c
index 3a3cfc8821e..e19be067ce3 100644
--- a/board/toradex/common/tdx-common.c
+++ b/board/toradex/common/tdx-common.c
@@ -8,6 +8,7 @@
 #include <g_dnl.h>
 #include <init.h>
 #include <linux/libfdt.h>
+#include <linux/string.h>
 
 #include "tdx-cfg-block.h"
 #include <asm/setup.h>
diff --git a/board/toradex/verdin-imx8mm/spl.c b/board/toradex/verdin-imx8mm/spl.c
index 588da0aeba6..5ee86dd3f89 100644
--- a/board/toradex/verdin-imx8mm/spl.c
+++ b/board/toradex/verdin-imx8mm/spl.c
@@ -22,6 +22,7 @@
 #include <dm/uclass.h>
 #include <dm/uclass-internal.h>
 #include <hang.h>
+#include <linux/string.h>
 #include <power/bd71837.h>
 #include <power/pmic.h>
 #include <spl.h>
diff --git a/board/udoo/neo/neo.c b/board/udoo/neo/neo.c
index 653ca1ca5a6..aef82e2c2df 100644
--- a/board/udoo/neo/neo.c
+++ b/board/udoo/neo/neo.c
@@ -32,6 +32,7 @@
 #include <i2c.h>
 #include <miiphy.h>
 #include <netdev.h>
+#include <linux/string.h>
 #include <power/pmic.h>
 #include <power/pfuze3000_pmic.h>
 #include <malloc.h>
diff --git a/board/variscite/dart_6ul/spl.c b/board/variscite/dart_6ul/spl.c
index 071f049caf6..725600770b7 100644
--- a/board/variscite/dart_6ul/spl.c
+++ b/board/variscite/dart_6ul/spl.c
@@ -13,6 +13,7 @@
 #include <asm/arch/mx6-pins.h>
 #include <asm/arch/crm_regs.h>
 #include <fsl_esdhc_imx.h>
+#include <linux/string.h>
 
 #define UART_PAD_CTRL  (PAD_CTL_PKE | PAD_CTL_PUE |		\
 	PAD_CTL_PUS_100K_UP | PAD_CTL_SPEED_MED |		\
diff --git a/board/varisys/common/sys_eeprom.c b/board/varisys/common/sys_eeprom.c
index 251d9fd73e5..facda8e5419 100644
--- a/board/varisys/common/sys_eeprom.c
+++ b/board/varisys/common/sys_eeprom.c
@@ -16,6 +16,7 @@
 #include <i2c.h>
 #include <linux/ctype.h>
 #include <linux/delay.h>
+#include <linux/string.h>
 #include <u-boot/crc.h>
 
 #include "eeprom.h"
diff --git a/board/vscom/baltos/board.c b/board/vscom/baltos/board.c
index 4175d414694..ed375c58cb9 100644
--- a/board/vscom/baltos/board.c
+++ b/board/vscom/baltos/board.c
@@ -32,6 +32,7 @@
 #include <i2c.h>
 #include <miiphy.h>
 #include <cpsw.h>
+#include <linux/string.h>
 #include <power/tps65910.h>
 #include <watchdog.h>
 #include "board.h"
diff --git a/board/wandboard/wandboard.c b/board/wandboard/wandboard.c
index 53299c87010..7d3da302395 100644
--- a/board/wandboard/wandboard.c
+++ b/board/wandboard/wandboard.c
@@ -33,6 +33,7 @@
 #include <netdev.h>
 #include <phy.h>
 #include <i2c.h>
+#include <linux/string.h>
 #include <power/pmic.h>
 #include <power/pfuze100_pmic.h>
 
diff --git a/board/work-microwave/work_92105/work_92105_display.c b/board/work-microwave/work_92105/work_92105_display.c
index fecbbbdb584..eefcb8545f5 100644
--- a/board/work-microwave/work_92105/work_92105_display.c
+++ b/board/work-microwave/work_92105/work_92105_display.c
@@ -23,6 +23,7 @@
 #include <version.h>
 #include <vsprintf.h>
 #include <linux/delay.h>
+#include <linux/string.h>
 
 /*
  * GPO 15 in port 3 is gpio 3*32+15 = 111
diff --git a/board/xes/common/board.c b/board/xes/common/board.c
index 053b07a0b70..b6aeee3f2ca 100644
--- a/board/xes/common/board.c
+++ b/board/xes/common/board.c
@@ -5,6 +5,7 @@
 
 #include <common.h>
 #include <env.h>
+#include <linux/string.h>
 #include "fsl_8xxx_misc.h"
 #include <init.h>
 
diff --git a/board/xilinx/versal/board.c b/board/xilinx/versal/board.c
index 55da0df75c4..025212b223c 100644
--- a/board/xilinx/versal/board.c
+++ b/board/xilinx/versal/board.c
@@ -20,6 +20,7 @@
 #include <dm/device.h>
 #include <dm/uclass.h>
 #include <versalpl.h>
+#include <linux/string.h>
 #include "../common/board.h"
 
 DECLARE_GLOBAL_DATA_PTR;
diff --git a/board/xilinx/zynq/board.c b/board/xilinx/zynq/board.c
index 09e4184e172..91446fb9c39 100644
--- a/board/xilinx/zynq/board.c
+++ b/board/xilinx/zynq/board.c
@@ -18,6 +18,7 @@
 #include <zynqpl.h>
 #include <asm/arch/hardware.h>
 #include <asm/arch/sys_proto.h>
+#include <linux/string.h>
 #include "../common/board.h"
 
 DECLARE_GLOBAL_DATA_PTR;
diff --git a/board/xilinx/zynq/bootimg.c b/board/xilinx/zynq/bootimg.c
index 2f55078dd76..1a9d3ed3ec5 100644
--- a/board/xilinx/zynq/bootimg.c
+++ b/board/xilinx/zynq/bootimg.c
@@ -10,6 +10,7 @@
 #include <asm/io.h>
 #include <asm/arch/hardware.h>
 #include <asm/arch/sys_proto.h>
+#include <linux/string.h>
 #include <u-boot/md5.h>
 #include <zynq_bootimg.h>
 
diff --git a/board/xilinx/zynq/cmds.c b/board/xilinx/zynq/cmds.c
index 6c697caa625..c43727ab87a 100644
--- a/board/xilinx/zynq/cmds.c
+++ b/board/xilinx/zynq/cmds.c
@@ -12,6 +12,7 @@
 #include <asm/arch/sys_proto.h>
 #include <malloc.h>
 #include <linux/bitops.h>
+#include <linux/string.h>
 #include <u-boot/md5.h>
 #include <u-boot/rsa.h>
 #include <u-boot/rsa-mod-exp.h>
diff --git a/board/xilinx/zynqmp/zynqmp.c b/board/xilinx/zynqmp/zynqmp.c
index a64174a915c..3bd39d5eb47 100644
--- a/board/xilinx/zynqmp/zynqmp.c
+++ b/board/xilinx/zynqmp/zynqmp.c
@@ -35,6 +35,7 @@
 #include <linux/bitops.h>
 #include <linux/delay.h>
 #include <linux/sizes.h>
+#include <linux/string.h>
 #include "../common/board.h"
 
 #include "pm_cfg_obj.h"
diff --git a/cmd/abootimg.c b/cmd/abootimg.c
index 40e8978f152..f21b77dbf6f 100644
--- a/cmd/abootimg.c
+++ b/cmd/abootimg.c
@@ -9,6 +9,7 @@
 #include <command.h>
 #include <image.h>
 #include <mapmem.h>
+#include <linux/string.h>
 
 #define abootimg_addr() \
 	(_abootimg_addr == -1 ? image_load_addr : _abootimg_addr)
diff --git a/cmd/acpi.c b/cmd/acpi.c
index 6fa61c5fb89..b009368eace 100644
--- a/cmd/acpi.c
+++ b/cmd/acpi.c
@@ -11,6 +11,7 @@
 #include <asm/acpi_table.h>
 #include <asm/global_data.h>
 #include <dm/acpi.h>
+#include <linux/string.h>
 
 DECLARE_GLOBAL_DATA_PTR;
 
diff --git a/cmd/adtimg.c b/cmd/adtimg.c
index aa943007f35..2d43dd147d4 100644
--- a/cmd/adtimg.c
+++ b/cmd/adtimg.c
@@ -9,6 +9,7 @@
 #include <env.h>
 #include <image-android-dt.h>
 #include <common.h>
+#include <linux/string.h>
 
 #define OPT_INDEX	"--index"
 
diff --git a/cmd/aes.c b/cmd/aes.c
index 4c0dad99326..51bc922b937 100644
--- a/cmd/aes.c
+++ b/cmd/aes.c
@@ -12,6 +12,7 @@
 #include <asm/byteorder.h>
 #include <linux/compiler.h>
 #include <mapmem.h>
+#include <linux/string.h>
 
 u32 aes_get_key_len(char *command)
 {
diff --git a/cmd/armflash.c b/cmd/armflash.c
index 5e7315eb7cd..2365f16ce4c 100644
--- a/cmd/armflash.c
+++ b/cmd/armflash.c
@@ -10,6 +10,7 @@
 #include <console.h>
 #include <flash.h>
 #include <asm/io.h>
+#include <linux/string.h>
 
 #define MAX_REGIONS 4
 #define MAX_IMAGES 32
diff --git a/cmd/avb.c b/cmd/avb.c
index 88172a9ee67..5e9db6f2385 100644
--- a/cmd/avb.c
+++ b/cmd/avb.c
@@ -11,6 +11,7 @@
 #include <image.h>
 #include <malloc.h>
 #include <mmc.h>
+#include <linux/string.h>
 
 #define AVB_BOOTARGS	"avb_bootargs"
 static struct AvbOps *avb_ops;
diff --git a/cmd/bcb.c b/cmd/bcb.c
index 81e099fbb1b..2de6a08beb9 100644
--- a/cmd/bcb.c
+++ b/cmd/bcb.c
@@ -11,6 +11,7 @@
 #include <display_options.h>
 #include <log.h>
 #include <part.h>
+#include <linux/string.h>
 
 enum bcb_cmd {
 	BCB_CMD_LOAD,
diff --git a/cmd/bdinfo.c b/cmd/bdinfo.c
index b5cc0a59c14..40079608d1a 100644
--- a/cmd/bdinfo.c
+++ b/cmd/bdinfo.c
@@ -13,6 +13,7 @@
 #include <vsprintf.h>
 #include <asm/cache.h>
 #include <asm/global_data.h>
+#include <linux/string.h>
 
 DECLARE_GLOBAL_DATA_PTR;
 
diff --git a/cmd/binop.c b/cmd/binop.c
index c85cb51568d..afeffadc44f 100644
--- a/cmd/binop.c
+++ b/cmd/binop.c
@@ -7,6 +7,7 @@
 #include <malloc.h>
 #include <mapmem.h>
 #include <linux/ctype.h>
+#include <linux/string.h>
 
 enum {
 	OP_ID_XOR,
diff --git a/cmd/blk_common.c b/cmd/blk_common.c
index 87f94b5abbf..14413da3f6d 100644
--- a/cmd/blk_common.c
+++ b/cmd/blk_common.c
@@ -11,6 +11,7 @@
 #include <common.h>
 #include <blk.h>
 #include <command.h>
+#include <linux/string.h>
 
 int blk_common_cmd(int argc, char *const argv[], enum if_type if_type,
 		   int *cur_devnump)
diff --git a/cmd/blob.c b/cmd/blob.c
index c80e6977b4b..a3b4f7a3286 100644
--- a/cmd/blob.c
+++ b/cmd/blob.c
@@ -9,6 +9,7 @@
 #include <malloc.h>
 #include <asm/byteorder.h>
 #include <linux/compiler.h>
+#include <linux/string.h>
 
 /**
  * blob_decap() - Decapsulate the data as a blob
diff --git a/cmd/bmp.c b/cmd/bmp.c
index 6040fa5d95d..3ecf8db5e65 100644
--- a/cmd/bmp.c
+++ b/cmd/bmp.c
@@ -21,6 +21,7 @@
 #include <splash.h>
 #include <video.h>
 #include <asm/byteorder.h>
+#include <linux/string.h>
 
 static int bmp_info (ulong addr);
 
diff --git a/cmd/bootefi.c b/cmd/bootefi.c
index 1236cbd7a53..e9f2039cb78 100644
--- a/cmd/bootefi.c
+++ b/cmd/bootefi.c
@@ -25,6 +25,7 @@
 #include <memalign.h>
 #include <asm-generic/sections.h>
 #include <linux/linkage.h>
+#include <linux/string.h>
 
 DECLARE_GLOBAL_DATA_PTR;
 
diff --git a/cmd/booti.c b/cmd/booti.c
index 3df70ea9caa..7df747bc575 100644
--- a/cmd/booti.c
+++ b/cmd/booti.c
@@ -15,6 +15,7 @@
 #include <asm/global_data.h>
 #include <linux/kernel.h>
 #include <linux/sizes.h>
+#include <linux/string.h>
 
 DECLARE_GLOBAL_DATA_PTR;
 /*
diff --git a/cmd/bootm.c b/cmd/bootm.c
index 7732b97f635..599251f7181 100644
--- a/cmd/bootm.c
+++ b/cmd/bootm.c
@@ -19,6 +19,7 @@
 #include <asm/global_data.h>
 #include <linux/ctype.h>
 #include <linux/err.h>
+#include <linux/string.h>
 #include <u-boot/zlib.h>
 #include <mapmem.h>
 
diff --git a/cmd/bootstage.c b/cmd/bootstage.c
index 0e623f216b1..37615c3ffec 100644
--- a/cmd/bootstage.c
+++ b/cmd/bootstage.c
@@ -6,6 +6,7 @@
 #include <common.h>
 #include <bootstage.h>
 #include <command.h>
+#include <linux/string.h>
 
 static int do_bootstage_report(struct cmd_tbl *cmdtp, int flag, int argc,
 			       char *const argv[])
diff --git a/cmd/cache.c b/cmd/cache.c
index b68d45b98bf..0ea2c6c033a 100644
--- a/cmd/cache.c
+++ b/cmd/cache.c
@@ -11,6 +11,7 @@
 #include <command.h>
 #include <cpu_func.h>
 #include <linux/compiler.h>
+#include <linux/string.h>
 
 static int parse_argv(const char *);
 
diff --git a/cmd/cros_ec.c b/cmd/cros_ec.c
index ce1f59a740c..b4059f0e7dc 100644
--- a/cmd/cros_ec.c
+++ b/cmd/cros_ec.c
@@ -14,6 +14,7 @@
 #include <log.h>
 #include <dm/device-internal.h>
 #include <dm/uclass-internal.h>
+#include <linux/string.h>
 
 /* Note: depends on enum ec_current_image */
 static const char * const ec_current_image_name[] = {"unknown", "RO", "RW"};
diff --git a/cmd/date.c b/cmd/date.c
index 0e118947531..8e8f54ba405 100644
--- a/cmd/date.c
+++ b/cmd/date.c
@@ -13,6 +13,7 @@
 #include <rtc.h>
 #include <i2c.h>
 #include <asm/global_data.h>
+#include <linux/string.h>
 
 DECLARE_GLOBAL_DATA_PTR;
 
diff --git a/cmd/dfu.c b/cmd/dfu.c
index 7310595a027..b19b79c57eb 100644
--- a/cmd/dfu.c
+++ b/cmd/dfu.c
@@ -18,6 +18,7 @@
 #include <g_dnl.h>
 #include <usb.h>
 #include <net.h>
+#include <linux/string.h>
 
 static int do_dfu(struct cmd_tbl *cmdtp, int flag, int argc, char *const argv[])
 {
diff --git a/cmd/echo.c b/cmd/echo.c
index d02a4cfd586..1d85e23c218 100644
--- a/cmd/echo.c
+++ b/cmd/echo.c
@@ -6,6 +6,7 @@
 
 #include <common.h>
 #include <command.h>
+#include <linux/string.h>
 
 static int do_echo(struct cmd_tbl *cmdtp, int flag, int argc,
 		   char *const argv[])
diff --git a/cmd/eeprom.c b/cmd/eeprom.c
index 7fa62bba8fc..654004e1430 100644
--- a/cmd/eeprom.c
+++ b/cmd/eeprom.c
@@ -26,6 +26,7 @@
 #include <i2c.h>
 #include <eeprom_layout.h>
 #include <linux/delay.h>
+#include <linux/string.h>
 
 #ifndef	CONFIG_SYS_I2C_SPEED
 #define	CONFIG_SYS_I2C_SPEED	50000
diff --git a/cmd/efi.c b/cmd/efi.c
index 1c0e62e4a33..11531cd1b4a 100644
--- a/cmd/efi.c
+++ b/cmd/efi.c
@@ -12,6 +12,7 @@
 #include <malloc.h>
 #include <sort.h>
 #include <asm/global_data.h>
+#include <linux/string.h>
 
 static const char *const type_name[] = {
 	"reserved",
diff --git a/cmd/efidebug.c b/cmd/efidebug.c
index 58018f700cd..585dc12a237 100644
--- a/cmd/efidebug.c
+++ b/cmd/efidebug.c
@@ -16,6 +16,7 @@
 #include <mapmem.h>
 #include <search.h>
 #include <linux/ctype.h>
+#include <linux/string.h>
 
 #define BS systab.boottime
 
diff --git a/cmd/elf.c b/cmd/elf.c
index d44b95d9033..a3cb6e274f4 100644
--- a/cmd/elf.c
+++ b/cmd/elf.c
@@ -19,6 +19,7 @@
 #include <asm/e820.h>
 #include <linux/linkage.h>
 #endif
+#include <linux/string.h>
 
 /* Allow ports to override the default behavior */
 static unsigned long do_bootelf_exec(ulong (*entry)(int, char * const[]),
diff --git a/cmd/ethsw.c b/cmd/ethsw.c
index f8b8a798bf6..8e2bd3dfa57 100644
--- a/cmd/ethsw.c
+++ b/cmd/ethsw.c
@@ -12,6 +12,7 @@
 #include <env_flags.h>
 #include <ethsw.h>
 #include <net.h>
+#include <linux/string.h>
 
 static const char *ethsw_name;
 
diff --git a/cmd/fastboot.c b/cmd/fastboot.c
index 48b891b28fc..90efc85360d 100644
--- a/cmd/fastboot.c
+++ b/cmd/fastboot.c
@@ -15,6 +15,7 @@
 #include <usb.h>
 #include <watchdog.h>
 #include <linux/printk.h>
+#include <linux/string.h>
 #include <linux/stringify.h>
 
 static int do_fastboot_udp(int argc, char *const argv[],
diff --git a/cmd/fdt.c b/cmd/fdt.c
index 89ab572d8df..f5f1f6b0017 100644
--- a/cmd/fdt.c
+++ b/cmd/fdt.c
@@ -12,6 +12,7 @@
 #include <env.h>
 #include <image.h>
 #include <linux/ctype.h>
+#include <linux/string.h>
 #include <linux/types.h>
 #include <asm/global_data.h>
 #include <linux/libfdt.h>
diff --git a/cmd/flash.c b/cmd/flash.c
index 240871e8089..3e7b335109d 100644
--- a/cmd/flash.c
+++ b/cmd/flash.c
@@ -11,6 +11,7 @@
 #include <command.h>
 #include <log.h>
 #include <uuid.h>
+#include <linux/string.h>
 
 #if defined(CONFIG_CMD_MTDPARTS)
 #include <jffs2/jffs2.h>
diff --git a/cmd/fpga.c b/cmd/fpga.c
index 8ae1c936fbb..3151100aa14 100644
--- a/cmd/fpga.c
+++ b/cmd/fpga.c
@@ -16,6 +16,7 @@
 #include <image.h>
 #include <log.h>
 #include <malloc.h>
+#include <linux/string.h>
 
 static long do_fpga_get_device(char *arg)
 {
diff --git a/cmd/fuse.c b/cmd/fuse.c
index e001619d172..db504349af1 100644
--- a/cmd/fuse.c
+++ b/cmd/fuse.c
@@ -13,6 +13,7 @@
 #include <console.h>
 #include <fuse.h>
 #include <linux/errno.h>
+#include <linux/string.h>
 
 static int strtou32(const char *str, unsigned int base, u32 *result)
 {
diff --git a/cmd/gpio.c b/cmd/gpio.c
index 4fdb3135fc1..e256f83ea10 100644
--- a/cmd/gpio.c
+++ b/cmd/gpio.c
@@ -14,6 +14,7 @@
 #include <malloc.h>
 #include <asm/gpio.h>
 #include <linux/err.h>
+#include <linux/string.h>
 
 __weak int name_to_gpio(const char *name)
 {
diff --git a/cmd/gpt.c b/cmd/gpt.c
index df759416c88..db70ba887b4 100644
--- a/cmd/gpt.c
+++ b/cmd/gpt.c
@@ -27,6 +27,7 @@
 #include <linux/err.h>
 #include <linux/sizes.h>
 #include <stdlib.h>
+#include <linux/string.h>
 
 static LIST_HEAD(disk_partitions);
 
diff --git a/cmd/hash.c b/cmd/hash.c
index e163cd67742..5b0d75f8662 100644
--- a/cmd/hash.c
+++ b/cmd/hash.c
@@ -13,6 +13,7 @@
 #include <command.h>
 #include <hash.h>
 #include <linux/ctype.h>
+#include <linux/string.h>
 
 static int do_hash(struct cmd_tbl *cmdtp, int flag, int argc,
 		   char *const argv[])
diff --git a/cmd/i2c.c b/cmd/i2c.c
index cc01119b210..83e4cfaa255 100644
--- a/cmd/i2c.c
+++ b/cmd/i2c.c
@@ -78,6 +78,7 @@
 #include <asm/byteorder.h>
 #include <linux/compiler.h>
 #include <linux/delay.h>
+#include <linux/string.h>
 #include <u-boot/crc.h>
 
 /* Display values from last command.
diff --git a/cmd/ide.c b/cmd/ide.c
index b78c38e1590..8fefaf3f815 100644
--- a/cmd/ide.c
+++ b/cmd/ide.c
@@ -16,6 +16,7 @@
 #include <image.h>
 #include <asm/byteorder.h>
 #include <asm/io.h>
+#include <linux/string.h>
 
 #include <ide.h>
 #include <ata.h>
diff --git a/cmd/irq.c b/cmd/irq.c
index 1d3e28cb3ce..614fd942bc2 100644
--- a/cmd/irq.c
+++ b/cmd/irq.c
@@ -7,6 +7,7 @@
 #include <config.h>
 #include <command.h>
 #include <irq_func.h>
+#include <linux/string.h>
 
 static int do_interrupts(struct cmd_tbl *cmdtp, int flag, int argc,
 			 char *const argv[])
diff --git a/cmd/itest.c b/cmd/itest.c
index a0cf4bee041..4ccc4cbb8a9 100644
--- a/cmd/itest.c
+++ b/cmd/itest.c
@@ -16,6 +16,7 @@
 #include <command.h>
 #include <env.h>
 #include <mapmem.h>
+#include <linux/string.h>
 
 #include <asm/io.h>
 
diff --git a/cmd/jffs2.c b/cmd/jffs2.c
index 9540988e33e..e06ab60a77f 100644
--- a/cmd/jffs2.c
+++ b/cmd/jffs2.c
@@ -81,6 +81,7 @@
 #include <linux/list.h>
 #include <linux/ctype.h>
 #include <cramfs/cramfs_fs.h>
+#include <linux/string.h>
 
 #if defined(CONFIG_CMD_NAND)
 #include <linux/mtd/rawnand.h>
diff --git a/cmd/led.c b/cmd/led.c
index 9433fa886c2..a2b2f1b5e56 100644
--- a/cmd/led.c
+++ b/cmd/led.c
@@ -9,6 +9,7 @@
 #include <dm.h>
 #include <led.h>
 #include <dm/uclass-internal.h>
+#include <linux/string.h>
 
 #define LED_TOGGLE LEDST_COUNT
 
diff --git a/cmd/legacy_led.c b/cmd/legacy_led.c
index 86cd969e407..4176f089dfc 100644
--- a/cmd/legacy_led.c
+++ b/cmd/legacy_led.c
@@ -13,6 +13,7 @@
 #include <config.h>
 #include <command.h>
 #include <status_led.h>
+#include <linux/string.h>
 
 struct led_tbl_s {
 	char		*string;	/* String for use in the command */
diff --git a/cmd/load.c b/cmd/load.c
index 4bd463c3a7c..a651478d920 100644
--- a/cmd/load.c
+++ b/cmd/load.c
@@ -22,6 +22,7 @@
 #include <asm/cache.h>
 #include <asm/global_data.h>
 #include <linux/delay.h>
+#include <linux/string.h>
 
 DECLARE_GLOBAL_DATA_PTR;
 
diff --git a/cmd/log.c b/cmd/log.c
index ccefb0cbb8c..f47ff5d17e9 100644
--- a/cmd/log.c
+++ b/cmd/log.c
@@ -9,6 +9,7 @@
 #include <dm.h>
 #include <log.h>
 #include <asm/global_data.h>
+#include <linux/string.h>
 
 static char log_fmt_chars[LOGF_COUNT] = "clFLfm";
 
diff --git a/cmd/md5sum.c b/cmd/md5sum.c
index 5ae3ddf85f8..ae2d81470d7 100644
--- a/cmd/md5sum.c
+++ b/cmd/md5sum.c
@@ -12,6 +12,7 @@
 #include <env.h>
 #include <image.h>
 #include <mapmem.h>
+#include <linux/string.h>
 #include <u-boot/md5.h>
 #include <asm/io.h>
 
diff --git a/cmd/mdio.c b/cmd/mdio.c
index c48bb51237c..f9b2a1caaa9 100644
--- a/cmd/mdio.c
+++ b/cmd/mdio.c
@@ -12,6 +12,7 @@
 #include <command.h>
 #include <miiphy.h>
 #include <phy.h>
+#include <linux/string.h>
 
 static char last_op[2];
 static uint last_data;
diff --git a/cmd/mem.c b/cmd/mem.c
index 5578dea97ec..41ab1bbfbb4 100644
--- a/cmd/mem.c
+++ b/cmd/mem.c
@@ -30,6 +30,7 @@
 #include <linux/compiler.h>
 #include <linux/ctype.h>
 #include <linux/delay.h>
+#include <linux/string.h>
 
 DECLARE_GLOBAL_DATA_PTR;
 
diff --git a/cmd/mii.c b/cmd/mii.c
index b52a55dc339..3a795dbad6f 100644
--- a/cmd/mii.c
+++ b/cmd/mii.c
@@ -11,6 +11,7 @@
 #include <common.h>
 #include <command.h>
 #include <miiphy.h>
+#include <linux/string.h>
 
 typedef struct _MII_field_desc_t {
 	ushort hi;
diff --git a/cmd/misc.c b/cmd/misc.c
index 36bca24fb20..8743a34cff5 100644
--- a/cmd/misc.c
+++ b/cmd/misc.c
@@ -12,6 +12,7 @@
 #include <console.h>
 #include <time.h>
 #include <linux/delay.h>
+#include <linux/string.h>
 
 static int do_sleep(struct cmd_tbl *cmdtp, int flag, int argc,
 		    char *const argv[])
diff --git a/cmd/mmc.c b/cmd/mmc.c
index e3e75d0fc0e..bc7e991c86e 100644
--- a/cmd/mmc.c
+++ b/cmd/mmc.c
@@ -14,6 +14,7 @@
 #include <part.h>
 #include <sparse_format.h>
 #include <image-sparse.h>
+#include <linux/string.h>
 
 static int curr_device = -1;
 
diff --git a/cmd/mp.c b/cmd/mp.c
index c2b5235a373..a14ebbd0b56 100644
--- a/cmd/mp.c
+++ b/cmd/mp.c
@@ -6,6 +6,7 @@
 #include <common.h>
 #include <command.h>
 #include <cpu_func.h>
+#include <linux/string.h>
 
 static int cpu_status_all(void)
 {
diff --git a/cmd/mtd.c b/cmd/mtd.c
index 485a963bdd0..fe1e94f6cc4 100644
--- a/cmd/mtd.c
+++ b/cmd/mtd.c
@@ -16,6 +16,7 @@
 #include <mtd.h>
 #include <dm/devres.h>
 #include <linux/err.h>
+#include <linux/string.h>
 
 #include <linux/ctype.h>
 
diff --git a/cmd/mtdparts.c b/cmd/mtdparts.c
index ed373a8c4da..077793e8857 100644
--- a/cmd/mtdparts.c
+++ b/cmd/mtdparts.c
@@ -81,6 +81,7 @@
 #include <linux/ctype.h>
 #include <linux/err.h>
 #include <linux/mtd/mtd.h>
+#include <linux/string.h>
 
 #if defined(CONFIG_CMD_NAND)
 #include <linux/mtd/rawnand.h>
diff --git a/cmd/mvebu/bubt.c b/cmd/mvebu/bubt.c
index a27b0df8ae7..5f363da7597 100644
--- a/cmd/mvebu/bubt.c
+++ b/cmd/mvebu/bubt.c
@@ -14,6 +14,7 @@
 #include <vsprintf.h>
 #include <errno.h>
 #include <dm.h>
+#include <linux/string.h>
 
 #include <spi_flash.h>
 #include <spi.h>
diff --git a/cmd/nand.c b/cmd/nand.c
index 92d039af8f5..880ee53d837 100644
--- a/cmd/nand.c
+++ b/cmd/nand.c
@@ -32,6 +32,7 @@
 #include <asm/byteorder.h>
 #include <jffs2/jffs2.h>
 #include <nand.h>
+#include <linux/string.h>
 
 #include "legacy-mtd-utils.h"
 
diff --git a/cmd/net.c b/cmd/net.c
index 9bbcdbcfe07..c505656a949 100644
--- a/cmd/net.c
+++ b/cmd/net.c
@@ -13,6 +13,7 @@
 #include <env.h>
 #include <image.h>
 #include <net.h>
+#include <linux/string.h>
 
 static int netboot_common(enum proto_t, struct cmd_tbl *, int, char * const []);
 
diff --git a/cmd/nvedit.c b/cmd/nvedit.c
index 554596b27d7..c73472ec226 100644
--- a/cmd/nvedit.c
+++ b/cmd/nvedit.c
@@ -38,6 +38,7 @@
 #include <asm/global_data.h>
 #include <linux/bitops.h>
 #include <linux/printk.h>
+#include <linux/string.h>
 #include <u-boot/crc.h>
 #include <watchdog.h>
 #include <linux/stddef.h>
diff --git a/cmd/nvedit_efi.c b/cmd/nvedit_efi.c
index 8e31f43e1f9..4f0148b074c 100644
--- a/cmd/nvedit_efi.c
+++ b/cmd/nvedit_efi.c
@@ -18,6 +18,7 @@
 #include <rtc.h>
 #include <uuid.h>
 #include <linux/kernel.h>
+#include <linux/string.h>
 
 /*
  * From efi_variable.c,
diff --git a/cmd/nvme.c b/cmd/nvme.c
index e715c570a38..8c025980843 100644
--- a/cmd/nvme.c
+++ b/cmd/nvme.c
@@ -9,6 +9,7 @@
 #include <command.h>
 #include <dm.h>
 #include <nvme.h>
+#include <linux/string.h>
 
 static int nvme_curr_dev;
 
diff --git a/cmd/onenand.c b/cmd/onenand.c
index fa403369faa..fa12f0dec75 100644
--- a/cmd/onenand.c
+++ b/cmd/onenand.c
@@ -13,6 +13,7 @@
 #include <command.h>
 #include <malloc.h>
 #include <linux/printk.h>
+#include <linux/string.h>
 
 #include <linux/compat.h>
 #include <linux/mtd/mtd.h>
diff --git a/cmd/osd.c b/cmd/osd.c
index bdad5d8e963..c1ef7eb8cda 100644
--- a/cmd/osd.c
+++ b/cmd/osd.c
@@ -15,6 +15,7 @@
 #include <hexdump.h>
 #include <video_osd.h>
 #include <malloc.h>
+#include <linux/string.h>
 
 /* Container for selected OSD device */
 static struct udevice *osd_cur;
diff --git a/cmd/part.c b/cmd/part.c
index 3395c17b892..f53edac8357 100644
--- a/cmd/part.c
+++ b/cmd/part.c
@@ -21,6 +21,7 @@
 #include <env.h>
 #include <part.h>
 #include <vsprintf.h>
+#include <linux/string.h>
 
 enum cmd_part_info {
 	CMD_PART_INFO_START = 0,
diff --git a/cmd/pci.c b/cmd/pci.c
index f91a4eb8ed0..c2d4e5d4ed6 100644
--- a/cmd/pci.c
+++ b/cmd/pci.c
@@ -22,6 +22,7 @@
 #include <asm/processor.h>
 #include <asm/io.h>
 #include <pci.h>
+#include <linux/string.h>
 
 struct pci_reg_info {
 	const char *name;
diff --git a/cmd/pinmux.c b/cmd/pinmux.c
index 9942b154196..6f8a3fd9440 100644
--- a/cmd/pinmux.c
+++ b/cmd/pinmux.c
@@ -9,6 +9,7 @@
 #include <errno.h>
 #include <dm/pinctrl.h>
 #include <dm/uclass-internal.h>
+#include <linux/string.h>
 
 #define LIMIT_DEVNAME	30
 
diff --git a/cmd/regulator.c b/cmd/regulator.c
index 0d97334a901..6e91c177537 100644
--- a/cmd/regulator.c
+++ b/cmd/regulator.c
@@ -9,6 +9,7 @@
 #include <dm.h>
 #include <dm/uclass-internal.h>
 #include <linux/printk.h>
+#include <linux/string.h>
 #include <power/regulator.h>
 
 #define LIMIT_DEVNAME	20
diff --git a/cmd/remoteproc.c b/cmd/remoteproc.c
index e8b9178e740..7adf4553400 100644
--- a/cmd/remoteproc.c
+++ b/cmd/remoteproc.c
@@ -9,6 +9,7 @@
 #include <errno.h>
 #include <malloc.h>
 #include <remoteproc.h>
+#include <linux/string.h>
 
 /**
  * print_remoteproc_list() - print all the remote processor devices
diff --git a/cmd/rtc.c b/cmd/rtc.c
index 4ac49d228cb..b3f46f13eb4 100644
--- a/cmd/rtc.c
+++ b/cmd/rtc.c
@@ -8,6 +8,7 @@
 #include <i2c.h>
 #include <mapmem.h>
 #include <rtc.h>
+#include <linux/string.h>
 
 #define MAX_RTC_BYTES 32
 
diff --git a/cmd/sata.c b/cmd/sata.c
index aa396c1bbdf..9b19ca49b18 100644
--- a/cmd/sata.c
+++ b/cmd/sata.c
@@ -18,6 +18,7 @@
 #include <sata.h>
 #include <dm/device-internal.h>
 #include <dm/uclass-internal.h>
+#include <linux/string.h>
 
 static int sata_curr_device = -1;
 
diff --git a/cmd/scsi.c b/cmd/scsi.c
index 5f710d28957..61437ef21eb 100644
--- a/cmd/scsi.c
+++ b/cmd/scsi.c
@@ -11,6 +11,7 @@
 #include <blk.h>
 #include <command.h>
 #include <scsi.h>
+#include <linux/string.h>
 
 static int scsi_curr_dev; /* current device */
 
diff --git a/cmd/setexpr.c b/cmd/setexpr.c
index 770dc24d2b7..1569d7ad72d 100644
--- a/cmd/setexpr.c
+++ b/cmd/setexpr.c
@@ -14,6 +14,7 @@
 #include <env.h>
 #include <log.h>
 #include <mapmem.h>
+#include <linux/string.h>
 
 static ulong get_arg(char *s, int w)
 {
diff --git a/cmd/sf.c b/cmd/sf.c
index 249e2eee377..c74651d23b6 100644
--- a/cmd/sf.c
+++ b/cmd/sf.c
@@ -20,6 +20,7 @@
 #include <asm/cache.h>
 #include <jffs2/jffs2.h>
 #include <linux/mtd/mtd.h>
+#include <linux/string.h>
 
 #include <asm/io.h>
 #include <dm/device-internal.h>
diff --git a/cmd/sha1sum.c b/cmd/sha1sum.c
index bcc665a5a6c..677f57b62d7 100644
--- a/cmd/sha1sum.c
+++ b/cmd/sha1sum.c
@@ -10,6 +10,7 @@
 #include <common.h>
 #include <command.h>
 #include <hash.h>
+#include <linux/string.h>
 #include <u-boot/sha1.h>
 
 int do_sha1sum(struct cmd_tbl *cmdtp, int flag, int argc, char *const argv[])
diff --git a/cmd/smccc.c b/cmd/smccc.c
index 0b19f6c68c6..101959c848a 100644
--- a/cmd/smccc.c
+++ b/cmd/smccc.c
@@ -9,6 +9,7 @@
 #include <linux/arm-smccc.h>
 #include <linux/compiler.h>
 #include <linux/psci.h>
+#include <linux/string.h>
 
 static int do_call(struct cmd_tbl *cmdtp, int flag, int argc,
 		   char *const argv[])
diff --git a/cmd/spi.c b/cmd/spi.c
index 4aea1914129..df05e828fd1 100644
--- a/cmd/spi.c
+++ b/cmd/spi.c
@@ -13,6 +13,7 @@
 #include <dm.h>
 #include <errno.h>
 #include <spi.h>
+#include <linux/string.h>
 
 /*-----------------------------------------------------------------------
  * Definitions
diff --git a/cmd/strings.c b/cmd/strings.c
index 85fdc34f08f..bf4efa4aa3a 100644
--- a/cmd/strings.c
+++ b/cmd/strings.c
@@ -9,6 +9,7 @@
 #include <config.h>
 #include <common.h>
 #include <command.h>
+#include <linux/string.h>
 
 static char *start_addr, *last_addr;
 
diff --git a/cmd/sysboot.c b/cmd/sysboot.c
index af6a2f1b7f1..38aa2a2cdb0 100644
--- a/cmd/sysboot.c
+++ b/cmd/sysboot.c
@@ -4,6 +4,7 @@
 #include <command.h>
 #include <env.h>
 #include <fs.h>
+#include <linux/string.h>
 #include "pxe_utils.h"
 
 static char *fs_argv[5];
diff --git a/cmd/test.c b/cmd/test.c
index fa7c48fb9f1..ad69e6dd7a6 100644
--- a/cmd/test.c
+++ b/cmd/test.c
@@ -8,6 +8,7 @@
 #include <command.h>
 #include <fs.h>
 #include <log.h>
+#include <linux/string.h>
 
 #define OP_INVALID	0
 #define OP_NOT		1
diff --git a/cmd/ti/ddr3.c b/cmd/ti/ddr3.c
index 6b43a738683..f3c3e7e9fbe 100644
--- a/cmd/ti/ddr3.c
+++ b/cmd/ti/ddr3.c
@@ -15,6 +15,7 @@
 #include <common.h>
 #include <command.h>
 #include <asm/global_data.h>
+#include <linux/string.h>
 
 DECLARE_GLOBAL_DATA_PTR;
 
diff --git a/cmd/tlv_eeprom.c b/cmd/tlv_eeprom.c
index 5099cbdd95e..663beeb9f73 100644
--- a/cmd/tlv_eeprom.c
+++ b/cmd/tlv_eeprom.c
@@ -19,6 +19,7 @@
 #include <net.h>
 #include <asm/global_data.h>
 #include <linux/ctype.h>
+#include <linux/string.h>
 #include <u-boot/crc.h>
 
 #include "tlv_eeprom.h"
diff --git a/cmd/tpm-v1.c b/cmd/tpm-v1.c
index 0e2168aea67..77cd5e3bd7c 100644
--- a/cmd/tpm-v1.c
+++ b/cmd/tpm-v1.c
@@ -10,6 +10,7 @@
 #include <asm/unaligned.h>
 #include <tpm-common.h>
 #include <tpm-v1.h>
+#include <linux/string.h>
 #include "tpm-user-utils.h"
 
 static int do_tpm_startup(struct cmd_tbl *cmdtp, int flag, int argc,
diff --git a/cmd/tpm-v2.c b/cmd/tpm-v2.c
index e6742656f57..392811f1279 100644
--- a/cmd/tpm-v2.c
+++ b/cmd/tpm-v2.c
@@ -11,6 +11,7 @@
 #include <mapmem.h>
 #include <tpm-common.h>
 #include <tpm-v2.h>
+#include <linux/string.h>
 #include "tpm-user-utils.h"
 
 static int do_tpm2_startup(struct cmd_tbl *cmdtp, int flag, int argc,
diff --git a/cmd/tsi148.c b/cmd/tsi148.c
index 2eae14f87f1..cbe898475ba 100644
--- a/cmd/tsi148.c
+++ b/cmd/tsi148.c
@@ -13,6 +13,7 @@
 #include <malloc.h>
 #include <asm/io.h>
 #include <pci.h>
+#include <linux/string.h>
 
 #include <tsi148.h>
 
diff --git a/cmd/ubi.c b/cmd/ubi.c
index 171377cc66b..afd45bab943 100644
--- a/cmd/ubi.c
+++ b/cmd/ubi.c
@@ -27,6 +27,7 @@
 #include <ubi_uboot.h>
 #include <linux/errno.h>
 #include <jffs2/load_kernel.h>
+#include <linux/string.h>
 
 #undef ubi_msg
 #define ubi_msg(fmt, ...) printf("UBI: " fmt "\n", ##__VA_ARGS__)
diff --git a/cmd/ufs.c b/cmd/ufs.c
index 858cd49b597..a04d15a2441 100644
--- a/cmd/ufs.c
+++ b/cmd/ufs.c
@@ -8,6 +8,7 @@
 #include <common.h>
 #include <command.h>
 #include <ufs.h>
+#include <linux/string.h>
 
 static int do_ufs(struct cmd_tbl *cmdtp, int flag, int argc, char *const argv[])
 {
diff --git a/cmd/universe.c b/cmd/universe.c
index 5ff47dde4fb..37437a1cddd 100644
--- a/cmd/universe.c
+++ b/cmd/universe.c
@@ -8,6 +8,7 @@
 #include <malloc.h>
 #include <asm/io.h>
 #include <pci.h>
+#include <linux/string.h>
 
 #include <universe.h>
 
diff --git a/cmd/usb.c b/cmd/usb.c
index b9ec29a8457..04205a7a52e 100644
--- a/cmd/usb.c
+++ b/cmd/usb.c
@@ -22,6 +22,7 @@
 #include <asm/unaligned.h>
 #include <part.h>
 #include <usb.h>
+#include <linux/string.h>
 
 #ifdef CONFIG_USB_STORAGE
 static int usb_stor_curr_dev = -1; /* current device */
diff --git a/cmd/usb_mass_storage.c b/cmd/usb_mass_storage.c
index 5996c852e8e..43fdb097078 100644
--- a/cmd/usb_mass_storage.c
+++ b/cmd/usb_mass_storage.c
@@ -19,6 +19,7 @@
 #include <watchdog.h>
 #include <linux/delay.h>
 #include <linux/printk.h>
+#include <linux/string.h>
 
 static int ums_read_sector(struct ums *ums_dev,
 			   ulong start, lbaint_t blkcnt, void *buf)
diff --git a/cmd/virtio.c b/cmd/virtio.c
index 3dace5344f7..8f64ffa8e14 100644
--- a/cmd/virtio.c
+++ b/cmd/virtio.c
@@ -10,6 +10,7 @@
 #include <dm.h>
 #include <virtio_types.h>
 #include <virtio.h>
+#include <linux/string.h>
 
 static int virtio_curr_dev;
 
diff --git a/cmd/w1.c b/cmd/w1.c
index 92be1f2531d..da1ede6a439 100644
--- a/cmd/w1.c
+++ b/cmd/w1.c
@@ -9,6 +9,7 @@
 #include <w1.h>
 #include <w1-eeprom.h>
 #include <dm/device-internal.h>
+#include <linux/string.h>
 
 static int w1_bus(void)
 {
diff --git a/cmd/x86/mtrr.c b/cmd/x86/mtrr.c
index e118bba5a2a..3e46a342a05 100644
--- a/cmd/x86/mtrr.c
+++ b/cmd/x86/mtrr.c
@@ -9,6 +9,7 @@
 #include <asm/msr.h>
 #include <asm/mp.h>
 #include <asm/mtrr.h>
+#include <linux/string.h>
 
 static const char *const mtrr_type_name[MTRR_TYPE_COUNT] = {
 	"Uncacheable",
diff --git a/cmd/ximg.c b/cmd/ximg.c
index 159ba516489..c9cf4009d0d 100644
--- a/cmd/ximg.c
+++ b/cmd/ximg.c
@@ -26,6 +26,7 @@
 #include <asm/byteorder.h>
 #include <asm/cache.h>
 #include <asm/io.h>
+#include <linux/string.h>
 
 #ifndef CONFIG_SYS_XIMG_LEN
 /* use 8MByte as default max gunzip size */
diff --git a/cmd/yaffs2.c b/cmd/yaffs2.c
index f29ebcc026e..1ecb5bea8e2 100644
--- a/cmd/yaffs2.c
+++ b/cmd/yaffs2.c
@@ -14,6 +14,7 @@
  */
 
 #include <common.h>
+#include <linux/string.h>
 
 #include <config.h>
 #include <command.h>
diff --git a/cmd/zfs.c b/cmd/zfs.c
index e429ac88d73..d01835573a4 100644
--- a/cmd/zfs.c
+++ b/cmd/zfs.c
@@ -19,6 +19,7 @@
 #include <zfs_common.h>
 #include <linux/stat.h>
 #include <malloc.h>
+#include <linux/string.h>
 
 #if defined(CONFIG_CMD_USB) && defined(CONFIG_USB_STORAGE)
 #include <usb.h>
diff --git a/common/android_ab.c b/common/android_ab.c
index 4943f26d53a..794df3fde7a 100644
--- a/common/android_ab.c
+++ b/common/android_ab.c
@@ -11,6 +11,7 @@
 #include <part.h>
 #include <memalign.h>
 #include <linux/err.h>
+#include <linux/string.h>
 #include <u-boot/crc.h>
 #include <u-boot/crc.h>
 
diff --git a/common/autoboot.c b/common/autoboot.c
index 4341f5f0bb0..6db00525977 100644
--- a/common/autoboot.c
+++ b/common/autoboot.c
@@ -21,6 +21,7 @@
 #include <time.h>
 #include <asm/global_data.h>
 #include <linux/delay.h>
+#include <linux/string.h>
 #include <u-boot/sha256.h>
 #include <bootcount.h>
 
diff --git a/common/avb_verify.c b/common/avb_verify.c
index a2b739626b5..6894f6872e9 100644
--- a/common/avb_verify.c
+++ b/common/avb_verify.c
@@ -12,6 +12,7 @@
 #include <malloc.h>
 #include <part.h>
 #include <tee.h>
+#include <linux/string.h>
 #include <tee/optee_ta_avb.h>
 
 static const unsigned char avb_root_pub[1032] = {
diff --git a/common/bloblist.c b/common/bloblist.c
index e3c2b5fa898..9abd360db8d 100644
--- a/common/bloblist.c
+++ b/common/bloblist.c
@@ -10,6 +10,7 @@
 #include <mapmem.h>
 #include <spl.h>
 #include <asm/global_data.h>
+#include <linux/string.h>
 #include <u-boot/crc.h>
 
 DECLARE_GLOBAL_DATA_PTR;
diff --git a/common/board_f.c b/common/board_f.c
index f032549fb5f..949f8774c83 100644
--- a/common/board_f.c
+++ b/common/board_f.c
@@ -55,6 +55,7 @@
 #include <asm/sections.h>
 #include <dm/root.h>
 #include <linux/errno.h>
+#include <linux/string.h>
 
 /*
  * Pointer to initial global data area
diff --git a/common/bootm.c b/common/bootm.c
index 157b0cbc7e8..f9ff1ce78ba 100644
--- a/common/bootm.c
+++ b/common/bootm.c
@@ -23,6 +23,7 @@
 #if defined(CONFIG_CMD_USB)
 #include <usb.h>
 #endif
+#include <linux/string.h>
 #else
 #include "mkimage.h"
 #endif
diff --git a/common/bootm_os.c b/common/bootm_os.c
index 0b6325db660..295c6b8c064 100644
--- a/common/bootm_os.c
+++ b/common/bootm_os.c
@@ -19,6 +19,7 @@
 #include <malloc.h>
 #include <mapmem.h>
 #include <vxworks.h>
+#include <linux/string.h>
 #include <tee/optee.h>
 
 DECLARE_GLOBAL_DATA_PTR;
diff --git a/common/bootstage.c b/common/bootstage.c
index d5b78b9f487..6eb83767949 100644
--- a/common/bootstage.c
+++ b/common/bootstage.c
@@ -19,6 +19,7 @@
 #include <asm/global_data.h>
 #include <linux/compiler.h>
 #include <linux/libfdt.h>
+#include <linux/string.h>
 
 DECLARE_GLOBAL_DATA_PTR;
 
diff --git a/common/bouncebuf.c b/common/bouncebuf.c
index 6d98920de66..bcca7838bcc 100644
--- a/common/bouncebuf.c
+++ b/common/bouncebuf.c
@@ -12,6 +12,7 @@
 #include <errno.h>
 #include <bouncebuf.h>
 #include <asm/cache.h>
+#include <linux/string.h>
 
 static int addr_aligned(struct bounce_buffer *state)
 {
diff --git a/common/cli.c b/common/cli.c
index 048eacb9ef9..4fc4c206e4d 100644
--- a/common/cli.c
+++ b/common/cli.c
@@ -19,6 +19,7 @@
 #include <hang.h>
 #include <malloc.h>
 #include <asm/global_data.h>
+#include <linux/string.h>
 
 DECLARE_GLOBAL_DATA_PTR;
 
diff --git a/common/cli_hush.c b/common/cli_hush.c
index 3fbe918ebad..f077707f9f7 100644
--- a/common/cli_hush.c
+++ b/common/cli_hush.c
@@ -88,6 +88,7 @@
 #define CONFIG_SYS_PROMPT_HUSH_PS2	"> "
 #endif
 #include <asm/global_data.h>
+#include <linux/string.h>
 #endif
 #ifndef __U_BOOT__
 #include <ctype.h>     /* isalpha, isdigit */
diff --git a/common/cli_readline.c b/common/cli_readline.c
index c89bb136b86..927c5066a9e 100644
--- a/common/cli_readline.c
+++ b/common/cli_readline.c
@@ -15,6 +15,7 @@
 #include <time.h>
 #include <watchdog.h>
 #include <asm/global_data.h>
+#include <linux/string.h>
 
 DECLARE_GLOBAL_DATA_PTR;
 
diff --git a/common/cli_simple.c b/common/cli_simple.c
index 7d91316a0fb..b7f21bbbe75 100644
--- a/common/cli_simple.c
+++ b/common/cli_simple.c
@@ -16,6 +16,7 @@
 #include <env.h>
 #include <log.h>
 #include <linux/ctype.h>
+#include <linux/string.h>
 
 #define DEBUG_PARSER	0	/* set to 1 to debug */
 
diff --git a/common/command.c b/common/command.c
index 5cadf732e96..3bc2038f97f 100644
--- a/common/command.c
+++ b/common/command.c
@@ -17,6 +17,7 @@
 #include <time.h>
 #include <asm/global_data.h>
 #include <linux/ctype.h>
+#include <linux/string.h>
 
 /*
  * Use puts() instead of printf() to avoid printf buffer overflow
diff --git a/common/common_fit.c b/common/common_fit.c
index a9933081007..dfb2134fcf1 100644
--- a/common/common_fit.c
+++ b/common/common_fit.c
@@ -9,6 +9,7 @@
 #include <image.h>
 #include <log.h>
 #include <linux/libfdt.h>
+#include <linux/string.h>
 
 ulong fdt_getprop_u32(const void *fdt, int node, const char *prop)
 {
diff --git a/common/console.c b/common/console.c
index e18c0ee0d95..cc5d56b6d07 100644
--- a/common/console.c
+++ b/common/console.c
@@ -22,6 +22,7 @@
 #include <watchdog.h>
 #include <asm/global_data.h>
 #include <linux/delay.h>
+#include <linux/string.h>
 
 DECLARE_GLOBAL_DATA_PTR;
 
diff --git a/common/dlmalloc.c b/common/dlmalloc.c
index cf0270a9c11..dc584f792b3 100644
--- a/common/dlmalloc.c
+++ b/common/dlmalloc.c
@@ -1,6 +1,7 @@
 #include <common.h>
 #include <log.h>
 #include <asm/global_data.h>
+#include <linux/string.h>
 
 #if CONFIG_IS_ENABLED(UNIT_TEST)
 #define DEBUG
diff --git a/common/eeprom/eeprom_layout.c b/common/eeprom/eeprom_layout.c
index 5a9be1da061..338185d58c3 100644
--- a/common/eeprom/eeprom_layout.c
+++ b/common/eeprom/eeprom_layout.c
@@ -10,6 +10,7 @@
 #include <linux/kernel.h>
 #include <eeprom_layout.h>
 #include <eeprom_field.h>
+#include <linux/string.h>
 
 #define NO_LAYOUT_FIELDS	"Unknown layout. Dumping raw data\n"
 
diff --git a/common/fdt_region.c b/common/fdt_region.c
index ff12c518e97..cb9bf08ce75 100644
--- a/common/fdt_region.c
+++ b/common/fdt_region.c
@@ -8,6 +8,7 @@
 #include <fdt_support.h>
 #include <linux/libfdt_env.h>
 #include <fdt_region.h>
+#include <linux/string.h>
 
 #ifndef USE_HOSTCC
 #include <fdt.h>
diff --git a/common/fdt_support.c b/common/fdt_support.c
index a565b470f81..9b685cc1736 100644
--- a/common/fdt_support.c
+++ b/common/fdt_support.c
@@ -13,6 +13,7 @@
 #include <net.h>
 #include <stdio_dev.h>
 #include <linux/ctype.h>
+#include <linux/string.h>
 #include <linux/types.h>
 #include <asm/global_data.h>
 #include <linux/libfdt.h>
diff --git a/common/flash.c b/common/flash.c
index bb82385c1f7..62f4c98749a 100644
--- a/common/flash.c
+++ b/common/flash.c
@@ -10,6 +10,7 @@
 #include <flash.h>
 #include <log.h>
 #include <uuid.h>
+#include <linux/string.h>
 
 #include <mtd/cfi_flash.h>
 
diff --git a/common/hash.c b/common/hash.c
index fc64002f736..e1be8dc05f9 100644
--- a/common/hash.c
+++ b/common/hash.c
@@ -21,6 +21,7 @@
 #include <asm/global_data.h>
 #include <asm/io.h>
 #include <linux/errno.h>
+#include <linux/string.h>
 #include <u-boot/crc.h>
 #else
 #include "mkimage.h"
diff --git a/common/image-android.c b/common/image-android.c
index d07b0e0f09b..7f76be86790 100644
--- a/common/image-android.c
+++ b/common/image-android.c
@@ -13,6 +13,7 @@
 #include <asm/unaligned.h>
 #include <mapmem.h>
 #include <linux/libfdt.h>
+#include <linux/string.h>
 
 #define ANDROID_IMAGE_DEFAULT_KERNEL_ADDR	0x10008000
 
diff --git a/common/image-cipher.c b/common/image-cipher.c
index 09d8512f8e5..c611eb52948 100644
--- a/common/image-cipher.c
+++ b/common/image-cipher.c
@@ -10,6 +10,7 @@
 #include <common.h>
 #include <malloc.h>
 #include <asm/global_data.h>
+#include <linux/string.h>
 DECLARE_GLOBAL_DATA_PTR;
 #endif /* !USE_HOSdTCC*/
 #include <image.h>
diff --git a/common/image-fdt.c b/common/image-fdt.c
index cb7b7c3ef2c..41fce043f54 100644
--- a/common/image-fdt.c
+++ b/common/image-fdt.c
@@ -21,6 +21,7 @@
 #include <linux/libfdt.h>
 #include <mapmem.h>
 #include <asm/io.h>
+#include <linux/string.h>
 #include <tee/optee.h>
 
 #ifndef CONFIG_SYS_FDT_PAD
diff --git a/common/image-fit-sig.c b/common/image-fit-sig.c
index 11fbdb0fb4f..0c36649dce0 100644
--- a/common/image-fit-sig.c
+++ b/common/image-fit-sig.c
@@ -11,6 +11,7 @@
 #include <log.h>
 #include <malloc.h>
 #include <asm/global_data.h>
+#include <linux/string.h>
 DECLARE_GLOBAL_DATA_PTR;
 #endif /* !USE_HOSTCC*/
 #include <fdt_region.h>
diff --git a/common/image-fit.c b/common/image-fit.c
index 973a37969f6..5d5dd7dc40a 100644
--- a/common/image-fit.c
+++ b/common/image-fit.c
@@ -23,6 +23,7 @@
 #include <asm/io.h>
 #include <malloc.h>
 #include <asm/global_data.h>
+#include <linux/string.h>
 DECLARE_GLOBAL_DATA_PTR;
 #endif /* !USE_HOSTCC*/
 
diff --git a/common/image-sig.c b/common/image-sig.c
index 4abd3c080f7..6cb5bedc8a9 100644
--- a/common/image-sig.c
+++ b/common/image-sig.c
@@ -13,6 +13,7 @@
 #include <log.h>
 #include <malloc.h>
 #include <asm/global_data.h>
+#include <linux/string.h>
 DECLARE_GLOBAL_DATA_PTR;
 #endif /* !USE_HOSTCC*/
 #include <image.h>
diff --git a/common/image.c b/common/image.c
index d8db73c82ba..ab0f0439bad 100644
--- a/common/image.c
+++ b/common/image.c
@@ -16,6 +16,7 @@
 #include <log.h>
 #include <malloc.h>
 #include <asm/cache.h>
+#include <linux/string.h>
 #include <u-boot/crc.h>
 #include <watchdog.h>
 
diff --git a/common/init/board_init.c b/common/init/board_init.c
index 3f183ee1132..319d59b5164 100644
--- a/common/init/board_init.c
+++ b/common/init/board_init.c
@@ -10,6 +10,7 @@
 #include <bootstage.h>
 #include <init.h>
 #include <asm/global_data.h>
+#include <linux/string.h>
 
 DECLARE_GLOBAL_DATA_PTR;
 
diff --git a/common/iomux.c b/common/iomux.c
index 7cfd9f2e916..d552e0ee61a 100644
--- a/common/iomux.c
+++ b/common/iomux.c
@@ -8,6 +8,7 @@
 #include <console.h>
 #include <serial.h>
 #include <malloc.h>
+#include <linux/string.h>
 
 #if CONFIG_IS_ENABLED(CONSOLE_MUX)
 void iomux_printdevs(const int console)
diff --git a/common/kallsyms.c b/common/kallsyms.c
index ce42a932bb8..b8e64c5b633 100644
--- a/common/kallsyms.c
+++ b/common/kallsyms.c
@@ -6,6 +6,7 @@
  */
 
 #include <common.h>
+#include <linux/string.h>
 
 /* We need the weak marking as this symbol is provided specially */
 extern const char system_map[] __attribute__((weak));
diff --git a/common/kgdb.c b/common/kgdb.c
index 4493a159198..2f3bb7f6142 100644
--- a/common/kgdb.c
+++ b/common/kgdb.c
@@ -89,6 +89,7 @@
 
 #include <common.h>
 #include <asm/ptrace.h>
+#include <linux/string.h>
 
 #include <kgdb.h>
 #include <command.h>
diff --git a/common/lcd.c b/common/lcd.c
index ab5614ad0e3..04736d6c980 100644
--- a/common/lcd.c
+++ b/common/lcd.c
@@ -16,6 +16,7 @@
 #include <asm/cache.h>
 #include <init.h>
 #include <asm/global_data.h>
+#include <linux/string.h>
 #include <linux/types.h>
 #include <stdio_dev.h>
 #include <lcd.h>
diff --git a/common/lcd_console.c b/common/lcd_console.c
index 1a246c492ce..7a10a20d724 100644
--- a/common/lcd_console.c
+++ b/common/lcd_console.c
@@ -15,6 +15,7 @@
 #if defined(CONFIG_LCD_LOGO)
 #include <bmp_logo.h>
 #endif
+#include <linux/string.h>
 
 static struct console_t cons;
 
diff --git a/common/log.c b/common/log.c
index f40513dc532..0eeee6a66b0 100644
--- a/common/log.c
+++ b/common/log.c
@@ -11,6 +11,7 @@
 #include <malloc.h>
 #include <asm/global_data.h>
 #include <dm/uclass.h>
+#include <linux/string.h>
 
 DECLARE_GLOBAL_DATA_PTR;
 
diff --git a/common/log_syslog.c b/common/log_syslog.c
index 2477a6995d3..2f3c93bf839 100644
--- a/common/log_syslog.c
+++ b/common/log_syslog.c
@@ -9,6 +9,7 @@
 #include <log.h>
 #include <net.h>
 #include <asm/global_data.h>
+#include <linux/string.h>
 
 DECLARE_GLOBAL_DATA_PTR;
 
diff --git a/common/malloc_simple.c b/common/malloc_simple.c
index 0267fb6bec8..805b044515f 100644
--- a/common/malloc_simple.c
+++ b/common/malloc_simple.c
@@ -13,6 +13,7 @@
 #include <mapmem.h>
 #include <asm/global_data.h>
 #include <asm/io.h>
+#include <linux/string.h>
 
 DECLARE_GLOBAL_DATA_PTR;
 
diff --git a/common/menu.c b/common/menu.c
index 5fb2ffbd065..0d08321e0e7 100644
--- a/common/menu.c
+++ b/common/menu.c
@@ -9,6 +9,7 @@
 #include <malloc.h>
 #include <errno.h>
 #include <linux/list.h>
+#include <linux/string.h>
 
 #include "menu.h"
 
diff --git a/common/miiphyutil.c b/common/miiphyutil.c
index 7d4d15ed918..fa273f1c201 100644
--- a/common/miiphyutil.c
+++ b/common/miiphyutil.c
@@ -15,6 +15,7 @@
 #include <miiphy.h>
 #include <phy.h>
 #include <linux/delay.h>
+#include <linux/string.h>
 
 #include <asm/types.h>
 #include <linux/list.h>
diff --git a/common/spl/spl.c b/common/spl/spl.c
index fd050cc6310..bea542ed2e3 100644
--- a/common/spl/spl.c
+++ b/common/spl/spl.c
@@ -22,6 +22,7 @@
 #include <asm/u-boot.h>
 #include <nand.h>
 #include <fat.h>
+#include <linux/string.h>
 #include <u-boot/crc.h>
 #include <version.h>
 #include <image.h>
diff --git a/common/spl/spl_atf.c b/common/spl/spl_atf.c
index b54b4f0d22e..6c3e839e855 100644
--- a/common/spl/spl_atf.c
+++ b/common/spl/spl_atf.c
@@ -17,6 +17,7 @@
 #include <log.h>
 #include <spl.h>
 #include <asm/cache.h>
+#include <linux/string.h>
 
 static struct bl2_to_bl31_params_mem bl31_params_mem;
 static struct bl31_params *bl2_to_bl31_params;
diff --git a/common/spl/spl_fit.c b/common/spl/spl_fit.c
index da6e021e1bf..5da3fceb0de 100644
--- a/common/spl/spl_fit.c
+++ b/common/spl/spl_fit.c
@@ -17,6 +17,7 @@
 #include <asm/global_data.h>
 #include <linux/libfdt.h>
 #include <linux/printk.h>
+#include <linux/string.h>
 
 DECLARE_GLOBAL_DATA_PTR;
 
diff --git a/common/spl/spl_net.c b/common/spl/spl_net.c
index e140a6306ff..6ac8b65eebd 100644
--- a/common/spl/spl_net.c
+++ b/common/spl/spl_net.c
@@ -14,6 +14,7 @@
 #include <spl.h>
 #include <net.h>
 #include <linux/libfdt.h>
+#include <linux/string.h>
 
 #if defined(CONFIG_SPL_ETH_SUPPORT) || defined(CONFIG_SPL_USB_ETHER)
 static ulong spl_net_load_read(struct spl_load_info *load, ulong sector,
diff --git a/common/spl/spl_nor.c b/common/spl/spl_nor.c
index 5270401db03..a1966cbad85 100644
--- a/common/spl/spl_nor.c
+++ b/common/spl/spl_nor.c
@@ -7,6 +7,7 @@
 #include <image.h>
 #include <log.h>
 #include <spl.h>
+#include <linux/string.h>
 
 static ulong spl_nor_load_read(struct spl_load_info *load, ulong sector,
 			       ulong count, void *buf)
diff --git a/common/spl/spl_ram.c b/common/spl/spl_ram.c
index df1d5b43d8b..7ea0a32b0d7 100644
--- a/common/spl/spl_ram.c
+++ b/common/spl/spl_ram.c
@@ -16,6 +16,7 @@
 #include <mapmem.h>
 #include <spl.h>
 #include <linux/libfdt.h>
+#include <linux/string.h>
 
 #ifndef CONFIG_SPL_LOAD_FIT_ADDRESS
 # define CONFIG_SPL_LOAD_FIT_ADDRESS	0
diff --git a/common/spl/spl_ubi.c b/common/spl/spl_ubi.c
index de6a63bd2d4..6a3679300d7 100644
--- a/common/spl/spl_ubi.c
+++ b/common/spl/spl_ubi.c
@@ -11,6 +11,7 @@
 #include <onenand_uboot.h>
 #include <ubispl.h>
 #include <spl.h>
+#include <linux/string.h>
 
 int spl_ubi_load_image(struct spl_image_info *spl_image,
 		       struct spl_boot_device *bootdev)
diff --git a/common/spl/spl_ymodem.c b/common/spl/spl_ymodem.c
index 284512478f1..c1958613299 100644
--- a/common/spl/spl_ymodem.c
+++ b/common/spl/spl_ymodem.c
@@ -16,6 +16,7 @@
 #include <xyzModem.h>
 #include <asm/u-boot.h>
 #include <linux/libfdt.h>
+#include <linux/string.h>
 
 #define BUF_SIZE 1024
 
diff --git a/common/splash.c b/common/splash.c
index e26b366cb23..31bbbc2f531 100644
--- a/common/splash.c
+++ b/common/splash.c
@@ -25,6 +25,7 @@
 #include <env.h>
 #include <splash.h>
 #include <lcd.h>
+#include <linux/string.h>
 
 static struct splash_location default_splash_locations[] = {
 	{
diff --git a/common/splash_source.c b/common/splash_source.c
index 2737fc6e7ff..12ea112a9d4 100644
--- a/common/splash_source.c
+++ b/common/splash_source.c
@@ -21,6 +21,7 @@
 #include <splash.h>
 #include <usb.h>
 #include <asm/global_data.h>
+#include <linux/string.h>
 
 DECLARE_GLOBAL_DATA_PTR;
 
diff --git a/common/stdio.c b/common/stdio.c
index 1c6ad686106..411796138f7 100644
--- a/common/stdio.c
+++ b/common/stdio.c
@@ -19,6 +19,7 @@
 #include <serial.h>
 #include <splash.h>
 #include <asm/global_data.h>
+#include <linux/string.h>
 
 #if defined(CONFIG_SYS_I2C)
 #include <i2c.h>
diff --git a/common/update.c b/common/update.c
index 5875524d59b..8851943b15c 100644
--- a/common/update.c
+++ b/common/update.c
@@ -10,6 +10,7 @@
 #include <cpu_func.h>
 #include <image.h>
 #include <linux/printk.h>
+#include <linux/string.h>
 
 #if !(defined(CONFIG_FIT) && defined(CONFIG_OF_LIBFDT))
 #error "CONFIG_FIT and CONFIG_OF_LIBFDT are required for auto-update feature"
diff --git a/common/usb.c b/common/usb.c
index aad13fd9c55..7dd34df3cd6 100644
--- a/common/usb.c
+++ b/common/usb.c
@@ -39,6 +39,7 @@
 #include <errno.h>
 #include <usb.h>
 #include <linux/delay.h>
+#include <linux/string.h>
 
 #define USB_BUFSIZ	512
 
diff --git a/common/usb_hub.c b/common/usb_hub.c
index af088bd7289..1eee9401dc3 100644
--- a/common/usb_hub.c
+++ b/common/usb_hub.c
@@ -40,6 +40,7 @@
 #include <asm/state.h>
 #endif
 #include <asm/unaligned.h>
+#include <linux/string.h>
 
 #include <usb.h>
 
diff --git a/common/usb_kbd.c b/common/usb_kbd.c
index 3a81a305995..0fb955c14b6 100644
--- a/common/usb_kbd.c
+++ b/common/usb_kbd.c
@@ -18,6 +18,7 @@
 #include <time.h>
 #include <watchdog.h>
 #include <asm/byteorder.h>
+#include <linux/string.h>
 
 #include <usb.h>
 
diff --git a/common/usb_storage.c b/common/usb_storage.c
index ff254419951..492a9374ad2 100644
--- a/common/usb_storage.c
+++ b/common/usb_storage.c
@@ -46,6 +46,7 @@
 #include <dm/device-internal.h>
 #include <dm/lists.h>
 #include <linux/delay.h>
+#include <linux/string.h>
 
 #include <part.h>
 #include <usb.h>
diff --git a/disk/part.c b/disk/part.c
index f6a31025dc8..04aac1f5f5a 100644
--- a/disk/part.c
+++ b/disk/part.c
@@ -14,6 +14,7 @@
 #include <malloc.h>
 #include <part.h>
 #include <ubifs_uboot.h>
+#include <linux/string.h>
 
 #undef	PART_DEBUG
 
diff --git a/disk/part_amiga.c b/disk/part_amiga.c
index 7eea60b564d..17c595a0a7b 100644
--- a/disk/part_amiga.c
+++ b/disk/part_amiga.c
@@ -8,6 +8,7 @@
 #include <command.h>
 #include <env.h>
 #include <ide.h>
+#include <linux/string.h>
 #include "part_amiga.h"
 #include <part.h>
 
diff --git a/disk/part_dos.c b/disk/part_dos.c
index 04f53106f7c..8eaa85e6b29 100644
--- a/disk/part_dos.c
+++ b/disk/part_dos.c
@@ -18,6 +18,7 @@
 #include <command.h>
 #include <ide.h>
 #include <memalign.h>
+#include <linux/string.h>
 #include "part_dos.h"
 #include <part.h>
 
diff --git a/disk/part_efi.c b/disk/part_efi.c
index c0def902fec..b995efc732d 100644
--- a/disk/part_efi.c
+++ b/disk/part_efi.c
@@ -26,6 +26,7 @@
 #include <linux/compiler.h>
 #include <linux/ctype.h>
 #include <linux/printk.h>
+#include <linux/string.h>
 #include <u-boot/crc.h>
 
 DECLARE_GLOBAL_DATA_PTR;
diff --git a/disk/part_iso.c b/disk/part_iso.c
index 822f2c4d9f4..a7d63d64e90 100644
--- a/disk/part_iso.c
+++ b/disk/part_iso.c
@@ -10,6 +10,7 @@
 #include <part.h>
 #include <asm/cache.h>
 #include <asm/unaligned.h>
+#include <linux/string.h>
 #include "part_iso.h"
 
 #ifdef CONFIG_HAVE_BLOCK_DEVICE
diff --git a/drivers/ata/ahci.c b/drivers/ata/ahci.c
index f251ee1b74a..271c2ddf4a8 100644
--- a/drivers/ata/ahci.c
+++ b/drivers/ata/ahci.c
@@ -15,6 +15,7 @@
 #include <time.h>
 #include <linux/bitops.h>
 #include <linux/delay.h>
+#include <linux/string.h>
 
 #include <command.h>
 #include <dm.h>
diff --git a/drivers/ata/dwc_ahsata.c b/drivers/ata/dwc_ahsata.c
index 562e982e32a..1ecae1d1c95 100644
--- a/drivers/ata/dwc_ahsata.c
+++ b/drivers/ata/dwc_ahsata.c
@@ -26,6 +26,7 @@
 #include <linux/ctype.h>
 #include <linux/delay.h>
 #include <linux/errno.h>
+#include <linux/string.h>
 #include "dwc_ahsata_priv.h"
 
 struct sata_port_regs {
diff --git a/drivers/ata/fsl_sata.c b/drivers/ata/fsl_sata.c
index 8c6726a6214..d2f802aff86 100644
--- a/drivers/ata/fsl_sata.c
+++ b/drivers/ata/fsl_sata.c
@@ -19,6 +19,7 @@
 #include <fis.h>
 #include <sata.h>
 #include <linux/delay.h>
+#include <linux/string.h>
 #include "fsl_sata.h"
 
 #if CONFIG_IS_ENABLED(BLK)
diff --git a/drivers/ata/libata.c b/drivers/ata/libata.c
index 47e2c5c1cc4..cdc83c75bb6 100644
--- a/drivers/ata/libata.c
+++ b/drivers/ata/libata.c
@@ -8,6 +8,7 @@
 #include <common.h>
 #include <compiler.h>
 #include <libata.h>
+#include <linux/string.h>
 
 u64 ata_id_n_sectors(u16 *id)
 {
diff --git a/drivers/ata/sata.c b/drivers/ata/sata.c
index 6a38d500245..fa17ee3ab48 100644
--- a/drivers/ata/sata.c
+++ b/drivers/ata/sata.c
@@ -15,6 +15,7 @@
 #include <dm.h>
 #include <part.h>
 #include <sata.h>
+#include <linux/string.h>
 
 #ifndef CONFIG_AHCI
 struct blk_desc sata_dev_desc[CONFIG_SYS_SATA_MAX_DEVICE];
diff --git a/drivers/ata/sata_mv.c b/drivers/ata/sata_mv.c
index 8071fe18a71..9554aeb137d 100644
--- a/drivers/ata/sata_mv.c
+++ b/drivers/ata/sata_mv.c
@@ -51,6 +51,7 @@
 #include <linux/errno.h>
 #include <asm/io.h>
 #include <linux/mbus.h>
+#include <linux/string.h>
 
 #include <asm/arch/soc.h>
 #if defined(CONFIG_ARCH_KIRKWOOD)
diff --git a/drivers/ata/sata_sil.c b/drivers/ata/sata_sil.c
index d5ba94c1725..c34af206669 100644
--- a/drivers/ata/sata_sil.c
+++ b/drivers/ata/sata_sil.c
@@ -18,6 +18,7 @@
 #include <libata.h>
 #include <sata.h>
 #include <linux/delay.h>
+#include <linux/string.h>
 
 #if CONFIG_IS_ENABLED(BLK)
 #include <dm.h>
diff --git a/drivers/bios_emulator/atibios.c b/drivers/bios_emulator/atibios.c
index 6c7cc24cbd9..3d1b22f1f54 100644
--- a/drivers/bios_emulator/atibios.c
+++ b/drivers/bios_emulator/atibios.c
@@ -53,6 +53,7 @@
 #include <malloc.h>
 #include <vbe.h>
 #include <linux/delay.h>
+#include <linux/string.h>
 #include "biosemui.h"
 
 /* Length of the BIOS image */
diff --git a/drivers/bios_emulator/biosemu.c b/drivers/bios_emulator/biosemu.c
index 9d4f07c074d..e605238d439 100644
--- a/drivers/bios_emulator/biosemu.c
+++ b/drivers/bios_emulator/biosemu.c
@@ -47,6 +47,7 @@
 
 #include <malloc.h>
 #include <common.h>
+#include <linux/string.h>
 #include "biosemui.h"
 
 BE_sysEnv _BE_env = {{0}};
diff --git a/drivers/bios_emulator/x86emu/debug.c b/drivers/bios_emulator/x86emu/debug.c
index 95f3cc09aad..1e4b6ba0c6b 100644
--- a/drivers/bios_emulator/x86emu/debug.c
+++ b/drivers/bios_emulator/x86emu/debug.c
@@ -41,6 +41,7 @@
 #include <common.h>
 #include <linux/ctype.h>
 #include <linux/printk.h>
+#include <linux/string.h>
 #include "x86emu/x86emui.h"
 
 /*----------------------------- Implementation ----------------------------*/
diff --git a/drivers/block/blk-uclass.c b/drivers/block/blk-uclass.c
index b19375cbc8d..777525530ee 100644
--- a/drivers/block/blk-uclass.c
+++ b/drivers/block/blk-uclass.c
@@ -14,6 +14,7 @@
 #include <dm/lists.h>
 #include <dm/uclass-internal.h>
 #include <linux/err.h>
+#include <linux/string.h>
 
 static const char *if_typename_str[IF_TYPE_COUNT] = {
 	[IF_TYPE_IDE]		= "ide",
diff --git a/drivers/block/blk_legacy.c b/drivers/block/blk_legacy.c
index e3ee778c29d..f812169a4f2 100644
--- a/drivers/block/blk_legacy.c
+++ b/drivers/block/blk_legacy.c
@@ -8,6 +8,7 @@
 #include <blk.h>
 #include <part.h>
 #include <linux/err.h>
+#include <linux/string.h>
 
 struct blk_driver *blk_driver_lookup_type(int if_type)
 {
diff --git a/drivers/block/blkcache.c b/drivers/block/blkcache.c
index b6fc72fe983..88bf3f6ce23 100644
--- a/drivers/block/blkcache.c
+++ b/drivers/block/blkcache.c
@@ -11,6 +11,7 @@
 #include <part.h>
 #include <linux/ctype.h>
 #include <linux/list.h>
+#include <linux/string.h>
 
 struct block_cache_node {
 	struct list_head lh;
diff --git a/drivers/block/ide.c b/drivers/block/ide.c
index a766b5cf036..01bf76d0023 100644
--- a/drivers/block/ide.c
+++ b/drivers/block/ide.c
@@ -14,6 +14,7 @@
 #include <watchdog.h>
 #include <asm/io.h>
 #include <linux/delay.h>
+#include <linux/string.h>
 
 #ifdef __PPC__
 # define EIEIO		__asm__ volatile ("eieio")
diff --git a/drivers/block/sandbox.c b/drivers/block/sandbox.c
index 11ebdd52d77..a3b2e77ef30 100644
--- a/drivers/block/sandbox.c
+++ b/drivers/block/sandbox.c
@@ -15,6 +15,7 @@
 #include <dm/device_compat.h>
 #include <linux/errno.h>
 #include <dm/device-internal.h>
+#include <linux/string.h>
 
 DECLARE_GLOBAL_DATA_PTR;
 
diff --git a/drivers/clk/altera/clk-arria10.c b/drivers/clk/altera/clk-arria10.c
index a2f105a415f..b05648e8a54 100644
--- a/drivers/clk/altera/clk-arria10.c
+++ b/drivers/clk/altera/clk-arria10.c
@@ -14,6 +14,7 @@
 #include <dm/lists.h>
 #include <dm/util.h>
 #include <linux/bitops.h>
+#include <linux/string.h>
 
 #include <asm/arch/clock_manager.h>
 
diff --git a/drivers/clk/clk-mux.c b/drivers/clk/clk-mux.c
index 8df2a2d01ac..075d4932a9c 100644
--- a/drivers/clk/clk-mux.c
+++ b/drivers/clk/clk-mux.c
@@ -31,6 +31,7 @@
 #include <linux/clk-provider.h>
 #include <clk.h>
 #include <linux/printk.h>
+#include <linux/string.h>
 #include "clk.h"
 #include <linux/err.h>
 
diff --git a/drivers/clk/clk_stm32f.c b/drivers/clk/clk_stm32f.c
index cc48905df54..45f5f567f8d 100644
--- a/drivers/clk/clk_stm32f.c
+++ b/drivers/clk/clk_stm32f.c
@@ -11,6 +11,7 @@
 #include <stm32_rcc.h>
 #include <linux/bitops.h>
 #include <linux/printk.h>
+#include <linux/string.h>
 
 #include <asm/io.h>
 #include <asm/arch/stm32.h>
diff --git a/drivers/clk/clk_versal.c b/drivers/clk/clk_versal.c
index 6f82b60f04d..7a04d68f8dd 100644
--- a/drivers/clk/clk_versal.c
+++ b/drivers/clk/clk_versal.c
@@ -18,6 +18,7 @@
 #include <asm/arch/sys_proto.h>
 #include <zynqmp_firmware.h>
 #include <linux/err.h>
+#include <linux/string.h>
 
 #define MAX_PARENT			100
 #define MAX_NODES			6
diff --git a/drivers/clk/mvebu/armada-37xx-periph.c b/drivers/clk/mvebu/armada-37xx-periph.c
index 223da22c1b6..30710040ff9 100644
--- a/drivers/clk/mvebu/armada-37xx-periph.c
+++ b/drivers/clk/mvebu/armada-37xx-periph.c
@@ -17,6 +17,7 @@
 #include <asm/arch/cpu.h>
 #include <dm/device_compat.h>
 #include <linux/bitops.h>
+#include <linux/string.h>
 
 #define TBG_SEL		0x0
 #define DIV_SEL0	0x4
diff --git a/drivers/clk/renesas/clk-rcar-gen2.c b/drivers/clk/renesas/clk-rcar-gen2.c
index b423c9414b2..cbf2ffe6e85 100644
--- a/drivers/clk/renesas/clk-rcar-gen2.c
+++ b/drivers/clk/renesas/clk-rcar-gen2.c
@@ -17,6 +17,7 @@
 #include <log.h>
 #include <asm/global_data.h>
 #include <asm/io.h>
+#include <linux/string.h>
 
 #include <dt-bindings/clock/renesas-cpg-mssr.h>
 
diff --git a/drivers/clk/rockchip/clk_rk322x.c b/drivers/clk/rockchip/clk_rk322x.c
index 054b2fd349b..b63fb9b3cca 100644
--- a/drivers/clk/rockchip/clk_rk322x.c
+++ b/drivers/clk/rockchip/clk_rk322x.c
@@ -19,6 +19,7 @@
 #include <linux/bitops.h>
 #include <linux/delay.h>
 #include <linux/log2.h>
+#include <linux/string.h>
 #include <linux/stringify.h>
 
 enum {
diff --git a/drivers/clk/rockchip/clk_rk3288.c b/drivers/clk/rockchip/clk_rk3288.c
index be1f646c070..a3c5bbf1f6b 100644
--- a/drivers/clk/rockchip/clk_rk3288.c
+++ b/drivers/clk/rockchip/clk_rk3288.c
@@ -28,6 +28,7 @@
 #include <linux/delay.h>
 #include <linux/err.h>
 #include <linux/log2.h>
+#include <linux/string.h>
 #include <linux/stringify.h>
 
 DECLARE_GLOBAL_DATA_PTR;
diff --git a/drivers/clk/rockchip/clk_rk3328.c b/drivers/clk/rockchip/clk_rk3328.c
index bf4f1069ea6..e04042f0bd9 100644
--- a/drivers/clk/rockchip/clk_rk3328.c
+++ b/drivers/clk/rockchip/clk_rk3328.c
@@ -20,6 +20,7 @@
 #include <dt-bindings/clock/rk3328-cru.h>
 #include <linux/bitops.h>
 #include <linux/delay.h>
+#include <linux/string.h>
 
 struct pll_div {
 	u32 refdiv;
diff --git a/drivers/clk/rockchip/clk_rk3368.c b/drivers/clk/rockchip/clk_rk3368.c
index b87be9a0341..586639344d0 100644
--- a/drivers/clk/rockchip/clk_rk3368.c
+++ b/drivers/clk/rockchip/clk_rk3368.c
@@ -23,6 +23,7 @@
 #include <dt-bindings/clock/rk3368-cru.h>
 #include <linux/delay.h>
 #include <linux/printk.h>
+#include <linux/string.h>
 #include <linux/stringify.h>
 
 #if CONFIG_IS_ENABLED(OF_PLATDATA)
diff --git a/drivers/clk/rockchip/clk_rk3399.c b/drivers/clk/rockchip/clk_rk3399.c
index e3d1438d54f..c2eaf67f58f 100644
--- a/drivers/clk/rockchip/clk_rk3399.c
+++ b/drivers/clk/rockchip/clk_rk3399.c
@@ -23,6 +23,7 @@
 #include <linux/bitops.h>
 #include <linux/delay.h>
 #include <linux/printk.h>
+#include <linux/string.h>
 
 #if CONFIG_IS_ENABLED(OF_PLATDATA)
 struct rk3399_clk_plat {
diff --git a/drivers/clk/sifive/fu540-prci.c b/drivers/clk/sifive/fu540-prci.c
index fe6e0d4073f..6cb56d21acd 100644
--- a/drivers/clk/sifive/fu540-prci.c
+++ b/drivers/clk/sifive/fu540-prci.c
@@ -37,6 +37,7 @@
 #include <errno.h>
 #include <linux/delay.h>
 #include <linux/err.h>
+#include <linux/string.h>
 
 #include <linux/math64.h>
 #include <linux/clk/analogbits-wrpll-cln28hpc.h>
diff --git a/drivers/core/acpi.c b/drivers/core/acpi.c
index 99c0da500eb..a28b56a7333 100644
--- a/drivers/core/acpi.c
+++ b/drivers/core/acpi.c
@@ -17,6 +17,7 @@
 #include <dm/acpi.h>
 #include <dm/device-internal.h>
 #include <dm/root.h>
+#include <linux/string.h>
 
 #define MAX_ACPI_ITEMS	100
 
diff --git a/drivers/core/device.c b/drivers/core/device.c
index dd0874e762d..29b71e24055 100644
--- a/drivers/core/device.c
+++ b/drivers/core/device.c
@@ -32,6 +32,7 @@
 #include <linux/list.h>
 #include <power-domain.h>
 #include <linux/printk.h>
+#include <linux/string.h>
 
 DECLARE_GLOBAL_DATA_PTR;
 
diff --git a/drivers/core/lists.c b/drivers/core/lists.c
index 5beba9181cc..86a99abfaae 100644
--- a/drivers/core/lists.c
+++ b/drivers/core/lists.c
@@ -19,6 +19,7 @@
 #include <dm/util.h>
 #include <fdtdec.h>
 #include <linux/compiler.h>
+#include <linux/string.h>
 
 struct driver *lists_driver_lookup_name(const char *name)
 {
diff --git a/drivers/core/of_access.c b/drivers/core/of_access.c
index c23763726bb..26f240b022c 100644
--- a/drivers/core/of_access.c
+++ b/drivers/core/of_access.c
@@ -29,6 +29,7 @@
 #include <linux/ctype.h>
 #include <linux/err.h>
 #include <linux/ioport.h>
+#include <linux/string.h>
 
 DECLARE_GLOBAL_DATA_PTR;
 
diff --git a/drivers/core/of_addr.c b/drivers/core/of_addr.c
index 3a67d9bc760..6316b651534 100644
--- a/drivers/core/of_addr.c
+++ b/drivers/core/of_addr.c
@@ -15,6 +15,7 @@
 #include <linux/err.h>
 #include <linux/ioport.h>
 #include <linux/printk.h>
+#include <linux/string.h>
 
 /* Max address size we deal with */
 #define OF_MAX_ADDR_CELLS	4
diff --git a/drivers/core/of_extra.c b/drivers/core/of_extra.c
index 6420e6ec448..f6597c27350 100644
--- a/drivers/core/of_extra.c
+++ b/drivers/core/of_extra.c
@@ -10,6 +10,7 @@
 #include <dm/of_access.h>
 #include <dm/of_extra.h>
 #include <dm/ofnode.h>
+#include <linux/string.h>
 
 int ofnode_read_fmap_entry(ofnode node, struct fmap_entry *entry)
 {
diff --git a/drivers/core/ofnode.c b/drivers/core/ofnode.c
index a49a54c60f9..31c1d67fe2c 100644
--- a/drivers/core/ofnode.c
+++ b/drivers/core/ofnode.c
@@ -17,6 +17,7 @@
 #include <dm/ofnode.h>
 #include <linux/err.h>
 #include <linux/ioport.h>
+#include <linux/string.h>
 
 int ofnode_read_u32(ofnode node, const char *propname, u32 *outp)
 {
diff --git a/drivers/core/uclass.c b/drivers/core/uclass.c
index 95c37db5ad0..98fdb014222 100644
--- a/drivers/core/uclass.c
+++ b/drivers/core/uclass.c
@@ -20,6 +20,7 @@
 #include <dm/uclass.h>
 #include <dm/uclass-internal.h>
 #include <dm/util.h>
+#include <linux/string.h>
 
 DECLARE_GLOBAL_DATA_PTR;
 
diff --git a/drivers/cpu/cpu-uclass.c b/drivers/cpu/cpu-uclass.c
index 37e3cf2d8ff..58c8f833c6f 100644
--- a/drivers/cpu/cpu-uclass.c
+++ b/drivers/cpu/cpu-uclass.c
@@ -12,6 +12,7 @@
 #include <dm/lists.h>
 #include <dm/root.h>
 #include <linux/err.h>
+#include <linux/string.h>
 
 int cpu_probe_all(void)
 {
diff --git a/drivers/cpu/cpu_sandbox.c b/drivers/cpu/cpu_sandbox.c
index caa26e50f28..7c5ccaa0d00 100644
--- a/drivers/cpu/cpu_sandbox.c
+++ b/drivers/cpu/cpu_sandbox.c
@@ -7,6 +7,7 @@
 #include <common.h>
 #include <dm.h>
 #include <cpu.h>
+#include <linux/string.h>
 
 int cpu_sandbox_get_desc(const struct udevice *dev, char *buf, int size)
 {
diff --git a/drivers/cpu/imx8_cpu.c b/drivers/cpu/imx8_cpu.c
index aca14157ad5..21ccc1ce31d 100644
--- a/drivers/cpu/imx8_cpu.c
+++ b/drivers/cpu/imx8_cpu.c
@@ -14,6 +14,7 @@
 #include <asm/arch-imx/cpu.h>
 #include <asm/armv8/cpu.h>
 #include <linux/bitops.h>
+#include <linux/string.h>
 
 DECLARE_GLOBAL_DATA_PTR;
 
diff --git a/drivers/cpu/riscv_cpu.c b/drivers/cpu/riscv_cpu.c
index 3c7395a9f20..fcf487d73d0 100644
--- a/drivers/cpu/riscv_cpu.c
+++ b/drivers/cpu/riscv_cpu.c
@@ -15,6 +15,7 @@
 #include <dm/lists.h>
 #include <linux/bitops.h>
 #include <linux/err.h>
+#include <linux/string.h>
 
 DECLARE_GLOBAL_DATA_PTR;
 
diff --git a/drivers/crypto/ace_sha.c b/drivers/crypto/ace_sha.c
index 261d3efe84e..0b07ae5fd71 100644
--- a/drivers/crypto/ace_sha.c
+++ b/drivers/crypto/ace_sha.c
@@ -4,6 +4,7 @@
  * Copyright (c) 2012  Samsung Electronics
  */
 #include <common.h>
+#include <linux/string.h>
 #include "ace_sha.h"
 #include <log.h>
 #include <rand.h>
diff --git a/drivers/crypto/fsl/desc_constr.h b/drivers/crypto/fsl/desc_constr.h
index b82ba83e73a..ef4cd525e3a 100644
--- a/drivers/crypto/fsl/desc_constr.h
+++ b/drivers/crypto/fsl/desc_constr.h
@@ -8,6 +8,7 @@
  */
 
 #include <linux/compat.h>
+#include <linux/string.h>
 #include "desc.h"
 
 #define IMMEDIATE (1 << 23)
diff --git a/drivers/crypto/fsl/error.c b/drivers/crypto/fsl/error.c
index c76574919c7..d19685b0ec4 100644
--- a/drivers/crypto/fsl/error.c
+++ b/drivers/crypto/fsl/error.c
@@ -10,6 +10,7 @@
 #include <common.h>
 #include <log.h>
 #include <malloc.h>
+#include <linux/string.h>
 #include "desc.h"
 #include "jr.h"
 
diff --git a/drivers/crypto/fsl/fsl_hash.c b/drivers/crypto/fsl/fsl_hash.c
index 61f953e8a6d..5182f21acb2 100644
--- a/drivers/crypto/fsl/fsl_hash.c
+++ b/drivers/crypto/fsl/fsl_hash.c
@@ -9,6 +9,7 @@
 #include <log.h>
 #include <malloc.h>
 #include <memalign.h>
+#include <linux/string.h>
 #include "jobdesc.h"
 #include "desc.h"
 #include "jr.h"
diff --git a/drivers/crypto/fsl/jobdesc.c b/drivers/crypto/fsl/jobdesc.c
index fbc1aeddeeb..17777e5551d 100644
--- a/drivers/crypto/fsl/jobdesc.c
+++ b/drivers/crypto/fsl/jobdesc.c
@@ -10,6 +10,7 @@
 #include <common.h>
 #include <cpu_func.h>
 #include <fsl_sec.h>
+#include <linux/string.h>
 #include "desc_constr.h"
 #include "jobdesc.h"
 #include "rsa_caam.h"
diff --git a/drivers/crypto/fsl/jr.c b/drivers/crypto/fsl/jr.c
index 44273c345f9..afca79dfc0a 100644
--- a/drivers/crypto/fsl/jr.c
+++ b/drivers/crypto/fsl/jr.c
@@ -10,6 +10,7 @@
 #include <linux/kernel.h>
 #include <log.h>
 #include <malloc.h>
+#include <linux/string.h>
 #include "fsl_sec.h"
 #include "jr.h"
 #include "jobdesc.h"
diff --git a/drivers/crypto/fsl/rng.c b/drivers/crypto/fsl/rng.c
index 3c0c2b067f3..e4a952caeec 100644
--- a/drivers/crypto/fsl/rng.c
+++ b/drivers/crypto/fsl/rng.c
@@ -12,6 +12,7 @@
 #include <dm.h>
 #include <rng.h>
 #include <linux/kernel.h>
+#include <linux/string.h>
 #include "desc_constr.h"
 #include "jobdesc.h"
 #include "jr.h"
diff --git a/drivers/ddr/altera/sdram_arria10.c b/drivers/ddr/altera/sdram_arria10.c
index 4a8f8dea1c4..b2053bf412c 100644
--- a/drivers/ddr/altera/sdram_arria10.c
+++ b/drivers/ddr/altera/sdram_arria10.c
@@ -22,6 +22,7 @@
 #include <linux/bitops.h>
 #include <linux/delay.h>
 #include <linux/kernel.h>
+#include <linux/string.h>
 
 DECLARE_GLOBAL_DATA_PTR;
 
diff --git a/drivers/ddr/altera/sdram_gen5.c b/drivers/ddr/altera/sdram_gen5.c
index 1360bd0a3b8..52cde7d409b 100644
--- a/drivers/ddr/altera/sdram_gen5.c
+++ b/drivers/ddr/altera/sdram_gen5.c
@@ -18,6 +18,7 @@
 #include <asm/bitops.h>
 #include <asm/io.h>
 #include <dm/device_compat.h>
+#include <linux/string.h>
 
 #include "sequencer.h"
 
diff --git a/drivers/ddr/altera/sdram_soc64.c b/drivers/ddr/altera/sdram_soc64.c
index 66dad034fa2..1312244ae52 100644
--- a/drivers/ddr/altera/sdram_soc64.c
+++ b/drivers/ddr/altera/sdram_soc64.c
@@ -17,6 +17,7 @@
 #include <reset.h>
 #include <time.h>
 #include <asm/global_data.h>
+#include <linux/string.h>
 #include "sdram_soc64.h"
 #include <wait_bit.h>
 #include <asm/arch/firewall.h>
diff --git a/drivers/ddr/altera/sequencer.c b/drivers/ddr/altera/sequencer.c
index 2dbde49a9c3..7c54f001825 100644
--- a/drivers/ddr/altera/sequencer.c
+++ b/drivers/ddr/altera/sequencer.c
@@ -9,6 +9,7 @@
 #include <asm/arch/sdram.h>
 #include <errno.h>
 #include <hang.h>
+#include <linux/string.h>
 #include "sequencer.h"
 
 static const struct socfpga_sdr_rw_load_manager *sdr_rw_load_mgr_regs =
diff --git a/drivers/ddr/fsl/ctrl_regs.c b/drivers/ddr/fsl/ctrl_regs.c
index c849ef3a4c7..247587c646b 100644
--- a/drivers/ddr/fsl/ctrl_regs.c
+++ b/drivers/ddr/fsl/ctrl_regs.c
@@ -22,6 +22,7 @@
 	defined(CONFIG_ARM)
 #include <asm/arch/clock.h>
 #endif
+#include <linux/string.h>
 
 /*
  * Determine Rtt value.
diff --git a/drivers/ddr/fsl/ddr1_dimm_params.c b/drivers/ddr/fsl/ddr1_dimm_params.c
index e5481eaa0dd..2ccf1e82f9a 100644
--- a/drivers/ddr/fsl/ddr1_dimm_params.c
+++ b/drivers/ddr/fsl/ddr1_dimm_params.c
@@ -7,6 +7,7 @@
 #include <fsl_ddr_sdram.h>
 #include <log.h>
 #include <asm/bitops.h>
+#include <linux/string.h>
 
 #include <fsl_ddr.h>
 
diff --git a/drivers/ddr/fsl/ddr2_dimm_params.c b/drivers/ddr/fsl/ddr2_dimm_params.c
index 3b78118a9d8..9ee2dfc2455 100644
--- a/drivers/ddr/fsl/ddr2_dimm_params.c
+++ b/drivers/ddr/fsl/ddr2_dimm_params.c
@@ -7,6 +7,7 @@
 #include <fsl_ddr_sdram.h>
 #include <log.h>
 #include <asm/bitops.h>
+#include <linux/string.h>
 
 #include <fsl_ddr.h>
 /*
diff --git a/drivers/ddr/fsl/ddr3_dimm_params.c b/drivers/ddr/fsl/ddr3_dimm_params.c
index 8464438c544..d0625ea0e1b 100644
--- a/drivers/ddr/fsl/ddr3_dimm_params.c
+++ b/drivers/ddr/fsl/ddr3_dimm_params.c
@@ -11,6 +11,7 @@
 #include <common.h>
 #include <fsl_ddr_sdram.h>
 #include <log.h>
+#include <linux/string.h>
 
 #include <fsl_ddr.h>
 
diff --git a/drivers/ddr/fsl/ddr4_dimm_params.c b/drivers/ddr/fsl/ddr4_dimm_params.c
index e2bdc12ef2c..37e43dc8f17 100644
--- a/drivers/ddr/fsl/ddr4_dimm_params.c
+++ b/drivers/ddr/fsl/ddr4_dimm_params.c
@@ -14,6 +14,7 @@
 #include <fsl_ddr_sdram.h>
 #include <log.h>
 #include <linux/bug.h>
+#include <linux/string.h>
 
 #include <fsl_ddr.h>
 
diff --git a/drivers/ddr/fsl/interactive.c b/drivers/ddr/fsl/interactive.c
index 2f76beb2dbe..3736ea129a7 100644
--- a/drivers/ddr/fsl/interactive.c
+++ b/drivers/ddr/fsl/interactive.c
@@ -20,6 +20,7 @@
 #include <linux/ctype.h>
 #include <asm/types.h>
 #include <asm/io.h>
+#include <linux/string.h>
 
 #include <fsl_ddr_sdram.h>
 #include <fsl_ddr.h>
diff --git a/drivers/ddr/fsl/main.c b/drivers/ddr/fsl/main.c
index f5299fe3111..5b2ddc3893a 100644
--- a/drivers/ddr/fsl/main.c
+++ b/drivers/ddr/fsl/main.c
@@ -18,6 +18,7 @@
 #include <init.h>
 #include <log.h>
 #include <asm/bitops.h>
+#include <linux/string.h>
 
 /*
  * CONFIG_SYS_FSL_DDR_SDRAM_BASE_PHY is the physical address from the view
diff --git a/drivers/ddr/marvell/axp/ddr3_hw_training.c b/drivers/ddr/marvell/axp/ddr3_hw_training.c
index 35d98faf58f..c39f40095fc 100644
--- a/drivers/ddr/marvell/axp/ddr3_hw_training.c
+++ b/drivers/ddr/marvell/axp/ddr3_hw_training.c
@@ -11,6 +11,7 @@
 #include <asm/arch/cpu.h>
 #include <asm/arch/soc.h>
 #include <linux/delay.h>
+#include <linux/string.h>
 
 #include "ddr3_init.h"
 #include "ddr3_hw_training.h"
diff --git a/drivers/ddr/marvell/axp/ddr3_pbs.c b/drivers/ddr/marvell/axp/ddr3_pbs.c
index 069a42fbf5e..a963b3c55be 100644
--- a/drivers/ddr/marvell/axp/ddr3_pbs.c
+++ b/drivers/ddr/marvell/axp/ddr3_pbs.c
@@ -10,6 +10,7 @@
 #include <asm/arch/cpu.h>
 #include <asm/arch/soc.h>
 #include <linux/delay.h>
+#include <linux/string.h>
 
 #include "ddr3_hw_training.h"
 
diff --git a/drivers/ddr/marvell/axp/ddr3_spd.c b/drivers/ddr/marvell/axp/ddr3_spd.c
index e2305d88145..8927abe17ef 100644
--- a/drivers/ddr/marvell/axp/ddr3_spd.c
+++ b/drivers/ddr/marvell/axp/ddr3_spd.c
@@ -9,6 +9,7 @@
 #include <asm/io.h>
 #include <asm/arch/cpu.h>
 #include <asm/arch/soc.h>
+#include <linux/string.h>
 
 #include "ddr3_init.h"
 
diff --git a/drivers/ddr/marvell/axp/ddr3_write_leveling.c b/drivers/ddr/marvell/axp/ddr3_write_leveling.c
index d4add447774..de8dfc299f7 100644
--- a/drivers/ddr/marvell/axp/ddr3_write_leveling.c
+++ b/drivers/ddr/marvell/axp/ddr3_write_leveling.c
@@ -11,6 +11,7 @@
 #include <asm/arch/cpu.h>
 #include <asm/arch/soc.h>
 #include <linux/delay.h>
+#include <linux/string.h>
 
 #include "ddr3_hw_training.h"
 
diff --git a/drivers/dfu/dfu.c b/drivers/dfu/dfu.c
index 3d5de92ecae..5dc5f80854e 100644
--- a/drivers/dfu/dfu.c
+++ b/drivers/dfu/dfu.c
@@ -18,6 +18,7 @@
 #include <linux/list.h>
 #include <linux/compiler.h>
 #include <linux/printk.h>
+#include <linux/string.h>
 
 static LIST_HEAD(dfu_list);
 static int dfu_alt_num;
diff --git a/drivers/dfu/dfu_mmc.c b/drivers/dfu/dfu_mmc.c
index ac5ea2c7d79..0fd69d0d1e4 100644
--- a/drivers/dfu/dfu_mmc.c
+++ b/drivers/dfu/dfu_mmc.c
@@ -17,6 +17,7 @@
 #include <mmc.h>
 #include <part.h>
 #include <linux/printk.h>
+#include <linux/string.h>
 
 static unsigned char *dfu_file_buf;
 static u64 dfu_file_buf_len;
diff --git a/drivers/dfu/dfu_mtd.c b/drivers/dfu/dfu_mtd.c
index 36cd4e945b2..861a0b370e0 100644
--- a/drivers/dfu/dfu_mtd.c
+++ b/drivers/dfu/dfu_mtd.c
@@ -12,6 +12,7 @@
 #include <mtd.h>
 #include <jffs2/load_kernel.h>
 #include <linux/err.h>
+#include <linux/string.h>
 
 static bool mtd_is_aligned_with_block_size(struct mtd_info *mtd, u64 size)
 {
diff --git a/drivers/dfu/dfu_nand.c b/drivers/dfu/dfu_nand.c
index b8d24d203be..38f46b2f412 100644
--- a/drivers/dfu/dfu_nand.c
+++ b/drivers/dfu/dfu_nand.c
@@ -18,6 +18,7 @@
 #include <linux/mtd/mtd.h>
 #include <jffs2/load_kernel.h>
 #include <nand.h>
+#include <linux/string.h>
 
 static int nand_block_op(enum dfu_op op, struct dfu_entity *dfu,
 			u64 offset, void *buf, long *len)
diff --git a/drivers/dfu/dfu_ram.c b/drivers/dfu/dfu_ram.c
index 9b3b71975a1..b2a5b62d425 100644
--- a/drivers/dfu/dfu_ram.c
+++ b/drivers/dfu/dfu_ram.c
@@ -13,6 +13,7 @@
 #include <errno.h>
 #include <dfu.h>
 #include <linux/printk.h>
+#include <linux/string.h>
 
 static int dfu_transfer_medium_ram(enum dfu_op op, struct dfu_entity *dfu,
 				   u64 offset, void *buf, long *len)
diff --git a/drivers/dfu/dfu_sf.c b/drivers/dfu/dfu_sf.c
index 318e43c179b..20e1c286902 100644
--- a/drivers/dfu/dfu_sf.c
+++ b/drivers/dfu/dfu_sf.c
@@ -13,6 +13,7 @@
 #include <spi_flash.h>
 #include <jffs2/load_kernel.h>
 #include <linux/mtd/mtd.h>
+#include <linux/string.h>
 
 static int dfu_get_medium_size_sf(struct dfu_entity *dfu, u64 *size)
 {
diff --git a/drivers/dfu/dfu_tftp.c b/drivers/dfu/dfu_tftp.c
index 0f2c114668e..efa25d86f22 100644
--- a/drivers/dfu/dfu_tftp.c
+++ b/drivers/dfu/dfu_tftp.c
@@ -10,6 +10,7 @@
 #include <errno.h>
 #include <dfu.h>
 #include <linux/printk.h>
+#include <linux/string.h>
 
 int dfu_tftp_write(char *dfu_entity_name, unsigned int addr, unsigned int len,
 		   char *interface, char *devstring)
diff --git a/drivers/dma/apbh_dma.c b/drivers/dma/apbh_dma.c
index da988f6bb66..a2a76aba84a 100644
--- a/drivers/dma/apbh_dma.c
+++ b/drivers/dma/apbh_dma.c
@@ -14,6 +14,7 @@
 #include <cpu_func.h>
 #include <asm/cache.h>
 #include <linux/list.h>
+#include <linux/string.h>
 
 #include <common.h>
 #include <malloc.h>
diff --git a/drivers/dma/keystone_nav.c b/drivers/dma/keystone_nav.c
index 443e4b23669..72b0a7736fc 100644
--- a/drivers/dma/keystone_nav.c
+++ b/drivers/dma/keystone_nav.c
@@ -9,6 +9,7 @@
 #include <asm/io.h>
 #include <asm/ti-common/keystone_nav.h>
 #include <linux/delay.h>
+#include <linux/string.h>
 
 struct qm_config qm_memmap = {
 	.stat_cfg	= CONFIG_KSNAV_QM_QUEUE_STATUS_BASE,
diff --git a/drivers/dma/sandbox-dma-test.c b/drivers/dma/sandbox-dma-test.c
index 18e8fe3806c..f479f2a79e3 100644
--- a/drivers/dma/sandbox-dma-test.c
+++ b/drivers/dma/sandbox-dma-test.c
@@ -16,6 +16,7 @@
 #include <dt-structs.h>
 #include <errno.h>
 #include <linux/printk.h>
+#include <linux/string.h>
 
 #define SANDBOX_DMA_CH_CNT 3
 #define SANDBOX_DMA_BUF_SIZE 1024
diff --git a/drivers/dma/ti-edma3.c b/drivers/dma/ti-edma3.c
index c73ab579cf6..aba4efc15c2 100644
--- a/drivers/dma/ti-edma3.c
+++ b/drivers/dma/ti-edma3.c
@@ -16,6 +16,7 @@
 #include <asm/omap_common.h>
 #include <asm/ti-common/ti-edma3.h>
 #include <linux/printk.h>
+#include <linux/string.h>
 
 #define EDMA3_SL_BASE(slot)			(0x4000 + ((slot) << 5))
 #define EDMA3_SL_MAX_NUM			512
diff --git a/drivers/dma/ti/k3-udma.c b/drivers/dma/ti/k3-udma.c
index 9de0258ed1d..aa835498d29 100644
--- a/drivers/dma/ti/k3-udma.c
+++ b/drivers/dma/ti/k3-udma.c
@@ -29,6 +29,7 @@
 #include <linux/soc/ti/cppi5.h>
 #include <linux/soc/ti/ti-udma.h>
 #include <linux/soc/ti/ti_sci_protocol.h>
+#include <linux/string.h>
 
 #include "k3-udma-hwdef.h"
 #include "k3-psil-priv.h"
diff --git a/drivers/fastboot/fb_command.c b/drivers/fastboot/fb_command.c
index 42c8fb83433..699fc52fc1c 100644
--- a/drivers/fastboot/fb_command.c
+++ b/drivers/fastboot/fb_command.c
@@ -14,6 +14,7 @@
 #include <part.h>
 #include <stdlib.h>
 #include <linux/printk.h>
+#include <linux/string.h>
 
 /**
  * image_size - final fastboot image size
diff --git a/drivers/fastboot/fb_common.c b/drivers/fastboot/fb_common.c
index c3735a44af7..3c8338f7c68 100644
--- a/drivers/fastboot/fb_common.c
+++ b/drivers/fastboot/fb_common.c
@@ -14,6 +14,7 @@
 #include <command.h>
 #include <env.h>
 #include <fastboot.h>
+#include <linux/string.h>
 #include <net/fastboot.h>
 
 /**
diff --git a/drivers/fastboot/fb_getvar.c b/drivers/fastboot/fb_getvar.c
index faa785481ad..a7881cc7196 100644
--- a/drivers/fastboot/fb_getvar.c
+++ b/drivers/fastboot/fb_getvar.c
@@ -13,6 +13,7 @@
 #include <part.h>
 #include <version.h>
 #include <linux/printk.h>
+#include <linux/string.h>
 
 static void getvar_version(char *var_parameter, char *response);
 static void getvar_version_bootloader(char *var_parameter, char *response);
diff --git a/drivers/fastboot/fb_mmc.c b/drivers/fastboot/fb_mmc.c
index d285d0f14fd..3512e2191f0 100644
--- a/drivers/fastboot/fb_mmc.c
+++ b/drivers/fastboot/fb_mmc.c
@@ -20,6 +20,7 @@
 #include <linux/compat.h>
 #include <android_image.h>
 #include <linux/printk.h>
+#include <linux/string.h>
 
 #define FASTBOOT_MAX_BLK_WRITE 16384
 
diff --git a/drivers/fastboot/fb_nand.c b/drivers/fastboot/fb_nand.c
index 1bf7ccb960b..c048600d44a 100644
--- a/drivers/fastboot/fb_nand.c
+++ b/drivers/fastboot/fb_nand.c
@@ -9,6 +9,7 @@
 #include <blk.h>
 #include <flash.h>
 #include <linux/printk.h>
+#include <linux/string.h>
 
 #include <fastboot.h>
 #include <image-sparse.h>
diff --git a/drivers/firmware/psci.c b/drivers/firmware/psci.c
index 23cf807591c..9f4a936ecb6 100644
--- a/drivers/firmware/psci.c
+++ b/drivers/firmware/psci.c
@@ -19,6 +19,7 @@
 #include <linux/errno.h>
 #include <linux/printk.h>
 #include <linux/psci.h>
+#include <linux/string.h>
 
 #define DRIVER_NAME "psci"
 
diff --git a/drivers/firmware/ti_sci.c b/drivers/firmware/ti_sci.c
index 15f5b0b14cc..1a38526d80a 100644
--- a/drivers/firmware/ti_sci.c
+++ b/drivers/firmware/ti_sci.c
@@ -21,6 +21,7 @@
 #include <linux/err.h>
 #include <linux/soc/ti/k3-sec-proxy.h>
 #include <linux/soc/ti/ti_sci_protocol.h>
+#include <linux/string.h>
 
 #include "ti_sci.h"
 
diff --git a/drivers/fpga/fpga.c b/drivers/fpga/fpga.c
index fe3dfa12335..4140c825452 100644
--- a/drivers/fpga/fpga.c
+++ b/drivers/fpga/fpga.c
@@ -12,6 +12,7 @@
 #include <altera.h>             /* altera specific definitions */
 #include <lattice.h>
 #include <dm/device_compat.h>
+#include <linux/string.h>
 
 /* Local definitions */
 #ifndef CONFIG_MAX_FPGA_DEVICES
diff --git a/drivers/fpga/socfpga_arria10.c b/drivers/fpga/socfpga_arria10.c
index 46018ebe7c6..89b338b6968 100644
--- a/drivers/fpga/socfpga_arria10.c
+++ b/drivers/fpga/socfpga_arria10.c
@@ -22,6 +22,7 @@
 #include <watchdog.h>
 #include <linux/bitops.h>
 #include <linux/delay.h>
+#include <linux/string.h>
 
 #define CFGWDTH_32	1
 #define MIN_BITSTREAM_SIZECHECK	230
diff --git a/drivers/fpga/stratix10.c b/drivers/fpga/stratix10.c
index bae31c3db1e..84f453f76e0 100644
--- a/drivers/fpga/stratix10.c
+++ b/drivers/fpga/stratix10.c
@@ -9,6 +9,7 @@
 #include <time.h>
 #include <asm/arch/mailbox_s10.h>
 #include <linux/delay.h>
+#include <linux/string.h>
 
 #define RECONFIG_STATUS_POLL_RESP_TIMEOUT_MS		60000
 #define RECONFIG_STATUS_INTERVAL_DELAY_US		1000000
diff --git a/drivers/fpga/versalpl.c b/drivers/fpga/versalpl.c
index 8e2ef4f0da9..5d67ce215ce 100644
--- a/drivers/fpga/versalpl.c
+++ b/drivers/fpga/versalpl.c
@@ -12,6 +12,7 @@
 #include <versalpl.h>
 #include <zynqmp_firmware.h>
 #include <asm/cache.h>
+#include <linux/string.h>
 
 static ulong versal_align_dma_buffer(ulong *buf, u32 len)
 {
diff --git a/drivers/fpga/xilinx.c b/drivers/fpga/xilinx.c
index cbebefb55fe..d9f3b82a40e 100644
--- a/drivers/fpga/xilinx.c
+++ b/drivers/fpga/xilinx.c
@@ -18,6 +18,7 @@
 #include <spartan2.h>
 #include <spartan3.h>
 #include <zynqpl.h>
+#include <linux/string.h>
 
 /* Local Static Functions */
 static int xilinx_validate(xilinx_desc *desc, char *fn);
diff --git a/drivers/gpio/74x164_gpio.c b/drivers/gpio/74x164_gpio.c
index 045685fcd9c..6d497613cc4 100644
--- a/drivers/gpio/74x164_gpio.c
+++ b/drivers/gpio/74x164_gpio.c
@@ -19,6 +19,7 @@
 #include <dm/device_compat.h>
 #include <dt-bindings/gpio/gpio.h>
 #include <spi.h>
+#include <linux/string.h>
 
 DECLARE_GLOBAL_DATA_PTR;
 
diff --git a/drivers/gpio/adi_gpio2.c b/drivers/gpio/adi_gpio2.c
index d0849c85c3b..8d4ee813985 100644
--- a/drivers/gpio/adi_gpio2.c
+++ b/drivers/gpio/adi_gpio2.c
@@ -12,6 +12,7 @@
 #include <linux/bug.h>
 #include <linux/errno.h>
 #include <asm/gpio.h>
+#include <linux/string.h>
 
 #define RESOURCE_LABEL_SIZE	16
 
diff --git a/drivers/gpio/axp_gpio.c b/drivers/gpio/axp_gpio.c
index 73058cf40b4..88993b643e2 100644
--- a/drivers/gpio/axp_gpio.c
+++ b/drivers/gpio/axp_gpio.c
@@ -15,6 +15,7 @@
 #include <dm/lists.h>
 #include <dm/root.h>
 #include <errno.h>
+#include <linux/string.h>
 
 static int axp_gpio_set_value(struct udevice *dev, unsigned pin, int val);
 
diff --git a/drivers/gpio/da8xx_gpio.c b/drivers/gpio/da8xx_gpio.c
index 614c489e45d..0f39972ceeb 100644
--- a/drivers/gpio/da8xx_gpio.c
+++ b/drivers/gpio/da8xx_gpio.c
@@ -14,6 +14,7 @@
 #include <asm/io.h>
 #include <asm/gpio.h>
 #include <dt-bindings/gpio/gpio.h>
+#include <linux/string.h>
 
 #include "da8xx_gpio.h"
 
diff --git a/drivers/gpio/gpio-uclass.c b/drivers/gpio/gpio-uclass.c
index 36de7bc7cc6..28f4a48900f 100644
--- a/drivers/gpio/gpio-uclass.c
+++ b/drivers/gpio/gpio-uclass.c
@@ -19,6 +19,7 @@
 #include <dm/device_compat.h>
 #include <linux/bug.h>
 #include <linux/ctype.h>
+#include <linux/string.h>
 
 DECLARE_GLOBAL_DATA_PTR;
 
diff --git a/drivers/gpio/hi6220_gpio.c b/drivers/gpio/hi6220_gpio.c
index 95de2ae3660..06151d21fba 100644
--- a/drivers/gpio/hi6220_gpio.c
+++ b/drivers/gpio/hi6220_gpio.c
@@ -10,6 +10,7 @@
 #include <asm/io.h>
 #include <errno.h>
 #include <linux/bitops.h>
+#include <linux/string.h>
 
 static int hi6220_gpio_direction_input(struct udevice *dev, unsigned int gpio)
 {
diff --git a/drivers/gpio/imx_rgpio2p.c b/drivers/gpio/imx_rgpio2p.c
index 1e876f69147..8ff37f2eccc 100644
--- a/drivers/gpio/imx_rgpio2p.c
+++ b/drivers/gpio/imx_rgpio2p.c
@@ -12,6 +12,7 @@
 #include <asm/gpio.h>
 #include <asm/io.h>
 #include <malloc.h>
+#include <linux/string.h>
 
 enum imx_rgpio2p_direction {
 	IMX_RGPIO2P_DIRECTION_IN,
diff --git a/drivers/gpio/intel_gpio.c b/drivers/gpio/intel_gpio.c
index 6a3a8c4cfaa..975293ff3ab 100644
--- a/drivers/gpio/intel_gpio.c
+++ b/drivers/gpio/intel_gpio.c
@@ -22,6 +22,7 @@
 #include <asm/arch/gpio.h>
 #include <dm/acpi.h>
 #include <dt-bindings/gpio/x86-gpio.h>
+#include <linux/string.h>
 
 static int intel_gpio_direction_input(struct udevice *dev, uint offset)
 {
diff --git a/drivers/gpio/lpc32xx_gpio.c b/drivers/gpio/lpc32xx_gpio.c
index 1265ee41a60..6ccc503e666 100644
--- a/drivers/gpio/lpc32xx_gpio.c
+++ b/drivers/gpio/lpc32xx_gpio.c
@@ -12,6 +12,7 @@
 #include <asm/arch-lpc32xx/gpio.h>
 #include <asm-generic/gpio.h>
 #include <dm.h>
+#include <linux/string.h>
 
 /**
  * LPC32xx GPIOs work in banks but are non-homogeneous:
diff --git a/drivers/gpio/mpc83xx_spisel_boot.c b/drivers/gpio/mpc83xx_spisel_boot.c
index c7b08404d93..eac0ff82ae6 100644
--- a/drivers/gpio/mpc83xx_spisel_boot.c
+++ b/drivers/gpio/mpc83xx_spisel_boot.c
@@ -9,6 +9,7 @@
 #include <dm.h>
 #include <mapmem.h>
 #include <asm/gpio.h>
+#include <linux/string.h>
 
 struct mpc83xx_spisel_boot {
 	u32 __iomem *spi_cs;
diff --git a/drivers/gpio/mpc8xxx_gpio.c b/drivers/gpio/mpc8xxx_gpio.c
index 1dfd22522c7..14ecfb42c58 100644
--- a/drivers/gpio/mpc8xxx_gpio.c
+++ b/drivers/gpio/mpc8xxx_gpio.c
@@ -12,6 +12,7 @@
 #include <dm.h>
 #include <mapmem.h>
 #include <asm/gpio.h>
+#include <linux/string.h>
 
 struct ccsr_gpio {
 	u32	gpdir;
diff --git a/drivers/gpio/mxc_gpio.c b/drivers/gpio/mxc_gpio.c
index a16f5719ede..5b57a7f0af6 100644
--- a/drivers/gpio/mxc_gpio.c
+++ b/drivers/gpio/mxc_gpio.c
@@ -13,6 +13,7 @@
 #include <asm/arch/imx-regs.h>
 #include <asm/gpio.h>
 #include <asm/io.h>
+#include <linux/string.h>
 
 enum mxc_gpio_direction {
 	MXC_GPIO_DIRECTION_IN,
diff --git a/drivers/gpio/mxs_gpio.c b/drivers/gpio/mxs_gpio.c
index 0340786712e..2a9f64d633c 100644
--- a/drivers/gpio/mxs_gpio.c
+++ b/drivers/gpio/mxs_gpio.c
@@ -15,6 +15,7 @@
 #include <asm/io.h>
 #include <asm/arch/iomux.h>
 #include <asm/arch/imx-regs.h>
+#include <linux/string.h>
 
 #if	defined(CONFIG_MX23)
 #define	PINCTRL_BANKS		3
diff --git a/drivers/gpio/omap_gpio.c b/drivers/gpio/omap_gpio.c
index 4200afba121..91d664e02ff 100644
--- a/drivers/gpio/omap_gpio.c
+++ b/drivers/gpio/omap_gpio.c
@@ -25,6 +25,7 @@
 #include <asm/io.h>
 #include <linux/errno.h>
 #include <malloc.h>
+#include <linux/string.h>
 
 DECLARE_GLOBAL_DATA_PTR;
 
diff --git a/drivers/gpio/pca953x_gpio.c b/drivers/gpio/pca953x_gpio.c
index fd17d1a5910..4ffb3aa27f4 100644
--- a/drivers/gpio/pca953x_gpio.c
+++ b/drivers/gpio/pca953x_gpio.c
@@ -29,6 +29,7 @@
 #include <dm/device_compat.h>
 #include <dt-bindings/gpio/gpio.h>
 #include <linux/bitops.h>
+#include <linux/string.h>
 
 #define PCA953X_INPUT           0
 #define PCA953X_OUTPUT          1
diff --git a/drivers/gpio/pic32_gpio.c b/drivers/gpio/pic32_gpio.c
index 50c5376e00d..00f20c0979c 100644
--- a/drivers/gpio/pic32_gpio.c
+++ b/drivers/gpio/pic32_gpio.c
@@ -13,6 +13,7 @@
 #include <asm/gpio.h>
 #include <linux/bitops.h>
 #include <linux/compat.h>
+#include <linux/string.h>
 #include <mach/pic32.h>
 
 DECLARE_GLOBAL_DATA_PTR;
diff --git a/drivers/gpio/rk_gpio.c b/drivers/gpio/rk_gpio.c
index 8cc288581c9..3cabd11b5c5 100644
--- a/drivers/gpio/rk_gpio.c
+++ b/drivers/gpio/rk_gpio.c
@@ -16,6 +16,7 @@
 #include <asm/arch-rockchip/gpio.h>
 #include <dm/pinctrl.h>
 #include <dt-bindings/clock/rk3288-cru.h>
+#include <linux/string.h>
 
 enum {
 	ROCKCHIP_GPIOS_PER_BANK		= 32,
diff --git a/drivers/gpio/sifive-gpio.c b/drivers/gpio/sifive-gpio.c
index bf3537b76bd..eb8b8f65e98 100644
--- a/drivers/gpio/sifive-gpio.c
+++ b/drivers/gpio/sifive-gpio.c
@@ -12,6 +12,7 @@
 #include <errno.h>
 #include <asm/gpio.h>
 #include <linux/bitops.h>
+#include <linux/string.h>
 
 static int sifive_gpio_probe(struct udevice *dev)
 {
diff --git a/drivers/gpio/sunxi_gpio.c b/drivers/gpio/sunxi_gpio.c
index 3efccf496fc..973854ca613 100644
--- a/drivers/gpio/sunxi_gpio.c
+++ b/drivers/gpio/sunxi_gpio.c
@@ -19,6 +19,7 @@
 #include <asm/gpio.h>
 #include <dm/device-internal.h>
 #include <dt-bindings/gpio/gpio.h>
+#include <linux/string.h>
 
 #define SUNXI_GPIOS_PER_BANK	SUNXI_GPIO_A_NR
 
diff --git a/drivers/gpio/xilinx_gpio.c b/drivers/gpio/xilinx_gpio.c
index 014f120d609..23de1f44e9c 100644
--- a/drivers/gpio/xilinx_gpio.c
+++ b/drivers/gpio/xilinx_gpio.c
@@ -12,6 +12,7 @@
 #include <asm/gpio.h>
 #include <dm.h>
 #include <dt-bindings/gpio/gpio.h>
+#include <linux/string.h>
 
 #define XILINX_GPIO_MAX_BANK	2
 
diff --git a/drivers/gpio/zynq_gpio.c b/drivers/gpio/zynq_gpio.c
index d0e90b8d633..8888d2324c4 100644
--- a/drivers/gpio/zynq_gpio.c
+++ b/drivers/gpio/zynq_gpio.c
@@ -15,6 +15,7 @@
 #include <linux/errno.h>
 #include <dm.h>
 #include <fdtdec.h>
+#include <linux/string.h>
 
 /* Maximum banks */
 #define ZYNQ_GPIO_MAX_BANK	4
diff --git a/drivers/i2c/fsl_i2c.c b/drivers/i2c/fsl_i2c.c
index e7a8dcc8212..c2000104b51 100644
--- a/drivers/i2c/fsl_i2c.c
+++ b/drivers/i2c/fsl_i2c.c
@@ -18,6 +18,7 @@
 #include <dm.h>
 #include <mapmem.h>
 #include <linux/delay.h>
+#include <linux/string.h>
 
 /* The maximum number of microseconds we will wait until another master has
  * released the bus.  If not defined in the board header file, then use a
diff --git a/drivers/i2c/i2c-uclass.c b/drivers/i2c/i2c-uclass.c
index 2373aa2ea4c..c16bda46978 100644
--- a/drivers/i2c/i2c-uclass.c
+++ b/drivers/i2c/i2c-uclass.c
@@ -16,6 +16,7 @@
 #include <asm/gpio.h>
 #endif
 #include <linux/delay.h>
+#include <linux/string.h>
 
 #define I2C_MAX_OFFSET_LEN	4
 
diff --git a/drivers/i2c/ihs_i2c.c b/drivers/i2c/ihs_i2c.c
index 1c39b8c9dfc..f6cd1222b87 100644
--- a/drivers/i2c/ihs_i2c.c
+++ b/drivers/i2c/ihs_i2c.c
@@ -17,6 +17,7 @@
 #include <asm/unaligned.h>
 #include <linux/bitops.h>
 #include <linux/delay.h>
+#include <linux/string.h>
 
 #ifdef CONFIG_DM_I2C
 struct ihs_i2c_priv {
diff --git a/drivers/i2c/intel_i2c.c b/drivers/i2c/intel_i2c.c
index a7ac09a27e5..fa36f48df9a 100644
--- a/drivers/i2c/intel_i2c.c
+++ b/drivers/i2c/intel_i2c.c
@@ -14,6 +14,7 @@
 #include <pci.h>
 #include <time.h>
 #include <asm/io.h>
+#include <linux/string.h>
 
 /* PCI Configuration Space (D31:F3): SMBus */
 #define SMB_BASE		0x20
diff --git a/drivers/i2c/lpc32xx_i2c.c b/drivers/i2c/lpc32xx_i2c.c
index 6af2e975cf3..8aef939981f 100644
--- a/drivers/i2c/lpc32xx_i2c.c
+++ b/drivers/i2c/lpc32xx_i2c.c
@@ -15,6 +15,7 @@
 #include <asm/arch/i2c.h>
 #include <dm.h>
 #include <mapmem.h>
+#include <linux/string.h>
 
 /*
  * Provide default speed and slave if target did not
diff --git a/drivers/i2c/muxes/i2c-mux-uclass.c b/drivers/i2c/muxes/i2c-mux-uclass.c
index 26897554b0f..8f6d1547f16 100644
--- a/drivers/i2c/muxes/i2c-mux-uclass.c
+++ b/drivers/i2c/muxes/i2c-mux-uclass.c
@@ -12,6 +12,7 @@
 #include <malloc.h>
 #include <dm/lists.h>
 #include <dm/root.h>
+#include <linux/string.h>
 
 /**
  * struct i2c_mux: Information the uclass stores about an I2C mux
diff --git a/drivers/i2c/mv_i2c.c b/drivers/i2c/mv_i2c.c
index 59675d8d574..54fa069528b 100644
--- a/drivers/i2c/mv_i2c.c
+++ b/drivers/i2c/mv_i2c.c
@@ -22,6 +22,7 @@
 #include <log.h>
 #include <asm/io.h>
 #include <linux/delay.h>
+#include <linux/string.h>
 #include "mv_i2c.h"
 
 /* All transfers are described by this data structure */
diff --git a/drivers/i2c/mvtwsi.c b/drivers/i2c/mvtwsi.c
index 21383ecf132..1cc9cfc2eb8 100644
--- a/drivers/i2c/mvtwsi.c
+++ b/drivers/i2c/mvtwsi.c
@@ -19,6 +19,7 @@
 #ifdef CONFIG_DM_I2C
 #include <dm.h>
 #endif
+#include <linux/string.h>
 
 DECLARE_GLOBAL_DATA_PTR;
 
diff --git a/drivers/i2c/stm32f7_i2c.c b/drivers/i2c/stm32f7_i2c.c
index fc60f5285ab..0f5c8446365 100644
--- a/drivers/i2c/stm32f7_i2c.c
+++ b/drivers/i2c/stm32f7_i2c.c
@@ -15,6 +15,7 @@
 #include <linux/bitops.h>
 #include <linux/delay.h>
 #include <linux/printk.h>
+#include <linux/string.h>
 
 #include <dm/device.h>
 #include <linux/err.h>
diff --git a/drivers/i2c/tegra186_bpmp_i2c.c b/drivers/i2c/tegra186_bpmp_i2c.c
index 0a507079a2d..897627a1236 100644
--- a/drivers/i2c/tegra186_bpmp_i2c.c
+++ b/drivers/i2c/tegra186_bpmp_i2c.c
@@ -11,6 +11,7 @@
 #include <asm/arch-tegra/bpmp_abi.h>
 #include <asm/global_data.h>
 #include <linux/bitops.h>
+#include <linux/string.h>
 
 DECLARE_GLOBAL_DATA_PTR;
 
diff --git a/drivers/i2c/tegra_i2c.c b/drivers/i2c/tegra_i2c.c
index 96a436a8dc1..2cb51473a6c 100644
--- a/drivers/i2c/tegra_i2c.c
+++ b/drivers/i2c/tegra_i2c.c
@@ -22,6 +22,7 @@
 #include <linux/delay.h>
 #include <linux/err.h>
 #include <linux/printk.h>
+#include <linux/string.h>
 
 enum i2c_type {
 	TYPE_114,
diff --git a/drivers/input/cros_ec_keyb.c b/drivers/input/cros_ec_keyb.c
index 00bf58f2b5d..c09a66376af 100644
--- a/drivers/input/cros_ec_keyb.c
+++ b/drivers/input/cros_ec_keyb.c
@@ -14,6 +14,7 @@
 #include <key_matrix.h>
 #include <log.h>
 #include <stdio_dev.h>
+#include <linux/string.h>
 
 enum {
 	KBC_MAX_KEYS		= 8,	/* Maximum keys held down at once */
diff --git a/drivers/input/i8042.c b/drivers/input/i8042.c
index ca2978e79d5..b484cebfb4e 100644
--- a/drivers/input/i8042.c
+++ b/drivers/input/i8042.c
@@ -17,6 +17,7 @@
 #include <asm/global_data.h>
 #include <asm/io.h>
 #include <linux/delay.h>
+#include <linux/string.h>
 
 DECLARE_GLOBAL_DATA_PTR;
 
diff --git a/drivers/input/input.c b/drivers/input/input.c
index 24e76052b88..37dae11d97a 100644
--- a/drivers/input/input.c
+++ b/drivers/input/input.c
@@ -19,6 +19,7 @@
 #endif
 #include <time.h>
 #include <linux/input.h>
+#include <linux/string.h>
 
 enum {
 	/* These correspond to the lights on the keyboard */
diff --git a/drivers/input/key_matrix.c b/drivers/input/key_matrix.c
index 4631728b8b5..4742d575984 100644
--- a/drivers/input/key_matrix.c
+++ b/drivers/input/key_matrix.c
@@ -12,6 +12,7 @@
 #include <log.h>
 #include <malloc.h>
 #include <linux/input.h>
+#include <linux/string.h>
 
 /**
  * Determine if the current keypress configuration can cause key ghosting
diff --git a/drivers/input/keyboard-uclass.c b/drivers/input/keyboard-uclass.c
index f19934e6bb6..a265c02efe7 100644
--- a/drivers/input/keyboard-uclass.c
+++ b/drivers/input/keyboard-uclass.c
@@ -7,6 +7,7 @@
 #include <dm.h>
 #include <keyboard.h>
 #include <log.h>
+#include <linux/string.h>
 
 static int keyboard_start(struct stdio_dev *sdev)
 {
diff --git a/drivers/input/tegra-kbc.c b/drivers/input/tegra-kbc.c
index 74ece4762e3..3654510858f 100644
--- a/drivers/input/tegra-kbc.c
+++ b/drivers/input/tegra-kbc.c
@@ -20,6 +20,7 @@
 #include <asm/arch-tegra/timer.h>
 #include <linux/delay.h>
 #include <linux/input.h>
+#include <linux/string.h>
 
 enum {
 	KBC_MAX_GPIO		= 24,
diff --git a/drivers/led/led-uclass.c b/drivers/led/led-uclass.c
index 2859475a6b8..ae9c3cbd7d3 100644
--- a/drivers/led/led-uclass.c
+++ b/drivers/led/led-uclass.c
@@ -11,6 +11,7 @@
 #include <dm/device-internal.h>
 #include <dm/root.h>
 #include <dm/uclass-internal.h>
+#include <linux/string.h>
 
 int led_get_by_label(const char *label, struct udevice **devp)
 {
diff --git a/drivers/misc/atsha204a-i2c.c b/drivers/misc/atsha204a-i2c.c
index c79c260783e..779e1a17607 100644
--- a/drivers/misc/atsha204a-i2c.c
+++ b/drivers/misc/atsha204a-i2c.c
@@ -18,6 +18,7 @@
 #include <log.h>
 #include <asm/global_data.h>
 #include <linux/delay.h>
+#include <linux/string.h>
 #include <u-boot/crc.h>
 
 #define ATSHA204A_TWLO			60
diff --git a/drivers/misc/cbmem_console.c b/drivers/misc/cbmem_console.c
index 5ba0a542060..dfa99175d3d 100644
--- a/drivers/misc/cbmem_console.c
+++ b/drivers/misc/cbmem_console.c
@@ -8,6 +8,7 @@
 #ifndef CONFIG_SYS_COREBOOT
 #error This driver requires coreboot
 #endif
+#include <linux/string.h>
 
 #include <asm/arch/sysinfo.h>
 
diff --git a/drivers/misc/cros_ec.c b/drivers/misc/cros_ec.c
index ccac7a60c12..881dce016fa 100644
--- a/drivers/misc/cros_ec.c
+++ b/drivers/misc/cros_ec.c
@@ -33,6 +33,7 @@
 #include <dm/device-internal.h>
 #include <dm/of_extra.h>
 #include <dm/uclass-internal.h>
+#include <linux/string.h>
 
 #ifdef DEBUG_TRACE
 #define debug_trace(fmt, b...)	debug(fmt, #b)
diff --git a/drivers/misc/cros_ec_i2c.c b/drivers/misc/cros_ec_i2c.c
index c00f5f764a0..6a5dcc016f2 100644
--- a/drivers/misc/cros_ec_i2c.c
+++ b/drivers/misc/cros_ec_i2c.c
@@ -17,6 +17,7 @@
 #include <i2c.h>
 #include <cros_ec.h>
 #include <log.h>
+#include <linux/string.h>
 
 #ifdef DEBUG_TRACE
 #define debug_trace(fmt, b...)	debug(fmt, #b)
diff --git a/drivers/misc/cros_ec_sandbox.c b/drivers/misc/cros_ec_sandbox.c
index 8575e56a337..81d2191542c 100644
--- a/drivers/misc/cros_ec_sandbox.c
+++ b/drivers/misc/cros_ec_sandbox.c
@@ -14,6 +14,7 @@
 #include <log.h>
 #include <os.h>
 #include <time.h>
+#include <linux/string.h>
 #include <u-boot/sha256.h>
 #include <spi.h>
 #include <asm/malloc.h>
diff --git a/drivers/misc/cros_ec_spi.c b/drivers/misc/cros_ec_spi.c
index d8778eeb387..357e31f7edc 100644
--- a/drivers/misc/cros_ec_spi.c
+++ b/drivers/misc/cros_ec_spi.c
@@ -19,6 +19,7 @@
 #include <log.h>
 #include <spi.h>
 #include <time.h>
+#include <linux/string.h>
 
 int cros_ec_spi_packet(struct udevice *udev, int out_bytes, int in_bytes)
 {
diff --git a/drivers/misc/ds4510.c b/drivers/misc/ds4510.c
index a2a52915654..d914123fdf9 100644
--- a/drivers/misc/ds4510.c
+++ b/drivers/misc/ds4510.c
@@ -12,6 +12,7 @@
 #include <i2c.h>
 #include <command.h>
 #include <linux/delay.h>
+#include <linux/string.h>
 #include "ds4510.h"
 
 enum {
diff --git a/drivers/misc/fsl_portals.c b/drivers/misc/fsl_portals.c
index 632430e4209..2c8cec7c421 100644
--- a/drivers/misc/fsl_portals.c
+++ b/drivers/misc/fsl_portals.c
@@ -8,6 +8,7 @@
 #include <log.h>
 #include <linux/libfdt.h>
 #include <fdt_support.h>
+#include <linux/string.h>
 
 #include <asm/processor.h>
 #include <asm/io.h>
diff --git a/drivers/misc/gdsys_ioep.c b/drivers/misc/gdsys_ioep.c
index 69e16a06a0a..8c65f1473c3 100644
--- a/drivers/misc/gdsys_ioep.c
+++ b/drivers/misc/gdsys_ioep.c
@@ -16,6 +16,7 @@
 #include <log.h>
 #include <misc.h>
 #include <regmap.h>
+#include <linux/string.h>
 
 #include "gdsys_ioep.h"
 
diff --git a/drivers/misc/i2c_eeprom_emul.c b/drivers/misc/i2c_eeprom_emul.c
index 6be76ad02ef..925120ea0d5 100644
--- a/drivers/misc/i2c_eeprom_emul.c
+++ b/drivers/misc/i2c_eeprom_emul.c
@@ -12,6 +12,7 @@
 #include <log.h>
 #include <malloc.h>
 #include <asm/test.h>
+#include <linux/string.h>
 
 #ifdef DEBUG
 #define debug_buffer print_buffer
diff --git a/drivers/misc/ihs_fpga.c b/drivers/misc/ihs_fpga.c
index 00d34a3adc2..9d9d52e978c 100644
--- a/drivers/misc/ihs_fpga.c
+++ b/drivers/misc/ihs_fpga.c
@@ -16,6 +16,7 @@
 #include <asm/gpio.h>
 #include <linux/bitops.h>
 #include <linux/delay.h>
+#include <linux/string.h>
 
 #include "ihs_fpga.h"
 
diff --git a/drivers/misc/misc_sandbox.c b/drivers/misc/misc_sandbox.c
index f7c5b2e25fa..9ea2a35db60 100644
--- a/drivers/misc/misc_sandbox.c
+++ b/drivers/misc/misc_sandbox.c
@@ -7,6 +7,7 @@
 #include <common.h>
 #include <dm.h>
 #include <misc.h>
+#include <linux/string.h>
 
 struct misc_sandbox_priv {
 	u8 mem[128];
diff --git a/drivers/misc/mpc83xx_serdes.c b/drivers/misc/mpc83xx_serdes.c
index ab1e34e6f46..b2f23e1343b 100644
--- a/drivers/misc/mpc83xx_serdes.c
+++ b/drivers/misc/mpc83xx_serdes.c
@@ -15,6 +15,7 @@
 #include <mapmem.h>
 #include <misc.h>
 #include <linux/delay.h>
+#include <linux/string.h>
 
 #include "mpc83xx_serdes.h"
 
diff --git a/drivers/misc/qfw.c b/drivers/misc/qfw.c
index f6eb6583ed0..fed08422419 100644
--- a/drivers/misc/qfw.c
+++ b/drivers/misc/qfw.c
@@ -14,6 +14,7 @@
 #include <asm/tables.h>
 #endif
 #include <linux/list.h>
+#include <linux/string.h>
 
 static bool fwcfg_present;
 static bool fwcfg_dma_present;
diff --git a/drivers/misc/rockchip-efuse.c b/drivers/misc/rockchip-efuse.c
index 46ce6305fe6..adaa51ce99b 100644
--- a/drivers/misc/rockchip-efuse.c
+++ b/drivers/misc/rockchip-efuse.c
@@ -14,6 +14,7 @@
 #include <linux/bitops.h>
 #include <linux/delay.h>
 #include <misc.h>
+#include <linux/string.h>
 
 #define RK3399_A_SHIFT          16
 #define RK3399_A_MASK           0x3ff
diff --git a/drivers/misc/sifive-otp.c b/drivers/misc/sifive-otp.c
index 0a4fa67f335..7d502febea4 100644
--- a/drivers/misc/sifive-otp.c
+++ b/drivers/misc/sifive-otp.c
@@ -25,6 +25,7 @@
 #include <linux/io.h>
 #include <misc.h>
 #include <linux/printk.h>
+#include <linux/string.h>
 
 #define BYTES_PER_FUSE		4
 
diff --git a/drivers/misc/tegra186_bpmp.c b/drivers/misc/tegra186_bpmp.c
index 73cc2666e49..c9079b86a7a 100644
--- a/drivers/misc/tegra186_bpmp.c
+++ b/drivers/misc/tegra186_bpmp.c
@@ -18,6 +18,7 @@
 #include <linux/bitops.h>
 #include <linux/err.h>
 #include <linux/printk.h>
+#include <linux/string.h>
 
 #define BPMP_IVC_FRAME_COUNT 1
 #define BPMP_IVC_FRAME_SIZE 128
diff --git a/drivers/misc/vexpress_config.c b/drivers/misc/vexpress_config.c
index 02e5b586e29..9a9c5f75573 100644
--- a/drivers/misc/vexpress_config.c
+++ b/drivers/misc/vexpress_config.c
@@ -12,6 +12,7 @@
 #include <linux/bitops.h>
 #include <linux/delay.h>
 #include <misc.h>
+#include <linux/string.h>
 
 #define SYS_CFGDATA		0xa0
 
diff --git a/drivers/mmc/ca_dw_mmc.c b/drivers/mmc/ca_dw_mmc.c
index 562dcb8ee35..8ae5bd41454 100644
--- a/drivers/mmc/ca_dw_mmc.c
+++ b/drivers/mmc/ca_dw_mmc.c
@@ -13,6 +13,7 @@
 #include <errno.h>
 #include <dm.h>
 #include <mapmem.h>
+#include <linux/string.h>
 
 #define SD_CLK_SEL_MASK (0x3)
 #define SD_DLL_DEFAULT  (0x143000)
diff --git a/drivers/mmc/davinci_mmc.c b/drivers/mmc/davinci_mmc.c
index 0a05fb13bc9..9b2fe0653c6 100644
--- a/drivers/mmc/davinci_mmc.c
+++ b/drivers/mmc/davinci_mmc.c
@@ -17,6 +17,7 @@
 #include <asm/arch/sdmmc_defs.h>
 #include <asm-generic/gpio.h>
 #include <linux/delay.h>
+#include <linux/string.h>
 
 #define WATCHDOG_COUNT		(100000)
 
diff --git a/drivers/mmc/fsl_esdhc_imx.c b/drivers/mmc/fsl_esdhc_imx.c
index 5fdcffd5d2c..29292147bcb 100644
--- a/drivers/mmc/fsl_esdhc_imx.c
+++ b/drivers/mmc/fsl_esdhc_imx.c
@@ -28,6 +28,7 @@
 #include <linux/delay.h>
 #include <linux/err.h>
 #include <linux/printk.h>
+#include <linux/string.h>
 #include <power/regulator.h>
 #include <malloc.h>
 #include <fsl_esdhc_imx.h>
diff --git a/drivers/mmc/fsl_esdhc_spl.c b/drivers/mmc/fsl_esdhc_spl.c
index afe55fad9de..033fd0edd8f 100644
--- a/drivers/mmc/fsl_esdhc_spl.c
+++ b/drivers/mmc/fsl_esdhc_spl.c
@@ -8,6 +8,7 @@
 #include <hang.h>
 #include <mmc.h>
 #include <malloc.h>
+#include <linux/string.h>
 
 /*
  * The environment variables are written to just after the u-boot image
diff --git a/drivers/mmc/ftsdc010_mci.c b/drivers/mmc/ftsdc010_mci.c
index 113ed2b7a71..b26571e0a69 100644
--- a/drivers/mmc/ftsdc010_mci.c
+++ b/drivers/mmc/ftsdc010_mci.c
@@ -22,6 +22,7 @@
 #include <linux/errno.h>
 #include <asm/byteorder.h>
 #include <faraday/ftsdc010.h>
+#include <linux/string.h>
 #include "ftsdc010_mci.h"
 #include <dm.h>
 #include <dt-structs.h>
diff --git a/drivers/mmc/iproc_sdhci.c b/drivers/mmc/iproc_sdhci.c
index 7eda1d606fd..ef7d8f8b41e 100644
--- a/drivers/mmc/iproc_sdhci.c
+++ b/drivers/mmc/iproc_sdhci.c
@@ -11,6 +11,7 @@
 #include <sdhci.h>
 #include <asm/global_data.h>
 #include <linux/delay.h>
+#include <linux/string.h>
 
 DECLARE_GLOBAL_DATA_PTR;
 
diff --git a/drivers/mmc/meson_gx_mmc.c b/drivers/mmc/meson_gx_mmc.c
index f70ced37d31..2afc80ff0c5 100644
--- a/drivers/mmc/meson_gx_mmc.c
+++ b/drivers/mmc/meson_gx_mmc.c
@@ -17,6 +17,7 @@
 #include <asm/arch/sd_emmc.h>
 #include <linux/delay.h>
 #include <linux/log2.h>
+#include <linux/string.h>
 
 static inline void *get_regbase(const struct mmc *mmc)
 {
diff --git a/drivers/mmc/mmc.c b/drivers/mmc/mmc.c
index 544534a78a7..e8c2360f976 100644
--- a/drivers/mmc/mmc.c
+++ b/drivers/mmc/mmc.c
@@ -21,6 +21,7 @@
 #include <linux/bitops.h>
 #include <linux/delay.h>
 #include <linux/printk.h>
+#include <linux/string.h>
 #include <power/regulator.h>
 #include <malloc.h>
 #include <memalign.h>
diff --git a/drivers/mmc/mmc_spi.c b/drivers/mmc/mmc_spi.c
index 50fcd32674f..56755c66fd2 100644
--- a/drivers/mmc/mmc_spi.c
+++ b/drivers/mmc/mmc_spi.c
@@ -14,6 +14,7 @@
 #include <mmc.h>
 #include <stdlib.h>
 #include <linux/bitops.h>
+#include <linux/string.h>
 #include <u-boot/crc.h>
 #include <linux/crc7.h>
 #include <asm/byteorder.h>
diff --git a/drivers/mmc/msm_sdhci.c b/drivers/mmc/msm_sdhci.c
index 525c1dc9027..27d8fb84fab 100644
--- a/drivers/mmc/msm_sdhci.c
+++ b/drivers/mmc/msm_sdhci.c
@@ -16,6 +16,7 @@
 #include <asm/global_data.h>
 #include <asm/io.h>
 #include <linux/bitops.h>
+#include <linux/string.h>
 
 /* Non-standard registers needed for SDHCI startup */
 #define SDCC_MCI_POWER   0x0
diff --git a/drivers/mmc/mv_sdhci.c b/drivers/mmc/mv_sdhci.c
index fa7c12837d1..356d161d51f 100644
--- a/drivers/mmc/mv_sdhci.c
+++ b/drivers/mmc/mv_sdhci.c
@@ -9,6 +9,7 @@
 #include <sdhci.h>
 #include <asm/global_data.h>
 #include <linux/mbus.h>
+#include <linux/string.h>
 
 #define MVSDH_NAME "mv_sdh"
 
diff --git a/drivers/mmc/mxcmmc.c b/drivers/mmc/mxcmmc.c
index 0057273a2a7..5ca4a5140e1 100644
--- a/drivers/mmc/mxcmmc.c
+++ b/drivers/mmc/mxcmmc.c
@@ -27,6 +27,7 @@
 #include <linux/errno.h>
 #include <asm/io.h>
 #include <asm/arch/clock.h>
+#include <linux/string.h>
 
 #define DRIVER_NAME "mxc-mmc"
 
diff --git a/drivers/mmc/mxsmmc.c b/drivers/mmc/mxsmmc.c
index 2b3a3a992cb..5bb12b612e3 100644
--- a/drivers/mmc/mxsmmc.c
+++ b/drivers/mmc/mxsmmc.c
@@ -33,6 +33,7 @@
 #include <asm/arch/sys_proto.h>
 #include <asm/mach-imx/dma.h>
 #include <bouncebuf.h>
+#include <linux/string.h>
 
 #define	MXSMMC_MAX_TIMEOUT	10000
 #define MXSMMC_SMALL_TRANSFER	512
diff --git a/drivers/mmc/pxa_mmc_gen.c b/drivers/mmc/pxa_mmc_gen.c
index 2c081fdc69f..7d88ca015c1 100644
--- a/drivers/mmc/pxa_mmc_gen.c
+++ b/drivers/mmc/pxa_mmc_gen.c
@@ -18,6 +18,7 @@
 #include <dm/platform_data/pxa_mmc_gen.h>
 #include <malloc.h>
 #include <mmc.h>
+#include <linux/string.h>
 
 /* PXAMMC Generic default config for various CPUs */
 #if defined(CONFIG_CPU_PXA25X)
diff --git a/drivers/mmc/rpmb.c b/drivers/mmc/rpmb.c
index ea7e506666b..7a596b2f19b 100644
--- a/drivers/mmc/rpmb.c
+++ b/drivers/mmc/rpmb.c
@@ -13,6 +13,7 @@
 #include <memalign.h>
 #include <mmc.h>
 #include <sdhci.h>
+#include <linux/string.h>
 #include <u-boot/sha256.h>
 #include "mmc_private.h"
 
diff --git a/drivers/mmc/sandbox_mmc.c b/drivers/mmc/sandbox_mmc.c
index e86ea8fe096..d4780271fc3 100644
--- a/drivers/mmc/sandbox_mmc.c
+++ b/drivers/mmc/sandbox_mmc.c
@@ -11,6 +11,7 @@
 #include <log.h>
 #include <mmc.h>
 #include <asm/test.h>
+#include <linux/string.h>
 
 struct sandbox_mmc_plat {
 	struct mmc_config cfg;
diff --git a/drivers/mmc/sdhci.c b/drivers/mmc/sdhci.c
index 01dc9c3fd54..d4bc40f19e2 100644
--- a/drivers/mmc/sdhci.c
+++ b/drivers/mmc/sdhci.c
@@ -23,6 +23,7 @@
 #include <linux/dma-mapping.h>
 #include <phys2bus.h>
 #include <linux/printk.h>
+#include <linux/string.h>
 
 static void sdhci_reset(struct sdhci_host *host, u8 mask)
 {
diff --git a/drivers/mmc/sh_mmcif.c b/drivers/mmc/sh_mmcif.c
index f7dd2aadc3e..5f25acd55db 100644
--- a/drivers/mmc/sh_mmcif.c
+++ b/drivers/mmc/sh_mmcif.c
@@ -22,6 +22,7 @@
 #include <linux/compat.h>
 #include <linux/io.h>
 #include <linux/sizes.h>
+#include <linux/string.h>
 #include "sh_mmcif.h"
 
 #define DRIVER_NAME	"sh_mmcif"
diff --git a/drivers/mmc/snps_dw_mmc.c b/drivers/mmc/snps_dw_mmc.c
index c606ef011bf..f7c64312154 100644
--- a/drivers/mmc/snps_dw_mmc.c
+++ b/drivers/mmc/snps_dw_mmc.c
@@ -17,6 +17,7 @@
 #include <linux/libfdt.h>
 #include <linux/err.h>
 #include <malloc.h>
+#include <linux/string.h>
 
 #define CLOCK_MIN		400000	/*  400 kHz */
 #define FIFO_MIN		8
diff --git a/drivers/mmc/sti_sdhci.c b/drivers/mmc/sti_sdhci.c
index 11ae392734c..394c4d19b56 100644
--- a/drivers/mmc/sti_sdhci.c
+++ b/drivers/mmc/sti_sdhci.c
@@ -13,6 +13,7 @@
 #include <asm/arch/sdhci.h>
 #include <asm/global_data.h>
 #include <linux/printk.h>
+#include <linux/string.h>
 
 DECLARE_GLOBAL_DATA_PTR;
 
diff --git a/drivers/mmc/sunxi_mmc.c b/drivers/mmc/sunxi_mmc.c
index f9046305930..96d8f18d0f5 100644
--- a/drivers/mmc/sunxi_mmc.c
+++ b/drivers/mmc/sunxi_mmc.c
@@ -23,6 +23,7 @@
 #include <asm/arch/mmc.h>
 #include <asm-generic/gpio.h>
 #include <linux/delay.h>
+#include <linux/string.h>
 
 #ifdef CONFIG_DM_MMC
 struct sunxi_mmc_variant {
diff --git a/drivers/mmc/xenon_sdhci.c b/drivers/mmc/xenon_sdhci.c
index 50c5b194cad..57fe6a4df23 100644
--- a/drivers/mmc/xenon_sdhci.c
+++ b/drivers/mmc/xenon_sdhci.c
@@ -24,6 +24,7 @@
 #include <malloc.h>
 #include <sdhci.h>
 #include <linux/printk.h>
+#include <linux/string.h>
 
 DECLARE_GLOBAL_DATA_PTR;
 
diff --git a/drivers/mtd/altera_qspi.c b/drivers/mtd/altera_qspi.c
index 346244e1110..c406963d757 100644
--- a/drivers/mtd/altera_qspi.c
+++ b/drivers/mtd/altera_qspi.c
@@ -14,6 +14,7 @@
 #include <asm/global_data.h>
 #include <asm/io.h>
 #include <linux/bitops.h>
+#include <linux/string.h>
 
 DECLARE_GLOBAL_DATA_PTR;
 
diff --git a/drivers/mtd/cfi_flash.c b/drivers/mtd/cfi_flash.c
index 74cf47b7637..21cdf62478a 100644
--- a/drivers/mtd/cfi_flash.c
+++ b/drivers/mtd/cfi_flash.c
@@ -34,6 +34,7 @@
 #include <asm/unaligned.h>
 #include <env_internal.h>
 #include <linux/delay.h>
+#include <linux/string.h>
 #include <mtd/cfi_flash.h>
 #include <watchdog.h>
 
diff --git a/drivers/mtd/cfi_mtd.c b/drivers/mtd/cfi_mtd.c
index a5bb0962e55..21ca7bd65d4 100644
--- a/drivers/mtd/cfi_mtd.c
+++ b/drivers/mtd/cfi_mtd.c
@@ -8,6 +8,7 @@
 #include <common.h>
 #include <flash.h>
 #include <malloc.h>
+#include <linux/string.h>
 
 #include <linux/errno.h>
 #include <linux/mtd/mtd.h>
diff --git a/drivers/mtd/mtd_uboot.c b/drivers/mtd/mtd_uboot.c
index 2499cb52d8c..16fe4ecdb6e 100644
--- a/drivers/mtd/mtd_uboot.c
+++ b/drivers/mtd/mtd_uboot.c
@@ -14,6 +14,7 @@
 #include <linux/mtd/mtd.h>
 #include <linux/mtd/partitions.h>
 #include <mtd.h>
+#include <linux/string.h>
 
 #define MTD_NAME_MAX_LEN 20
 
diff --git a/drivers/mtd/mtdpart.c b/drivers/mtd/mtdpart.c
index cad11805690..ef3eb456ac8 100644
--- a/drivers/mtd/mtdpart.c
+++ b/drivers/mtd/mtdpart.c
@@ -26,6 +26,7 @@
 #include <linux/compat.h>
 #include <ubi_uboot.h>
 #include <linux/printk.h>
+#include <linux/string.h>
 
 #include <linux/mtd/mtd.h>
 #include <linux/mtd/partitions.h>
diff --git a/drivers/mtd/nand/raw/atmel_nand.c b/drivers/mtd/nand/raw/atmel_nand.c
index 599bdfc0d6d..dcd5f8ff82e 100644
--- a/drivers/mtd/nand/raw/atmel_nand.c
+++ b/drivers/mtd/nand/raw/atmel_nand.c
@@ -20,6 +20,7 @@
 #include <linux/bug.h>
 #include <linux/delay.h>
 #include <linux/printk.h>
+#include <linux/string.h>
 
 #include <malloc.h>
 #include <nand.h>
diff --git a/drivers/mtd/nand/raw/brcmnand/brcmnand.c b/drivers/mtd/nand/raw/brcmnand/brcmnand.c
index a57013e72c4..3ac5b444516 100644
--- a/drivers/mtd/nand/raw/brcmnand/brcmnand.c
+++ b/drivers/mtd/nand/raw/brcmnand/brcmnand.c
@@ -29,6 +29,7 @@
 #include <linux/log2.h>
 #include <asm/processor.h>
 #include <dm.h>
+#include <linux/string.h>
 
 #include "brcmnand.h"
 #include "brcmnand_compat.h"
diff --git a/drivers/mtd/nand/raw/denali.c b/drivers/mtd/nand/raw/denali.c
index ab91db85467..ca99aa88b3d 100644
--- a/drivers/mtd/nand/raw/denali.c
+++ b/drivers/mtd/nand/raw/denali.c
@@ -23,6 +23,7 @@
 #include <linux/io.h>
 #include <linux/mtd/mtd.h>
 #include <linux/mtd/rawnand.h>
+#include <linux/string.h>
 
 #include "denali.h"
 
diff --git a/drivers/mtd/nand/raw/denali_spl.c b/drivers/mtd/nand/raw/denali_spl.c
index f72142817e7..7252e0340c6 100644
--- a/drivers/mtd/nand/raw/denali_spl.c
+++ b/drivers/mtd/nand/raw/denali_spl.c
@@ -10,6 +10,7 @@
 #include <asm/unaligned.h>
 #include <linux/delay.h>
 #include <linux/mtd/rawnand.h>
+#include <linux/string.h>
 #include "denali.h"
 
 #define DENALI_MAP01		(1 << 26)	/* read/write pages in PIO */
diff --git a/drivers/mtd/nand/raw/fsmc_nand.c b/drivers/mtd/nand/raw/fsmc_nand.c
index ad34af30e81..a5ef0ae75e0 100644
--- a/drivers/mtd/nand/raw/fsmc_nand.c
+++ b/drivers/mtd/nand/raw/fsmc_nand.c
@@ -16,6 +16,7 @@
 #include <linux/mtd/nand_ecc.h>
 #include <linux/mtd/fsmc_nand.h>
 #include <asm/arch/hardware.h>
+#include <linux/string.h>
 
 static u32 fsmc_version;
 static struct fsmc_regs *const fsmc_regs_p = (struct fsmc_regs *)
diff --git a/drivers/mtd/nand/raw/lpc32xx_nand_mlc.c b/drivers/mtd/nand/raw/lpc32xx_nand_mlc.c
index 588fb010ee8..cfa2510b038 100644
--- a/drivers/mtd/nand/raw/lpc32xx_nand_mlc.c
+++ b/drivers/mtd/nand/raw/lpc32xx_nand_mlc.c
@@ -28,6 +28,7 @@
 #include <asm/arch/clk.h>
 #include <asm/arch/sys_proto.h>
 #include <linux/printk.h>
+#include <linux/string.h>
 
 /*
  * MLC NAND controller registers.
diff --git a/drivers/mtd/nand/raw/mxs_nand.c b/drivers/mtd/nand/raw/mxs_nand.c
index a7852a841ce..3ba3afbbf29 100644
--- a/drivers/mtd/nand/raw/mxs_nand.c
+++ b/drivers/mtd/nand/raw/mxs_nand.c
@@ -19,6 +19,7 @@
 #include <asm/cache.h>
 #include <linux/mtd/rawnand.h>
 #include <linux/sizes.h>
+#include <linux/string.h>
 #include <linux/types.h>
 #include <malloc.h>
 #include <linux/errno.h>
diff --git a/drivers/mtd/nand/raw/mxs_nand_spl.c b/drivers/mtd/nand/raw/mxs_nand_spl.c
index ee778e13aa1..2e1f4c522a6 100644
--- a/drivers/mtd/nand/raw/mxs_nand_spl.c
+++ b/drivers/mtd/nand/raw/mxs_nand_spl.c
@@ -14,6 +14,7 @@
 #include <linux/bitops.h>
 #include <linux/delay.h>
 #include <linux/err.h>
+#include <linux/string.h>
 
 static struct mtd_info *mtd;
 static struct nand_chip nand_chip;
diff --git a/drivers/mtd/nand/raw/nand_base.c b/drivers/mtd/nand/raw/nand_base.c
index 693e088f19a..a6b3504facd 100644
--- a/drivers/mtd/nand/raw/nand_base.c
+++ b/drivers/mtd/nand/raw/nand_base.c
@@ -53,6 +53,7 @@
 #include <asm/io.h>
 #include <linux/errno.h>
 #include <linux/printk.h>
+#include <linux/string.h>
 
 /* Define default oob placement schemes for large and small page devices */
 #ifndef CONFIG_SYS_NAND_DRIVER_ECC_LAYOUT
diff --git a/drivers/mtd/nand/raw/nand_bch.c b/drivers/mtd/nand/raw/nand_bch.c
index bb48ebbb96c..5733bcb9c62 100644
--- a/drivers/mtd/nand/raw/nand_bch.c
+++ b/drivers/mtd/nand/raw/nand_bch.c
@@ -11,6 +11,7 @@
 #include <log.h>
 #include <dm/devres.h>
 #include <linux/printk.h>
+#include <linux/string.h>
 /*#include <asm/io.h>*/
 #include <linux/types.h>
 
diff --git a/drivers/mtd/nand/raw/nand_spl_loaders.c b/drivers/mtd/nand/raw/nand_spl_loaders.c
index 4befc75c047..f297205bc79 100644
--- a/drivers/mtd/nand/raw/nand_spl_loaders.c
+++ b/drivers/mtd/nand/raw/nand_spl_loaders.c
@@ -1,3 +1,4 @@
+#include <linux/string.h>
 int nand_spl_load_image(uint32_t offs, unsigned int size, void *dst)
 {
 	unsigned int block, lastblock;
diff --git a/drivers/mtd/nand/raw/nand_util.c b/drivers/mtd/nand/raw/nand_util.c
index 5b74ef0dfdb..264a1efada9 100644
--- a/drivers/mtd/nand/raw/nand_util.c
+++ b/drivers/mtd/nand/raw/nand_util.c
@@ -27,6 +27,7 @@
 #include <div64.h>
 #include <asm/cache.h>
 #include <dm/devres.h>
+#include <linux/string.h>
 
 #include <linux/errno.h>
 #include <linux/mtd/mtd.h>
diff --git a/drivers/mtd/nand/raw/omap_gpmc.c b/drivers/mtd/nand/raw/omap_gpmc.c
index 97fd5690f51..9fef305da1c 100644
--- a/drivers/mtd/nand/raw/omap_gpmc.c
+++ b/drivers/mtd/nand/raw/omap_gpmc.c
@@ -15,6 +15,7 @@
 #include <linux/compiler.h>
 #include <nand.h>
 #include <linux/mtd/omap_elm.h>
+#include <linux/string.h>
 
 #define BADBLOCK_MARKER_LENGTH	2
 #define SECTOR_BYTES		512
diff --git a/drivers/mtd/nand/raw/pxa3xx_nand.c b/drivers/mtd/nand/raw/pxa3xx_nand.c
index bccaa2d8212..e222fb994b0 100644
--- a/drivers/mtd/nand/raw/pxa3xx_nand.c
+++ b/drivers/mtd/nand/raw/pxa3xx_nand.c
@@ -24,6 +24,7 @@
 #include <linux/mtd/mtd.h>
 #include <linux/mtd/rawnand.h>
 #include <linux/printk.h>
+#include <linux/string.h>
 #include <linux/types.h>
 
 #include "pxa3xx_nand.h"
diff --git a/drivers/mtd/nand/raw/sunxi_nand.c b/drivers/mtd/nand/raw/sunxi_nand.c
index 606e606fe8b..5fd741f1124 100644
--- a/drivers/mtd/nand/raw/sunxi_nand.c
+++ b/drivers/mtd/nand/raw/sunxi_nand.c
@@ -37,6 +37,7 @@
 #include <linux/delay.h>
 #include <linux/err.h>
 #include <linux/printk.h>
+#include <linux/string.h>
 
 #include <linux/kernel.h>
 #include <linux/mtd/mtd.h>
diff --git a/drivers/mtd/nand/raw/sunxi_nand_spl.c b/drivers/mtd/nand/raw/sunxi_nand_spl.c
index 85d8013b1a6..942f2366849 100644
--- a/drivers/mtd/nand/raw/sunxi_nand_spl.c
+++ b/drivers/mtd/nand/raw/sunxi_nand_spl.c
@@ -12,6 +12,7 @@
 #include <linux/bitops.h>
 #include <linux/ctype.h>
 #include <linux/delay.h>
+#include <linux/string.h>
 
 /* registers */
 #define NFC_CTL                    0x00000000
diff --git a/drivers/mtd/nand/raw/tegra_nand.c b/drivers/mtd/nand/raw/tegra_nand.c
index a28f830e8cd..0b81fe1d487 100644
--- a/drivers/mtd/nand/raw/tegra_nand.c
+++ b/drivers/mtd/nand/raw/tegra_nand.c
@@ -24,6 +24,7 @@
 #include <bouncebuf.h>
 #include <dm.h>
 #include <linux/printk.h>
+#include <linux/string.h>
 #include "tegra_nand.h"
 
 DECLARE_GLOBAL_DATA_PTR;
diff --git a/drivers/mtd/nand/raw/vf610_nfc.c b/drivers/mtd/nand/raw/vf610_nfc.c
index 02ca385ed2d..457efcc23e6 100644
--- a/drivers/mtd/nand/raw/vf610_nfc.c
+++ b/drivers/mtd/nand/raw/vf610_nfc.c
@@ -26,6 +26,7 @@
 #include <time.h>
 #include <dm/device_compat.h>
 #include <linux/printk.h>
+#include <linux/string.h>
 
 #include <linux/mtd/mtd.h>
 #include <linux/mtd/rawnand.h>
diff --git a/drivers/mtd/nand/spi/core.c b/drivers/mtd/nand/spi/core.c
index ae8932d377c..87494854fc2 100644
--- a/drivers/mtd/nand/spi/core.c
+++ b/drivers/mtd/nand/spi/core.c
@@ -31,6 +31,7 @@
 #include <linux/bug.h>
 #include <linux/mtd/spinand.h>
 #include <linux/printk.h>
+#include <linux/string.h>
 #endif
 
 /* SPI NAND index visible in MTD names */
diff --git a/drivers/mtd/onenand/onenand_base.c b/drivers/mtd/onenand/onenand_base.c
index cfc137c6b95..bd73642752b 100644
--- a/drivers/mtd/onenand/onenand_base.c
+++ b/drivers/mtd/onenand/onenand_base.c
@@ -28,6 +28,7 @@
 #include <linux/compat.h>
 #include <linux/mtd/mtd.h>
 #include <linux/printk.h>
+#include <linux/string.h>
 #include "linux/mtd/flashchip.h"
 #include <linux/mtd/onenand.h>
 
diff --git a/drivers/mtd/onenand/onenand_bbt.c b/drivers/mtd/onenand/onenand_bbt.c
index cc1e449f4a7..026280e5e62 100644
--- a/drivers/mtd/onenand/onenand_bbt.c
+++ b/drivers/mtd/onenand/onenand_bbt.c
@@ -21,6 +21,7 @@
 #include <linux/mtd/onenand.h>
 #include <malloc.h>
 #include <linux/printk.h>
+#include <linux/string.h>
 
 #include <linux/errno.h>
 
diff --git a/drivers/mtd/onenand/onenand_spl.c b/drivers/mtd/onenand/onenand_spl.c
index ab6f1a8be3e..463ec9b8d50 100644
--- a/drivers/mtd/onenand/onenand_spl.c
+++ b/drivers/mtd/onenand/onenand_spl.c
@@ -12,6 +12,7 @@
 #include <linux/bitops.h>
 #include <linux/mtd/onenand_regs.h>
 #include <onenand_uboot.h>
+#include <linux/string.h>
 
 /*
  * Device geometry:
diff --git a/drivers/mtd/onenand/onenand_uboot.c b/drivers/mtd/onenand/onenand_uboot.c
index 3a8c7b867eb..b6ec9eecda6 100644
--- a/drivers/mtd/onenand/onenand_uboot.c
+++ b/drivers/mtd/onenand/onenand_uboot.c
@@ -18,6 +18,7 @@
 #include <linux/compat.h>
 #include <linux/mtd/mtd.h>
 #include <linux/mtd/onenand.h>
+#include <linux/string.h>
 
 struct mtd_info onenand_mtd;
 struct onenand_chip onenand_chip;
diff --git a/drivers/mtd/onenand/samsung.c b/drivers/mtd/onenand/samsung.c
index c415e5149a0..27143d4d0a5 100644
--- a/drivers/mtd/onenand/samsung.c
+++ b/drivers/mtd/onenand/samsung.c
@@ -17,6 +17,7 @@
 #include <linux/mtd/flashchip.h>
 #include <linux/mtd/samsung_onenand.h>
 #include <linux/printk.h>
+#include <linux/string.h>
 
 #include <asm/io.h>
 #include <linux/errno.h>
diff --git a/drivers/mtd/pic32_flash.c b/drivers/mtd/pic32_flash.c
index ea0dbe9eeee..71f22406bad 100644
--- a/drivers/mtd/pic32_flash.c
+++ b/drivers/mtd/pic32_flash.c
@@ -14,6 +14,7 @@
 #include <irq_func.h>
 #include <asm/global_data.h>
 #include <linux/bitops.h>
+#include <linux/string.h>
 #include <mach/pic32.h>
 #include <wait_bit.h>
 
diff --git a/drivers/mtd/spi/fsl_espi_spl.c b/drivers/mtd/spi/fsl_espi_spl.c
index 5c41d7558c2..9c997574884 100644
--- a/drivers/mtd/spi/fsl_espi_spl.c
+++ b/drivers/mtd/spi/fsl_espi_spl.c
@@ -8,6 +8,7 @@
 #include <hang.h>
 #include <spi_flash.h>
 #include <malloc.h>
+#include <linux/string.h>
 
 #define ESPI_BOOT_IMAGE_SIZE	0x48
 #define ESPI_BOOT_IMAGE_ADDR	0x50
diff --git a/drivers/mtd/spi/sandbox.c b/drivers/mtd/spi/sandbox.c
index 0b602dc9140..a63e92d0340 100644
--- a/drivers/mtd/spi/sandbox.c
+++ b/drivers/mtd/spi/sandbox.c
@@ -16,6 +16,7 @@
 #include <malloc.h>
 #include <spi.h>
 #include <os.h>
+#include <linux/string.h>
 
 #include <spi_flash.h>
 #include "sf_internal.h"
diff --git a/drivers/mtd/spi/sf-uclass.c b/drivers/mtd/spi/sf-uclass.c
index 121804e3269..5e96d3dc6c8 100644
--- a/drivers/mtd/spi/sf-uclass.c
+++ b/drivers/mtd/spi/sf-uclass.c
@@ -11,6 +11,7 @@
 #include <spi_flash.h>
 #include <asm/global_data.h>
 #include <dm/device-internal.h>
+#include <linux/string.h>
 #include "sf_internal.h"
 
 DECLARE_GLOBAL_DATA_PTR;
diff --git a/drivers/mtd/spi/sf_dataflash.c b/drivers/mtd/spi/sf_dataflash.c
index c292ddfb893..11a396f11a2 100644
--- a/drivers/mtd/spi/sf_dataflash.c
+++ b/drivers/mtd/spi/sf_dataflash.c
@@ -20,6 +20,7 @@
 #include <linux/delay.h>
 #include <linux/err.h>
 #include <linux/math64.h>
+#include <linux/string.h>
 
 #include "sf_internal.h"
 
diff --git a/drivers/mtd/spi/sf_mtd.c b/drivers/mtd/spi/sf_mtd.c
index 987fac2501f..1d8276d59d6 100644
--- a/drivers/mtd/spi/sf_mtd.c
+++ b/drivers/mtd/spi/sf_mtd.c
@@ -9,6 +9,7 @@
 #include <linux/errno.h>
 #include <linux/mtd/mtd.h>
 #include <spi_flash.h>
+#include <linux/string.h>
 
 static struct mtd_info sf_mtd_info;
 static bool sf_mtd_registered;
diff --git a/drivers/mtd/spi/sf_probe.c b/drivers/mtd/spi/sf_probe.c
index 475f6c31dbd..31b42f42b17 100644
--- a/drivers/mtd/spi/sf_probe.c
+++ b/drivers/mtd/spi/sf_probe.c
@@ -14,6 +14,7 @@
 #include <malloc.h>
 #include <spi.h>
 #include <spi_flash.h>
+#include <linux/string.h>
 
 #include "sf_internal.h"
 
diff --git a/drivers/mtd/spi/spi-nor-core.c b/drivers/mtd/spi/spi-nor-core.c
index 3baac137aed..b765a05e5cf 100644
--- a/drivers/mtd/spi/spi-nor-core.c
+++ b/drivers/mtd/spi/spi-nor-core.c
@@ -22,6 +22,7 @@
 #include <linux/math64.h>
 #include <linux/printk.h>
 #include <linux/sizes.h>
+#include <linux/string.h>
 
 #include <linux/mtd/mtd.h>
 #include <linux/mtd/spi-nor.h>
diff --git a/drivers/mtd/spi/spi-nor-tiny.c b/drivers/mtd/spi/spi-nor-tiny.c
index 532e9a2c9e4..2d9b3cac2fb 100644
--- a/drivers/mtd/spi/spi-nor-tiny.c
+++ b/drivers/mtd/spi/spi-nor-tiny.c
@@ -19,6 +19,7 @@
 #include <linux/math64.h>
 #include <linux/printk.h>
 #include <linux/sizes.h>
+#include <linux/string.h>
 
 #include <linux/mtd/mtd.h>
 #include <linux/mtd/spi-nor.h>
diff --git a/drivers/mtd/ubi/attach.c b/drivers/mtd/ubi/attach.c
index 2ef8fde3d32..7b9ca10ed2a 100644
--- a/drivers/mtd/ubi/attach.c
+++ b/drivers/mtd/ubi/attach.c
@@ -82,6 +82,7 @@
 #include <linux/bug.h>
 #include <linux/err.h>
 #include <linux/printk.h>
+#include <linux/string.h>
 #endif
 
 #include <linux/math64.h>
diff --git a/drivers/mtd/ubi/build.c b/drivers/mtd/ubi/build.c
index f4e72ae7e56..a449b21b5bf 100644
--- a/drivers/mtd/ubi/build.c
+++ b/drivers/mtd/ubi/build.c
@@ -34,6 +34,7 @@
 #include <linux/bug.h>
 #include <linux/log2.h>
 #include <linux/printk.h>
+#include <linux/string.h>
 #endif
 #include <linux/err.h>
 #include <ubi_uboot.h>
diff --git a/drivers/mtd/ubi/debug.c b/drivers/mtd/ubi/debug.c
index b119cb6e9c0..393419bd137 100644
--- a/drivers/mtd/ubi/debug.c
+++ b/drivers/mtd/ubi/debug.c
@@ -9,6 +9,7 @@
 #include <malloc.h>
 #include <ubi_uboot.h>
 #include <linux/printk.h>
+#include <linux/string.h>
 #include "ubi.h"
 #ifndef __UBOOT__
 #include <linux/debugfs.h>
diff --git a/drivers/mtd/ubi/eba.c b/drivers/mtd/ubi/eba.c
index 9d4337bcfff..9fe5ed79125 100644
--- a/drivers/mtd/ubi/eba.c
+++ b/drivers/mtd/ubi/eba.c
@@ -36,6 +36,7 @@
 #include <u-boot/crc.h>
 #else
 #include <ubi_uboot.h>
+#include <linux/string.h>
 #endif
 
 #include <linux/err.h>
diff --git a/drivers/mtd/ubi/fastmap.c b/drivers/mtd/ubi/fastmap.c
index b54b56375b4..90ed73b8577 100644
--- a/drivers/mtd/ubi/fastmap.c
+++ b/drivers/mtd/ubi/fastmap.c
@@ -17,6 +17,7 @@
 #include <malloc.h>
 #include <ubi_uboot.h>
 #include <linux/bug.h>
+#include <linux/string.h>
 #endif
 
 #include <linux/compat.h>
diff --git a/drivers/mtd/ubi/io.c b/drivers/mtd/ubi/io.c
index b8b878b9182..ef819a86d27 100644
--- a/drivers/mtd/ubi/io.c
+++ b/drivers/mtd/ubi/io.c
@@ -83,6 +83,7 @@
 #else
 #include <hexdump.h>
 #include <ubi_uboot.h>
+#include <linux/string.h>
 #endif
 
 #include "ubi.h"
diff --git a/drivers/mtd/ubi/kapi.c b/drivers/mtd/ubi/kapi.c
index 41680cdad13..3fac8b2b308 100644
--- a/drivers/mtd/ubi/kapi.c
+++ b/drivers/mtd/ubi/kapi.c
@@ -16,6 +16,7 @@
 #include <asm/div64.h>
 #else
 #include <ubi_uboot.h>
+#include <linux/string.h>
 #endif
 #include <linux/err.h>
 
diff --git a/drivers/mtd/ubi/upd.c b/drivers/mtd/ubi/upd.c
index 28a362aa14a..c4856b6c11e 100644
--- a/drivers/mtd/ubi/upd.c
+++ b/drivers/mtd/ubi/upd.c
@@ -32,6 +32,7 @@
 #else
 #include <div64.h>
 #include <ubi_uboot.h>
+#include <linux/string.h>
 #endif
 #include <linux/err.h>
 #include <linux/math64.h>
diff --git a/drivers/mtd/ubi/vmt.c b/drivers/mtd/ubi/vmt.c
index 0bfedd0debd..da68f3519da 100644
--- a/drivers/mtd/ubi/vmt.c
+++ b/drivers/mtd/ubi/vmt.c
@@ -19,6 +19,7 @@
 #else
 #include <div64.h>
 #include <ubi_uboot.h>
+#include <linux/string.h>
 #endif
 #include <linux/math64.h>
 
diff --git a/drivers/mtd/ubi/vtbl.c b/drivers/mtd/ubi/vtbl.c
index a2b5352cb2d..cb4de78fcbb 100644
--- a/drivers/mtd/ubi/vtbl.c
+++ b/drivers/mtd/ubi/vtbl.c
@@ -56,6 +56,7 @@
 #else
 #include <ubi_uboot.h>
 #include <linux/bug.h>
+#include <linux/string.h>
 #endif
 
 #include <linux/err.h>
diff --git a/drivers/mtd/ubispl/ubispl.c b/drivers/mtd/ubispl/ubispl.c
index 03b31f002b9..3ffad548535 100644
--- a/drivers/mtd/ubispl/ubispl.c
+++ b/drivers/mtd/ubispl/ubispl.c
@@ -10,6 +10,7 @@
 #include <common.h>
 #include <errno.h>
 #include <linux/bug.h>
+#include <linux/string.h>
 #include <u-boot/crc.h>
 #include <ubispl.h>
 
diff --git a/drivers/net/ag7xxx.c b/drivers/net/ag7xxx.c
index 48cf45d9a8f..7171479c80d 100644
--- a/drivers/net/ag7xxx.c
+++ b/drivers/net/ag7xxx.c
@@ -25,6 +25,7 @@
 #include <linux/mii.h>
 #include <wait_bit.h>
 #include <asm/io.h>
+#include <linux/string.h>
 
 #include <mach/ath79.h>
 
diff --git a/drivers/net/altera_tse.c b/drivers/net/altera_tse.c
index 8b4ab9627c3..e9793762800 100644
--- a/drivers/net/altera_tse.c
+++ b/drivers/net/altera_tse.c
@@ -22,6 +22,7 @@
 #include <asm/global_data.h>
 #include <linux/dma-mapping.h>
 #include <asm/io.h>
+#include <linux/string.h>
 #include "altera_tse.h"
 
 DECLARE_GLOBAL_DATA_PTR;
diff --git a/drivers/net/armada100_fec.c b/drivers/net/armada100_fec.c
index 018891e173c..2dbd2d870b3 100644
--- a/drivers/net/armada100_fec.c
+++ b/drivers/net/armada100_fec.c
@@ -22,6 +22,7 @@
 #include <linux/mii.h>
 #include <asm/io.h>
 #include <asm/arch/armada100.h>
+#include <linux/string.h>
 #include "armada100_fec.h"
 
 #define  PHY_ADR_REQ     0xFF	/* Magic number to read/write PHY address */
diff --git a/drivers/net/at91_emac.c b/drivers/net/at91_emac.c
index e40b94ad892..b6282938788 100644
--- a/drivers/net/at91_emac.c
+++ b/drivers/net/at91_emac.c
@@ -20,6 +20,7 @@
 #include <miiphy.h>
 #include <linux/delay.h>
 #include <linux/mii.h>
+#include <linux/string.h>
 
 #undef MII_DEBUG
 #undef ET_DEBUG
diff --git a/drivers/net/ax88180.c b/drivers/net/ax88180.c
index 402bcdb63ed..a679b6529ff 100644
--- a/drivers/net/ax88180.c
+++ b/drivers/net/ax88180.c
@@ -44,6 +44,7 @@
 #include <malloc.h>
 #include <linux/delay.h>
 #include <linux/mii.h>
+#include <linux/string.h>
 #include "ax88180.h"
 
 /*
diff --git a/drivers/net/bcm-sf2-eth-gmac.c b/drivers/net/bcm-sf2-eth-gmac.c
index cbe1e85222f..3ab5841a7d0 100644
--- a/drivers/net/bcm-sf2-eth-gmac.c
+++ b/drivers/net/bcm-sf2-eth-gmac.c
@@ -8,6 +8,7 @@
 #define DEBUG
 #include <linux/printk.h>
 #endif
+#include <linux/string.h>
 #endif
 
 #include <config.h>
diff --git a/drivers/net/bcm-sf2-eth.c b/drivers/net/bcm-sf2-eth.c
index 040b72e6db0..7ffdd87449a 100644
--- a/drivers/net/bcm-sf2-eth.c
+++ b/drivers/net/bcm-sf2-eth.c
@@ -10,6 +10,7 @@
 #include <config.h>
 #include <linux/delay.h>
 #include <linux/printk.h>
+#include <linux/string.h>
 
 #include <phy.h>
 #include <miiphy.h>
diff --git a/drivers/net/bcm6368-eth.c b/drivers/net/bcm6368-eth.c
index f626412ef00..8b020535006 100644
--- a/drivers/net/bcm6368-eth.c
+++ b/drivers/net/bcm6368-eth.c
@@ -20,6 +20,7 @@
 #include <dm/device_compat.h>
 #include <linux/delay.h>
 #include <linux/printk.h>
+#include <linux/string.h>
 
 #define ETH_PORT_STR			"brcm,enetsw-port"
 
diff --git a/drivers/net/calxedaxgmac.c b/drivers/net/calxedaxgmac.c
index 8b2ee49b441..75b519ccfd1 100644
--- a/drivers/net/calxedaxgmac.c
+++ b/drivers/net/calxedaxgmac.c
@@ -10,6 +10,7 @@
 #include <linux/delay.h>
 #include <linux/err.h>
 #include <asm/io.h>
+#include <linux/string.h>
 
 #define TX_NUM_DESC			1
 #define RX_NUM_DESC			32
diff --git a/drivers/net/dc2114x.c b/drivers/net/dc2114x.c
index 9f8c6c58d95..8eacba7083c 100644
--- a/drivers/net/dc2114x.c
+++ b/drivers/net/dc2114x.c
@@ -9,6 +9,7 @@
 #include <pci.h>
 #include <linux/bitops.h>
 #include <linux/delay.h>
+#include <linux/string.h>
 
 #define SROM_DLEVEL	0
 
diff --git a/drivers/net/designware.c b/drivers/net/designware.c
index c2f3a6483dd..490db2b69fc 100644
--- a/drivers/net/designware.c
+++ b/drivers/net/designware.c
@@ -29,6 +29,7 @@
 #include <linux/kernel.h>
 #include <asm/io.h>
 #include <linux/printk.h>
+#include <linux/string.h>
 #include <power/regulator.h>
 #include "designware.h"
 
diff --git a/drivers/net/dm9000x.c b/drivers/net/dm9000x.c
index 3ff3824d52f..9860830da09 100644
--- a/drivers/net/dm9000x.c
+++ b/drivers/net/dm9000x.c
@@ -56,6 +56,7 @@ TODO: external MII is not functional, only internal at the moment.
 #include <asm/io.h>
 #include <dm9000.h>
 #include <linux/delay.h>
+#include <linux/string.h>
 
 #include "dm9000x.h"
 
diff --git a/drivers/net/dnet.c b/drivers/net/dnet.c
index fbcf15f2680..888a9990efe 100644
--- a/drivers/net/dnet.c
+++ b/drivers/net/dnet.c
@@ -11,6 +11,7 @@
 #include <common.h>
 #include <log.h>
 #include <linux/delay.h>
+#include <linux/string.h>
 
 #ifndef CONFIG_DNET_AUTONEG_TIMEOUT
 #define CONFIG_DNET_AUTONEG_TIMEOUT	5000000	/* default value */
diff --git a/drivers/net/dwc_eth_qos.c b/drivers/net/dwc_eth_qos.c
index 299d1ad5eb2..84fbe0ff3c1 100644
--- a/drivers/net/dwc_eth_qos.c
+++ b/drivers/net/dwc_eth_qos.c
@@ -52,6 +52,7 @@
 #include <linux/bitops.h>
 #include <linux/delay.h>
 #include <linux/printk.h>
+#include <linux/string.h>
 
 /* Core registers */
 
diff --git a/drivers/net/e1000.c b/drivers/net/e1000.c
index 49be7667021..cf2c56cd123 100644
--- a/drivers/net/e1000.c
+++ b/drivers/net/e1000.c
@@ -40,6 +40,7 @@ tested on both gig copper and gig fiber boards
 #include <net.h>
 #include <pci.h>
 #include <linux/delay.h>
+#include <linux/string.h>
 #include "e1000.h"
 #include <asm/cache.h>
 
diff --git a/drivers/net/e1000_spi.c b/drivers/net/e1000_spi.c
index 4fcc65d9782..ed3e987b12b 100644
--- a/drivers/net/e1000_spi.c
+++ b/drivers/net/e1000_spi.c
@@ -2,6 +2,7 @@
 #include <command.h>
 #include <console.h>
 #include <linux/delay.h>
+#include <linux/string.h>
 #include "e1000.h"
 #include <malloc.h>
 #include <linux/compiler.h>
diff --git a/drivers/net/eepro100.c b/drivers/net/eepro100.c
index feba5327da4..392d44f89d7 100644
--- a/drivers/net/eepro100.c
+++ b/drivers/net/eepro100.c
@@ -13,6 +13,7 @@
 #include <netdev.h>
 #include <pci.h>
 #include <linux/delay.h>
+#include <linux/string.h>
 
 /* Ethernet chip registers. */
 #define SCB_STATUS		0	/* Rx/Command Unit Status *Word* */
diff --git a/drivers/net/ep93xx_eth.c b/drivers/net/ep93xx_eth.c
index d1d881d6bd9..a72d9c2471d 100644
--- a/drivers/net/ep93xx_eth.c
+++ b/drivers/net/ep93xx_eth.c
@@ -26,6 +26,7 @@
 #include <miiphy.h>
 #include <linux/bug.h>
 #include <linux/printk.h>
+#include <linux/string.h>
 #include <linux/types.h>
 #include "ep93xx_eth.h"
 
diff --git a/drivers/net/ethoc.c b/drivers/net/ethoc.c
index a93358af1a7..7c56b7242d4 100644
--- a/drivers/net/ethoc.c
+++ b/drivers/net/ethoc.c
@@ -21,6 +21,7 @@
 #include <miiphy.h>
 #include <asm/cache.h>
 #include <wait_bit.h>
+#include <linux/string.h>
 
 /* register offsets */
 #define	MODER		0x00
diff --git a/drivers/net/fec_mxc.c b/drivers/net/fec_mxc.c
index c0fc3133afb..eef443f5f63 100644
--- a/drivers/net/fec_mxc.c
+++ b/drivers/net/fec_mxc.c
@@ -21,6 +21,7 @@
 #include <asm/cache.h>
 #include <asm/global_data.h>
 #include <linux/delay.h>
+#include <linux/string.h>
 #include <power/regulator.h>
 
 #include <asm/io.h>
diff --git a/drivers/net/fm/eth.c b/drivers/net/fm/eth.c
index 2f433cedd09..252f9678799 100644
--- a/drivers/net/fm/eth.c
+++ b/drivers/net/fm/eth.c
@@ -25,6 +25,7 @@
 #include <fsl_tgec.h>
 #include <fsl_memac.h>
 #include <linux/delay.h>
+#include <linux/string.h>
 
 #include "fm.h"
 
diff --git a/drivers/net/fm/fm.c b/drivers/net/fm/fm.c
index bbb1738c4bd..247a1c13645 100644
--- a/drivers/net/fm/fm.c
+++ b/drivers/net/fm/fm.c
@@ -8,6 +8,7 @@
 #include <malloc.h>
 #include <asm/io.h>
 #include <linux/errno.h>
+#include <linux/string.h>
 #include <u-boot/crc.h>
 #ifdef CONFIG_DM_ETH
 #include <dm.h>
diff --git a/drivers/net/fm/init.c b/drivers/net/fm/init.c
index 2fed64205cb..8f1a45b3a22 100644
--- a/drivers/net/fm/init.c
+++ b/drivers/net/fm/init.c
@@ -14,6 +14,7 @@
 #else
 #include <asm/fsl_serdes.h>
 #endif
+#include <linux/string.h>
 
 #include "fm.h"
 
diff --git a/drivers/net/fm/memac_phy.c b/drivers/net/fm/memac_phy.c
index e15c28d5005..53e0760833c 100644
--- a/drivers/net/fm/memac_phy.c
+++ b/drivers/net/fm/memac_phy.c
@@ -11,6 +11,7 @@
 #include <asm/io.h>
 #include <fsl_memac.h>
 #include <fm_eth.h>
+#include <linux/string.h>
 
 #ifdef CONFIG_SYS_MEMAC_LITTLE_ENDIAN
 #define memac_out_32(a, v)	out_le32(a, v)
diff --git a/drivers/net/fm/tgec_phy.c b/drivers/net/fm/tgec_phy.c
index 22225c2f82f..ad6c08e431c 100644
--- a/drivers/net/fm/tgec_phy.c
+++ b/drivers/net/fm/tgec_phy.c
@@ -10,6 +10,7 @@
 #include <asm/io.h>
 #include <fsl_tgec.h>
 #include <fm_eth.h>
+#include <linux/string.h>
 
 /*
  * Write value to the PHY for this device to the register at regnum, waiting
diff --git a/drivers/net/fsl-mc/dpio/qbman_portal.c b/drivers/net/fsl-mc/dpio/qbman_portal.c
index 44ce00041ee..5a0bef9324f 100644
--- a/drivers/net/fsl-mc/dpio/qbman_portal.c
+++ b/drivers/net/fsl-mc/dpio/qbman_portal.c
@@ -7,6 +7,7 @@
 #include <malloc.h>
 #include <asm/arch/clock.h>
 #include <linux/bug.h>
+#include <linux/string.h>
 #include "qbman_portal.h"
 
 /* QBMan portal management command codes */
diff --git a/drivers/net/fsl-mc/dpio/qbman_sys.h b/drivers/net/fsl-mc/dpio/qbman_sys.h
index fb760b94f85..e320e9b905e 100644
--- a/drivers/net/fsl-mc/dpio/qbman_sys.h
+++ b/drivers/net/fsl-mc/dpio/qbman_sys.h
@@ -22,6 +22,7 @@
  * required. */
 #include <linux/bug.h>
 #include <linux/printk.h>
+#include <linux/string.h>
 #undef QBMAN_CCSR_TRACE
 #undef QBMAN_CINH_TRACE
 #undef QBMAN_CENA_TRACE
diff --git a/drivers/net/fsl-mc/mc.c b/drivers/net/fsl-mc/mc.c
index 26e9523288e..e088d1fc12d 100644
--- a/drivers/net/fsl-mc/mc.c
+++ b/drivers/net/fsl-mc/mc.c
@@ -28,6 +28,7 @@
 #include <fsl-mc/fsl_dpsparser.h>
 #include <fsl-mc/fsl_qbman_portal.h>
 #include <fsl-mc/ldpaa_wriop.h>
+#include <linux/string.h>
 
 #define MC_RAM_BASE_ADDR_ALIGNMENT  (512UL * 1024 * 1024)
 #define MC_RAM_BASE_ADDR_ALIGNMENT_MASK	(~(MC_RAM_BASE_ADDR_ALIGNMENT - 1))
diff --git a/drivers/net/fsl_enetc.c b/drivers/net/fsl_enetc.c
index 2929ae72092..d983841bafd 100644
--- a/drivers/net/fsl_enetc.c
+++ b/drivers/net/fsl_enetc.c
@@ -17,6 +17,7 @@
 #include <miiphy.h>
 #include <linux/bug.h>
 #include <linux/delay.h>
+#include <linux/string.h>
 
 #include "fsl_enetc.h"
 
diff --git a/drivers/net/fsl_mcdmafec.c b/drivers/net/fsl_mcdmafec.c
index f3eea57fb9a..62f9d00ece3 100644
--- a/drivers/net/fsl_mcdmafec.c
+++ b/drivers/net/fsl_mcdmafec.c
@@ -23,6 +23,7 @@
 #include <linux/mii.h>
 #include <asm/immap.h>
 #include <asm/fsl_mcdmafec.h>
+#include <linux/string.h>
 
 #include "MCD_dma.h"
 
diff --git a/drivers/net/fsl_mdio.c b/drivers/net/fsl_mdio.c
index d2edd1751c3..5f692a27f23 100644
--- a/drivers/net/fsl_mdio.c
+++ b/drivers/net/fsl_mdio.c
@@ -11,6 +11,7 @@
 #include <fsl_mdio.h>
 #include <asm/io.h>
 #include <linux/errno.h>
+#include <linux/string.h>
 
 #ifdef CONFIG_DM_MDIO
 struct tsec_mdio_priv {
diff --git a/drivers/net/ftmac100.c b/drivers/net/ftmac100.c
index 4b94fd6405a..c61d13aa21f 100644
--- a/drivers/net/ftmac100.c
+++ b/drivers/net/ftmac100.c
@@ -16,6 +16,7 @@
 #include <asm/global_data.h>
 #include <linux/delay.h>
 #include <linux/io.h>
+#include <linux/string.h>
 
 #include "ftmac100.h"
 #ifdef CONFIG_DM_ETH
diff --git a/drivers/net/ftmac110.c b/drivers/net/ftmac110.c
index d4a92a70e73..f186148b619 100644
--- a/drivers/net/ftmac110.c
+++ b/drivers/net/ftmac110.c
@@ -16,6 +16,7 @@
 #include <linux/errno.h>
 #include <asm/io.h>
 #include <linux/dma-mapping.h>
+#include <linux/string.h>
 
 #if defined(CONFIG_MII) || defined(CONFIG_CMD_MII)
 #include <miiphy.h>
diff --git a/drivers/net/gmac_rockchip.c b/drivers/net/gmac_rockchip.c
index 98d7c39f9fe..7cd2451e084 100644
--- a/drivers/net/gmac_rockchip.c
+++ b/drivers/net/gmac_rockchip.c
@@ -28,6 +28,7 @@
 #include <dm/pinctrl.h>
 #include <dt-bindings/clock/rk3288-cru.h>
 #include <linux/bitops.h>
+#include <linux/string.h>
 #include "designware.h"
 
 DECLARE_GLOBAL_DATA_PTR;
diff --git a/drivers/net/higmacv300.c b/drivers/net/higmacv300.c
index 2aae7f4863c..0c71c51ceb4 100644
--- a/drivers/net/higmacv300.c
+++ b/drivers/net/higmacv300.c
@@ -18,6 +18,7 @@
 #include <net.h>
 #include <reset.h>
 #include <wait_bit.h>
+#include <linux/string.h>
 
 #define STATION_ADDR_LOW		0x0000
 #define STATION_ADDR_HIGH		0x0004
diff --git a/drivers/net/lan91c96.c b/drivers/net/lan91c96.c
index ce3c406ea6c..524e9455ccf 100644
--- a/drivers/net/lan91c96.c
+++ b/drivers/net/lan91c96.c
@@ -50,6 +50,7 @@
 #include <malloc.h>
 #include <time.h>
 #include <linux/delay.h>
+#include <linux/string.h>
 #include "lan91c96.h"
 #include <net.h>
 #include <linux/compiler.h>
diff --git a/drivers/net/ldpaa_eth/ldpaa_eth.c b/drivers/net/ldpaa_eth/ldpaa_eth.c
index bbd2aed0ab2..d5384b216ab 100644
--- a/drivers/net/ldpaa_eth/ldpaa_eth.c
+++ b/drivers/net/ldpaa_eth/ldpaa_eth.c
@@ -20,6 +20,7 @@
 #include <linux/compat.h>
 #include <fsl-mc/fsl_dpmac.h>
 #include <linux/delay.h>
+#include <linux/string.h>
 
 #include <fsl-mc/ldpaa_wriop.h>
 #include "ldpaa_eth.h"
diff --git a/drivers/net/lpc32xx_eth.c b/drivers/net/lpc32xx_eth.c
index 3f281a515c6..b059accf524 100644
--- a/drivers/net/lpc32xx_eth.c
+++ b/drivers/net/lpc32xx_eth.c
@@ -19,6 +19,7 @@
 #include <asm/byteorder.h>
 #include <asm/arch/cpu.h>
 #include <asm/arch/config.h>
+#include <linux/string.h>
 
 /*
  * Notes:
diff --git a/drivers/net/macb.c b/drivers/net/macb.c
index cda9b16cc24..26939c6fa46 100644
--- a/drivers/net/macb.c
+++ b/drivers/net/macb.c
@@ -9,6 +9,7 @@
 #include <log.h>
 #include <asm/global_data.h>
 #include <linux/delay.h>
+#include <linux/string.h>
 
 /*
  * The u-boot networking stack is a little weird.  It seems like the
diff --git a/drivers/net/mcffec.c b/drivers/net/mcffec.c
index d881c5eb871..2d307b23afb 100644
--- a/drivers/net/mcffec.c
+++ b/drivers/net/mcffec.c
@@ -22,6 +22,7 @@
 #include <asm/immap.h>
 #include <linux/delay.h>
 #include <linux/mii.h>
+#include <linux/string.h>
 
 #undef	ET_DEBUG
 #undef	MII_DEBUG
diff --git a/drivers/net/mcfmii.c b/drivers/net/mcfmii.c
index da5075172fa..c99950d0e9e 100644
--- a/drivers/net/mcfmii.c
+++ b/drivers/net/mcfmii.c
@@ -10,6 +10,7 @@
 #include <netdev.h>
 #include <asm/global_data.h>
 #include <linux/delay.h>
+#include <linux/string.h>
 
 #ifdef CONFIG_MCF547x_8x
 #include <asm/fsl_mcdmafec.h>
diff --git a/drivers/net/mpc8xx_fec.c b/drivers/net/mpc8xx_fec.c
index 282c2599d3c..b6f805683e2 100644
--- a/drivers/net/mpc8xx_fec.c
+++ b/drivers/net/mpc8xx_fec.c
@@ -14,6 +14,7 @@
 #include <asm/global_data.h>
 #include <asm/io.h>
 #include <linux/delay.h>
+#include <linux/string.h>
 
 #include <phy.h>
 #include <linux/mii.h>
diff --git a/drivers/net/mscc_eswitch/jr2_switch.c b/drivers/net/mscc_eswitch/jr2_switch.c
index 97b2b081efb..92debab424f 100644
--- a/drivers/net/mscc_eswitch/jr2_switch.c
+++ b/drivers/net/mscc_eswitch/jr2_switch.c
@@ -18,6 +18,7 @@
 #include <net.h>
 #include <wait_bit.h>
 #include <linux/printk.h>
+#include <linux/string.h>
 
 #include <dt-bindings/mscc/jr2_data.h>
 #include "mscc_xfer.h"
diff --git a/drivers/net/mscc_eswitch/luton_switch.c b/drivers/net/mscc_eswitch/luton_switch.c
index 1d46d0e5e1e..79f4d19dad9 100644
--- a/drivers/net/mscc_eswitch/luton_switch.c
+++ b/drivers/net/mscc_eswitch/luton_switch.c
@@ -16,6 +16,7 @@
 #include <miiphy.h>
 #include <net.h>
 #include <wait_bit.h>
+#include <linux/string.h>
 
 #include "mscc_xfer.h"
 #include "mscc_mac_table.h"
diff --git a/drivers/net/mscc_eswitch/ocelot_switch.c b/drivers/net/mscc_eswitch/ocelot_switch.c
index bdadaa13c72..de8a44e48bc 100644
--- a/drivers/net/mscc_eswitch/ocelot_switch.c
+++ b/drivers/net/mscc_eswitch/ocelot_switch.c
@@ -18,6 +18,7 @@
 #include <net.h>
 #include <wait_bit.h>
 #include <linux/printk.h>
+#include <linux/string.h>
 
 #include "mscc_xfer.h"
 #include "mscc_mac_table.h"
diff --git a/drivers/net/mscc_eswitch/serval_switch.c b/drivers/net/mscc_eswitch/serval_switch.c
index bbced95f7e4..540799567ec 100644
--- a/drivers/net/mscc_eswitch/serval_switch.c
+++ b/drivers/net/mscc_eswitch/serval_switch.c
@@ -18,6 +18,7 @@
 #include <net.h>
 #include <wait_bit.h>
 #include <linux/printk.h>
+#include <linux/string.h>
 
 #include "mscc_xfer.h"
 #include "mscc_mac_table.h"
diff --git a/drivers/net/mscc_eswitch/servalt_switch.c b/drivers/net/mscc_eswitch/servalt_switch.c
index c8aaf7d4897..fc79d34b519 100644
--- a/drivers/net/mscc_eswitch/servalt_switch.c
+++ b/drivers/net/mscc_eswitch/servalt_switch.c
@@ -17,6 +17,7 @@
 #include <net.h>
 #include <wait_bit.h>
 #include <linux/printk.h>
+#include <linux/string.h>
 
 #include "mscc_xfer.h"
 #include "mscc_miim.h"
diff --git a/drivers/net/mt7628-eth.c b/drivers/net/mt7628-eth.c
index 8b278c62ba7..3bf8b636ea8 100644
--- a/drivers/net/mt7628-eth.c
+++ b/drivers/net/mt7628-eth.c
@@ -29,6 +29,7 @@
 #include <linux/delay.h>
 #include <linux/err.h>
 #include <linux/printk.h>
+#include <linux/string.h>
 
 /* Ethernet frame engine register */
 #define PDMA_RELATED		0x0800
diff --git a/drivers/net/mtk_eth.c b/drivers/net/mtk_eth.c
index 774c1e3bb51..7e769933996 100644
--- a/drivers/net/mtk_eth.c
+++ b/drivers/net/mtk_eth.c
@@ -28,6 +28,7 @@
 #include <linux/mdio.h>
 #include <linux/mii.h>
 #include <linux/printk.h>
+#include <linux/string.h>
 
 #include "mtk_eth.h"
 
diff --git a/drivers/net/mvgbe.c b/drivers/net/mvgbe.c
index bf5f6f4b672..5ceb37324f3 100644
--- a/drivers/net/mvgbe.c
+++ b/drivers/net/mvgbe.c
@@ -26,6 +26,7 @@
 #include <asm/system.h>
 #include <asm/byteorder.h>
 #include <asm/arch/cpu.h>
+#include <linux/string.h>
 
 #if defined(CONFIG_ARCH_KIRKWOOD)
 #include <asm/arch/soc.h>
diff --git a/drivers/net/mvneta.c b/drivers/net/mvneta.c
index 5fd668b5e42..6ee0e1c7897 100644
--- a/drivers/net/mvneta.c
+++ b/drivers/net/mvneta.c
@@ -37,6 +37,7 @@
 #include <linux/compat.h>
 #include <linux/mbus.h>
 #include <asm-generic/gpio.h>
+#include <linux/string.h>
 
 DECLARE_GLOBAL_DATA_PTR;
 
diff --git a/drivers/net/mvpp2.c b/drivers/net/mvpp2.c
index 37a8a7849f4..06eb619c002 100644
--- a/drivers/net/mvpp2.c
+++ b/drivers/net/mvpp2.c
@@ -43,6 +43,7 @@
 #include <asm-generic/gpio.h>
 #include <fdt_support.h>
 #include <linux/mdio.h>
+#include <linux/string.h>
 
 DECLARE_GLOBAL_DATA_PTR;
 
diff --git a/drivers/net/natsemi.c b/drivers/net/natsemi.c
index bfd8cc396b9..e44787d33ba 100644
--- a/drivers/net/natsemi.c
+++ b/drivers/net/natsemi.c
@@ -57,6 +57,7 @@
 #include <asm/io.h>
 #include <pci.h>
 #include <linux/delay.h>
+#include <linux/string.h>
 
 /* defines */
 #define EEPROM_SIZE 0xb /*12 16-bit chunks, or 24 bytes*/
diff --git a/drivers/net/ne2000_base.c b/drivers/net/ne2000_base.c
index 25c258dd3f7..2fad4671220 100644
--- a/drivers/net/ne2000_base.c
+++ b/drivers/net/ne2000_base.c
@@ -80,6 +80,7 @@ Add SNMP
 #include <malloc.h>
 #include <time.h>
 #include <linux/compiler.h>
+#include <linux/string.h>
 
 /* forward definition of function used for the uboot interface */
 void uboot_push_packet_len(int len);
diff --git a/drivers/net/netconsole.c b/drivers/net/netconsole.c
index f1d0630d020..432d2b0121c 100644
--- a/drivers/net/netconsole.c
+++ b/drivers/net/netconsole.c
@@ -10,6 +10,7 @@
 #include <log.h>
 #include <stdio_dev.h>
 #include <net.h>
+#include <linux/string.h>
 
 #ifndef CONFIG_NETCONSOLE_BUFFER_SIZE
 #define CONFIG_NETCONSOLE_BUFFER_SIZE 512
diff --git a/drivers/net/ns8382x.c b/drivers/net/ns8382x.c
index d79872af093..7192156a698 100644
--- a/drivers/net/ns8382x.c
+++ b/drivers/net/ns8382x.c
@@ -58,6 +58,7 @@
 #include <asm/io.h>
 #include <pci.h>
 #include <linux/delay.h>
+#include <linux/string.h>
 
 /* defines */
 #define DSIZE     0x00000FFF
diff --git a/drivers/net/pch_gbe.c b/drivers/net/pch_gbe.c
index 20d757f5dff..c1596a2cd35 100644
--- a/drivers/net/pch_gbe.c
+++ b/drivers/net/pch_gbe.c
@@ -16,6 +16,7 @@
 #include <pci.h>
 #include <miiphy.h>
 #include <linux/delay.h>
+#include <linux/string.h>
 #include "pch_gbe.h"
 
 #if !defined(CONFIG_PHYLIB)
diff --git a/drivers/net/pcnet.c b/drivers/net/pcnet.c
index 559560860bd..1f5cca71835 100644
--- a/drivers/net/pcnet.c
+++ b/drivers/net/pcnet.c
@@ -19,6 +19,7 @@
 #include <asm/io.h>
 #include <pci.h>
 #include <linux/delay.h>
+#include <linux/string.h>
 
 #define	PCNET_DEBUG_LEVEL	0	/* 0=off, 1=init, 2=rx/tx */
 
diff --git a/drivers/net/pfe_eth/pfe_cmd.c b/drivers/net/pfe_eth/pfe_cmd.c
index 1e69525cb71..f72413cf132 100644
--- a/drivers/net/pfe_eth/pfe_cmd.c
+++ b/drivers/net/pfe_eth/pfe_cmd.c
@@ -13,6 +13,7 @@
 #include <command.h>
 #include <log.h>
 #include <linux/delay.h>
+#include <linux/string.h>
 #include <net/pfe_eth/pfe_eth.h>
 
 static inline void pfe_command_help(void)
diff --git a/drivers/net/pfe_eth/pfe_driver.c b/drivers/net/pfe_eth/pfe_driver.c
index 6f443b4ea81..573ceabcf7e 100644
--- a/drivers/net/pfe_eth/pfe_driver.c
+++ b/drivers/net/pfe_eth/pfe_driver.c
@@ -7,6 +7,7 @@
 #include <log.h>
 #include <malloc.h>
 #include <linux/delay.h>
+#include <linux/string.h>
 #include <net/pfe_eth/pfe_eth.h>
 #include <net/pfe_eth/pfe_firmware.h>
 
diff --git a/drivers/net/pfe_eth/pfe_firmware.c b/drivers/net/pfe_eth/pfe_firmware.c
index 55e661c0e1d..1601ec48a59 100644
--- a/drivers/net/pfe_eth/pfe_firmware.c
+++ b/drivers/net/pfe_eth/pfe_firmware.c
@@ -14,6 +14,7 @@
 #include <log.h>
 #include <malloc.h>
 #include <linux/bitops.h>
+#include <linux/string.h>
 #include <net/pfe_eth/pfe_eth.h>
 #include <net/pfe_eth/pfe_firmware.h>
 #include <spi_flash.h>
diff --git a/drivers/net/pfe_eth/pfe_hw.c b/drivers/net/pfe_eth/pfe_hw.c
index 722f5c238fa..2889dd6b907 100644
--- a/drivers/net/pfe_eth/pfe_hw.c
+++ b/drivers/net/pfe_eth/pfe_hw.c
@@ -5,6 +5,7 @@
  */
 #include <log.h>
 #include <linux/bitops.h>
+#include <linux/string.h>
 #include <net/pfe_eth/pfe_eth.h>
 #include <net/pfe_eth/pfe/pfe_hw.h>
 
diff --git a/drivers/net/phy/aquantia.c b/drivers/net/phy/aquantia.c
index 68cd3d03fd0..59c7abeb667 100644
--- a/drivers/net/phy/aquantia.c
+++ b/drivers/net/phy/aquantia.c
@@ -13,6 +13,7 @@
 #include <phy.h>
 #include <linux/bitops.h>
 #include <linux/delay.h>
+#include <linux/string.h>
 #include <u-boot/crc.h>
 #include <malloc.h>
 #include <asm/byteorder.h>
diff --git a/drivers/net/phy/atheros.c b/drivers/net/phy/atheros.c
index f922fecd6b5..29db299c1e7 100644
--- a/drivers/net/phy/atheros.c
+++ b/drivers/net/phy/atheros.c
@@ -12,6 +12,7 @@
 #include <linux/bitfield.h>
 #include <linux/bitops.h>
 #include <dt-bindings/net/qca-ar803x.h>
+#include <linux/string.h>
 
 #define AR803x_PHY_DEBUG_ADDR_REG	0x1d
 #define AR803x_PHY_DEBUG_DATA_REG	0x1e
diff --git a/drivers/net/phy/b53.c b/drivers/net/phy/b53.c
index 21da53c7e5b..b376ef8f82b 100644
--- a/drivers/net/phy/b53.c
+++ b/drivers/net/phy/b53.c
@@ -26,6 +26,7 @@
 #include <command.h>
 #include <linux/bitops.h>
 #include <linux/delay.h>
+#include <linux/string.h>
 
 #include <errno.h>
 #include <malloc.h>
diff --git a/drivers/net/phy/fixed.c b/drivers/net/phy/fixed.c
index 3228672fc4a..d3e9e3e3d4a 100644
--- a/drivers/net/phy/fixed.c
+++ b/drivers/net/phy/fixed.c
@@ -12,6 +12,7 @@
 #include <dm.h>
 #include <fdt_support.h>
 #include <asm/global_data.h>
+#include <linux/string.h>
 
 DECLARE_GLOBAL_DATA_PTR;
 
diff --git a/drivers/net/phy/miiphybb.c b/drivers/net/phy/miiphybb.c
index bb5aa3513b6..6b031196f44 100644
--- a/drivers/net/phy/miiphybb.c
+++ b/drivers/net/phy/miiphybb.c
@@ -17,6 +17,7 @@
 #include <ppc_asm.tmpl>
 #include <miiphy.h>
 #include <asm/global_data.h>
+#include <linux/string.h>
 
 #define BB_MII_RELOCATE(v,off) (v += (v?off:0))
 
diff --git a/drivers/net/phy/mv88e61xx.c b/drivers/net/phy/mv88e61xx.c
index 7eff37b2449..832b538f5e9 100644
--- a/drivers/net/phy/mv88e61xx.c
+++ b/drivers/net/phy/mv88e61xx.c
@@ -33,6 +33,7 @@
 #include <log.h>
 #include <linux/bitops.h>
 #include <linux/delay.h>
+#include <linux/string.h>
 
 #include <bitfield.h>
 #include <errno.h>
diff --git a/drivers/net/phy/mv88e6352.c b/drivers/net/phy/mv88e6352.c
index 62a7f192149..40e0edc6d88 100644
--- a/drivers/net/phy/mv88e6352.c
+++ b/drivers/net/phy/mv88e6352.c
@@ -11,6 +11,7 @@
 #include <linux/delay.h>
 #include <linux/errno.h>
 #include <mv88e6352.h>
+#include <linux/string.h>
 
 #define SMI_HDR		((0x8 | 0x1) << 12)
 #define SMI_BUSY_MASK	(0x8000)
diff --git a/drivers/net/phy/ncsi.c b/drivers/net/phy/ncsi.c
index bf1e832be9f..862a1564a73 100644
--- a/drivers/net/phy/ncsi.c
+++ b/drivers/net/phy/ncsi.c
@@ -9,6 +9,7 @@
 #include <log.h>
 #include <malloc.h>
 #include <phy.h>
+#include <linux/string.h>
 #include <net/ncsi.h>
 #include <net/ncsi-pkt.h>
 #include <asm/unaligned.h>
diff --git a/drivers/net/phy/phy.c b/drivers/net/phy/phy.c
index f8254759386..030dc753824 100644
--- a/drivers/net/phy/phy.c
+++ b/drivers/net/phy/phy.c
@@ -22,6 +22,7 @@
 #include <linux/delay.h>
 #include <linux/err.h>
 #include <linux/compiler.h>
+#include <linux/string.h>
 
 DECLARE_GLOBAL_DATA_PTR;
 
diff --git a/drivers/net/pic32_mdio.c b/drivers/net/pic32_mdio.c
index d4049cfea52..802563960a1 100644
--- a/drivers/net/pic32_mdio.c
+++ b/drivers/net/pic32_mdio.c
@@ -12,6 +12,7 @@
 #include <wait_bit.h>
 #include <asm/io.h>
 #include <linux/delay.h>
+#include <linux/string.h>
 #include "pic32_eth.h"
 
 static int pic32_mdio_write(struct mii_dev *bus,
diff --git a/drivers/net/ravb.c b/drivers/net/ravb.c
index 6ab56e6e653..8f76279c7ee 100644
--- a/drivers/net/ravb.c
+++ b/drivers/net/ravb.c
@@ -25,6 +25,7 @@
 #include <wait_bit.h>
 #include <asm/io.h>
 #include <asm/gpio.h>
+#include <linux/string.h>
 
 /* Registers */
 #define RAVB_REG_CCC		0x000
diff --git a/drivers/net/rtl8139.c b/drivers/net/rtl8139.c
index 71f2aba4c70..1229e94185c 100644
--- a/drivers/net/rtl8139.c
+++ b/drivers/net/rtl8139.c
@@ -79,6 +79,7 @@
 #include <pci.h>
 #include <linux/bitops.h>
 #include <linux/delay.h>
+#include <linux/string.h>
 #include <linux/types.h>
 
 #define RTL_TIMEOUT	100000
diff --git a/drivers/net/rtl8169.c b/drivers/net/rtl8169.c
index 5ff99273a02..9157dd1e351 100644
--- a/drivers/net/rtl8169.c
+++ b/drivers/net/rtl8169.c
@@ -56,6 +56,7 @@
 #include <pci.h>
 #include <linux/delay.h>
 #include <linux/printk.h>
+#include <linux/string.h>
 
 #undef DEBUG_RTL8169
 #undef DEBUG_RTL8169_TX
diff --git a/drivers/net/sandbox-raw-bus.c b/drivers/net/sandbox-raw-bus.c
index fb1ba5a8c83..6b111d47eea 100644
--- a/drivers/net/sandbox-raw-bus.c
+++ b/drivers/net/sandbox-raw-bus.c
@@ -11,6 +11,7 @@
 #include <malloc.h>
 #include <dm/device-internal.h>
 #include <dm/lists.h>
+#include <linux/string.h>
 
 static int eth_raw_bus_post_bind(struct udevice *dev)
 {
diff --git a/drivers/net/sandbox-raw.c b/drivers/net/sandbox-raw.c
index 6dddae911b0..bda3ffd003b 100644
--- a/drivers/net/sandbox-raw.c
+++ b/drivers/net/sandbox-raw.c
@@ -14,6 +14,7 @@
 #include <malloc.h>
 #include <net.h>
 #include <asm/global_data.h>
+#include <linux/string.h>
 
 DECLARE_GLOBAL_DATA_PTR;
 
diff --git a/drivers/net/sandbox.c b/drivers/net/sandbox.c
index 555d9147d11..b63b3aaebcf 100644
--- a/drivers/net/sandbox.c
+++ b/drivers/net/sandbox.c
@@ -15,6 +15,7 @@
 #include <asm/eth.h>
 #include <asm/global_data.h>
 #include <asm/test.h>
+#include <linux/string.h>
 
 DECLARE_GLOBAL_DATA_PTR;
 
diff --git a/drivers/net/sh_eth.c b/drivers/net/sh_eth.c
index 49b4a91875a..8f2fe1515e6 100644
--- a/drivers/net/sh_eth.c
+++ b/drivers/net/sh_eth.c
@@ -22,6 +22,7 @@
 #include <linux/delay.h>
 #include <linux/errno.h>
 #include <asm/io.h>
+#include <linux/string.h>
 
 #ifdef CONFIG_DM_ETH
 #include <clk.h>
diff --git a/drivers/net/smc91111.c b/drivers/net/smc91111.c
index 3ae9f805a79..3ae55a1db7d 100644
--- a/drivers/net/smc91111.c
+++ b/drivers/net/smc91111.c
@@ -53,6 +53,7 @@
 #include <malloc.h>
 #include <time.h>
 #include <linux/delay.h>
+#include <linux/string.h>
 #include "smc91111.h"
 #include <net.h>
 
diff --git a/drivers/net/smc911x.c b/drivers/net/smc911x.c
index 09372d7f6ba..0ac1e3fb3d7 100644
--- a/drivers/net/smc911x.c
+++ b/drivers/net/smc911x.c
@@ -12,6 +12,7 @@
 #include <miiphy.h>
 #include <linux/io.h>
 #include <linux/delay.h>
+#include <linux/string.h>
 #include <linux/types.h>
 
 #include "smc911x.h"
diff --git a/drivers/net/sni_ave.c b/drivers/net/sni_ave.c
index 6e228da2984..9288355fb4a 100644
--- a/drivers/net/sni_ave.c
+++ b/drivers/net/sni_ave.c
@@ -24,6 +24,7 @@
 #include <linux/io.h>
 #include <linux/iopoll.h>
 #include <linux/printk.h>
+#include <linux/string.h>
 
 #define AVE_GRST_DELAY_MSEC	40
 #define AVE_MIN_XMITSIZE	60
diff --git a/drivers/net/sun8i_emac.c b/drivers/net/sun8i_emac.c
index e74cfa99324..77c03cbf301 100644
--- a/drivers/net/sun8i_emac.c
+++ b/drivers/net/sun8i_emac.c
@@ -34,6 +34,7 @@
 #if CONFIG_IS_ENABLED(DM_GPIO)
 #include <asm-generic/gpio.h>
 #endif
+#include <linux/string.h>
 
 #define MDIO_CMD_MII_BUSY		BIT(0)
 #define MDIO_CMD_MII_WRITE		BIT(1)
diff --git a/drivers/net/sunxi_emac.c b/drivers/net/sunxi_emac.c
index df18ecc0645..e1176454f2e 100644
--- a/drivers/net/sunxi_emac.c
+++ b/drivers/net/sunxi_emac.c
@@ -18,6 +18,7 @@
 #include <asm/io.h>
 #include <asm/arch/clock.h>
 #include <asm/arch/gpio.h>
+#include <linux/string.h>
 
 /* EMAC register  */
 struct emac_regs {
diff --git a/drivers/net/ti/cpsw-common.c b/drivers/net/ti/cpsw-common.c
index d5428274d19..9ed0b56cc80 100644
--- a/drivers/net/ti/cpsw-common.c
+++ b/drivers/net/ti/cpsw-common.c
@@ -13,6 +13,7 @@
 #include <cpsw.h>
 #include <dm/device_compat.h>
 #include <linux/printk.h>
+#include <linux/string.h>
 
 DECLARE_GLOBAL_DATA_PTR;
 
diff --git a/drivers/net/ti/cpsw.c b/drivers/net/ti/cpsw.c
index 7521deaaa97..044a74776c3 100644
--- a/drivers/net/ti/cpsw.c
+++ b/drivers/net/ti/cpsw.c
@@ -25,6 +25,7 @@
 #include <asm/arch/cpu.h>
 #include <dm.h>
 #include <linux/printk.h>
+#include <linux/string.h>
 
 #include "cpsw_mdio.h"
 
diff --git a/drivers/net/ti/davinci_emac.c b/drivers/net/ti/davinci_emac.c
index 56ea1fec0af..c2df17d3a6f 100644
--- a/drivers/net/ti/davinci_emac.c
+++ b/drivers/net/ti/davinci_emac.c
@@ -33,6 +33,7 @@
 #include <asm/arch/emac_defs.h>
 #include <asm/io.h>
 #include <linux/delay.h>
+#include <linux/string.h>
 #include "davinci_emac.h"
 
 unsigned int	emac_dbg = 0;
diff --git a/drivers/net/tsec.c b/drivers/net/tsec.c
index 5d12e4b7755..b7623bf85b1 100644
--- a/drivers/net/tsec.c
+++ b/drivers/net/tsec.c
@@ -20,6 +20,7 @@
 #include <linux/errno.h>
 #include <asm/processor.h>
 #include <asm/io.h>
+#include <linux/string.h>
 
 #ifndef CONFIG_DM_ETH
 /* Default initializations for TSEC controllers. */
diff --git a/drivers/net/uli526x.c b/drivers/net/uli526x.c
index 3191868cae5..3784f72b87e 100644
--- a/drivers/net/uli526x.c
+++ b/drivers/net/uli526x.c
@@ -17,6 +17,7 @@
 #include <pci.h>
 #include <miiphy.h>
 #include <linux/delay.h>
+#include <linux/string.h>
 
 /* some kernel function compatible define */
 
diff --git a/drivers/net/xilinx_axi_emac.c b/drivers/net/xilinx_axi_emac.c
index 2a2e0585a34..da571efde4e 100644
--- a/drivers/net/xilinx_axi_emac.c
+++ b/drivers/net/xilinx_axi_emac.c
@@ -19,6 +19,7 @@
 #include <miiphy.h>
 #include <wait_bit.h>
 #include <linux/delay.h>
+#include <linux/string.h>
 
 DECLARE_GLOBAL_DATA_PTR;
 
diff --git a/drivers/net/zynq_gem.c b/drivers/net/zynq_gem.c
index da4b6fba9ff..9d19e89090c 100644
--- a/drivers/net/zynq_gem.c
+++ b/drivers/net/zynq_gem.c
@@ -31,6 +31,7 @@
 #include <linux/bitops.h>
 #include <linux/err.h>
 #include <linux/errno.h>
+#include <linux/string.h>
 
 /* Bit/mask specification */
 #define ZYNQ_GEM_PHYMNTNC_OP_MASK	0x40020000 /* operation mask bits */
diff --git a/drivers/nvme/nvme.c b/drivers/nvme/nvme.c
index fc64d93ab83..6d8ab8bf786 100644
--- a/drivers/nvme/nvme.c
+++ b/drivers/nvme/nvme.c
@@ -16,6 +16,7 @@
 #include <time.h>
 #include <dm/device-internal.h>
 #include <linux/compat.h>
+#include <linux/string.h>
 #include "nvme.h"
 
 #define NVME_Q_DEPTH		2
diff --git a/drivers/pci/fsl_pci_init.c b/drivers/pci/fsl_pci_init.c
index e72a60c1318..ffd160439fd 100644
--- a/drivers/pci/fsl_pci_init.c
+++ b/drivers/pci/fsl_pci_init.c
@@ -11,6 +11,7 @@
 #include <asm/fsl_serdes.h>
 #include <asm/global_data.h>
 #include <linux/delay.h>
+#include <linux/string.h>
 
 DECLARE_GLOBAL_DATA_PTR;
 
diff --git a/drivers/pci/pci-uclass.c b/drivers/pci/pci-uclass.c
index b2f9e0638bd..b40765a3894 100644
--- a/drivers/pci/pci-uclass.c
+++ b/drivers/pci/pci-uclass.c
@@ -20,6 +20,7 @@
 #endif
 #include <linux/delay.h>
 #include <linux/printk.h>
+#include <linux/string.h>
 #include "pci_internal.h"
 
 DECLARE_GLOBAL_DATA_PTR;
diff --git a/drivers/pci/pci_ftpci100.c b/drivers/pci/pci_ftpci100.c
index 32fac878a67..f7a60172672 100644
--- a/drivers/pci/pci_ftpci100.c
+++ b/drivers/pci/pci_ftpci100.c
@@ -11,6 +11,7 @@
 #include <log.h>
 #include <malloc.h>
 #include <pci.h>
+#include <linux/string.h>
 
 #include <faraday/ftpci100.h>
 
diff --git a/drivers/pci/pci_rom.c b/drivers/pci/pci_rom.c
index c69919faafe..68b9949ba1e 100644
--- a/drivers/pci/pci_rom.c
+++ b/drivers/pci/pci_rom.c
@@ -41,6 +41,7 @@
 #include <acpi/acpi_s3.h>
 #include <asm/global_data.h>
 #include <linux/screen_info.h>
+#include <linux/string.h>
 
 DECLARE_GLOBAL_DATA_PTR;
 
diff --git a/drivers/pci/pci_tegra.c b/drivers/pci/pci_tegra.c
index abd4e26543b..8845dc451e5 100644
--- a/drivers/pci/pci_tegra.c
+++ b/drivers/pci/pci_tegra.c
@@ -24,6 +24,7 @@
 #include <time.h>
 #include <linux/delay.h>
 #include <linux/printk.h>
+#include <linux/string.h>
 
 #include <asm/io.h>
 #include <asm/gpio.h>
diff --git a/drivers/pci/pcie_imx.c b/drivers/pci/pcie_imx.c
index cbf12371a0f..16468e73364 100644
--- a/drivers/pci/pcie_imx.c
+++ b/drivers/pci/pcie_imx.c
@@ -24,6 +24,7 @@
 #include <linux/sizes.h>
 #include <errno.h>
 #include <asm/arch/sys_proto.h>
+#include <linux/string.h>
 
 #define PCI_ACCESS_READ  0
 #define PCI_ACCESS_WRITE 1
diff --git a/drivers/pci/pcie_layerscape_fixup_common.c b/drivers/pci/pcie_layerscape_fixup_common.c
index 814650f1e15..bba410e386f 100644
--- a/drivers/pci/pcie_layerscape_fixup_common.c
+++ b/drivers/pci/pcie_layerscape_fixup_common.c
@@ -12,6 +12,7 @@
 #include <asm/arch/clock.h>
 #include <asm/arch/soc.h>
 #include <linux/libfdt.h>
+#include <linux/string.h>
 #include "pcie_layerscape_fixup_common.h"
 
 void ft_pci_setup(void *blob, struct bd_info *bd)
diff --git a/drivers/pci_endpoint/sandbox-pci_ep.c b/drivers/pci_endpoint/sandbox-pci_ep.c
index 8e05d5ba890..d1e552a2466 100644
--- a/drivers/pci_endpoint/sandbox-pci_ep.c
+++ b/drivers/pci_endpoint/sandbox-pci_ep.c
@@ -9,6 +9,7 @@
 #include <pci.h>
 #include <pci_ep.h>
 #include <asm/test.h>
+#include <linux/string.h>
 
 /**
  * struct sandbox_pci_ep_priv - private data for driver
diff --git a/drivers/phy/allwinner/phy-sun4i-usb.c b/drivers/phy/allwinner/phy-sun4i-usb.c
index f050645044c..db62fd45f8f 100644
--- a/drivers/phy/allwinner/phy-sun4i-usb.c
+++ b/drivers/phy/allwinner/phy-sun4i-usb.c
@@ -26,6 +26,7 @@
 #include <linux/bitops.h>
 #include <linux/delay.h>
 #include <linux/err.h>
+#include <linux/string.h>
 
 #define REG_ISCR			0x00
 #define REG_PHYCTL_A10			0x04
diff --git a/drivers/phy/rockchip/phy-rockchip-inno-usb2.c b/drivers/phy/rockchip/phy-rockchip-inno-usb2.c
index 29749b4c3fa..75bd0fff5db 100644
--- a/drivers/phy/rockchip/phy-rockchip-inno-usb2.c
+++ b/drivers/phy/rockchip/phy-rockchip-inno-usb2.c
@@ -19,6 +19,7 @@
 #include <asm/io.h>
 #include <linux/iopoll.h>
 #include <asm/arch-rockchip/clock.h>
+#include <linux/string.h>
 
 DECLARE_GLOBAL_DATA_PTR;
 
diff --git a/drivers/phy/rockchip/phy-rockchip-typec.c b/drivers/phy/rockchip/phy-rockchip-typec.c
index 6a5dc7ee44f..9a9a653c7ef 100644
--- a/drivers/phy/rockchip/phy-rockchip-typec.c
+++ b/drivers/phy/rockchip/phy-rockchip-typec.c
@@ -21,6 +21,7 @@
 #include <asm/io.h>
 #include <linux/iopoll.h>
 #include <asm/arch-rockchip/clock.h>
+#include <linux/string.h>
 
 DECLARE_GLOBAL_DATA_PTR;
 
diff --git a/drivers/pinctrl/exynos/pinctrl-exynos.c b/drivers/pinctrl/exynos/pinctrl-exynos.c
index cc7ef799895..6034794f671 100644
--- a/drivers/pinctrl/exynos/pinctrl-exynos.c
+++ b/drivers/pinctrl/exynos/pinctrl-exynos.c
@@ -10,6 +10,7 @@
 #include <errno.h>
 #include <asm/global_data.h>
 #include <asm/io.h>
+#include <linux/string.h>
 #include "pinctrl-exynos.h"
 
 DECLARE_GLOBAL_DATA_PTR;
diff --git a/drivers/pinctrl/mtmips/pinctrl-mtmips-common.c b/drivers/pinctrl/mtmips/pinctrl-mtmips-common.c
index e361916eb28..d5262438e17 100644
--- a/drivers/pinctrl/mtmips/pinctrl-mtmips-common.c
+++ b/drivers/pinctrl/mtmips/pinctrl-mtmips-common.c
@@ -10,6 +10,7 @@
 #include <malloc.h>
 #include <dm/pinctrl.h>
 #include <linux/io.h>
+#include <linux/string.h>
 
 #include "pinctrl-mtmips-common.h"
 
diff --git a/drivers/pinctrl/mvebu/pinctrl-armada-37xx.c b/drivers/pinctrl/mvebu/pinctrl-armada-37xx.c
index b64ad9a21c6..7541898ac46 100644
--- a/drivers/pinctrl/mvebu/pinctrl-armada-37xx.c
+++ b/drivers/pinctrl/mvebu/pinctrl-armada-37xx.c
@@ -36,6 +36,7 @@
 #include <linux/bitops.h>
 #include <linux/libfdt.h>
 #include <linux/printk.h>
+#include <linux/string.h>
 
 DECLARE_GLOBAL_DATA_PTR;
 
diff --git a/drivers/pinctrl/pinctrl-generic.c b/drivers/pinctrl/pinctrl-generic.c
index 313aeccb1ee..7a2131d73ea 100644
--- a/drivers/pinctrl/pinctrl-generic.c
+++ b/drivers/pinctrl/pinctrl-generic.c
@@ -8,6 +8,7 @@
 #include <dm/device_compat.h>
 #include <linux/compat.h>
 #include <dm/pinctrl.h>
+#include <linux/string.h>
 
 /**
  * pinctrl_pin_name_to_selector() - return the pin selector for a pin
diff --git a/drivers/pinctrl/pinctrl-sandbox.c b/drivers/pinctrl/pinctrl-sandbox.c
index ac0119d1988..b3312294683 100644
--- a/drivers/pinctrl/pinctrl-sandbox.c
+++ b/drivers/pinctrl/pinctrl-sandbox.c
@@ -10,6 +10,7 @@
 #include <log.h>
 #include <dm/pinctrl.h>
 #include <linux/bitops.h>
+#include <linux/string.h>
 
 static const char * const sandbox_pins[] = {
 	"SCL",
diff --git a/drivers/pinctrl/pinctrl-stmfx.c b/drivers/pinctrl/pinctrl-stmfx.c
index c2ea82770e6..2c437c25f69 100644
--- a/drivers/pinctrl/pinctrl-stmfx.c
+++ b/drivers/pinctrl/pinctrl-stmfx.c
@@ -17,6 +17,7 @@
 #include <linux/bitfield.h>
 #include <linux/bitops.h>
 #include <linux/delay.h>
+#include <linux/string.h>
 #include <power/regulator.h>
 
 /* STMFX pins = GPIO[15:0] + aGPIO[7:0] */
diff --git a/drivers/pinctrl/rockchip/pinctrl-rockchip-core.c b/drivers/pinctrl/rockchip/pinctrl-rockchip-core.c
index 8abad950431..16efb09b57f 100644
--- a/drivers/pinctrl/rockchip/pinctrl-rockchip-core.c
+++ b/drivers/pinctrl/rockchip/pinctrl-rockchip-core.c
@@ -13,6 +13,7 @@
 #include <fdtdec.h>
 #include <linux/bitops.h>
 #include <linux/libfdt.h>
+#include <linux/string.h>
 
 #include "pinctrl-rockchip.h"
 
diff --git a/drivers/power/domain/imx8-power-domain-legacy.c b/drivers/power/domain/imx8-power-domain-legacy.c
index 961382f33e1..980b946fca1 100644
--- a/drivers/power/domain/imx8-power-domain-legacy.c
+++ b/drivers/power/domain/imx8-power-domain-legacy.c
@@ -15,6 +15,7 @@
 #include <dm/device.h>
 #include <dm/uclass-internal.h>
 #include <asm/arch/sci/sci.h>
+#include <linux/string.h>
 
 DECLARE_GLOBAL_DATA_PTR;
 
diff --git a/drivers/power/pmic/i2c_pmic_emul.c b/drivers/power/pmic/i2c_pmic_emul.c
index 83d3c292044..4e72e966cfe 100644
--- a/drivers/power/pmic/i2c_pmic_emul.c
+++ b/drivers/power/pmic/i2c_pmic_emul.c
@@ -11,6 +11,7 @@
 #include <log.h>
 #include <malloc.h>
 #include <linux/printk.h>
+#include <linux/string.h>
 #include <power/pmic.h>
 #include <power/sandbox_pmic.h>
 
diff --git a/drivers/power/pmic/palmas.c b/drivers/power/pmic/palmas.c
index eb83c88d564..88f88e0014c 100644
--- a/drivers/power/pmic/palmas.c
+++ b/drivers/power/pmic/palmas.c
@@ -11,6 +11,7 @@
 #include <i2c.h>
 #include <log.h>
 #include <linux/printk.h>
+#include <linux/string.h>
 #include <power/pmic.h>
 #include <power/regulator.h>
 #include <power/palmas.h>
diff --git a/drivers/power/pmic/pmic-uclass.c b/drivers/power/pmic/pmic-uclass.c
index 7770171917d..a83131e1736 100644
--- a/drivers/power/pmic/pmic-uclass.c
+++ b/drivers/power/pmic/pmic-uclass.c
@@ -13,6 +13,7 @@
 #include <dm/lists.h>
 #include <dm/device-internal.h>
 #include <dm/uclass-internal.h>
+#include <linux/string.h>
 #include <power/pmic.h>
 #include <linux/ctype.h>
 
diff --git a/drivers/power/power_core.c b/drivers/power/power_core.c
index eeed8e24a90..9caa4d72b6d 100644
--- a/drivers/power/power_core.c
+++ b/drivers/power/power_core.c
@@ -13,6 +13,7 @@
 #include <command.h>
 #include <log.h>
 #include <malloc.h>
+#include <linux/string.h>
 #include <linux/types.h>
 #include <linux/list.h>
 #include <power/pmic.h>
diff --git a/drivers/power/power_i2c.c b/drivers/power/power_i2c.c
index 5a0455e1195..41d7113251d 100644
--- a/drivers/power/power_i2c.c
+++ b/drivers/power/power_i2c.c
@@ -12,6 +12,7 @@
 
 #include <common.h>
 #include <log.h>
+#include <linux/string.h>
 #include <linux/types.h>
 #include <power/pmic.h>
 #include <i2c.h>
diff --git a/drivers/power/regulator/bd71837.c b/drivers/power/regulator/bd71837.c
index 3499bd2c56b..8c7f71be3e8 100644
--- a/drivers/power/regulator/bd71837.c
+++ b/drivers/power/regulator/bd71837.c
@@ -10,6 +10,7 @@
 #include <log.h>
 #include <linux/bitops.h>
 #include <linux/printk.h>
+#include <linux/string.h>
 #include <power/bd71837.h>
 #include <power/pmic.h>
 #include <power/regulator.h>
diff --git a/drivers/power/regulator/da9063.c b/drivers/power/regulator/da9063.c
index 5055e39cb79..3e5d2596561 100644
--- a/drivers/power/regulator/da9063.c
+++ b/drivers/power/regulator/da9063.c
@@ -7,6 +7,7 @@
 #include <common.h>
 #include <dm.h>
 #include <linux/bitops.h>
+#include <linux/string.h>
 #include <power/da9063_pmic.h>
 #include <power/pmic.h>
 #include <power/regulator.h>
diff --git a/drivers/power/regulator/palmas_regulator.c b/drivers/power/regulator/palmas_regulator.c
index 78909f70189..9bb8c7ff32a 100644
--- a/drivers/power/regulator/palmas_regulator.c
+++ b/drivers/power/regulator/palmas_regulator.c
@@ -11,6 +11,7 @@
 #include <errno.h>
 #include <dm.h>
 #include <i2c.h>
+#include <linux/string.h>
 #include <power/pmic.h>
 #include <power/regulator.h>
 #include <power/palmas.h>
diff --git a/drivers/power/regulator/pfuze100.c b/drivers/power/regulator/pfuze100.c
index b56843046f2..15f34b915f2 100644
--- a/drivers/power/regulator/pfuze100.c
+++ b/drivers/power/regulator/pfuze100.c
@@ -11,6 +11,7 @@
 #include <dm.h>
 #include <i2c.h>
 #include <log.h>
+#include <linux/string.h>
 #include <power/pmic.h>
 #include <power/regulator.h>
 #include <power/pfuze100_pmic.h>
diff --git a/drivers/power/regulator/regulator-uclass.c b/drivers/power/regulator/regulator-uclass.c
index da679a572c2..c20c42b29d0 100644
--- a/drivers/power/regulator/regulator-uclass.c
+++ b/drivers/power/regulator/regulator-uclass.c
@@ -10,6 +10,7 @@
 #include <log.h>
 #include <dm/uclass-internal.h>
 #include <linux/delay.h>
+#include <linux/string.h>
 #include <power/pmic.h>
 #include <power/regulator.h>
 
diff --git a/drivers/qe/qe.c b/drivers/qe/qe.c
index 79dcbf049a0..cfcc247389a 100644
--- a/drivers/qe/qe.c
+++ b/drivers/qe/qe.c
@@ -15,6 +15,7 @@
 #include <linux/immap_qe.h>
 #include <fsl_qe.h>
 #include <mmc.h>
+#include <linux/string.h>
 #include <u-boot/crc.h>
 
 #ifdef CONFIG_ARCH_LS1021A
diff --git a/drivers/qe/uccf.c b/drivers/qe/uccf.c
index 9beb5d90aca..4d5840e77b1 100644
--- a/drivers/qe/uccf.c
+++ b/drivers/qe/uccf.c
@@ -11,6 +11,7 @@
 #include <linux/errno.h>
 #include <asm/io.h>
 #include <linux/immap_qe.h>
+#include <linux/string.h>
 #include "uccf.h"
 #include <fsl_qe.h>
 
diff --git a/drivers/qe/uec.c b/drivers/qe/uec.c
index 01434543873..409d806dd8f 100644
--- a/drivers/qe/uec.c
+++ b/drivers/qe/uec.c
@@ -13,6 +13,7 @@
 #include <linux/errno.h>
 #include <asm/io.h>
 #include <linux/immap_qe.h>
+#include <linux/string.h>
 #include "uccf.h"
 #include "uec.h"
 #include "uec_phy.h"
diff --git a/drivers/qe/uec_phy.c b/drivers/qe/uec_phy.c
index 69c22dd5e26..69a520d4baf 100644
--- a/drivers/qe/uec_phy.c
+++ b/drivers/qe/uec_phy.c
@@ -16,6 +16,7 @@
 #include <linux/errno.h>
 #include <linux/immap_qe.h>
 #include <asm/io.h>
+#include <linux/string.h>
 #include "uccf.h"
 #include "uec.h"
 #include "uec_phy.h"
diff --git a/drivers/ram/imxrt_sdram.c b/drivers/ram/imxrt_sdram.c
index 8be15340b94..dcf3590c6c3 100644
--- a/drivers/ram/imxrt_sdram.c
+++ b/drivers/ram/imxrt_sdram.c
@@ -15,6 +15,7 @@
 #include <linux/delay.h>
 #include <linux/err.h>
 #include <linux/printk.h>
+#include <linux/string.h>
 
 /* SDRAM Command Code */
 #define SD_CC_ARD		0x0     /* Master Bus (AXI) command - Read */
diff --git a/drivers/ram/rockchip/sdram_rk3188.c b/drivers/ram/rockchip/sdram_rk3188.c
index 06f9eba1a5b..d3ed9bcc29e 100644
--- a/drivers/ram/rockchip/sdram_rk3188.c
+++ b/drivers/ram/rockchip/sdram_rk3188.c
@@ -27,6 +27,7 @@
 #include <asm/arch-rockchip/sdram_rk3288.h>
 #include <linux/delay.h>
 #include <linux/err.h>
+#include <linux/string.h>
 
 struct chan_info {
 	struct rk3288_ddr_pctl *pctl;
diff --git a/drivers/ram/rockchip/sdram_rk322x.c b/drivers/ram/rockchip/sdram_rk322x.c
index 4a24854a3df..4154f0c2642 100644
--- a/drivers/ram/rockchip/sdram_rk322x.c
+++ b/drivers/ram/rockchip/sdram_rk322x.c
@@ -23,6 +23,7 @@
 #include <asm/types.h>
 #include <linux/delay.h>
 #include <linux/err.h>
+#include <linux/string.h>
 
 DECLARE_GLOBAL_DATA_PTR;
 struct chan_info {
diff --git a/drivers/ram/rockchip/sdram_rk3288.c b/drivers/ram/rockchip/sdram_rk3288.c
index 26e8d059b5d..01f030e01a1 100644
--- a/drivers/ram/rockchip/sdram_rk3288.c
+++ b/drivers/ram/rockchip/sdram_rk3288.c
@@ -27,6 +27,7 @@
 #include <asm/arch-rockchip/sdram_rk3288.h>
 #include <linux/delay.h>
 #include <linux/err.h>
+#include <linux/string.h>
 #include <power/regulator.h>
 #include <power/rk8xx_pmic.h>
 
diff --git a/drivers/ram/rockchip/sdram_rk3328.c b/drivers/ram/rockchip/sdram_rk3328.c
index 98c7feb6cfa..586e82e6ebc 100644
--- a/drivers/ram/rockchip/sdram_rk3328.c
+++ b/drivers/ram/rockchip/sdram_rk3328.c
@@ -20,6 +20,7 @@
 #include <asm/arch-rockchip/sdram_rk3328.h>
 #include <asm/arch-rockchip/uart.h>
 #include <linux/delay.h>
+#include <linux/string.h>
 
 struct dram_info {
 #ifdef CONFIG_TPL_BUILD
diff --git a/drivers/ram/stm32_sdram.c b/drivers/ram/stm32_sdram.c
index de5a9bc0569..1b8cb594966 100644
--- a/drivers/ram/stm32_sdram.c
+++ b/drivers/ram/stm32_sdram.c
@@ -15,6 +15,7 @@
 #include <linux/bitops.h>
 #include <linux/delay.h>
 #include <linux/printk.h>
+#include <linux/string.h>
 
 #define MEM_MODE_MASK	GENMASK(2, 0)
 #define SWP_FMC_OFFSET 10
diff --git a/drivers/ram/stm32mp1/stm32mp1_ddr.c b/drivers/ram/stm32mp1/stm32mp1_ddr.c
index 8b59903e6bf..350681bcfe5 100644
--- a/drivers/ram/stm32mp1/stm32mp1_ddr.c
+++ b/drivers/ram/stm32mp1/stm32mp1_ddr.c
@@ -15,6 +15,7 @@
 #include <linux/delay.h>
 #include <linux/iopoll.h>
 #include <linux/printk.h>
+#include <linux/string.h>
 #include "stm32mp1_ddr.h"
 #include "stm32mp1_ddr_regs.h"
 
diff --git a/drivers/ram/stm32mp1/stm32mp1_interactive.c b/drivers/ram/stm32mp1/stm32mp1_interactive.c
index d3b8b3b5afa..398018e4c25 100644
--- a/drivers/ram/stm32mp1/stm32mp1_interactive.c
+++ b/drivers/ram/stm32mp1/stm32mp1_interactive.c
@@ -14,6 +14,7 @@
 #include <reset.h>
 #include <time.h>
 #include <asm/global_data.h>
+#include <linux/string.h>
 #include "stm32mp1_ddr.h"
 #include "stm32mp1_tests.h"
 
diff --git a/drivers/ram/stm32mp1/stm32mp1_ram.c b/drivers/ram/stm32mp1/stm32mp1_ram.c
index 63333a1b1b6..85e01ffd098 100644
--- a/drivers/ram/stm32mp1/stm32mp1_ram.c
+++ b/drivers/ram/stm32mp1/stm32mp1_ram.c
@@ -13,6 +13,7 @@
 #include <syscon.h>
 #include <asm/io.h>
 #include <linux/printk.h>
+#include <linux/string.h>
 #include "stm32mp1_ddr.h"
 
 static const char *const clkname[] = {
diff --git a/drivers/ram/stm32mp1/stm32mp1_tests.c b/drivers/ram/stm32mp1/stm32mp1_tests.c
index b0c510ad5e9..a5433ac1402 100644
--- a/drivers/ram/stm32mp1/stm32mp1_tests.c
+++ b/drivers/ram/stm32mp1/stm32mp1_tests.c
@@ -11,6 +11,7 @@
 #include <asm/global_data.h>
 #include <asm/io.h>
 #include <linux/log2.h>
+#include <linux/string.h>
 #include "stm32mp1_tests.h"
 
 #define ADDR_INVALID	0xFFFFFFFF
diff --git a/drivers/ram/stm32mp1/stm32mp1_tuning.c b/drivers/ram/stm32mp1/stm32mp1_tuning.c
index 2fc8e32847c..222777ad3cf 100644
--- a/drivers/ram/stm32mp1/stm32mp1_tuning.c
+++ b/drivers/ram/stm32mp1/stm32mp1_tuning.c
@@ -14,6 +14,7 @@
 #include <linux/delay.h>
 #include <linux/iopoll.h>
 #include <linux/printk.h>
+#include <linux/string.h>
 
 #include "stm32mp1_ddr_regs.h"
 #include "stm32mp1_ddr.h"
diff --git a/drivers/remoteproc/k3_system_controller.c b/drivers/remoteproc/k3_system_controller.c
index 54209fccb3e..44271c5baf8 100644
--- a/drivers/remoteproc/k3_system_controller.c
+++ b/drivers/remoteproc/k3_system_controller.c
@@ -14,6 +14,7 @@
 #include <mailbox.h>
 #include <dm/device_compat.h>
 #include <linux/soc/ti/k3-sec-proxy.h>
+#include <linux/string.h>
 
 #define K3_MSG_R5_TO_M3_M3FW			0x8105
 #define K3_MSG_M3_TO_R5_CERT_RESULT		0x8805
diff --git a/drivers/remoteproc/rproc-elf-loader.c b/drivers/remoteproc/rproc-elf-loader.c
index 1e309c0f4f9..45331107353 100644
--- a/drivers/remoteproc/rproc-elf-loader.c
+++ b/drivers/remoteproc/rproc-elf-loader.c
@@ -12,6 +12,7 @@
 #include <dm/device_compat.h>
 #include <linux/compat.h>
 #include <linux/printk.h>
+#include <linux/string.h>
 
 /**
  * struct resource_table - firmware resource table header
diff --git a/drivers/remoteproc/rproc-uclass.c b/drivers/remoteproc/rproc-uclass.c
index 0c2b601c472..1ed194aa034 100644
--- a/drivers/remoteproc/rproc-uclass.c
+++ b/drivers/remoteproc/rproc-uclass.c
@@ -17,6 +17,7 @@
 #include <dm/uclass.h>
 #include <dm/uclass-internal.h>
 #include <linux/printk.h>
+#include <linux/string.h>
 
 DECLARE_GLOBAL_DATA_PTR;
 
diff --git a/drivers/remoteproc/ti_k3_dsp_rproc.c b/drivers/remoteproc/ti_k3_dsp_rproc.c
index 3361555c536..cbebfacb48c 100644
--- a/drivers/remoteproc/ti_k3_dsp_rproc.c
+++ b/drivers/remoteproc/ti_k3_dsp_rproc.c
@@ -21,6 +21,7 @@
 #include <linux/err.h>
 #include <linux/sizes.h>
 #include <linux/soc/ti/ti_sci_protocol.h>
+#include <linux/string.h>
 #include "ti_sci_proc.h"
 
 #define KEYSTONE_RPROC_LOCAL_ADDRESS_MASK	(SZ_16M - 1)
diff --git a/drivers/remoteproc/ti_k3_r5f_rproc.c b/drivers/remoteproc/ti_k3_r5f_rproc.c
index 1a7f1f8a005..c3018d74a47 100644
--- a/drivers/remoteproc/ti_k3_r5f_rproc.c
+++ b/drivers/remoteproc/ti_k3_r5f_rproc.c
@@ -19,6 +19,7 @@
 #include <linux/err.h>
 #include <linux/kernel.h>
 #include <linux/soc/ti/ti_sci_protocol.h>
+#include <linux/string.h>
 #include "ti_sci_proc.h"
 
 /*
diff --git a/drivers/remoteproc/ti_power_proc.c b/drivers/remoteproc/ti_power_proc.c
index 86fa6457ede..0d78ec439d0 100644
--- a/drivers/remoteproc/ti_power_proc.c
+++ b/drivers/remoteproc/ti_power_proc.c
@@ -12,6 +12,7 @@
 #include <remoteproc.h>
 #include <asm/global_data.h>
 #include <linux/printk.h>
+#include <linux/string.h>
 #include <mach/psc_defs.h>
 
 DECLARE_GLOBAL_DATA_PTR;
diff --git a/drivers/rng/meson-rng.c b/drivers/rng/meson-rng.c
index 4b81a623535..448d4537b05 100644
--- a/drivers/rng/meson-rng.c
+++ b/drivers/rng/meson-rng.c
@@ -10,6 +10,7 @@
 #include <dm.h>
 #include <rng.h>
 #include <asm/io.h>
+#include <linux/string.h>
 
 struct meson_rng_platdata {
 	fdt_addr_t base;
diff --git a/drivers/rng/stm32mp1_rng.c b/drivers/rng/stm32mp1_rng.c
index 7ef7ff9756d..4354edd4a1b 100644
--- a/drivers/rng/stm32mp1_rng.c
+++ b/drivers/rng/stm32mp1_rng.c
@@ -11,6 +11,7 @@
 #include <rng.h>
 #include <linux/bitops.h>
 #include <linux/delay.h>
+#include <linux/string.h>
 
 #include <asm/io.h>
 #include <linux/iopoll.h>
diff --git a/drivers/rtc/ds1302.c b/drivers/rtc/ds1302.c
index 189607c3e02..21655085d1b 100644
--- a/drivers/rtc/ds1302.c
+++ b/drivers/rtc/ds1302.c
@@ -9,6 +9,7 @@
 #include <command.h>
 #include <rtc.h>
 #include <linux/delay.h>
+#include <linux/string.h>
 
 /* GPP Pins */
 #define DATA		0x200
diff --git a/drivers/rtc/i2c_rtc_emul.c b/drivers/rtc/i2c_rtc_emul.c
index 7f78ff83cb0..a78dc78cfcc 100644
--- a/drivers/rtc/i2c_rtc_emul.c
+++ b/drivers/rtc/i2c_rtc_emul.c
@@ -21,6 +21,7 @@
 #include <rtc.h>
 #include <asm/rtc.h>
 #include <asm/test.h>
+#include <linux/string.h>
 
 #ifdef DEBUG
 #define debug_buffer print_buffer
diff --git a/drivers/rtc/rs5c372.c b/drivers/rtc/rs5c372.c
index 97ec001aef5..64ff8c89d40 100644
--- a/drivers/rtc/rs5c372.c
+++ b/drivers/rtc/rs5c372.c
@@ -23,6 +23,7 @@
 #include <command.h>
 #include <rtc.h>
 #include <i2c.h>
+#include <linux/string.h>
 
 /*
  * Reads are always done starting with register 15, which requires some
diff --git a/drivers/scsi/scsi.c b/drivers/scsi/scsi.c
index 0ab1d441f40..2492c3394b9 100644
--- a/drivers/scsi/scsi.c
+++ b/drivers/scsi/scsi.c
@@ -15,6 +15,7 @@
 #include <scsi.h>
 #include <dm/device-internal.h>
 #include <dm/uclass-internal.h>
+#include <linux/string.h>
 
 #if !defined(CONFIG_DM_SCSI)
 # ifdef CONFIG_SCSI_DEV_LIST
diff --git a/drivers/serial/sandbox.c b/drivers/serial/sandbox.c
index 8a7f171e041..01c924675af 100644
--- a/drivers/serial/sandbox.c
+++ b/drivers/serial/sandbox.c
@@ -20,6 +20,7 @@
 #include <asm/global_data.h>
 #include <linux/compiler.h>
 #include <asm/state.h>
+#include <linux/string.h>
 
 DECLARE_GLOBAL_DATA_PTR;
 
diff --git a/drivers/serial/serial-uclass.c b/drivers/serial/serial-uclass.c
index c1df29c530b..7ad61d8d39f 100644
--- a/drivers/serial/serial-uclass.c
+++ b/drivers/serial/serial-uclass.c
@@ -17,6 +17,7 @@
 #include <dm/device-internal.h>
 #include <dm/of_access.h>
 #include <linux/delay.h>
+#include <linux/string.h>
 
 DECLARE_GLOBAL_DATA_PTR;
 
diff --git a/drivers/serial/serial.c b/drivers/serial/serial.c
index 839c3972b6d..4b9a2333801 100644
--- a/drivers/serial/serial.c
+++ b/drivers/serial/serial.c
@@ -14,6 +14,7 @@
 #include <linux/compiler.h>
 #include <errno.h>
 #include <linux/delay.h>
+#include <linux/string.h>
 
 DECLARE_GLOBAL_DATA_PTR;
 
diff --git a/drivers/serial/usbtty.c b/drivers/serial/usbtty.c
index f1c1a260da5..f0b64809560 100644
--- a/drivers/serial/usbtty.c
+++ b/drivers/serial/usbtty.c
@@ -14,6 +14,7 @@
 #include <serial.h>
 #include <stdio_dev.h>
 #include <asm/unaligned.h>
+#include <linux/string.h>
 #include "usbtty.h"
 #include "usb_cdc_acm.h"
 #include "usbdescriptors.h"
diff --git a/drivers/smem/msm_smem.c b/drivers/smem/msm_smem.c
index bf1696e85e0..09a1268e276 100644
--- a/drivers/smem/msm_smem.c
+++ b/drivers/smem/msm_smem.c
@@ -19,6 +19,7 @@
 #include <linux/ioport.h>
 #include <linux/io.h>
 #include <smem.h>
+#include <linux/string.h>
 
 DECLARE_GLOBAL_DATA_PTR;
 
diff --git a/drivers/soc/soc-uclass.c b/drivers/soc/soc-uclass.c
index c32d647864f..d22773e478b 100644
--- a/drivers/soc/soc-uclass.c
+++ b/drivers/soc/soc-uclass.c
@@ -10,6 +10,7 @@
 #include <errno.h>
 #include <dm/lists.h>
 #include <dm/root.h>
+#include <linux/string.h>
 
 int soc_get(struct udevice **devp)
 {
diff --git a/drivers/soc/ti/k3-navss-ringacc.c b/drivers/soc/ti/k3-navss-ringacc.c
index fb04da2717d..f4a0272f3ae 100644
--- a/drivers/soc/ti/k3-navss-ringacc.c
+++ b/drivers/soc/ti/k3-navss-ringacc.c
@@ -24,6 +24,7 @@
 #include <linux/printk.h>
 #include <linux/soc/ti/k3-navss-ringacc.h>
 #include <linux/soc/ti/ti_sci_protocol.h>
+#include <linux/string.h>
 
 #define set_bit(bit, bitmap)	__set_bit(bit, bitmap)
 #define clear_bit(bit, bitmap)	__clear_bit(bit, bitmap)
diff --git a/drivers/spi/atcspi200_spi.c b/drivers/spi/atcspi200_spi.c
index 9e7d40d0a81..7ba208baf2e 100644
--- a/drivers/spi/atcspi200_spi.c
+++ b/drivers/spi/atcspi200_spi.c
@@ -14,6 +14,7 @@
 #include <asm/global_data.h>
 #include <asm/io.h>
 #include <dm.h>
+#include <linux/string.h>
 
 DECLARE_GLOBAL_DATA_PTR;
 
diff --git a/drivers/spi/bcmstb_spi.c b/drivers/spi/bcmstb_spi.c
index f400a0f5732..40364fbf57c 100644
--- a/drivers/spi/bcmstb_spi.c
+++ b/drivers/spi/bcmstb_spi.c
@@ -18,6 +18,7 @@
 #include <malloc.h>
 #include <spi.h>
 #include <time.h>
+#include <linux/string.h>
 
 DECLARE_GLOBAL_DATA_PTR;
 
diff --git a/drivers/spi/cadence_qspi_apb.c b/drivers/spi/cadence_qspi_apb.c
index 77ec7c6ecda..f1f510ef65f 100644
--- a/drivers/spi/cadence_qspi_apb.c
+++ b/drivers/spi/cadence_qspi_apb.c
@@ -37,6 +37,7 @@
 #include <spi.h>
 #include <spi-mem.h>
 #include <malloc.h>
+#include <linux/string.h>
 #include "cadence_qspi.h"
 
 #define CQSPI_REG_POLL_US			1 /* 1us */
diff --git a/drivers/spi/cf_spi.c b/drivers/spi/cf_spi.c
index 242dc9d8909..0f39fe84398 100644
--- a/drivers/spi/cf_spi.c
+++ b/drivers/spi/cf_spi.c
@@ -22,6 +22,7 @@
 #include <malloc.h>
 #include <asm/coldfire/dspi.h>
 #include <asm/io.h>
+#include <linux/string.h>
 
 struct coldfire_spi_priv {
 	struct dspi *regs;
diff --git a/drivers/spi/fsl_espi.c b/drivers/spi/fsl_espi.c
index 3dd98aadbaa..35f8a58da16 100644
--- a/drivers/spi/fsl_espi.c
+++ b/drivers/spi/fsl_espi.c
@@ -13,6 +13,7 @@
 #include <asm/global_data.h>
 #include <linux/bitops.h>
 #include <linux/delay.h>
+#include <linux/string.h>
 
 #include <malloc.h>
 #include <spi.h>
diff --git a/drivers/spi/fsl_qspi.c b/drivers/spi/fsl_qspi.c
index 84b4714c050..2923fb5fb3d 100644
--- a/drivers/spi/fsl_qspi.c
+++ b/drivers/spi/fsl_qspi.c
@@ -38,6 +38,7 @@
 #include <linux/err.h>
 #include <spi.h>
 #include <spi-mem.h>
+#include <linux/string.h>
 
 DECLARE_GLOBAL_DATA_PTR;
 
diff --git a/drivers/spi/ich.c b/drivers/spi/ich.c
index 224c2b07919..308ace8a580 100644
--- a/drivers/spi/ich.c
+++ b/drivers/spi/ich.c
@@ -30,6 +30,7 @@
 #include <linux/bitops.h>
 #include <linux/delay.h>
 #include <linux/sizes.h>
+#include <linux/string.h>
 
 #include "ich.h"
 
diff --git a/drivers/spi/meson_spifc.c b/drivers/spi/meson_spifc.c
index 2cdc0186825..5bc99370a10 100644
--- a/drivers/spi/meson_spifc.c
+++ b/drivers/spi/meson_spifc.c
@@ -17,6 +17,7 @@
 #include <asm/io.h>
 #include <linux/bitfield.h>
 #include <linux/bitops.h>
+#include <linux/string.h>
 
 /* register map */
 #define REG_CMD			0x00
diff --git a/drivers/spi/mtk_snfi_spi.c b/drivers/spi/mtk_snfi_spi.c
index c30c8f4ff6d..7f5d78e357e 100644
--- a/drivers/spi/mtk_snfi_spi.c
+++ b/drivers/spi/mtk_snfi_spi.c
@@ -17,6 +17,7 @@
 #include <linux/bitops.h>
 #include <linux/io.h>
 #include <linux/iopoll.h>
+#include <linux/string.h>
 
 #define SNFI_MAC_CTL			0x500
 #define MAC_XIO_SEL			BIT(4)
diff --git a/drivers/spi/mxc_spi.c b/drivers/spi/mxc_spi.c
index cb1abf14416..a2dbd8a96de 100644
--- a/drivers/spi/mxc_spi.c
+++ b/drivers/spi/mxc_spi.c
@@ -20,6 +20,7 @@
 #include <asm/arch/clock.h>
 #include <asm/mach-imx/spi.h>
 #include <linux/printk.h>
+#include <linux/string.h>
 
 DECLARE_GLOBAL_DATA_PTR;
 
diff --git a/drivers/spi/mxs_spi.c b/drivers/spi/mxs_spi.c
index fb0af02be08..8d7bb35d02f 100644
--- a/drivers/spi/mxs_spi.c
+++ b/drivers/spi/mxs_spi.c
@@ -29,6 +29,7 @@
 #include <asm/arch/imx-regs.h>
 #include <asm/arch/sys_proto.h>
 #include <asm/mach-imx/dma.h>
+#include <linux/string.h>
 
 #define	MXS_SPI_MAX_TIMEOUT	1000000
 #define	MXS_SPI_PORT_OFFSET	0x2000
diff --git a/drivers/spi/nxp_fspi.c b/drivers/spi/nxp_fspi.c
index c507437f2e7..b4f928741f3 100644
--- a/drivers/spi/nxp_fspi.c
+++ b/drivers/spi/nxp_fspi.c
@@ -46,6 +46,7 @@
 #include <linux/iopoll.h>
 #include <linux/bug.h>
 #include <linux/err.h>
+#include <linux/string.h>
 
 /*
  * The driver only uses one single LUT entry, that is updated on
diff --git a/drivers/spi/renesas_rpc_spi.c b/drivers/spi/renesas_rpc_spi.c
index 72a9e464776..1ceb7294bb6 100644
--- a/drivers/spi/renesas_rpc_spi.c
+++ b/drivers/spi/renesas_rpc_spi.c
@@ -18,6 +18,7 @@
 #include <linux/errno.h>
 #include <spi.h>
 #include <wait_bit.h>
+#include <linux/string.h>
 
 #define RPC_CMNCR		0x0000	/* R/W */
 #define RPC_CMNCR_MD		BIT(31)
diff --git a/drivers/spi/spi-mem-nodm.c b/drivers/spi/spi-mem-nodm.c
index 765f05fe542..841eefc12ce 100644
--- a/drivers/spi/spi-mem-nodm.c
+++ b/drivers/spi/spi-mem-nodm.c
@@ -7,6 +7,7 @@
 #include <malloc.h>
 #include <spi.h>
 #include <spi-mem.h>
+#include <linux/string.h>
 
 int spi_mem_exec_op(struct spi_slave *slave,
 		    const struct spi_mem_op *op)
diff --git a/drivers/spi/spi-mem.c b/drivers/spi/spi-mem.c
index d344701aebb..13027613dda 100644
--- a/drivers/spi/spi-mem.c
+++ b/drivers/spi/spi-mem.c
@@ -16,6 +16,7 @@
 #include <dm/device_compat.h>
 #include <spi.h>
 #include <spi-mem.h>
+#include <linux/string.h>
 #endif
 
 #ifndef __UBOOT__
diff --git a/drivers/spi/spi-sifive.c b/drivers/spi/spi-sifive.c
index 0e0ce25abb9..87635cf5bec 100644
--- a/drivers/spi/spi-sifive.c
+++ b/drivers/spi/spi-sifive.c
@@ -16,6 +16,7 @@
 #include <linux/bitops.h>
 #include <linux/log2.h>
 #include <clk.h>
+#include <linux/string.h>
 
 #define SIFIVE_SPI_MAX_CS		32
 
diff --git a/drivers/spi/spi.c b/drivers/spi/spi.c
index 22910de0dd9..426d30c6b21 100644
--- a/drivers/spi/spi.c
+++ b/drivers/spi/spi.c
@@ -7,6 +7,7 @@
 #include <fdtdec.h>
 #include <malloc.h>
 #include <spi.h>
+#include <linux/string.h>
 
 int spi_set_wordlen(struct spi_slave *slave, unsigned int wordlen)
 {
diff --git a/drivers/spi/tegra210_qspi.c b/drivers/spi/tegra210_qspi.c
index 293b16c6fe9..90ac21f8ad9 100644
--- a/drivers/spi/tegra210_qspi.c
+++ b/drivers/spi/tegra210_qspi.c
@@ -18,6 +18,7 @@
 #include <fdtdec.h>
 #include <linux/bitops.h>
 #include <linux/delay.h>
+#include <linux/string.h>
 #include "tegra_spi.h"
 
 DECLARE_GLOBAL_DATA_PTR;
diff --git a/drivers/spi/zynq_qspi.c b/drivers/spi/zynq_qspi.c
index af130d4418b..7607c510249 100644
--- a/drivers/spi/zynq_qspi.c
+++ b/drivers/spi/zynq_qspi.c
@@ -15,6 +15,7 @@
 #include <asm/global_data.h>
 #include <asm/io.h>
 #include <linux/bitops.h>
+#include <linux/string.h>
 
 DECLARE_GLOBAL_DATA_PTR;
 
diff --git a/drivers/spi/zynqmp_gqspi.c b/drivers/spi/zynqmp_gqspi.c
index cd2c7d40b86..151618a99f4 100644
--- a/drivers/spi/zynqmp_gqspi.c
+++ b/drivers/spi/zynqmp_gqspi.c
@@ -22,6 +22,7 @@
 #include <dm/device_compat.h>
 #include <linux/bitops.h>
 #include <linux/err.h>
+#include <linux/string.h>
 
 #define GQSPI_GFIFO_STRT_MODE_MASK	BIT(29)
 #define GQSPI_CONFIG_MODE_EN_MASK	(3 << 30)
diff --git a/drivers/sysreset/sysreset_sandbox.c b/drivers/sysreset/sysreset_sandbox.c
index 69c22a70008..cb90266ab0c 100644
--- a/drivers/sysreset/sysreset_sandbox.c
+++ b/drivers/sysreset/sysreset_sandbox.c
@@ -10,6 +10,7 @@
 #include <sysreset.h>
 #include <asm/state.h>
 #include <asm/test.h>
+#include <linux/string.h>
 
 static int sandbox_warm_sysreset_request(struct udevice *dev,
 					 enum sysreset_t type)
diff --git a/drivers/tee/broadcom/chimp_optee.c b/drivers/tee/broadcom/chimp_optee.c
index 37f9b094f76..91ebc17c036 100644
--- a/drivers/tee/broadcom/chimp_optee.c
+++ b/drivers/tee/broadcom/chimp_optee.c
@@ -4,6 +4,7 @@
  */
 
 #include <common.h>
+#include <string.h>
 #include <tee.h>
 #include <broadcom/chimp.h>
 
diff --git a/drivers/tee/optee/core.c b/drivers/tee/optee/core.c
index 5260dab3ac0..0fc7a0ec7f1 100644
--- a/drivers/tee/optee/core.c
+++ b/drivers/tee/optee/core.c
@@ -11,6 +11,7 @@
 #include <linux/arm-smccc.h>
 #include <linux/err.h>
 #include <linux/io.h>
+#include <linux/string.h>
 
 #include "optee_smc.h"
 #include "optee_msg.h"
diff --git a/drivers/tee/sandbox.c b/drivers/tee/sandbox.c
index 4b91e7db1bc..2f174fa00f9 100644
--- a/drivers/tee/sandbox.c
+++ b/drivers/tee/sandbox.c
@@ -6,6 +6,7 @@
 #include <dm.h>
 #include <sandboxtee.h>
 #include <tee.h>
+#include <linux/string.h>
 #include <tee/optee_ta_avb.h>
 
 /*
diff --git a/drivers/tee/tee-uclass.c b/drivers/tee/tee-uclass.c
index 112e2168834..76de11c3fb8 100644
--- a/drivers/tee/tee-uclass.c
+++ b/drivers/tee/tee-uclass.c
@@ -10,6 +10,7 @@
 #include <tee.h>
 #include <dm/device-internal.h>
 #include <dm/uclass-internal.h>
+#include <linux/string.h>
 
 /**
  * struct tee_uclass_priv - information of a TEE, stored by the uclass
diff --git a/drivers/thermal/imx_scu_thermal.c b/drivers/thermal/imx_scu_thermal.c
index dc92e6b603e..b3c823ffcb7 100644
--- a/drivers/thermal/imx_scu_thermal.c
+++ b/drivers/thermal/imx_scu_thermal.c
@@ -15,6 +15,7 @@
 #include <asm/arch/sci/sci.h>
 #include <linux/delay.h>
 #include <linux/libfdt.h>
+#include <linux/string.h>
 
 DECLARE_GLOBAL_DATA_PTR;
 
diff --git a/drivers/thermal/imx_tmu.c b/drivers/thermal/imx_tmu.c
index d8acfef4925..b9bdec00c6d 100644
--- a/drivers/thermal/imx_tmu.c
+++ b/drivers/thermal/imx_tmu.c
@@ -17,6 +17,7 @@
 #include <fuse.h>
 #include <malloc.h>
 #include <thermal.h>
+#include <linux/string.h>
 
 DECLARE_GLOBAL_DATA_PTR;
 
diff --git a/drivers/tpm/cr50_i2c.c b/drivers/tpm/cr50_i2c.c
index b0075d3bb48..611dd534dc3 100644
--- a/drivers/tpm/cr50_i2c.c
+++ b/drivers/tpm/cr50_i2c.c
@@ -20,6 +20,7 @@
 #include <asm/arch/iomap.h>
 #include <asm/arch/pm.h>
 #include <linux/delay.h>
+#include <linux/string.h>
 
 enum {
 	TIMEOUT_INIT_MS		= 30000, /* Very long timeout for TPM init */
diff --git a/drivers/tpm/tpm-uclass.c b/drivers/tpm/tpm-uclass.c
index 01d7c2f47c1..61331726833 100644
--- a/drivers/tpm/tpm-uclass.c
+++ b/drivers/tpm/tpm-uclass.c
@@ -9,6 +9,7 @@
 #include <log.h>
 #include <time.h>
 #include <linux/delay.h>
+#include <linux/string.h>
 #include <linux/unaligned/be_byteshift.h>
 #include <tpm-v1.h>
 #include <tpm-v2.h>
diff --git a/drivers/tpm/tpm2_ftpm_tee.c b/drivers/tpm/tpm2_ftpm_tee.c
index 3197e0ebcd3..a7c94c7429b 100644
--- a/drivers/tpm/tpm2_ftpm_tee.c
+++ b/drivers/tpm/tpm2_ftpm_tee.c
@@ -18,6 +18,7 @@
 #include <log.h>
 #include <tpm-v2.h>
 #include <tee.h>
+#include <linux/string.h>
 
 #include "tpm_tis.h"
 #include "tpm2_ftpm_tee.h"
diff --git a/drivers/tpm/tpm2_tis_sandbox.c b/drivers/tpm/tpm2_tis_sandbox.c
index 41a15bd49fb..708d030f5eb 100644
--- a/drivers/tpm/tpm2_tis_sandbox.c
+++ b/drivers/tpm/tpm2_tis_sandbox.c
@@ -10,6 +10,7 @@
 #include <asm/state.h>
 #include <asm/unaligned.h>
 #include <linux/bitops.h>
+#include <linux/string.h>
 #include <u-boot/crc.h>
 
 /* Hierarchies */
diff --git a/drivers/tpm/tpm2_tis_spi.c b/drivers/tpm/tpm2_tis_spi.c
index 195d8be8bf3..52fb3a9235f 100644
--- a/drivers/tpm/tpm2_tis_spi.c
+++ b/drivers/tpm/tpm2_tis_spi.c
@@ -25,6 +25,7 @@
 #include <linux/delay.h>
 #include <linux/errno.h>
 #include <linux/compiler.h>
+#include <linux/string.h>
 #include <linux/types.h>
 #include <linux/unaligned/be_byteshift.h>
 #include <asm-generic/gpio.h>
diff --git a/drivers/tpm/tpm_atmel_twi.c b/drivers/tpm/tpm_atmel_twi.c
index 9444c1b4813..ade72c05638 100644
--- a/drivers/tpm/tpm_atmel_twi.c
+++ b/drivers/tpm/tpm_atmel_twi.c
@@ -13,6 +13,7 @@
 #include <i2c.h>
 #include <asm/unaligned.h>
 #include <linux/delay.h>
+#include <linux/string.h>
 
 #include "tpm_internal.h"
 
diff --git a/drivers/tpm/tpm_tis_infineon.c b/drivers/tpm/tpm_tis_infineon.c
index fe832d41329..e8391eaa1e6 100644
--- a/drivers/tpm/tpm_tis_infineon.c
+++ b/drivers/tpm/tpm_tis_infineon.c
@@ -30,6 +30,7 @@
 #include <linux/errno.h>
 #include <linux/compiler.h>
 #include <linux/printk.h>
+#include <linux/string.h>
 #include <linux/types.h>
 #include <linux/unaligned/be_byteshift.h>
 
diff --git a/drivers/tpm/tpm_tis_lpc.c b/drivers/tpm/tpm_tis_lpc.c
index 2dd374cf77d..8929b269ddf 100644
--- a/drivers/tpm/tpm_tis_lpc.c
+++ b/drivers/tpm/tpm_tis_lpc.c
@@ -19,6 +19,7 @@
 #include <tpm-v1.h>
 #include <asm/io.h>
 #include <linux/delay.h>
+#include <linux/string.h>
 
 #define PREFIX "lpc_tpm: "
 
diff --git a/drivers/tpm/tpm_tis_sandbox.c b/drivers/tpm/tpm_tis_sandbox.c
index f35d6920442..d923e9723ae 100644
--- a/drivers/tpm/tpm_tis_sandbox.c
+++ b/drivers/tpm/tpm_tis_sandbox.c
@@ -9,6 +9,7 @@
 #include <tpm-v1.h>
 #include <asm/state.h>
 #include <asm/unaligned.h>
+#include <linux/string.h>
 #include <u-boot/crc.h>
 
 /* TPM NVRAM location indices. */
diff --git a/drivers/tpm/tpm_tis_st33zp24_i2c.c b/drivers/tpm/tpm_tis_st33zp24_i2c.c
index 60af8385b5d..f648ea406d7 100644
--- a/drivers/tpm/tpm_tis_st33zp24_i2c.c
+++ b/drivers/tpm/tpm_tis_st33zp24_i2c.c
@@ -21,6 +21,7 @@
 #include <tpm-v1.h>
 #include <errno.h>
 #include <linux/delay.h>
+#include <linux/string.h>
 #include <linux/types.h>
 #include <asm/unaligned.h>
 
diff --git a/drivers/tpm/tpm_tis_st33zp24_spi.c b/drivers/tpm/tpm_tis_st33zp24_spi.c
index edd7d7840b9..5c3ce137244 100644
--- a/drivers/tpm/tpm_tis_st33zp24_spi.c
+++ b/drivers/tpm/tpm_tis_st33zp24_spi.c
@@ -21,6 +21,7 @@
 #include <tpm-v1.h>
 #include <errno.h>
 #include <linux/delay.h>
+#include <linux/string.h>
 #include <linux/types.h>
 #include <asm/unaligned.h>
 #include <linux/compat.h>
diff --git a/drivers/ufs/ufs.c b/drivers/ufs/ufs.c
index 97fa80de068..71132314c22 100644
--- a/drivers/ufs/ufs.c
+++ b/drivers/ufs/ufs.c
@@ -22,6 +22,7 @@
 #include <scsi.h>
 #include <linux/bitops.h>
 #include <linux/delay.h>
+#include <linux/string.h>
 
 #include <linux/dma-mapping.h>
 
diff --git a/drivers/usb/cdns3/gadget.c b/drivers/usb/cdns3/gadget.c
index de57029cf40..d4aaa19dad6 100644
--- a/drivers/usb/cdns3/gadget.c
+++ b/drivers/usb/cdns3/gadget.c
@@ -63,6 +63,7 @@
 #include <linux/delay.h>
 #include <linux/err.h>
 #include <linux/printk.h>
+#include <linux/string.h>
 #include <linux/usb/gadget.h>
 #include <linux/compat.h>
 #include <linux/iopoll.h>
diff --git a/drivers/usb/common/common.c b/drivers/usb/common/common.c
index d27ab90d22d..5a8d24da821 100644
--- a/drivers/usb/common/common.c
+++ b/drivers/usb/common/common.c
@@ -10,6 +10,7 @@
 #include <dm.h>
 #include <asm/global_data.h>
 #include <linux/printk.h>
+#include <linux/string.h>
 #include <linux/usb/otg.h>
 #include <linux/usb/ch9.h>
 #include <linux/usb/phy.h>
diff --git a/drivers/usb/common/fsl-dt-fixup.c b/drivers/usb/common/fsl-dt-fixup.c
index 4d7a2acd8e5..5fc887c7cf7 100644
--- a/drivers/usb/common/fsl-dt-fixup.c
+++ b/drivers/usb/common/fsl-dt-fixup.c
@@ -15,6 +15,7 @@
 #include <fsl_errata.h>
 #include <fsl_usb.h>
 #include <fdt_support.h>
+#include <linux/string.h>
 
 #ifndef CONFIG_USB_MAX_CONTROLLER_COUNT
 #define CONFIG_USB_MAX_CONTROLLER_COUNT 1
diff --git a/drivers/usb/dwc3/ep0.c b/drivers/usb/dwc3/ep0.c
index 385bed3e34c..f9420873bba 100644
--- a/drivers/usb/dwc3/ep0.c
+++ b/drivers/usb/dwc3/ep0.c
@@ -18,6 +18,7 @@
 #include <linux/bug.h>
 #include <linux/kernel.h>
 #include <linux/list.h>
+#include <linux/string.h>
 
 #include <linux/usb/ch9.h>
 #include <linux/usb/gadget.h>
diff --git a/drivers/usb/dwc3/gadget.c b/drivers/usb/dwc3/gadget.c
index 17d04b8b71f..55324118ae7 100644
--- a/drivers/usb/dwc3/gadget.c
+++ b/drivers/usb/dwc3/gadget.c
@@ -24,6 +24,7 @@
 #include <linux/dma-mapping.h>
 #include <linux/list.h>
 #include <linux/printk.h>
+#include <linux/string.h>
 
 #include <linux/usb/ch9.h>
 #include <linux/usb/gadget.h>
diff --git a/drivers/usb/dwc3/linux-compat.h b/drivers/usb/dwc3/linux-compat.h
index 82793765bea..92a3dc2850b 100644
--- a/drivers/usb/dwc3/linux-compat.h
+++ b/drivers/usb/dwc3/linux-compat.h
@@ -11,6 +11,7 @@
 #ifndef __DWC3_LINUX_COMPAT__
 #define __DWC3_LINUX_COMPAT__
 
+#include <linux/string.h>
 #define dev_WARN(dev, format, arg...)	debug(format, ##arg)
 
 static inline size_t strlcat(char *dest, const char *src, size_t n)
diff --git a/drivers/usb/emul/sandbox_flash.c b/drivers/usb/emul/sandbox_flash.c
index 9c305f46e94..883f6ae6d39 100644
--- a/drivers/usb/emul/sandbox_flash.c
+++ b/drivers/usb/emul/sandbox_flash.c
@@ -10,6 +10,7 @@
 #include <os.h>
 #include <scsi.h>
 #include <usb.h>
+#include <linux/string.h>
 
 /*
  * This driver emulates a flash stick using the UFI command specification and
diff --git a/drivers/usb/emul/sandbox_keyb.c b/drivers/usb/emul/sandbox_keyb.c
index f562fb7eca2..9f4b4089562 100644
--- a/drivers/usb/emul/sandbox_keyb.c
+++ b/drivers/usb/emul/sandbox_keyb.c
@@ -10,6 +10,7 @@
 #include <os.h>
 #include <scsi.h>
 #include <usb.h>
+#include <linux/string.h>
 
 /*
  * This driver emulates a USB keyboard using the USB HID specification (boot
diff --git a/drivers/usb/emul/usb-emul-uclass.c b/drivers/usb/emul/usb-emul-uclass.c
index e3419e2fd47..9807cbed165 100644
--- a/drivers/usb/emul/usb-emul-uclass.c
+++ b/drivers/usb/emul/usb-emul-uclass.c
@@ -9,6 +9,7 @@
 #include <log.h>
 #include <usb.h>
 #include <dm/device-internal.h>
+#include <linux/string.h>
 
 static int copy_to_unicode(char *buff, int length, const char *str)
 {
diff --git a/drivers/usb/eth/asix.c b/drivers/usb/eth/asix.c
index ac4a27fff20..3a0d8dadb35 100644
--- a/drivers/usb/eth/asix.c
+++ b/drivers/usb/eth/asix.c
@@ -14,6 +14,7 @@
 #include <memalign.h>
 #include <linux/delay.h>
 #include <linux/mii.h>
+#include <linux/string.h>
 #include "usb_ether.h"
 
 /* ASIX AX8817X based USB 2.0 Ethernet Devices */
diff --git a/drivers/usb/eth/asix88179.c b/drivers/usb/eth/asix88179.c
index c142b8b19bf..b4249d9ad51 100644
--- a/drivers/usb/eth/asix88179.c
+++ b/drivers/usb/eth/asix88179.c
@@ -12,6 +12,7 @@
 #include <net.h>
 #include <linux/delay.h>
 #include <linux/mii.h>
+#include <linux/string.h>
 #include "usb_ether.h"
 #include <malloc.h>
 #include <memalign.h>
diff --git a/drivers/usb/eth/lan75xx.c b/drivers/usb/eth/lan75xx.c
index 46b92e8d68b..7d828d75dc6 100644
--- a/drivers/usb/eth/lan75xx.c
+++ b/drivers/usb/eth/lan75xx.c
@@ -8,6 +8,7 @@
 #include <usb.h>
 #include <linux/bitops.h>
 #include <linux/mii.h>
+#include <linux/string.h>
 #include "usb_ether.h"
 #include "lan7x.h"
 
diff --git a/drivers/usb/eth/lan78xx.c b/drivers/usb/eth/lan78xx.c
index e34ad2603fb..9a7a0d834a1 100644
--- a/drivers/usb/eth/lan78xx.c
+++ b/drivers/usb/eth/lan78xx.c
@@ -8,6 +8,7 @@
 #include <net.h>
 #include <usb.h>
 #include <linux/bitops.h>
+#include <linux/string.h>
 #include "usb_ether.h"
 #include "lan7x.h"
 
diff --git a/drivers/usb/eth/lan7x.c b/drivers/usb/eth/lan7x.c
index 0a283619ae5..b1483612783 100644
--- a/drivers/usb/eth/lan7x.c
+++ b/drivers/usb/eth/lan7x.c
@@ -12,6 +12,7 @@
 #include <usb.h>
 #include <linux/ethtool.h>
 #include <linux/mii.h>
+#include <linux/string.h>
 #include "usb_ether.h"
 #include "lan7x.h"
 
diff --git a/drivers/usb/eth/mcs7830.c b/drivers/usb/eth/mcs7830.c
index 02eef9b269d..5cdd7a10e7c 100644
--- a/drivers/usb/eth/mcs7830.c
+++ b/drivers/usb/eth/mcs7830.c
@@ -20,6 +20,7 @@
 #include <memalign.h>
 #include <usb.h>
 #include <linux/printk.h>
+#include <linux/string.h>
 
 #include "usb_ether.h"
 
diff --git a/drivers/usb/eth/r8152.c b/drivers/usb/eth/r8152.c
index 1845d957f97..40947150a0b 100644
--- a/drivers/usb/eth/r8152.c
+++ b/drivers/usb/eth/r8152.c
@@ -15,6 +15,7 @@
 #include <linux/delay.h>
 #include <linux/mii.h>
 #include <linux/bitops.h>
+#include <linux/string.h>
 #include "usb_ether.h"
 #include "r8152.h"
 
diff --git a/drivers/usb/eth/smsc95xx.c b/drivers/usb/eth/smsc95xx.c
index dacf607ed83..5d8e93c2337 100644
--- a/drivers/usb/eth/smsc95xx.c
+++ b/drivers/usb/eth/smsc95xx.c
@@ -18,6 +18,7 @@
 #include <asm/unaligned.h>
 #include <linux/delay.h>
 #include <linux/mii.h>
+#include <linux/string.h>
 #include "usb_ether.h"
 
 /* SMSC LAN95xx based USB 2.0 Ethernet Devices */
diff --git a/drivers/usb/eth/usb_ether.c b/drivers/usb/eth/usb_ether.c
index e368ecda0d7..91f34ab175d 100644
--- a/drivers/usb/eth/usb_ether.c
+++ b/drivers/usb/eth/usb_ether.c
@@ -12,6 +12,7 @@
 #include <usb.h>
 #include <asm/cache.h>
 #include <dm/device-internal.h>
+#include <linux/string.h>
 
 #include "usb_ether.h"
 
diff --git a/drivers/usb/gadget/at91_udc.c b/drivers/usb/gadget/at91_udc.c
index e198ef1d34d..8674f3c9f4f 100644
--- a/drivers/usb/gadget/at91_udc.c
+++ b/drivers/usb/gadget/at91_udc.c
@@ -22,6 +22,7 @@
 #include <asm/gpio.h>
 #include <asm/hardware.h>
 #include <linux/printk.h>
+#include <linux/string.h>
 #include <mach/at91_matrix.h>
 #include <linux/list.h>
 #include <linux/usb/ch9.h>
diff --git a/drivers/usb/gadget/atmel_usba_udc.c b/drivers/usb/gadget/atmel_usba_udc.c
index ed3b3c14e60..23e107b8621 100644
--- a/drivers/usb/gadget/atmel_usba_udc.c
+++ b/drivers/usb/gadget/atmel_usba_udc.c
@@ -14,6 +14,7 @@
 #include <asm/hardware.h>
 #include <linux/list.h>
 #include <linux/printk.h>
+#include <linux/string.h>
 #include <linux/usb/ch9.h>
 #include <linux/usb/gadget.h>
 #include <linux/usb/atmel_usba_udc.h>
diff --git a/drivers/usb/gadget/ci_udc.c b/drivers/usb/gadget/ci_udc.c
index cdbdbcc5cac..98a88c102e9 100644
--- a/drivers/usb/gadget/ci_udc.c
+++ b/drivers/usb/gadget/ci_udc.c
@@ -19,6 +19,7 @@
 #include <linux/errno.h>
 #include <asm/io.h>
 #include <asm/unaligned.h>
+#include <linux/string.h>
 #include <linux/types.h>
 #include <linux/usb/ch9.h>
 #include <linux/usb/gadget.h>
diff --git a/drivers/usb/gadget/composite.c b/drivers/usb/gadget/composite.c
index 91ed7fcec5a..f353f1a3cd2 100644
--- a/drivers/usb/gadget/composite.c
+++ b/drivers/usb/gadget/composite.c
@@ -11,6 +11,7 @@
 #include <dm/devres.h>
 #include <linux/bitops.h>
 #include <linux/bug.h>
+#include <linux/string.h>
 #include <linux/usb/composite.h>
 
 #define USB_BUFSIZ	4096
diff --git a/drivers/usb/gadget/designware_udc.c b/drivers/usb/gadget/designware_udc.c
index 7fc5d27d436..d4b94a7cfce 100644
--- a/drivers/usb/gadget/designware_udc.c
+++ b/drivers/usb/gadget/designware_udc.c
@@ -11,6 +11,7 @@
 #include <serial.h>
 #include <asm/io.h>
 #include <linux/delay.h>
+#include <linux/string.h>
 
 #include <env.h>
 #include <usbdevice.h>
diff --git a/drivers/usb/gadget/dwc2_udc_otg.c b/drivers/usb/gadget/dwc2_udc_otg.c
index f548cbc9eb2..8a5edc776ef 100644
--- a/drivers/usb/gadget/dwc2_udc_otg.c
+++ b/drivers/usb/gadget/dwc2_udc_otg.c
@@ -29,6 +29,7 @@
 #include <linux/bug.h>
 #include <linux/delay.h>
 #include <linux/printk.h>
+#include <linux/string.h>
 
 #include <linux/errno.h>
 #include <linux/list.h>
diff --git a/drivers/usb/gadget/dwc2_udc_otg_xfer_dma.c b/drivers/usb/gadget/dwc2_udc_otg_xfer_dma.c
index 1c0505eb28c..80b7e519978 100644
--- a/drivers/usb/gadget/dwc2_udc_otg_xfer_dma.c
+++ b/drivers/usb/gadget/dwc2_udc_otg_xfer_dma.c
@@ -21,6 +21,7 @@
 #include <cpu_func.h>
 #include <log.h>
 #include <linux/bug.h>
+#include <linux/string.h>
 
 static u8 clear_feature_num;
 int clear_feature_flag;
diff --git a/drivers/usb/gadget/epautoconf.c b/drivers/usb/gadget/epautoconf.c
index e61fe5d1144..c7b0a965188 100644
--- a/drivers/usb/gadget/epautoconf.c
+++ b/drivers/usb/gadget/epautoconf.c
@@ -9,6 +9,7 @@
  */
 
 #include <common.h>
+#include <linux/string.h>
 #include <linux/usb/ch9.h>
 #include <linux/errno.h>
 #include <linux/usb/gadget.h>
diff --git a/drivers/usb/gadget/ether.c b/drivers/usb/gadget/ether.c
index f3885a376b8..f12b07fd1ab 100644
--- a/drivers/usb/gadget/ether.c
+++ b/drivers/usb/gadget/ether.c
@@ -16,6 +16,7 @@
 #include <linux/errno.h>
 #include <linux/netdevice.h>
 #include <linux/printk.h>
+#include <linux/string.h>
 #include <linux/usb/ch9.h>
 #include <linux/usb/cdc.h>
 #include <linux/usb/gadget.h>
diff --git a/drivers/usb/gadget/f_dfu.c b/drivers/usb/gadget/f_dfu.c
index 4bedc7d3a19..b7b1e0c1add 100644
--- a/drivers/usb/gadget/f_dfu.c
+++ b/drivers/usb/gadget/f_dfu.c
@@ -19,6 +19,7 @@
 #include <common.h>
 #include <log.h>
 #include <malloc.h>
+#include <linux/string.h>
 
 #include <linux/usb/ch9.h>
 #include <linux/usb/gadget.h>
diff --git a/drivers/usb/gadget/f_fastboot.c b/drivers/usb/gadget/f_fastboot.c
index fce933dba5f..e14262676f3 100644
--- a/drivers/usb/gadget/f_fastboot.c
+++ b/drivers/usb/gadget/f_fastboot.c
@@ -18,6 +18,7 @@
 #include <log.h>
 #include <malloc.h>
 #include <linux/printk.h>
+#include <linux/string.h>
 #include <linux/usb/ch9.h>
 #include <linux/usb/gadget.h>
 #include <linux/usb/composite.h>
diff --git a/drivers/usb/gadget/f_mass_storage.c b/drivers/usb/gadget/f_mass_storage.c
index 439a31c2556..d87701b4a35 100644
--- a/drivers/usb/gadget/f_mass_storage.c
+++ b/drivers/usb/gadget/f_mass_storage.c
@@ -248,6 +248,7 @@
 #include <g_dnl.h>
 #include <dm/devres.h>
 #include <linux/bug.h>
+#include <linux/string.h>
 
 #include <linux/err.h>
 #include <linux/usb/ch9.h>
diff --git a/drivers/usb/gadget/f_rockusb.c b/drivers/usb/gadget/f_rockusb.c
index 9ae02ae78c1..2ff3c692edc 100644
--- a/drivers/usb/gadget/f_rockusb.c
+++ b/drivers/usb/gadget/f_rockusb.c
@@ -13,6 +13,7 @@
 #include <malloc.h>
 #include <memalign.h>
 #include <part.h>
+#include <linux/string.h>
 #include <linux/usb/ch9.h>
 #include <linux/usb/gadget.h>
 #include <linux/usb/composite.h>
diff --git a/drivers/usb/gadget/f_sdp.c b/drivers/usb/gadget/f_sdp.c
index 4169763c094..120aed4d95e 100644
--- a/drivers/usb/gadget/f_sdp.c
+++ b/drivers/usb/gadget/f_sdp.c
@@ -23,6 +23,7 @@
 #include <log.h>
 #include <malloc.h>
 #include <linux/printk.h>
+#include <linux/string.h>
 
 #include <linux/usb/ch9.h>
 #include <linux/usb/gadget.h>
diff --git a/drivers/usb/gadget/f_thor.c b/drivers/usb/gadget/f_thor.c
index 3c47e6251b1..4758ccb7c46 100644
--- a/drivers/usb/gadget/f_thor.c
+++ b/drivers/usb/gadget/f_thor.c
@@ -25,6 +25,7 @@
 #include <version.h>
 #include <linux/delay.h>
 #include <linux/printk.h>
+#include <linux/string.h>
 #include <linux/usb/ch9.h>
 #include <linux/usb/gadget.h>
 #include <linux/usb/composite.h>
diff --git a/drivers/usb/gadget/fotg210.c b/drivers/usb/gadget/fotg210.c
index c6eb22bdfd3..1c145eb428e 100644
--- a/drivers/usb/gadget/fotg210.c
+++ b/drivers/usb/gadget/fotg210.c
@@ -17,6 +17,7 @@
 #include <asm/io.h>
 #include <linux/delay.h>
 #include <linux/errno.h>
+#include <linux/string.h>
 #include <linux/types.h>
 #include <linux/usb/ch9.h>
 #include <linux/usb/gadget.h>
diff --git a/drivers/usb/gadget/g_dnl.c b/drivers/usb/gadget/g_dnl.c
index 86fdd16b012..c6ecbb30192 100644
--- a/drivers/usb/gadget/g_dnl.c
+++ b/drivers/usb/gadget/g_dnl.c
@@ -9,6 +9,7 @@
 #include <common.h>
 #include <log.h>
 #include <malloc.h>
+#include <linux/string.h>
 
 #include <mmc.h>
 #include <part.h>
diff --git a/drivers/usb/gadget/gadget_chips.h b/drivers/usb/gadget/gadget_chips.h
index 91b0285244e..70067afa7d4 100644
--- a/drivers/usb/gadget/gadget_chips.h
+++ b/drivers/usb/gadget/gadget_chips.h
@@ -14,6 +14,8 @@
  * Ported to U-Boot by: Thomas Smits <ts.smits@gmail.com> and
  *                      Remy Bohmer <linux@bohmer.net>
  */
+#include <linux/string.h>
+
 #ifdef CONFIG_USB_GADGET_NET2280
 #define	gadget_is_net2280(g)	(!strcmp("net2280", (g)->name))
 #else
diff --git a/drivers/usb/gadget/pxa25x_udc.c b/drivers/usb/gadget/pxa25x_udc.c
index 2d9f2e4e33d..4f4d2982f88 100644
--- a/drivers/usb/gadget/pxa25x_udc.c
+++ b/drivers/usb/gadget/pxa25x_udc.c
@@ -31,6 +31,7 @@
 #include <asm/io.h>
 #include <asm/arch/pxa.h>
 #include <linux/delay.h>
+#include <linux/string.h>
 
 #include <linux/usb/ch9.h>
 #include <linux/usb/gadget.h>
diff --git a/drivers/usb/gadget/rndis.c b/drivers/usb/gadget/rndis.c
index 13c327ea38a..92c01adb75d 100644
--- a/drivers/usb/gadget/rndis.c
+++ b/drivers/usb/gadget/rndis.c
@@ -22,6 +22,7 @@
 #include <log.h>
 #include <net.h>
 #include <malloc.h>
+#include <linux/string.h>
 #include <linux/types.h>
 #include <linux/list.h>
 #include <linux/netdevice.h>
diff --git a/drivers/usb/gadget/usbstring.c b/drivers/usb/gadget/usbstring.c
index 83cdd8a2595..2870052fec3 100644
--- a/drivers/usb/gadget/usbstring.c
+++ b/drivers/usb/gadget/usbstring.c
@@ -8,6 +8,7 @@
 
 #include <common.h>
 #include <linux/errno.h>
+#include <linux/string.h>
 #include <linux/usb/ch9.h>
 #include <linux/usb/gadget.h>
 
diff --git a/drivers/usb/host/dwc2.c b/drivers/usb/host/dwc2.c
index ec0b799e149..7f04ea81bfc 100644
--- a/drivers/usb/host/dwc2.c
+++ b/drivers/usb/host/dwc2.c
@@ -22,6 +22,7 @@
 #include <asm/io.h>
 #include <dm/device_compat.h>
 #include <linux/delay.h>
+#include <linux/string.h>
 #include <power/regulator.h>
 #include <reset.h>
 
diff --git a/drivers/usb/host/ehci-fsl.c b/drivers/usb/host/ehci-fsl.c
index eed67e77dc6..8c5403fbdb3 100644
--- a/drivers/usb/host/ehci-fsl.c
+++ b/drivers/usb/host/ehci-fsl.c
@@ -15,6 +15,7 @@
 #include <asm/global_data.h>
 #include <asm/io.h>
 #include <linux/delay.h>
+#include <linux/string.h>
 #include <usb/ehci-ci.h>
 #include <hwconfig.h>
 #include <fsl_usb.h>
diff --git a/drivers/usb/host/ehci-hcd.c b/drivers/usb/host/ehci-hcd.c
index 26400cac08c..60e5f4e41bc 100644
--- a/drivers/usb/host/ehci-hcd.c
+++ b/drivers/usb/host/ehci-hcd.c
@@ -23,6 +23,7 @@
 #include <dm/device_compat.h>
 #include <linux/compiler.h>
 #include <linux/delay.h>
+#include <linux/string.h>
 
 #include "ehci.h"
 
diff --git a/drivers/usb/host/ehci-mx5.c b/drivers/usb/host/ehci-mx5.c
index 516d6495359..ca6cb6b645b 100644
--- a/drivers/usb/host/ehci-mx5.c
+++ b/drivers/usb/host/ehci-mx5.c
@@ -11,6 +11,7 @@
 #include <asm/global_data.h>
 #include <linux/compiler.h>
 #include <linux/delay.h>
+#include <linux/string.h>
 #include <usb/ehci-ci.h>
 #include <asm/io.h>
 #include <asm/arch/imx-regs.h>
diff --git a/drivers/usb/host/ehci-omap.c b/drivers/usb/host/ehci-omap.c
index 90a02406836..5aa9eb445af 100644
--- a/drivers/usb/host/ehci-omap.c
+++ b/drivers/usb/host/ehci-omap.c
@@ -15,6 +15,7 @@
 #include <time.h>
 #include <usb.h>
 #include <linux/delay.h>
+#include <linux/string.h>
 #include <usb/ulpi.h>
 #include <errno.h>
 #include <asm/io.h>
diff --git a/drivers/usb/host/ehci-tegra.c b/drivers/usb/host/ehci-tegra.c
index d81f4a03f14..3b9373f2cd6 100644
--- a/drivers/usb/host/ehci-tegra.c
+++ b/drivers/usb/host/ehci-tegra.c
@@ -16,6 +16,7 @@
 #include <asm/arch-tegra/usb.h>
 #include <asm/arch-tegra/clk_rst.h>
 #include <usb.h>
+#include <linux/string.h>
 #include <usb/ulpi.h>
 #include <linux/libfdt.h>
 
diff --git a/drivers/usb/host/ehci-vf.c b/drivers/usb/host/ehci-vf.c
index 86eac41ea66..39d5b1dd9be 100644
--- a/drivers/usb/host/ehci-vf.c
+++ b/drivers/usb/host/ehci-vf.c
@@ -21,6 +21,7 @@
 #include <asm/mach-imx/iomux-v3.h>
 #include <asm/mach-imx/regs-usbphy.h>
 #include <linux/delay.h>
+#include <linux/string.h>
 #include <usb/ehci-ci.h>
 #include <linux/libfdt.h>
 #include <fdtdec.h>
diff --git a/drivers/usb/host/ohci-hcd.c b/drivers/usb/host/ohci-hcd.c
index c62d8feecce..89592f0a114 100644
--- a/drivers/usb/host/ohci-hcd.c
+++ b/drivers/usb/host/ohci-hcd.c
@@ -34,6 +34,7 @@
 #include <errno.h>
 #include <asm/cache.h>
 #include <linux/delay.h>
+#include <linux/string.h>
 
 #if defined(CONFIG_PCI_OHCI)
 # include <pci.h>
diff --git a/drivers/usb/host/r8a66597-hcd.c b/drivers/usb/host/r8a66597-hcd.c
index 37aa2c55f24..339e260ea33 100644
--- a/drivers/usb/host/r8a66597-hcd.c
+++ b/drivers/usb/host/r8a66597-hcd.c
@@ -14,6 +14,7 @@
 #include <dm/device_compat.h>
 #include <linux/delay.h>
 #include <linux/iopoll.h>
+#include <linux/string.h>
 #include <power/regulator.h>
 
 #include "r8a66597.h"
diff --git a/drivers/usb/host/r8a66597.h b/drivers/usb/host/r8a66597.h
index 625d4938cce..b42389b9188 100644
--- a/drivers/usb/host/r8a66597.h
+++ b/drivers/usb/host/r8a66597.h
@@ -9,6 +9,7 @@
 #define __R8A66597_H__
 
 #include <linux/bitops.h>
+#include <linux/string.h>
 #define SYSCFG0		0x00
 #define SYSCFG1		0x02
 #define SYSSTS0		0x04
diff --git a/drivers/usb/host/sl811-hcd.c b/drivers/usb/host/sl811-hcd.c
index 39d5988b36a..b33d7dc9ac4 100644
--- a/drivers/usb/host/sl811-hcd.c
+++ b/drivers/usb/host/sl811-hcd.c
@@ -23,6 +23,7 @@
 #include <time.h>
 #include <usb.h>
 #include <linux/delay.h>
+#include <linux/string.h>
 #include "sl811.h"
 
 #include "../../../board/kup/common/kup.h"
diff --git a/drivers/usb/host/usb-uclass.c b/drivers/usb/host/usb-uclass.c
index f42c0625cbf..ae425b9bfd9 100644
--- a/drivers/usb/host/usb-uclass.c
+++ b/drivers/usb/host/usb-uclass.c
@@ -15,6 +15,7 @@
 #include <dm/device-internal.h>
 #include <dm/lists.h>
 #include <dm/uclass-internal.h>
+#include <linux/string.h>
 
 extern bool usb_started; /* flag for the started/stopped USB status */
 static bool asynch_allowed;
diff --git a/drivers/usb/host/xhci-dwc3.c b/drivers/usb/host/xhci-dwc3.c
index 27f84102db3..44cb31c9c5f 100644
--- a/drivers/usb/host/xhci-dwc3.c
+++ b/drivers/usb/host/xhci-dwc3.c
@@ -14,6 +14,7 @@
 #include <usb.h>
 #include <dwc3-uboot.h>
 #include <linux/delay.h>
+#include <linux/string.h>
 
 #include <usb/xhci.h>
 #include <asm/io.h>
diff --git a/drivers/usb/host/xhci-mem.c b/drivers/usb/host/xhci-mem.c
index 108f4bd8cfd..e9b90a827fe 100644
--- a/drivers/usb/host/xhci-mem.c
+++ b/drivers/usb/host/xhci-mem.c
@@ -23,6 +23,7 @@
 #include <asm/cache.h>
 #include <linux/bug.h>
 #include <linux/errno.h>
+#include <linux/string.h>
 
 #include <usb/xhci.h>
 
diff --git a/drivers/usb/host/xhci.c b/drivers/usb/host/xhci.c
index f635bb39f6a..0dae35f8f9a 100644
--- a/drivers/usb/host/xhci.c
+++ b/drivers/usb/host/xhci.c
@@ -33,6 +33,7 @@
 #include <linux/bug.h>
 #include <linux/delay.h>
 #include <linux/errno.h>
+#include <linux/string.h>
 #include <usb/xhci.h>
 
 #ifndef CONFIG_USB_MAX_CONTROLLER_COUNT
diff --git a/drivers/usb/musb-new/am35x.c b/drivers/usb/musb-new/am35x.c
index ea0a944a87b..410cf042f66 100644
--- a/drivers/usb/musb-new/am35x.c
+++ b/drivers/usb/musb-new/am35x.c
@@ -29,6 +29,7 @@
 #include <asm/omap_musb.h>
 #include <linux/bug.h>
 #include <linux/delay.h>
+#include <linux/string.h>
 #include "linux-compat.h"
 #endif
 
diff --git a/drivers/usb/musb-new/mt85xx.c b/drivers/usb/musb-new/mt85xx.c
index 110b5b610f6..f826b986ba7 100644
--- a/drivers/usb/musb-new/mt85xx.c
+++ b/drivers/usb/musb-new/mt85xx.c
@@ -16,6 +16,7 @@
 #include <dm/root.h>
 #include <linux/delay.h>
 #include <linux/printk.h>
+#include <linux/string.h>
 #include <linux/usb/musb.h>
 #include <usb.h>
 #include "linux-compat.h"
diff --git a/drivers/usb/musb-new/musb_core.c b/drivers/usb/musb-new/musb_core.c
index f29131c69bb..a696c5a5b47 100644
--- a/drivers/usb/musb-new/musb_core.c
+++ b/drivers/usb/musb-new/musb_core.c
@@ -85,6 +85,7 @@
 #include <linux/bug.h>
 #include <linux/errno.h>
 #include <linux/printk.h>
+#include <linux/string.h>
 #include <linux/usb/ch9.h>
 #include <linux/usb/gadget.h>
 #include <linux/usb/musb.h>
diff --git a/drivers/usb/musb-new/musb_gadget.c b/drivers/usb/musb-new/musb_gadget.c
index fb3b3e45ef0..c6e346d5d80 100644
--- a/drivers/usb/musb-new/musb_gadget.c
+++ b/drivers/usb/musb-new/musb_gadget.c
@@ -25,6 +25,7 @@
 #include <common.h>
 #include <linux/bug.h>
 #include <linux/printk.h>
+#include <linux/string.h>
 #include <linux/usb/ch9.h>
 #include "linux-compat.h"
 #endif
diff --git a/drivers/usb/musb-new/musb_uboot.c b/drivers/usb/musb-new/musb_uboot.c
index 6ec8f429951..0948fd598f9 100644
--- a/drivers/usb/musb-new/musb_uboot.c
+++ b/drivers/usb/musb-new/musb_uboot.c
@@ -6,6 +6,7 @@
 #include <linux/delay.h>
 #include <linux/err.h>
 #include <linux/errno.h>
+#include <linux/string.h>
 #include <linux/usb/ch9.h>
 #include <linux/usb/gadget.h>
 
diff --git a/drivers/usb/musb-new/pic32.c b/drivers/usb/musb-new/pic32.c
index 9d1aa971c27..cc3a16b628c 100644
--- a/drivers/usb/musb-new/pic32.c
+++ b/drivers/usb/musb-new/pic32.c
@@ -14,6 +14,7 @@
 #include <dm/device_compat.h>
 #include <linux/bitops.h>
 #include <linux/delay.h>
+#include <linux/string.h>
 #include <linux/usb/musb.h>
 #include "linux-compat.h"
 #include "musb_core.h"
diff --git a/drivers/usb/musb-new/sunxi.c b/drivers/usb/musb-new/sunxi.c
index 9ae8a0e6b7a..082df93fdd8 100644
--- a/drivers/usb/musb-new/sunxi.c
+++ b/drivers/usb/musb-new/sunxi.c
@@ -33,6 +33,7 @@
 #include <linux/bitops.h>
 #include <linux/delay.h>
 #include <linux/printk.h>
+#include <linux/string.h>
 #include <linux/usb/musb.h>
 #include "linux-compat.h"
 #include "musb_core.h"
diff --git a/drivers/usb/musb-new/ti-musb.c b/drivers/usb/musb-new/ti-musb.c
index d447baf13bb..4867c2e792e 100644
--- a/drivers/usb/musb-new/ti-musb.c
+++ b/drivers/usb/musb-new/ti-musb.c
@@ -13,6 +13,7 @@
 #include <malloc.h>
 #include <asm/global_data.h>
 #include <linux/printk.h>
+#include <linux/string.h>
 #include <linux/usb/otg.h>
 #include <dm/device-internal.h>
 #include <dm/lists.h>
diff --git a/drivers/usb/musb/am35x.c b/drivers/usb/musb/am35x.c
index f945f1f5e2c..e749ae97180 100644
--- a/drivers/usb/musb/am35x.c
+++ b/drivers/usb/musb/am35x.c
@@ -11,6 +11,7 @@
 
 #include <common.h>
 #include <linux/delay.h>
+#include <linux/string.h>
 
 #include "am35x.h"
 
diff --git a/drivers/usb/musb/musb_hcd.c b/drivers/usb/musb/musb_hcd.c
index afbc648883b..99514419e5f 100644
--- a/drivers/usb/musb/musb_hcd.c
+++ b/drivers/usb/musb/musb_hcd.c
@@ -11,6 +11,7 @@
 #include <log.h>
 #include <usb.h>
 #include <linux/delay.h>
+#include <linux/string.h>
 #include "musb_hcd.h"
 
 /* MSC control transfers */
diff --git a/drivers/video/am335x-fb.c b/drivers/video/am335x-fb.c
index 4354c3efac1..b381b147cdd 100644
--- a/drivers/video/am335x-fb.c
+++ b/drivers/video/am335x-fb.c
@@ -26,6 +26,7 @@
 #include <linux/delay.h>
 #include <linux/err.h>
 #include <linux/printk.h>
+#include <linux/string.h>
 #include "am335x-fb.h"
 
 #define LCDC_FMAX				200000000
diff --git a/drivers/video/ati_radeon_fb.c b/drivers/video/ati_radeon_fb.c
index c4da2e3ae7f..c326722c550 100644
--- a/drivers/video/ati_radeon_fb.c
+++ b/drivers/video/ati_radeon_fb.c
@@ -17,6 +17,7 @@
 
 #include <common.h>
 #include <linux/delay.h>
+#include <linux/string.h>
 
 #include <command.h>
 #include <bios_emul.h>
diff --git a/drivers/video/bridge/anx6345.c b/drivers/video/bridge/anx6345.c
index 1c5270ff05c..5d76cedbcea 100644
--- a/drivers/video/bridge/anx6345.c
+++ b/drivers/video/bridge/anx6345.c
@@ -11,6 +11,7 @@
 #include <log.h>
 #include <video_bridge.h>
 #include <linux/delay.h>
+#include <linux/string.h>
 #include "../anx98xx-edp.h"
 
 #define DP_MAX_LINK_RATE		0x001
diff --git a/drivers/video/cfb_console.c b/drivers/video/cfb_console.c
index 3a51ad4a9d4..f9e3c1ac43e 100644
--- a/drivers/video/cfb_console.c
+++ b/drivers/video/cfb_console.c
@@ -76,6 +76,7 @@
 #include <video.h>
 #include <asm/global_data.h>
 #include <linux/compiler.h>
+#include <linux/string.h>
 
 #if defined(CONFIG_VIDEO_MXS)
 #define VIDEO_FB_16BPP_WORD_SWAP
diff --git a/drivers/video/console_truetype.c b/drivers/video/console_truetype.c
index 22b2ea7191e..26093408453 100644
--- a/drivers/video/console_truetype.c
+++ b/drivers/video/console_truetype.c
@@ -9,6 +9,7 @@
 #include <malloc.h>
 #include <video.h>
 #include <video_console.h>
+#include <linux/string.h>
 
 /* Functions needed by stb_truetype.h */
 static int tt_floor(double val)
diff --git a/drivers/video/da8xx-fb.c b/drivers/video/da8xx-fb.c
index 462c318126d..994b90a9665 100644
--- a/drivers/video/da8xx-fb.c
+++ b/drivers/video/da8xx-fb.c
@@ -21,6 +21,7 @@
 #include <linux/delay.h>
 #include <linux/list.h>
 #include <linux/fb.h>
+#include <linux/string.h>
 
 #include <linux/errno.h>
 #include <asm/io.h>
diff --git a/drivers/video/dw_hdmi.c b/drivers/video/dw_hdmi.c
index 16db3d38a2c..b2868413144 100644
--- a/drivers/video/dw_hdmi.c
+++ b/drivers/video/dw_hdmi.c
@@ -13,6 +13,7 @@
 #include <i2c.h>
 #include <media_bus_format.h>
 #include <linux/delay.h>
+#include <linux/string.h>
 #include "dw_hdmi.h"
 
 struct tmds_n_cts {
diff --git a/drivers/video/dw_mipi_dsi.c b/drivers/video/dw_mipi_dsi.c
index b7bfbb5e501..547dfc4b81c 100644
--- a/drivers/video/dw_mipi_dsi.c
+++ b/drivers/video/dw_mipi_dsi.c
@@ -24,6 +24,7 @@
 #include <linux/delay.h>
 #include <linux/iopoll.h>
 #include <video_bridge.h>
+#include <linux/string.h>
 
 #define HWVER_131			0x31333100	/* IP version 1.31 */
 
diff --git a/drivers/video/exynos/exynos_dp.c b/drivers/video/exynos/exynos_dp.c
index 36595556f13..71dae58f08b 100644
--- a/drivers/video/exynos/exynos_dp.c
+++ b/drivers/video/exynos/exynos_dp.c
@@ -24,6 +24,7 @@
 #include <asm/arch/dp.h>
 #include <asm/arch/pinmux.h>
 #include <asm/arch/power.h>
+#include <linux/string.h>
 
 #include "exynos_dp_lowlevel.h"
 
diff --git a/drivers/video/exynos/exynos_mipi_dsi.c b/drivers/video/exynos/exynos_mipi_dsi.c
index c56eadc8237..376e6abf2cf 100644
--- a/drivers/video/exynos/exynos_mipi_dsi.c
+++ b/drivers/video/exynos/exynos_mipi_dsi.c
@@ -20,6 +20,7 @@
 #include <asm/arch/power.h>
 #include <asm/arch/cpu.h>
 #include <asm/arch/clk.h>
+#include <linux/string.h>
 
 #include "exynos_mipi_dsi_lowlevel.h"
 #include "exynos_mipi_dsi_common.h"
diff --git a/drivers/video/fsl_dcu_fb.c b/drivers/video/fsl_dcu_fb.c
index 60b97e40633..bfa4ed3129b 100644
--- a/drivers/video/fsl_dcu_fb.c
+++ b/drivers/video/fsl_dcu_fb.c
@@ -18,6 +18,7 @@
 #include <malloc.h>
 #include <video.h>
 #include <video_fb.h>
+#include <linux/string.h>
 #include "videomodes.h"
 
 /* Convert the X,Y resolution pair into a single number */
diff --git a/drivers/video/fsl_diu_fb.c b/drivers/video/fsl_diu_fb.c
index 2c21e293a2c..e90e23779d7 100644
--- a/drivers/video/fsl_diu_fb.c
+++ b/drivers/video/fsl_diu_fb.c
@@ -10,6 +10,7 @@
 #include <common.h>
 #include <malloc.h>
 #include <asm/io.h>
+#include <linux/string.h>
 
 #include "videomodes.h"
 #include <video_fb.h>
diff --git a/drivers/video/ihs_video_out.c b/drivers/video/ihs_video_out.c
index f02fd13d28c..2124b826d28 100644
--- a/drivers/video/ihs_video_out.c
+++ b/drivers/video/ihs_video_out.c
@@ -16,6 +16,7 @@
 #include <regmap.h>
 #include <video_osd.h>
 #include <asm/gpio.h>
+#include <linux/string.h>
 
 static const uint MAX_X_CHARS = 53;
 static const uint MAX_Y_CHARS = 26;
diff --git a/drivers/video/imx/ipu_common.c b/drivers/video/imx/ipu_common.c
index 5908b23acc9..da7e5c85183 100644
--- a/drivers/video/imx/ipu_common.c
+++ b/drivers/video/imx/ipu_common.c
@@ -14,6 +14,7 @@
 #include <common.h>
 #include <log.h>
 #include <linux/delay.h>
+#include <linux/string.h>
 #include <linux/types.h>
 #include <linux/err.h>
 #include <asm/io.h>
diff --git a/drivers/video/lg4573.c b/drivers/video/lg4573.c
index 45df9c13474..3e61f7f53ce 100644
--- a/drivers/video/lg4573.c
+++ b/drivers/video/lg4573.c
@@ -16,6 +16,7 @@
 #include <spi.h>
 #include <asm/gpio.h>
 #include <linux/delay.h>
+#include <linux/string.h>
 
 #define PWR_ON_DELAY_MSECS  120
 
diff --git a/drivers/video/logicore_dp_tx.c b/drivers/video/logicore_dp_tx.c
index 9bc4bbb85d3..e752f457560 100644
--- a/drivers/video/logicore_dp_tx.c
+++ b/drivers/video/logicore_dp_tx.c
@@ -15,6 +15,7 @@
 #include <dm.h>
 #include <errno.h>
 #include <linux/delay.h>
+#include <linux/string.h>
 
 #include "axi.h"
 #include "logicore_dp_dpcd.h"
diff --git a/drivers/video/mali_dp.c b/drivers/video/mali_dp.c
index 7f9443828b2..e487d6742a1 100644
--- a/drivers/video/mali_dp.c
+++ b/drivers/video/mali_dp.c
@@ -21,6 +21,7 @@
 #include <dm/device_compat.h>
 #include <linux/delay.h>
 #include <linux/sizes.h>
+#include <linux/string.h>
 
 #define MALIDP_CORE_ID		0x0018
 #define MALIDP_REG_BG_COLOR	0x0044
diff --git a/drivers/video/meson/meson_venc.c b/drivers/video/meson/meson_venc.c
index e7366dd2fde..ce64865d591 100644
--- a/drivers/video/meson/meson_venc.c
+++ b/drivers/video/meson/meson_venc.c
@@ -12,6 +12,7 @@
 #include <fdtdec.h>
 #include <log.h>
 #include <asm/io.h>
+#include <linux/string.h>
 #include "meson_vpu.h"
 
 enum {
diff --git a/drivers/video/mipi_dsi.c b/drivers/video/mipi_dsi.c
index ecacea1dbeb..5caa6a6fef6 100644
--- a/drivers/video/mipi_dsi.c
+++ b/drivers/video/mipi_dsi.c
@@ -39,6 +39,7 @@
 #include <mipi_display.h>
 #include <mipi_dsi.h>
 #include <dm/devres.h>
+#include <linux/string.h>
 
 /**
  * DOC: dsi helpers
diff --git a/drivers/video/mx3fb.c b/drivers/video/mx3fb.c
index 9b42ca8d03f..05b65429187 100644
--- a/drivers/video/mx3fb.c
+++ b/drivers/video/mx3fb.c
@@ -11,6 +11,7 @@
 #include <malloc.h>
 #include <video_fb.h>
 #include <linux/delay.h>
+#include <linux/string.h>
 
 #include <asm/arch/imx-regs.h>
 #include <asm/arch/clock.h>
diff --git a/drivers/video/mxsfb.c b/drivers/video/mxsfb.c
index d84adb004bc..4bb817669f7 100644
--- a/drivers/video/mxsfb.c
+++ b/drivers/video/mxsfb.c
@@ -17,6 +17,7 @@
 #include <malloc.h>
 #include <video.h>
 #include <video_fb.h>
+#include <linux/string.h>
 
 #include <asm/arch/clock.h>
 #include <asm/arch/imx-regs.h>
diff --git a/drivers/video/orisetech_otm8009a.c b/drivers/video/orisetech_otm8009a.c
index 362bf6a6fe4..acb8f384a88 100644
--- a/drivers/video/orisetech_otm8009a.c
+++ b/drivers/video/orisetech_otm8009a.c
@@ -15,6 +15,7 @@
 #include <asm/gpio.h>
 #include <dm/device_compat.h>
 #include <linux/delay.h>
+#include <linux/string.h>
 #include <power/regulator.h>
 
 #define OTM8009A_BACKLIGHT_DEFAULT	240
diff --git a/drivers/video/raydium-rm68200.c b/drivers/video/raydium-rm68200.c
index 353894503b9..1efd1607f63 100644
--- a/drivers/video/raydium-rm68200.c
+++ b/drivers/video/raydium-rm68200.c
@@ -15,6 +15,7 @@
 #include <asm/gpio.h>
 #include <dm/device_compat.h>
 #include <linux/delay.h>
+#include <linux/string.h>
 #include <power/regulator.h>
 
 /*** Manufacturer Command Set ***/
diff --git a/drivers/video/rockchip/rk_edp.c b/drivers/video/rockchip/rk_edp.c
index 36d17deea58..b5fa492e253 100644
--- a/drivers/video/rockchip/rk_edp.c
+++ b/drivers/video/rockchip/rk_edp.c
@@ -23,6 +23,7 @@
 #include <asm/arch-rockchip/hardware.h>
 #include <dt-bindings/clock/rk3288-cru.h>
 #include <linux/delay.h>
+#include <linux/string.h>
 
 #define MAX_CR_LOOP 5
 #define MAX_EQ_LOOP 5
diff --git a/drivers/video/sandbox_osd.c b/drivers/video/sandbox_osd.c
index 7e722326b3d..9fb1224bf59 100644
--- a/drivers/video/sandbox_osd.c
+++ b/drivers/video/sandbox_osd.c
@@ -8,6 +8,7 @@
 #include <dm.h>
 #include <malloc.h>
 #include <video_osd.h>
+#include <linux/string.h>
 
 #include "sandbox_osd.h"
 
diff --git a/drivers/video/simplefb.c b/drivers/video/simplefb.c
index e7c2e184ba5..a45e9aa9e0f 100644
--- a/drivers/video/simplefb.c
+++ b/drivers/video/simplefb.c
@@ -10,6 +10,7 @@
 #include <log.h>
 #include <video.h>
 #include <asm/global_data.h>
+#include <linux/string.h>
 
 static int simple_video_probe(struct udevice *dev)
 {
diff --git a/drivers/video/stb_truetype.h b/drivers/video/stb_truetype.h
index 5d00bff9fd0..93518d200ff 100644
--- a/drivers/video/stb_truetype.h
+++ b/drivers/video/stb_truetype.h
@@ -232,6 +232,8 @@
 //
 //  Incomplete text-in-3d-api example, which draws quads properly aligned to be lossless
 //
+#include <linux/string.h>
+
 #if 0
 #define STB_TRUETYPE_IMPLEMENTATION  // force following include to generate implementation
 #include "stb_truetype.h"
diff --git a/drivers/video/sunxi/sunxi_de2.c b/drivers/video/sunxi/sunxi_de2.c
index b657e163f06..6e3999649d3 100644
--- a/drivers/video/sunxi/sunxi_de2.c
+++ b/drivers/video/sunxi/sunxi_de2.c
@@ -22,6 +22,7 @@
 #include <dm/device-internal.h>
 #include <dm/uclass-internal.h>
 #include <linux/bitops.h>
+#include <linux/string.h>
 #include "simplefb_common.h"
 
 DECLARE_GLOBAL_DATA_PTR;
diff --git a/drivers/video/sunxi/sunxi_display.c b/drivers/video/sunxi/sunxi_display.c
index f52aba4d21c..d1330314621 100644
--- a/drivers/video/sunxi/sunxi_display.c
+++ b/drivers/video/sunxi/sunxi_display.c
@@ -12,6 +12,7 @@
 #include <init.h>
 #include <time.h>
 #include <linux/delay.h>
+#include <linux/string.h>
 
 #include <asm/arch/clock.h>
 #include <asm/arch/display.h>
diff --git a/drivers/video/sunxi/sunxi_lcd.c b/drivers/video/sunxi/sunxi_lcd.c
index 10f7e2ac234..c39438ff09a 100644
--- a/drivers/video/sunxi/sunxi_lcd.c
+++ b/drivers/video/sunxi/sunxi_lcd.c
@@ -18,6 +18,7 @@
 #include <asm/arch/lcdc.h>
 #include <asm/arch/gpio.h>
 #include <asm/gpio.h>
+#include <linux/string.h>
 
 struct sunxi_lcd_priv {
 	struct display_timing timing;
diff --git a/drivers/video/tegra124/dp.c b/drivers/video/tegra124/dp.c
index b09943897c1..5fcb03835d1 100644
--- a/drivers/video/tegra124/dp.c
+++ b/drivers/video/tegra124/dp.c
@@ -15,6 +15,7 @@
 #include <asm/io.h>
 #include <asm/arch-tegra/dc.h>
 #include <linux/delay.h>
+#include <linux/string.h>
 #include "display.h"
 #include "edid.h"
 #include "sor.h"
diff --git a/drivers/video/vidconsole-uclass.c b/drivers/video/vidconsole-uclass.c
index 3a07f36ce27..6912177993d 100644
--- a/drivers/video/vidconsole-uclass.c
+++ b/drivers/video/vidconsole-uclass.c
@@ -16,6 +16,7 @@
 #include <video_console.h>
 #include <video_font.h>		/* Bitmap font for code page 437 */
 #include <linux/ctype.h>
+#include <linux/string.h>
 
 /*
  * Structure to describe a console color
diff --git a/drivers/video/video-uclass.c b/drivers/video/video-uclass.c
index eb234cc9bf4..75a4ea17e36 100644
--- a/drivers/video/video-uclass.c
+++ b/drivers/video/video-uclass.c
@@ -22,6 +22,7 @@
 #ifdef CONFIG_SANDBOX
 #include <asm/sdl.h>
 #endif
+#include <linux/string.h>
 
 /*
  * Theory of operation:
diff --git a/drivers/video/videomodes.c b/drivers/video/videomodes.c
index ed7373eac84..8d3aff1a14c 100644
--- a/drivers/video/videomodes.c
+++ b/drivers/video/videomodes.c
@@ -62,6 +62,7 @@
 #include <errno.h>
 #include <fdtdec.h>
 #include <linux/ctype.h>
+#include <linux/string.h>
 
 #include "videomodes.h"
 
diff --git a/drivers/virtio/virtio-uclass.c b/drivers/virtio/virtio-uclass.c
index 2636cbedfe2..5264fc209c9 100644
--- a/drivers/virtio/virtio-uclass.c
+++ b/drivers/virtio/virtio-uclass.c
@@ -23,6 +23,7 @@
 #include <virtio.h>
 #include <dm/lists.h>
 #include <linux/bug.h>
+#include <linux/string.h>
 
 static const char *const virtio_drv_name[VIRTIO_ID_MAX_NUM] = {
 	[VIRTIO_ID_NET]		= VIRTIO_NET_DRV_NAME,
diff --git a/drivers/virtio/virtio_mmio.c b/drivers/virtio/virtio_mmio.c
index b951ea3257b..50f79dcb3b1 100644
--- a/drivers/virtio/virtio_mmio.c
+++ b/drivers/virtio/virtio_mmio.c
@@ -17,6 +17,7 @@
 #include <linux/compat.h>
 #include <linux/err.h>
 #include <linux/io.h>
+#include <linux/string.h>
 #include "virtio_mmio.h"
 
 static int virtio_mmio_get_config(struct udevice *udev, unsigned int offset,
diff --git a/drivers/virtio/virtio_net.c b/drivers/virtio/virtio_net.c
index 0dbbd780230..a16268f9d27 100644
--- a/drivers/virtio/virtio_net.c
+++ b/drivers/virtio/virtio_net.c
@@ -10,6 +10,7 @@
 #include <virtio_types.h>
 #include <virtio.h>
 #include <virtio_ring.h>
+#include <linux/string.h>
 #include "virtio_net.h"
 
 /* Amount of buffers to keep in the RX virtqueue */
diff --git a/drivers/virtio/virtio_pci_modern.c b/drivers/virtio/virtio_pci_modern.c
index 2e5bbade002..483525872dd 100644
--- a/drivers/virtio/virtio_pci_modern.c
+++ b/drivers/virtio/virtio_pci_modern.c
@@ -18,6 +18,7 @@
 #include <linux/delay.h>
 #include <linux/err.h>
 #include <linux/io.h>
+#include <linux/string.h>
 #include "virtio_pci.h"
 
 #define VIRTIO_PCI_DRV_NAME	"virtio-pci.m"
diff --git a/drivers/virtio/virtio_ring.c b/drivers/virtio/virtio_ring.c
index 7f1cbc59329..dfd0ce8db63 100644
--- a/drivers/virtio/virtio_ring.c
+++ b/drivers/virtio/virtio_ring.c
@@ -15,6 +15,7 @@
 #include <virtio_ring.h>
 #include <linux/bug.h>
 #include <linux/compat.h>
+#include <linux/string.h>
 
 int virtqueue_add(struct virtqueue *vq, struct virtio_sg *sgs[],
 		  unsigned int out_sgs, unsigned int in_sgs)
diff --git a/drivers/virtio/virtio_rng.c b/drivers/virtio/virtio_rng.c
index fc3e19cfaee..111f8de2855 100644
--- a/drivers/virtio/virtio_rng.c
+++ b/drivers/virtio/virtio_rng.c
@@ -10,6 +10,7 @@
 #include <virtio_types.h>
 #include <virtio.h>
 #include <virtio_ring.h>
+#include <linux/string.h>
 
 #define BUFFER_SIZE	16UL
 
diff --git a/drivers/w1-eeprom/ds2502.c b/drivers/w1-eeprom/ds2502.c
index 19ee4b17ea5..42a3560c237 100644
--- a/drivers/w1-eeprom/ds2502.c
+++ b/drivers/w1-eeprom/ds2502.c
@@ -26,6 +26,7 @@
 #include <linux/err.h>
 #include <w1-eeprom.h>
 #include <w1.h>
+#include <linux/string.h>
 
 #define DS2502_PAGE_SIZE	32
 #define DS2502_PAGE_COUNT	4
diff --git a/drivers/w1-eeprom/eep_sandbox.c b/drivers/w1-eeprom/eep_sandbox.c
index 27c7f9f1b6b..86c02b9b915 100644
--- a/drivers/w1-eeprom/eep_sandbox.c
+++ b/drivers/w1-eeprom/eep_sandbox.c
@@ -9,6 +9,7 @@
 #include <dm.h>
 #include <w1-eeprom.h>
 #include <w1.h>
+#include <linux/string.h>
 
 #define W1_F2D_READ_EEPROM      0xf0
 
diff --git a/drivers/watchdog/mpc8xx_wdt.c b/drivers/watchdog/mpc8xx_wdt.c
index c8b104d8f56..3cb50ab091f 100644
--- a/drivers/watchdog/mpc8xx_wdt.c
+++ b/drivers/watchdog/mpc8xx_wdt.c
@@ -10,6 +10,7 @@
 #include <mpc8xx.h>
 #include <asm/cpm_8xx.h>
 #include <asm/io.h>
+#include <linux/string.h>
 
 void hw_watchdog_reset(void)
 {
diff --git a/env/callback.c b/env/callback.c
index 638a02b28f7..3bcd5c111e8 100644
--- a/env/callback.c
+++ b/env/callback.c
@@ -8,6 +8,7 @@
 #include <env.h>
 #include <env_internal.h>
 #include <asm/global_data.h>
+#include <linux/string.h>
 
 #if defined(CONFIG_NEEDS_MANUAL_RELOC)
 DECLARE_GLOBAL_DATA_PTR;
diff --git a/env/common.c b/env/common.c
index b6a1f45271c..1918bfa47ff 100644
--- a/env/common.c
+++ b/env/common.c
@@ -20,6 +20,7 @@
 #include <search.h>
 #include <errno.h>
 #include <malloc.h>
+#include <linux/string.h>
 #include <u-boot/crc.h>
 
 DECLARE_GLOBAL_DATA_PTR;
diff --git a/env/ext4.c b/env/ext4.c
index d4869a1a457..03f8e4e027b 100644
--- a/env/ext4.c
+++ b/env/ext4.c
@@ -20,6 +20,7 @@
 
 #include <common.h>
 #include <part.h>
+#include <linux/string.h>
 
 #include <command.h>
 #include <env.h>
diff --git a/env/fat.c b/env/fat.c
index 71bf8bfa18f..adc5e9259c2 100644
--- a/env/fat.c
+++ b/env/fat.c
@@ -19,6 +19,7 @@
 #include <mmc.h>
 #include <asm/cache.h>
 #include <linux/stddef.h>
+#include <linux/string.h>
 
 #ifdef CONFIG_SPL_BUILD
 /* TODO(sjg@chromium.org): Figure out why this is needed */
diff --git a/env/flash.c b/env/flash.c
index ebee9069e4e..6fb9ba7edef 100644
--- a/env/flash.c
+++ b/env/flash.c
@@ -20,6 +20,7 @@
 #include <malloc.h>
 #include <search.h>
 #include <errno.h>
+#include <linux/string.h>
 #include <u-boot/crc.h>
 
 DECLARE_GLOBAL_DATA_PTR;
diff --git a/env/mmc.c b/env/mmc.c
index 66a94631e38..af022843704 100644
--- a/env/mmc.c
+++ b/env/mmc.c
@@ -7,6 +7,7 @@
 
 #include <common.h>
 #include <asm/global_data.h>
+#include <linux/string.h>
 
 #include <command.h>
 #include <env.h>
diff --git a/env/nvram.c b/env/nvram.c
index f4126858b5b..7af5c4cf4b8 100644
--- a/env/nvram.c
+++ b/env/nvram.c
@@ -31,6 +31,7 @@
 #include <linux/stddef.h>
 #include <search.h>
 #include <errno.h>
+#include <linux/string.h>
 #include <u-boot/crc.h>
 
 DECLARE_GLOBAL_DATA_PTR;
diff --git a/env/ubi.c b/env/ubi.c
index eb21c4f38b4..f1e9d42dbf4 100644
--- a/env/ubi.c
+++ b/env/ubi.c
@@ -6,6 +6,7 @@
 
 #include <common.h>
 #include <asm/global_data.h>
+#include <linux/string.h>
 
 #include <command.h>
 #include <env.h>
diff --git a/examples/api/demo.c b/examples/api/demo.c
index d586174ce8c..789847c401e 100644
--- a/examples/api/demo.c
+++ b/examples/api/demo.c
@@ -7,6 +7,7 @@
 
 #include <common.h>
 #include <env.h>
+#include <linux/string.h>
 #include <linux/types.h>
 #include <api_public.h>
 
diff --git a/examples/api/glue.c b/examples/api/glue.c
index 91d13157a1e..c90765e8d28 100644
--- a/examples/api/glue.c
+++ b/examples/api/glue.c
@@ -5,6 +5,7 @@
 
 #include <common.h>
 #include <env.h>
+#include <linux/string.h>
 #include <linux/types.h>
 #include <api_public.h>
 #include <u-boot/crc.h>
diff --git a/examples/standalone/atmel_df_pow2.c b/examples/standalone/atmel_df_pow2.c
index 9c74f4994b9..271561d7d96 100644
--- a/examples/standalone/atmel_df_pow2.c
+++ b/examples/standalone/atmel_df_pow2.c
@@ -10,6 +10,7 @@
 #include <exports.h>
 #include <spi.h>
 #include <linux/delay.h>
+#include <linux/string.h>
 
 #define CMD_ID    0x9f
 #define CMD_STAT  0xd7
diff --git a/fs/btrfs/super.c b/fs/btrfs/super.c
index 913a4d402e9..477a4ab8173 100644
--- a/fs/btrfs/super.c
+++ b/fs/btrfs/super.c
@@ -10,6 +10,7 @@
 #include <memalign.h>
 #include <part.h>
 #include <linux/compat.h>
+#include <linux/string.h>
 #include "btrfs.h"
 
 #define BTRFS_SUPER_FLAG_SUPP	(BTRFS_HEADER_FLAG_WRITTEN	\
diff --git a/fs/cbfs/cbfs.c b/fs/cbfs/cbfs.c
index 9007aa7d159..51a59030f60 100644
--- a/fs/cbfs/cbfs.c
+++ b/fs/cbfs/cbfs.c
@@ -8,6 +8,7 @@
 #include <log.h>
 #include <malloc.h>
 #include <asm/byteorder.h>
+#include <linux/string.h>
 
 /* Offset of master header from the start of a coreboot ROM */
 #define MASTER_HDR_OFFSET	0x38
diff --git a/fs/cramfs/cramfs.c b/fs/cramfs/cramfs.c
index 7ef48bbc064..975e29d00b1 100644
--- a/fs/cramfs/cramfs.c
+++ b/fs/cramfs/cramfs.c
@@ -32,6 +32,7 @@
 #include <jffs2/jffs2.h>
 #include <jffs2/load_kernel.h>
 #include <cramfs/cramfs_fs.h>
+#include <linux/string.h>
 
 /* These two macros may change in future, to provide better st_ino
    semantics. */
diff --git a/fs/ext4/ext4_common.c b/fs/ext4/ext4_common.c
index c52cc400e1f..8022d737634 100644
--- a/fs/ext4/ext4_common.c
+++ b/fs/ext4/ext4_common.c
@@ -28,6 +28,7 @@
 #include <part.h>
 #include <stddef.h>
 #include <linux/stat.h>
+#include <linux/string.h>
 #include <linux/time.h>
 #include <asm/byteorder.h>
 #include "ext4_common.h"
diff --git a/fs/ext4/ext4_common.h b/fs/ext4/ext4_common.h
index beaee9c80bd..1314cf20df8 100644
--- a/fs/ext4/ext4_common.h
+++ b/fs/ext4/ext4_common.h
@@ -29,6 +29,7 @@
 #include "ext4_journal.h"
 #include "crc16.h"
 #endif
+#include <linux/string.h>
 
 #define YES		1
 #define NO		0
diff --git a/fs/ext4/ext4_journal.c b/fs/ext4/ext4_journal.c
index 361baa35c92..82af0784bd8 100644
--- a/fs/ext4/ext4_journal.c
+++ b/fs/ext4/ext4_journal.c
@@ -20,6 +20,7 @@
 #include <malloc.h>
 #include <ext_common.h>
 #include <asm/global_data.h>
+#include <linux/string.h>
 #include "ext4_common.h"
 
 static struct revoke_blk_list *revk_blk_list;
diff --git a/fs/ext4/ext4_write.c b/fs/ext4/ext4_write.c
index f22af45d1b9..7c04c5d3dd6 100644
--- a/fs/ext4/ext4_write.c
+++ b/fs/ext4/ext4_write.c
@@ -29,6 +29,7 @@
 #include <part.h>
 #include <linux/stat.h>
 #include <div64.h>
+#include <linux/string.h>
 #include "ext4_common.h"
 
 static inline void ext4fs_sb_free_inodes_inc(struct ext2_sblock *sb)
diff --git a/fs/ext4/ext4fs.c b/fs/ext4/ext4fs.c
index 691d7e29b6d..44df0f4a4ad 100644
--- a/fs/ext4/ext4fs.c
+++ b/fs/ext4/ext4fs.c
@@ -28,6 +28,7 @@
 #include <malloc.h>
 #include <part.h>
 #include <uuid.h>
+#include <linux/string.h>
 #include "ext4_common.h"
 
 int ext4fs_symlinknest;
diff --git a/fs/fat/fat.c b/fs/fat/fat.c
index 9578b74bae7..e590fdd0f1e 100644
--- a/fs/fat/fat.c
+++ b/fs/fat/fat.c
@@ -22,6 +22,7 @@
 #include <asm/cache.h>
 #include <linux/compiler.h>
 #include <linux/ctype.h>
+#include <linux/string.h>
 
 /*
  * Convert a string to lowercase.  Converts at most 'len' characters,
diff --git a/fs/fat/fat_write.c b/fs/fat/fat_write.c
index a2682b5f465..9facf7609f2 100644
--- a/fs/fat/fat_write.c
+++ b/fs/fat/fat_write.c
@@ -17,6 +17,7 @@
 #include <linux/ctype.h>
 #include <div64.h>
 #include <linux/math64.h>
+#include <linux/string.h>
 #include "fat.c"
 
 static void uppercase(char *str, int len)
diff --git a/fs/fs.c b/fs/fs.c
index 15524c479c6..c6fdbdcc4b4 100644
--- a/fs/fs.c
+++ b/fs/fs.c
@@ -25,6 +25,7 @@
 #include <div64.h>
 #include <linux/math64.h>
 #include <efi_loader.h>
+#include <linux/string.h>
 
 DECLARE_GLOBAL_DATA_PTR;
 
diff --git a/fs/fs_internal.c b/fs/fs_internal.c
index 8b19811a639..55d6d26ba5f 100644
--- a/fs/fs_internal.c
+++ b/fs/fs_internal.c
@@ -11,6 +11,7 @@
 #include <log.h>
 #include <part.h>
 #include <memalign.h>
+#include <linux/string.h>
 
 int fs_devread(struct blk_desc *blk, struct disk_partition *partition,
 	       lbaint_t sector, int byte_offset, int byte_len, char *buf)
diff --git a/fs/jffs2/compr_zlib.c b/fs/jffs2/compr_zlib.c
index d306b6dc4cf..12c5ed65e13 100644
--- a/fs/jffs2/compr_zlib.c
+++ b/fs/jffs2/compr_zlib.c
@@ -37,6 +37,7 @@
 
 #include <common.h>
 #include <config.h>
+#include <string.h>
 #include <jffs2/jffs2.h>
 #include <jffs2/mini_inflate.h>
 
diff --git a/fs/jffs2/jffs2_1pass.c b/fs/jffs2/jffs2_1pass.c
index a98745c50ea..c5b14297398 100644
--- a/fs/jffs2/jffs2_1pass.c
+++ b/fs/jffs2/jffs2_1pass.c
@@ -118,6 +118,7 @@
 #include <div64.h>
 #include <linux/compiler.h>
 #include <linux/stat.h>
+#include <linux/string.h>
 #include <linux/time.h>
 #include <u-boot/crc.h>
 #include <watchdog.h>
diff --git a/fs/jffs2/mini_inflate.c b/fs/jffs2/mini_inflate.c
index 3072eedd8c1..117e8f58b30 100644
--- a/fs/jffs2/mini_inflate.c
+++ b/fs/jffs2/mini_inflate.c
@@ -9,6 +9,7 @@
 
 #include <config.h>
 #include <jffs2/mini_inflate.h>
+#include <linux/string.h>
 
 /* The order that the code lengths in section 3.2.7 are in */
 static unsigned char huffman_order[] = {16, 17, 18,  0,  8,  7,  9,  6, 10,  5,
diff --git a/fs/reiserfs/reiserfs.c b/fs/reiserfs/reiserfs.c
index 635aab2eba7..cf053e12d94 100644
--- a/fs/reiserfs/reiserfs.c
+++ b/fs/reiserfs/reiserfs.c
@@ -18,6 +18,7 @@
 #include <common.h>
 #include <malloc.h>
 #include <linux/ctype.h>
+#include <linux/string.h>
 #include <linux/time.h>
 #include <asm/byteorder.h>
 #include <reiserfs.h>
diff --git a/fs/ubifs/debug.c b/fs/ubifs/debug.c
index 4f0f680131f..2bd0073cc59 100644
--- a/fs/ubifs/debug.c
+++ b/fs/ubifs/debug.c
@@ -20,6 +20,7 @@
 #include <time.h>
 #include <dm/devres.h>
 #include <linux/printk.h>
+#include <linux/string.h>
 
 #ifndef __UBOOT__
 #include <linux/module.h>
diff --git a/fs/ubifs/io.c b/fs/ubifs/io.c
index eb14b895447..57e0847464c 100644
--- a/fs/ubifs/io.c
+++ b/fs/ubifs/io.c
@@ -68,6 +68,7 @@
 #else
 #include <linux/compat.h>
 #include <linux/err.h>
+#include <linux/string.h>
 #endif
 #include "ubifs.h"
 
diff --git a/fs/ubifs/key.h b/fs/ubifs/key.h
index 70c2faf331b..f5b19525621 100644
--- a/fs/ubifs/key.h
+++ b/fs/ubifs/key.h
@@ -33,6 +33,7 @@
  * reserved for "." and "..". %2 is reserved for "end of readdir" marker. This
  * function makes sure the reserved values are not used.
  */
+#include <linux/string.h>
 static inline uint32_t key_mask_hash(uint32_t hash)
 {
 	hash &= UBIFS_S_KEY_HASH_MASK;
diff --git a/fs/ubifs/log.c b/fs/ubifs/log.c
index 77ff52575ea..0c8671a8847 100644
--- a/fs/ubifs/log.c
+++ b/fs/ubifs/log.c
@@ -19,6 +19,7 @@
 #include <log.h>
 #include <dm/devres.h>
 #include <linux/err.h>
+#include <linux/string.h>
 #endif
 #include "ubifs.h"
 
diff --git a/fs/ubifs/lprops.c b/fs/ubifs/lprops.c
index a9e22abe6b4..83e6b2d5df2 100644
--- a/fs/ubifs/lprops.c
+++ b/fs/ubifs/lprops.c
@@ -20,6 +20,7 @@
 #include <log.h>
 #include <malloc.h>
 #include <linux/err.h>
+#include <linux/string.h>
 #endif
 #include "ubifs.h"
 
diff --git a/fs/ubifs/lpt_commit.c b/fs/ubifs/lpt_commit.c
index 3ca8d704aaf..583f113902e 100644
--- a/fs/ubifs/lpt_commit.c
+++ b/fs/ubifs/lpt_commit.c
@@ -24,6 +24,7 @@
 #include <linux/compat.h>
 #include <linux/err.h>
 #include <linux/printk.h>
+#include <linux/string.h>
 #include "crc16.h"
 #endif
 #include "ubifs.h"
diff --git a/fs/ubifs/recovery.c b/fs/ubifs/recovery.c
index 6b6884fb209..cf2b8a48b8a 100644
--- a/fs/ubifs/recovery.c
+++ b/fs/ubifs/recovery.c
@@ -43,6 +43,7 @@
 #include <u-boot/crc.h>
 #else
 #include <linux/err.h>
+#include <linux/string.h>
 #endif
 #include "ubifs.h"
 
diff --git a/fs/ubifs/replay.c b/fs/ubifs/replay.c
index aa7f281ef6b..0862fe4ebf3 100644
--- a/fs/ubifs/replay.c
+++ b/fs/ubifs/replay.c
@@ -25,6 +25,7 @@
 #include <dm/devres.h>
 #include <linux/compat.h>
 #include <linux/err.h>
+#include <linux/string.h>
 #endif
 #include "ubifs.h"
 #include <linux/bug.h>
diff --git a/fs/ubifs/super.c b/fs/ubifs/super.c
index 347f8365642..1ce46ef542d 100644
--- a/fs/ubifs/super.c
+++ b/fs/ubifs/super.c
@@ -38,6 +38,7 @@
 #include <linux/printk.h>
 #include <linux/stat.h>
 #include <linux/err.h>
+#include <linux/string.h>
 #include "ubifs.h"
 #include <ubi_uboot.h>
 #include <linux/stringify.h>
diff --git a/fs/ubifs/tnc.c b/fs/ubifs/tnc.c
index e8b8f168380..c8aef71d86a 100644
--- a/fs/ubifs/tnc.c
+++ b/fs/ubifs/tnc.c
@@ -30,6 +30,7 @@
 #include <linux/compat.h>
 #include <linux/err.h>
 #include <linux/stat.h>
+#include <linux/string.h>
 #endif
 #include "ubifs.h"
 
diff --git a/fs/ubifs/ubifs.c b/fs/ubifs/ubifs.c
index d6be5c947d7..76ea7a8031e 100644
--- a/fs/ubifs/ubifs.c
+++ b/fs/ubifs/ubifs.c
@@ -18,6 +18,7 @@
 #include <malloc.h>
 #include <memalign.h>
 #include <asm/global_data.h>
+#include <linux/string.h>
 #include "ubifs.h"
 #include <part.h>
 #include <dm/devres.h>
diff --git a/fs/yaffs2/yaffs_mtdif2.c b/fs/yaffs2/yaffs_mtdif2.c
index 81a4d964f3e..9cf4deee99e 100644
--- a/fs/yaffs2/yaffs_mtdif2.c
+++ b/fs/yaffs2/yaffs_mtdif2.c
@@ -17,6 +17,7 @@
 #include <common.h>
 #include <linux/bug.h>
 #include <linux/errno.h>
+#include <linux/string.h>
 
 #include "yportenv.h"
 #include "yaffs_trace.h"
diff --git a/fs/yaffs2/yaffs_uboot_glue.c b/fs/yaffs2/yaffs_uboot_glue.c
index 913eb323f38..3528a70dc05 100644
--- a/fs/yaffs2/yaffs_uboot_glue.c
+++ b/fs/yaffs2/yaffs_uboot_glue.c
@@ -23,6 +23,7 @@
 #include <div64.h>
 #include <malloc.h>
 #include <linux/printk.h>
+#include <linux/string.h>
 
 #include <config.h>
 #include "nand.h"
diff --git a/fs/yaffs2/yaffsfs.c b/fs/yaffs2/yaffsfs.c
index 510faaeed14..2643cc51057 100644
--- a/fs/yaffs2/yaffsfs.c
+++ b/fs/yaffs2/yaffsfs.c
@@ -12,6 +12,7 @@
  */
 
 #include <div64.h>
+#include <linux/string.h>
 #include "yaffsfs.h"
 #include "yaffs_guts.h"
 #include "yaffscfg.h"
diff --git a/fs/yaffs2/ydirectenv.h b/fs/yaffs2/ydirectenv.h
index d274f22e84d..a68c7637867 100644
--- a/fs/yaffs2/ydirectenv.h
+++ b/fs/yaffs2/ydirectenv.h
@@ -23,6 +23,7 @@
 #include <common.h>
 #include <malloc.h>
 #include <linux/compat.h>
+#include <linux/string.h>
 
 #include "yaffs_osglue.h"
 
diff --git a/fs/zfs/zfs.c b/fs/zfs/zfs.c
index 1fec96cd5ce..8958a256227 100644
--- a/fs/zfs/zfs.c
+++ b/fs/zfs/zfs.c
@@ -14,6 +14,7 @@
 #include <log.h>
 #include <malloc.h>
 #include <linux/stat.h>
+#include <linux/string.h>
 #include <linux/time.h>
 #include <linux/ctype.h>
 #include <asm/byteorder.h>
diff --git a/include/common.h b/include/common.h
index a904f41c366..69fa1932483 100644
--- a/include/common.h
+++ b/include/common.h
@@ -16,7 +16,6 @@
 #include <config.h>
 #include <errno.h>
 #include <linux/types.h>
-#include <linux/string.h>
 #include <stdarg.h>
 #include <stdio.h>
 #include <linux/kernel.h>
diff --git a/include/dm/of.h b/include/dm/of.h
index 6bef73b441c..a64822f7e91 100644
--- a/include/dm/of.h
+++ b/include/dm/of.h
@@ -9,6 +9,7 @@
 
 #include <asm/u-boot.h>
 #include <asm/global_data.h>
+#include <linux/string.h>
 
 /* integer value within a device tree property which references another node */
 typedef u32 phandle;
diff --git a/include/exception.h b/include/exception.h
index a7f21e73d75..7f4638e4252 100644
--- a/include/exception.h
+++ b/include/exception.h
@@ -6,6 +6,7 @@
  */
 
 #include <command.h>
+#include <linux/string.h>
 
 static int do_exception(struct cmd_tbl *cmdtp, int flag, int argc,
 			char *const argv[])
diff --git a/include/exports.h b/include/exports.h
index 4b9aa5ff405..902f8b559b2 100644
--- a/include/exports.h
+++ b/include/exports.h
@@ -5,6 +5,7 @@
 #include <time.h>
 #include <asm/global_data.h>
 #include <linux/delay.h>
+#include <linux/string.h>
 
 #ifndef __ASSEMBLY__
 #ifdef CONFIG_PHY_AQUANTIA
diff --git a/include/fdt_support.h b/include/fdt_support.h
index 9684cffe80b..443bfe5e3a3 100644
--- a/include/fdt_support.h
+++ b/include/fdt_support.h
@@ -338,6 +338,7 @@ int fdt_overlay_apply_verbose(void *fdt, void *fdto);
  */
 int fdt_get_cells_len(const void *blob, char *nr_cells_name);
 
+#include <linux/string.h>
 #endif /* ifdef CONFIG_OF_LIBFDT */
 
 #ifdef USE_HOSTCC
diff --git a/include/imx8image.h b/include/imx8image.h
index 00c614ab6cc..72daa6ed5d3 100644
--- a/include/imx8image.h
+++ b/include/imx8image.h
@@ -10,6 +10,7 @@
 
 #include <image.h>
 #include <inttypes.h>
+#include <linux/string.h>
 #include "imagetool.h"
 
 #define __packed   __attribute__((packed))
diff --git a/include/malloc.h b/include/malloc.h
index f66c2e86176..36f8556f9fe 100644
--- a/include/malloc.h
+++ b/include/malloc.h
@@ -215,7 +215,6 @@
 
 */
 
-
 #ifndef __MALLOC_H__
 #define __MALLOC_H__
 
@@ -230,6 +229,7 @@
 #else
 #define __STD_C     0
 #endif /*__cplusplus*/
+#include <linux/string.h>
 #endif /*__STDC__*/
 #endif /*__STD_C*/
 
diff --git a/include/net.h b/include/net.h
index 1bf9867f8cf..26163f9f097 100644
--- a/include/net.h
+++ b/include/net.h
@@ -12,6 +12,7 @@
 #ifndef __NET_H__
 #define __NET_H__
 
+#include <linux/string.h>
 #include <linux/types.h>
 #include <asm/cache.h>
 #include <asm/byteorder.h>	/* for nton* / ntoh* stuff */
diff --git a/include/phy_interface.h b/include/phy_interface.h
index 882e4af8ffd..b19fd50cd7a 100644
--- a/include/phy_interface.h
+++ b/include/phy_interface.h
@@ -10,6 +10,7 @@
 #ifndef _PHY_INTERFACE_H
 #define _PHY_INTERFACE_H
 
+#include <linux/string.h>
 typedef enum {
 	PHY_INTERFACE_MODE_MII,
 	PHY_INTERFACE_MODE_GMII,
diff --git a/include/spi_flash.h b/include/spi_flash.h
index b3366194876..e5e9e3eb040 100644
--- a/include/spi_flash.h
+++ b/include/spi_flash.h
@@ -10,6 +10,7 @@
 #define _SPI_FLASH_H_
 
 #include <dm.h>	/* Because we dereference struct udevice here */
+#include <linux/string.h>
 #include <linux/types.h>
 #include <linux/mtd/spi-nor.h>
 
diff --git a/include/test/ut.h b/include/test/ut.h
index 99bbb1230c7..51a896e8e79 100644
--- a/include/test/ut.h
+++ b/include/test/ut.h
@@ -11,6 +11,7 @@
 #include <command.h>
 #include <hexdump.h>
 #include <linux/err.h>
+#include <linux/string.h>
 
 struct unit_test_state;
 
diff --git a/include/tlv_eeprom.h b/include/tlv_eeprom.h
index 9f4a109dca9..f7e130296a7 100644
--- a/include/tlv_eeprom.h
+++ b/include/tlv_eeprom.h
@@ -8,6 +8,7 @@
 #define __TLV_EEPROM_H_
 
 #include <compiler.h>
+#include <linux/string.h>
 
 /*
  *  The Definition of the TlvInfo EEPROM format can be found at onie.org or
diff --git a/include/video_console.h b/include/video_console.h
index 06b798ef10c..b033dc24b39 100644
--- a/include/video_console.h
+++ b/include/video_console.h
@@ -7,6 +7,7 @@
 #define __video_console_h
 
 #include <video.h>
+#include <linux/string.h>
 
 struct video_priv;
 
diff --git a/lib/acpi/acpi_device.c b/lib/acpi/acpi_device.c
index 3c75b6d9629..cefbb5f69c5 100644
--- a/lib/acpi/acpi_device.c
+++ b/lib/acpi/acpi_device.c
@@ -16,6 +16,7 @@
 #include <acpi/acpigen.h>
 #include <asm-generic/gpio.h>
 #include <dm/acpi.h>
+#include <linux/string.h>
 
 /**
  * acpi_device_path_fill() - Find the root device and build a path from there
diff --git a/lib/acpi/acpi_dp.c b/lib/acpi/acpi_dp.c
index 579cab47715..194e79d7d03 100644
--- a/lib/acpi/acpi_dp.c
+++ b/lib/acpi/acpi_dp.c
@@ -14,6 +14,7 @@
 #include <acpi/acpigen.h>
 #include <acpi/acpi_dp.h>
 #include <dm/acpi.h>
+#include <linux/string.h>
 
 static void acpi_dp_write_array(struct acpi_ctx *ctx,
 				const struct acpi_dp *array);
diff --git a/lib/acpi/acpi_table.c b/lib/acpi/acpi_table.c
index a3b0fb3bce0..d6abb6068a6 100644
--- a/lib/acpi/acpi_table.c
+++ b/lib/acpi/acpi_table.c
@@ -15,6 +15,7 @@
 #include <acpi/acpi_table.h>
 #include <asm/global_data.h>
 #include <dm/acpi.h>
+#include <linux/string.h>
 
 int acpi_create_dmar(struct acpi_dmar *dmar, enum dmar_flags flags)
 {
diff --git a/lib/acpi/acpigen.c b/lib/acpi/acpigen.c
index c609ef4daa4..0906b1d3030 100644
--- a/lib/acpi/acpigen.c
+++ b/lib/acpi/acpigen.c
@@ -16,6 +16,7 @@
 #include <acpi/acpi_device.h>
 #include <acpi/acpi_table.h>
 #include <dm/acpi.h>
+#include <linux/string.h>
 
 u8 *acpigen_get_current(struct acpi_ctx *ctx)
 {
diff --git a/lib/aes.c b/lib/aes.c
index bc6d4dfd4e0..ab1f8d67a53 100644
--- a/lib/aes.c
+++ b/lib/aes.c
@@ -25,6 +25,7 @@
 #include <common.h>
 #include <display_options.h>
 #include <log.h>
+#include <linux/string.h>
 #else
 #include <string.h>
 #endif
diff --git a/lib/aes/aes-decrypt.c b/lib/aes/aes-decrypt.c
index 345029fa784..06b5e027409 100644
--- a/lib/aes/aes-decrypt.c
+++ b/lib/aes/aes-decrypt.c
@@ -6,6 +6,7 @@
 #ifndef USE_HOSTCC
 #include <common.h>
 #include <malloc.h>
+#include <linux/string.h>
 #endif
 #include <image.h>
 #include <uboot_aes.h>
diff --git a/lib/bch.c b/lib/bch.c
index 72b4fdcc9c4..7f82cef242b 100644
--- a/lib/bch.c
+++ b/lib/bch.c
@@ -59,6 +59,7 @@
 #include <malloc.h>
 #include <ubi_uboot.h>
 #include <dm/devres.h>
+#include <linux/string.h>
 
 #include <linux/bitops.h>
 #include <linux/printk.h>
diff --git a/lib/bzip2/bzlib.c b/lib/bzip2/bzlib.c
index 377b269b06d..010ff4d7331 100644
--- a/lib/bzip2/bzlib.c
+++ b/lib/bzip2/bzlib.c
@@ -2,6 +2,7 @@
 #include <common.h>
 #include <malloc.h>
 #include <watchdog.h>
+#include <linux/string.h>
 
 /*
  * This file is a modified version of bzlib.c from the bzip2-1.0.2
diff --git a/lib/charset.c b/lib/charset.c
index a28034ee1f1..55a487253fa 100644
--- a/lib/charset.c
+++ b/lib/charset.c
@@ -9,6 +9,7 @@
 #include <charset.h>
 #include <capitalization.h>
 #include <malloc.h>
+#include <linux/string.h>
 
 static struct capitalization_table capitalization_table[] =
 #ifdef CONFIG_EFI_UNICODE_CAPITALIZATION
diff --git a/lib/crc16.c b/lib/crc16.c
index f46ba727c9a..aa6d117ae17 100644
--- a/lib/crc16.c
+++ b/lib/crc16.c
@@ -26,6 +26,7 @@
 #include <arpa/inet.h>
 #else
 #include <common.h>
+#include <linux/string.h>
 #endif
 #include <u-boot/crc.h>
 
diff --git a/lib/crc32.c b/lib/crc32.c
index e9be3bf386e..aa210cea055 100644
--- a/lib/crc32.c
+++ b/lib/crc32.c
@@ -14,6 +14,7 @@
 #else
 #include <common.h>
 #include <efi_loader.h>
+#include <linux/string.h>
 #endif
 #include <compiler.h>
 #include <u-boot/crc.h>
diff --git a/lib/crypto/pkcs7_verify.c b/lib/crypto/pkcs7_verify.c
index db02f346f76..5ca268ee00c 100644
--- a/lib/crypto/pkcs7_verify.c
+++ b/lib/crypto/pkcs7_verify.c
@@ -16,6 +16,7 @@
 #include <linux/compat.h>
 #include <linux/asn1.h>
 #include <linux/printk.h>
+#include <linux/string.h>
 #include <u-boot/rsa-checksum.h>
 #include <crypto/public_key.h>
 #include <crypto/pkcs7_parser.h>
diff --git a/lib/crypto/public_key.c b/lib/crypto/public_key.c
index 899908e1bbe..ce5709449e7 100644
--- a/lib/crypto/public_key.c
+++ b/lib/crypto/public_key.c
@@ -14,6 +14,7 @@
 #include <linux/compat.h>
 #include <linux/err.h>
 #include <linux/printk.h>
+#include <linux/string.h>
 #else
 #include <linux/module.h>
 #include <linux/export.h>
diff --git a/lib/crypto/x509_public_key.c b/lib/crypto/x509_public_key.c
index 518dc906731..f79b4ea6b0f 100644
--- a/lib/crypto/x509_public_key.c
+++ b/lib/crypto/x509_public_key.c
@@ -14,6 +14,7 @@
 #include <linux/err.h>
 #include <linux/errno.h>
 #include <linux/printk.h>
+#include <linux/string.h>
 #else
 #include <linux/module.h>
 #endif
diff --git a/lib/dhry/dhry_1.c b/lib/dhry/dhry_1.c
index dcc224fb387..b36c1672b4a 100644
--- a/lib/dhry/dhry_1.c
+++ b/lib/dhry/dhry_1.c
@@ -44,6 +44,7 @@ char SCCSid[] = "@(#) @(#)dhry_1.c:3.4 -- 5/15/91 19:30:21";
 
 #include <common.h>
 #include <malloc.h>
+#include <string.h>
 
 #include "dhry.h"
 
diff --git a/lib/dhry/dhry_2.c b/lib/dhry/dhry_2.c
index 1ba879673e3..02cd9827e89 100644
--- a/lib/dhry/dhry_2.c
+++ b/lib/dhry/dhry_2.c
@@ -40,6 +40,7 @@
 /* SCCSid is defined in dhry_1.c */
 
 #include <common.h>
+#include <string.h>
 #include "dhry.h"
 
 #ifndef REG
diff --git a/lib/efi/efi_app.c b/lib/efi/efi_app.c
index 907bacd716a..878c1cd6e5c 100644
--- a/lib/efi/efi_app.c
+++ b/lib/efi/efi_app.c
@@ -17,6 +17,7 @@
 #include <malloc.h>
 #include <asm/global_data.h>
 #include <linux/err.h>
+#include <linux/string.h>
 #include <linux/types.h>
 #include <efi.h>
 #include <efi_api.h>
diff --git a/lib/efi/efi_stub.c b/lib/efi/efi_stub.c
index 7d650d512e3..b19e6d21a79 100644
--- a/lib/efi/efi_stub.c
+++ b/lib/efi/efi_stub.c
@@ -19,6 +19,7 @@
 #include <asm/cpu.h>
 #include <asm/io.h>
 #include <linux/err.h>
+#include <linux/string.h>
 #include <linux/types.h>
 
 #ifndef CONFIG_X86
diff --git a/lib/efi_loader/efi_bootmgr.c b/lib/efi_loader/efi_bootmgr.c
index e03198b57a8..12706e88ab8 100644
--- a/lib/efi_loader/efi_bootmgr.c
+++ b/lib/efi_loader/efi_bootmgr.c
@@ -14,6 +14,7 @@
 #include <efi_loader.h>
 #include <efi_variable.h>
 #include <asm/unaligned.h>
+#include <linux/string.h>
 
 static const struct efi_boot_services *bs;
 static const struct efi_runtime_services *rs;
diff --git a/lib/efi_loader/efi_boottime.c b/lib/efi_loader/efi_boottime.c
index d07e36caa3f..b39ca817dde 100644
--- a/lib/efi_loader/efi_boottime.c
+++ b/lib/efi_loader/efi_boottime.c
@@ -14,6 +14,7 @@
 #include <time.h>
 #include <asm/global_data.h>
 #include <linux/libfdt_env.h>
+#include <linux/string.h>
 #include <u-boot/crc.h>
 #include <bootm.h>
 #include <pe.h>
diff --git a/lib/efi_loader/efi_console.c b/lib/efi_loader/efi_console.c
index 426de779517..48c7940e5bf 100644
--- a/lib/efi_loader/efi_console.c
+++ b/lib/efi_loader/efi_console.c
@@ -14,6 +14,7 @@
 #include <env.h>
 #include <stdio_dev.h>
 #include <video_console.h>
+#include <linux/string.h>
 
 #define EFI_COUT_MODE_2 2
 #define EFI_MAX_COUT_MODE 3
diff --git a/lib/efi_loader/efi_device_path.c b/lib/efi_loader/efi_device_path.c
index 7ae14f34239..d3b1e273b9b 100644
--- a/lib/efi_loader/efi_device_path.c
+++ b/lib/efi_loader/efi_device_path.c
@@ -18,6 +18,7 @@
 #include <sandboxblockdev.h>
 #include <asm-generic/unaligned.h>
 #include <linux/compat.h> /* U16_MAX */
+#include <linux/string.h>
 
 #ifdef CONFIG_SANDBOX
 const efi_guid_t efi_guid_host_dev = U_BOOT_HOST_DEV_GUID;
diff --git a/lib/efi_loader/efi_device_path_to_text.c b/lib/efi_loader/efi_device_path_to_text.c
index 5ae4833fa78..ece99eb9424 100644
--- a/lib/efi_loader/efi_device_path_to_text.c
+++ b/lib/efi_loader/efi_device_path_to_text.c
@@ -8,6 +8,7 @@
 #include <common.h>
 #include <blk.h>
 #include <efi_loader.h>
+#include <linux/string.h>
 
 #define MAC_OUTPUT_LEN 22
 #define UNKNOWN_OUTPUT_LEN 23
diff --git a/lib/efi_loader/efi_disk.c b/lib/efi_loader/efi_disk.c
index 7bd1ccec450..6a66b5cf292 100644
--- a/lib/efi_loader/efi_disk.c
+++ b/lib/efi_loader/efi_disk.c
@@ -15,6 +15,7 @@
 #include <log.h>
 #include <part.h>
 #include <malloc.h>
+#include <linux/string.h>
 
 struct efi_system_partition efi_system_partition;
 
diff --git a/lib/efi_loader/efi_file.c b/lib/efi_loader/efi_file.c
index 44fafae0586..5954397e4da 100644
--- a/lib/efi_loader/efi_file.c
+++ b/lib/efi_loader/efi_file.c
@@ -13,6 +13,7 @@
 #include <mapmem.h>
 #include <fs.h>
 #include <part.h>
+#include <linux/string.h>
 
 /* GUID for file system information */
 const efi_guid_t efi_file_system_info_guid = EFI_FILE_SYSTEM_INFO_GUID;
diff --git a/lib/efi_loader/efi_freestanding.c b/lib/efi_loader/efi_freestanding.c
index bd0dff162f6..87c1633804c 100644
--- a/lib/efi_loader/efi_freestanding.c
+++ b/lib/efi_loader/efi_freestanding.c
@@ -9,6 +9,7 @@
  */
 
 #include <common.h>
+#include <linux/string.h>
 
 /**
  * memcmp() - compare memory areas
diff --git a/lib/efi_loader/efi_gop.c b/lib/efi_loader/efi_gop.c
index 1206b2d7a2c..c26493af6ca 100644
--- a/lib/efi_loader/efi_gop.c
+++ b/lib/efi_loader/efi_gop.c
@@ -13,6 +13,7 @@
 #include <malloc.h>
 #include <video.h>
 #include <asm/global_data.h>
+#include <linux/string.h>
 
 DECLARE_GLOBAL_DATA_PTR;
 
diff --git a/lib/efi_loader/efi_hii.c b/lib/efi_loader/efi_hii.c
index 77e330285a7..92ae7e44e0a 100644
--- a/lib/efi_loader/efi_hii.c
+++ b/lib/efi_loader/efi_hii.c
@@ -10,6 +10,7 @@
 #include <efi_loader.h>
 #include <malloc.h>
 #include <asm/unaligned.h>
+#include <linux/string.h>
 
 const efi_guid_t efi_guid_hii_database_protocol
 		= EFI_HII_DATABASE_PROTOCOL_GUID;
diff --git a/lib/efi_loader/efi_image_loader.c b/lib/efi_loader/efi_image_loader.c
index fef0bb870c6..d4c7d3f770e 100644
--- a/lib/efi_loader/efi_image_loader.c
+++ b/lib/efi_loader/efi_image_loader.c
@@ -15,6 +15,7 @@
 #include <sort.h>
 #include <crypto/pkcs7_parser.h>
 #include <linux/err.h>
+#include <linux/string.h>
 
 const efi_guid_t efi_global_variable_guid = EFI_GLOBAL_VARIABLE_GUID;
 const efi_guid_t efi_guid_device_path = EFI_DEVICE_PATH_PROTOCOL_GUID;
diff --git a/lib/efi_loader/efi_load_initrd.c b/lib/efi_loader/efi_load_initrd.c
index 574a83d7e30..800ff9fc41a 100644
--- a/lib/efi_loader/efi_load_initrd.c
+++ b/lib/efi_loader/efi_load_initrd.c
@@ -11,6 +11,7 @@
 #include <fs.h>
 #include <efi_loader.h>
 #include <efi_load_initrd.h>
+#include <linux/string.h>
 
 static const efi_guid_t efi_guid_load_file2_protocol =
 		EFI_LOAD_FILE2_PROTOCOL_GUID;
diff --git a/lib/efi_loader/efi_net.c b/lib/efi_loader/efi_net.c
index 22f0123eca4..b056e08b3ec 100644
--- a/lib/efi_loader/efi_net.c
+++ b/lib/efi_loader/efi_net.c
@@ -19,6 +19,7 @@
 #include <efi_loader.h>
 #include <malloc.h>
 #include <net.h>
+#include <linux/string.h>
 
 static const efi_guid_t efi_net_guid = EFI_SIMPLE_NETWORK_PROTOCOL_GUID;
 static const efi_guid_t efi_pxe_base_code_protocol_guid =
diff --git a/lib/efi_loader/efi_runtime.c b/lib/efi_loader/efi_runtime.c
index d0235c46e18..ddc6e6a4cde 100644
--- a/lib/efi_loader/efi_runtime.c
+++ b/lib/efi_loader/efi_runtime.c
@@ -15,6 +15,7 @@
 #include <malloc.h>
 #include <rtc.h>
 #include <asm/global_data.h>
+#include <linux/string.h>
 #include <u-boot/crc.h>
 
 /* For manual relocation support */
diff --git a/lib/efi_loader/efi_setup.c b/lib/efi_loader/efi_setup.c
index 6196c0a06cd..51fc48b780b 100644
--- a/lib/efi_loader/efi_setup.c
+++ b/lib/efi_loader/efi_setup.c
@@ -9,6 +9,7 @@
 #include <bootm.h>
 #include <efi_loader.h>
 #include <efi_variable.h>
+#include <linux/string.h>
 
 #define OBJ_LIST_NOT_INITIALIZED 1
 
diff --git a/lib/efi_loader/efi_signature.c b/lib/efi_loader/efi_signature.c
index fc0314e6d48..18392920575 100644
--- a/lib/efi_loader/efi_signature.c
+++ b/lib/efi_loader/efi_signature.c
@@ -13,6 +13,7 @@
 #include <crypto/pkcs7_parser.h>
 #include <linux/compat.h>
 #include <linux/oid_registry.h>
+#include <linux/string.h>
 #include <u-boot/rsa.h>
 #include <u-boot/sha256.h>
 
diff --git a/lib/efi_loader/efi_unicode_collation.c b/lib/efi_loader/efi_unicode_collation.c
index 6655c68092e..e002ed6a392 100644
--- a/lib/efi_loader/efi_unicode_collation.c
+++ b/lib/efi_loader/efi_unicode_collation.c
@@ -10,6 +10,7 @@
 #include <cp1250.h>
 #include <cp437.h>
 #include <efi_loader.h>
+#include <linux/string.h>
 
 /* Characters that may not be used in FAT 8.3 file names */
 static const char illegal[] = "+,<=>:;\"/\\|?*[]\x7f";
diff --git a/lib/efi_loader/efi_var_file.c b/lib/efi_loader/efi_var_file.c
index 6f9d76f2a2d..eda9ced626b 100644
--- a/lib/efi_loader/efi_var_file.c
+++ b/lib/efi_loader/efi_var_file.c
@@ -15,6 +15,7 @@
 #include <mapmem.h>
 #include <efi_loader.h>
 #include <efi_variable.h>
+#include <linux/string.h>
 #include <u-boot/crc.h>
 
 #define PART_STR_LEN 10
diff --git a/lib/efi_loader/efi_var_mem.c b/lib/efi_loader/efi_var_mem.c
index bfa8a56a8f6..a42970ffde1 100644
--- a/lib/efi_loader/efi_var_mem.c
+++ b/lib/efi_loader/efi_var_mem.c
@@ -8,6 +8,7 @@
 #include <common.h>
 #include <efi_loader.h>
 #include <efi_variable.h>
+#include <linux/string.h>
 #include <u-boot/crc.h>
 
 static struct efi_var_file __efi_runtime_data *efi_var_buf;
diff --git a/lib/efi_loader/efi_variable.c b/lib/efi_loader/efi_variable.c
index 39a84829038..7093e33d282 100644
--- a/lib/efi_loader/efi_variable.c
+++ b/lib/efi_loader/efi_variable.c
@@ -20,6 +20,7 @@
 #include <uuid.h>
 #include <crypto/pkcs7_parser.h>
 #include <linux/compat.h>
+#include <linux/string.h>
 #include <u-boot/crc.h>
 #include <asm/sections.h>
 
diff --git a/lib/efi_loader/efi_variable_tee.c b/lib/efi_loader/efi_variable_tee.c
index 94c4de87034..df34bc5974d 100644
--- a/lib/efi_loader/efi_variable_tee.c
+++ b/lib/efi_loader/efi_variable_tee.c
@@ -14,6 +14,7 @@
 #include <tee.h>
 #include <malloc.h>
 #include <mm_communication.h>
+#include <linux/string.h>
 
 static efi_uintn_t max_buffer_size;	/* comm + var + func + data */
 static efi_uintn_t max_payload_size;	/* func + data */
diff --git a/lib/efi_loader/helloworld.c b/lib/efi_loader/helloworld.c
index 9ae2ee33898..2598fdfd124 100644
--- a/lib/efi_loader/helloworld.c
+++ b/lib/efi_loader/helloworld.c
@@ -11,6 +11,7 @@
 
 #include <common.h>
 #include <efi_api.h>
+#include <linux/string.h>
 
 static const efi_guid_t loaded_image_guid = EFI_LOADED_IMAGE_PROTOCOL_GUID;
 static const efi_guid_t fdt_guid = EFI_FDT_GUID;
diff --git a/lib/efi_selftest/efi_selftest_block_device.c b/lib/efi_selftest/efi_selftest_block_device.c
index 5eb297d285a..63d340342a9 100644
--- a/lib/efi_selftest/efi_selftest_block_device.c
+++ b/lib/efi_selftest/efi_selftest_block_device.c
@@ -14,6 +14,7 @@
  */
 
 #include <efi_selftest.h>
+#include <linux/string.h>
 #include "efi_selftest_disk_image.h"
 #include <asm/cache.h>
 
diff --git a/lib/efi_selftest/efi_selftest_config_table.c b/lib/efi_selftest/efi_selftest_config_table.c
index 2bf12b5bb68..6f6a8757ac5 100644
--- a/lib/efi_selftest/efi_selftest_config_table.c
+++ b/lib/efi_selftest/efi_selftest_config_table.c
@@ -9,6 +9,7 @@
  */
 
 #include <efi_selftest.h>
+#include <linux/string.h>
 #include <u-boot/crc.h>
 
 static const struct efi_system_table *sys_table;
diff --git a/lib/efi_selftest/efi_selftest_load_initrd.c b/lib/efi_selftest/efi_selftest_load_initrd.c
index e16163caca8..144443ff685 100644
--- a/lib/efi_selftest/efi_selftest_load_initrd.c
+++ b/lib/efi_selftest/efi_selftest_load_initrd.c
@@ -41,6 +41,7 @@
 #include <efi_selftest.h>
 #include <efi_loader.h>
 #include <efi_load_initrd.h>
+#include <linux/string.h>
 
 static struct efi_boot_services *boottime;
 
diff --git a/lib/efi_selftest/efi_selftest_loaded_image.c b/lib/efi_selftest/efi_selftest_loaded_image.c
index 5889ab12617..01f6dee2ea6 100644
--- a/lib/efi_selftest/efi_selftest_loaded_image.c
+++ b/lib/efi_selftest/efi_selftest_loaded_image.c
@@ -8,6 +8,7 @@
  */
 
 #include <efi_selftest.h>
+#include <linux/string.h>
 
 static efi_guid_t loaded_image_protocol_guid =
 	EFI_GUID(0x5b1b31a1, 0x9562, 0x11d2,
diff --git a/lib/efi_selftest/efi_selftest_loadimage.c b/lib/efi_selftest/efi_selftest_loadimage.c
index 06a87df8620..f251cbc33bc 100644
--- a/lib/efi_selftest/efi_selftest_loadimage.c
+++ b/lib/efi_selftest/efi_selftest_loadimage.c
@@ -11,6 +11,7 @@
  */
 
 #include <efi_selftest.h>
+#include <linux/string.h>
 /* Include containing the efi_selftest_miniapp_exit.efi application */
 #include "efi_miniapp_file_image_exit.h"
 
diff --git a/lib/efi_selftest/efi_selftest_manageprotocols.c b/lib/efi_selftest/efi_selftest_manageprotocols.c
index 8edb1e4d467..f22cad4c1c0 100644
--- a/lib/efi_selftest/efi_selftest_manageprotocols.c
+++ b/lib/efi_selftest/efi_selftest_manageprotocols.c
@@ -12,6 +12,7 @@
  */
 
 #include <efi_selftest.h>
+#include <linux/string.h>
 
 /*
  * The test currently does not actually call the interface function.
diff --git a/lib/efi_selftest/efi_selftest_mem.c b/lib/efi_selftest/efi_selftest_mem.c
index 51f0fec39b9..c5f0d7ccfa1 100644
--- a/lib/efi_selftest/efi_selftest_mem.c
+++ b/lib/efi_selftest/efi_selftest_mem.c
@@ -11,6 +11,7 @@
  */
 
 #include <efi_selftest.h>
+#include <linux/string.h>
 
 static struct efi_boot_services *boottime;
 
diff --git a/lib/efi_selftest/efi_selftest_memory.c b/lib/efi_selftest/efi_selftest_memory.c
index 4d32a280061..2efb6e42aa2 100644
--- a/lib/efi_selftest/efi_selftest_memory.c
+++ b/lib/efi_selftest/efi_selftest_memory.c
@@ -11,6 +11,7 @@
  */
 
 #include <efi_selftest.h>
+#include <linux/string.h>
 
 #define EFI_ST_NUM_PAGES 8
 
diff --git a/lib/efi_selftest/efi_selftest_rng.c b/lib/efi_selftest/efi_selftest_rng.c
index fca9749d072..ecf13a41faf 100644
--- a/lib/efi_selftest/efi_selftest_rng.c
+++ b/lib/efi_selftest/efi_selftest_rng.c
@@ -9,6 +9,7 @@
 
 #include <efi_selftest.h>
 #include <efi_rng.h>
+#include <linux/string.h>
 
 #define RNG_LEN 9
 
diff --git a/lib/efi_selftest/efi_selftest_set_virtual_address_map.c b/lib/efi_selftest/efi_selftest_set_virtual_address_map.c
index a4e5a50f632..b9045fe1143 100644
--- a/lib/efi_selftest/efi_selftest_set_virtual_address_map.c
+++ b/lib/efi_selftest/efi_selftest_set_virtual_address_map.c
@@ -9,6 +9,7 @@
  */
 
 #include <efi_selftest.h>
+#include <linux/string.h>
 
 static const struct efi_boot_services *boottime;
 static const struct efi_runtime_services *runtime;
diff --git a/lib/efi_selftest/efi_selftest_snp.c b/lib/efi_selftest/efi_selftest_snp.c
index 79f04678039..3357048c7f4 100644
--- a/lib/efi_selftest/efi_selftest_snp.c
+++ b/lib/efi_selftest/efi_selftest_snp.c
@@ -16,6 +16,7 @@
 
 #include <efi_selftest.h>
 #include <net.h>
+#include <linux/string.h>
 
 /*
  * MAC address for broadcasts
diff --git a/lib/efi_selftest/efi_selftest_startimage_exit.c b/lib/efi_selftest/efi_selftest_startimage_exit.c
index 11207b8162f..1406dfc9172 100644
--- a/lib/efi_selftest/efi_selftest_startimage_exit.c
+++ b/lib/efi_selftest/efi_selftest_startimage_exit.c
@@ -10,6 +10,7 @@
  */
 
 #include <efi_selftest.h>
+#include <linux/string.h>
 /* Include containing the miniapp.efi application */
 #include "efi_miniapp_file_image_exit.h"
 
diff --git a/lib/efi_selftest/efi_selftest_variables.c b/lib/efi_selftest/efi_selftest_variables.c
index 2c16f3db6cc..dfbdeb99f31 100644
--- a/lib/efi_selftest/efi_selftest_variables.c
+++ b/lib/efi_selftest/efi_selftest_variables.c
@@ -9,6 +9,7 @@
  */
 
 #include <efi_selftest.h>
+#include <linux/string.h>
 
 #define EFI_ST_MAX_DATA_SIZE 16
 #define EFI_ST_MAX_VARNAME_SIZE 80
diff --git a/lib/efi_selftest/efi_selftest_variables_runtime.c b/lib/efi_selftest/efi_selftest_variables_runtime.c
index 3226069c0b2..619da67a292 100644
--- a/lib/efi_selftest/efi_selftest_variables_runtime.c
+++ b/lib/efi_selftest/efi_selftest_variables_runtime.c
@@ -10,6 +10,7 @@
  */
 
 #include <efi_selftest.h>
+#include <linux/string.h>
 
 #define EFI_ST_MAX_DATA_SIZE 16
 #define EFI_ST_MAX_VARNAME_SIZE 40
diff --git a/lib/elf.c b/lib/elf.c
index d074e4e0a7d..4c5b050da2e 100644
--- a/lib/elf.c
+++ b/lib/elf.c
@@ -15,6 +15,7 @@
 #include <asm/e820.h>
 #include <linux/linkage.h>
 #endif
+#include <linux/string.h>
 
 /*
  * A very simple ELF64 loader, assumes the image is valid, returns the
diff --git a/lib/fdtdec.c b/lib/fdtdec.c
index c3724790a6e..37bacdd7b33 100644
--- a/lib/fdtdec.c
+++ b/lib/fdtdec.c
@@ -26,6 +26,7 @@
 #include <asm/sections.h>
 #include <linux/ctype.h>
 #include <linux/lzo.h>
+#include <linux/string.h>
 
 DECLARE_GLOBAL_DATA_PTR;
 
diff --git a/lib/fdtdec_test.c b/lib/fdtdec_test.c
index e0c6e0971cd..28260468e07 100644
--- a/lib/fdtdec_test.c
+++ b/lib/fdtdec_test.c
@@ -12,6 +12,7 @@
 #include <linux/libfdt.h>
 #include <malloc.h>
 #include <os.h>
+#include <linux/string.h>
 
 /* The size of our test fdt blob */
 #define FDT_SIZE	(16 * 1024)
diff --git a/lib/gunzip.c b/lib/gunzip.c
index bee3b9261f3..1073bebac06 100644
--- a/lib/gunzip.c
+++ b/lib/gunzip.c
@@ -13,6 +13,7 @@
 #include <image.h>
 #include <malloc.h>
 #include <memalign.h>
+#include <linux/string.h>
 #include <u-boot/crc.h>
 #include <watchdog.h>
 #include <u-boot/zlib.h>
diff --git a/lib/hashtable.c b/lib/hashtable.c
index 4a8c50b4b8a..063e2aaf578 100644
--- a/lib/hashtable.c
+++ b/lib/hashtable.c
@@ -16,6 +16,7 @@
 #include <log.h>
 #include <malloc.h>
 #include <sort.h>
+#include <linux/string.h>
 
 #ifdef USE_HOSTCC		/* HOST build */
 # include <string.h>
diff --git a/lib/libavb/avb_sysdeps_posix.c b/lib/libavb/avb_sysdeps_posix.c
index 6ffdb0b7eb3..88135b90850 100644
--- a/lib/libavb/avb_sysdeps_posix.c
+++ b/lib/libavb/avb_sysdeps_posix.c
@@ -7,6 +7,7 @@
 #include <malloc.h>
 #include <stdarg.h>
 #include <stdlib.h>
+#include <linux/string.h>
 
 #include "avb_sysdeps.h"
 
diff --git a/lib/linux_compat.c b/lib/linux_compat.c
index c83426f59dc..8b9b562f98e 100644
--- a/lib/linux_compat.c
+++ b/lib/linux_compat.c
@@ -4,6 +4,7 @@
 #include <memalign.h>
 #include <asm/cache.h>
 #include <linux/compat.h>
+#include <linux/string.h>
 
 struct p_current cur = {
 	.pid = 1,
diff --git a/lib/list_sort.c b/lib/list_sort.c
index 1c9e0617327..44d85ff43fe 100644
--- a/lib/list_sort.c
+++ b/lib/list_sort.c
@@ -9,6 +9,7 @@
 #include <common.h>
 #include <malloc.h>
 #include <linux/printk.h>
+#include <linux/string.h>
 #endif
 #include <linux/list.h>
 #include <linux/list_sort.h>
diff --git a/lib/lz4.c b/lib/lz4.c
index 046c34e3906..e803c087a26 100644
--- a/lib/lz4.c
+++ b/lib/lz4.c
@@ -8,6 +8,7 @@
    - LZ4 public forum : https://groups.google.com/forum/#!forum/lz4c
 */
 
+#include <linux/string.h>
 
 /**************************************
 *  Reading and writing into memory
diff --git a/lib/lz4_wrapper.c b/lib/lz4_wrapper.c
index e0f7d3688ee..edce13da6bd 100644
--- a/lib/lz4_wrapper.c
+++ b/lib/lz4_wrapper.c
@@ -8,6 +8,7 @@
 #include <image.h>
 #include <lz4.h>
 #include <linux/kernel.h>
+#include <linux/string.h>
 #include <linux/types.h>
 #include <asm/unaligned.h>
 
diff --git a/lib/lzo/lzo1x_decompress.c b/lib/lzo/lzo1x_decompress.c
index 65fef0b0eb9..48800c91ccf 100644
--- a/lib/lzo/lzo1x_decompress.c
+++ b/lib/lzo/lzo1x_decompress.c
@@ -15,6 +15,7 @@
 #include <linux/lzo.h>
 #include <asm/byteorder.h>
 #include <asm/unaligned.h>
+#include <linux/string.h>
 #include "lzodefs.h"
 
 #define HAVE_IP(x, ip_end, ip) ((size_t)(ip_end - ip) < (x))
diff --git a/lib/membuff.c b/lib/membuff.c
index 36dc43a523f..b0fc716a04b 100644
--- a/lib/membuff.c
+++ b/lib/membuff.c
@@ -10,6 +10,7 @@
 #include <errno.h>
 #include <log.h>
 #include <malloc.h>
+#include <linux/string.h>
 #include "membuff.h"
 
 void membuff_purge(struct membuff *mb)
diff --git a/lib/of_live.c b/lib/of_live.c
index 05a45ed34af..c27a7a6e24f 100644
--- a/lib/of_live.c
+++ b/lib/of_live.c
@@ -15,6 +15,7 @@
 #include <malloc.h>
 #include <dm/of_access.h>
 #include <linux/err.h>
+#include <linux/string.h>
 
 static void *unflatten_dt_alloc(void **mem, unsigned long size,
 				unsigned long align)
diff --git a/lib/optee/optee.c b/lib/optee/optee.c
index ed973168023..ec1e29cc3f6 100644
--- a/lib/optee/optee.c
+++ b/lib/optee/optee.c
@@ -10,6 +10,7 @@
 #include <log.h>
 #include <malloc.h>
 #include <linux/libfdt.h>
+#include <linux/string.h>
 #include <tee/optee.h>
 
 #define optee_hdr_err_msg \
diff --git a/lib/physmem.c b/lib/physmem.c
index fc90ce4d7cf..43f034766ab 100644
--- a/lib/physmem.c
+++ b/lib/physmem.c
@@ -13,6 +13,7 @@
 #include <mapmem.h>
 #include <physmem.h>
 #include <linux/compiler.h>
+#include <linux/string.h>
 
 phys_addr_t __weak arch_phys_memset(phys_addr_t s, int c, phys_size_t n)
 {
diff --git a/lib/qsort.c b/lib/qsort.c
index 2f18588dfcc..40f90d28866 100644
--- a/lib/qsort.c
+++ b/lib/qsort.c
@@ -16,6 +16,7 @@
  * bcc and gcc. */
 
 #include <log.h>
+#include <linux/string.h>
 #include <linux/types.h>
 #include <common.h>
 #include <exports.h>
diff --git a/lib/rsa/rsa-keyprop.c b/lib/rsa/rsa-keyprop.c
index 1e83eedc82c..4114e33d36e 100644
--- a/lib/rsa/rsa-keyprop.c
+++ b/lib/rsa/rsa-keyprop.c
@@ -14,6 +14,7 @@
 #include <malloc.h>
 #include <asm/byteorder.h>
 #include <crypto/internal/rsa.h>
+#include <linux/string.h>
 #include <u-boot/rsa-mod-exp.h>
 
 /**
diff --git a/lib/rsa/rsa-mod-exp.c b/lib/rsa/rsa-mod-exp.c
index a437cbe26f2..d8cd3ecd88d 100644
--- a/lib/rsa/rsa-mod-exp.c
+++ b/lib/rsa/rsa-mod-exp.c
@@ -12,6 +12,7 @@
 #include <linux/errno.h>
 #include <asm/types.h>
 #include <asm/unaligned.h>
+#include <linux/string.h>
 #else
 #include "fdt_host.h"
 #include "mkimage.h"
diff --git a/lib/rsa/rsa-verify.c b/lib/rsa/rsa-verify.c
index 2057f6819db..22ec890b407 100644
--- a/lib/rsa/rsa-verify.c
+++ b/lib/rsa/rsa-verify.c
@@ -14,6 +14,7 @@
 #include <asm/types.h>
 #include <asm/unaligned.h>
 #include <dm.h>
+#include <linux/string.h>
 #else
 #include "fdt_host.h"
 #include "mkimage.h"
diff --git a/lib/slre.c b/lib/slre.c
index e82a9e7635b..da17c018d83 100644
--- a/lib/slre.c
+++ b/lib/slre.c
@@ -26,6 +26,7 @@
 #endif /* SLRE_TEST */
 
 #include <errno.h>
+#include <linux/string.h>
 
 #include <slre.h>
 
diff --git a/lib/smbios.c b/lib/smbios.c
index 11790443e1a..12f0a3a4ffd 100644
--- a/lib/smbios.c
+++ b/lib/smbios.c
@@ -16,6 +16,7 @@
 #include <dm.h>
 #include <dm/uclass-internal.h>
 #endif
+#include <linux/string.h>
 
 /**
  * smbios_add_string() - add a string to the string area
diff --git a/lib/strto.c b/lib/strto.c
index c00bb5895df..009e67d417a 100644
--- a/lib/strto.c
+++ b/lib/strto.c
@@ -12,6 +12,7 @@
 #include <common.h>
 #include <errno.h>
 #include <linux/ctype.h>
+#include <linux/string.h>
 
 /* from lib/kstrtox.c */
 static const char *_parse_integer_fixup_radix(const char *s, unsigned int *base)
diff --git a/lib/tpm-common.c b/lib/tpm-common.c
index e4af87f76aa..adfe4919069 100644
--- a/lib/tpm-common.c
+++ b/lib/tpm-common.c
@@ -11,6 +11,7 @@
 #include <log.h>
 #include <asm/unaligned.h>
 #include <tpm-common.h>
+#include <linux/string.h>
 #include "tpm-utils.h"
 
 enum tpm_version tpm_get_version(struct udevice *dev)
diff --git a/lib/tpm-v1.c b/lib/tpm-v1.c
index a846fe00dd3..e7221dd8f2e 100644
--- a/lib/tpm-v1.c
+++ b/lib/tpm-v1.c
@@ -10,6 +10,7 @@
 #include <dm.h>
 #include <log.h>
 #include <asm/unaligned.h>
+#include <linux/string.h>
 #include <u-boot/sha1.h>
 #include <tpm-common.h>
 #include <tpm-v1.h>
diff --git a/lib/tpm-v2.c b/lib/tpm-v2.c
index a4c352e3ef7..594ccb6c234 100644
--- a/lib/tpm-v2.c
+++ b/lib/tpm-v2.c
@@ -9,6 +9,7 @@
 #include <tpm-common.h>
 #include <tpm-v2.h>
 #include <linux/bitops.h>
+#include <linux/string.h>
 #include "tpm-utils.h"
 
 u32 tpm2_startup(struct udevice *dev, enum tpm2_startup_types mode)
diff --git a/lib/trace.c b/lib/trace.c
index 854e495ed71..1b59e7d1cb9 100644
--- a/lib/trace.c
+++ b/lib/trace.c
@@ -10,6 +10,7 @@
 #include <asm/global_data.h>
 #include <asm/io.h>
 #include <asm/sections.h>
+#include <linux/string.h>
 
 DECLARE_GLOBAL_DATA_PTR;
 
diff --git a/lib/uuid.c b/lib/uuid.c
index e62d5ca2643..ec6beedd55a 100644
--- a/lib/uuid.c
+++ b/lib/uuid.c
@@ -15,6 +15,7 @@
 #include <asm/io.h>
 #include <part_efi.h>
 #include <malloc.h>
+#include <linux/string.h>
 
 /*
  * UUID - Universally Unique IDentifier - 128 bits unique number.
diff --git a/lib/zstd/zstd_opt.h b/lib/zstd/zstd_opt.h
index af0aaf5b20d..25f78bdba24 100644
--- a/lib/zstd/zstd_opt.h
+++ b/lib/zstd/zstd_opt.h
@@ -9,6 +9,7 @@
 #ifndef ZSTD_OPT_H_91842398743
 #define ZSTD_OPT_H_91842398743
 
+#include <linux/string.h>
 #define ZSTD_LITFREQ_ADD 2
 #define ZSTD_FREQ_DIV 4
 #define ZSTD_MAX_PRICE (1 << 30)
diff --git a/net/arp.c b/net/arp.c
index 7913812b9a2..52f4f31e529 100644
--- a/net/arp.c
+++ b/net/arp.c
@@ -15,6 +15,7 @@
 #include <net.h>
 #include <time.h>
 #include <linux/delay.h>
+#include <linux/string.h>
 
 #include "arp.h"
 
diff --git a/net/bootp.c b/net/bootp.c
index 23b5b8ad9b9..6038e7a86c6 100644
--- a/net/bootp.c
+++ b/net/bootp.c
@@ -19,6 +19,7 @@
 #include <time.h>
 #include <uuid.h>
 #include <linux/delay.h>
+#include <linux/string.h>
 #include <net/tftp.h>
 #include "bootp.h"
 #ifdef CONFIG_LED_STATUS
diff --git a/net/cdp.c b/net/cdp.c
index fac02046819..af4ea9cd41a 100644
--- a/net/cdp.c
+++ b/net/cdp.c
@@ -14,6 +14,7 @@
 #if defined(CONFIG_CDP_VERSION)
 #include <timestamp.h>
 #endif
+#include <linux/string.h>
 
 #include "cdp.h"
 
diff --git a/net/dns.c b/net/dns.c
index 677e39dd031..12182c9501c 100644
--- a/net/dns.c
+++ b/net/dns.c
@@ -29,6 +29,7 @@
 #include <net.h>
 #include <time.h>
 #include <asm/unaligned.h>
+#include <linux/string.h>
 
 #include "dns.h"
 
diff --git a/net/eth-uclass.c b/net/eth-uclass.c
index 9b5c3c04ecc..42eb460e833 100644
--- a/net/eth-uclass.c
+++ b/net/eth-uclass.c
@@ -14,6 +14,7 @@
 #include <asm/global_data.h>
 #include <dm/device-internal.h>
 #include <dm/uclass-internal.h>
+#include <linux/string.h>
 #include <net/pcap.h>
 #include "eth_internal.h"
 #include <eth_phy.h>
diff --git a/net/eth_common.c b/net/eth_common.c
index 58f899a0240..44047abe7c9 100644
--- a/net/eth_common.c
+++ b/net/eth_common.c
@@ -11,6 +11,7 @@
 #include <env.h>
 #include <miiphy.h>
 #include <net.h>
+#include <linux/string.h>
 #include "eth_internal.h"
 
 int eth_env_get_enetaddr_by_index(const char *base_name, int index,
diff --git a/net/eth_legacy.c b/net/eth_legacy.c
index 9397113a632..6e6a3b5e8dd 100644
--- a/net/eth_legacy.c
+++ b/net/eth_legacy.c
@@ -15,6 +15,7 @@
 #include <asm/global_data.h>
 #include <linux/bug.h>
 #include <linux/errno.h>
+#include <linux/string.h>
 #include <net/pcap.h>
 #include "eth_internal.h"
 
diff --git a/net/fastboot.c b/net/fastboot.c
index c35953f3e33..4f1fed9e778 100644
--- a/net/fastboot.c
+++ b/net/fastboot.c
@@ -9,6 +9,7 @@
 #include <net.h>
 #include <time.h>
 #include <linux/printk.h>
+#include <linux/string.h>
 #include <net/fastboot.h>
 
 /* Fastboot port # defined in spec */
diff --git a/net/link_local.c b/net/link_local.c
index 16bc5c8b90a..0ddd1bd061f 100644
--- a/net/link_local.c
+++ b/net/link_local.c
@@ -17,6 +17,7 @@
 #include <net.h>
 #include <rand.h>
 #include <time.h>
+#include <linux/string.h>
 #include "arp.h"
 #include "net_rand.h"
 
diff --git a/net/mdio-uclass.c b/net/mdio-uclass.c
index 66ee2e19763..1c9ce801dc8 100644
--- a/net/mdio-uclass.c
+++ b/net/mdio-uclass.c
@@ -13,6 +13,7 @@
 #include <dm/device_compat.h>
 #include <dm/uclass-internal.h>
 #include <linux/compat.h>
+#include <linux/string.h>
 
 /* DT node properties for MAC-PHY interface */
 #define PHY_MODE_STR_CNT	2
diff --git a/net/net.c b/net/net.c
index 23d1988c181..cf399b50918 100644
--- a/net/net.c
+++ b/net/net.c
@@ -98,6 +98,7 @@
 #include <log.h>
 #include <net.h>
 #include <time.h>
+#include <linux/string.h>
 #include <net/fastboot.h>
 #include <net/tftp.h>
 #if defined(CONFIG_CMD_PCAP)
diff --git a/net/net_rand.h b/net/net_rand.h
index 4bf9bd817e5..3181aa358cc 100644
--- a/net/net_rand.h
+++ b/net/net_rand.h
@@ -10,6 +10,7 @@
 #define __NET_RAND_H__
 
 #include <common.h>
+#include <linux/string.h>
 
 /*
  * Return a seed for the PRNG derived from the eth0 MAC address.
diff --git a/net/nfs.c b/net/nfs.c
index 8a3b04adcdc..3d7ebeaff09 100644
--- a/net/nfs.c
+++ b/net/nfs.c
@@ -35,6 +35,7 @@
 #include <net.h>
 #include <malloc.h>
 #include <mapmem.h>
+#include <linux/string.h>
 #include "nfs.h"
 #include "bootp.h"
 #include <time.h>
diff --git a/net/pcap.c b/net/pcap.c
index 4036d8a3fa5..981f8f750e2 100644
--- a/net/pcap.c
+++ b/net/pcap.c
@@ -5,6 +5,7 @@
 
 #include <common.h>
 #include <net.h>
+#include <linux/string.h>
 #include <net/pcap.h>
 #include <time.h>
 #include <asm/io.h>
diff --git a/net/rarp.c b/net/rarp.c
index a676a4253b5..6fd07bc6f14 100644
--- a/net/rarp.c
+++ b/net/rarp.c
@@ -8,6 +8,7 @@
 #include <command.h>
 #include <log.h>
 #include <net.h>
+#include <linux/string.h>
 #include <net/tftp.h>
 #include "nfs.h"
 #include "bootp.h"
diff --git a/net/sntp.c b/net/sntp.c
index 8ecc0117ca7..e814af66b79 100644
--- a/net/sntp.c
+++ b/net/sntp.c
@@ -12,6 +12,7 @@
 #include <net.h>
 #include <rtc.h>
 #include <time.h>
+#include <linux/string.h>
 
 #include "sntp.h"
 
diff --git a/net/tftp.c b/net/tftp.c
index e1e0042f157..4c9e532fc01 100644
--- a/net/tftp.c
+++ b/net/tftp.c
@@ -18,6 +18,7 @@
 #include <net.h>
 #include <time.h>
 #include <asm/global_data.h>
+#include <linux/string.h>
 #include <net/tftp.h>
 #include "bootp.h"
 #ifdef CONFIG_SYS_DIRECT_FLASH_TFTP
diff --git a/net/wol.c b/net/wol.c
index 0a625668a99..e985f4adc59 100644
--- a/net/wol.c
+++ b/net/wol.c
@@ -7,6 +7,7 @@
 #include <command.h>
 #include <env.h>
 #include <net.h>
+#include <linux/string.h>
 #include "wol.h"
 
 static ulong wol_timeout = WOL_DEFAULT_TIMEOUT;
diff --git a/post/drivers/flash.c b/post/drivers/flash.c
index 07eab332d21..7c6caa4f197 100644
--- a/post/drivers/flash.c
+++ b/post/drivers/flash.c
@@ -10,6 +10,7 @@
 #include <malloc.h>
 #include <post.h>
 #include <flash.h>
+#include <linux/string.h>
 
 #if CONFIG_POST & CONFIG_SYS_POST_FLASH
 
diff --git a/post/lib_powerpc/multi.c b/post/lib_powerpc/multi.c
index f082e4c546c..31134a9f1b5 100644
--- a/post/lib_powerpc/multi.c
+++ b/post/lib_powerpc/multi.c
@@ -7,6 +7,7 @@
 #include <common.h>
 #include <irq_func.h>
 #include <log.h>
+#include <linux/string.h>
 
 /*
  * CPU test
diff --git a/post/lib_powerpc/string.c b/post/lib_powerpc/string.c
index fc460ceb9f0..c292f8f0f8e 100644
--- a/post/lib_powerpc/string.c
+++ b/post/lib_powerpc/string.c
@@ -6,6 +6,7 @@
 
 #include <common.h>
 #include <irq_func.h>
+#include <linux/string.h>
 
 /*
  * CPU test
diff --git a/post/post.c b/post/post.c
index c344ec5810f..65162e6d985 100644
--- a/post/post.c
+++ b/post/post.c
@@ -15,6 +15,7 @@
 #include <div64.h>
 #include <post.h>
 #include <asm/global_data.h>
+#include <linux/string.h>
 
 #ifdef CONFIG_SYS_POST_HOTKEYS_GPIO
 #include <asm/gpio.h>
