summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorDenys Dmytriyenko <denys@ti.com>2014-02-14 16:36:45 -0500
committerDenys Dmytriyenko <denys@ti.com>2014-02-14 16:45:33 -0500
commitce2c6835ca8724615a3185b85e9ba7a7a59bb7b9 (patch)
tree27fcf01bd72b5131a97c6206baba04644182ebdc
parent9d9cee21c51b63937799f38450c6fec33809ddd7 (diff)
downloadmeta-ti-ce2c6835ca8724615a3185b85e9ba7a7a59bb7b9.tar.gz
linux-ti-staging: update with v2 of LCD resume fixes
Signed-off-by: Denys Dmytriyenko <denys@ti.com>
-rw-r--r--recipes-kernel/linux/linux-ti-staging/0001-ARM-OMAP2-am43xx-Use-omap4-prm-context-ops.patch42
-rw-r--r--recipes-kernel/linux/linux-ti-staging/0002-ARM-OMAP2-omap_hwmod-Add-context-ops-to-am43xx-soc_o.patch36
-rw-r--r--recipes-kernel/linux/linux-ti-staging/0002-ARM-OMAP2-omap_hwmod-Add-context-ops-to-am43xx-soc_ops.patch81
-rw-r--r--recipes-kernel/linux/linux-ti-staging/0003-ARM-OMAP2-am43xx-Add-context-offset-for-dss-hwmod.patch (renamed from recipes-kernel/linux/linux-ti-staging/0001-ARM-OMAP2-am43xx-Add-context-offset-for-dss-hwmod.patch)26
-rw-r--r--recipes-kernel/linux/linux-ti-staging/0004-ARM-OMAP2-omap_hwmod-Maintain-legacy-context-loss-count.patch65
-rw-r--r--recipes-kernel/linux/linux-ti-staging_3.12.bb14
6 files changed, 211 insertions, 53 deletions
diff --git a/recipes-kernel/linux/linux-ti-staging/0001-ARM-OMAP2-am43xx-Use-omap4-prm-context-ops.patch b/recipes-kernel/linux/linux-ti-staging/0001-ARM-OMAP2-am43xx-Use-omap4-prm-context-ops.patch
new file mode 100644
index 00000000..00dceaf7
--- /dev/null
+++ b/recipes-kernel/linux/linux-ti-staging/0001-ARM-OMAP2-am43xx-Use-omap4-prm-context-ops.patch
@@ -0,0 +1,42 @@
1Subject: [v2,1/3] ARM: OMAP2+: am43xx: Use omap4 prm context ops
2Date: Sat, 15 Feb 2014 02:07:33 -0000
3From: Dave Gerlach <d-gerlach@ti.com>
4
5Context loss counting relies on several prm function pointers that
6serve as a "mapping" into the context loss registers and actually
7allow reading and clearing of the registers. Use the same
8from omap4 for am43xx as the layout of the prcm is similar.
9
10Signed-off-by: Dave Gerlach <d-gerlach@ti.com>
11
12---
13arch/arm/mach-omap2/io.c | 1 +
14 arch/arm/mach-omap2/prm44xx.c | 3 ++-
15 2 files changed, 3 insertions(+), 1 deletion(-)
16
17diff --git a/arch/arm/mach-omap2/io.c b/arch/arm/mach-omap2/io.c
18index 295e3e6..3eb9ae5 100644
19--- a/arch/arm/mach-omap2/io.c
20+++ b/arch/arm/mach-omap2/io.c
21@@ -619,6 +619,7 @@ void __init am43xx_init_early(void)
22 omap_prm_base_init();
23 omap_cm_base_init();
24 omap3xxx_check_revision();
25+ omap44xx_prm_init();
26 am33xx_check_features();
27 am43xx_powerdomains_init();
28 am43xx_clockdomains_init();
29diff --git a/arch/arm/mach-omap2/prm44xx.c b/arch/arm/mach-omap2/prm44xx.c
30index 03a6034..2c97e53 100644
31--- a/arch/arm/mach-omap2/prm44xx.c
32+++ b/arch/arm/mach-omap2/prm44xx.c
33@@ -660,7 +660,8 @@ static struct prm_ll_data omap44xx_prm_ll_data = {
34
35 int __init omap44xx_prm_init(void)
36 {
37- if (!cpu_is_omap44xx() && !soc_is_omap54xx() && !soc_is_dra7xx())
38+ if (!soc_is_am43xx() && !cpu_is_omap44xx() &&
39+ !soc_is_omap54xx() && !soc_is_dra7xx())
40 return 0;
41
42 return prm_register(&omap44xx_prm_ll_data);
diff --git a/recipes-kernel/linux/linux-ti-staging/0002-ARM-OMAP2-omap_hwmod-Add-context-ops-to-am43xx-soc_o.patch b/recipes-kernel/linux/linux-ti-staging/0002-ARM-OMAP2-omap_hwmod-Add-context-ops-to-am43xx-soc_o.patch
deleted file mode 100644
index 02581421..00000000
--- a/recipes-kernel/linux/linux-ti-staging/0002-ARM-OMAP2-omap_hwmod-Add-context-ops-to-am43xx-soc_o.patch
+++ /dev/null
@@ -1,36 +0,0 @@
1From 8ec77cd15997749f51912e75bd47fad032cd3afe Mon Sep 17 00:00:00 2001
2From: Dave Gerlach <d-gerlach@ti.com>
3Date: Wed, 12 Feb 2014 16:05:30 -0600
4Subject: [PATCH 2/2] ARM: OMAP2+: omap_hwmod: Add context ops to am43xx
5 soc_ops
6
7AM43XX contains PRM_*_CONTEXT registers like OMAP4 did to track loss
8of context in modules so utilize the same soc_ops present for OMAP4.
9
10Certain drivers use the context loss count to determine if context was
11truly lost during a suspend operation to decide whether or not a
12context restore is truly necessary. Without this, some drivers may
13choose not to restore context when they have actually lost it and fail
14to properly resume.
15
16Signed-off-by: Dave Gerlach <d-gerlach@ti.com>
17---
18 arch/arm/mach-omap2/omap_hwmod.c | 2 ++
19 1 file changed, 2 insertions(+)
20
21diff --git a/arch/arm/mach-omap2/omap_hwmod.c b/arch/arm/mach-omap2/omap_hwmod.c
22index 1f766fd..c03c54d 100644
23--- a/arch/arm/mach-omap2/omap_hwmod.c
24+++ b/arch/arm/mach-omap2/omap_hwmod.c
25@@ -4296,6 +4296,8 @@ void __init omap_hwmod_init(void)
26 soc_ops.deassert_hardreset = _omap4_deassert_hardreset;
27 soc_ops.is_hardreset_asserted = _omap4_is_hardreset_asserted;
28 soc_ops.init_clkdm = _init_clkdm;
29+ soc_ops.update_context_lost = _omap4_update_context_lost;
30+ soc_ops.get_context_lost = _omap4_get_context_lost;
31 } else if (soc_is_am33xx()) {
32 soc_ops.enable_module = _am33xx_enable_module;
33 soc_ops.disable_module = _am33xx_disable_module;
34--
351.7.9.5
36
diff --git a/recipes-kernel/linux/linux-ti-staging/0002-ARM-OMAP2-omap_hwmod-Add-context-ops-to-am43xx-soc_ops.patch b/recipes-kernel/linux/linux-ti-staging/0002-ARM-OMAP2-omap_hwmod-Add-context-ops-to-am43xx-soc_ops.patch
new file mode 100644
index 00000000..246595fe
--- /dev/null
+++ b/recipes-kernel/linux/linux-ti-staging/0002-ARM-OMAP2-omap_hwmod-Add-context-ops-to-am43xx-soc_ops.patch
@@ -0,0 +1,81 @@
1Subject: [v2,2/3] ARM: OMAP2+: omap_hwmod: Add context ops to am43xx soc_ops
2Date: Sat, 15 Feb 2014 02:07:34 -0000
3From: Dave Gerlach <d-gerlach@ti.com>
4
5AM43XX contains PRM_*_CONTEXT registers like OMAP4 did to track loss
6of context in modules so utilize the same get_context_loss_count soc_op
7present for OMAP4 but define a custom update context loss function for
8am43xx. Because we do not define context_offs for each hwmod, introduce
9a new flag to indicate when we have so we only bother to update when
10we know that it is valid.
11
12Certain drivers use the context loss count to determine if context was
13truly lost during a suspend operation to decide whether or not a
14context restore is truly necessary. Without this, some drivers may
15choose not to restore context when they have actually lost it and fail
16to properly resume.
17
18Signed-off-by: Dave Gerlach <d-gerlach@ti.com>
19
20---
21arch/arm/mach-omap2/omap_hwmod.c | 27 +++++++++++++++++++++++++++
22 arch/arm/mach-omap2/omap_hwmod.h | 1 +
23 2 files changed, 28 insertions(+)
24
25diff --git a/arch/arm/mach-omap2/omap_hwmod.c b/arch/arm/mach-omap2/omap_hwmod.c
26index 1f766fd..ad98b7f 100644
27--- a/arch/arm/mach-omap2/omap_hwmod.c
28+++ b/arch/arm/mach-omap2/omap_hwmod.c
29@@ -2165,6 +2165,31 @@ static void _omap4_update_context_lost(struct omap_hwmod *oh)
30 }
31
32 /**
33+ * _am437x_update_context_lost - increment hwmod context loss counter if
34+ * hwmod context was lost, and clear hardware context loss reg
35+ * @oh: hwmod to check for context loss
36+ *
37+ * If the PRCM indicates that the hwmod @oh lost context, increment
38+ * our in-memory context loss counter, and clear the RM_*_CONTEXT
39+ * bits. No return value.
40+ */
41+static void _am437x_update_context_lost(struct omap_hwmod *oh)
42+{
43+ if (!(oh->prcm.omap4.flags & HWMOD_AM437X_HAS_CONTEXT_LOSS_BIT))
44+ return;
45+
46+ if (!prm_was_any_context_lost_old(oh->clkdm->pwrdm.ptr->prcm_partition,
47+ oh->clkdm->pwrdm.ptr->prcm_offs,
48+ oh->prcm.omap4.context_offs))
49+ return;
50+
51+ oh->prcm.omap4.context_lost_counter++;
52+ prm_clear_context_loss_flags_old(oh->clkdm->pwrdm.ptr->prcm_partition,
53+ oh->clkdm->pwrdm.ptr->prcm_offs,
54+ oh->prcm.omap4.context_offs);
55+}
56+
57+/**
58 * _omap4_get_context_lost - get context loss counter for a hwmod
59 * @oh: hwmod to get context loss counter for
60 *
61@@ -4296,6 +4321,8 @@ void __init omap_hwmod_init(void)
62 soc_ops.deassert_hardreset = _omap4_deassert_hardreset;
63 soc_ops.is_hardreset_asserted = _omap4_is_hardreset_asserted;
64 soc_ops.init_clkdm = _init_clkdm;
65+ soc_ops.update_context_lost = _am437x_update_context_lost;
66+ soc_ops.get_context_lost = _omap4_get_context_lost;
67 } else if (soc_is_am33xx()) {
68 soc_ops.enable_module = _am33xx_enable_module;
69 soc_ops.disable_module = _am33xx_disable_module;
70diff --git a/arch/arm/mach-omap2/omap_hwmod.h b/arch/arm/mach-omap2/omap_hwmod.h
71index f16afc6..dad6b2d 100644
72--- a/arch/arm/mach-omap2/omap_hwmod.h
73+++ b/arch/arm/mach-omap2/omap_hwmod.h
74@@ -450,6 +450,7 @@ struct omap_hwmod_omap2_prcm {
75 * flag bit should be set in those cases
76 */
77 #define HWMOD_OMAP4_NO_CONTEXT_LOSS_BIT (1 << 0)
78+#define HWMOD_AM437X_HAS_CONTEXT_LOSS_BIT (1 << 1)
79
80 /**
81 * struct omap_hwmod_omap4_prcm - OMAP4-specific PRCM data
diff --git a/recipes-kernel/linux/linux-ti-staging/0001-ARM-OMAP2-am43xx-Add-context-offset-for-dss-hwmod.patch b/recipes-kernel/linux/linux-ti-staging/0003-ARM-OMAP2-am43xx-Add-context-offset-for-dss-hwmod.patch
index 52594a1a..5dc37259 100644
--- a/recipes-kernel/linux/linux-ti-staging/0001-ARM-OMAP2-am43xx-Add-context-offset-for-dss-hwmod.patch
+++ b/recipes-kernel/linux/linux-ti-staging/0003-ARM-OMAP2-am43xx-Add-context-offset-for-dss-hwmod.patch
@@ -1,32 +1,35 @@
1From 52502d8e52ecd82cd802ee6900942d041f9a79ef Mon Sep 17 00:00:00 2001 1Subject: [v2,3/3] ARM: OMAP2+: am43xx: Add context offset for dss hwmod
2Date: Sat, 15 Feb 2014 02:07:35 -0000
2From: Dave Gerlach <d-gerlach@ti.com> 3From: Dave Gerlach <d-gerlach@ti.com>
3Date: Wed, 12 Feb 2014 16:06:46 -0600
4Subject: [PATCH 1/2] ARM: OMAP2+: am43xx: Add context offset for dss hwmod
5 4
6Add context_offs to the DSS hwmod for am43xx as the driver uses the 5Add context_offs to the DSS hwmod for am43xx as the driver uses the
7context loss count to determine whether or not to restore context to the 6context loss count to determine whether or not to restore context to the
8module. Without this the display does not return after a suspend cycle. 7module. Also add prcm flag indicating this bit is valid. Without this the
8display does not return after a suspend cycle.
9 9
10Signed-off-by: Dave Gerlach <d-gerlach@ti.com> 10Signed-off-by: Dave Gerlach <d-gerlach@ti.com>
11
11--- 12---
12 arch/arm/mach-omap2/omap_hwmod_33xx_data.c | 1 + 13arch/arm/mach-omap2/omap_hwmod_33xx_data.c | 2 ++
13 arch/arm/mach-omap2/prcm43xx.h | 3 +++ 14 arch/arm/mach-omap2/prcm43xx.h | 3 +++
14 2 files changed, 4 insertions(+) 15 2 files changed, 5 insertions(+)
15 16
16diff --git a/arch/arm/mach-omap2/omap_hwmod_33xx_data.c b/arch/arm/mach-omap2/omap_hwmod_33xx_data.c 17diff --git a/arch/arm/mach-omap2/omap_hwmod_33xx_data.c b/arch/arm/mach-omap2/omap_hwmod_33xx_data.c
17index 978356d..4dcdcef 100644 18index 978356d..b298d6d 100644
18--- a/arch/arm/mach-omap2/omap_hwmod_33xx_data.c 19--- a/arch/arm/mach-omap2/omap_hwmod_33xx_data.c
19+++ b/arch/arm/mach-omap2/omap_hwmod_33xx_data.c 20+++ b/arch/arm/mach-omap2/omap_hwmod_33xx_data.c
20@@ -1921,6 +1921,7 @@ static struct omap_hwmod am43xx_dss_core_hwmod = { 21@@ -1921,7 +1921,9 @@ static struct omap_hwmod am43xx_dss_core_hwmod = {
21 .prcm = { 22 .prcm = {
22 .omap4 = { 23 .omap4 = {
23 .clkctrl_offs = AM43XX_CM_PER_DSS_CLKCTRL_OFFSET, 24 .clkctrl_offs = AM43XX_CM_PER_DSS_CLKCTRL_OFFSET,
24+ .context_offs = AM43XX_PRM_RM_PER_DSS_CONTEXT, 25+ .context_offs = AM43XX_PRM_RM_PER_DSS_CONTEXT,
25 .modulemode = MODULEMODE_SWCTRL, 26 .modulemode = MODULEMODE_SWCTRL,
27+ .flags = HWMOD_AM437X_HAS_CONTEXT_LOSS_BIT,
26 }, 28 },
27 }, 29 },
30 };
28diff --git a/arch/arm/mach-omap2/prcm43xx.h b/arch/arm/mach-omap2/prcm43xx.h 31diff --git a/arch/arm/mach-omap2/prcm43xx.h b/arch/arm/mach-omap2/prcm43xx.h
29index f5344ab..d804228 100644 32index f5344ab..55c41bb 100644
30--- a/arch/arm/mach-omap2/prcm43xx.h 33--- a/arch/arm/mach-omap2/prcm43xx.h
31+++ b/arch/arm/mach-omap2/prcm43xx.h 34+++ b/arch/arm/mach-omap2/prcm43xx.h
32@@ -25,6 +25,9 @@ 35@@ -25,6 +25,9 @@
@@ -34,11 +37,8 @@ index f5344ab..d804228 100644
34 #define AM43XX_PRM_DEVICE_INST 0x4000 37 #define AM43XX_PRM_DEVICE_INST 0x4000
35 38
36+/* PRM.PRM_PER offsets */ 39+/* PRM.PRM_PER offsets */
37+#define AM43XX_PRM_RM_PER_DSS_CONTEXT 0x1224 40+#define AM43XX_PRM_RM_PER_DSS_CONTEXT 0x0A24
38+ 41+
39 /* RM RSTCTRL offsets */ 42 /* RM RSTCTRL offsets */
40 #define AM43XX_RM_PER_RSTCTRL_OFFSET 0x0010 43 #define AM43XX_RM_PER_RSTCTRL_OFFSET 0x0010
41 #define AM43XX_RM_GFX_RSTCTRL_OFFSET 0x0010 44 #define AM43XX_RM_GFX_RSTCTRL_OFFSET 0x0010
42--
431.7.9.5
44
diff --git a/recipes-kernel/linux/linux-ti-staging/0004-ARM-OMAP2-omap_hwmod-Maintain-legacy-context-loss-count.patch b/recipes-kernel/linux/linux-ti-staging/0004-ARM-OMAP2-omap_hwmod-Maintain-legacy-context-loss-count.patch
new file mode 100644
index 00000000..65e89e9c
--- /dev/null
+++ b/recipes-kernel/linux/linux-ti-staging/0004-ARM-OMAP2-omap_hwmod-Maintain-legacy-context-loss-count.patch
@@ -0,0 +1,65 @@
1Subject: ARM: OMAP2+: omap_hwmod: Maintain legacy context loss count
2Date: Sat, 15 Feb 2014 03:14:40 -0000
3From: Dave Gerlach <d-gerlach@ti.com>
4
5In the case of am43xx, make sure we allow hwmods that don't use the hwmod
6context_offs for context loss counting to still use powerdomains to count
7context loss.
8
9Signed-off-by: Dave Gerlach <d-gerlach@ti.com>
10
11---
12arch/arm/mach-omap2/omap_hwmod.c | 17 ++++++++++++++++-
13 1 file changed, 16 insertions(+), 1 deletion(-)
14
15diff --git a/arch/arm/mach-omap2/omap_hwmod.c b/arch/arm/mach-omap2/omap_hwmod.c
16index ad98b7f..3fe29a2 100644
17--- a/arch/arm/mach-omap2/omap_hwmod.c
18+++ b/arch/arm/mach-omap2/omap_hwmod.c
19@@ -182,6 +182,9 @@
20 * device drivers. Until then, this should avoid huge blocks of cpu_is_*()
21 * conditionals in this code.
22 */
23+
24+#define SOC_HWMOD_CHECK_FOR_CONTEXT_FLAG (0x1 << 0)
25+
26 struct omap_hwmod_soc_ops {
27 void (*enable_module)(struct omap_hwmod *oh);
28 int (*disable_module)(struct omap_hwmod *oh);
29@@ -195,6 +198,7 @@ struct omap_hwmod_soc_ops {
30 int (*init_clkdm)(struct omap_hwmod *oh);
31 void (*update_context_lost)(struct omap_hwmod *oh);
32 int (*get_context_lost)(struct omap_hwmod *oh);
33+ u8 flags;
34 };
35
36 /* soc_ops: adapts the omap_hwmod code to the currently-booted SoC */
37@@ -4193,9 +4197,19 @@ int omap_hwmod_get_context_loss_count(struct omap_hwmod *oh)
38 struct powerdomain *pwrdm;
39 int ret = 0;
40
41- if (soc_ops.get_context_lost)
42+ if (soc_ops.get_context_lost) {
43+ /*
44+ * On SoCs like AM437x where we dont use hwmod to check context
45+ * loss on certain devices..
46+ */
47+ if ((soc_ops.flags & SOC_HWMOD_CHECK_FOR_CONTEXT_FLAG) &&
48+ !(oh->prcm.omap4.flags & HWMOD_AM437X_HAS_CONTEXT_LOSS_BIT))
49+ goto get_pwrdm_context_loss_count;
50+
51 return soc_ops.get_context_lost(oh);
52+ }
53
54+get_pwrdm_context_loss_count:
55 pwrdm = omap_hwmod_get_pwrdm(oh);
56 if (pwrdm)
57 ret = pwrdm_get_context_loss_count(pwrdm);
58@@ -4323,6 +4337,7 @@ void __init omap_hwmod_init(void)
59 soc_ops.init_clkdm = _init_clkdm;
60 soc_ops.update_context_lost = _am437x_update_context_lost;
61 soc_ops.get_context_lost = _omap4_get_context_lost;
62+ soc_ops.flags = SOC_HWMOD_CHECK_FOR_CONTEXT_FLAG;
63 } else if (soc_is_am33xx()) {
64 soc_ops.enable_module = _am33xx_enable_module;
65 soc_ops.disable_module = _am33xx_disable_module;
diff --git a/recipes-kernel/linux/linux-ti-staging_3.12.bb b/recipes-kernel/linux/linux-ti-staging_3.12.bb
index 2a9d089c..29d1a4fd 100644
--- a/recipes-kernel/linux/linux-ti-staging_3.12.bb
+++ b/recipes-kernel/linux/linux-ti-staging_3.12.bb
@@ -40,19 +40,25 @@ SRCREV = "c883f50c5bbf1bf5bfaeb550991caf5fc77a1c4d"
40PV = "3.12.10" 40PV = "3.12.10"
41 41
42# Append to the MACHINE_KERNEL_PR so that a new SRCREV will cause a rebuild 42# Append to the MACHINE_KERNEL_PR so that a new SRCREV will cause a rebuild
43MACHINE_KERNEL_PR_append = "c+gitr${SRCPV}" 43MACHINE_KERNEL_PR_append = "d+gitr${SRCPV}"
44PR = "${MACHINE_KERNEL_PR}" 44PR = "${MACHINE_KERNEL_PR}"
45 45
46SRC_URI = "git://git.ti.com/ti-linux-kernel/ti-linux-kernel.git;protocol=git;branch=${BRANCH} \ 46SRC_URI = "git://git.ti.com/ti-linux-kernel/ti-linux-kernel.git;protocol=git;branch=${BRANCH} \
47 file://defconfig \ 47 file://defconfig \
48 " 48 "
49
50# Performance fixes
49SRC_URI += "file://0001-ARM-config-omap-Sync-up-omap2plus-defconfig-with-sav.patch \ 51SRC_URI += "file://0001-ARM-config-omap-Sync-up-omap2plus-defconfig-with-sav.patch \
50 file://0002-ARM-config-omap-Make-advanced-networking-features-as.patch \ 52 file://0002-ARM-config-omap-Make-advanced-networking-features-as.patch \
51 file://0003-ARM-config-omap-Disable-extra-debug-options.patch \ 53 file://0003-ARM-config-omap-Disable-extra-debug-options.patch \
52 file://0005-ARM-OMAP-Kill-warning-in-CPUIDLE-code-with-CONFIG_SM.patch \ 54 file://0005-ARM-OMAP-Kill-warning-in-CPUIDLE-code-with-CONFIG_SM.patch \
53 file://0001-ARM-OMAP2-am43xx-Add-context-offset-for-dss-hwmod.patch \
54 file://0002-ARM-OMAP2-omap_hwmod-Add-context-ops-to-am43xx-soc_o.patch \
55 " 55 "
56
57SRC_URI_append_ti33x = "file://0004-Not-for-merge-ARM-config-omap-Disable-SMP-for-AM335x.patch" 56SRC_URI_append_ti33x = "file://0004-Not-for-merge-ARM-config-omap-Disable-SMP-for-AM335x.patch"
58SRC_URI_append_ti43x = "file://0004-Not-for-merge-ARM-config-omap-Disable-SMP-for-AM335x.patch" 57SRC_URI_append_ti43x = "file://0004-Not-for-merge-ARM-config-omap-Disable-SMP-for-AM335x.patch"
58
59# LCD resume fixes
60SRC_URI += "0001-ARM-OMAP2-am43xx-Use-omap4-prm-context-ops.patch \
61 0002-ARM-OMAP2-omap_hwmod-Add-context-ops-to-am43xx-soc_ops.patch \
62 0003-ARM-OMAP2-am43xx-Add-context-offset-for-dss-hwmod.patch \
63 0004-ARM-OMAP2-omap_hwmod-Maintain-legacy-context-loss-count.patch \
64 "