diff --git a/libc/kernel/common/linux/ata.h b/libc/kernel/common/linux/ata.h
index 76af576..e897638 100644
--- a/libc/kernel/common/linux/ata.h
+++ b/libc/kernel/common/linux/ata.h
@@ -7,259 +7,287 @@
  ***   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_ATA_H__
 #define __LINUX_ATA_H__
-
 #include <linux/types.h>
-
 #define ATA_DMA_BOUNDARY 0xffffUL
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define ATA_DMA_MASK 0xffffffffULL
-
 enum {
-
  ATA_MAX_DEVICES = 2,
  ATA_MAX_PRD = 256,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  ATA_SECT_SIZE = 512,
-
  ATA_ID_WORDS = 256,
  ATA_ID_SERNO_OFS = 10,
  ATA_ID_FW_REV_OFS = 23,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  ATA_ID_PROD_OFS = 27,
  ATA_ID_OLD_PIO_MODES = 51,
  ATA_ID_FIELD_VALID = 53,
  ATA_ID_MWDMA_MODES = 63,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  ATA_ID_PIO_MODES = 64,
  ATA_ID_EIDE_DMA_MIN = 65,
  ATA_ID_EIDE_PIO = 67,
  ATA_ID_EIDE_PIO_IORDY = 68,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  ATA_ID_UDMA_MODES = 88,
  ATA_ID_MAJOR_VER = 80,
  ATA_ID_PIO4 = (1 << 1),
-
  ATA_PCI_CTL_OFS = 2,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  ATA_SERNO_LEN = 20,
  ATA_UDMA0 = (1 << 0),
  ATA_UDMA1 = ATA_UDMA0 | (1 << 1),
  ATA_UDMA2 = ATA_UDMA1 | (1 << 2),
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  ATA_UDMA3 = ATA_UDMA2 | (1 << 3),
  ATA_UDMA4 = ATA_UDMA3 | (1 << 4),
  ATA_UDMA5 = ATA_UDMA4 | (1 << 5),
  ATA_UDMA6 = ATA_UDMA5 | (1 << 6),
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  ATA_UDMA7 = ATA_UDMA6 | (1 << 7),
-
  ATA_UDMA_MASK_40C = ATA_UDMA2,
-
  ATA_PRD_SZ = 8,
  ATA_PRD_TBL_SZ = (ATA_MAX_PRD * ATA_PRD_SZ),
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  ATA_PRD_EOT = (1 << 31),
-
  ATA_DMA_TABLE_OFS = 4,
  ATA_DMA_STATUS = 2,
  ATA_DMA_CMD = 0,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  ATA_DMA_WR = (1 << 3),
  ATA_DMA_START = (1 << 0),
  ATA_DMA_INTR = (1 << 2),
  ATA_DMA_ERR = (1 << 1),
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  ATA_DMA_ACTIVE = (1 << 0),
-
  ATA_HOB = (1 << 7),
  ATA_NIEN = (1 << 1),
  ATA_LBA = (1 << 6),
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  ATA_DEV1 = (1 << 4),
  ATA_DEVICE_OBS = (1 << 7) | (1 << 5),
  ATA_DEVCTL_OBS = (1 << 3),
  ATA_BUSY = (1 << 7),
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  ATA_DRDY = (1 << 6),
  ATA_DF = (1 << 5),
  ATA_DRQ = (1 << 3),
  ATA_ERR = (1 << 0),
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  ATA_SRST = (1 << 2),
  ATA_ICRC = (1 << 7),
  ATA_UNC = (1 << 6),
  ATA_IDNF = (1 << 4),
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  ATA_ABORTED = (1 << 2),
-
  ATA_REG_DATA = 0x00,
  ATA_REG_ERR = 0x01,
  ATA_REG_NSECT = 0x02,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  ATA_REG_LBAL = 0x03,
  ATA_REG_LBAM = 0x04,
  ATA_REG_LBAH = 0x05,
  ATA_REG_DEVICE = 0x06,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  ATA_REG_STATUS = 0x07,
-
  ATA_REG_FEATURE = ATA_REG_ERR,
  ATA_REG_CMD = ATA_REG_STATUS,
  ATA_REG_BYTEL = ATA_REG_LBAM,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  ATA_REG_BYTEH = ATA_REG_LBAH,
  ATA_REG_DEVSEL = ATA_REG_DEVICE,
  ATA_REG_IRQ = ATA_REG_NSECT,
-
  ATA_CMD_CHK_POWER = 0xE5,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  ATA_CMD_STANDBY = 0xE2,
  ATA_CMD_IDLE = 0xE3,
  ATA_CMD_EDD = 0x90,
  ATA_CMD_FLUSH = 0xE7,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  ATA_CMD_FLUSH_EXT = 0xEA,
  ATA_CMD_ID_ATA = 0xEC,
  ATA_CMD_ID_ATAPI = 0xA1,
  ATA_CMD_READ = 0xC8,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  ATA_CMD_READ_EXT = 0x25,
  ATA_CMD_WRITE = 0xCA,
  ATA_CMD_WRITE_EXT = 0x35,
  ATA_CMD_WRITE_FUA_EXT = 0x3D,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  ATA_CMD_FPDMA_READ = 0x60,
  ATA_CMD_FPDMA_WRITE = 0x61,
  ATA_CMD_PIO_READ = 0x20,
  ATA_CMD_PIO_READ_EXT = 0x24,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  ATA_CMD_PIO_WRITE = 0x30,
  ATA_CMD_PIO_WRITE_EXT = 0x34,
  ATA_CMD_READ_MULTI = 0xC4,
  ATA_CMD_READ_MULTI_EXT = 0x29,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  ATA_CMD_WRITE_MULTI = 0xC5,
  ATA_CMD_WRITE_MULTI_EXT = 0x39,
  ATA_CMD_WRITE_MULTI_FUA_EXT = 0xCE,
  ATA_CMD_SET_FEATURES = 0xEF,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  ATA_CMD_PACKET = 0xA0,
  ATA_CMD_VERIFY = 0x40,
  ATA_CMD_VERIFY_EXT = 0x42,
  ATA_CMD_STANDBYNOW1 = 0xE0,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  ATA_CMD_IDLEIMMEDIATE = 0xE1,
  ATA_CMD_INIT_DEV_PARAMS = 0x91,
  ATA_CMD_READ_NATIVE_MAX = 0xF8,
  ATA_CMD_READ_NATIVE_MAX_EXT = 0x27,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  ATA_CMD_READ_LOG_EXT = 0x2f,
-
  ATA_LOG_SATA_NCQ = 0x10,
-
  SETFEATURES_XFER = 0x03,
  XFER_UDMA_7 = 0x47,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  XFER_UDMA_6 = 0x46,
  XFER_UDMA_5 = 0x45,
  XFER_UDMA_4 = 0x44,
  XFER_UDMA_3 = 0x43,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  XFER_UDMA_2 = 0x42,
  XFER_UDMA_1 = 0x41,
  XFER_UDMA_0 = 0x40,
  XFER_MW_DMA_2 = 0x22,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  XFER_MW_DMA_1 = 0x21,
  XFER_MW_DMA_0 = 0x20,
  XFER_SW_DMA_2 = 0x12,
  XFER_SW_DMA_1 = 0x11,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  XFER_SW_DMA_0 = 0x10,
  XFER_PIO_4 = 0x0C,
  XFER_PIO_3 = 0x0B,
  XFER_PIO_2 = 0x0A,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  XFER_PIO_1 = 0x09,
  XFER_PIO_0 = 0x08,
  XFER_PIO_SLOW = 0x00,
-
  SETFEATURES_WC_ON = 0x02,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  SETFEATURES_WC_OFF = 0x82,
-
  ATAPI_PKT_DMA = (1 << 0),
  ATAPI_DMADIR = (1 << 2),
  ATAPI_CDB_LEN = 16,
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  ATA_CBL_NONE = 0,
  ATA_CBL_PATA40 = 1,
  ATA_CBL_PATA80 = 2,
  ATA_CBL_PATA_UNK = 3,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  ATA_CBL_SATA = 4,
-
  SCR_STATUS = 0,
  SCR_ERROR = 1,
  SCR_CONTROL = 2,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  SCR_ACTIVE = 3,
  SCR_NOTIFICATION = 4,
-
  SERR_DATA_RECOVERED = (1 << 0),
  SERR_COMM_RECOVERED = (1 << 1),
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  SERR_DATA = (1 << 8),
  SERR_PERSISTENT = (1 << 9),
  SERR_PROTOCOL = (1 << 10),
  SERR_INTERNAL = (1 << 11),
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  SERR_PHYRDY_CHG = (1 << 16),
  SERR_DEV_XCHG = (1 << 26),
-
  ATA_TFLAG_LBA48 = (1 << 0),
  ATA_TFLAG_ISADDR = (1 << 1),
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  ATA_TFLAG_DEVICE = (1 << 2),
  ATA_TFLAG_WRITE = (1 << 3),
  ATA_TFLAG_LBA = (1 << 4),
  ATA_TFLAG_FUA = (1 << 5),
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  ATA_TFLAG_POLLING = (1 << 6),
 };
-
 enum ata_tf_protocols {
-
  ATA_PROT_UNKNOWN,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  ATA_PROT_NODATA,
  ATA_PROT_PIO,
  ATA_PROT_DMA,
  ATA_PROT_NCQ,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  ATA_PROT_ATAPI,
  ATA_PROT_ATAPI_NODATA,
  ATA_PROT_ATAPI_DMA,
 };
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 enum ata_ioctls {
  ATA_IOC_GET_IO32 = 0x309,
  ATA_IOC_SET_IO32 = 0x324,
 };
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 struct ata_prd {
  u32 addr;
  u32 flags_len;
 };
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 struct ata_taskfile {
  unsigned long flags;
  u8 protocol;
-
  u8 ctl;
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  u8 hob_feature;
  u8 hob_nsect;
  u8 hob_lbal;
  u8 hob_lbam;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  u8 hob_lbah;
-
  u8 feature;
  u8 nsect;
  u8 lbal;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  u8 lbam;
  u8 lbah;
-
  u8 device;
-
  u8 command;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 };
-
 #define ata_id_is_ata(id) (((id)[0] & (1 << 15)) == 0)
 #define ata_id_is_cfa(id) ((id)[0] == 0x848A)
 #define ata_id_is_sata(id) ((id)[93] == 0)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define ata_id_rahead_enabled(id) ((id)[85] & (1 << 6))
 #define ata_id_wcache_enabled(id) ((id)[85] & (1 << 5))
 #define ata_id_hpa_enabled(id) ((id)[85] & (1 << 10))
 #define ata_id_has_fua(id) ((id)[84] & (1 << 6))
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define ata_id_has_flush(id) ((id)[83] & (1 << 12))
 #define ata_id_has_flush_ext(id) ((id)[83] & (1 << 13))
 #define ata_id_has_lba48(id) ((id)[83] & (1 << 10))
 #define ata_id_has_hpa(id) ((id)[82] & (1 << 10))
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define ata_id_has_wcache(id) ((id)[82] & (1 << 5))
 #define ata_id_has_pm(id) ((id)[82] & (1 << 3))
 #define ata_id_has_lba(id) ((id)[49] & (1 << 9))
 #define ata_id_has_dma(id) ((id)[49] & (1 << 8))
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define ata_id_has_ncq(id) ((id)[76] & (1 << 8))
 #define ata_id_queue_depth(id) (((id)[75] & 0x1f) + 1)
 #define ata_id_removeable(id) ((id)[0] & (1 << 7))
 #define ata_id_has_dword_io(id) ((id)[50] & (1 << 0))
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define ata_id_u32(id,n)   (((u32) (id)[(n) + 1] << 16) | ((u32) (id)[(n)]))
 #define ata_id_u64(id,n)   ( ((u64) (id)[(n) + 3] << 48) |   ((u64) (id)[(n) + 2] << 32) |   ((u64) (id)[(n) + 1] << 16) |   ((u64) (id)[(n) + 0]) )
-
 #define ata_id_cdb_intr(id) (((id)[0] & 0x60) == 0x20)
-
 #endif
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
