diff --git a/android-mainline/ANDROID-add-extra-free-kbytes-tunable.patch b/android-mainline/ANDROID-add-extra-free-kbytes-tunable.patch
index 38d4b5f..e705c90 100644
--- a/android-mainline/ANDROID-add-extra-free-kbytes-tunable.patch
+++ b/android-mainline/ANDROID-add-extra-free-kbytes-tunable.patch
@@ -133,7 +133,7 @@
  static unsigned long nr_kernel_pages __initdata;
  static unsigned long nr_all_pages __initdata;
  static unsigned long dma_reserve __initdata;
-@@ -7900,6 +7912,7 @@ static void setup_per_zone_lowmem_reserve(void)
+@@ -7902,6 +7914,7 @@ static void setup_per_zone_lowmem_reserve(void)
  static void __setup_per_zone_wmarks(void)
  {
  	unsigned long pages_min = min_free_kbytes >> (PAGE_SHIFT - 10);
@@ -141,7 +141,7 @@
  	unsigned long lowmem_pages = 0;
  	struct zone *zone;
  	unsigned long flags;
-@@ -7911,11 +7924,13 @@ static void __setup_per_zone_wmarks(void)
+@@ -7913,11 +7926,13 @@ static void __setup_per_zone_wmarks(void)
  	}
  
  	for_each_zone(zone) {
@@ -156,7 +156,7 @@
  		if (is_highmem(zone)) {
  			/*
  			 * __GFP_HIGH and PF_MEMALLOC allocations usually don't
-@@ -7949,8 +7964,8 @@ static void __setup_per_zone_wmarks(void)
+@@ -7951,8 +7966,8 @@ static void __setup_per_zone_wmarks(void)
  				      watermark_scale_factor, 10000));
  
  		zone->watermark_boost = 0;
@@ -167,7 +167,7 @@
  
  		spin_unlock_irqrestore(&zone->lock, flags);
  	}
-@@ -8035,7 +8050,7 @@ postcore_initcall(init_per_zone_wmark_min)
+@@ -8037,7 +8052,7 @@ postcore_initcall(init_per_zone_wmark_min)
  /*
   * min_free_kbytes_sysctl_handler - just a wrapper around proc_dointvec() so
   *	that we can call two helper functions whenever min_free_kbytes
diff --git a/android-mainline/ANDROID-export-bkops-and-query-flag-query-functions.patch b/android-mainline/ANDROID-export-bkops-and-query-flag-query-functions.patch
index 4ba8921..8a581e5 100644
--- a/android-mainline/ANDROID-export-bkops-and-query-flag-query-functions.patch
+++ b/android-mainline/ANDROID-export-bkops-and-query-flag-query-functions.patch
@@ -16,7 +16,7 @@
 diff --git a/drivers/scsi/ufs/ufshcd.c b/drivers/scsi/ufs/ufshcd.c
 --- a/drivers/scsi/ufs/ufshcd.c
 +++ b/drivers/scsi/ufs/ufshcd.c
-@@ -2883,7 +2883,7 @@ static inline void ufshcd_init_query(struct ufs_hba *hba,
+@@ -2900,7 +2900,7 @@ static inline void ufshcd_init_query(struct ufs_hba *hba,
  	(*request)->upiu_req.selector = selector;
  }
  
@@ -25,7 +25,7 @@
  	enum query_opcode opcode, enum flag_idn idn, u8 index, bool *flag_res)
  {
  	int ret;
-@@ -2905,6 +2905,7 @@ static int ufshcd_query_flag_retry(struct ufs_hba *hba,
+@@ -2922,6 +2922,7 @@ static int ufshcd_query_flag_retry(struct ufs_hba *hba,
  			__func__, opcode, idn, ret, retries);
  	return ret;
  }
@@ -33,7 +33,7 @@
  
  /**
   * ufshcd_query_flag() - API function for sending flag query requests
-@@ -3052,7 +3053,7 @@ EXPORT_SYMBOL_GPL(ufshcd_query_attr);
+@@ -3069,7 +3070,7 @@ EXPORT_SYMBOL_GPL(ufshcd_query_attr);
   *
   * Returns 0 for success, non-zero in case of failure
  */
@@ -42,7 +42,7 @@
  	enum query_opcode opcode, enum attr_idn idn, u8 index, u8 selector,
  	u32 *attr_val)
  {
-@@ -3075,6 +3076,7 @@ static int ufshcd_query_attr_retry(struct ufs_hba *hba,
+@@ -3092,6 +3093,7 @@ static int ufshcd_query_attr_retry(struct ufs_hba *hba,
  			__func__, idn, ret, QUERY_REQ_RETRIES);
  	return ret;
  }
@@ -50,7 +50,7 @@
  
  static int __ufshcd_query_descriptor(struct ufs_hba *hba,
  			enum query_opcode opcode, enum desc_idn idn, u8 index,
-@@ -3287,6 +3289,7 @@ int ufshcd_read_desc_param(struct ufs_hba *hba,
+@@ -3304,6 +3306,7 @@ int ufshcd_read_desc_param(struct ufs_hba *hba,
  		kfree(desc_buf);
  	return ret;
  }
@@ -58,7 +58,7 @@
  
  /**
   * struct uc_string_id - unicode string
-@@ -5290,7 +5293,7 @@ static inline int ufshcd_get_bkops_status(struct ufs_hba *hba, u32 *status)
+@@ -5307,7 +5310,7 @@ static inline int ufshcd_get_bkops_status(struct ufs_hba *hba, u32 *status)
   * to know whether auto bkops is enabled or disabled after this function
   * returns control to it.
   */
@@ -67,7 +67,7 @@
  			     enum bkops_status status)
  {
  	int err;
-@@ -5315,6 +5318,7 @@ static int ufshcd_bkops_ctrl(struct ufs_hba *hba,
+@@ -5332,6 +5335,7 @@ static int ufshcd_bkops_ctrl(struct ufs_hba *hba,
  out:
  	return err;
  }
diff --git a/android-mainline/ANDROID-mm-Create-vendor-hooks-to-control-ZONE_MOVABLE-allocations.patch b/android-mainline/ANDROID-mm-Create-vendor-hooks-to-control-ZONE_MOVABLE-allocations.patch
index e00dd1f..6fb70b0 100644
--- a/android-mainline/ANDROID-mm-Create-vendor-hooks-to-control-ZONE_MOVABLE-allocations.patch
+++ b/android-mainline/ANDROID-mm-Create-vendor-hooks-to-control-ZONE_MOVABLE-allocations.patch
@@ -136,7 +136,7 @@
  
  #include <trace/events/kmem.h>
  
-@@ -3304,8 +3305,10 @@ vm_fault_t do_swap_page(struct vm_fault *vmf)
+@@ -3306,8 +3307,10 @@ vm_fault_t do_swap_page(struct vm_fault *vmf)
  		if (data_race(si->flags & SWP_SYNCHRONOUS_IO) &&
  		    __swap_count(entry) == 1) {
  			/* skip swapcache */
diff --git a/android-mainline/ANDROID-mm-Throttle-rss_stat-tracepoint.patch b/android-mainline/ANDROID-mm-Throttle-rss_stat-tracepoint.patch
index a859aab..d8ee297 100644
--- a/android-mainline/ANDROID-mm-Throttle-rss_stat-tracepoint.patch
+++ b/android-mainline/ANDROID-mm-Throttle-rss_stat-tracepoint.patch
@@ -22,7 +22,7 @@
 diff --git a/include/linux/mm.h b/include/linux/mm.h
 --- a/include/linux/mm.h
 +++ b/include/linux/mm.h
-@@ -1879,27 +1879,28 @@ static inline unsigned long get_mm_counter(struct mm_struct *mm, int member)
+@@ -1886,27 +1886,28 @@ static inline unsigned long get_mm_counter(struct mm_struct *mm, int member)
  	return (unsigned long)val;
  }
  
diff --git a/android-mainline/ANDROID-mm-add-a-field-to-store-names-for-private-anonymous-memory.patch b/android-mainline/ANDROID-mm-add-a-field-to-store-names-for-private-anonymous-memory.patch
index 92e3382..9d85b93 100644
--- a/android-mainline/ANDROID-mm-add-a-field-to-store-names-for-private-anonymous-memory.patch
+++ b/android-mainline/ANDROID-mm-add-a-field-to-store-names-for-private-anonymous-memory.patch
@@ -224,7 +224,7 @@
 diff --git a/include/linux/mm.h b/include/linux/mm.h
 --- a/include/linux/mm.h
 +++ b/include/linux/mm.h
-@@ -2508,7 +2508,7 @@ static inline int vma_adjust(struct vm_area_struct *vma, unsigned long start,
+@@ -2516,7 +2516,7 @@ static inline int vma_adjust(struct vm_area_struct *vma, unsigned long start,
  extern struct vm_area_struct *vma_merge(struct mm_struct *,
  	struct vm_area_struct *prev, unsigned long addr, unsigned long end,
  	unsigned long vm_flags, struct anon_vma *, struct file *, pgoff_t,
diff --git a/android-mainline/ANDROID-scsi-ufs-Allow-prepare_command-to-return-error-code.patch b/android-mainline/ANDROID-scsi-ufs-Allow-prepare_command-to-return-error-code.patch
index 4ae6198..a52d9f0 100644
--- a/android-mainline/ANDROID-scsi-ufs-Allow-prepare_command-to-return-error-code.patch
+++ b/android-mainline/ANDROID-scsi-ufs-Allow-prepare_command-to-return-error-code.patch
@@ -20,7 +20,7 @@
 diff --git a/drivers/scsi/ufs/ufshcd.c b/drivers/scsi/ufs/ufshcd.c
 --- a/drivers/scsi/ufs/ufshcd.c
 +++ b/drivers/scsi/ufs/ufshcd.c
-@@ -2595,7 +2595,12 @@ static int ufshcd_queuecommand(struct Scsi_Host *host, struct scsi_cmnd *cmd)
+@@ -2612,7 +2612,12 @@ static int ufshcd_queuecommand(struct Scsi_Host *host, struct scsi_cmnd *cmd)
  	lrbp->lun = ufshcd_scsi_to_upiu_lun(cmd->device->lun);
  	lrbp->intr_cmd = !ufshcd_is_intr_aggr_allowed(hba) ? true : false;
  
@@ -46,7 +46,7 @@
  				struct request *rq, struct ufshcd_lrb *lrbp);
  	int     (*update_sysfs)(struct ufs_hba *hba);
  	void	(*send_command)(struct ufs_hba *hba, struct ufshcd_lrb *lrbp);
-@@ -1291,11 +1291,12 @@ static inline int ufshcd_vops_fill_prdt(struct ufs_hba *hba,
+@@ -1287,11 +1287,12 @@ static inline int ufshcd_vops_fill_prdt(struct ufs_hba *hba,
  	return 0;
  }
  
diff --git a/android-mainline/ANDROID-scsi-ufs-add-UFSHCD_QUIRK_KEYS_IN_PRDT.patch b/android-mainline/ANDROID-scsi-ufs-add-UFSHCD_QUIRK_KEYS_IN_PRDT.patch
index 67445a9..22ce25c 100644
--- a/android-mainline/ANDROID-scsi-ufs-add-UFSHCD_QUIRK_KEYS_IN_PRDT.patch
+++ b/android-mainline/ANDROID-scsi-ufs-add-UFSHCD_QUIRK_KEYS_IN_PRDT.patch
@@ -55,7 +55,7 @@
 diff --git a/drivers/scsi/ufs/ufshcd.c b/drivers/scsi/ufs/ufshcd.c
 --- a/drivers/scsi/ufs/ufshcd.c
 +++ b/drivers/scsi/ufs/ufshcd.c
-@@ -5043,6 +5043,7 @@ static void __ufshcd_transfer_req_compl(struct ufs_hba *hba,
+@@ -5060,6 +5060,7 @@ static void __ufshcd_transfer_req_compl(struct ufs_hba *hba,
  			result = ufshcd_transfer_rsp_status(hba, lrbp);
  			scsi_dma_unmap(cmd);
  			cmd->result = result;
diff --git a/android-mainline/ANDROID-scsi-ufs-add-a-hook-to-add-sysfs-entries.patch b/android-mainline/ANDROID-scsi-ufs-add-a-hook-to-add-sysfs-entries.patch
index 0ec02da..7ec0792 100644
--- a/android-mainline/ANDROID-scsi-ufs-add-a-hook-to-add-sysfs-entries.patch
+++ b/android-mainline/ANDROID-scsi-ufs-add-a-hook-to-add-sysfs-entries.patch
@@ -64,7 +64,7 @@
 diff --git a/drivers/scsi/ufs/ufshcd.c b/drivers/scsi/ufs/ufshcd.c
 --- a/drivers/scsi/ufs/ufshcd.c
 +++ b/drivers/scsi/ufs/ufshcd.c
-@@ -9407,7 +9407,7 @@ int ufshcd_init(struct ufs_hba *hba, void __iomem *mmio_base, unsigned int irq)
+@@ -9424,7 +9424,7 @@ int ufshcd_init(struct ufs_hba *hba, void __iomem *mmio_base, unsigned int irq)
  	ufshcd_set_ufs_dev_active(hba);
  
  	async_schedule(ufshcd_async_scan, hba);
@@ -92,7 +92,7 @@
  };
  
  /* clock gating state  */
-@@ -1292,6 +1294,13 @@ static inline void ufshcd_vops_prepare_command(struct ufs_hba *hba,
+@@ -1288,6 +1290,13 @@ static inline void ufshcd_vops_prepare_command(struct ufs_hba *hba,
  		hba->vops->prepare_command(hba, rq, lrbp);
  }
  
diff --git a/android-mainline/ANDROID-scsi-ufs-add-a-hook-to-prepare-command.patch b/android-mainline/ANDROID-scsi-ufs-add-a-hook-to-prepare-command.patch
index bf1514a..23b697d 100644
--- a/android-mainline/ANDROID-scsi-ufs-add-a-hook-to-prepare-command.patch
+++ b/android-mainline/ANDROID-scsi-ufs-add-a-hook-to-prepare-command.patch
@@ -20,7 +20,7 @@
 diff --git a/drivers/scsi/ufs/ufshcd.c b/drivers/scsi/ufs/ufshcd.c
 --- a/drivers/scsi/ufs/ufshcd.c
 +++ b/drivers/scsi/ufs/ufshcd.c
-@@ -2594,6 +2594,8 @@ static int ufshcd_queuecommand(struct Scsi_Host *host, struct scsi_cmnd *cmd)
+@@ -2611,6 +2611,8 @@ static int ufshcd_queuecommand(struct Scsi_Host *host, struct scsi_cmnd *cmd)
  	lrbp->lun = ufshcd_scsi_to_upiu_lun(cmd->device->lun);
  	lrbp->intr_cmd = !ufshcd_is_intr_aggr_allowed(hba) ? true : false;
  
@@ -49,7 +49,7 @@
  };
  
  /* clock gating state  */
-@@ -1282,6 +1285,13 @@ static inline int ufshcd_vops_fill_prdt(struct ufs_hba *hba,
+@@ -1278,6 +1281,13 @@ static inline int ufshcd_vops_fill_prdt(struct ufs_hba *hba,
  	return 0;
  }
  
diff --git a/android-mainline/ANDROID-scsi-ufs-add-fill_prdt-variant-op.patch b/android-mainline/ANDROID-scsi-ufs-add-fill_prdt-variant-op.patch
index b49e7d2..7dfede1 100644
--- a/android-mainline/ANDROID-scsi-ufs-add-fill_prdt-variant-op.patch
+++ b/android-mainline/ANDROID-scsi-ufs-add-fill_prdt-variant-op.patch
@@ -20,7 +20,7 @@
 diff --git a/drivers/scsi/ufs/ufshcd.c b/drivers/scsi/ufs/ufshcd.c
 --- a/drivers/scsi/ufs/ufshcd.c
 +++ b/drivers/scsi/ufs/ufshcd.c
-@@ -2265,7 +2265,7 @@ static int ufshcd_map_sg(struct ufs_hba *hba, struct ufshcd_lrb *lrbp)
+@@ -2282,7 +2282,7 @@ static int ufshcd_map_sg(struct ufs_hba *hba, struct ufshcd_lrb *lrbp)
  		lrbp->utr_descriptor_ptr->prd_table_length = 0;
  	}
  
@@ -50,7 +50,7 @@
  };
  
  /* clock gating state  */
-@@ -1255,6 +1259,16 @@ static inline void ufshcd_vops_config_scaling_param(struct ufs_hba *hba,
+@@ -1251,6 +1255,16 @@ static inline void ufshcd_vops_config_scaling_param(struct ufs_hba *hba,
  		hba->vops->config_scaling_param(hba, profile, data);
  }
  
diff --git a/android-mainline/ANDROID-scsi-ufs-add-hooks-to-monitor-stats-of-UFS-traffic.patch b/android-mainline/ANDROID-scsi-ufs-add-hooks-to-monitor-stats-of-UFS-traffic.patch
index fda69c5..a795c92 100644
--- a/android-mainline/ANDROID-scsi-ufs-add-hooks-to-monitor-stats-of-UFS-traffic.patch
+++ b/android-mainline/ANDROID-scsi-ufs-add-hooks-to-monitor-stats-of-UFS-traffic.patch
@@ -16,7 +16,7 @@
 diff --git a/drivers/scsi/ufs/ufshcd.c b/drivers/scsi/ufs/ufshcd.c
 --- a/drivers/scsi/ufs/ufshcd.c
 +++ b/drivers/scsi/ufs/ufshcd.c
-@@ -1983,6 +1983,7 @@ void ufshcd_send_command(struct ufs_hba *hba, unsigned int task_tag)
+@@ -2000,6 +2000,7 @@ void ufshcd_send_command(struct ufs_hba *hba, unsigned int task_tag)
  	lrbp->issue_time_stamp = ktime_get();
  	lrbp->compl_time_stamp = ktime_set(0, 0);
  	ufshcd_vops_setup_xfer_req(hba, task_tag, (lrbp->cmd ? true : false));
@@ -24,7 +24,7 @@
  	ufshcd_add_command_trace(hba, task_tag, "send");
  	ufshcd_clk_scaling_start_busy(hba);
  	__set_bit(task_tag, &hba->outstanding_reqs);
-@@ -5044,6 +5045,7 @@ static void __ufshcd_transfer_req_compl(struct ufs_hba *hba,
+@@ -5061,6 +5062,7 @@ static void __ufshcd_transfer_req_compl(struct ufs_hba *hba,
  		lrbp->compl_time_stamp = ktime_get();
  		cmd = lrbp->cmd;
  		if (cmd) {
@@ -53,7 +53,7 @@
  };
  
  /* clock gating state  */
-@@ -1301,6 +1305,20 @@ static inline int ufshcd_vops_update_sysfs(struct ufs_hba *hba)
+@@ -1297,6 +1301,20 @@ static inline int ufshcd_vops_update_sysfs(struct ufs_hba *hba)
  	return 0;
  }
  
diff --git a/android-mainline/ANDROID-scsi-ufs-allow-ufs-variants-to-override-sg-entry-size.patch b/android-mainline/ANDROID-scsi-ufs-allow-ufs-variants-to-override-sg-entry-size.patch
index 6c604d4..5ee70c4 100644
--- a/android-mainline/ANDROID-scsi-ufs-allow-ufs-variants-to-override-sg-entry-size.patch
+++ b/android-mainline/ANDROID-scsi-ufs-allow-ufs-variants-to-override-sg-entry-size.patch
@@ -41,7 +41,7 @@
  	}
  }
  
-@@ -2229,7 +2229,7 @@ int ufshcd_send_uic_cmd(struct ufs_hba *hba, struct uic_command *uic_cmd)
+@@ -2246,7 +2246,7 @@ int ufshcd_send_uic_cmd(struct ufs_hba *hba, struct uic_command *uic_cmd)
   */
  static int ufshcd_map_sg(struct ufs_hba *hba, struct ufshcd_lrb *lrbp)
  {
@@ -50,7 +50,7 @@
  	struct scatterlist *sg;
  	struct scsi_cmnd *cmd;
  	int sg_segments;
-@@ -2244,22 +2244,22 @@ static int ufshcd_map_sg(struct ufs_hba *hba, struct ufshcd_lrb *lrbp)
+@@ -2261,22 +2261,22 @@ static int ufshcd_map_sg(struct ufs_hba *hba, struct ufshcd_lrb *lrbp)
  
  		if (hba->quirks & UFSHCD_QUIRK_PRDT_BYTE_GRAN)
  			lrbp->utr_descriptor_ptr->prd_table_length =
@@ -80,7 +80,7 @@
  		}
  	} else {
  		lrbp->utr_descriptor_ptr->prd_table_length = 0;
-@@ -2518,10 +2518,11 @@ static inline u16 ufshcd_upiu_wlun_to_scsi_wlun(u8 upiu_wlun_id)
+@@ -2535,10 +2535,11 @@ static inline u16 ufshcd_upiu_wlun_to_scsi_wlun(u8 upiu_wlun_id)
  
  static void ufshcd_init_lrb(struct ufs_hba *hba, struct ufshcd_lrb *lrb, int i)
  {
@@ -94,7 +94,7 @@
  	u16 response_offset = offsetof(struct utp_transfer_cmd_desc,
  				       response_upiu);
  	u16 prdt_offset = offsetof(struct utp_transfer_cmd_desc, prd_table);
-@@ -2529,11 +2530,11 @@ static void ufshcd_init_lrb(struct ufs_hba *hba, struct ufshcd_lrb *lrb, int i)
+@@ -2546,11 +2547,11 @@ static void ufshcd_init_lrb(struct ufs_hba *hba, struct ufshcd_lrb *lrb, int i)
  	lrb->utr_descriptor_ptr = utrdlp + i;
  	lrb->utrd_dma_addr = hba->utrdl_dma_addr +
  		i * sizeof(struct utp_transfer_req_desc);
@@ -109,7 +109,7 @@
  	lrb->ucd_prdt_dma_addr = cmd_desc_element_addr + prdt_offset;
  }
  
-@@ -3459,7 +3460,7 @@ static int ufshcd_memory_alloc(struct ufs_hba *hba)
+@@ -3476,7 +3477,7 @@ static int ufshcd_memory_alloc(struct ufs_hba *hba)
  	size_t utmrdl_size, utrdl_size, ucdl_size;
  
  	/* Allocate memory for UTP command descriptors */
@@ -118,7 +118,7 @@
  	hba->ucdl_base_addr = dmam_alloc_coherent(hba->dev,
  						  ucdl_size,
  						  &hba->ucdl_dma_addr,
-@@ -3553,7 +3554,7 @@ static void ufshcd_host_memory_configure(struct ufs_hba *hba)
+@@ -3570,7 +3571,7 @@ static void ufshcd_host_memory_configure(struct ufs_hba *hba)
  	prdt_offset =
  		offsetof(struct utp_transfer_cmd_desc, prd_table);
  
@@ -127,7 +127,7 @@
  	cmd_desc_dma_addr = hba->ucdl_dma_addr;
  
  	for (i = 0; i < hba->nutrs; i++) {
-@@ -9181,6 +9182,7 @@ int ufshcd_alloc_host(struct device *dev, struct ufs_hba **hba_handle)
+@@ -9198,6 +9199,7 @@ int ufshcd_alloc_host(struct device *dev, struct ufs_hba **hba_handle)
  	hba->dev = dev;
  	*hba_handle = hba;
  	hba->dev_ref_clk_freq = REF_CLK_FREQ_INVAL;
diff --git a/android-mainline/ANDROID-workqueue-add-vendor-hook-for-wq-lockup-information.patch b/android-mainline/ANDROID-workqueue-add-vendor-hook-for-wq-lockup-information.patch
index 491c408..e4147bb 100644
--- a/android-mainline/ANDROID-workqueue-add-vendor-hook-for-wq-lockup-information.patch
+++ b/android-mainline/ANDROID-workqueue-add-vendor-hook-for-wq-lockup-information.patch
@@ -80,7 +80,7 @@
  enum {
  	/*
  	 * worker_pool flags
-@@ -5799,6 +5803,7 @@ static void wq_watchdog_timer_fn(struct timer_list *unused)
+@@ -5806,6 +5810,7 @@ static void wq_watchdog_timer_fn(struct timer_list *unused)
  			pr_cont_pool_info(pool);
  			pr_cont(" stuck for %us!\n",
  				jiffies_to_msecs(jiffies - pool_ts) / 1000);
diff --git a/android-mainline/DROP-ME-minor-out-of-tree-difference-after-merging-scsi-misc.patch b/android-mainline/DROP-ME-minor-out-of-tree-difference-after-merging-scsi-misc.patch
deleted file mode 100644
index 611036e..0000000
--- a/android-mainline/DROP-ME-minor-out-of-tree-difference-after-merging-scsi-misc.patch
+++ /dev/null
@@ -1,23 +0,0 @@
-From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
-From: Matthias Maennich <maennich@google.com>
-Date: Thu, 7 Jan 2021 23:59:14 +0000
-Subject: DROP ME: minor out of tree difference after merging scsi-misc
-
-Signed-off-by: Matthias Maennich <maennich@google.com>
-Change-Id: I96e3996a1581c17020e3ff6df96bae65c300d132
----
- drivers/scsi/ufs/ufshcd.c | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
-
-diff --git a/drivers/scsi/ufs/ufshcd.c b/drivers/scsi/ufs/ufshcd.c
---- a/drivers/scsi/ufs/ufshcd.c
-+++ b/drivers/scsi/ufs/ufshcd.c
-@@ -8455,7 +8455,7 @@ static int ufshcd_set_dev_pwr_mode(struct ufs_hba *hba,
- 
- 	if (!ret)
- 		hba->curr_dev_pwr_mode = pwr_mode;
--out:
-+
- 	scsi_device_put(sdp);
- 	hba->host->eh_noresume = 0;
- 	return ret;
diff --git a/android-mainline/FROMGIT-scsi-ufs-Fix-livelock-of-ufshcd_clear_ua_wluns.patch b/android-mainline/FROMGIT-scsi-ufs-Fix-livelock-of-ufshcd_clear_ua_wluns.patch
index 3a49a4a..758b010 100644
--- a/android-mainline/FROMGIT-scsi-ufs-Fix-livelock-of-ufshcd_clear_ua_wluns.patch
+++ b/android-mainline/FROMGIT-scsi-ufs-Fix-livelock-of-ufshcd_clear_ua_wluns.patch
@@ -31,7 +31,7 @@
 diff --git a/drivers/scsi/ufs/ufshcd.c b/drivers/scsi/ufs/ufshcd.c
 --- a/drivers/scsi/ufs/ufshcd.c
 +++ b/drivers/scsi/ufs/ufshcd.c
-@@ -7702,6 +7702,8 @@ static int ufshcd_add_lus(struct ufs_hba *hba)
+@@ -7721,6 +7721,8 @@ static int ufshcd_add_lus(struct ufs_hba *hba)
  	if (ret)
  		goto out;
  
@@ -40,7 +40,7 @@
  	/* Initialize devfreq after UFS device is detected */
  	if (ufshcd_is_clkscaling_supported(hba)) {
  		memcpy(&hba->clk_scaling.saved_pwr_info.info,
-@@ -7903,8 +7905,6 @@ static void ufshcd_async_scan(void *data, async_cookie_t cookie)
+@@ -7922,8 +7924,6 @@ static void ufshcd_async_scan(void *data, async_cookie_t cookie)
  		pm_runtime_put_sync(hba->dev);
  		ufshcd_exit_clk_scaling(hba);
  		ufshcd_hba_exit(hba);
diff --git a/android-mainline/FROMLIST-scsi-ufs-Export-query-request-interfaces.patch b/android-mainline/FROMLIST-scsi-ufs-Export-query-request-interfaces.patch
index ea36958..8c42994 100644
--- a/android-mainline/FROMLIST-scsi-ufs-Export-query-request-interfaces.patch
+++ b/android-mainline/FROMLIST-scsi-ufs-Export-query-request-interfaces.patch
@@ -22,7 +22,7 @@
 diff --git a/drivers/scsi/ufs/ufshcd.c b/drivers/scsi/ufs/ufshcd.c
 --- a/drivers/scsi/ufs/ufshcd.c
 +++ b/drivers/scsi/ufs/ufshcd.c
-@@ -2973,6 +2973,7 @@ int ufshcd_query_flag(struct ufs_hba *hba, enum query_opcode opcode,
+@@ -2990,6 +2990,7 @@ int ufshcd_query_flag(struct ufs_hba *hba, enum query_opcode opcode,
  	ufshcd_release(hba);
  	return err;
  }
@@ -30,7 +30,7 @@
  
  /**
   * ufshcd_query_attr - API function for sending attribute requests
-@@ -3036,6 +3037,7 @@ int ufshcd_query_attr(struct ufs_hba *hba, enum query_opcode opcode,
+@@ -3053,6 +3054,7 @@ int ufshcd_query_attr(struct ufs_hba *hba, enum query_opcode opcode,
  	ufshcd_release(hba);
  	return err;
  }
@@ -38,7 +38,7 @@
  
  /**
   * ufshcd_query_attr_retry() - API function for sending query
-@@ -3168,6 +3170,7 @@ int ufshcd_query_descriptor_retry(struct ufs_hba *hba,
+@@ -3185,6 +3187,7 @@ int ufshcd_query_descriptor_retry(struct ufs_hba *hba,
  
  	return err;
  }
diff --git a/android-mainline/FROMLIST-scsi-ufs-WB-is-only-available-on-LUN-0-to-7.patch b/android-mainline/FROMLIST-scsi-ufs-WB-is-only-available-on-LUN-0-to-7.patch
index ad4dbef..eda89b1 100644
--- a/android-mainline/FROMLIST-scsi-ufs-WB-is-only-available-on-LUN-0-to-7.patch
+++ b/android-mainline/FROMLIST-scsi-ufs-WB-is-only-available-on-LUN-0-to-7.patch
@@ -77,7 +77,7 @@
 diff --git a/drivers/scsi/ufs/ufshcd.c b/drivers/scsi/ufs/ufshcd.c
 --- a/drivers/scsi/ufs/ufshcd.c
 +++ b/drivers/scsi/ufs/ufshcd.c
-@@ -3407,7 +3407,7 @@ static inline int ufshcd_read_unit_desc_param(struct ufs_hba *hba,
+@@ -3424,7 +3424,7 @@ static inline int ufshcd_read_unit_desc_param(struct ufs_hba *hba,
  	 * Unit descriptors are only available for general purpose LUs (LUN id
  	 * from 0 to 7) and RPMB Well known LU.
  	 */
diff --git a/android-mainline/FROMLIST-scsi-ufs-clear-uac-for-RPMB-after-ufshcd-resets.patch b/android-mainline/FROMLIST-scsi-ufs-clear-uac-for-RPMB-after-ufshcd-resets.patch
deleted file mode 100644
index b15792e..0000000
--- a/android-mainline/FROMLIST-scsi-ufs-clear-uac-for-RPMB-after-ufshcd-resets.patch
+++ /dev/null
@@ -1,53 +0,0 @@
-From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
-From: Randall Huang <huangrandall@google.com>
-Date: Tue, 24 Nov 2020 15:29:58 +0800
-Subject: FROMLIST: scsi: ufs: clear uac for RPMB after ufshcd resets
-
-If RPMB is not provisioned, we may see RPMB failure after UFS suspend/resume.
-Inject request_sense to clear uac in ufshcd reset flow.
-
-Link: https://lore.kernel.org/linux-scsi/20201201041402.3860525-1-jaegeuk@kernel.org/
-Signed-off-by: Randall Huang <huangrandall@google.com>
-Signed-off-by: Leo Liou <leoliou@google.com>
-Signed-off-by: Jaegeuk Kim <jaegeuk@google.com>
-Change-Id: Icf52bab05474f5180d79aa5419f2fc174b521e22
----
- drivers/scsi/ufs/ufshcd.c | 12 ++++--------
- 1 file changed, 4 insertions(+), 8 deletions(-)
-
-diff --git a/drivers/scsi/ufs/ufshcd.c b/drivers/scsi/ufs/ufshcd.c
---- a/drivers/scsi/ufs/ufshcd.c
-+++ b/drivers/scsi/ufs/ufshcd.c
-@@ -225,6 +225,7 @@ static int ufshcd_reset_and_restore(struct ufs_hba *hba);
- static int ufshcd_eh_host_reset_handler(struct scsi_cmnd *cmd);
- static int ufshcd_clear_tm_cmd(struct ufs_hba *hba, int tag);
- static void ufshcd_hba_exit(struct ufs_hba *hba);
-+static int ufshcd_clear_ua_wluns(struct ufs_hba *hba);
- static int ufshcd_probe_hba(struct ufs_hba *hba, bool async);
- static int ufshcd_setup_clocks(struct ufs_hba *hba, bool on);
- static int ufshcd_uic_hibern8_enter(struct ufs_hba *hba);
-@@ -6930,7 +6931,8 @@ static int ufshcd_host_reset_and_restore(struct ufs_hba *hba)
- 
- 	/* Establish the link again and restore the device */
- 	err = ufshcd_probe_hba(hba, false);
--
-+	if (!err)
-+		ufshcd_clear_ua_wluns(hba);
- out:
- 	if (err)
- 		dev_err(hba->dev, "%s: Host init failed %d\n", __func__, err);
-@@ -8414,13 +8416,7 @@ static int ufshcd_set_dev_pwr_mode(struct ufs_hba *hba,
- 	 * handling context.
- 	 */
- 	hba->host->eh_noresume = 1;
--	if (hba->wlun_dev_clr_ua) {
--		ret = ufshcd_send_request_sense(hba, sdp);
--		if (ret)
--			goto out;
--		/* Unit attention condition is cleared now */
--		hba->wlun_dev_clr_ua = false;
--	}
-+	ufshcd_clear_ua_wluns(hba);
- 
- 	cmd[4] = pwr_mode << 4;
- 
diff --git a/android-mainline/FROMLIST-scsi-ufs-export-hibern8-entry-and-exit.patch b/android-mainline/FROMLIST-scsi-ufs-export-hibern8-entry-and-exit.patch
index a7bf1a8..4db8eb2 100644
--- a/android-mainline/FROMLIST-scsi-ufs-export-hibern8-entry-and-exit.patch
+++ b/android-mainline/FROMLIST-scsi-ufs-export-hibern8-entry-and-exit.patch
@@ -27,7 +27,7 @@
  static inline void ufshcd_add_delay_before_dme_cmd(struct ufs_hba *hba);
  static int ufshcd_host_reset_and_restore(struct ufs_hba *hba);
  static void ufshcd_resume_clkscaling(struct ufs_hba *hba);
-@@ -3986,7 +3985,7 @@ int ufshcd_link_recovery(struct ufs_hba *hba)
+@@ -4003,7 +4002,7 @@ int ufshcd_link_recovery(struct ufs_hba *hba)
  }
  EXPORT_SYMBOL_GPL(ufshcd_link_recovery);
  
@@ -36,7 +36,7 @@
  {
  	int ret;
  	struct uic_command uic_cmd = {0};
-@@ -4008,6 +4007,7 @@ static int ufshcd_uic_hibern8_enter(struct ufs_hba *hba)
+@@ -4025,6 +4024,7 @@ static int ufshcd_uic_hibern8_enter(struct ufs_hba *hba)
  
  	return ret;
  }
@@ -47,7 +47,7 @@
 diff --git a/drivers/scsi/ufs/ufshcd.h b/drivers/scsi/ufs/ufshcd.h
 --- a/drivers/scsi/ufs/ufshcd.h
 +++ b/drivers/scsi/ufs/ufshcd.h
-@@ -1257,5 +1257,6 @@ static inline u8 ufshcd_scsi_to_upiu_lun(unsigned int scsi_lun)
+@@ -1253,5 +1253,6 @@ static inline u8 ufshcd_scsi_to_upiu_lun(unsigned int scsi_lun)
  
  int ufshcd_dump_regs(struct ufs_hba *hba, size_t offset, size_t len,
  		     const char *prefix);
diff --git a/android-mainline/series b/android-mainline/series
index c26f9e4..d709ebd 100644
--- a/android-mainline/series
+++ b/android-mainline/series
@@ -1,8 +1,8 @@
 #
 # android-mainline patches
 #
-# Applies onto upstream 5c8fe583cce5 Linux v5.11-rc1
-# Matches android-mainline 6a70670ac05c ("Merge v5.11-rc1 into android-mainline")
+# Applies onto upstream e71ba9452f0b Linux v5.11-rc2
+# Matches android-mainline 279177734bdc ("Merge v5.11-rc2 into android-mainline")
 #
 Revert-Merge-345b17acb1aa-Merge-tag-for-linus-5.11-rc1-of-git-git.kernel.org-pub-scm-linux-kernel-git-rw-uml-into-android-mainline.patch
 Revert-block-grant-IOPRIO_CLASS_RT-to-CAP_SYS_NICE.patch
@@ -26,7 +26,6 @@
 FROMLIST-fuse-Handle-asynchronous-read-and-write-in-passthrough.patch
 FROMLIST-fuse-Use-daemon-creds-in-passthrough-mode.patch
 FROMLIST-USB-gadget-f_fs-add-SuperSpeed-Plus-support.patch
-FROMLIST-scsi-ufs-clear-uac-for-RPMB-after-ufshcd-resets.patch
 FROMLIST-scsi-ufs-WB-is-only-available-on-LUN-0-to-7.patch
 FROMLIST-scripts-merge_config-add-strict-mode-to-fail-upon-any-redefinition.patch
 FROMLIST-KVM-SVM-Add-register-operand-to-vmsave-call-in-sev_es_vcpu_load.patch
@@ -744,4 +743,3 @@
 DROP-ME-minor-out-of-tree-difference.patch
 DROP-ME-obsolete-ION-documentation.patch
 DROP-ME-Out-of-tree-difference-caused-by-the-ION-deletion.patch
-DROP-ME-minor-out-of-tree-difference-after-merging-scsi-misc.patch
