diff --git a/drivers/char/virtio_console.c b/drivers/char/virtio_console.c
index 4df9b40d6342..40e1de830593 100644
--- a/drivers/char/virtio_console.c
+++ b/drivers/char/virtio_console.c
@@ -13,6 +13,7 @@
 #include <linux/fs.h>
 #include <linux/splice.h>
 #include <linux/pagemap.h>
+#include <linux/highmem.h>
 #include <linux/init.h>
 #include <linux/list.h>
 #include <linux/poll.h>
diff --git a/drivers/media/pci/ivtv/ivtv-driver.h b/drivers/media/pci/ivtv/ivtv-driver.h
index e5efe525ad7b..8a40f2ae5b51 100644
--- a/drivers/media/pci/ivtv/ivtv-driver.h
+++ b/drivers/media/pci/ivtv/ivtv-driver.h
@@ -50,6 +50,7 @@
 #include <linux/list.h>
 #include <linux/unistd.h>
 #include <linux/pagemap.h>
+#include <linux/highmem.h>
 #include <linux/scatterlist.h>
 #include <linux/kthread.h>
 #include <linux/mutex.h>
diff --git a/drivers/media/v4l2-core/videobuf-dma-sg.c b/drivers/media/v4l2-core/videobuf-dma-sg.c
index 13b65ed9e74c..e709f140c9be 100644
--- a/drivers/media/v4l2-core/videobuf-dma-sg.c
+++ b/drivers/media/v4l2-core/videobuf-dma-sg.c
@@ -25,6 +25,7 @@
 #include <linux/dma-mapping.h>
 #include <linux/vmalloc.h>
 #include <linux/pagemap.h>
+#include <linux/highmem.h>
 #include <linux/scatterlist.h>
 #include <asm/page.h>
 #include <asm/pgtable.h>
diff --git a/drivers/staging/vc04_services/interface/vchiq_arm/vchiq_2835_arm.c b/drivers/staging/vc04_services/interface/vchiq_arm/vchiq_2835_arm.c
index ca30bfd52919..456cba37a9b5 100644
--- a/drivers/staging/vc04_services/interface/vchiq_arm/vchiq_2835_arm.c
+++ b/drivers/staging/vc04_services/interface/vchiq_arm/vchiq_2835_arm.c
@@ -4,6 +4,7 @@
 #include <linux/kernel.h>
 #include <linux/types.h>
 #include <linux/errno.h>
+#include <linux/highmem.h>
 #include <linux/interrupt.h>
 #include <linux/pagemap.h>
 #include <linux/dma-mapping.h>
diff --git a/fs/affs/affs.h b/fs/affs/affs.h
index a755bef7c4c7..6f909c20e169 100644
--- a/fs/affs/affs.h
+++ b/fs/affs/affs.h
@@ -8,6 +8,7 @@
 #include <linux/types.h>
 #include <linux/fs.h>
 #include <linux/buffer_head.h>
+#include <linux/highmem.h>
 #include "amigaffs.h"
 #include <linux/mutex.h>
 #include <linux/workqueue.h>
diff --git a/fs/ext2/namei.c b/fs/ext2/namei.c
index ccfbbf59e2fc..c17be0d2167e 100644
--- a/fs/ext2/namei.c
+++ b/fs/ext2/namei.c
@@ -31,6 +31,7 @@
  *        David S. Miller (davem@caip.rutgers.edu), 1995
  */
 
+#include <linux/highmem.h>
 #include <linux/pagemap.h>
 #include <linux/quotaops.h>
 #include "ext2.h"
diff --git a/fs/freevxfs/vxfs_immed.c b/fs/freevxfs/vxfs_immed.c
index bfc780c682fb..9b4a600abebf 100644
--- a/fs/freevxfs/vxfs_immed.c
+++ b/fs/freevxfs/vxfs_immed.c
@@ -32,6 +32,7 @@
  */
 #include <linux/fs.h>
 #include <linux/pagemap.h>
+#include <linux/highmem.h>
 
 #include "vxfs.h"
 #include "vxfs_extern.h"
diff --git a/fs/freevxfs/vxfs_subr.c b/fs/freevxfs/vxfs_subr.c
index e806694d4145..763344889132 100644
--- a/fs/freevxfs/vxfs_subr.c
+++ b/fs/freevxfs/vxfs_subr.c
@@ -34,6 +34,7 @@
 #include <linux/buffer_head.h>
 #include <linux/kernel.h>
 #include <linux/pagemap.h>
+#include <linux/highmem.h>
 
 #include "vxfs_extern.h"
 
diff --git a/fs/hfs/btree.c b/fs/hfs/btree.c
index 19017d296173..3be8998c10fc 100644
--- a/fs/hfs/btree.c
+++ b/fs/hfs/btree.c
@@ -10,6 +10,7 @@
  */
 
 #include <linux/pagemap.h>
+#include <linux/highmem.h>
 #include <linux/slab.h>
 #include <linux/log2.h>
 
diff --git a/fs/jffs2/gc.c b/fs/jffs2/gc.c
index 373b3b7c9f44..c4b9936b02c5 100644
--- a/fs/jffs2/gc.c
+++ b/fs/jffs2/gc.c
@@ -16,6 +16,7 @@
 #include <linux/mtd/mtd.h>
 #include <linux/slab.h>
 #include <linux/pagemap.h>
+#include <linux/highmem.h>
 #include <linux/crc32.h>
 #include <linux/compiler.h>
 #include <linux/stat.h>
diff --git a/fs/minix/minix.h b/fs/minix/minix.h
index df081e8afcc3..2ee63e390e52 100644
--- a/fs/minix/minix.h
+++ b/fs/minix/minix.h
@@ -4,6 +4,7 @@
 
 #include <linux/fs.h>
 #include <linux/pagemap.h>
+#include <linux/highmem.h>
 #include <linux/minix_fs.h>
 
 #define INODE_VERSION(inode)	minix_sb(inode->i_sb)->s_version
diff --git a/fs/ocfs2/symlink.c b/fs/ocfs2/symlink.c
index 94cfacc9bad7..cb1acc16226d 100644
--- a/fs/ocfs2/symlink.c
+++ b/fs/ocfs2/symlink.c
@@ -38,6 +38,7 @@
 #include <linux/types.h>
 #include <linux/slab.h>
 #include <linux/pagemap.h>
+#include <linux/highmem.h>
 #include <linux/namei.h>
 
 #include <cluster/masklog.h>
diff --git a/fs/qnx6/qnx6.h b/fs/qnx6/qnx6.h
index 34a6b126a3a9..469fcf2aacfe 100644
--- a/fs/qnx6/qnx6.h
+++ b/fs/qnx6/qnx6.h
@@ -19,6 +19,7 @@
 
 #include <linux/fs.h>
 #include <linux/pagemap.h>
+#include <linux/highmem.h>
 
 typedef __u16 __bitwise __fs16;
 typedef __u32 __bitwise __fs32;
diff --git a/fs/read_write.c b/fs/read_write.c
index 59d819c5b92e..ec041e35a59d 100644
--- a/fs/read_write.c
+++ b/fs/read_write.c
@@ -16,6 +16,7 @@
 #include <linux/export.h>
 #include <linux/syscalls.h>
 #include <linux/pagemap.h>
+#include <linux/highmem.h>
 #include <linux/splice.h>
 #include <linux/compat.h>
 #include <linux/mount.h>
diff --git a/fs/reiserfs/ioctl.c b/fs/reiserfs/ioctl.c
index 45e1a5d11af3..e26a17295ca3 100644
--- a/fs/reiserfs/ioctl.c
+++ b/fs/reiserfs/ioctl.c
@@ -9,6 +9,7 @@
 #include <linux/time.h>
 #include <linux/uaccess.h>
 #include <linux/pagemap.h>
+#include <linux/highmem.h>
 #include <linux/compat.h>
 
 /*
diff --git a/fs/reiserfs/tail_conversion.c b/fs/reiserfs/tail_conversion.c
index b0ae088dffc7..e8eefe61a77f 100644
--- a/fs/reiserfs/tail_conversion.c
+++ b/fs/reiserfs/tail_conversion.c
@@ -6,6 +6,7 @@
 
 #include <linux/time.h>
 #include <linux/pagemap.h>
+#include <linux/highmem.h>
 #include <linux/buffer_head.h>
 #include "reiserfs.h"
 
diff --git a/fs/reiserfs/xattr.c b/fs/reiserfs/xattr.c
index 28b241cd6987..ec9a47dbf096 100644
--- a/fs/reiserfs/xattr.c
+++ b/fs/reiserfs/xattr.c
@@ -37,11 +37,12 @@
 #include "reiserfs.h"
 #include <linux/capability.h>
 #include <linux/dcache.h>
-#include <linux/namei.h>
 #include <linux/errno.h>
 #include <linux/gfp.h>
 #include <linux/fs.h>
 #include <linux/file.h>
+#include <linux/highmem.h>
+#include <linux/namei.h>
 #include <linux/pagemap.h>
 #include <linux/xattr.h>
 #include "xattr.h"
diff --git a/fs/squashfs/file.c b/fs/squashfs/file.c
index 7b1128398976..a46d3dc93b1a 100644
--- a/fs/squashfs/file.c
+++ b/fs/squashfs/file.c
@@ -33,6 +33,7 @@
 #include <linux/slab.h>
 #include <linux/string.h>
 #include <linux/pagemap.h>
+#include <linux/highmem.h>
 #include <linux/mutex.h>
 
 #include "squashfs_fs.h"
diff --git a/fs/squashfs/symlink.c b/fs/squashfs/symlink.c
index 1430613183e6..b7f5f2e2967d 100644
--- a/fs/squashfs/symlink.c
+++ b/fs/squashfs/symlink.c
@@ -22,6 +22,7 @@
 #include <linux/kernel.h>
 #include <linux/string.h>
 #include <linux/pagemap.h>
+#include <linux/highmem.h>
 #include <linux/xattr.h>
 
 #include "squashfs_fs.h"
diff --git a/fs/sysv/namei.c b/fs/sysv/namei.c
index ea2414b385ec..f458e9359dd7 100644
--- a/fs/sysv/namei.c
+++ b/fs/sysv/namei.c
@@ -13,6 +13,7 @@
  *  Copyright (C) 1997, 1998  Krzysztof G. Baranowski
  */
 
+#include <linux/highmem.h>
 #include <linux/pagemap.h>
 #include "sysv.h"
 
diff --git a/fs/udf/file.c b/fs/udf/file.c
index 628941a6b79a..e5e339216adf 100644
--- a/fs/udf/file.c
+++ b/fs/udf/file.c
@@ -33,6 +33,7 @@
 #include <linux/capability.h>
 #include <linux/errno.h>
 #include <linux/pagemap.h>
+#include <linux/highmem.h>
 #include <linux/uio.h>
 
 #include "udf_i.h"
diff --git a/fs/ufs/ufs_fs.h b/fs/ufs/ufs_fs.h
index ef9ead44776a..48a12a92acfd 100644
--- a/fs/ufs/ufs_fs.h
+++ b/fs/ufs/ufs_fs.h
@@ -35,6 +35,7 @@
 #include <linux/kernel.h>
 #include <linux/stat.h>
 #include <linux/fs.h>
+#include <linux/highmem.h>
 #include <linux/workqueue.h>
 
 #include <asm/div64.h>
diff --git a/include/linux/pagemap.h b/include/linux/pagemap.h
index b5db51dfc605..d0944439eae6 100644
--- a/include/linux/pagemap.h
+++ b/include/linux/pagemap.h
@@ -8,7 +8,6 @@
 #include <linux/mm.h>
 #include <linux/fs.h>
 #include <linux/list.h>
-#include <linux/highmem.h>
 #include <linux/compiler.h>
 #include <linux/uaccess.h>
 #include <linux/gfp.h>
diff --git a/kernel/bpf/stackmap.c b/kernel/bpf/stackmap.c
index 3f958b90d914..9d9cd0ec2992 100644
--- a/kernel/bpf/stackmap.c
+++ b/kernel/bpf/stackmap.c
@@ -8,6 +8,7 @@
 #include <linux/perf_event.h>
 #include <linux/elf.h>
 #include <linux/pagemap.h>
+#include <linux/highmem.h>
 #include <linux/irq_work.h>
 #include "percpu_freelist.h"
 
diff --git a/lib/iov_iter.c b/lib/iov_iter.c
index 51595bf3af85..d642640c5c25 100644
--- a/lib/iov_iter.c
+++ b/lib/iov_iter.c
@@ -3,6 +3,7 @@
 #include <linux/bvec.h>
 #include <linux/uio.h>
 #include <linux/pagemap.h>
+#include <linux/highmem.h>
 #include <linux/slab.h>
 #include <linux/vmalloc.h>
 #include <linux/splice.h>
diff --git a/net/sunrpc/auth_gss/gss_krb5_wrap.c b/net/sunrpc/auth_gss/gss_krb5_wrap.c
index 6c1920eed771..349626f9466a 100644
--- a/net/sunrpc/auth_gss/gss_krb5_wrap.c
+++ b/net/sunrpc/auth_gss/gss_krb5_wrap.c
@@ -34,6 +34,7 @@
 #include <linux/sunrpc/gss_krb5.h>
 #include <linux/random.h>
 #include <linux/pagemap.h>
+#include <linux/highmem.h>
 
 #if IS_ENABLED(CONFIG_SUNRPC_DEBUG)
 # define RPCDBG_FACILITY	RPCDBG_AUTH
diff --git a/net/sunrpc/cache.c b/net/sunrpc/cache.c
index bd843a81afa0..46c299f37572 100644
--- a/net/sunrpc/cache.c
+++ b/net/sunrpc/cache.c
@@ -27,6 +27,7 @@
 #include <linux/workqueue.h>
 #include <linux/mutex.h>
 #include <linux/pagemap.h>
+#include <linux/highmem.h>
 #include <asm/ioctls.h>
 #include <linux/sunrpc/types.h>
 #include <linux/sunrpc/cache.h>
