diff --git a/libc/kernel/common/linux/mmc/card.h b/libc/kernel/common/linux/mmc/card.h
index a09b71d..94afe21 100644
--- a/libc/kernel/common/linux/mmc/card.h
+++ b/libc/kernel/common/linux/mmc/card.h
@@ -7,108 +7,94 @@
  ***   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_MMC_CARD_H
 #define LINUX_MMC_CARD_H
+
 #include <linux/mmc/mmc.h>
+
 struct mmc_cid {
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  unsigned int manfid;
  char prod_name[8];
  unsigned int serial;
  unsigned short oemid;
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  unsigned short year;
  unsigned char hwrev;
  unsigned char fwrev;
  unsigned char month;
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 };
+
 struct mmc_csd {
  unsigned char mmca_vsn;
  unsigned short cmdclass;
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  unsigned short tacc_clks;
  unsigned int tacc_ns;
  unsigned int r2w_factor;
  unsigned int max_dtr;
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  unsigned int read_blkbits;
  unsigned int write_blkbits;
  unsigned int capacity;
  unsigned int read_partial:1,
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  read_misalign:1,
  write_partial:1,
  write_misalign:1;
 };
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+
 struct sd_scr {
  unsigned char sda_vsn;
  unsigned char bus_widths;
 #define SD_SCR_BUS_WIDTH_1 (1<<0)
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define SD_SCR_BUS_WIDTH_4 (1<<2)
 };
+
 struct mmc_host;
+
 struct mmc_card {
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  struct list_head node;
  struct mmc_host *host;
  struct device dev;
  unsigned int rca;
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  unsigned int state;
 #define MMC_STATE_PRESENT (1<<0)  
 #define MMC_STATE_DEAD (1<<1)  
 #define MMC_STATE_BAD (1<<2)  
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define MMC_STATE_SDCARD (1<<3)  
 #define MMC_STATE_READONLY (1<<4)  
  u32 raw_cid[4];
  u32 raw_csd[4];
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  u32 raw_scr[2];
  struct mmc_cid cid;
  struct mmc_csd csd;
  struct sd_scr scr;
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 };
+
 #define mmc_card_present(c) ((c)->state & MMC_STATE_PRESENT)
 #define mmc_card_dead(c) ((c)->state & MMC_STATE_DEAD)
 #define mmc_card_bad(c) ((c)->state & MMC_STATE_BAD)
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define mmc_card_sd(c) ((c)->state & MMC_STATE_SDCARD)
 #define mmc_card_readonly(c) ((c)->state & MMC_STATE_READONLY)
+
 #define mmc_card_set_present(c) ((c)->state |= MMC_STATE_PRESENT)
 #define mmc_card_set_dead(c) ((c)->state |= MMC_STATE_DEAD)
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define mmc_card_set_bad(c) ((c)->state |= MMC_STATE_BAD)
 #define mmc_card_set_sd(c) ((c)->state |= MMC_STATE_SDCARD)
 #define mmc_card_set_readonly(c) ((c)->state |= MMC_STATE_READONLY)
+
 #define mmc_card_name(c) ((c)->cid.prod_name)
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define mmc_card_id(c) ((c)->dev.bus_id)
+
 #define mmc_list_to_card(l) container_of(l, struct mmc_card, node)
 #define mmc_get_drvdata(c) dev_get_drvdata(&(c)->dev)
 #define mmc_set_drvdata(c,d) dev_set_drvdata(&(c)->dev, d)
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+
 struct mmc_driver {
  struct device_driver drv;
  int (*probe)(struct mmc_card *);
  void (*remove)(struct mmc_card *);
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  int (*suspend)(struct mmc_card *, pm_message_t);
  int (*resume)(struct mmc_card *);
 };
+
 #define mmc_card_release_host(c) mmc_release_host((c)->host)
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #endif
diff --git a/libc/kernel/common/linux/mmc/host.h b/libc/kernel/common/linux/mmc/host.h
index 22f4262..9433626 100644
--- a/libc/kernel/common/linux/mmc/host.h
+++ b/libc/kernel/common/linux/mmc/host.h
@@ -7,115 +7,114 @@
  ***   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_MMC_HOST_H
 #define LINUX_MMC_HOST_H
+
 #include <linux/mmc/mmc.h>
+
 struct mmc_ios {
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  unsigned int clock;
  unsigned short vdd;
+
 #define MMC_VDD_150 0
 #define MMC_VDD_155 1
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define MMC_VDD_160 2
 #define MMC_VDD_165 3
 #define MMC_VDD_170 4
 #define MMC_VDD_180 5
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define MMC_VDD_190 6
 #define MMC_VDD_200 7
 #define MMC_VDD_210 8
 #define MMC_VDD_220 9
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define MMC_VDD_230 10
 #define MMC_VDD_240 11
 #define MMC_VDD_250 12
 #define MMC_VDD_260 13
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define MMC_VDD_270 14
 #define MMC_VDD_280 15
 #define MMC_VDD_290 16
 #define MMC_VDD_300 17
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define MMC_VDD_310 18
 #define MMC_VDD_320 19
 #define MMC_VDD_330 20
 #define MMC_VDD_340 21
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define MMC_VDD_350 22
 #define MMC_VDD_360 23
+
  unsigned char bus_mode;
+
 #define MMC_BUSMODE_OPENDRAIN 1
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define MMC_BUSMODE_PUSHPULL 2
+
  unsigned char chip_select;
+
 #define MMC_CS_DONTCARE 0
 #define MMC_CS_HIGH 1
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define MMC_CS_LOW 2
+
  unsigned char power_mode;
+
 #define MMC_POWER_OFF 0
 #define MMC_POWER_UP 1
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define MMC_POWER_ON 2
+
  unsigned char bus_width;
+
 #define MMC_BUS_WIDTH_1 0
 #define MMC_BUS_WIDTH_4 2
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 };
+
 struct mmc_host_ops {
  void (*request)(struct mmc_host *host, struct mmc_request *req);
  void (*set_ios)(struct mmc_host *host, struct mmc_ios *ios);
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  int (*get_ro)(struct mmc_host *host);
 };
+
 struct mmc_card;
 struct device;
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+
 struct mmc_host {
  struct device *dev;
  struct class_device class_dev;
  int index;
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  const struct mmc_host_ops *ops;
  unsigned int f_min;
  unsigned int f_max;
  u32 ocr_avail;
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+
  unsigned long caps;
+
 #define MMC_CAP_4_BIT_DATA (1 << 0)  
+
  unsigned int max_seg_size;
  unsigned short max_hw_segs;
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  unsigned short max_phys_segs;
  unsigned short max_sectors;
  unsigned short unused;
+
  struct mmc_ios ios;
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  u32 ocr;
+
  unsigned int mode;
 #define MMC_MODE_MMC 0
 #define MMC_MODE_SD 1
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+
  struct list_head cards;
+
  wait_queue_head_t wq;
  spinlock_t lock;
  struct mmc_card *card_busy;
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  struct mmc_card *card_selected;
+
  struct work_struct detect;
+
  unsigned long private[0] ____cacheline_aligned;
 };
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+
 #define mmc_dev(x) ((x)->dev)
 #define mmc_hostname(x) ((x)->class_dev.class_id)
+
 #endif
+
diff --git a/libc/kernel/common/linux/mmc/mmc.h b/libc/kernel/common/linux/mmc/mmc.h
index e99b443..089714c 100644
--- a/libc/kernel/common/linux/mmc/mmc.h
+++ b/libc/kernel/common/linux/mmc/mmc.h
@@ -7,99 +7,93 @@
  ***   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 MMC_H
 #define MMC_H
+
 #include <linux/list.h>
 #include <linux/interrupt.h>
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #include <linux/device.h>
+
 struct request;
 struct mmc_data;
 struct mmc_request;
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+
 struct mmc_command {
  u32 opcode;
  u32 arg;
  u32 resp[4];
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  unsigned int flags;
 #define MMC_RSP_PRESENT (1 << 0)
 #define MMC_RSP_136 (1 << 1)  
 #define MMC_RSP_CRC (1 << 2)  
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define MMC_RSP_BUSY (1 << 3)  
 #define MMC_RSP_OPCODE (1 << 4)  
 #define MMC_CMD_MASK (3 << 5)  
 #define MMC_CMD_AC (0 << 5)
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define MMC_CMD_ADTC (1 << 5)
 #define MMC_CMD_BC (2 << 5)
 #define MMC_CMD_BCR (3 << 5)
+
 #define MMC_RSP_NONE (0)
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define MMC_RSP_R1 (MMC_RSP_PRESENT|MMC_RSP_CRC|MMC_RSP_OPCODE)
 #define MMC_RSP_R1B (MMC_RSP_PRESENT|MMC_RSP_CRC|MMC_RSP_OPCODE|MMC_RSP_BUSY)
 #define MMC_RSP_R2 (MMC_RSP_PRESENT|MMC_RSP_136|MMC_RSP_CRC)
 #define MMC_RSP_R3 (MMC_RSP_PRESENT)
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define MMC_RSP_R6 (MMC_RSP_PRESENT|MMC_RSP_CRC)
+
 #define mmc_resp_type(cmd) ((cmd)->flags & (MMC_RSP_PRESENT|MMC_RSP_136|MMC_RSP_CRC|MMC_RSP_BUSY|MMC_RSP_OPCODE))
+
 #define mmc_cmd_type(cmd) ((cmd)->flags & MMC_CMD_MASK)
+
  unsigned int retries;
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  unsigned int error;
+
 #define MMC_ERR_NONE 0
 #define MMC_ERR_TIMEOUT 1
 #define MMC_ERR_BADCRC 2
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define MMC_ERR_FIFO 3
 #define MMC_ERR_FAILED 4
 #define MMC_ERR_INVALID 5
+
  struct mmc_data *data;
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  struct mmc_request *mrq;
 };
+
 struct mmc_data {
  unsigned int timeout_ns;
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  unsigned int timeout_clks;
  unsigned int blksz_bits;
  unsigned int blksz;
  unsigned int blocks;
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  unsigned int error;
  unsigned int flags;
+
 #define MMC_DATA_WRITE (1 << 8)
 #define MMC_DATA_READ (1 << 9)
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define MMC_DATA_STREAM (1 << 10)
 #define MMC_DATA_MULTI (1 << 11)
+
  unsigned int bytes_xfered;
+
  struct mmc_command *stop;
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  struct mmc_request *mrq;
+
  unsigned int sg_len;
  struct scatterlist *sg;
 };
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+
 struct mmc_request {
  struct mmc_command *cmd;
  struct mmc_data *data;
  struct mmc_command *stop;
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+
  void *done_data;
  void (*done)(struct mmc_request *);
 };
+
 struct mmc_host;
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 struct mmc_card;
+
 #endif
