--- /dev/null
+From 3755d35ee1d2454b20b8a1e20d790e56201678a4 Mon Sep 17 00:00:00 2001
+From: Thomas Zimmermann <tzimmermann@suse.de>
+Date: Thu, 3 Feb 2022 10:39:22 +0100
+Subject: drm/panel: Select DRM_DP_HELPER for DRM_PANEL_EDP
+
+From: Thomas Zimmermann <tzimmermann@suse.de>
+
+commit 3755d35ee1d2454b20b8a1e20d790e56201678a4 upstream.
+
+As reported in [1], DRM_PANEL_EDP depends on DRM_DP_HELPER. Select
+the option to fix the build failure. The error message is shown
+below.
+
+ arm-linux-gnueabihf-ld: drivers/gpu/drm/panel/panel-edp.o: in function
+ `panel_edp_probe': panel-edp.c:(.text+0xb74): undefined reference to
+ `drm_panel_dp_aux_backlight'
+ make[1]: *** [/builds/linux/Makefile:1222: vmlinux] Error 1
+
+The issue has been reported before, when DisplayPort helpers were
+hidden behind the option CONFIG_DRM_KMS_HELPER. [2]
+
+v2:
+ * fix and expand commit description (Arnd)
+
+Signed-off-by: Thomas Zimmermann <tzimmermann@suse.de>
+Fixes: 9d6366e743f3 ("drm: fb_helper: improve CONFIG_FB dependency")
+Reported-by: Naresh Kamboju <naresh.kamboju@linaro.org>
+Reported-by: Linux Kernel Functional Testing <lkft@linaro.org>
+Reviewed-by: Lyude Paul <lyude@redhat.com>
+Acked-by: Sam Ravnborg <sam@ravnborg.org>
+Link: https://lore.kernel.org/dri-devel/CA+G9fYvN0NyaVkRQmA1O6rX7H8PPaZrUAD7=RDy33QY9rUU-9g@mail.gmail.com/ # [1]
+Link: https://lore.kernel.org/all/20211117062704.14671-1-rdunlap@infradead.org/ # [2]
+Cc: Thomas Zimmermann <tzimmermann@suse.de>
+Cc: Lyude Paul <lyude@redhat.com>
+Cc: Daniel Vetter <daniel@ffwll.ch>
+Cc: Maarten Lankhorst <maarten.lankhorst@linux.intel.com>
+Cc: Maxime Ripard <mripard@kernel.org>
+Cc: dri-devel@lists.freedesktop.org
+Link: https://patchwork.freedesktop.org/patch/msgid/20220203093922.20754-1-tzimmermann@suse.de
+Signed-off-by: Dave Airlie <airlied@redhat.com>
+Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
+---
+ drivers/gpu/drm/panel/Kconfig | 1 +
+ 1 file changed, 1 insertion(+)
+
+--- a/drivers/gpu/drm/panel/Kconfig
++++ b/drivers/gpu/drm/panel/Kconfig
+@@ -95,6 +95,7 @@ config DRM_PANEL_EDP
+ depends on PM
+ select VIDEOMODE_HELPERS
+ select DRM_DP_AUX_BUS
++ select DRM_DP_HELPER
+ help
+ DRM panel driver for dumb eDP panels that need at most a regulator and
+ a GPIO to be powered up. Optionally a backlight can be attached so
--- /dev/null
+From 91c9923a473a694eb1c5c01ab778a77114969707 Mon Sep 17 00:00:00 2001
+From: Zhengjun Xing <zhengjun.xing@linux.intel.com>
+Date: Mon, 7 Mar 2022 23:16:27 +0800
+Subject: perf parse: Fix event parser error for hybrid systems
+
+From: Zhengjun Xing <zhengjun.xing@linux.intel.com>
+
+commit 91c9923a473a694eb1c5c01ab778a77114969707 upstream.
+
+This bug happened on hybrid systems when both cpu_core and cpu_atom
+have the same event name such as "UOPS_RETIRED.MS" while their event
+terms are different, then during perf stat, the event for cpu_atom
+will parse fail and then no output for cpu_atom.
+
+UOPS_RETIRED.MS -> cpu_core/period=0x1e8483,umask=0x4,event=0xc2,frontend=0x8/
+UOPS_RETIRED.MS -> cpu_atom/period=0x1e8483,umask=0x1,event=0xc2/
+
+It is because event terms in the "head" of parse_events_multi_pmu_add
+will be changed to event terms for cpu_core after parsing UOPS_RETIRED.MS
+for cpu_core, then when parsing the same event for cpu_atom, it still
+uses the event terms for cpu_core, but event terms for cpu_atom are
+different with cpu_core, the event parses for cpu_atom will fail. This
+patch fixes it, the event terms should be parsed from the original
+event.
+
+This patch can work for the hybrid systems that have the same event
+in more than 2 PMUs. It also can work in non-hybrid systems.
+
+Before:
+
+ # perf stat -v -e UOPS_RETIRED.MS -a sleep 1
+
+ Using CPUID GenuineIntel-6-97-1
+ UOPS_RETIRED.MS -> cpu_core/period=0x1e8483,umask=0x4,event=0xc2,frontend=0x8/
+ Control descriptor is not initialized
+ UOPS_RETIRED.MS: 2737845 16068518485 16068518485
+
+ Performance counter stats for 'system wide':
+
+ 2,737,845 cpu_core/UOPS_RETIRED.MS/
+
+ 1.002553850 seconds time elapsed
+
+After:
+
+ # perf stat -v -e UOPS_RETIRED.MS -a sleep 1
+
+ Using CPUID GenuineIntel-6-97-1
+ UOPS_RETIRED.MS -> cpu_core/period=0x1e8483,umask=0x4,event=0xc2,frontend=0x8/
+ UOPS_RETIRED.MS -> cpu_atom/period=0x1e8483,umask=0x1,event=0xc2/
+ Control descriptor is not initialized
+ UOPS_RETIRED.MS: 1977555 16076950711 16076950711
+ UOPS_RETIRED.MS: 568684 8038694234 8038694234
+
+ Performance counter stats for 'system wide':
+
+ 1,977,555 cpu_core/UOPS_RETIRED.MS/
+ 568,684 cpu_atom/UOPS_RETIRED.MS/
+
+ 1.004758259 seconds time elapsed
+
+Fixes: fb0811535e92c6c1 ("perf parse-events: Allow config on kernel PMU events")
+Reviewed-by: Kan Liang <kan.liang@linux.intel.com>
+Signed-off-by: Zhengjun Xing <zhengjun.xing@linux.intel.com>
+Cc: Adrian Hunter <adrian.hunter@intel.com>
+Cc: Alexander Shishkin <alexander.shishkin@intel.com>
+Cc: Andi Kleen <ak@linux.intel.com>
+Cc: Ian Rogers <irogers@google.com>
+Cc: Ingo Molnar <mingo@redhat.com>
+Cc: Jiri Olsa <jolsa@kernel.org>
+Cc: Peter Zijlstra <peterz@infradead.org>
+Link: https://lore.kernel.org/r/20220307151627.30049-1-zhengjun.xing@linux.intel.com
+Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
+Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
+---
+ tools/perf/util/parse-events.c | 6 ++++--
+ 1 file changed, 4 insertions(+), 2 deletions(-)
+
+diff --git a/tools/perf/util/parse-events.c b/tools/perf/util/parse-events.c
+index dfb50a5f83d0..24997925ae00 100644
+--- a/tools/perf/util/parse-events.c
++++ b/tools/perf/util/parse-events.c
+@@ -1648,6 +1648,7 @@ int parse_events_multi_pmu_add(struct parse_events_state *parse_state,
+ {
+ struct parse_events_term *term;
+ struct list_head *list = NULL;
++ struct list_head *orig_head = NULL;
+ struct perf_pmu *pmu = NULL;
+ int ok = 0;
+ char *config;
+@@ -1674,7 +1675,6 @@ int parse_events_multi_pmu_add(struct parse_events_state *parse_state,
+ }
+ list_add_tail(&term->list, head);
+
+-
+ /* Add it for all PMUs that support the alias */
+ list = malloc(sizeof(struct list_head));
+ if (!list)
+@@ -1687,13 +1687,15 @@ int parse_events_multi_pmu_add(struct parse_events_state *parse_state,
+
+ list_for_each_entry(alias, &pmu->aliases, list) {
+ if (!strcasecmp(alias->name, str)) {
++ parse_events_copy_term_list(head, &orig_head);
+ if (!parse_events_add_pmu(parse_state, list,
+- pmu->name, head,
++ pmu->name, orig_head,
+ true, true)) {
+ pr_debug("%s -> %s/%s/\n", str,
+ pmu->name, alias->str);
+ ok++;
+ }
++ parse_events_terms__delete(orig_head);
+ }
+ }
+ }
+--
+2.35.1
+