ipts-5.2: fix crash after some use

- ipts: fix crash caused by calling ipts_send_feedback() repeatedly
(v2-ipts-fix-crash-caused-by-calling-ipts_send_feedback-.patch from kitakar5525/ipts-fix-crash)
This commit is contained in:
kitakar5525 2019-09-10 21:55:39 +09:00
parent d8b26bd3b7
commit 03e4a8dff3

View file

@ -1,6 +1,6 @@
From 20a9d7520a725aebf3fb9fdedd91525041345378 Mon Sep 17 00:00:00 2001
From: Maximilian Luz <luzmaximilian@gmail.com>
Date: Fri, 26 Jul 2019 04:45:32 +0200
From d5f7538c2e18ef6e3d6290db4c3372e1509b9150 Mon Sep 17 00:00:00 2001
From: kitakar5525 <34676735+kitakar5525@users.noreply.github.com>
Date: Tue, 10 Sep 2019 21:54:42 +0900
Subject: [PATCH 05/12] ipts
---
@ -30,7 +30,7 @@ Subject: [PATCH 05/12] ipts
drivers/misc/ipts/ipts-dbgfs.c | 364 +++++++
drivers/misc/ipts/ipts-gfx.c | 185 ++++
drivers/misc/ipts/ipts-gfx.h | 24 +
drivers/misc/ipts/ipts-hid.c | 456 ++++++++
drivers/misc/ipts/ipts-hid.c | 504 +++++++++
drivers/misc/ipts/ipts-hid.h | 34 +
drivers/misc/ipts/ipts-kernel.c | 1050 +++++++++++++++++++
drivers/misc/ipts/ipts-kernel.h | 23 +
@ -46,7 +46,7 @@ Subject: [PATCH 05/12] ipts
drivers/misc/mei/hw-me-regs.h | 1 +
drivers/misc/mei/pci-me.c | 1 +
include/linux/intel_ipts_if.h | 76 ++
42 files changed, 5841 insertions(+), 26 deletions(-)
42 files changed, 5889 insertions(+), 26 deletions(-)
create mode 100644 drivers/gpu/drm/i915/intel_ipts.c
create mode 100644 drivers/gpu/drm/i915/intel_ipts.h
create mode 100644 drivers/misc/ipts/Kconfig
@ -71,7 +71,7 @@ Subject: [PATCH 05/12] ipts
create mode 100644 include/linux/intel_ipts_if.h
diff --git a/drivers/gpu/drm/i915/Makefile b/drivers/gpu/drm/i915/Makefile
index fbcb0904f4a8..1a273956b41c 100644
index fbcb0904f..1a273956b 100644
--- a/drivers/gpu/drm/i915/Makefile
+++ b/drivers/gpu/drm/i915/Makefile
@@ -170,6 +170,9 @@ i915-y += dvo_ch7017.o \
@ -85,7 +85,7 @@ index fbcb0904f4a8..1a273956b41c 100644
i915-$(CONFIG_DRM_I915_CAPTURE_ERROR) += i915_gpu_error.o
i915-$(CONFIG_DRM_I915_SELFTEST) += \
diff --git a/drivers/gpu/drm/i915/i915_debugfs.c b/drivers/gpu/drm/i915/i915_debugfs.c
index 5823ffb17821..2ffad9712041 100644
index 5823ffb17..2ffad9712 100644
--- a/drivers/gpu/drm/i915/i915_debugfs.c
+++ b/drivers/gpu/drm/i915/i915_debugfs.c
@@ -41,6 +41,7 @@
@ -173,7 +173,7 @@ index 5823ffb17821..2ffad9712041 100644
int i915_debugfs_register(struct drm_i915_private *dev_priv)
diff --git a/drivers/gpu/drm/i915/i915_drv.c b/drivers/gpu/drm/i915/i915_drv.c
index 1ad88e6d7c04..b50823fd30fb 100644
index 1ad88e6d7..b50823fd3 100644
--- a/drivers/gpu/drm/i915/i915_drv.c
+++ b/drivers/gpu/drm/i915/i915_drv.c
@@ -63,6 +63,7 @@
@ -205,7 +205,7 @@ index 1ad88e6d7c04..b50823fd30fb 100644
/*
diff --git a/drivers/gpu/drm/i915/i915_drv.h b/drivers/gpu/drm/i915/i915_drv.h
index 066fd2a12851..2a872d8725b5 100644
index 066fd2a12..2a872d872 100644
--- a/drivers/gpu/drm/i915/i915_drv.h
+++ b/drivers/gpu/drm/i915/i915_drv.h
@@ -3184,6 +3184,9 @@ void i915_gem_object_do_bit_17_swizzle(struct drm_i915_gem_object *obj,
@ -219,7 +219,7 @@ index 066fd2a12851..2a872d8725b5 100644
__i915_gem_context_lookup_rcu(struct drm_i915_file_private *file_priv, u32 id)
{
diff --git a/drivers/gpu/drm/i915/i915_gem_context.c b/drivers/gpu/drm/i915/i915_gem_context.c
index dd728b26b5aa..ae3209b79b25 100644
index dd728b26b..ae3209b79 100644
--- a/drivers/gpu/drm/i915/i915_gem_context.c
+++ b/drivers/gpu/drm/i915/i915_gem_context.c
@@ -565,6 +565,18 @@ static bool needs_preempt_context(struct drm_i915_private *i915)
@ -242,7 +242,7 @@ index dd728b26b5aa..ae3209b79b25 100644
{
struct i915_gem_context *ctx;
diff --git a/drivers/gpu/drm/i915/i915_irq.c b/drivers/gpu/drm/i915/i915_irq.c
index b92cfd69134b..78fcd4b78480 100644
index b92cfd691..78fcd4b78 100644
--- a/drivers/gpu/drm/i915/i915_irq.c
+++ b/drivers/gpu/drm/i915/i915_irq.c
@@ -41,6 +41,7 @@
@ -274,7 +274,7 @@ index b92cfd69134b..78fcd4b78480 100644
GT_RENDER_USER_INTERRUPT << GEN8_BCS_IRQ_SHIFT |
GT_CONTEXT_SWITCH_INTERRUPT << GEN8_BCS_IRQ_SHIFT),
diff --git a/drivers/gpu/drm/i915/i915_params.c b/drivers/gpu/drm/i915/i915_params.c
index b5be0abbba35..831f2bcae687 100644
index b5be0abbb..831f2bcae 100644
--- a/drivers/gpu/drm/i915/i915_params.c
+++ b/drivers/gpu/drm/i915/i915_params.c
@@ -143,7 +143,10 @@ i915_param_named_unsafe(edp_vswing, int, 0400,
@ -290,7 +290,7 @@ index b5be0abbba35..831f2bcae687 100644
i915_param_named(guc_log_level, int, 0400,
"GuC firmware logging level. Requires GuC to be loaded. "
diff --git a/drivers/gpu/drm/i915/i915_params.h b/drivers/gpu/drm/i915/i915_params.h
index 3f14e9881a0d..e314a2414041 100644
index 3f14e9881..e314a2414 100644
--- a/drivers/gpu/drm/i915/i915_params.h
+++ b/drivers/gpu/drm/i915/i915_params.h
@@ -54,7 +54,7 @@ struct drm_printer;
@ -313,7 +313,7 @@ index 3f14e9881a0d..e314a2414041 100644
#define MEMBER(T, member, ...) T member;
struct i915_params {
diff --git a/drivers/gpu/drm/i915/intel_dp.c b/drivers/gpu/drm/i915/intel_dp.c
index 560274d1c50b..e305a35de9c2 100644
index 560274d1c..e305a35de 100644
--- a/drivers/gpu/drm/i915/intel_dp.c
+++ b/drivers/gpu/drm/i915/intel_dp.c
@@ -2899,8 +2899,8 @@ void intel_dp_sink_dpms(struct intel_dp *intel_dp, int mode)
@ -328,7 +328,7 @@ index 560274d1c50b..e305a35de9c2 100644
ret = drm_dp_dpcd_writeb(&intel_dp->aux, DP_SET_POWER,
DP_SET_POWER_D3);
diff --git a/drivers/gpu/drm/i915/intel_guc.h b/drivers/gpu/drm/i915/intel_guc.h
index 2c59ff8d9f39..d7f91693972f 100644
index 2c59ff8d9..d7f916939 100644
--- a/drivers/gpu/drm/i915/intel_guc.h
+++ b/drivers/gpu/drm/i915/intel_guc.h
@@ -67,6 +67,7 @@ struct intel_guc {
@ -340,7 +340,7 @@ index 2c59ff8d9f39..d7f91693972f 100644
struct guc_preempt_work preempt_work[I915_NUM_ENGINES];
struct workqueue_struct *preempt_wq;
diff --git a/drivers/gpu/drm/i915/intel_guc_submission.c b/drivers/gpu/drm/i915/intel_guc_submission.c
index 46cd0e70aecb..e84c805f7340 100644
index 46cd0e70a..e84c805f7 100644
--- a/drivers/gpu/drm/i915/intel_guc_submission.c
+++ b/drivers/gpu/drm/i915/intel_guc_submission.c
@@ -93,12 +93,17 @@ static inline struct i915_priolist *to_priolist(struct rb_node *rb)
@ -472,7 +472,7 @@ index 46cd0e70aecb..e84c805f7340 100644
#include "selftests/intel_guc.c"
#endif
diff --git a/drivers/gpu/drm/i915/intel_guc_submission.h b/drivers/gpu/drm/i915/intel_guc_submission.h
index aa5e6749c925..c9e5c14e7f67 100644
index aa5e6749c..c9e5c14e7 100644
--- a/drivers/gpu/drm/i915/intel_guc_submission.h
+++ b/drivers/gpu/drm/i915/intel_guc_submission.h
@@ -84,5 +84,9 @@ void intel_guc_submission_disable(struct intel_guc *guc);
@ -487,7 +487,7 @@ index aa5e6749c925..c9e5c14e7f67 100644
#endif
diff --git a/drivers/gpu/drm/i915/intel_ipts.c b/drivers/gpu/drm/i915/intel_ipts.c
new file mode 100644
index 000000000000..3d3c353986f7
index 000000000..3d3c35398
--- /dev/null
+++ b/drivers/gpu/drm/i915/intel_ipts.c
@@ -0,0 +1,651 @@
@ -1144,7 +1144,7 @@ index 000000000000..3d3c353986f7
+}
diff --git a/drivers/gpu/drm/i915/intel_ipts.h b/drivers/gpu/drm/i915/intel_ipts.h
new file mode 100644
index 000000000000..a6965d102417
index 000000000..a6965d102
--- /dev/null
+++ b/drivers/gpu/drm/i915/intel_ipts.h
@@ -0,0 +1,34 @@
@ -1183,7 +1183,7 @@ index 000000000000..a6965d102417
+
+#endif //_INTEL_IPTS_H_
diff --git a/drivers/gpu/drm/i915/intel_lrc.c b/drivers/gpu/drm/i915/intel_lrc.c
index 11e5a86610bf..4adf38cad6da 100644
index 11e5a8661..4adf38cad 100644
--- a/drivers/gpu/drm/i915/intel_lrc.c
+++ b/drivers/gpu/drm/i915/intel_lrc.c
@@ -166,8 +166,8 @@
@ -1237,7 +1237,7 @@ index 11e5a86610bf..4adf38cad6da 100644
struct drm_i915_gem_object *ctx_obj;
struct i915_vma *vma;
diff --git a/drivers/gpu/drm/i915/intel_lrc.h b/drivers/gpu/drm/i915/intel_lrc.h
index 84aa230ea27b..0e8008eb0f3a 100644
index 84aa230ea..0e8008eb0 100644
--- a/drivers/gpu/drm/i915/intel_lrc.h
+++ b/drivers/gpu/drm/i915/intel_lrc.h
@@ -115,6 +115,12 @@ void intel_execlists_show_requests(struct intel_engine_cs *engine,
@ -1254,7 +1254,7 @@ index 84aa230ea27b..0e8008eb0f3a 100644
#endif /* _INTEL_LRC_H_ */
diff --git a/drivers/gpu/drm/i915/intel_panel.c b/drivers/gpu/drm/i915/intel_panel.c
index 4ab4ce6569e7..2d3c523ba5c7 100644
index 4ab4ce656..2d3c523ba 100644
--- a/drivers/gpu/drm/i915/intel_panel.c
+++ b/drivers/gpu/drm/i915/intel_panel.c
@@ -37,6 +37,7 @@
@ -1286,7 +1286,7 @@ index 4ab4ce6569e7..2d3c523ba5c7 100644
static void pch_enable_backlight(const struct intel_crtc_state *crtc_state,
diff --git a/drivers/hid/hid-multitouch.c b/drivers/hid/hid-multitouch.c
index b603c14d043b..03448d3a29f2 100644
index b603c14d0..03448d3a2 100644
--- a/drivers/hid/hid-multitouch.c
+++ b/drivers/hid/hid-multitouch.c
@@ -169,6 +169,7 @@ struct mt_device {
@ -1362,7 +1362,7 @@ index b603c14d043b..03448d3a29f2 100644
INIT_LIST_HEAD(&td->applications);
diff --git a/drivers/misc/Kconfig b/drivers/misc/Kconfig
index 85fc77148d19..b697f05eaf31 100644
index 85fc77148..b697f05ea 100644
--- a/drivers/misc/Kconfig
+++ b/drivers/misc/Kconfig
@@ -500,6 +500,7 @@ source "drivers/misc/ti-st/Kconfig"
@ -1374,7 +1374,7 @@ index 85fc77148d19..b697f05eaf31 100644
source "drivers/misc/mic/Kconfig"
source "drivers/misc/genwqe/Kconfig"
diff --git a/drivers/misc/Makefile b/drivers/misc/Makefile
index b9affcdaa3d6..e681e345a9ed 100644
index b9affcdaa..e681e345a 100644
--- a/drivers/misc/Makefile
+++ b/drivers/misc/Makefile
@@ -45,6 +45,7 @@ obj-y += lis3lv02d/
@ -1387,7 +1387,7 @@ index b9affcdaa3d6..e681e345a9ed 100644
obj-$(CONFIG_SRAM) += sram.o
diff --git a/drivers/misc/ipts/Kconfig b/drivers/misc/ipts/Kconfig
new file mode 100644
index 000000000000..360ed3861b82
index 000000000..360ed3861
--- /dev/null
+++ b/drivers/misc/ipts/Kconfig
@@ -0,0 +1,9 @@
@ -1402,7 +1402,7 @@ index 000000000000..360ed3861b82
+ Intel Kabylake
diff --git a/drivers/misc/ipts/Makefile b/drivers/misc/ipts/Makefile
new file mode 100644
index 000000000000..1783e9cf13c9
index 000000000..1783e9cf1
--- /dev/null
+++ b/drivers/misc/ipts/Makefile
@@ -0,0 +1,13 @@
@ -1421,7 +1421,7 @@ index 000000000000..1783e9cf13c9
+intel-ipts-$(CONFIG_DEBUG_FS) += ipts-dbgfs.o
diff --git a/drivers/misc/ipts/ipts-binary-spec.h b/drivers/misc/ipts/ipts-binary-spec.h
new file mode 100644
index 000000000000..87d4bc4133c4
index 000000000..87d4bc413
--- /dev/null
+++ b/drivers/misc/ipts/ipts-binary-spec.h
@@ -0,0 +1,118 @@
@ -1545,7 +1545,7 @@ index 000000000000..87d4bc4133c4
+#endif /* _IPTS_BINARY_SPEC_H */
diff --git a/drivers/misc/ipts/ipts-dbgfs.c b/drivers/misc/ipts/ipts-dbgfs.c
new file mode 100644
index 000000000000..7581b21f81e0
index 000000000..7581b21f8
--- /dev/null
+++ b/drivers/misc/ipts/ipts-dbgfs.c
@@ -0,0 +1,364 @@
@ -1915,7 +1915,7 @@ index 000000000000..7581b21f81e0
+}
diff --git a/drivers/misc/ipts/ipts-gfx.c b/drivers/misc/ipts/ipts-gfx.c
new file mode 100644
index 000000000000..4989a22227d2
index 000000000..4989a2222
--- /dev/null
+++ b/drivers/misc/ipts/ipts-gfx.c
@@ -0,0 +1,185 @@
@ -2106,7 +2106,7 @@ index 000000000000..4989a22227d2
+}
diff --git a/drivers/misc/ipts/ipts-gfx.h b/drivers/misc/ipts/ipts-gfx.h
new file mode 100644
index 000000000000..03a5f3551ddf
index 000000000..03a5f3551
--- /dev/null
+++ b/drivers/misc/ipts/ipts-gfx.h
@@ -0,0 +1,24 @@
@ -2136,10 +2136,10 @@ index 000000000000..03a5f3551ddf
+#endif // _IPTS_GFX_H_
diff --git a/drivers/misc/ipts/ipts-hid.c b/drivers/misc/ipts/ipts-hid.c
new file mode 100644
index 000000000000..e85844dc1158
index 000000000..84e3fb6c3
--- /dev/null
+++ b/drivers/misc/ipts/ipts-hid.c
@@ -0,0 +1,456 @@
@@ -0,0 +1,504 @@
+/*
+ * Intel Precise Touch & Stylus HID driver
+ *
@ -2159,6 +2159,7 @@ index 000000000000..e85844dc1158
+#include <linux/firmware.h>
+#include <linux/hid.h>
+#include <linux/vmalloc.h>
+#include <linux/dmi.h>
+
+#include "ipts.h"
+#include "ipts-resource.h"
@ -2196,6 +2197,30 @@ index 000000000000..e85844dc1158
+ char string[128];
+} kernel_output_payload_error_t;
+
+static const struct dmi_system_id no_feedback_dmi_table[] = {
+ {
+ .matches = {
+ DMI_EXACT_MATCH(DMI_SYS_VENDOR, "Microsoft Corporation"),
+ DMI_EXACT_MATCH(DMI_PRODUCT_NAME, "Surface Book"),
+ },
+ },
+ {
+ .matches = {
+ DMI_EXACT_MATCH(DMI_SYS_VENDOR, "Microsoft Corporation"),
+ DMI_EXACT_MATCH(DMI_PRODUCT_NAME, "Surface Pro 4"),
+ },
+ },
+ { }
+};
+
+int no_feedback = -1;
+module_param(no_feedback, int, 0644);
+MODULE_PARM_DESC(no_feedback,
+ "Disable sending feedback in order to work around the issue that IPTS "
+ "stops working after some amount of use. "
+ "-1=auto (true if your model is SB1/SP4, false if another model), "
+ "0=false, 1=true, (default: -1)");
+
+static int ipts_hid_get_hid_descriptor(ipts_info_t *ipts, u8 **desc, int *size)
+{
+ u8 *buf;
@ -2557,7 +2582,30 @@ index 000000000000..e85844dc1158
+ }
+ }
+
+ /*
+ * XXX: Calling the "ipts_send_feedback" function repeatedly seems to be
+ * what is causing touch to crash (found by sebanc, see the link below for
+ * the comment) on some models, especially on Surface Pro 4 and
+ * Surface Book 1.
+ * The most desirable fix could be done by raising IPTS GuC priority. Until
+ * we find a better solution, use this workaround.
+ *
+ * Link to the comment where sebanc found this workaround:
+ * https://github.com/jakeday/linux-surface/issues/374#issuecomment-508234110
+ * (Touch and pen issue persists · Issue #374 · jakeday/linux-surface)
+ *
+ * Link to the usage from kitakar5525 who made this change:
+ * https://github.com/jakeday/linux-surface/issues/374#issuecomment-517289171
+ * (Touch and pen issue persists · Issue #374 · jakeday/linux-surface)
+ */
+ if (fb_buf) {
+ /* A negative value means "decide by dmi table" */
+ if (no_feedback < 0)
+ no_feedback = dmi_check_system(no_feedback_dmi_table) ? true : false;
+
+ if (no_feedback)
+ return 0;
+
+ ret = ipts_send_feedback(ipts, parallel_idx, transaction_id);
+ if (ret)
+ return ret;
@ -2598,7 +2646,7 @@ index 000000000000..e85844dc1158
+}
diff --git a/drivers/misc/ipts/ipts-hid.h b/drivers/misc/ipts/ipts-hid.h
new file mode 100644
index 000000000000..f1b22c912df7
index 000000000..f1b22c912
--- /dev/null
+++ b/drivers/misc/ipts/ipts-hid.h
@@ -0,0 +1,34 @@
@ -2638,7 +2686,7 @@ index 000000000000..f1b22c912df7
+#endif /* _IPTS_HID_H_ */
diff --git a/drivers/misc/ipts/ipts-kernel.c b/drivers/misc/ipts/ipts-kernel.c
new file mode 100644
index 000000000000..86fd359d2eed
index 000000000..86fd359d2
--- /dev/null
+++ b/drivers/misc/ipts/ipts-kernel.c
@@ -0,0 +1,1050 @@
@ -3694,7 +3742,7 @@ index 000000000000..86fd359d2eed
+}
diff --git a/drivers/misc/ipts/ipts-kernel.h b/drivers/misc/ipts/ipts-kernel.h
new file mode 100644
index 000000000000..0e7f1393b807
index 000000000..0e7f1393b
--- /dev/null
+++ b/drivers/misc/ipts/ipts-kernel.h
@@ -0,0 +1,23 @@
@ -3723,7 +3771,7 @@ index 000000000000..0e7f1393b807
+#endif
diff --git a/drivers/misc/ipts/ipts-mei-msgs.h b/drivers/misc/ipts/ipts-mei-msgs.h
new file mode 100644
index 000000000000..8ca146800a47
index 000000000..8ca146800
--- /dev/null
+++ b/drivers/misc/ipts/ipts-mei-msgs.h
@@ -0,0 +1,585 @@
@ -4314,7 +4362,7 @@ index 000000000000..8ca146800a47
+#endif // _IPTS_MEI_MSGS_H_
diff --git a/drivers/misc/ipts/ipts-mei.c b/drivers/misc/ipts/ipts-mei.c
new file mode 100644
index 000000000000..199e49cb8d70
index 000000000..199e49cb8
--- /dev/null
+++ b/drivers/misc/ipts/ipts-mei.c
@@ -0,0 +1,282 @@
@ -4602,7 +4650,7 @@ index 000000000000..199e49cb8d70
+MODULE_LICENSE("GPL");
diff --git a/drivers/misc/ipts/ipts-msg-handler.c b/drivers/misc/ipts/ipts-msg-handler.c
new file mode 100644
index 000000000000..db5356a1c84e
index 000000000..db5356a1c
--- /dev/null
+++ b/drivers/misc/ipts/ipts-msg-handler.c
@@ -0,0 +1,437 @@
@ -5045,7 +5093,7 @@ index 000000000000..db5356a1c84e
+}
diff --git a/drivers/misc/ipts/ipts-msg-handler.h b/drivers/misc/ipts/ipts-msg-handler.h
new file mode 100644
index 000000000000..f37d9ad9af8c
index 000000000..f37d9ad9a
--- /dev/null
+++ b/drivers/misc/ipts/ipts-msg-handler.h
@@ -0,0 +1,33 @@
@ -5084,7 +5132,7 @@ index 000000000000..f37d9ad9af8c
+#endif /* _IPTS_MSG_HANDLER_H */
diff --git a/drivers/misc/ipts/ipts-resource.c b/drivers/misc/ipts/ipts-resource.c
new file mode 100644
index 000000000000..47607ef7c461
index 000000000..47607ef7c
--- /dev/null
+++ b/drivers/misc/ipts/ipts-resource.c
@@ -0,0 +1,277 @@
@ -5367,7 +5415,7 @@ index 000000000000..47607ef7c461
+}
diff --git a/drivers/misc/ipts/ipts-resource.h b/drivers/misc/ipts/ipts-resource.h
new file mode 100644
index 000000000000..7d66ac72b475
index 000000000..7d66ac72b
--- /dev/null
+++ b/drivers/misc/ipts/ipts-resource.h
@@ -0,0 +1,30 @@
@ -5403,7 +5451,7 @@ index 000000000000..7d66ac72b475
+#endif // _IPTS_RESOURCE_H_
diff --git a/drivers/misc/ipts/ipts-sensor-regs.h b/drivers/misc/ipts/ipts-sensor-regs.h
new file mode 100644
index 000000000000..96812b0eb980
index 000000000..96812b0eb
--- /dev/null
+++ b/drivers/misc/ipts/ipts-sensor-regs.h
@@ -0,0 +1,700 @@
@ -6109,7 +6157,7 @@ index 000000000000..96812b0eb980
+#endif // _TOUCH_SENSOR_REGS_H
diff --git a/drivers/misc/ipts/ipts-state.h b/drivers/misc/ipts/ipts-state.h
new file mode 100644
index 000000000000..39a2eaf5f004
index 000000000..39a2eaf5f
--- /dev/null
+++ b/drivers/misc/ipts/ipts-state.h
@@ -0,0 +1,29 @@
@ -6144,7 +6192,7 @@ index 000000000000..39a2eaf5f004
+#endif // _IPTS_STATE_H_
diff --git a/drivers/misc/ipts/ipts.h b/drivers/misc/ipts/ipts.h
new file mode 100644
index 000000000000..9c34b55ff036
index 000000000..9c34b55ff
--- /dev/null
+++ b/drivers/misc/ipts/ipts.h
@@ -0,0 +1,200 @@
@ -6349,7 +6397,7 @@ index 000000000000..9c34b55ff036
+
+#endif // _IPTS_H_
diff --git a/drivers/misc/mei/hw-me-regs.h b/drivers/misc/mei/hw-me-regs.h
index d74b182e19f3..a4021bc7d6b3 100644
index 6c0173772..c7872571d 100644
--- a/drivers/misc/mei/hw-me-regs.h
+++ b/drivers/misc/mei/hw-me-regs.h
@@ -59,6 +59,7 @@
@ -6361,7 +6409,7 @@ index d74b182e19f3..a4021bc7d6b3 100644
#define MEI_DEV_ID_SPT_H_2 0xA13B /* Sunrise Point H 2 */
diff --git a/drivers/misc/mei/pci-me.c b/drivers/misc/mei/pci-me.c
index 7a2b3545a7f9..c3c684cbd17d 100644
index 57cb68f5c..4044d7946 100644
--- a/drivers/misc/mei/pci-me.c
+++ b/drivers/misc/mei/pci-me.c
@@ -77,6 +77,7 @@ static const struct pci_device_id mei_me_pci_tbl[] = {
@ -6374,7 +6422,7 @@ index 7a2b3545a7f9..c3c684cbd17d 100644
{MEI_PCI_DEVICE(MEI_DEV_ID_LBG, MEI_ME_PCH12_CFG)},
diff --git a/include/linux/intel_ipts_if.h b/include/linux/intel_ipts_if.h
new file mode 100644
index 000000000000..bad44fb4f233
index 000000000..bad44fb4f
--- /dev/null
+++ b/include/linux/intel_ipts_if.h
@@ -0,0 +1,76 @@