diff --git a/libc/kernel/common/linux/mtd/bbm.h b/libc/kernel/common/linux/mtd/bbm.h
index e311b23..cde3903 100644
--- a/libc/kernel/common/linux/mtd/bbm.h
+++ b/libc/kernel/common/linux/mtd/bbm.h
@@ -7,69 +7,64 @@
  ***   structures, and macros generated from the original header, and thus,
  ***   contains no copyrightable information.
  ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
  ****************************************************************************
  ****************************************************************************/
 #ifndef __LINUX_MTD_BBM_H
 #define __LINUX_MTD_BBM_H
-
 #define NAND_MAX_CHIPS 8
-
 struct nand_bbt_descr {
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  int options;
  int pages[NAND_MAX_CHIPS];
  int offs;
  int veroffs;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  uint8_t version[NAND_MAX_CHIPS];
  int len;
  int maxblocks;
  int reserved_block_code;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  uint8_t *pattern;
 };
-
 #define NAND_BBT_NRBITS_MSK 0x0000000F
 #define NAND_BBT_1BIT 0x00000001
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define NAND_BBT_2BIT 0x00000002
 #define NAND_BBT_4BIT 0x00000004
 #define NAND_BBT_8BIT 0x00000008
-
 #define NAND_BBT_LASTBLOCK 0x00000010
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define NAND_BBT_ABSPAGE 0x00000020
-
 #define NAND_BBT_SEARCH 0x00000040
-
 #define NAND_BBT_PERCHIP 0x00000080
-
 #define NAND_BBT_VERSION 0x00000100
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define NAND_BBT_CREATE 0x00000200
-
 #define NAND_BBT_SCANALLPAGES 0x00000400
-
 #define NAND_BBT_SCANEMPTY 0x00000800
-
 #define NAND_BBT_WRITE 0x00001000
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define NAND_BBT_SAVECONTENT 0x00002000
-
 #define NAND_BBT_SCAN2NDPAGE 0x00004000
-
 #define NAND_BBT_SCAN_MAXBLOCKS 4
-
 #define ONENAND_BADBLOCK_POS 0
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 struct bbm_info {
  int bbt_erase_shift;
  int badblockpos;
  int options;
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  uint8_t *bbt;
-
  int (*isbad_bbt)(struct mtd_info *mtd, loff_t ofs, int allowbbt);
-
  struct nand_bbt_descr *badblock_pattern;
-
  void *priv;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 };
-
 #endif
diff --git a/libc/kernel/common/linux/mtd/blktrans.h b/libc/kernel/common/linux/mtd/blktrans.h
index 7c40724..e258698 100644
--- a/libc/kernel/common/linux/mtd/blktrans.h
+++ b/libc/kernel/common/linux/mtd/blktrans.h
@@ -7,57 +7,62 @@
  ***   structures, and macros generated from the original header, and thus,
  ***   contains no copyrightable information.
  ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
  ****************************************************************************
  ****************************************************************************/
 #ifndef __MTD_TRANS_H__
 #define __MTD_TRANS_H__
-
 #include <linux/mutex.h>
-
 struct hd_geometry;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 struct mtd_info;
 struct mtd_blktrans_ops;
 struct file;
 struct inode;
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 struct mtd_blktrans_dev {
  struct mtd_blktrans_ops *tr;
  struct list_head list;
  struct mtd_info *mtd;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  struct mutex lock;
  int devnum;
  int blksize;
  unsigned long size;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  int readonly;
  void *blkcore_priv;
 };
-
 struct blkcore_priv;
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 struct mtd_blktrans_ops {
  char *name;
  int major;
  int part_bits;
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  int (*readsect)(struct mtd_blktrans_dev *dev,
  unsigned long block, char *buffer);
  int (*writesect)(struct mtd_blktrans_dev *dev,
  unsigned long block, char *buffer);
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  int (*getgeo)(struct mtd_blktrans_dev *dev, struct hd_geometry *geo);
  int (*flush)(struct mtd_blktrans_dev *dev);
-
  int (*open)(struct mtd_blktrans_dev *dev);
  int (*release)(struct mtd_blktrans_dev *dev);
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  void (*add_mtd)(struct mtd_blktrans_ops *tr, struct mtd_info *mtd);
  void (*remove_dev)(struct mtd_blktrans_dev *dev);
-
  struct list_head devs;
  struct list_head list;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  struct module *owner;
-
  struct mtd_blkcore_priv *blkcore_priv;
 };
-
 #endif
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
diff --git a/libc/kernel/common/linux/mtd/cfi.h b/libc/kernel/common/linux/mtd/cfi.h
index d7f1ba1..944bbfa 100644
--- a/libc/kernel/common/linux/mtd/cfi.h
+++ b/libc/kernel/common/linux/mtd/cfi.h
@@ -7,181 +7,233 @@
  ***   structures, and macros generated from the original header, and thus,
  ***   contains no copyrightable information.
  ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
  ****************************************************************************
  ****************************************************************************/
 #ifndef __MTD_CFI_H__
 #define __MTD_CFI_H__
-
 #include <linux/delay.h>
 #include <linux/types.h>
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #include <linux/interrupt.h>
 #include <linux/mtd/flashchip.h>
 #include <linux/mtd/map.h>
 #include <linux/mtd/cfi_endian.h>
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define cfi_interleave_is_1(cfi) (0)
-
 #define cfi_interleave_is_2(cfi) (0)
-
 #define cfi_interleave_is_4(cfi) (0)
-
 #define cfi_interleave_is_8(cfi) (0)
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define CFI_DEVICETYPE_X8 (8 / 8)
 #define CFI_DEVICETYPE_X16 (16 / 8)
 #define CFI_DEVICETYPE_X32 (32 / 8)
 #define CFI_DEVICETYPE_X64 (64 / 8)
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+struct cfi_ident {
+ uint8_t qry[3];
+ uint16_t P_ID;
+ uint16_t P_ADR;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+ uint16_t A_ID;
+ uint16_t A_ADR;
+ uint8_t VccMin;
+ uint8_t VccMax;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+ uint8_t VppMin;
+ uint8_t VppMax;
+ uint8_t WordWriteTimeoutTyp;
+ uint8_t BufWriteTimeoutTyp;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+ uint8_t BlockEraseTimeoutTyp;
+ uint8_t ChipEraseTimeoutTyp;
+ uint8_t WordWriteTimeoutMax;
+ uint8_t BufWriteTimeoutMax;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+ uint8_t BlockEraseTimeoutMax;
+ uint8_t ChipEraseTimeoutMax;
+ uint8_t DevSize;
+ uint16_t InterfaceDesc;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+ uint16_t MaxBufWriteSize;
+ uint8_t NumEraseRegions;
+ uint32_t EraseRegionInfo[0];
+} __attribute__((packed));
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 struct cfi_extquery {
  uint8_t pri[3];
  uint8_t MajorVersion;
  uint8_t MinorVersion;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 } __attribute__((packed));
-
 struct cfi_pri_intelext {
  uint8_t pri[3];
  uint8_t MajorVersion;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  uint8_t MinorVersion;
  uint32_t FeatureSupport;
  uint8_t SuspendCmdSupport;
  uint16_t BlkStatusRegMask;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  uint8_t VccOptimal;
  uint8_t VppOptimal;
  uint8_t NumProtectionFields;
  uint16_t ProtRegAddr;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  uint8_t FactProtRegSize;
  uint8_t UserProtRegSize;
  uint8_t extra[0];
 } __attribute__((packed));
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 struct cfi_intelext_otpinfo {
  uint32_t ProtRegAddr;
  uint16_t FactGroups;
  uint8_t FactProtRegSize;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  uint16_t UserGroups;
  uint8_t UserProtRegSize;
 } __attribute__((packed));
-
 struct cfi_intelext_blockinfo {
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  uint16_t NumIdentBlocks;
  uint16_t BlockSize;
  uint16_t MinBlockEraseCycles;
  uint8_t BitsPerCell;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  uint8_t BlockCap;
 } __attribute__((packed));
-
 struct cfi_intelext_regioninfo {
  uint16_t NumIdentPartitions;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  uint8_t NumOpAllowed;
  uint8_t NumOpAllowedSimProgMode;
  uint8_t NumOpAllowedSimEraMode;
  uint8_t NumBlockTypes;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  struct cfi_intelext_blockinfo BlockTypes[1];
 } __attribute__((packed));
-
 struct cfi_intelext_programming_regioninfo {
  uint8_t ProgRegShift;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  uint8_t Reserved1;
  uint8_t ControlValid;
  uint8_t Reserved2;
  uint8_t ControlInvalid;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  uint8_t Reserved3;
 } __attribute__((packed));
-
 struct cfi_pri_amdstd {
  uint8_t pri[3];
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  uint8_t MajorVersion;
  uint8_t MinorVersion;
  uint8_t SiliconRevision;
  uint8_t EraseSuspend;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  uint8_t BlkProt;
  uint8_t TmpBlkUnprotect;
  uint8_t BlkProtUnprot;
  uint8_t SimultaneousOps;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  uint8_t BurstMode;
  uint8_t PageMode;
  uint8_t VppMin;
  uint8_t VppMax;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  uint8_t TopBottom;
 } __attribute__((packed));
-
 struct cfi_pri_atmel {
  uint8_t pri[3];
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  uint8_t MajorVersion;
  uint8_t MinorVersion;
  uint8_t Features;
  uint8_t BottomBoot;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  uint8_t BurstMode;
  uint8_t PageMode;
 } __attribute__((packed));
-
 struct cfi_pri_query {
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  uint8_t NumFields;
  uint32_t ProtField[1];
 } __attribute__((packed));
-
 struct cfi_bri_query {
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  uint8_t PageModeReadCap;
  uint8_t NumFields;
  uint32_t ConfField[1];
 } __attribute__((packed));
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define P_ID_NONE 0x0000
 #define P_ID_INTEL_EXT 0x0001
 #define P_ID_AMD_STD 0x0002
 #define P_ID_INTEL_STD 0x0003
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define P_ID_AMD_EXT 0x0004
 #define P_ID_WINBOND 0x0006
 #define P_ID_ST_ADV 0x0020
 #define P_ID_MITSUBISHI_STD 0x0100
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define P_ID_MITSUBISHI_EXT 0x0101
 #define P_ID_SST_PAGE 0x0102
 #define P_ID_INTEL_PERFORMANCE 0x0200
 #define P_ID_INTEL_DATA 0x0210
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define P_ID_RESERVED 0xffff
-
 #define CFI_MODE_CFI 1
 #define CFI_MODE_JEDEC 0
-
 struct cfi_private {
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  uint16_t cmdset;
  void *cmdset_priv;
  int interleave;
  int device_type;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  int cfi_mode;
  int addr_unlock1;
  int addr_unlock2;
  struct mtd_info *(*cmdset_setup)(struct map_info *);
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  struct cfi_ident *cfiq;
  int mfr, id;
  int numchips;
  unsigned long chipshift;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  const char *im_name;
  struct flchip chips[0];
 };
-
 #if BITS_PER_LONG >= 64
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #endif
 #define CMD(x) cfi_build_cmd((x), map, cfi)
 #if BITS_PER_LONG >= 64
 #endif
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define MERGESTATUS(x) cfi_merge_status((x), map, cfi)
-
+struct cfi_extquery *cfi_read_pri(struct map_info *map, uint16_t adr, uint16_t size,
+ const char* name);
 struct cfi_fixup {
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  uint16_t mfr;
  uint16_t id;
  void (*fixup)(struct mtd_info *mtd, void* param);
  void* param;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 };
-
 #define CFI_MFR_ANY 0xffff
 #define CFI_ID_ANY 0xffff
-
 #define CFI_MFR_AMD 0x0001
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define CFI_MFR_ATMEL 0x001F
 #define CFI_MFR_ST 0x0020  
-
 typedef int (*varsize_frob_t)(struct map_info *map, struct flchip *chip,
  unsigned long adr, int len, void *thunk);
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #endif
diff --git a/libc/kernel/common/linux/mtd/cfi_endian.h b/libc/kernel/common/linux/mtd/cfi_endian.h
index 452091e..46ab5dc 100644
--- a/libc/kernel/common/linux/mtd/cfi_endian.h
+++ b/libc/kernel/common/linux/mtd/cfi_endian.h
@@ -7,39 +7,52 @@
  ***   structures, and macros generated from the original header, and thus,
  ***   contains no copyrightable information.
  ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
  ****************************************************************************
  ****************************************************************************/
 #include <asm/byteorder.h>
-
 #define CFI_HOST_ENDIAN
-
 #ifdef CFI_LITTLE_ENDIAN
 #define cpu_to_cfi8(x) (x)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define cfi8_to_cpu(x) (x)
 #define cpu_to_cfi16(x) cpu_to_le16(x)
 #define cpu_to_cfi32(x) cpu_to_le32(x)
 #define cpu_to_cfi64(x) cpu_to_le64(x)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define cfi16_to_cpu(x) le16_to_cpu(x)
 #define cfi32_to_cpu(x) le32_to_cpu(x)
 #define cfi64_to_cpu(x) le64_to_cpu(x)
 #elif defined (CFI_BIG_ENDIAN)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define cpu_to_cfi8(x) (x)
 #define cfi8_to_cpu(x) (x)
 #define cpu_to_cfi16(x) cpu_to_be16(x)
 #define cpu_to_cfi32(x) cpu_to_be32(x)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define cpu_to_cfi64(x) cpu_to_be64(x)
 #define cfi16_to_cpu(x) be16_to_cpu(x)
 #define cfi32_to_cpu(x) be32_to_cpu(x)
 #define cfi64_to_cpu(x) be64_to_cpu(x)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #elif defined (CFI_HOST_ENDIAN)
 #define cpu_to_cfi8(x) (x)
 #define cfi8_to_cpu(x) (x)
 #define cpu_to_cfi16(x) (x)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define cpu_to_cfi32(x) (x)
 #define cpu_to_cfi64(x) (x)
 #define cfi16_to_cpu(x) (x)
 #define cfi32_to_cpu(x) (x)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define cfi64_to_cpu(x) (x)
 #else
 #error No CFI endianness defined
 #endif
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
diff --git a/libc/kernel/common/linux/mtd/compatmac.h b/libc/kernel/common/linux/mtd/compatmac.h
index 143f46a..24904ce 100644
--- a/libc/kernel/common/linux/mtd/compatmac.h
+++ b/libc/kernel/common/linux/mtd/compatmac.h
@@ -7,9 +7,15 @@
  ***   structures, and macros generated from the original header, and thus,
  ***   contains no copyrightable information.
  ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
  ****************************************************************************
  ****************************************************************************/
 #ifndef __LINUX_MTD_COMPATMAC_H__
 #define __LINUX_MTD_COMPATMAC_H__
-
 #endif
diff --git a/libc/kernel/common/linux/mtd/flashchip.h b/libc/kernel/common/linux/mtd/flashchip.h
index e441048..91eaea8 100644
--- a/libc/kernel/common/linux/mtd/flashchip.h
+++ b/libc/kernel/common/linux/mtd/flashchip.h
@@ -7,62 +7,72 @@
  ***   structures, and macros generated from the original header, and thus,
  ***   contains no copyrightable information.
  ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
  ****************************************************************************
  ****************************************************************************/
 #ifndef __MTD_FLASHCHIP_H__
 #define __MTD_FLASHCHIP_H__
-
 #include <linux/sched.h>
-
 typedef enum {
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  FL_READY,
  FL_STATUS,
  FL_CFI_QUERY,
  FL_JEDEC_QUERY,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  FL_ERASING,
  FL_ERASE_SUSPENDING,
  FL_ERASE_SUSPENDED,
  FL_WRITING,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  FL_WRITING_TO_BUFFER,
  FL_OTP_WRITE,
  FL_WRITE_SUSPENDING,
  FL_WRITE_SUSPENDED,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  FL_PM_SUSPENDED,
  FL_SYNCING,
  FL_UNLOADING,
  FL_LOCKING,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  FL_UNLOCKING,
  FL_POINT,
  FL_XIP_WHILE_ERASING,
  FL_XIP_WHILE_WRITING,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  FL_UNKNOWN
 } flstate_t;
-
 struct flchip {
  unsigned long start;
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  int ref_point_counter;
  flstate_t state;
  flstate_t oldstate;
-
  unsigned int write_suspended:1;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  unsigned int erase_suspended:1;
  unsigned long in_progress_block_addr;
-
  spinlock_t *mutex;
  spinlock_t _spinlock;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  wait_queue_head_t wq;
  int word_write_time;
  int buffer_write_time;
  int erase_time;
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  void *priv;
 };
-
 struct flchip_shared {
  spinlock_t lock;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  struct flchip *writing;
  struct flchip *erasing;
 };
-
 #endif
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
diff --git a/libc/kernel/common/linux/mtd/map.h b/libc/kernel/common/linux/mtd/map.h
index 87124bc..803772f 100644
--- a/libc/kernel/common/linux/mtd/map.h
+++ b/libc/kernel/common/linux/mtd/map.h
@@ -7,96 +7,100 @@
  ***   structures, and macros generated from the original header, and thus,
  ***   contains no copyrightable information.
  ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
  ****************************************************************************
  ****************************************************************************/
 #ifndef __LINUX_MTD_MAP_H__
 #define __LINUX_MTD_MAP_H__
-
 #include <linux/types.h>
 #include <linux/list.h>
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #include <linux/string.h>
-
 #include <linux/mtd/compatmac.h>
-
 #include <asm/unaligned.h>
 #include <asm/system.h>
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #include <asm/io.h>
-
 #define map_bankwidth_is_1(map) (0)
-
 #define map_bankwidth_is_2(map) (0)
-
 #define map_bankwidth_is_4(map) (0)
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define map_calc_words(map) ((map_bankwidth(map) + (sizeof(unsigned long)-1))/ sizeof(unsigned long))
-
 #define map_bankwidth_is_8(map) (0)
-
 #define map_bankwidth_is_16(map) (0)
-
 #define map_bankwidth_is_32(map) (0)
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #ifndef map_bankwidth
 #error "No bus width supported. What's the point?"
 #endif
-
 #define MAX_MAP_LONGS ( ((MAX_MAP_BANKWIDTH*8) + BITS_PER_LONG - 1) / BITS_PER_LONG )
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+typedef union {
+ unsigned long x[MAX_MAP_LONGS];
+} map_word;
 struct map_info {
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  char *name;
  unsigned long size;
  unsigned long phys;
 #define NO_XIP (-1UL)
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  void __iomem *virt;
  void *cached;
-
  int bankwidth;
-
  void (*inval_cache)(struct map_info *, unsigned long, ssize_t);
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  void (*set_vpp)(struct map_info *, int);
-
  unsigned long map_priv_1;
  unsigned long map_priv_2;
  void *fldrv_priv;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  struct mtd_chip_driver *fldrv;
 };
-
 struct mtd_chip_driver {
  struct mtd_info *(*probe)(struct map_info *map);
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  void (*destroy)(struct mtd_info *);
  struct module *module;
  char *name;
  struct list_head list;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 };
-
 struct mtd_info *do_map_probe(const char *name, struct map_info *map);
-
 #define ENABLE_VPP(map) do { if(map->set_vpp) map->set_vpp(map, 1); } while(0)
 #define DISABLE_VPP(map) do { if(map->set_vpp) map->set_vpp(map, 0); } while(0)
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define INVALIDATE_CACHED_RANGE(map, from, size)   do { if(map->inval_cache) map->inval_cache(map, from, size); } while(0)
-
 #define map_word_andequal(m, a, b, z) map_word_equal(m, z, map_word_and(m, a, b))
 #if BITS_PER_LONG >= 64
 #endif
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #ifdef __LITTLE_ENDIAN
 #else
 #endif
 #if BITS_PER_LONG < 64
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define MAP_FF_LIMIT 4
 #else
 #define MAP_FF_LIMIT 8
 #endif
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #if BITS_PER_LONG >= 64
 #endif
 #if BITS_PER_LONG >= 64
 #endif
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define map_read(map, ofs) inline_map_read(map, ofs)
 #define map_copy_from(map, to, from, len) inline_map_copy_from(map, to, from, len)
 #define map_write(map, datum, ofs) inline_map_write(map, datum, ofs)
 #define map_copy_to(map, to, from, len) inline_map_copy_to(map, to, from, len)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define simple_map_init(map) BUG_ON(!map_bankwidth_supported((map)->bankwidth))
 #define map_is_linear(map) ({ (void)(map); 1; })
 #endif
diff --git a/libc/kernel/common/linux/mtd/mtd.h b/libc/kernel/common/linux/mtd/mtd.h
index 300813c..90ffcfc 100644
--- a/libc/kernel/common/linux/mtd/mtd.h
+++ b/libc/kernel/common/linux/mtd/mtd.h
@@ -7,147 +7,145 @@
  ***   structures, and macros generated from the original header, and thus,
  ***   contains no copyrightable information.
  ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
  ****************************************************************************
  ****************************************************************************/
 #ifndef __MTD_MTD_H__
 #define __MTD_MTD_H__
-
 #error This is a kernel header. Perhaps include mtd-user.h instead?
-
 #include <linux/types.h>
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #include <linux/module.h>
 #include <linux/uio.h>
 #include <linux/notifier.h>
-
 #include <linux/mtd/compatmac.h>
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #include <mtd/mtd-abi.h>
-
 #define MTD_CHAR_MAJOR 90
 #define MTD_BLOCK_MAJOR 31
 #define MAX_MTD_DEVICES 16
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define MTD_ERASE_PENDING 0x01
 #define MTD_ERASING 0x02
 #define MTD_ERASE_SUSPEND 0x04
 #define MTD_ERASE_DONE 0x08
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define MTD_ERASE_FAILED 0x10
-
 struct erase_info {
  struct mtd_info *mtd;
  u_int32_t addr;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  u_int32_t len;
  u_int32_t fail_addr;
  u_long time;
  u_long retries;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  u_int dev;
  u_int cell;
  void (*callback) (struct erase_info *self);
  u_long priv;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  u_char state;
  struct erase_info *next;
 };
-
 struct mtd_erase_region_info {
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  u_int32_t offset;
  u_int32_t erasesize;
  u_int32_t numblocks;
 };
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 typedef enum {
  MTD_OOB_PLACE,
  MTD_OOB_AUTO,
  MTD_OOB_RAW,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 } mtd_oob_mode_t;
-
 struct mtd_oob_ops {
  mtd_oob_mode_t mode;
  size_t len;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  size_t retlen;
  size_t ooblen;
  uint32_t ooboffs;
  uint8_t *datbuf;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  uint8_t *oobbuf;
 };
-
 struct mtd_info {
  u_char type;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  u_int32_t flags;
  u_int32_t size;
-
  u_int32_t erasesize;
-
  u_int32_t writesize;
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  u_int32_t oobsize;
  u_int32_t ecctype;
  u_int32_t eccsize;
-
 #define MTD_PROGREGION_CTRLMODE_VALID(mtd) (mtd)->oobsize
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define MTD_PROGREGION_CTRLMODE_INVALID(mtd) (mtd)->ecctype
-
  char *name;
  int index;
-
  struct nand_ecclayout *ecclayout;
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  int numeraseregions;
  struct mtd_erase_region_info *eraseregions;
-
  u_int32_t bank_size;
-
  int (*erase) (struct mtd_info *mtd, struct erase_info *instr);
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  int (*point) (struct mtd_info *mtd, loff_t from, size_t len, size_t *retlen, u_char **mtdbuf);
-
  void (*unpoint) (struct mtd_info *mtd, u_char * addr, loff_t from, size_t len);
-
  int (*read) (struct mtd_info *mtd, loff_t from, size_t len, size_t *retlen, u_char *buf);
  int (*write) (struct mtd_info *mtd, loff_t to, size_t len, size_t *retlen, const u_char *buf);
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  int (*read_oob) (struct mtd_info *mtd, loff_t from,
  struct mtd_oob_ops *ops);
  int (*write_oob) (struct mtd_info *mtd, loff_t to,
  struct mtd_oob_ops *ops);
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  int (*get_fact_prot_info) (struct mtd_info *mtd, struct otp_info *buf, size_t len);
  int (*read_fact_prot_reg) (struct mtd_info *mtd, loff_t from, size_t len, size_t *retlen, u_char *buf);
  int (*get_user_prot_info) (struct mtd_info *mtd, struct otp_info *buf, size_t len);
  int (*read_user_prot_reg) (struct mtd_info *mtd, loff_t from, size_t len, size_t *retlen, u_char *buf);
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  int (*write_user_prot_reg) (struct mtd_info *mtd, loff_t from, size_t len, size_t *retlen, u_char *buf);
  int (*lock_user_prot_reg) (struct mtd_info *mtd, loff_t from, size_t len);
-
  int (*writev) (struct mtd_info *mtd, const struct kvec *vecs, unsigned long count, loff_t to, size_t *retlen);
-
  void (*sync) (struct mtd_info *mtd);
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  int (*lock) (struct mtd_info *mtd, loff_t ofs, size_t len);
  int (*unlock) (struct mtd_info *mtd, loff_t ofs, size_t len);
-
  int (*suspend) (struct mtd_info *mtd);
  void (*resume) (struct mtd_info *mtd);
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  int (*block_isbad) (struct mtd_info *mtd, loff_t ofs);
  int (*block_markbad) (struct mtd_info *mtd, loff_t ofs);
-
  struct notifier_block reboot_notifier;
-
  struct mtd_ecc_stats ecc_stats;
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  void *priv;
-
  struct module *owner;
  int usecount;
 };
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 struct mtd_notifier {
  void (*add)(struct mtd_info *mtd);
  void (*remove)(struct mtd_info *mtd);
  struct list_head list;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 };
-
 #define MTD_DEBUG_LEVEL0 (0)  
 #define MTD_DEBUG_LEVEL1 (1)  
 #define MTD_DEBUG_LEVEL2 (2)  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define MTD_DEBUG_LEVEL3 (3)  
 #define DEBUG(n, args...) do { } while(0)
 #endif
diff --git a/libc/kernel/common/linux/mtd/nand.h b/libc/kernel/common/linux/mtd/nand.h
index 36e9fb4..cb9b13a 100644
--- a/libc/kernel/common/linux/mtd/nand.h
+++ b/libc/kernel/common/linux/mtd/nand.h
@@ -7,313 +7,308 @@
  ***   structures, and macros generated from the original header, and thus,
  ***   contains no copyrightable information.
  ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
  ****************************************************************************
  ****************************************************************************/
 #ifndef __LINUX_MTD_NAND_H
 #define __LINUX_MTD_NAND_H
-
 #include <linux/wait.h>
 #include <linux/spinlock.h>
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #include <linux/mtd/mtd.h>
-
 struct mtd_info;
-
 #define NAND_MAX_CHIPS 8
-
 #define NAND_MAX_OOBSIZE 64
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define NAND_MAX_PAGESIZE 2048
-
 #define NAND_NCE 0x01
-
 #define NAND_CLE 0x02
-
 #define NAND_ALE 0x04
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define NAND_CTRL_CLE (NAND_NCE | NAND_CLE)
 #define NAND_CTRL_ALE (NAND_NCE | NAND_ALE)
 #define NAND_CTRL_CHANGE 0x80
-
 #define NAND_CMD_READ0 0
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define NAND_CMD_READ1 1
 #define NAND_CMD_RNDOUT 5
 #define NAND_CMD_PAGEPROG 0x10
 #define NAND_CMD_READOOB 0x50
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define NAND_CMD_ERASE1 0x60
 #define NAND_CMD_STATUS 0x70
 #define NAND_CMD_STATUS_MULTI 0x71
 #define NAND_CMD_SEQIN 0x80
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define NAND_CMD_RNDIN 0x85
 #define NAND_CMD_READID 0x90
 #define NAND_CMD_ERASE2 0xd0
 #define NAND_CMD_RESET 0xff
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define NAND_CMD_READSTART 0x30
 #define NAND_CMD_RNDOUTSTART 0xE0
 #define NAND_CMD_CACHEDPROG 0x15
-
 #define NAND_CMD_DEPLETE1 0x100
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define NAND_CMD_DEPLETE2 0x38
 #define NAND_CMD_STATUS_MULTI 0x71
 #define NAND_CMD_STATUS_ERROR 0x72
-
 #define NAND_CMD_STATUS_ERROR0 0x73
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define NAND_CMD_STATUS_ERROR1 0x74
 #define NAND_CMD_STATUS_ERROR2 0x75
 #define NAND_CMD_STATUS_ERROR3 0x76
 #define NAND_CMD_STATUS_RESET 0x7f
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define NAND_CMD_STATUS_CLEAR 0xff
-
 #define NAND_CMD_NONE -1
-
 #define NAND_STATUS_FAIL 0x01
 #define NAND_STATUS_FAIL_N1 0x02
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define NAND_STATUS_TRUE_READY 0x20
 #define NAND_STATUS_READY 0x40
 #define NAND_STATUS_WP 0x80
-
 typedef enum {
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  NAND_ECC_NONE,
  NAND_ECC_SOFT,
  NAND_ECC_HW,
  NAND_ECC_HW_SYNDROME,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 } nand_ecc_modes_t;
-
 #define NAND_ECC_READ 0
-
 #define NAND_ECC_WRITE 1
-
 #define NAND_ECC_READSYN 2
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define NAND_GET_DEVICE 0x80
-
 #define NAND_NO_AUTOINCR 0x00000001
-
 #define NAND_BUSWIDTH_16 0x00000002
-
 #define NAND_NO_PADDING 0x00000004
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define NAND_CACHEPRG 0x00000008
-
 #define NAND_COPYBACK 0x00000010
-
 #define NAND_IS_AND 0x00000020
-
 #define NAND_4PAGE_ARRAY 0x00000040
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define BBT_AUTO_REFRESH 0x00000080
-
 #define NAND_NO_READRDY 0x00000100
-
 #define NAND_SAMSUNG_LP_OPTIONS   (NAND_NO_PADDING | NAND_CACHEPRG | NAND_COPYBACK)
-
 #define NAND_CANAUTOINCR(chip) (!(chip->options & NAND_NO_AUTOINCR))
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define NAND_MUST_PAD(chip) (!(chip->options & NAND_NO_PADDING))
 #define NAND_HAS_CACHEPROG(chip) ((chip->options & NAND_CACHEPRG))
 #define NAND_HAS_COPYBACK(chip) ((chip->options & NAND_COPYBACK))
-
 #define NAND_CHIPOPTIONS_MSK (0x0000ffff & ~NAND_NO_AUTOINCR)
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define NAND_USE_FLASH_BBT 0x00010000
-
 #define NAND_SKIP_BBTSCAN 0x00020000
-
 #define NAND_CONTROLLER_ALLOC 0x80000000
-
 typedef enum {
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  FL_READY,
  FL_READING,
  FL_WRITING,
  FL_ERASING,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  FL_SYNCING,
  FL_CACHEDPRG,
  FL_PM_SUSPENDED,
 } nand_state_t;
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 struct nand_chip;
-
 struct nand_hw_control {
  spinlock_t lock;
  struct nand_chip *active;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  wait_queue_head_t wq;
 };
-
 struct nand_ecc_ctrl {
  nand_ecc_modes_t mode;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  int steps;
  int size;
  int bytes;
  int total;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  int prepad;
  int postpad;
  struct nand_ecclayout *layout;
  void (*hwctl)(struct mtd_info *mtd, int mode);
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  int (*calculate)(struct mtd_info *mtd,
  const uint8_t *dat,
  uint8_t *ecc_code);
  int (*correct)(struct mtd_info *mtd, uint8_t *dat,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  uint8_t *read_ecc,
  uint8_t *calc_ecc);
  int (*read_page)(struct mtd_info *mtd,
  struct nand_chip *chip,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  uint8_t *buf);
  void (*write_page)(struct mtd_info *mtd,
  struct nand_chip *chip,
  const uint8_t *buf);
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  int (*read_oob)(struct mtd_info *mtd,
  struct nand_chip *chip,
  int page,
  int sndcmd);
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  int (*write_oob)(struct mtd_info *mtd,
  struct nand_chip *chip,
  int page);
 };
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 struct nand_buffers {
  uint8_t ecccalc[NAND_MAX_OOBSIZE];
  uint8_t ecccode[NAND_MAX_OOBSIZE];
  uint8_t oobwbuf[NAND_MAX_OOBSIZE];
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  uint8_t databuf[NAND_MAX_PAGESIZE];
  uint8_t oobrbuf[NAND_MAX_OOBSIZE];
 };
-
 struct nand_chip {
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  void __iomem *IO_ADDR_R;
  void __iomem *IO_ADDR_W;
-
  uint8_t (*read_byte)(struct mtd_info *mtd);
  u16 (*read_word)(struct mtd_info *mtd);
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  void (*write_buf)(struct mtd_info *mtd, const uint8_t *buf, int len);
  void (*read_buf)(struct mtd_info *mtd, uint8_t *buf, int len);
  int (*verify_buf)(struct mtd_info *mtd, const uint8_t *buf, int len);
  void (*select_chip)(struct mtd_info *mtd, int chip);
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  int (*block_bad)(struct mtd_info *mtd, loff_t ofs, int getchip);
  int (*block_markbad)(struct mtd_info *mtd, loff_t ofs);
  void (*cmd_ctrl)(struct mtd_info *mtd, int dat,
  unsigned int ctrl);
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  int (*dev_ready)(struct mtd_info *mtd);
  void (*cmdfunc)(struct mtd_info *mtd, unsigned command, int column, int page_addr);
  int (*waitfunc)(struct mtd_info *mtd, struct nand_chip *this);
  void (*erase_cmd)(struct mtd_info *mtd, int page);
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  int (*scan_bbt)(struct mtd_info *mtd);
  int (*errstat)(struct mtd_info *mtd, struct nand_chip *this, int state, int status, int page);
-
  int chip_delay;
  unsigned int options;
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  int page_shift;
  int phys_erase_shift;
  int bbt_erase_shift;
  int chip_shift;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  int numchips;
  unsigned long chipsize;
  int pagemask;
  int pagebuf;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  int badblockpos;
-
  nand_state_t state;
-
  uint8_t *oob_poi;
  struct nand_hw_control *controller;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  struct nand_ecclayout *ecclayout;
-
  struct nand_ecc_ctrl ecc;
  struct nand_buffers buffers;
  struct nand_hw_control hwcontrol;
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  struct mtd_oob_ops ops;
-
  uint8_t *bbt;
  struct nand_bbt_descr *bbt_td;
  struct nand_bbt_descr *bbt_md;
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  struct nand_bbt_descr *badblock_pattern;
-
  void *priv;
 };
-
 #define NAND_MFR_TOSHIBA 0x98
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define NAND_MFR_SAMSUNG 0xec
 #define NAND_MFR_FUJITSU 0x04
 #define NAND_MFR_NATIONAL 0x8f
 #define NAND_MFR_RENESAS 0x07
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define NAND_MFR_STMICRO 0x20
 #define NAND_MFR_HYNIX 0xad
-
 struct nand_flash_dev {
  char *name;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  int id;
  unsigned long pagesize;
  unsigned long chipsize;
  unsigned long erasesize;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  unsigned long options;
 };
-
 struct nand_manufacturers {
  int id;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  char * name;
 };
-
 struct nand_bbt_descr {
  int options;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  int pages[NAND_MAX_CHIPS];
  int offs;
  int veroffs;
  uint8_t version[NAND_MAX_CHIPS];
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  int len;
  int maxblocks;
  int reserved_block_code;
  uint8_t *pattern;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 };
-
 #define NAND_BBT_NRBITS_MSK 0x0000000F
 #define NAND_BBT_1BIT 0x00000001
 #define NAND_BBT_2BIT 0x00000002
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define NAND_BBT_4BIT 0x00000004
 #define NAND_BBT_8BIT 0x00000008
-
 #define NAND_BBT_LASTBLOCK 0x00000010
-
 #define NAND_BBT_ABSPAGE 0x00000020
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define NAND_BBT_SEARCH 0x00000040
-
 #define NAND_BBT_PERCHIP 0x00000080
-
 #define NAND_BBT_VERSION 0x00000100
-
 #define NAND_BBT_CREATE 0x00000200
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define NAND_BBT_SCANALLPAGES 0x00000400
-
 #define NAND_BBT_SCANEMPTY 0x00000800
-
 #define NAND_BBT_WRITE 0x00001000
-
 #define NAND_BBT_SAVECONTENT 0x00002000
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define NAND_BBT_SCAN2NDPAGE 0x00004000
-
 #define NAND_BBT_SCAN_MAXBLOCKS 4
-
 #define NAND_SMALL_BADBLOCK_POS 5
 #define NAND_LARGE_BADBLOCK_POS 0
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 struct platform_nand_chip {
  int nr_chips;
  int chip_offset;
  int nr_partitions;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  struct mtd_partition *partitions;
  struct nand_ecclayout *ecclayout;
  int chip_delay;
  unsigned int options;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  void *priv;
 };
-
 struct platform_nand_ctrl {
  void (*hwcontrol)(struct mtd_info *mtd, int cmd);
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  int (*dev_ready)(struct mtd_info *mtd);
  void (*select_chip)(struct mtd_info *mtd, int chip);
  void *priv;
 };
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #endif
diff --git a/libc/kernel/common/linux/mtd/nand_ecc.h b/libc/kernel/common/linux/mtd/nand_ecc.h
index 3e817f4..e7dbe1a 100644
--- a/libc/kernel/common/linux/mtd/nand_ecc.h
+++ b/libc/kernel/common/linux/mtd/nand_ecc.h
@@ -7,11 +7,17 @@
  ***   structures, and macros generated from the original header, and thus,
  ***   contains no copyrightable information.
  ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
  ****************************************************************************
  ****************************************************************************/
 #ifndef __MTD_NAND_ECC_H__
 #define __MTD_NAND_ECC_H__
-
 struct mtd_info;
-
 #endif
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
diff --git a/libc/kernel/common/linux/mtd/nftl.h b/libc/kernel/common/linux/mtd/nftl.h
index da7320e..75cdf54 100644
--- a/libc/kernel/common/linux/mtd/nftl.h
+++ b/libc/kernel/common/linux/mtd/nftl.h
@@ -7,49 +7,58 @@
  ***   structures, and macros generated from the original header, and thus,
  ***   contains no copyrightable information.
  ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
  ****************************************************************************
  ****************************************************************************/
 #ifndef __MTD_NFTL_H__
 #define __MTD_NFTL_H__
-
 #include <linux/mtd/mtd.h>
 #include <linux/mtd/blktrans.h>
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #include <mtd/nftl-user.h>
-
 #define BLOCK_NIL 0xffff  
 #define BLOCK_FREE 0xfffe  
 #define BLOCK_NOTEXPLORED 0xfffd  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define BLOCK_RESERVED 0xfffc  
-
 struct NFTLrecord {
  struct mtd_blktrans_dev mbd;
  __u16 MediaUnit, SpareMediaUnit;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  __u32 EraseSize;
  struct NFTLMediaHeader MediaHdr;
  int usecount;
  unsigned char heads;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  unsigned char sectors;
  unsigned short cylinders;
  __u16 numvunits;
  __u16 lastEUN;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  __u16 numfreeEUNs;
  __u16 LastFreeEUN;
  int head,sect,cyl;
  __u16 *EUNtable;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  __u16 *ReplUnitTable;
  unsigned int nb_blocks;
  unsigned int nb_boot_blocks;
  struct erase_info instr;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  struct nand_ecclayout oobinfo;
 };
-
 #ifndef NFTL_MAJOR
 #define NFTL_MAJOR 93
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #endif
-
 #define MAX_NFTLS 16
 #define MAX_SECTORS_PER_UNIT 64
 #define NFTL_PARTN_BITS 4
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #endif
diff --git a/libc/kernel/common/linux/mtd/onenand_regs.h b/libc/kernel/common/linux/mtd/onenand_regs.h
index a39c78f..662ffc9 100644
--- a/libc/kernel/common/linux/mtd/onenand_regs.h
+++ b/libc/kernel/common/linux/mtd/onenand_regs.h
@@ -7,137 +7,150 @@
  ***   structures, and macros generated from the original header, and thus,
  ***   contains no copyrightable information.
  ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
  ****************************************************************************
  ****************************************************************************/
 #ifndef __ONENAND_REG_H
 #define __ONENAND_REG_H
-
 #define ONENAND_MEMORY_MAP(x) ((x) << 1)
-
 #define ONENAND_BOOTRAM ONENAND_MEMORY_MAP(0x0000)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define ONENAND_DATARAM ONENAND_MEMORY_MAP(0x0200)
 #define ONENAND_SPARERAM ONENAND_MEMORY_MAP(0x8010)
-
 #define ONENAND_REG_MANUFACTURER_ID ONENAND_MEMORY_MAP(0xF000)
 #define ONENAND_REG_DEVICE_ID ONENAND_MEMORY_MAP(0xF001)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define ONENAND_REG_VERSION_ID ONENAND_MEMORY_MAP(0xF002)
 #define ONENAND_REG_DATA_BUFFER_SIZE ONENAND_MEMORY_MAP(0xF003)
 #define ONENAND_REG_BOOT_BUFFER_SIZE ONENAND_MEMORY_MAP(0xF004)
 #define ONENAND_REG_NUM_BUFFERS ONENAND_MEMORY_MAP(0xF005)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define ONENAND_REG_TECHNOLOGY ONENAND_MEMORY_MAP(0xF006)
-
 #define ONENAND_REG_START_ADDRESS1 ONENAND_MEMORY_MAP(0xF100)
 #define ONENAND_REG_START_ADDRESS2 ONENAND_MEMORY_MAP(0xF101)
 #define ONENAND_REG_START_ADDRESS3 ONENAND_MEMORY_MAP(0xF102)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define ONENAND_REG_START_ADDRESS4 ONENAND_MEMORY_MAP(0xF103)
 #define ONENAND_REG_START_ADDRESS5 ONENAND_MEMORY_MAP(0xF104)
 #define ONENAND_REG_START_ADDRESS6 ONENAND_MEMORY_MAP(0xF105)
 #define ONENAND_REG_START_ADDRESS7 ONENAND_MEMORY_MAP(0xF106)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define ONENAND_REG_START_ADDRESS8 ONENAND_MEMORY_MAP(0xF107)
-
 #define ONENAND_REG_START_BUFFER ONENAND_MEMORY_MAP(0xF200)
 #define ONENAND_REG_COMMAND ONENAND_MEMORY_MAP(0xF220)
 #define ONENAND_REG_SYS_CFG1 ONENAND_MEMORY_MAP(0xF221)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define ONENAND_REG_SYS_CFG2 ONENAND_MEMORY_MAP(0xF222)
 #define ONENAND_REG_CTRL_STATUS ONENAND_MEMORY_MAP(0xF240)
 #define ONENAND_REG_INTERRUPT ONENAND_MEMORY_MAP(0xF241)
 #define ONENAND_REG_START_BLOCK_ADDRESS ONENAND_MEMORY_MAP(0xF24C)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define ONENAND_REG_END_BLOCK_ADDRESS ONENAND_MEMORY_MAP(0xF24D)
 #define ONENAND_REG_WP_STATUS ONENAND_MEMORY_MAP(0xF24E)
-
 #define ONENAND_REG_ECC_STATUS ONENAND_MEMORY_MAP(0xFF00)
 #define ONENAND_REG_ECC_M0 ONENAND_MEMORY_MAP(0xFF01)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define ONENAND_REG_ECC_S0 ONENAND_MEMORY_MAP(0xFF02)
 #define ONENAND_REG_ECC_M1 ONENAND_MEMORY_MAP(0xFF03)
 #define ONENAND_REG_ECC_S1 ONENAND_MEMORY_MAP(0xFF04)
 #define ONENAND_REG_ECC_M2 ONENAND_MEMORY_MAP(0xFF05)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define ONENAND_REG_ECC_S2 ONENAND_MEMORY_MAP(0xFF06)
 #define ONENAND_REG_ECC_M3 ONENAND_MEMORY_MAP(0xFF07)
 #define ONENAND_REG_ECC_S3 ONENAND_MEMORY_MAP(0xFF08)
-
 #define ONENAND_DEVICE_DENSITY_SHIFT (4)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define ONENAND_DEVICE_IS_DDP (1 << 3)
 #define ONENAND_DEVICE_IS_DEMUX (1 << 2)
 #define ONENAND_DEVICE_VCC_MASK (0x3)
-
 #define ONENAND_DEVICE_DENSITY_512Mb (0x002)
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define ONENAND_VERSION_PROCESS_SHIFT (8)
-
 #define ONENAND_DDP_SHIFT (15)
-
 #define ONENAND_FPA_MASK (0x3f)
 #define ONENAND_FPA_SHIFT (2)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define ONENAND_FSA_MASK (0x03)
-
 #define ONENAND_BSA_MASK (0x03)
 #define ONENAND_BSA_SHIFT (8)
 #define ONENAND_BSA_BOOTRAM (0 << 2)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define ONENAND_BSA_DATARAM0 (2 << 2)
 #define ONENAND_BSA_DATARAM1 (3 << 2)
 #define ONENAND_BSC_MASK (0x03)
-
 #define ONENAND_CMD_READ (0x00)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define ONENAND_CMD_READOOB (0x13)
 #define ONENAND_CMD_PROG (0x80)
 #define ONENAND_CMD_PROGOOB (0x1A)
 #define ONENAND_CMD_UNLOCK (0x23)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define ONENAND_CMD_LOCK (0x2A)
 #define ONENAND_CMD_LOCK_TIGHT (0x2C)
 #define ONENAND_CMD_ERASE (0x94)
 #define ONENAND_CMD_RESET (0xF0)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define ONENAND_CMD_OTP_ACCESS (0x65)
 #define ONENAND_CMD_READID (0x90)
-
 #define ONENAND_CMD_BUFFERRAM (0x1978)
-
 #define ONENAND_SYS_CFG1_SYNC_READ (1 << 15)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define ONENAND_SYS_CFG1_BRL_7 (7 << 12)
 #define ONENAND_SYS_CFG1_BRL_6 (6 << 12)
 #define ONENAND_SYS_CFG1_BRL_5 (5 << 12)
 #define ONENAND_SYS_CFG1_BRL_4 (4 << 12)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define ONENAND_SYS_CFG1_BRL_3 (3 << 12)
 #define ONENAND_SYS_CFG1_BRL_10 (2 << 12)
 #define ONENAND_SYS_CFG1_BRL_9 (1 << 12)
 #define ONENAND_SYS_CFG1_BRL_8 (0 << 12)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define ONENAND_SYS_CFG1_BRL_SHIFT (12)
 #define ONENAND_SYS_CFG1_BL_32 (4 << 9)
 #define ONENAND_SYS_CFG1_BL_16 (3 << 9)
 #define ONENAND_SYS_CFG1_BL_8 (2 << 9)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define ONENAND_SYS_CFG1_BL_4 (1 << 9)
 #define ONENAND_SYS_CFG1_BL_CONT (0 << 9)
 #define ONENAND_SYS_CFG1_BL_SHIFT (9)
 #define ONENAND_SYS_CFG1_NO_ECC (1 << 8)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define ONENAND_SYS_CFG1_RDY (1 << 7)
 #define ONENAND_SYS_CFG1_INT (1 << 6)
 #define ONENAND_SYS_CFG1_IOBE (1 << 5)
 #define ONENAND_SYS_CFG1_RDY_CONF (1 << 4)
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define ONENAND_CTRL_ONGO (1 << 15)
 #define ONENAND_CTRL_LOCK (1 << 14)
 #define ONENAND_CTRL_LOAD (1 << 13)
 #define ONENAND_CTRL_PROGRAM (1 << 12)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define ONENAND_CTRL_ERASE (1 << 11)
 #define ONENAND_CTRL_ERROR (1 << 10)
 #define ONENAND_CTRL_RSTB (1 << 7)
 #define ONENAND_CTRL_OTP_L (1 << 6)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define ONENAND_CTRL_OTP_BL (1 << 5)
-
 #define ONENAND_INT_MASTER (1 << 15)
 #define ONENAND_INT_READ (1 << 7)
 #define ONENAND_INT_WRITE (1 << 6)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define ONENAND_INT_ERASE (1 << 5)
 #define ONENAND_INT_RESET (1 << 4)
 #define ONENAND_INT_CLEAR (0 << 0)
-
 #define ONENAND_WP_US (1 << 2)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define ONENAND_WP_LS (1 << 1)
 #define ONENAND_WP_LTS (1 << 0)
-
 #define ONENAND_ECC_1BIT (1 << 0)
 #define ONENAND_ECC_2BIT (1 << 1)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define ONENAND_ECC_2BIT_ALL (0xAAAA)
-
 #define ONENAND_OTP_LOCK_OFFSET (14)
-
 #endif
diff --git a/libc/kernel/common/linux/mtd/partitions.h b/libc/kernel/common/linux/mtd/partitions.h
index aeb15e1..c1f106e 100644
--- a/libc/kernel/common/linux/mtd/partitions.h
+++ b/libc/kernel/common/linux/mtd/partitions.h
@@ -7,34 +7,39 @@
  ***   structures, and macros generated from the original header, and thus,
  ***   contains no copyrightable information.
  ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
  ****************************************************************************
  ****************************************************************************/
 #ifndef MTD_PARTITIONS_H
 #define MTD_PARTITIONS_H
-
 #include <linux/types.h>
-
 struct mtd_partition {
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  char *name;
  u_int32_t size;
  u_int32_t offset;
  u_int32_t mask_flags;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  struct nand_ecclayout *ecclayout;
  struct mtd_info **mtdp;
 };
-
 #define MTDPART_OFS_NXTBLK (-2)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define MTDPART_OFS_APPEND (-1)
 #define MTDPART_SIZ_FULL (0)
-
 struct mtd_part_parser {
  struct list_head list;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  struct module *owner;
  const char *name;
  int (*parse_fn)(struct mtd_info *, struct mtd_partition **, unsigned long);
 };
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define put_partition_parser(p) do { module_put((p)->owner); } while(0)
-
 #endif
-
