summarylogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--.SRCINFO9
-rw-r--r--0c3d7282233c7b02c74400b49981d6fff1d683a8.patch328
-rw-r--r--PKGBUILD24
3 files changed, 23 insertions, 338 deletions
diff --git a/.SRCINFO b/.SRCINFO
index a08de9254395..76d535372168 100644
--- a/.SRCINFO
+++ b/.SRCINFO
@@ -1,7 +1,7 @@
pkgbase = linux-hynix
- pkgver = 5.2.1.arch1
+ pkgver = 5.2.2.arch1
pkgrel = 1
- url = https://git.archlinux.org/linux.git/log/?h=v5.2.1-arch1
+ url = https://git.archlinux.org/linux.git/log/?h=v5.2.2-arch1
arch = x86_64
license = GPL2
makedepends = xmlto
@@ -15,14 +15,13 @@ pkgbase = linux-hynix
makedepends = graphviz
makedepends = imagemagick
options = !strip
- source = archlinux-linux::git+https://git.archlinux.org/linux.git?signed#tag=v5.2.1-arch1
+ source = archlinux-linux::git+https://git.archlinux.org/linux.git?signed#tag=v5.2.2-arch1
source = config
source = 60-linux.hook
source = 90-linux.hook
source = linux.preset
source = v2-1-2-pci-prevent-sk-hynix-nvme-from-entering-D3.patch
source = v2-2-2-nvme-add-quirk-to-not-call-disable-function-when-suspending.patch
- source = 0c3d7282233c7b02c74400b49981d6fff1d683a8.patch
validpgpkeys = ABAF11C65A2970B130ABE3C479BE3E4300411886
validpgpkeys = 647F28654894E3BD457199BE38DBBDC86092693E
validpgpkeys = 8218F88849AAC522E94CF470A5E9288C4FA415FA
@@ -35,7 +34,7 @@ pkgbase = linux-hynix
sha256sums = 5a8830cf8803df4a72ba69ad0d5105d3e3db44f5d8b2edfbfd56bc358c473d16
pkgname = linux-hynix
- pkgdesc = The Linux-hynix kernel and modules
+ pkgdesc = The Linux-hynix kernel and modules with patches for Hynix SSDs from https://bugs.launchpad.net/ubuntu/+source/linux/+bug/1801875
install = linux.install
depends = coreutils
depends = linux-firmware
diff --git a/0c3d7282233c7b02c74400b49981d6fff1d683a8.patch b/0c3d7282233c7b02c74400b49981d6fff1d683a8.patch
deleted file mode 100644
index 61be10077086..000000000000
--- a/0c3d7282233c7b02c74400b49981d6fff1d683a8.patch
+++ /dev/null
@@ -1,328 +0,0 @@
-From 0c3d7282233c7b02c74400b49981d6fff1d683a8 Mon Sep 17 00:00:00 2001
-From: Haim Dreyfuss <haim.dreyfuss@intel.com>
-Date: Wed, 27 Feb 2019 16:43:45 +0200
-Subject: iwlwifi: Add support for SAR South Korea limitation
-
-South Korea is adding a more strict SAR limit called "Limb SAR".
-Currently, WGDS SAR offset group 3 is not used (not mapped to any country).
-In order to be able to comply with South Korea new restriction:
-- OEM will use WGDS SAR offset group 3 to South Korea limitation.
-- OEM will change WGDS revision to 1 (currently latest revision is 0)
- to notify that Korea Limb SAR applied.
-- Driver will read the WGDS table and pass the values to FW (as usual)
-- Driver will pass to FW an indication that Korea Limb SAR is applied
- in case table revision is 1.
-
-Signed-off-by: Haim Dreyfuss <haim.dreyfuss@intel.com>
-Signed-off-by: Luca Coelho <luciano.coelho@intel.com>
----
- drivers/net/wireless/intel/iwlwifi/fw/acpi.c | 28 +++++++-----
- drivers/net/wireless/intel/iwlwifi/fw/acpi.h | 5 ++-
- drivers/net/wireless/intel/iwlwifi/fw/api/power.h | 12 +++++
- drivers/net/wireless/intel/iwlwifi/fw/file.h | 3 ++
- drivers/net/wireless/intel/iwlwifi/mvm/fw.c | 55 ++++++++++++++++-------
- drivers/net/wireless/intel/iwlwifi/mvm/mvm.h | 1 +
- 6 files changed, 76 insertions(+), 28 deletions(-)
-
-diff --git a/drivers/net/wireless/intel/iwlwifi/fw/acpi.c b/drivers/net/wireless/intel/iwlwifi/fw/acpi.c
-index 405038ce98d6..7573af2d88ce 100644
---- a/drivers/net/wireless/intel/iwlwifi/fw/acpi.c
-+++ b/drivers/net/wireless/intel/iwlwifi/fw/acpi.c
-@@ -97,7 +97,7 @@ IWL_EXPORT_SYMBOL(iwl_acpi_get_object);
-
- union acpi_object *iwl_acpi_get_wifi_pkg(struct device *dev,
- union acpi_object *data,
-- int data_size)
-+ int data_size, int *tbl_rev)
- {
- int i;
- union acpi_object *wifi_pkg;
-@@ -113,16 +113,19 @@ union acpi_object *iwl_acpi_get_wifi_pkg(struct device *dev,
- /*
- * We need at least two packages, one for the revision and one
- * for the data itself. Also check that the revision is valid
-- * (i.e. it is an integer set to 0).
-+ * (i.e. it is an integer smaller than 2, as we currently support only
-+ * 2 revisions).
- */
- if (data->type != ACPI_TYPE_PACKAGE ||
- data->package.count < 2 ||
- data->package.elements[0].type != ACPI_TYPE_INTEGER ||
-- data->package.elements[0].integer.value != 0) {
-+ data->package.elements[0].integer.value > 1) {
- IWL_DEBUG_DEV_RADIO(dev, "Unsupported packages structure\n");
- return ERR_PTR(-EINVAL);
- }
-
-+ *tbl_rev = data->package.elements[0].integer.value;
-+
- /* loop through all the packages to find the one for WiFi */
- for (i = 1; i < data->package.count; i++) {
- union acpi_object *domain;
-@@ -151,14 +154,15 @@ int iwl_acpi_get_mcc(struct device *dev, char *mcc)
- {
- union acpi_object *wifi_pkg, *data;
- u32 mcc_val;
-- int ret;
-+ int ret, tbl_rev;
-
- data = iwl_acpi_get_object(dev, ACPI_WRDD_METHOD);
- if (IS_ERR(data))
- return PTR_ERR(data);
-
-- wifi_pkg = iwl_acpi_get_wifi_pkg(dev, data, ACPI_WRDD_WIFI_DATA_SIZE);
-- if (IS_ERR(wifi_pkg)) {
-+ wifi_pkg = iwl_acpi_get_wifi_pkg(dev, data, ACPI_WRDD_WIFI_DATA_SIZE,
-+ &tbl_rev);
-+ if (IS_ERR(wifi_pkg) || tbl_rev != 0) {
- ret = PTR_ERR(wifi_pkg);
- goto out_free;
- }
-@@ -185,6 +189,7 @@ u64 iwl_acpi_get_pwr_limit(struct device *dev)
- {
- union acpi_object *data, *wifi_pkg;
- u64 dflt_pwr_limit;
-+ int tbl_rev;
-
- data = iwl_acpi_get_object(dev, ACPI_SPLC_METHOD);
- if (IS_ERR(data)) {
-@@ -193,8 +198,8 @@ u64 iwl_acpi_get_pwr_limit(struct device *dev)
- }
-
- wifi_pkg = iwl_acpi_get_wifi_pkg(dev, data,
-- ACPI_SPLC_WIFI_DATA_SIZE);
-- if (IS_ERR(wifi_pkg) ||
-+ ACPI_SPLC_WIFI_DATA_SIZE, &tbl_rev);
-+ if (IS_ERR(wifi_pkg) || tbl_rev != 0 ||
- wifi_pkg->package.elements[1].integer.value != ACPI_TYPE_INTEGER) {
- dflt_pwr_limit = 0;
- goto out_free;
-@@ -211,14 +216,15 @@ IWL_EXPORT_SYMBOL(iwl_acpi_get_pwr_limit);
- int iwl_acpi_get_eckv(struct device *dev, u32 *extl_clk)
- {
- union acpi_object *wifi_pkg, *data;
-- int ret;
-+ int ret, tbl_rev;
-
- data = iwl_acpi_get_object(dev, ACPI_ECKV_METHOD);
- if (IS_ERR(data))
- return PTR_ERR(data);
-
-- wifi_pkg = iwl_acpi_get_wifi_pkg(dev, data, ACPI_ECKV_WIFI_DATA_SIZE);
-- if (IS_ERR(wifi_pkg)) {
-+ wifi_pkg = iwl_acpi_get_wifi_pkg(dev, data, ACPI_ECKV_WIFI_DATA_SIZE,
-+ &tbl_rev);
-+ if (IS_ERR(wifi_pkg) || tbl_rev != 0) {
- ret = PTR_ERR(wifi_pkg);
- goto out_free;
- }
-diff --git a/drivers/net/wireless/intel/iwlwifi/fw/acpi.h b/drivers/net/wireless/intel/iwlwifi/fw/acpi.h
-index f5704e16643f..991a23450999 100644
---- a/drivers/net/wireless/intel/iwlwifi/fw/acpi.h
-+++ b/drivers/net/wireless/intel/iwlwifi/fw/acpi.h
-@@ -97,7 +97,7 @@
- void *iwl_acpi_get_object(struct device *dev, acpi_string method);
- union acpi_object *iwl_acpi_get_wifi_pkg(struct device *dev,
- union acpi_object *data,
-- int data_size);
-+ int data_size, int *tbl_rev);
-
- /**
- * iwl_acpi_get_mcc - read MCC from ACPI, if available
-@@ -131,7 +131,8 @@ static inline void *iwl_acpi_get_object(struct device *dev, acpi_string method)
-
- static inline union acpi_object *iwl_acpi_get_wifi_pkg(struct device *dev,
- union acpi_object *data,
-- int data_size)
-+ int data_size,
-+ int *tbl_rev)
- {
- return ERR_PTR(-ENOENT);
- }
-diff --git a/drivers/net/wireless/intel/iwlwifi/fw/api/power.h b/drivers/net/wireless/intel/iwlwifi/fw/api/power.h
-index 01f003c6cff9..f195db398bed 100644
---- a/drivers/net/wireless/intel/iwlwifi/fw/api/power.h
-+++ b/drivers/net/wireless/intel/iwlwifi/fw/api/power.h
-@@ -419,14 +419,26 @@ struct iwl_per_chain_offset_group {
- struct iwl_per_chain_offset hb;
- } __packed; /* PER_CHAIN_LIMIT_OFFSET_GROUP_S_VER_1 */
-
-+/**
-+ * struct iwl_geo_tx_power_profile_cmd_v1 - struct for GEO_TX_POWER_LIMIT cmd.
-+ * @ops: operations, value from &enum iwl_geo_per_chain_offset_operation
-+ * @table: offset profile per band.
-+ */
-+struct iwl_geo_tx_power_profiles_cmd_v1 {
-+ __le32 ops;
-+ struct iwl_per_chain_offset_group table[IWL_NUM_GEO_PROFILES];
-+} __packed; /* GEO_TX_POWER_LIMIT_VER_1 */
-+
- /**
- * struct iwl_geo_tx_power_profile_cmd - struct for GEO_TX_POWER_LIMIT cmd.
- * @ops: operations, value from &enum iwl_geo_per_chain_offset_operation
- * @table: offset profile per band.
-+ * @table_revision: BIOS table revision.
- */
- struct iwl_geo_tx_power_profiles_cmd {
- __le32 ops;
- struct iwl_per_chain_offset_group table[IWL_NUM_GEO_PROFILES];
-+ __le32 table_revision;
- } __packed; /* GEO_TX_POWER_LIMIT */
-
- /**
-diff --git a/drivers/net/wireless/intel/iwlwifi/fw/file.h b/drivers/net/wireless/intel/iwlwifi/fw/file.h
-index 7b65a94ba7dd..0c38e7392b61 100644
---- a/drivers/net/wireless/intel/iwlwifi/fw/file.h
-+++ b/drivers/net/wireless/intel/iwlwifi/fw/file.h
-@@ -287,6 +287,8 @@ typedef unsigned int __bitwise iwl_ucode_tlv_api_t;
- * SCAN_OFFLOAD_PROFILES_QUERY_RSP_S.
- * @IWL_UCODE_TLV_API_MBSSID_HE: This ucode supports v2 of
- * STA_CONTEXT_DOT11AX_API_S
-+ * @IWL_UCODE_TLV_CAPA_SAR_TABLE_VER: This ucode supports different sar
-+ * version tables.
- *
- * @NUM_IWL_UCODE_TLV_API: number of bits used
- */
-@@ -319,6 +321,7 @@ enum iwl_ucode_tlv_api {
- IWL_UCODE_TLV_API_MBSSID_HE = (__force iwl_ucode_tlv_api_t)52,
- IWL_UCODE_TLV_API_WOWLAN_TCP_SYN_WAKE = (__force iwl_ucode_tlv_api_t)53,
- IWL_UCODE_TLV_API_FTM_RTT_ACCURACY = (__force iwl_ucode_tlv_api_t)54,
-+ IWL_UCODE_TLV_API_SAR_TABLE_VER = (__force iwl_ucode_tlv_api_t)55,
-
- NUM_IWL_UCODE_TLV_API
- #ifdef __CHECKER__
-diff --git a/drivers/net/wireless/intel/iwlwifi/mvm/fw.c b/drivers/net/wireless/intel/iwlwifi/mvm/fw.c
-index e0a7bdab7286..f100b882397c 100644
---- a/drivers/net/wireless/intel/iwlwifi/mvm/fw.c
-+++ b/drivers/net/wireless/intel/iwlwifi/mvm/fw.c
-@@ -683,15 +683,15 @@ static int iwl_mvm_sar_get_wrds_table(struct iwl_mvm *mvm)
- {
- union acpi_object *wifi_pkg, *table, *data;
- bool enabled;
-- int ret;
-+ int ret, tbl_rev;
-
- data = iwl_acpi_get_object(mvm->dev, ACPI_WRDS_METHOD);
- if (IS_ERR(data))
- return PTR_ERR(data);
-
- wifi_pkg = iwl_acpi_get_wifi_pkg(mvm->dev, data,
-- ACPI_WRDS_WIFI_DATA_SIZE);
-- if (IS_ERR(wifi_pkg)) {
-+ ACPI_WRDS_WIFI_DATA_SIZE, &tbl_rev);
-+ if (IS_ERR(wifi_pkg) || tbl_rev != 0) {
- ret = PTR_ERR(wifi_pkg);
- goto out_free;
- }
-@@ -720,15 +720,15 @@ static int iwl_mvm_sar_get_ewrd_table(struct iwl_mvm *mvm)
- {
- union acpi_object *wifi_pkg, *data;
- bool enabled;
-- int i, n_profiles, ret;
-+ int i, n_profiles, ret, tbl_rev;
-
- data = iwl_acpi_get_object(mvm->dev, ACPI_EWRD_METHOD);
- if (IS_ERR(data))
- return PTR_ERR(data);
-
- wifi_pkg = iwl_acpi_get_wifi_pkg(mvm->dev, data,
-- ACPI_EWRD_WIFI_DATA_SIZE);
-- if (IS_ERR(wifi_pkg)) {
-+ ACPI_EWRD_WIFI_DATA_SIZE, &tbl_rev);
-+ if (IS_ERR(wifi_pkg) || tbl_rev != 0) {
- ret = PTR_ERR(wifi_pkg);
- goto out_free;
- }
-@@ -779,7 +779,7 @@ out_free:
- static int iwl_mvm_sar_get_wgds_table(struct iwl_mvm *mvm)
- {
- union acpi_object *wifi_pkg, *data;
-- int i, j, ret;
-+ int i, j, ret, tbl_rev;
- int idx = 1;
-
- data = iwl_acpi_get_object(mvm->dev, ACPI_WGDS_METHOD);
-@@ -787,12 +787,13 @@ static int iwl_mvm_sar_get_wgds_table(struct iwl_mvm *mvm)
- return PTR_ERR(data);
-
- wifi_pkg = iwl_acpi_get_wifi_pkg(mvm->dev, data,
-- ACPI_WGDS_WIFI_DATA_SIZE);
-- if (IS_ERR(wifi_pkg)) {
-+ ACPI_WGDS_WIFI_DATA_SIZE, &tbl_rev);
-+ if (IS_ERR(wifi_pkg) || tbl_rev > 1) {
- ret = PTR_ERR(wifi_pkg);
- goto out_free;
- }
-
-+ mvm->geo_rev = tbl_rev;
- for (i = 0; i < ACPI_NUM_GEO_PROFILES; i++) {
- for (j = 0; j < ACPI_GEO_TABLE_SIZE; j++) {
- union acpi_object *entry;
-@@ -879,15 +880,29 @@ int iwl_mvm_get_sar_geo_profile(struct iwl_mvm *mvm)
- {
- struct iwl_geo_tx_power_profiles_resp *resp;
- int ret;
-+ u16 len;
-+ void *data;
-+ struct iwl_geo_tx_power_profiles_cmd geo_cmd;
-+ struct iwl_geo_tx_power_profiles_cmd_v1 geo_cmd_v1;
-+ struct iwl_host_cmd cmd;
-+
-+ if (fw_has_api(&mvm->fw->ucode_capa, IWL_UCODE_TLV_API_SAR_TABLE_VER)) {
-+ geo_cmd.ops =
-+ cpu_to_le32(IWL_PER_CHAIN_OFFSET_GET_CURRENT_TABLE);
-+ len = sizeof(geo_cmd);
-+ data = &geo_cmd;
-+ } else {
-+ geo_cmd_v1.ops =
-+ cpu_to_le32(IWL_PER_CHAIN_OFFSET_GET_CURRENT_TABLE);
-+ len = sizeof(geo_cmd_v1);
-+ data = &geo_cmd_v1;
-+ }
-
-- struct iwl_geo_tx_power_profiles_cmd geo_cmd = {
-- .ops = cpu_to_le32(IWL_PER_CHAIN_OFFSET_GET_CURRENT_TABLE),
-- };
-- struct iwl_host_cmd cmd = {
-+ cmd = (struct iwl_host_cmd){
- .id = WIDE_ID(PHY_OPS_GROUP, GEO_TX_POWER_LIMIT),
-- .len = { sizeof(geo_cmd), },
-+ .len = { len, },
- .flags = CMD_WANT_SKB,
-- .data = { &geo_cmd },
-+ .data = { data },
- };
-
- ret = iwl_mvm_send_cmd(mvm, &cmd);
-@@ -957,6 +972,16 @@ static int iwl_mvm_sar_geo_init(struct iwl_mvm *mvm)
- i, j, value[1], value[2], value[0]);
- }
- }
-+
-+ cmd.table_revision = cpu_to_le32(mvm->geo_rev);
-+
-+ if (!fw_has_api(&mvm->fw->ucode_capa,
-+ IWL_UCODE_TLV_API_SAR_TABLE_VER)) {
-+ return iwl_mvm_send_cmd_pdu(mvm, cmd_wide_id, 0,
-+ sizeof(struct iwl_geo_tx_power_profiles_cmd_v1),
-+ &cmd);
-+ }
-+
- return iwl_mvm_send_cmd_pdu(mvm, cmd_wide_id, 0, sizeof(cmd), &cmd);
- }
-
-diff --git a/drivers/net/wireless/intel/iwlwifi/mvm/mvm.h b/drivers/net/wireless/intel/iwlwifi/mvm/mvm.h
-index a8b2ca87da33..510140259b4f 100644
---- a/drivers/net/wireless/intel/iwlwifi/mvm/mvm.h
-+++ b/drivers/net/wireless/intel/iwlwifi/mvm/mvm.h
-@@ -1180,6 +1180,7 @@ struct iwl_mvm {
- #ifdef CONFIG_ACPI
- struct iwl_mvm_sar_profile sar_profiles[ACPI_SAR_PROFILE_NUM];
- struct iwl_mvm_geo_profile geo_profiles[ACPI_NUM_GEO_PROFILES];
-+ u32 geo_rev;
- #endif
- };
-
---
-cgit 1.2-0.3.lf.el7
-
diff --git a/PKGBUILD b/PKGBUILD
index 546d628432cf..423fff742bf3 100644
--- a/PKGBUILD
+++ b/PKGBUILD
@@ -1,10 +1,13 @@
# Maintainer: Jan Alexander Steffens (heftig) <jan.steffens@gmail.com>
# Maintainer: Tobias Powalowski <tpowa@archlinux.org>
# Contributor: Thomas Baechler <thomas@archlinux.org>
+# Contributor: AceLan Kao <acelan.kao@canonical.com>
+# Contributor: Daniel Holz <daniel.holz91 at gmail dot com>
+# Contributor: Tk-Glitch <ti3nou at gmail dot com>
pkgbase=linux-hynix # Build stock -ARCH kernel
#pkgbase=linux-custom # Build kernel with a different name
-_srcver=5.2.1-arch1
+_srcver=5.2.2-arch1
pkgver=${_srcver//-/.}
pkgrel=1
arch=(x86_64)
@@ -24,7 +27,6 @@ source=(
linux.preset # standard config files for mkinitcpio ramdisk
v2-1-2-pci-prevent-sk-hynix-nvme-from-entering-D3.patch
v2-2-2-nvme-add-quirk-to-not-call-disable-function-when-suspending.patch
- 0c3d7282233c7b02c74400b49981d6fff1d683a8.patch
)
validpgpkeys=(
'ABAF11C65A2970B130ABE3C479BE3E4300411886' # Linus Torvalds
@@ -37,8 +39,7 @@ sha256sums=('SKIP'
'c043f3033bb781e2688794a59f6d1f7ed49ef9b13eb77ff9a425df33a244a636'
'ad6344badc91ad0630caacde83f7f9b97276f80d26a20619a87952be65492c65'
'dbc9d913a2d41c7809b99cf86ad63d3f4eb2e4d10ab3f6564203e4a21803b98f'
- '5a8830cf8803df4a72ba69ad0d5105d3e3db44f5d8b2edfbfd56bc358c473d16'
- 'cd106d38b19709d2ba690dce3ca47ee8bfd71931ecd948d9bffdb4ecb00d65ca')
+ '5a8830cf8803df4a72ba69ad0d5105d3e3db44f5d8b2edfbfd56bc358c473d16')
_kernelname=${pkgbase#linux}
: ${_kernelname:=-ARCH}
@@ -64,6 +65,19 @@ prepare() {
cp ../config .config
make olddefconfig
+# modprobed-db
+ if [ -z "$_modprobeddb" ]; then
+ plain ""
+ plain "Use modprobed db to clean config from unneeded modules? Speeds up compilation considerably. Requires root."
+ plain "https://wiki.archlinux.org/index.php/Modprobed-db"
+ plain "!!!! Make sure to have a well populated db !!!!"
+ read -rp "`echo $' > N/y : '`" CONDITION9;
+ fi
+ if [ "$CONDITION9" == "y" ] || [ "$_modprobeddb" == "true" ]; then
+ sudo modprobed-db recall
+ make localmodconfig
+ fi
+
make -s kernelrelease > ../version
msg2 "Prepared %s version %s" "$pkgbase" "$(<../version)"
}
@@ -74,7 +88,7 @@ build() {
}
_package() {
- pkgdesc="The ${pkgbase/linux/Linux} kernel and modules"
+ pkgdesc="The ${pkgbase/linux/Linux} kernel and modules with patches for Hynix SSDs from https://bugs.launchpad.net/ubuntu/+source/linux/+bug/1801875"
[[ $pkgbase = linux ]] && groups=(base)
depends=(coreutils linux-firmware kmod mkinitcpio)
optdepends=('crda: to set the correct wireless channels of your country')