ec8573
From ee2efd8e1b4cae38cb8264ce1b8e110d937e8061 Mon Sep 17 00:00:00 2001
ec8573
From: Chad Dupuis <chad.dupuis@qlogic.com>
ec8573
Date: Thu, 13 Mar 2014 14:16:40 -0400
ec8573
Subject: [PATCH] [SCSI] qla2xxx: Fix build errors related to invalid print
ec8573
 fields on some architectures.
ec8573
ec8573
Fixes some build warnings such as:
ec8573
drivers/scsi/qla2xxx/qla_attr.c:162:6: warning: format '%lx' expects argument of
ec8573
type 'long unsigned int', but argument 6 has type 'size_t'"
ec8573
and
ec8573
drivers/scsi/qla2xxx/qla_init.c:5198:7: warning: format '%lx' expects argument
ec8573
of type 'long unsigned int', but argument 5 has type 'uint32_t' [-Wformat]
ec8573
ec8573
Signed-off-by: Chad Dupuis <chad.dupuis@qlogic.com>
ec8573
Signed-off-by: Saurav Kashyap <saurav.kashyap@qlogic.com>
ec8573
Signed-off-by: James Bottomley <JBottomley@Parallels.com>
ec8573
---
ec8573
 drivers/scsi/qla2xxx/qla_attr.c |  6 +++---
ec8573
 drivers/scsi/qla2xxx/qla_init.c | 12 ++++++------
ec8573
 2 files changed, 9 insertions(+), 9 deletions(-)
ec8573
ec8573
diff --git a/drivers/scsi/qla2xxx/qla_attr.c b/drivers/scsi/qla2xxx/qla_attr.c
ec8573
index deca736..ecadd80 100644
ec8573
--- a/drivers/scsi/qla2xxx/qla_attr.c
ec8573
+++ b/drivers/scsi/qla2xxx/qla_attr.c
ec8573
@@ -159,7 +159,7 @@ qla2x00_sysfs_read_fw_dump_template(struct file *filp, struct kobject *kobj,
ec8573
 		return 0;
ec8573
 
ec8573
 	ql_dbg(ql_dbg_user, vha, 0x70e2,
ec8573
-	    "chunk <- off=%llx count=%lx\n", off, count);
ec8573
+	    "chunk <- off=%llx count=%zx\n", off, count);
ec8573
 	return memory_read_from_buffer(buf, count, &off,
ec8573
 	    ha->fw_dump_template, ha->fw_dump_template_len);
ec8573
 }
ec8573
@@ -200,11 +200,11 @@ qla2x00_sysfs_write_fw_dump_template(struct file *filp, struct kobject *kobj,
ec8573
 	if (off + count > ha->fw_dump_template_len) {
ec8573
 		count = ha->fw_dump_template_len - off;
ec8573
 		ql_dbg(ql_dbg_user, vha, 0x70d3,
ec8573
-		    "chunk -> truncating to %lx bytes.\n", count);
ec8573
+		    "chunk -> truncating to %zx bytes.\n", count);
ec8573
 	}
ec8573
 
ec8573
 	ql_dbg(ql_dbg_user, vha, 0x70d4,
ec8573
-	    "chunk -> off=%llx count=%lx\n", off, count);
ec8573
+	    "chunk -> off=%llx count=%zx\n", off, count);
ec8573
 	memcpy(ha->fw_dump_template + off, buf, count);
ec8573
 
ec8573
 	if (off + count == ha->fw_dump_template_len) {
ec8573
diff --git a/drivers/scsi/qla2xxx/qla_init.c b/drivers/scsi/qla2xxx/qla_init.c
ec8573
index 8e36bb5..e6cc187 100644
ec8573
--- a/drivers/scsi/qla2xxx/qla_init.c
ec8573
+++ b/drivers/scsi/qla2xxx/qla_init.c
ec8573
@@ -5343,8 +5343,8 @@ qla24xx_load_risc_flash(scsi_qla_host_t *vha, uint32_t *srisc_addr,
ec8573
 	    "-> template size %x bytes\n", dlen);
ec8573
 	if (dlen > risc_size * sizeof(*dcode)) {
ec8573
 		ql_log(ql_log_warn, vha, 0x0167,
ec8573
-		    "Failed fwdump template exceeds array by %lx bytes\n",
ec8573
-		    dlen - risc_size * sizeof(*dcode));
ec8573
+		    "Failed fwdump template exceeds array by %x bytes\n",
ec8573
+		    (uint32_t)(dlen - risc_size * sizeof(*dcode)));
ec8573
 		goto default_template;
ec8573
 	}
ec8573
 	ha->fw_dump_template_len = dlen;
ec8573
@@ -5610,8 +5610,8 @@ qla24xx_load_risc_blob(scsi_qla_host_t *vha, uint32_t *srisc_addr)
ec8573
 	ha->fw_dump_template_len = 0;
ec8573
 
ec8573
 	ql_dbg(ql_dbg_init, vha, 0x171,
ec8573
-	    "Loading fwdump template from %lx\n",
ec8573
-	    (void *)fwcode - (void *)blob->fw->data);
ec8573
+	    "Loading fwdump template from %x\n",
ec8573
+	    (uint32_t)((void *)fwcode - (void *)blob->fw->data));
ec8573
 	risc_size = be32_to_cpu(fwcode[2]);
ec8573
 	ql_dbg(ql_dbg_init, vha, 0x172,
ec8573
 	    "-> array size %x dwords\n", risc_size);
ec8573
@@ -5645,8 +5645,8 @@ qla24xx_load_risc_blob(scsi_qla_host_t *vha, uint32_t *srisc_addr)
ec8573
 	    "-> template size %x bytes\n", dlen);
ec8573
 	if (dlen > risc_size * sizeof(*fwcode)) {
ec8573
 		ql_log(ql_log_warn, vha, 0x0177,
ec8573
-		    "Failed fwdump template exceeds array by %lx bytes\n",
ec8573
-		    dlen - risc_size * sizeof(*fwcode));
ec8573
+		    "Failed fwdump template exceeds array by %x bytes\n",
ec8573
+		    (uint32_t)(dlen - risc_size * sizeof(*fwcode)));
ec8573
 		goto default_template;
ec8573
 	}
ec8573
 	ha->fw_dump_template_len = dlen;
ec8573
-- 
ec8573
1.8.3.1
ec8573
ec8573
From 7a21a71e1c702b523676267fa09048f21918636f Mon Sep 17 00:00:00 2001
ec8573
From: Paul Bolle <pebolle@tiscali.nl>
ec8573
Date: Mon, 30 Jun 2014 16:32:29 +0200
ec8573
Subject: [PATCH] x86: Remove unused variable "polling"
ec8573
ec8573
Compile tested. "polling" is unused since commit f80c5b39b80a
ec8573
("sched/idle, x86: Switch from TS_POLLING to TIF_POLLING_NRFLAG").
ec8573
ec8573
Signed-off-by: Paul Bolle <pebolle@tiscali.nl>
ec8573
Signed-off-by: Peter Zijlstra <peterz@infradead.org>
ec8573
Cc: Jiri Kosina <jkosina@suse.cz>
ec8573
Link: http://lkml.kernel.org/r/1404138749.2978.6.camel@x41
ec8573
Signed-off-by: Ingo Molnar <mingo@kernel.org>
ec8573
---
ec8573
 arch/x86/kernel/apm_32.c | 1 -
ec8573
 1 file changed, 1 deletion(-)
ec8573
ec8573
diff --git a/arch/x86/kernel/apm_32.c b/arch/x86/kernel/apm_32.c
ec8573
index 8fdcec6..66d3b1f 100644
ec8573
--- a/arch/x86/kernel/apm_32.c
ec8573
+++ b/arch/x86/kernel/apm_32.c
ec8573
@@ -841,7 +841,6 @@ static int apm_do_idle(void)
ec8573
 	u32 eax;
ec8573
 	u8 ret = 0;
ec8573
 	int idled = 0;
ec8573
-	int polling;
ec8573
 	int err = 0;
ec8573
 
ec8573
 	if (!need_resched()) {
ec8573
-- 
ec8573
1.8.3.1
ec8573
ec8573
From f9cfccee5ef4d923e21394c852b7f75d9c5c4a61 Mon Sep 17 00:00:00 2001
ec8573
From: John Stultz <john.stultz@linaro.org>
ec8573
Date: Wed, 16 Jul 2014 21:03:56 +0000
ec8573
Subject: [PATCH] ktime: Change ktime_set() to take 64bit seconds value
ec8573
ec8573
In order to support dates past 2038 on 32bit systems, ktime_set()
ec8573
needs to handle 64bit second values.
ec8573
ec8573
[ tglx: Removed the BITS_PER_LONG check ]
ec8573
ec8573
Signed-off-by: John Stultz <john.stultz@linaro.org>
ec8573
Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
ec8573
Signed-off-by: John Stultz <john.stultz@linaro.org>
ec8573
---
ec8573
 include/linux/ktime.h | 7 +++----
ec8573
 1 file changed, 3 insertions(+), 4 deletions(-)
ec8573
ec8573
diff --git a/include/linux/ktime.h b/include/linux/ktime.h
ec8573
index 320f5da..5fa1494 100644
ec8573
--- a/include/linux/ktime.h
ec8573
+++ b/include/linux/ktime.h
ec8573
@@ -71,13 +71,12 @@ typedef union ktime ktime_t;		/* Kill this */
ec8573
  *
ec8573
  * Return the ktime_t representation of the value
ec8573
  */
ec8573
-static inline ktime_t ktime_set(const long secs, const unsigned long nsecs)
ec8573
+static inline ktime_t ktime_set(const s64 secs, const unsigned long nsecs)
ec8573
 {
ec8573
-#if (BITS_PER_LONG == 64)
ec8573
 	if (unlikely(secs >= KTIME_SEC_MAX))
ec8573
 		return (ktime_t){ .tv64 = KTIME_MAX };
ec8573
-#endif
ec8573
-	return (ktime_t) { .tv64 = (s64)secs * NSEC_PER_SEC + (s64)nsecs };
ec8573
+
ec8573
+	return (ktime_t) { .tv64 = secs * NSEC_PER_SEC + (s64)nsecs };
ec8573
 }
ec8573
 
ec8573
 /* Subtract two ktime_t variables. rem = lhs -rhs: */
ec8573
-- 
ec8573
1.8.3.1
ec8573
ec8573
From af80f3a91846c33852e97c18fd986d0db774d7f1 Mon Sep 17 00:00:00 2001
ec8573
From: Richard Cochran <richardcochran@gmail.com>
ec8573
Date: Sun, 29 Mar 2015 23:11:56 +0200
ec8573
Subject: [PATCH] ptp: bnx2x: convert to the 64 bit get/set time methods.
ec8573
ec8573
This driver's clock is implemented using a timecounter, and so with
ec8573
this patch the driver is ready for the year 2038.
ec8573
ec8573
Compile tested only.
ec8573
ec8573
Signed-off-by: Richard Cochran <richardcochran@gmail.com>
ec8573
Acked-by: Sony Chacko <sony.chacko@qlogic.com>
ec8573
Signed-off-by: David S. Miller <davem@davemloft.net>
ec8573
---
ec8573
 drivers/net/ethernet/broadcom/bnx2x/bnx2x_main.c | 4 ++--
ec8573
 1 file changed, 2 insertions(+), 2 deletions(-)
ec8573
ec8573
diff --git a/drivers/net/ethernet/broadcom/bnx2x/bnx2x_main.c b/drivers/net/ethernet/broadcom/bnx2x/bnx2x_main.c
ec8573
index dc20474..fb0ebc9 100644
ec8573
--- a/drivers/net/ethernet/broadcom/bnx2x/bnx2x_main.c
ec8573
+++ b/drivers/net/ethernet/broadcom/bnx2x/bnx2x_main.c
ec8573
@@ -13366,8 +13366,8 @@ static void bnx2x_register_phc(struct bnx2x *bp)
ec8573
 	bp->ptp_clock_info.pps = 0;
ec8573
 	bp->ptp_clock_info.adjfreq = bnx2x_ptp_adjfreq;
ec8573
 	bp->ptp_clock_info.adjtime = bnx2x_ptp_adjtime;
ec8573
-	bp->ptp_clock_info.gettime = bnx2x_ptp_gettime;
ec8573
-	bp->ptp_clock_info.settime = bnx2x_ptp_settime;
ec8573
+	bp->ptp_clock_info.gettime64 = bnx2x_ptp_gettime;
ec8573
+	bp->ptp_clock_info.settime64 = bnx2x_ptp_settime;
ec8573
 	bp->ptp_clock_info.enable = bnx2x_ptp_enable;
ec8573
 
ec8573
 	bp->ptp_clock = ptp_clock_register(&bp->ptp_clock_info, &bp->pdev->dev);
ec8573
-- 
ec8573
1.8.3.1
ec8573
ec8573
From 23e58ec4890fa12e6965fb79e4924a151c6072fd Mon Sep 17 00:00:00 2001
ec8573
From: Richard Cochran <richardcochran@gmail.com>
ec8573
Date: Sun, 29 Mar 2015 23:12:04 +0200
ec8573
Subject: [PATCH] ptp: ixgbe: convert to the 64 bit get/set time methods.
ec8573
ec8573
This driver's clock is implemented using a timecounter, and so with
ec8573
this patch the driver is ready for the year 2038.
ec8573
ec8573
Compile tested only.
ec8573
ec8573
Signed-off-by: Richard Cochran <richardcochran@gmail.com>
ec8573
Acked-by: Jeff Kirsher <jeffrey.t.kirsher@intel.com>
ec8573
Signed-off-by: David S. Miller <davem@davemloft.net>
ec8573
---
ec8573
 drivers/net/ethernet/intel/ixgbe/ixgbe_ptp.c | 8 ++++----
ec8573
 1 file changed, 4 insertions(+), 4 deletions(-)
ec8573
ec8573
diff --git a/drivers/net/ethernet/intel/ixgbe/ixgbe_ptp.c b/drivers/net/ethernet/intel/ixgbe/ixgbe_ptp.c
ec8573
index e70158c..e5ba040 100644
ec8573
--- a/drivers/net/ethernet/intel/ixgbe/ixgbe_ptp.c
ec8573
+++ b/drivers/net/ethernet/intel/ixgbe/ixgbe_ptp.c
ec8573
@@ -871,8 +871,8 @@ static int ixgbe_ptp_create_clock(struct ixgbe_adapter *adapter)
ec8573
 		adapter->ptp_caps.pps = 1;
ec8573
 		adapter->ptp_caps.adjfreq = ixgbe_ptp_adjfreq;
ec8573
 		adapter->ptp_caps.adjtime = ixgbe_ptp_adjtime;
ec8573
-		adapter->ptp_caps.gettime = ixgbe_ptp_gettime;
ec8573
-		adapter->ptp_caps.settime = ixgbe_ptp_settime;
ec8573
+		adapter->ptp_caps.gettime64 = ixgbe_ptp_gettime;
ec8573
+		adapter->ptp_caps.settime64 = ixgbe_ptp_settime;
ec8573
 		adapter->ptp_caps.enable = ixgbe_ptp_feature_enable;
ec8573
 		break;
ec8573
 	case ixgbe_mac_82599EB:
ec8573
@@ -887,8 +887,8 @@ static int ixgbe_ptp_create_clock(struct ixgbe_adapter *adapter)
ec8573
 		adapter->ptp_caps.pps = 0;
ec8573
 		adapter->ptp_caps.adjfreq = ixgbe_ptp_adjfreq;
ec8573
 		adapter->ptp_caps.adjtime = ixgbe_ptp_adjtime;
ec8573
-		adapter->ptp_caps.gettime = ixgbe_ptp_gettime;
ec8573
-		adapter->ptp_caps.settime = ixgbe_ptp_settime;
ec8573
+		adapter->ptp_caps.gettime64 = ixgbe_ptp_gettime;
ec8573
+		adapter->ptp_caps.settime64 = ixgbe_ptp_settime;
ec8573
 		adapter->ptp_caps.enable = ixgbe_ptp_feature_enable;
ec8573
 		break;
ec8573
 	default:
ec8573
-- 
ec8573
1.8.3.1
ec8573
ec8573
From 51c2e67006049959ad5f983caf0e00ccef973b55 Mon Sep 17 00:00:00 2001
ec8573
From: Florian Westphal <fw@strlen.de>
ec8573
Date: Wed, 17 Jun 2015 23:58:28 +0200
ec8573
Subject: [PATCH] netfilter: xtables: fix warnings on 32bit platforms
ec8573
ec8573
On 32bit archs gcc complains due to cast from void* to u64.
ec8573
Add intermediate casts to long to silence these warnings.
ec8573
ec8573
include/linux/netfilter/x_tables.h:376:10: warning: cast from pointer to integer of different size [-Wpointer-to-int-cast]
ec8573
include/linux/netfilter/x_tables.h:384:15: warning: cast to pointer from integer of different size [-Wint-to-pointer-cast]
ec8573
include/linux/netfilter/x_tables.h:391:23: warning: cast to pointer from integer of different size [-Wint-to-pointer-cast]
ec8573
include/linux/netfilter/x_tables.h:400:22: warning: cast to pointer from integer of different size [-Wint-to-pointer-cast]
ec8573
ec8573
Fixes: 71ae0dff02d756e ("netfilter: xtables: use percpu rule counters")
ec8573
Reported-by: kbuild test robot <fengguang.wu@intel.com>
ec8573
Signed-off-by: Florian Westphal <fw@strlen.de>
ec8573
Signed-off-by: Pablo Neira Ayuso <pablo@netfilter.org>
ec8573
---
ec8573
 include/linux/netfilter/x_tables.h | 8 ++++----
ec8573
 1 file changed, 4 insertions(+), 4 deletions(-)
ec8573
ec8573
diff --git a/include/linux/netfilter/x_tables.h b/include/linux/netfilter/x_tables.h
ec8573
index 88a9b35..1b6a065 100644
ec8573
--- a/include/linux/netfilter/x_tables.h
ec8573
+++ b/include/linux/netfilter/x_tables.h
ec8573
@@ -377,7 +377,7 @@ static inline u64 xt_percpu_counter_alloc(void)
ec8573
 		if (res == NULL)
ec8573
 			return (u64) -ENOMEM;
ec8573
 
ec8573
-		return (__force u64) res;
ec8573
+		return (u64) (__force unsigned long) res;
ec8573
 	}
ec8573
 
ec8573
 	return 0;
ec8573
@@ -385,14 +385,14 @@ static inline u64 xt_percpu_counter_alloc(void)
ec8573
 static inline void xt_percpu_counter_free(u64 pcnt)
ec8573
 {
ec8573
 	if (nr_cpu_ids > 1)
ec8573
-		free_percpu((void __percpu *) pcnt);
ec8573
+		free_percpu((void __percpu *) (unsigned long) pcnt);
ec8573
 }
ec8573
 
ec8573
 static inline struct xt_counters *
ec8573
 xt_get_this_cpu_counter(struct xt_counters *cnt)
ec8573
 {
ec8573
 	if (nr_cpu_ids > 1)
ec8573
-		return this_cpu_ptr((void __percpu *) cnt->pcnt);
ec8573
+		return this_cpu_ptr((void __percpu *) (unsigned long) cnt->pcnt);
ec8573
 
ec8573
 	return cnt;
ec8573
 }
ec8573
@@ -401,7 +401,7 @@ static inline struct xt_counters *
ec8573
 xt_get_per_cpu_counter(struct xt_counters *cnt, unsigned int cpu)
ec8573
 {
ec8573
 	if (nr_cpu_ids > 1)
ec8573
-		return per_cpu_ptr((void __percpu *) cnt->pcnt, cpu);
ec8573
+		return per_cpu_ptr((void __percpu *) (unsigned long) cnt->pcnt, cpu);
ec8573
 
ec8573
 	return cnt;
ec8573
 }
ec8573
-- 
ec8573
1.8.3.1
ec8573
ec8573
From 1c0e600bbb7566eba7f3e29d3797de32d211330e Mon Sep 17 00:00:00 2001
ec8573
From: Arnd Bergmann <arnd@arndb.de>
ec8573
Date: Wed, 7 Oct 2015 14:10:04 +0200
ec8573
Subject: [PATCH] RDMA/cxgb4: re-fix 32-bit build warning
ec8573
ec8573
Casting a pointer to __be64 produces a warning on 32-bit architectures:
ec8573
ec8573
drivers/infiniband/hw/cxgb4/mem.c:147:20: warning: cast from pointer to integer of different size [-Wpointer-to-int-cast]
ec8573
    req->wr.wr_lo = (__force __be64)&wr_wait;
ec8573
ec8573
This was fixed at least twice for this driver in different places,
ec8573
and accidentally reverted once more. This puts the correct version
ec8573
back in place.
ec8573
ec8573
Signed-off-by: Arnd Bergmann <arnd@arndb.de>
ec8573
Fixes: 6198dd8d7a6a7 ("iw_cxgb4: 32b platform fixes")
ec8573
Signed-off-by: Doug Ledford <dledford@redhat.com>
ec8573
---
ec8573
 drivers/infiniband/hw/cxgb4/mem.c | 2 +-
ec8573
 1 file changed, 1 insertion(+), 1 deletion(-)
ec8573
ec8573
diff --git a/drivers/infiniband/hw/cxgb4/mem.c b/drivers/infiniband/hw/cxgb4/mem.c
ec8573
index 30f0720..65b2474 100644
ec8573
--- a/drivers/infiniband/hw/cxgb4/mem.c
ec8573
+++ b/drivers/infiniband/hw/cxgb4/mem.c
ec8573
@@ -137,7 +137,7 @@ static int _c4iw_write_mem_inline(struct c4iw_rdev *rdev, u32 addr, u32 len,
ec8573
 		if (i == (num_wqe-1)) {
ec8573
 			req->wr.wr_hi = cpu_to_be32(FW_WR_OP_V(FW_ULPTX_WR) |
ec8573
 						    FW_WR_COMPL_F);
ec8573
-			req->wr.wr_lo = (__force __be64)&wr_wait;
ec8573
+			req->wr.wr_lo = (__force __be64)(unsigned long)&wr_wait;
ec8573
 		} else
ec8573
 			req->wr.wr_hi = cpu_to_be32(FW_WR_OP_V(FW_ULPTX_WR));
ec8573
 		req->wr.wr_mid = cpu_to_be32(
ec8573
-- 
ec8573
1.8.3.1
ec8573
ec8573
From 11eee7bee939b945f9daca56c2347c1d8d680a95 Mon Sep 17 00:00:00 2001
ec8573
From: Arnd Bergmann <arnd@arndb.de>
ec8573
Date: Wed, 7 Oct 2015 14:29:51 +0200
ec8573
Subject: [PATCH] IB/core: avoid 32-bit warning
ec8573
ec8573
The INIT_UDATA() macro requires a pointer or unsigned long argument for
ec8573
both input and output buffer, and all callers had a cast from when
ec8573
the code was merged until a recent restructuring, so now we get
ec8573
ec8573
core/uverbs_cmd.c: In function 'ib_uverbs_create_cq':
ec8573
core/uverbs_cmd.c:1481:66: warning: cast to pointer from integer of different size [-Wint-to-pointer-cast]
ec8573
ec8573
This makes the code behave as before by adding back the cast to
ec8573
unsigned long.
ec8573
ec8573
Signed-off-by: Arnd Bergmann <arnd@arndb.de>
ec8573
Fixes: 565197dd8fb1 ("IB/core: Extend ib_uverbs_create_cq")
ec8573
Reviewed-by: Yann Droneaud <ydroneaud@opteya.com>
ec8573
Signed-off-by: Doug Ledford <dledford@redhat.com>
ec8573
---
ec8573
 drivers/infiniband/core/uverbs_cmd.c | 2 +-
ec8573
 1 file changed, 1 insertion(+), 1 deletion(-)
ec8573
ec8573
diff --git a/drivers/infiniband/core/uverbs_cmd.c b/drivers/infiniband/core/uverbs_cmd.c
ec8573
index bbb02ff..30f3011 100644
ec8573
--- a/drivers/infiniband/core/uverbs_cmd.c
ec8573
+++ b/drivers/infiniband/core/uverbs_cmd.c
ec8573
@@ -1463,7 +1463,7 @@ ssize_t ib_uverbs_create_cq(struct ib_uverbs_file *file,
ec8573
 	if (copy_from_user(&cmd, buf, sizeof(cmd)))
ec8573
 		return -EFAULT;
ec8573
 
ec8573
-	INIT_UDATA(&ucore, buf, cmd.response, sizeof(cmd), sizeof(resp));
ec8573
+	INIT_UDATA(&ucore, buf, (unsigned long)cmd.response, sizeof(cmd), sizeof(resp));
ec8573
 
ec8573
 	INIT_UDATA(&uhw, buf + sizeof(cmd),
ec8573
 		   (unsigned long)cmd.response + sizeof(resp),
ec8573
-- 
ec8573
1.8.3.1