kernel-5.11.11-200

* Tue Mar 30 2021 Justin M. Forbes <jforbes@fedoraproject.org> [5.11.11-200]
- Set CONFIG_XEN_MEMORY_HOTPLUG_LIMIT as required by 5.11.11 (Justin M. Forbes)
Resolves: rhbz#

Signed-off-by: Justin M. Forbes <jforbes@fedoraproject.org>
This commit is contained in:
Justin M. Forbes 2021-03-30 11:13:40 -05:00
parent 7268f6207c
commit 93aa93f667
20 changed files with 267 additions and 315 deletions

View File

@ -12,7 +12,7 @@ RHEL_MINOR = 99
#
# Use this spot to avoid future merge conflicts.
# Do not trim this comment.
RHEL_RELEASE = 12
RHEL_RELEASE = 13
#
# Early y+1 numbering

View File

@ -1,3 +1,12 @@
https://gitlab.com/cki-project/kernel-ark/-/commit/593117da3c5aaaa2f9af01513a9aa7a275e67701
593117da3c5aaaa2f9af01513a9aa7a275e67701 drm/i915: Disable LTTPR support when the DPCD rev < 1.4
https://gitlab.com/cki-project/kernel-ark/-/commit/4cf60312635599acf0e70c29d7de0355426d9165
4cf60312635599acf0e70c29d7de0355426d9165 drm/i915/dp: Prevent setting the LTTPR LT mode if no LTTPRs are detected
https://gitlab.com/cki-project/kernel-ark/-/commit/044d6c51c6cd6c419c17766f1fe0e03161afee6d
044d6c51c6cd6c419c17766f1fe0e03161afee6d drm/i915/ilk-glk: Fix link training on links with LTTPRs
https://gitlab.com/cki-project/kernel-ark/-/commit/f93a5201c2ef7e9f70aa68621100f868764c2b15
f93a5201c2ef7e9f70aa68621100f868764c2b15 drm/i915/tgl/psr: Disable PSR on Tigerlake for now

View File

@ -8180,6 +8180,7 @@ CONFIG_XDP_SOCKETS_DIAG=m
CONFIG_XDP_SOCKETS=y
# CONFIG_XEN_GRANT_DMA_ALLOC is not set
# CONFIG_XEN is not set
CONFIG_XEN_MEMORY_HOTPLUG_LIMIT=512
# CONFIG_XEN_PVCALLS_FRONTEND is not set
CONFIG_XEN_PVHVM_GUEST=y
CONFIG_XEN_UNPOPULATED_ALLOC=y

View File

@ -8154,6 +8154,7 @@ CONFIG_XDP_SOCKETS_DIAG=m
CONFIG_XDP_SOCKETS=y
# CONFIG_XEN_GRANT_DMA_ALLOC is not set
# CONFIG_XEN is not set
CONFIG_XEN_MEMORY_HOTPLUG_LIMIT=512
# CONFIG_XEN_PVCALLS_FRONTEND is not set
CONFIG_XEN_PVHVM_GUEST=y
CONFIG_XEN_UNPOPULATED_ALLOC=y

View File

@ -8482,6 +8482,7 @@ CONFIG_XDP_SOCKETS_DIAG=m
CONFIG_XDP_SOCKETS=y
# CONFIG_XEN_GRANT_DMA_ALLOC is not set
# CONFIG_XEN is not set
CONFIG_XEN_MEMORY_HOTPLUG_LIMIT=512
# CONFIG_XEN_PVCALLS_FRONTEND is not set
CONFIG_XEN_PVHVM_GUEST=y
CONFIG_XEN_UNPOPULATED_ALLOC=y

View File

@ -8457,6 +8457,7 @@ CONFIG_XDP_SOCKETS_DIAG=m
CONFIG_XDP_SOCKETS=y
# CONFIG_XEN_GRANT_DMA_ALLOC is not set
# CONFIG_XEN is not set
CONFIG_XEN_MEMORY_HOTPLUG_LIMIT=512
# CONFIG_XEN_PVCALLS_FRONTEND is not set
CONFIG_XEN_PVHVM_GUEST=y
CONFIG_XEN_UNPOPULATED_ALLOC=y

View File

@ -8214,6 +8214,7 @@ CONFIG_XDP_SOCKETS_DIAG=m
CONFIG_XDP_SOCKETS=y
# CONFIG_XEN_GRANT_DMA_ALLOC is not set
# CONFIG_XEN is not set
CONFIG_XEN_MEMORY_HOTPLUG_LIMIT=512
# CONFIG_XEN_PVCALLS_FRONTEND is not set
CONFIG_XEN_PVHVM_GUEST=y
CONFIG_XEN_UNPOPULATED_ALLOC=y

View File

@ -8189,6 +8189,7 @@ CONFIG_XDP_SOCKETS_DIAG=m
CONFIG_XDP_SOCKETS=y
# CONFIG_XEN_GRANT_DMA_ALLOC is not set
# CONFIG_XEN is not set
CONFIG_XEN_MEMORY_HOTPLUG_LIMIT=512
# CONFIG_XEN_PVCALLS_FRONTEND is not set
CONFIG_XEN_PVHVM_GUEST=y
CONFIG_XEN_UNPOPULATED_ALLOC=y

View File

@ -7447,6 +7447,7 @@ CONFIG_XENFS=m
CONFIG_XEN_GNTDEV=m
CONFIG_XEN_GRANT_DEV_ALLOC=m
# CONFIG_XEN_GRANT_DMA_ALLOC is not set
CONFIG_XEN_MEMORY_HOTPLUG_LIMIT=512
CONFIG_XEN_NETDEV_BACKEND=m
CONFIG_XEN_NETDEV_FRONTEND=m
CONFIG_XEN_PCIDEV_BACKEND=m

View File

@ -7422,6 +7422,7 @@ CONFIG_XENFS=m
CONFIG_XEN_GNTDEV=m
CONFIG_XEN_GRANT_DEV_ALLOC=m
# CONFIG_XEN_GRANT_DMA_ALLOC is not set
CONFIG_XEN_MEMORY_HOTPLUG_LIMIT=512
CONFIG_XEN_NETDEV_BACKEND=m
CONFIG_XEN_NETDEV_FRONTEND=m
CONFIG_XEN_PCIDEV_BACKEND=m

View File

@ -6944,6 +6944,7 @@ CONFIG_X86_SGX=y
CONFIG_XDP_SOCKETS_DIAG=m
CONFIG_XDP_SOCKETS=y
# CONFIG_XEN_GRANT_DMA_ALLOC is not set
CONFIG_XEN_MEMORY_HOTPLUG_LIMIT=512
# CONFIG_XEN_PVCALLS_FRONTEND is not set
CONFIG_XEN_PVHVM_GUEST=y
CONFIG_XEN_UNPOPULATED_ALLOC=y

View File

@ -6918,6 +6918,7 @@ CONFIG_X86_SGX=y
CONFIG_XDP_SOCKETS_DIAG=m
CONFIG_XDP_SOCKETS=y
# CONFIG_XEN_GRANT_DMA_ALLOC is not set
CONFIG_XEN_MEMORY_HOTPLUG_LIMIT=512
# CONFIG_XEN_PVCALLS_FRONTEND is not set
CONFIG_XEN_PVHVM_GUEST=y
CONFIG_XEN_UNPOPULATED_ALLOC=y

View File

@ -6887,6 +6887,7 @@ CONFIG_X86_SGX=y
CONFIG_XDP_SOCKETS_DIAG=m
CONFIG_XDP_SOCKETS=y
# CONFIG_XEN_GRANT_DMA_ALLOC is not set
CONFIG_XEN_MEMORY_HOTPLUG_LIMIT=512
# CONFIG_XEN_PVCALLS_FRONTEND is not set
CONFIG_XEN_PVHVM_GUEST=y
CONFIG_XEN_UNPOPULATED_ALLOC=y

View File

@ -6861,6 +6861,7 @@ CONFIG_X86_SGX=y
CONFIG_XDP_SOCKETS_DIAG=m
CONFIG_XDP_SOCKETS=y
# CONFIG_XEN_GRANT_DMA_ALLOC is not set
CONFIG_XEN_MEMORY_HOTPLUG_LIMIT=512
# CONFIG_XEN_PVCALLS_FRONTEND is not set
CONFIG_XEN_PVHVM_GUEST=y
CONFIG_XEN_UNPOPULATED_ALLOC=y

View File

@ -7492,6 +7492,7 @@ CONFIG_XEN_GNTDEV=m
CONFIG_XEN_GRANT_DEV_ALLOC=m
# CONFIG_XEN_GRANT_DMA_ALLOC is not set
# CONFIG_XEN_MCE_LOG is not set
CONFIG_XEN_MEMORY_HOTPLUG_LIMIT=512
CONFIG_XEN_NETDEV_BACKEND=m
CONFIG_XEN_NETDEV_FRONTEND=m
CONFIG_XEN_PCIDEV_BACKEND=m

View File

@ -7467,6 +7467,7 @@ CONFIG_XEN_GNTDEV=m
CONFIG_XEN_GRANT_DEV_ALLOC=m
# CONFIG_XEN_GRANT_DMA_ALLOC is not set
# CONFIG_XEN_MCE_LOG is not set
CONFIG_XEN_MEMORY_HOTPLUG_LIMIT=512
CONFIG_XEN_NETDEV_BACKEND=m
CONFIG_XEN_NETDEV_FRONTEND=m
CONFIG_XEN_PCIDEV_BACKEND=m

View File

@ -104,7 +104,7 @@ Summary: The Linux kernel
%define primary_target rhel
%endif
%define rpmversion 5.11.10
%define rpmversion 5.11.11
%define stableversion 5.11
%define pkgrelease 200
@ -603,7 +603,7 @@ BuildRequires: asciidoc
# exact git commit you can run
#
# xzcat -qq ${TARBALL} | git get-tar-commit-id
Source0: linux-5.11.10.tar.xz
Source0: linux-5.11.11.tar.xz
Source1: Makefile.rhelver
@ -1251,8 +1251,8 @@ ApplyOptionalPatch()
fi
}
%setup -q -n kernel-5.11.10 -c
mv linux-5.11.10 linux-%{KVERREL}
%setup -q -n kernel-5.11.11 -c
mv linux-5.11.11 linux-%{KVERREL}
cd linux-%{KVERREL}
cp -a %{SOURCE1} .
@ -2765,6 +2765,15 @@ fi
#
#
%changelog
* Tue Mar 30 2021 Justin M. Forbes <jforbes@fedoraproject.org> [5.11.11-200]
- Set CONFIG_XEN_MEMORY_HOTPLUG_LIMIT as required by 5.11.11 (Justin M. Forbes)
* Tue Mar 30 2021 Justin M. Forbes <jforbes@fedoraproject.org> [5.11.11-13]
- drm/i915: Disable LTTPR support when the DPCD rev < 1.4 (Imre Deak)
- drm/i915/dp: Prevent setting the LTTPR LT mode if no LTTPRs are detected (Imre Deak)
- drm/i915/ilk-glk: Fix link training on links with LTTPRs (Imre Deak)
- redhat/mod-blacklist.sh: Fix floppy blacklisting (Hans de Goede)
* Thu Mar 25 2021 Justin M. Forbes <jforbes@fedoraproject.org> [5.11.10-12]
- drm/i915/tgl/psr: Disable PSR on Tigerlake for now (Lyude Paul)
- Fedora: Turn off the SND_INTEL_BYT_PREFER_SOF option (Hans de Goede)

View File

@ -150,7 +150,7 @@ fi
# this replaces the old die_floppy_die.patch which removed the PNP-id from
# the module
floppylist=("$RpmDir"/"$ModDir"/extra/drivers/block/floppy.ko*)
floppylist=("$RpmDir"/"$ModDir"/kernel/drivers/block/floppy.ko*)
if [[ -n ${floppylist[0]} && -f ${floppylist[0]} ]]; then
blacklist "floppy"
fi

View File

@ -27,8 +27,10 @@
drivers/firmware/efi/Makefile | 1 +
drivers/firmware/efi/efi.c | 124 +++--
drivers/firmware/efi/secureboot.c | 38 ++
drivers/gpu/drm/i915/display/intel_dp.c | 11 +-
.../gpu/drm/i915/display/intel_dp_link_training.c | 91 ++--
.../gpu/drm/i915/display/intel_dp_link_training.h | 2 +-
drivers/gpu/drm/i915/display/intel_psr.c | 9 +-
drivers/gpu/drm/nouveau/dispnv50/disp.c | 12 +-
drivers/gpu/drm/panel/Kconfig | 9 +
drivers/gpu/drm/panel/Makefile | 1 +
drivers/gpu/drm/panel/panel-xingbangda-xbd599.c | 366 +++++++++++++++
@ -42,14 +44,8 @@
drivers/pci/controller/pcie-brcmstb.c | 1 +
drivers/pci/quirks.c | 24 +
drivers/platform/x86/Kconfig | 2 +
.../platform/x86/dell-wmi-sysman/enum-attributes.c | 3 +
.../platform/x86/dell-wmi-sysman/int-attributes.c | 3 +
.../x86/dell-wmi-sysman/passobj-attributes.c | 3 +
.../x86/dell-wmi-sysman/string-attributes.c | 3 +
drivers/platform/x86/dell-wmi-sysman/sysman.c | 84 ++--
drivers/platform/x86/ideapad-laptop.c | 289 ++++++++++++
drivers/platform/x86/intel-hid.c | 7 +
drivers/platform/x86/intel-vbtn.c | 12 +-
drivers/platform/x86/thinkpad_acpi.c | 518 ++++++++++++++++++++-
drivers/scsi/smartpqi/smartpqi_init.c | 16 +
drivers/usb/core/hub.c | 7 +
@ -70,7 +66,7 @@
sound/hda/Kconfig | 14 +
sound/hda/intel-dsp-config.c | 29 +-
sound/soc/intel/atom/sst-mfld-platform-pcm.c | 6 +-
72 files changed, 2264 insertions(+), 275 deletions(-)
68 files changed, 2268 insertions(+), 255 deletions(-)
diff --git a/Documentation/ABI/testing/sysfs-platform_profile b/Documentation/ABI/testing/sysfs-platform_profile
new file mode 100644
@ -284,10 +280,10 @@ index 000000000000..c33a71263d9e
+ 2. Add the new profile name, along with a clear description of the
+ expected behaviour, to the sysfs-platform_profile ABI documentation.
diff --git a/Makefile b/Makefile
index 824d15c14be0..60669eb8738b 100644
index 7578e0d9622f..74679ade5579 100644
--- a/Makefile
+++ b/Makefile
@@ -494,6 +494,7 @@ KBUILD_AFLAGS := -D__ASSEMBLY__ -fno-PIE
@@ -495,6 +495,7 @@ KBUILD_AFLAGS := -D__ASSEMBLY__ -fno-PIE
KBUILD_CFLAGS := -Wall -Wundef -Werror=strict-prototypes -Wno-trigraphs \
-fno-strict-aliasing -fno-common -fshort-wchar -fno-PIE \
-Werror=implicit-function-declaration -Werror=implicit-int \
@ -782,10 +778,10 @@ index 000000000000..4a59c5993bde
+MODULE_AUTHOR("Mark Pearson <markpearson@lenovo.com>");
+MODULE_LICENSE("GPL");
diff --git a/drivers/acpi/scan.c b/drivers/acpi/scan.c
index 22566b4b3150..4c2294593928 100644
index a4fdf61b0644..9aa6d898fadd 100644
--- a/drivers/acpi/scan.c
+++ b/drivers/acpi/scan.c
@@ -1620,6 +1620,15 @@ static bool acpi_device_enumeration_by_parent(struct acpi_device *device)
@@ -1638,6 +1638,15 @@ static bool acpi_device_enumeration_by_parent(struct acpi_device *device)
if (!acpi_match_device_ids(device, i2c_multi_instantiate_ids))
return false;
@ -1092,6 +1088,224 @@ index 000000000000..de0a3714a5d4
+ }
+ }
+}
diff --git a/drivers/gpu/drm/i915/display/intel_dp.c b/drivers/gpu/drm/i915/display/intel_dp.c
index 8a26307c4896..bc2aae63fe40 100644
--- a/drivers/gpu/drm/i915/display/intel_dp.c
+++ b/drivers/gpu/drm/i915/display/intel_dp.c
@@ -1400,6 +1400,7 @@ static u32 g4x_get_aux_send_ctl(struct intel_dp *intel_dp,
else
precharge = 5;
+ /* Max timeout value on G4x-BDW: 1.6ms */
if (IS_BROADWELL(dev_priv))
timeout = DP_AUX_CH_CTL_TIME_OUT_600us;
else
@@ -1426,6 +1427,12 @@ static u32 skl_get_aux_send_ctl(struct intel_dp *intel_dp,
enum phy phy = intel_port_to_phy(i915, dig_port->base.port);
u32 ret;
+ /*
+ * Max timeout values:
+ * SKL-GLK: 1.6ms
+ * CNL: 3.2ms
+ * ICL+: 4ms
+ */
ret = DP_AUX_CH_CTL_SEND_BUSY |
DP_AUX_CH_CTL_DONE |
DP_AUX_CH_CTL_INTERRUPT |
@@ -4871,9 +4878,7 @@ intel_dp_get_dpcd(struct intel_dp *intel_dp)
{
int ret;
- intel_dp_lttpr_init(intel_dp);
-
- if (drm_dp_read_dpcd_caps(&intel_dp->aux, intel_dp->dpcd))
+ if (intel_dp_init_lttpr_and_dprx_caps(intel_dp) < 0)
return false;
/*
diff --git a/drivers/gpu/drm/i915/display/intel_dp_link_training.c b/drivers/gpu/drm/i915/display/intel_dp_link_training.c
index d8c6d7054d11..e6532ea5757b 100644
--- a/drivers/gpu/drm/i915/display/intel_dp_link_training.c
+++ b/drivers/gpu/drm/i915/display/intel_dp_link_training.c
@@ -34,16 +34,9 @@ intel_dp_dump_link_status(const u8 link_status[DP_LINK_STATUS_SIZE])
link_status[3], link_status[4], link_status[5]);
}
-static int intel_dp_lttpr_count(struct intel_dp *intel_dp)
+static void intel_dp_reset_lttpr_common_caps(struct intel_dp *intel_dp)
{
- int count = drm_dp_lttpr_count(intel_dp->lttpr_common_caps);
-
- /*
- * Pretend no LTTPRs in case of LTTPR detection error, or
- * if too many (>8) LTTPRs are detected. This translates to link
- * training in transparent mode.
- */
- return count <= 0 ? 0 : count;
+ memset(&intel_dp->lttpr_common_caps, 0, sizeof(intel_dp->lttpr_common_caps));
}
static void intel_dp_reset_lttpr_count(struct intel_dp *intel_dp)
@@ -93,10 +86,21 @@ static void intel_dp_read_lttpr_phy_caps(struct intel_dp *intel_dp,
static bool intel_dp_read_lttpr_common_caps(struct intel_dp *intel_dp)
{
+ struct drm_i915_private *i915 = dp_to_i915(intel_dp);
+
+ if (intel_dp_is_edp(intel_dp))
+ return false;
+
+ /*
+ * Detecting LTTPRs must be avoided on platforms with an AUX timeout
+ * period < 3.2ms. (see DP Standard v2.0, 2.11.2, 3.6.6.1).
+ */
+ if (INTEL_GEN(i915) < 10)
+ return false;
+
if (drm_dp_read_lttpr_common_caps(&intel_dp->aux,
intel_dp->lttpr_common_caps) < 0) {
- memset(intel_dp->lttpr_common_caps, 0,
- sizeof(intel_dp->lttpr_common_caps));
+ intel_dp_reset_lttpr_common_caps(intel_dp);
return false;
}
@@ -118,30 +122,57 @@ intel_dp_set_lttpr_transparent_mode(struct intel_dp *intel_dp, bool enable)
}
/**
- * intel_dp_lttpr_init - detect LTTPRs and init the LTTPR link training mode
+ * intel_dp_init_lttpr_and_dprx_caps - detect LTTPR and DPRX caps, init the LTTPR link training mode
* @intel_dp: Intel DP struct
*
- * Read the LTTPR common capabilities, switch to non-transparent link training
- * mode if any is detected and read the PHY capabilities for all detected
- * LTTPRs. In case of an LTTPR detection error or if the number of
+ * Read the LTTPR common and DPRX capabilities and switch to non-transparent
+ * link training mode if any is detected and read the PHY capabilities for all
+ * detected LTTPRs. In case of an LTTPR detection error or if the number of
* LTTPRs is more than is supported (8), fall back to the no-LTTPR,
* transparent mode link training mode.
*
* Returns:
- * >0 if LTTPRs were detected and the non-transparent LT mode was set
+ * >0 if LTTPRs were detected and the non-transparent LT mode was set. The
+ * DPRX capabilities are read out.
* 0 if no LTTPRs or more than 8 LTTPRs were detected or in case of a
- * detection failure and the transparent LT mode was set
+ * detection failure and the transparent LT mode was set. The DPRX
+ * capabilities are read out.
+ * <0 Reading out the DPRX capabilities failed.
*/
-int intel_dp_lttpr_init(struct intel_dp *intel_dp)
+int intel_dp_init_lttpr_and_dprx_caps(struct intel_dp *intel_dp)
{
int lttpr_count;
bool ret;
int i;
- if (intel_dp_is_edp(intel_dp))
+ ret = intel_dp_read_lttpr_common_caps(intel_dp);
+
+ /* The DPTX shall read the DPRX caps after LTTPR detection. */
+ if (drm_dp_read_dpcd_caps(&intel_dp->aux, intel_dp->dpcd)) {
+ intel_dp_reset_lttpr_common_caps(intel_dp);
+ return -EIO;
+ }
+
+ if (!ret)
return 0;
- ret = intel_dp_read_lttpr_common_caps(intel_dp);
+ /*
+ * The 0xF0000-0xF02FF range is only valid if the DPCD revision is
+ * at least 1.4.
+ */
+ if (intel_dp->dpcd[DP_DPCD_REV] < 0x14) {
+ intel_dp_reset_lttpr_common_caps(intel_dp);
+ return 0;
+ }
+
+ lttpr_count = drm_dp_lttpr_count(intel_dp->lttpr_common_caps);
+ /*
+ * Prevent setting LTTPR transparent mode explicitly if no LTTPRs are
+ * detected as this breaks link training at least on the Dell WD19TB
+ * dock.
+ */
+ if (lttpr_count == 0)
+ return 0;
/*
* See DP Standard v2.0 3.6.6.1. about the explicit disabling of
@@ -150,17 +181,12 @@ int intel_dp_lttpr_init(struct intel_dp *intel_dp)
*/
intel_dp_set_lttpr_transparent_mode(intel_dp, true);
- if (!ret)
- return 0;
-
- lttpr_count = intel_dp_lttpr_count(intel_dp);
-
/*
* In case of unsupported number of LTTPRs or failing to switch to
* non-transparent mode fall-back to transparent link training mode,
* still taking into account any LTTPR common lane- rate/count limits.
*/
- if (lttpr_count == 0)
+ if (lttpr_count < 0)
return 0;
if (!intel_dp_set_lttpr_transparent_mode(intel_dp, false)) {
@@ -178,7 +204,7 @@ int intel_dp_lttpr_init(struct intel_dp *intel_dp)
return lttpr_count;
}
-EXPORT_SYMBOL(intel_dp_lttpr_init);
+EXPORT_SYMBOL(intel_dp_init_lttpr_and_dprx_caps);
static u8 dp_voltage_max(u8 preemph)
{
@@ -222,11 +248,11 @@ intel_dp_phy_is_downstream_of_source(struct intel_dp *intel_dp,
enum drm_dp_phy dp_phy)
{
struct drm_i915_private *i915 = dp_to_i915(intel_dp);
- int lttpr_count = intel_dp_lttpr_count(intel_dp);
+ int lttpr_count = drm_dp_lttpr_count(intel_dp->lttpr_common_caps);
- drm_WARN_ON_ONCE(&i915->drm, lttpr_count == 0 && dp_phy != DP_PHY_DPRX);
+ drm_WARN_ON_ONCE(&i915->drm, lttpr_count <= 0 && dp_phy != DP_PHY_DPRX);
- return lttpr_count == 0 || dp_phy == DP_PHY_LTTPR(lttpr_count - 1);
+ return lttpr_count <= 0 || dp_phy == DP_PHY_LTTPR(lttpr_count - 1);
}
static u8 intel_dp_phy_voltage_max(struct intel_dp *intel_dp,
@@ -814,7 +840,10 @@ void intel_dp_start_link_train(struct intel_dp *intel_dp,
* TODO: Reiniting LTTPRs here won't be needed once proper connector
* HW state readout is added.
*/
- int lttpr_count = intel_dp_lttpr_init(intel_dp);
+ int lttpr_count = intel_dp_init_lttpr_and_dprx_caps(intel_dp);
+
+ if (lttpr_count < 0)
+ return;
if (!intel_dp_link_train_all_phys(intel_dp, crtc_state, lttpr_count))
intel_dp_schedule_fallback_link_training(intel_dp, crtc_state);
diff --git a/drivers/gpu/drm/i915/display/intel_dp_link_training.h b/drivers/gpu/drm/i915/display/intel_dp_link_training.h
index 6a1f76bd8c75..9cb7c28027f0 100644
--- a/drivers/gpu/drm/i915/display/intel_dp_link_training.h
+++ b/drivers/gpu/drm/i915/display/intel_dp_link_training.h
@@ -11,7 +11,7 @@
struct intel_crtc_state;
struct intel_dp;
-int intel_dp_lttpr_init(struct intel_dp *intel_dp);
+int intel_dp_init_lttpr_and_dprx_caps(struct intel_dp *intel_dp);
void intel_dp_get_adjust_train(struct intel_dp *intel_dp,
const struct intel_crtc_state *crtc_state,
diff --git a/drivers/gpu/drm/i915/display/intel_psr.c b/drivers/gpu/drm/i915/display/intel_psr.c
index b3631b722de3..0b8866900dfb 100644
--- a/drivers/gpu/drm/i915/display/intel_psr.c
@ -1113,31 +1327,6 @@ index b3631b722de3..0b8866900dfb 100644
/* Set link_standby x link_off defaults */
if (IS_HASWELL(dev_priv) || IS_BROADWELL(dev_priv))
diff --git a/drivers/gpu/drm/nouveau/dispnv50/disp.c b/drivers/gpu/drm/nouveau/dispnv50/disp.c
index 5f4f09a601d4..857b76605a9e 100644
--- a/drivers/gpu/drm/nouveau/dispnv50/disp.c
+++ b/drivers/gpu/drm/nouveau/dispnv50/disp.c
@@ -2663,9 +2663,19 @@ nv50_display_create(struct drm_device *dev)
else
nouveau_display(dev)->format_modifiers = disp50xx_modifiers;
- if (disp->disp->object.oclass >= GK104_DISP) {
+ /* FIXME: 256x256 cursors are supported on Kepler, however unlike Maxwell and later
+ * generations Kepler requires that we specify the page type, small (4K) or large (128K),
+ * correctly for the ctxdma being used on curs/ovly. We currently share a ctxdma across all
+ * display planes (except ovly) that defaults to small pages, which results in artifacting
+ * on 256x256 cursors. Until we teach nouveau to create an appropriate ctxdma for the cursor
+ * fb in use, simply avoid advertising support for 256x256 cursors.
+ */
+ if (disp->disp->object.oclass >= GM107_DISP) {
dev->mode_config.cursor_width = 256;
dev->mode_config.cursor_height = 256;
+ } else if (disp->disp->object.oclass >= GK104_DISP) {
+ dev->mode_config.cursor_width = 128;
+ dev->mode_config.cursor_height = 128;
} else {
dev->mode_config.cursor_width = 64;
dev->mode_config.cursor_height = 64;
diff --git a/drivers/gpu/drm/panel/Kconfig b/drivers/gpu/drm/panel/Kconfig
index b4e021ea30f9..5687b745ebe2 100644
--- a/drivers/gpu/drm/panel/Kconfig
@ -2159,252 +2348,6 @@ index ac4125ec0660..3a8ade8bb073 100644
select HWMON
select NVRAM
select NEW_LEDS
diff --git a/drivers/platform/x86/dell-wmi-sysman/enum-attributes.c b/drivers/platform/x86/dell-wmi-sysman/enum-attributes.c
index 80f4b7785c6c..091e48c217ed 100644
--- a/drivers/platform/x86/dell-wmi-sysman/enum-attributes.c
+++ b/drivers/platform/x86/dell-wmi-sysman/enum-attributes.c
@@ -185,5 +185,8 @@ void exit_enum_attributes(void)
sysfs_remove_group(wmi_priv.enumeration_data[instance_id].attr_name_kobj,
&enumeration_attr_group);
}
+ wmi_priv.enumeration_instances_count = 0;
+
kfree(wmi_priv.enumeration_data);
+ wmi_priv.enumeration_data = NULL;
}
diff --git a/drivers/platform/x86/dell-wmi-sysman/int-attributes.c b/drivers/platform/x86/dell-wmi-sysman/int-attributes.c
index 75aedbb733be..8a49ba6e44f9 100644
--- a/drivers/platform/x86/dell-wmi-sysman/int-attributes.c
+++ b/drivers/platform/x86/dell-wmi-sysman/int-attributes.c
@@ -175,5 +175,8 @@ void exit_int_attributes(void)
sysfs_remove_group(wmi_priv.integer_data[instance_id].attr_name_kobj,
&integer_attr_group);
}
+ wmi_priv.integer_instances_count = 0;
+
kfree(wmi_priv.integer_data);
+ wmi_priv.integer_data = NULL;
}
diff --git a/drivers/platform/x86/dell-wmi-sysman/passobj-attributes.c b/drivers/platform/x86/dell-wmi-sysman/passobj-attributes.c
index 3abcd95477c0..834b3e82ad9f 100644
--- a/drivers/platform/x86/dell-wmi-sysman/passobj-attributes.c
+++ b/drivers/platform/x86/dell-wmi-sysman/passobj-attributes.c
@@ -183,5 +183,8 @@ void exit_po_attributes(void)
sysfs_remove_group(wmi_priv.po_data[instance_id].attr_name_kobj,
&po_attr_group);
}
+ wmi_priv.po_instances_count = 0;
+
kfree(wmi_priv.po_data);
+ wmi_priv.po_data = NULL;
}
diff --git a/drivers/platform/x86/dell-wmi-sysman/string-attributes.c b/drivers/platform/x86/dell-wmi-sysman/string-attributes.c
index ac75dce88a4c..552537852459 100644
--- a/drivers/platform/x86/dell-wmi-sysman/string-attributes.c
+++ b/drivers/platform/x86/dell-wmi-sysman/string-attributes.c
@@ -155,5 +155,8 @@ void exit_str_attributes(void)
sysfs_remove_group(wmi_priv.str_data[instance_id].attr_name_kobj,
&str_attr_group);
}
+ wmi_priv.str_instances_count = 0;
+
kfree(wmi_priv.str_data);
+ wmi_priv.str_data = NULL;
}
diff --git a/drivers/platform/x86/dell-wmi-sysman/sysman.c b/drivers/platform/x86/dell-wmi-sysman/sysman.c
index cb81010ba1a2..7410ccae650c 100644
--- a/drivers/platform/x86/dell-wmi-sysman/sysman.c
+++ b/drivers/platform/x86/dell-wmi-sysman/sysman.c
@@ -210,25 +210,17 @@ static struct kobj_attribute pending_reboot = __ATTR_RO(pending_reboot);
*/
static int create_attributes_level_sysfs_files(void)
{
- int ret = sysfs_create_file(&wmi_priv.main_dir_kset->kobj, &reset_bios.attr);
+ int ret;
- if (ret) {
- pr_debug("could not create reset_bios file\n");
+ ret = sysfs_create_file(&wmi_priv.main_dir_kset->kobj, &reset_bios.attr);
+ if (ret)
return ret;
- }
ret = sysfs_create_file(&wmi_priv.main_dir_kset->kobj, &pending_reboot.attr);
- if (ret) {
- pr_debug("could not create changing_pending_reboot file\n");
- sysfs_remove_file(&wmi_priv.main_dir_kset->kobj, &reset_bios.attr);
- }
- return ret;
-}
+ if (ret)
+ return ret;
-static void release_reset_bios_data(void)
-{
- sysfs_remove_file(&wmi_priv.main_dir_kset->kobj, &reset_bios.attr);
- sysfs_remove_file(&wmi_priv.main_dir_kset->kobj, &pending_reboot.attr);
+ return 0;
}
static ssize_t wmi_sysman_attr_show(struct kobject *kobj, struct attribute *attr,
@@ -373,8 +365,6 @@ static void destroy_attribute_objs(struct kset *kset)
*/
static void release_attributes_data(void)
{
- release_reset_bios_data();
-
mutex_lock(&wmi_priv.mutex);
exit_enum_attributes();
exit_int_attributes();
@@ -386,11 +376,13 @@ static void release_attributes_data(void)
wmi_priv.authentication_dir_kset = NULL;
}
if (wmi_priv.main_dir_kset) {
+ sysfs_remove_file(&wmi_priv.main_dir_kset->kobj, &reset_bios.attr);
+ sysfs_remove_file(&wmi_priv.main_dir_kset->kobj, &pending_reboot.attr);
destroy_attribute_objs(wmi_priv.main_dir_kset);
kset_unregister(wmi_priv.main_dir_kset);
+ wmi_priv.main_dir_kset = NULL;
}
mutex_unlock(&wmi_priv.mutex);
-
}
/**
@@ -497,7 +489,6 @@ static int init_bios_attributes(int attr_type, const char *guid)
err_attr_init:
mutex_unlock(&wmi_priv.mutex);
- release_attributes_data();
kfree(obj);
return retval;
}
@@ -513,102 +504,91 @@ static int __init sysman_init(void)
}
ret = init_bios_attr_set_interface();
- if (ret || !wmi_priv.bios_attr_wdev) {
- pr_debug("failed to initialize set interface\n");
- goto fail_set_interface;
- }
+ if (ret)
+ return ret;
ret = init_bios_attr_pass_interface();
- if (ret || !wmi_priv.password_attr_wdev) {
- pr_debug("failed to initialize pass interface\n");
- goto fail_pass_interface;
+ if (ret)
+ goto err_exit_bios_attr_set_interface;
+
+ if (!wmi_priv.bios_attr_wdev || !wmi_priv.password_attr_wdev) {
+ pr_debug("failed to find set or pass interface\n");
+ ret = -ENODEV;
+ goto err_exit_bios_attr_pass_interface;
}
ret = class_register(&firmware_attributes_class);
if (ret)
- goto fail_class;
+ goto err_exit_bios_attr_pass_interface;
wmi_priv.class_dev = device_create(&firmware_attributes_class, NULL, MKDEV(0, 0),
NULL, "%s", DRIVER_NAME);
if (IS_ERR(wmi_priv.class_dev)) {
ret = PTR_ERR(wmi_priv.class_dev);
- goto fail_classdev;
+ goto err_unregister_class;
}
wmi_priv.main_dir_kset = kset_create_and_add("attributes", NULL,
&wmi_priv.class_dev->kobj);
if (!wmi_priv.main_dir_kset) {
ret = -ENOMEM;
- goto fail_main_kset;
+ goto err_destroy_classdev;
}
wmi_priv.authentication_dir_kset = kset_create_and_add("authentication", NULL,
&wmi_priv.class_dev->kobj);
if (!wmi_priv.authentication_dir_kset) {
ret = -ENOMEM;
- goto fail_authentication_kset;
+ goto err_release_attributes_data;
}
ret = create_attributes_level_sysfs_files();
if (ret) {
pr_debug("could not create reset BIOS attribute\n");
- goto fail_reset_bios;
+ goto err_release_attributes_data;
}
ret = init_bios_attributes(ENUM, DELL_WMI_BIOS_ENUMERATION_ATTRIBUTE_GUID);
if (ret) {
pr_debug("failed to populate enumeration type attributes\n");
- goto fail_create_group;
+ goto err_release_attributes_data;
}
ret = init_bios_attributes(INT, DELL_WMI_BIOS_INTEGER_ATTRIBUTE_GUID);
if (ret) {
pr_debug("failed to populate integer type attributes\n");
- goto fail_create_group;
+ goto err_release_attributes_data;
}
ret = init_bios_attributes(STR, DELL_WMI_BIOS_STRING_ATTRIBUTE_GUID);
if (ret) {
pr_debug("failed to populate string type attributes\n");
- goto fail_create_group;
+ goto err_release_attributes_data;
}
ret = init_bios_attributes(PO, DELL_WMI_BIOS_PASSOBJ_ATTRIBUTE_GUID);
if (ret) {
pr_debug("failed to populate pass object type attributes\n");
- goto fail_create_group;
+ goto err_release_attributes_data;
}
return 0;
-fail_create_group:
+err_release_attributes_data:
release_attributes_data();
-fail_reset_bios:
- if (wmi_priv.authentication_dir_kset) {
- kset_unregister(wmi_priv.authentication_dir_kset);
- wmi_priv.authentication_dir_kset = NULL;
- }
-
-fail_authentication_kset:
- if (wmi_priv.main_dir_kset) {
- kset_unregister(wmi_priv.main_dir_kset);
- wmi_priv.main_dir_kset = NULL;
- }
-
-fail_main_kset:
+err_destroy_classdev:
device_destroy(&firmware_attributes_class, MKDEV(0, 0));
-fail_classdev:
+err_unregister_class:
class_unregister(&firmware_attributes_class);
-fail_class:
+err_exit_bios_attr_pass_interface:
exit_bios_attr_pass_interface();
-fail_pass_interface:
+err_exit_bios_attr_set_interface:
exit_bios_attr_set_interface();
-fail_set_interface:
return ret;
}
diff --git a/drivers/platform/x86/ideapad-laptop.c b/drivers/platform/x86/ideapad-laptop.c
index 5b81bafa5c16..cc42af2a0a98 100644
--- a/drivers/platform/x86/ideapad-laptop.c
@ -2772,29 +2715,6 @@ index 2f5b8d09143e..57cc92891a57 100644
{ }
};
diff --git a/drivers/platform/x86/intel-vbtn.c b/drivers/platform/x86/intel-vbtn.c
index 30a9062d2b4b..a90c32d072da 100644
--- a/drivers/platform/x86/intel-vbtn.c
+++ b/drivers/platform/x86/intel-vbtn.c
@@ -47,8 +47,16 @@ static const struct key_entry intel_vbtn_keymap[] = {
};
static const struct key_entry intel_vbtn_switchmap[] = {
- { KE_SW, 0xCA, { .sw = { SW_DOCK, 1 } } }, /* Docked */
- { KE_SW, 0xCB, { .sw = { SW_DOCK, 0 } } }, /* Undocked */
+ /*
+ * SW_DOCK should only be reported for docking stations, but DSDTs using the
+ * intel-vbtn code, always seem to use this for 2-in-1s / convertibles and set
+ * SW_DOCK=1 when in laptop-mode (in tandem with setting SW_TABLET_MODE=0).
+ * This causes userspace to think the laptop is docked to a port-replicator
+ * and to disable suspend-on-lid-close, which is undesirable.
+ * Map the dock events to KEY_IGNORE to avoid this broken SW_DOCK reporting.
+ */
+ { KE_IGNORE, 0xCA, { .sw = { SW_DOCK, 1 } } }, /* Docked */
+ { KE_IGNORE, 0xCB, { .sw = { SW_DOCK, 0 } } }, /* Undocked */
{ KE_SW, 0xCC, { .sw = { SW_TABLET_MODE, 1 } } }, /* Tablet */
{ KE_SW, 0xCD, { .sw = { SW_TABLET_MODE, 0 } } }, /* Laptop */
};
diff --git a/drivers/platform/x86/thinkpad_acpi.c b/drivers/platform/x86/thinkpad_acpi.c
index f3e8eca8d86d..9ecf7829b3d8 100644
--- a/drivers/platform/x86/thinkpad_acpi.c

View File

@ -1,3 +1,3 @@
SHA512 (linux-5.11.10.tar.xz) = be03e9b9b065493733e91e8cf4c38a8684c6b2a4b8eb18bd1e08f2e82e3e20dfa3eb3aaccbbaf73694db245188f1275c3ba1da6a4b5c9a346aeafdebbe85f145
SHA512 (kernel-abi-whitelists-5.11.10-200.tar.bz2) = 898f8ca896a981db23dcc81b4f202d850a16e57e8ae33308bcd34e26c7191e02d41c96959b2e0cf742b2fadd50c2cd4c6968c59f89350c1ad8bf6e604dd9572a
SHA512 (kernel-kabi-dw-5.11.10-200.tar.bz2) = 0fa4e361af96088f30b8650303ec4d0f865913b38e6bff55d81ec69d03efd23fa91263758f069790ffe476c7c39933935846f279da5fbd98db577296709f5e05
SHA512 (linux-5.11.11.tar.xz) = c644166f844e31c4e5a6b9721726ba8a59468f524f231ea1e8e0d9091a4c9a7b5874742f35f132444f2fe305dce8d80830895ccbb41be39df3a0a96c56909e5a
SHA512 (kernel-abi-whitelists-5.11.11-200.tar.bz2) = ea14568cfba86afff03e10ad48cca3ff3f4c36960b38ee7cbbe24b9ca44d070b4a0d88183c20818d8090736a1ef8810a818ede163858368e362b1c5f807dcdf1
SHA512 (kernel-kabi-dw-5.11.11-200.tar.bz2) = fb9e3950ff4fbdcb57e9547d8487af5369b5a3f9cd20902b8dac1680039fd4ede76c9a13cb1fbacf8937261996c6a1d83427feda7b166ca609e2cc4b7d79d3c2