diff options
author | graysky | 2020-02-11 15:20:09 -0500 |
---|---|---|
committer | graysky | 2020-02-11 15:20:09 -0500 |
commit | e5933947645595091f113caf556734083c8a1288 (patch) | |
tree | bf2e6f80ba29907d2c71e96e3fc766da2b643cc9 | |
parent | 8fca074632313e5b46bc017a979b301606512edb (diff) | |
download | aur-e5933947645595091f113caf556734083c8a1288.tar.gz |
Update to 5.5.3-1
-rw-r--r-- | .SRCINFO | 30 | ||||
-rw-r--r-- | 0001-ZEN-Add-sysctl-and-CONFIG-to-disallow-unprivileged-C.patch | 4 | ||||
-rw-r--r-- | 0002-iwlwifi-pcie-restore-support-for-Killer-Qu-C0-NICs.patch | 4 | ||||
-rw-r--r-- | 0003-ALSA-hda-Fix-DP-MST-support-for-NVIDIA-codecs.patch | 182 | ||||
-rw-r--r-- | 0003-iwlwifi-mvm-Do-not-require-PHY_SKU-NVM-section-for-3.patch | 40 | ||||
-rw-r--r-- | 0004-Btrfs-send-fix-emission-of-invalid-clone-operations-.patch | 92 | ||||
-rw-r--r-- | 0004-drm-i915-Wean-off-drm_pci_alloc-drm_pci_free.patch | 260 | ||||
-rw-r--r-- | 0005-drm-Remove-PageReserved-manipulation-from-drm_pci_al.patch | 91 | ||||
-rw-r--r-- | 0006-drm-i915-execlists-Always-force-a-context-reload-whe.patch | 145 | ||||
-rw-r--r-- | PKGBUILD | 22 |
10 files changed, 570 insertions, 300 deletions
@@ -1,5 +1,5 @@ pkgbase = linux-ck - pkgver = 5.5.2 + pkgver = 5.5.3 pkgrel = 1 url = https://wiki.archlinux.org/index.php/Linux-ck arch = x86_64 @@ -8,26 +8,30 @@ pkgbase = linux-ck makedepends = kmod makedepends = libelf options = !strip - source = https://www.kernel.org/pub/linux/kernel/v5.x/linux-5.5.2.tar.xz - source = https://www.kernel.org/pub/linux/kernel/v5.x/linux-5.5.2.tar.sign + source = https://www.kernel.org/pub/linux/kernel/v5.x/linux-5.5.3.tar.xz + source = https://www.kernel.org/pub/linux/kernel/v5.x/linux-5.5.3.tar.sign source = config source = enable_additional_cpu_optimizations-20191217.tar.gz::https://github.com/graysky2/kernel_gcc_patch/archive/20191217.tar.gz source = http://ck.kolivas.org/patches/5.0/5.5/5.5-ck1/patch-5.5-ck1.xz source = 0001-ZEN-Add-sysctl-and-CONFIG-to-disallow-unprivileged-C.patch source = 0002-iwlwifi-pcie-restore-support-for-Killer-Qu-C0-NICs.patch - source = 0003-ALSA-hda-Fix-DP-MST-support-for-NVIDIA-codecs.patch - source = 0004-Btrfs-send-fix-emission-of-invalid-clone-operations-.patch + source = 0003-iwlwifi-mvm-Do-not-require-PHY_SKU-NVM-section-for-3.patch + source = 0004-drm-i915-Wean-off-drm_pci_alloc-drm_pci_free.patch + source = 0005-drm-Remove-PageReserved-manipulation-from-drm_pci_al.patch + source = 0006-drm-i915-execlists-Always-force-a-context-reload-whe.patch validpgpkeys = ABAF11C65A2970B130ABE3C479BE3E4300411886 validpgpkeys = 647F28654894E3BD457199BE38DBBDC86092693E - sha256sums = 24f5f383b0337374f160723bcf3bf679c75cb5bd3fd0824a56998e47c04ef99e + sha256sums = 2bef3edcf44c746383045f4a809b2013e18c52319c827875ed8e89138951cab2 sha256sums = SKIP sha256sums = eb95e2f45dc868b097136d75077b8861b85fea109de78bff253fbf98162e5cb6 sha256sums = 7a4a209de815f4bae49c7c577c0584c77257e3953ac4324d2aa425859ba657f5 sha256sums = 37a9d61e8a0b5a73992e1397c3a9cc947d39e715f205f3c665eb157b96d58f98 - sha256sums = 7c66fd00db7147d62274edc0cf0276fcca1036892a354b31deb20c424462cf2c - sha256sums = db6aa91dd446a021945f8671c70cafbfc743a3cba7f0d0f4b02bde6cf98c376e - sha256sums = 3299c34452dbaa480e253e03d3f4bd44805ac732fd4c3e7ebbd228bf51229419 - sha256sums = 84d3ab282a371f616fc7be5089ec71ece1e193700afe4e77c86ce50ce579e253 + sha256sums = c981eacffe1091fbd4b22fd6359163bea343591c44c7c53573391541eb943d17 + sha256sums = a25a82ce5a7e84d7a580036a250aa4d2621ab0fdac0f375b40417a207f87cf87 + sha256sums = d5b209bcd90d11fd83055ffe8aea617776101502908c4aefdc7f6f3bc3a87929 + sha256sums = 03bcdd2668403cf7875bab86313cb4719dc35e202f4bb21c61c3646215a15be3 + sha256sums = 49a63d402a35dcefe18e858b0c66d0983a075c003fcfb50426fd0ba79639fafe + sha256sums = 8e1e9cf077e774ac579bbaa7cb5932a1f96f50fad7a72fa998b868137c2472d3 pkgname = linux-ck pkgdesc = The Linux-ck kernel and modules with the ck1 patchset featuring MuQSS CPU scheduler @@ -36,11 +40,11 @@ pkgname = linux-ck depends = initramfs optdepends = crda: to set the correct wireless channels of your country optdepends = linux-firmware: firmware images needed for some devices - provides = linux-ck=5.5.2 + provides = linux-ck=5.5.3 pkgname = linux-ck-headers pkgdesc = Headers and scripts for building modules for Linux-ck kernel depends = linux-ck - provides = linux-ck-headers=5.5.2 - provides = linux-headers=5.5.2 + provides = linux-ck-headers=5.5.3 + provides = linux-headers=5.5.3 diff --git a/0001-ZEN-Add-sysctl-and-CONFIG-to-disallow-unprivileged-C.patch b/0001-ZEN-Add-sysctl-and-CONFIG-to-disallow-unprivileged-C.patch index f7b1e9f545ca..4f44a57c52b4 100644 --- a/0001-ZEN-Add-sysctl-and-CONFIG-to-disallow-unprivileged-C.patch +++ b/0001-ZEN-Add-sysctl-and-CONFIG-to-disallow-unprivileged-C.patch @@ -1,7 +1,7 @@ -From 46190aab49a3591ebd824367627b47492653fa31 Mon Sep 17 00:00:00 2001 +From 0bbf7dded241dc90f2f63ed89ea8884f3c2dd37f Mon Sep 17 00:00:00 2001 From: "Jan Alexander Steffens (heftig)" <jan.steffens@gmail.com> Date: Mon, 16 Sep 2019 04:53:20 +0200 -Subject: [PATCH 1/5] ZEN: Add sysctl and CONFIG to disallow unprivileged +Subject: [PATCH 1/7] ZEN: Add sysctl and CONFIG to disallow unprivileged CLONE_NEWUSER Our default behavior continues to match the vanilla kernel. diff --git a/0002-iwlwifi-pcie-restore-support-for-Killer-Qu-C0-NICs.patch b/0002-iwlwifi-pcie-restore-support-for-Killer-Qu-C0-NICs.patch index 679faad2bd88..bd4b2bece81f 100644 --- a/0002-iwlwifi-pcie-restore-support-for-Killer-Qu-C0-NICs.patch +++ b/0002-iwlwifi-pcie-restore-support-for-Killer-Qu-C0-NICs.patch @@ -1,7 +1,7 @@ -From 013d00e92f514854803a9abcddee1255b4cc348e Mon Sep 17 00:00:00 2001 +From 62285c8ffeb4318bad4686ab794f43a82164514b Mon Sep 17 00:00:00 2001 From: "Jan Alexander Steffens (heftig)" <jan.steffens@gmail.com> Date: Tue, 24 Dec 2019 06:16:39 +0100 -Subject: [PATCH 2/5] iwlwifi: pcie: restore support for Killer Qu C0 NICs +Subject: [PATCH 2/7] iwlwifi: pcie: restore support for Killer Qu C0 NICs Commit 809805a820c6 ("iwlwifi: pcie: move some cfg mangling from trans_pcie_alloc to probe") refactored the cfg mangling. Unfortunately, diff --git a/0003-ALSA-hda-Fix-DP-MST-support-for-NVIDIA-codecs.patch b/0003-ALSA-hda-Fix-DP-MST-support-for-NVIDIA-codecs.patch deleted file mode 100644 index 665022cd6a0b..000000000000 --- a/0003-ALSA-hda-Fix-DP-MST-support-for-NVIDIA-codecs.patch +++ /dev/null @@ -1,182 +0,0 @@ -From 6b43b6519a752c51657b9afa4eb844cad29d2b8c Mon Sep 17 00:00:00 2001 -From: Nikhil Mahale <nmahale@nvidia.com> -Date: Mon, 3 Feb 2020 15:36:17 +0530 -Subject: [PATCH 3/5] ALSA: hda - Fix DP-MST support for NVIDIA codecs - -If dyn_pcm_assign is set, different jack objects are being created -for pcm and pins. - -If dyn_pcm_assign is set, generic_hdmi_build_jack() calls into -add_hdmi_jack_kctl() to create and track separate jack object for -pcm. Like sync_eld_via_acomp(), hdmi_present_sense_via_verbs() also -need to report status change of the pcm jack. - -Rename pin_idx_to_jack() to pin_idx_to_pcm_jack(). The code to -report status change of pcm jack, move it to update_eld() which is -common for acomp and !acomp code paths. - -Fixes: 5398e94fb753 ALSA: hda - Add DP-MST support for NVIDIA codecs -Signed-off-by: Nikhil Mahale <nmahale@nvidia.com> ---- - sound/pci/hda/patch_hdmi.c | 94 +++++++++++++++++++------------------- - 1 file changed, 47 insertions(+), 47 deletions(-) - -diff --git a/sound/pci/hda/patch_hdmi.c b/sound/pci/hda/patch_hdmi.c -index 630b1f5c276d..469b25065643 100644 ---- a/sound/pci/hda/patch_hdmi.c -+++ b/sound/pci/hda/patch_hdmi.c -@@ -1477,6 +1477,35 @@ static void hdmi_pcm_reset_pin(struct hdmi_spec *spec, - per_pin->channels = 0; - } - -+static struct snd_jack *pin_idx_to_pcm_jack(struct hda_codec *codec, -+ struct hdmi_spec_per_pin *per_pin) -+{ -+ struct hdmi_spec *spec = codec->spec; -+ struct snd_jack *jack = NULL; -+ struct hda_jack_tbl *jack_tbl; -+ -+ /* if !dyn_pcm_assign, get jack from hda_jack_tbl -+ * in !dyn_pcm_assign case, spec->pcm_rec[].jack is not -+ * NULL even after snd_hda_jack_tbl_clear() is called to -+ * free snd_jack. This may cause access invalid memory -+ * when calling snd_jack_report -+ */ -+ if (per_pin->pcm_idx >= 0 && spec->dyn_pcm_assign) { -+ jack = spec->pcm_rec[per_pin->pcm_idx].jack; -+ } else if (!spec->dyn_pcm_assign) { -+ /* -+ * jack tbl doesn't support DP MST -+ * DP MST will use dyn_pcm_assign, -+ * so DP MST will never come here -+ */ -+ jack_tbl = snd_hda_jack_tbl_get_mst(codec, per_pin->pin_nid, -+ per_pin->dev_id); -+ if (jack_tbl) -+ jack = jack_tbl->jack; -+ } -+ return jack; -+} -+ - /* update per_pin ELD from the given new ELD; - * setup info frame and notification accordingly - */ -@@ -1487,9 +1516,15 @@ static bool update_eld(struct hda_codec *codec, - struct hdmi_eld *pin_eld = &per_pin->sink_eld; - struct hdmi_spec *spec = codec->spec; - bool old_eld_valid = pin_eld->eld_valid; -+ struct snd_jack *pcm_jack; - bool eld_changed; - int pcm_idx; - -+ /* pcm_idx >=0 before update_eld() means it is in monitor -+ * disconnected event. Jack must be fetched before update_eld() -+ */ -+ pcm_jack = pin_idx_to_pcm_jack(codec, per_pin); -+ - /* for monitor disconnection, save pcm_idx firstly */ - pcm_idx = per_pin->pcm_idx; - if (spec->dyn_pcm_assign) { -@@ -1544,6 +1579,14 @@ static bool update_eld(struct hda_codec *codec, - SNDRV_CTL_EVENT_MASK_VALUE | - SNDRV_CTL_EVENT_MASK_INFO, - &get_hdmi_pcm(spec, pcm_idx)->eld_ctl->id); -+ -+ if (!pcm_jack) -+ pcm_jack = pin_idx_to_pcm_jack(codec, per_pin); -+ if (eld_changed && pcm_jack) -+ snd_jack_report(pcm_jack, -+ (eld->monitor_present && eld->eld_valid) ? -+ SND_JACK_AVOUT : 0); -+ - return eld_changed; - } - -@@ -1566,7 +1609,6 @@ static bool hdmi_present_sense_via_verbs(struct hdmi_spec_per_pin *per_pin, - * the unsolicited response to avoid custom WARs. - */ - int present; -- bool ret; - bool do_repoll = false; - - present = snd_hda_jack_pin_sense(codec, pin_nid, dev_id); -@@ -1600,45 +1642,14 @@ static bool hdmi_present_sense_via_verbs(struct hdmi_spec_per_pin *per_pin, - else - update_eld(codec, per_pin, eld); - -- ret = !repoll || !eld->monitor_present || eld->eld_valid; -- - jack = snd_hda_jack_tbl_get_mst(codec, pin_nid, per_pin->dev_id); - if (jack) { -- jack->block_report = !ret; -+ jack->block_report = do_repoll; - jack->pin_sense = (eld->monitor_present && eld->eld_valid) ? - AC_PINSENSE_PRESENCE : 0; - } - mutex_unlock(&per_pin->lock); -- return ret; --} -- --static struct snd_jack *pin_idx_to_jack(struct hda_codec *codec, -- struct hdmi_spec_per_pin *per_pin) --{ -- struct hdmi_spec *spec = codec->spec; -- struct snd_jack *jack = NULL; -- struct hda_jack_tbl *jack_tbl; -- -- /* if !dyn_pcm_assign, get jack from hda_jack_tbl -- * in !dyn_pcm_assign case, spec->pcm_rec[].jack is not -- * NULL even after snd_hda_jack_tbl_clear() is called to -- * free snd_jack. This may cause access invalid memory -- * when calling snd_jack_report -- */ -- if (per_pin->pcm_idx >= 0 && spec->dyn_pcm_assign) -- jack = spec->pcm_rec[per_pin->pcm_idx].jack; -- else if (!spec->dyn_pcm_assign) { -- /* -- * jack tbl doesn't support DP MST -- * DP MST will use dyn_pcm_assign, -- * so DP MST will never come here -- */ -- jack_tbl = snd_hda_jack_tbl_get_mst(codec, per_pin->pin_nid, -- per_pin->dev_id); -- if (jack_tbl) -- jack = jack_tbl->jack; -- } -- return jack; -+ return !do_repoll; - } - - /* update ELD and jack state via audio component */ -@@ -1647,8 +1658,6 @@ static void sync_eld_via_acomp(struct hda_codec *codec, - { - struct hdmi_spec *spec = codec->spec; - struct hdmi_eld *eld = &spec->temp_eld; -- struct snd_jack *jack = NULL; -- bool changed; - int size; - - mutex_lock(&per_pin->lock); -@@ -1671,17 +1680,8 @@ static void sync_eld_via_acomp(struct hda_codec *codec, - eld->eld_size = 0; - } - -- /* pcm_idx >=0 before update_eld() means it is in monitor -- * disconnected event. Jack must be fetched before update_eld() -- */ -- jack = pin_idx_to_jack(codec, per_pin); -- changed = update_eld(codec, per_pin, eld); -- if (jack == NULL) -- jack = pin_idx_to_jack(codec, per_pin); -- if (changed && jack) -- snd_jack_report(jack, -- (eld->monitor_present && eld->eld_valid) ? -- SND_JACK_AVOUT : 0); -+ update_eld(codec, per_pin, eld); -+ - mutex_unlock(&per_pin->lock); - } - --- -2.25.0 - diff --git a/0003-iwlwifi-mvm-Do-not-require-PHY_SKU-NVM-section-for-3.patch b/0003-iwlwifi-mvm-Do-not-require-PHY_SKU-NVM-section-for-3.patch new file mode 100644 index 000000000000..bd1492b3484a --- /dev/null +++ b/0003-iwlwifi-mvm-Do-not-require-PHY_SKU-NVM-section-for-3.patch @@ -0,0 +1,40 @@ +From 0e6fb279c7fc6fc818942f668f731946286c959c Mon Sep 17 00:00:00 2001 +From: Dan Moulding <dmoulding@me.com> +Date: Tue, 28 Jan 2020 02:31:07 -0700 +Subject: [PATCH 3/7] iwlwifi: mvm: Do not require PHY_SKU NVM section for 3168 + devices + +The logic for checking required NVM sections was recently fixed in +commit b3f20e098293 ("iwlwifi: mvm: fix NVM check for 3168 +devices"). However, with that fixed the else is now taken for 3168 +devices and within the else clause there is a mandatory check for the +PHY_SKU section. This causes the parsing to fail for 3168 devices. + +The PHY_SKU section is really only mandatory for the IWL_NVM_EXT +layout (the phy_sku parameter of iwl_parse_nvm_data is only used when +the NVM type is IWL_NVM_EXT). So this changes the PHY_SKU section +check so that it's only mandatory for IWL_NVM_EXT. + +Fixes: b3f20e098293 ("iwlwifi: mvm: fix NVM check for 3168 devices") +Signed-off-by: Dan Moulding <dmoulding@me.com> +--- + drivers/net/wireless/intel/iwlwifi/mvm/nvm.c | 3 ++- + 1 file changed, 2 insertions(+), 1 deletion(-) + +diff --git a/drivers/net/wireless/intel/iwlwifi/mvm/nvm.c b/drivers/net/wireless/intel/iwlwifi/mvm/nvm.c +index 46128a2a9c6e..e98ce380c7b9 100644 +--- a/drivers/net/wireless/intel/iwlwifi/mvm/nvm.c ++++ b/drivers/net/wireless/intel/iwlwifi/mvm/nvm.c +@@ -308,7 +308,8 @@ iwl_parse_nvm_sections(struct iwl_mvm *mvm) + } + + /* PHY_SKU section is mandatory in B0 */ +- if (!mvm->nvm_sections[NVM_SECTION_TYPE_PHY_SKU].data) { ++ if (mvm->trans->cfg->nvm_type == IWL_NVM_EXT && ++ !mvm->nvm_sections[NVM_SECTION_TYPE_PHY_SKU].data) { + IWL_ERR(mvm, + "Can't parse phy_sku in B0, empty sections\n"); + return NULL; +-- +2.25.0 + diff --git a/0004-Btrfs-send-fix-emission-of-invalid-clone-operations-.patch b/0004-Btrfs-send-fix-emission-of-invalid-clone-operations-.patch deleted file mode 100644 index 26c10a8df9ba..000000000000 --- a/0004-Btrfs-send-fix-emission-of-invalid-clone-operations-.patch +++ /dev/null @@ -1,92 +0,0 @@ -From d0910be3493b40233c513c9ad01ac0878ae26a48 Mon Sep 17 00:00:00 2001 -From: Filipe Manana <fdmanana@suse.com> -Date: Wed, 29 Jan 2020 17:09:53 +0000 -Subject: [PATCH 4/5] Btrfs: send, fix emission of invalid clone operations - within the same file - -When doing an incremental send and a file has extents shared with itself -at different file offsets, it's possible for send to emit clone operations -that will fail at the destination because the source range goes beyond the -file's current size. This happens when the file size has increased in the -send snapshot, there is a hole between the shared extents and both shared -extents are at file offsets which are greater the file's size in the -parent snapshot. - -Example: - - $ mkfs.btrfs -f /dev/sdb - $ mount /dev/sdb /mnt/sdb - - $ xfs_io -f -c "pwrite -S 0xf1 0 64K" /mnt/sdb/foobar - $ btrfs subvolume snapshot -r /mnt/sdb /mnt/sdb/base - $ btrfs send -f /tmp/1.snap /mnt/sdb/base - - # Create a 320K extent at file offset 512K. - $ xfs_io -c "pwrite -S 0xab 512K 64K" /mnt/sdb/foobar - $ xfs_io -c "pwrite -S 0xcd 576K 64K" /mnt/sdb/foobar - $ xfs_io -c "pwrite -S 0xef 640K 64K" /mnt/sdb/foobar - $ xfs_io -c "pwrite -S 0x64 704K 64K" /mnt/sdb/foobar - $ xfs_io -c "pwrite -S 0x73 768K 64K" /mnt/sdb/foobar - - # Clone part of that 320K extent into a lower file offset (192K). - # This file offset is greater than the file's size in the parent - # snapshot (64K). Also the clone range is a bit behind the offset of - # the 320K extent so that we leave a hole between the shared extents. - $ xfs_io -c "reflink /mnt/sdb/foobar 448K 192K 192K" /mnt/sdb/foobar - - $ btrfs subvolume snapshot -r /mnt/sdb /mnt/sdb/incr - $ btrfs send -p /mnt/sdb/base -f /tmp/2.snap /mnt/sdb/incr - - $ mkfs.btrfs -f /dev/sdc - $ mount /dev/sdc /mnt/sdc - - $ btrfs receive -f /tmp/1.snap /mnt/sdc - $ btrfs receive -f /tmp/2.snap /mnt/sdc - ERROR: failed to clone extents to foobar: Invalid argument - -The problem is that after processing the extent at file offset 256K, which -refers to the first 128K of the 320K extent created by the buffered write -operations, we have 'cur_inode_next_write_offset' set to 384K, which -corresponds to the end offset of the partially shared extent (256K + 128K) -and to the current file size in the receiver. Then when we process the -extent at offset 512K, we do extent backreference iteration to figure out -if we can clone the extent from some other inode or from the same inode, -and we consider the extent at offset 256K of the same inode as a valid -source for a clone operation, which is not correct because at that point -the current file size in the receiver is 384K, which corresponds to the -end of last processed extent (at file offset 256K), so using a clone -source range from 256K to 256K + 320K is invalid because that goes past -the current size of the file (384K) - this makes the receiver get an --EINVAL error when attempting the clone operation. - -So fix this by excluding clone sources that have a range that goes beyond -the current file size in the receiver when iterating extent backreferences. - -A test case for fstests follows soon. - -Fixes: 11f2069c113e02 ("Btrfs: send, allow clone operations within the same file") -CC: stable@vger.kernel.org # 5.5+ -Reviewed-by: Josef Bacik <josef@toxicpanda.com> -Signed-off-by: Filipe Manana <fdmanana@suse.com> -Signed-off-by: David Sterba <dsterba@suse.com> ---- - fs/btrfs/send.c | 3 ++- - 1 file changed, 2 insertions(+), 1 deletion(-) - -diff --git a/fs/btrfs/send.c b/fs/btrfs/send.c -index 091e5bc8c7ea..a055b657cb85 100644 ---- a/fs/btrfs/send.c -+++ b/fs/btrfs/send.c -@@ -1269,7 +1269,8 @@ static int __iterate_backrefs(u64 ino, u64 offset, u64 root, void *ctx_) - * destination of the stream. - */ - if (ino == bctx->cur_objectid && -- offset >= bctx->sctx->cur_inode_next_write_offset) -+ offset + bctx->extent_len > -+ bctx->sctx->cur_inode_next_write_offset) - return 0; - } - --- -2.25.0 - diff --git a/0004-drm-i915-Wean-off-drm_pci_alloc-drm_pci_free.patch b/0004-drm-i915-Wean-off-drm_pci_alloc-drm_pci_free.patch new file mode 100644 index 000000000000..8be0a16bcd17 --- /dev/null +++ b/0004-drm-i915-Wean-off-drm_pci_alloc-drm_pci_free.patch @@ -0,0 +1,260 @@ +From 7af5e53f87d728579cba99568717a6af3625184b Mon Sep 17 00:00:00 2001 +From: Chris Wilson <chris@chris-wilson.co.uk> +Date: Sun, 2 Feb 2020 15:39:34 +0000 +Subject: [PATCH 4/7] drm/i915: Wean off drm_pci_alloc/drm_pci_free + +drm_pci_alloc and drm_pci_free are just very thin wrappers around +dma_alloc_coherent, with a note that we should be removing them. +Furthermore since + +commit de09d31dd38a50fdce106c15abd68432eebbd014 +Author: Kirill A. Shutemov <kirill.shutemov@linux.intel.com> +Date: Fri Jan 15 16:51:42 2016 -0800 + + page-flags: define PG_reserved behavior on compound pages + + As far as I can see there's no users of PG_reserved on compound pages. + Let's use PF_NO_COMPOUND here. + +drm_pci_alloc has been declared broken since it mixes GFP_COMP and +SetPageReserved. Avoid this conflict by weaning ourselves off using the +abstraction and using the dma functions directly. + +Reported-by: Taketo Kabe +Closes: https://gitlab.freedesktop.org/drm/intel/issues/1027 +Fixes: de09d31dd38a ("page-flags: define PG_reserved behavior on compound pages") +Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk> +Cc: <stable@vger.kernel.org> # v4.5+ +Reviewed-by: Daniel Vetter <daniel.vetter@ffwll.ch> +Link: https://patchwork.freedesktop.org/patch/msgid/20200202153934.3899472-1-chris@chris-wilson.co.uk +--- + drivers/gpu/drm/i915/display/intel_display.c | 2 +- + .../gpu/drm/i915/gem/i915_gem_object_types.h | 3 - + drivers/gpu/drm/i915/gem/i915_gem_phys.c | 98 ++++++++++--------- + drivers/gpu/drm/i915/i915_gem.c | 8 +- + 4 files changed, 55 insertions(+), 56 deletions(-) + +diff --git a/drivers/gpu/drm/i915/display/intel_display.c b/drivers/gpu/drm/i915/display/intel_display.c +index 301897791627..b670239a293b 100644 +--- a/drivers/gpu/drm/i915/display/intel_display.c ++++ b/drivers/gpu/drm/i915/display/intel_display.c +@@ -10731,7 +10731,7 @@ static u32 intel_cursor_base(const struct intel_plane_state *plane_state) + u32 base; + + if (INTEL_INFO(dev_priv)->display.cursor_needs_physical) +- base = obj->phys_handle->busaddr; ++ base = sg_dma_address(obj->mm.pages->sgl); + else + base = intel_plane_ggtt_offset(plane_state); + +diff --git a/drivers/gpu/drm/i915/gem/i915_gem_object_types.h b/drivers/gpu/drm/i915/gem/i915_gem_object_types.h +index e3f3944fbd90..1078a76d6d84 100644 +--- a/drivers/gpu/drm/i915/gem/i915_gem_object_types.h ++++ b/drivers/gpu/drm/i915/gem/i915_gem_object_types.h +@@ -260,9 +260,6 @@ struct drm_i915_gem_object { + + void *gvt_info; + }; +- +- /** for phys allocated objects */ +- struct drm_dma_handle *phys_handle; + }; + + static inline struct drm_i915_gem_object * +diff --git a/drivers/gpu/drm/i915/gem/i915_gem_phys.c b/drivers/gpu/drm/i915/gem/i915_gem_phys.c +index 8043ff63d73f..5e2e0109c9ba 100644 +--- a/drivers/gpu/drm/i915/gem/i915_gem_phys.c ++++ b/drivers/gpu/drm/i915/gem/i915_gem_phys.c +@@ -22,88 +22,87 @@ + static int i915_gem_object_get_pages_phys(struct drm_i915_gem_object *obj) + { + struct address_space *mapping = obj->base.filp->f_mapping; +- struct drm_dma_handle *phys; +- struct sg_table *st; + struct scatterlist *sg; +- char *vaddr; ++ struct sg_table *st; ++ dma_addr_t dma; ++ void *vaddr; ++ void *dst; + int i; +- int err; + + if (WARN_ON(i915_gem_object_needs_bit17_swizzle(obj))) + return -EINVAL; + +- /* Always aligning to the object size, allows a single allocation ++ /* ++ * Always aligning to the object size, allows a single allocation + * to handle all possible callers, and given typical object sizes, + * the alignment of the buddy allocation will naturally match. + */ +- phys = drm_pci_alloc(obj->base.dev, +- roundup_pow_of_two(obj->base.size), +- roundup_pow_of_two(obj->base.size)); +- if (!phys) ++ vaddr = dma_alloc_coherent(&obj->base.dev->pdev->dev, ++ roundup_pow_of_two(obj->base.size), ++ &dma, GFP_KERNEL); ++ if (!vaddr) + return -ENOMEM; + +- vaddr = phys->vaddr; ++ st = kmalloc(sizeof(*st), GFP_KERNEL); ++ if (!st) ++ goto err_pci; ++ ++ if (sg_alloc_table(st, 1, GFP_KERNEL)) ++ goto err_st; ++ ++ sg = st->sgl; ++ sg->offset = 0; ++ sg->length = obj->base.size; ++ ++ sg_assign_page(sg, (struct page *)vaddr); ++ sg_dma_address(sg) = dma; ++ sg_dma_len(sg) = obj->base.size; ++ ++ dst = vaddr; + for (i = 0; i < obj->base.size / PAGE_SIZE; i++) { + struct page *page; +- char *src; ++ void *src; + + page = shmem_read_mapping_page(mapping, i); +- if (IS_ERR(page)) { +- err = PTR_ERR(page); +- goto err_phys; +- } ++ if (IS_ERR(page)) ++ goto err_st; + + src = kmap_atomic(page); +- memcpy(vaddr, src, PAGE_SIZE); +- drm_clflush_virt_range(vaddr, PAGE_SIZE); ++ memcpy(dst, src, PAGE_SIZE); ++ drm_clflush_virt_range(dst, PAGE_SIZE); + kunmap_atomic(src); + + put_page(page); +- vaddr += PAGE_SIZE; ++ dst += PAGE_SIZE; + } + + intel_gt_chipset_flush(&to_i915(obj->base.dev)->gt); + +- st = kmalloc(sizeof(*st), GFP_KERNEL); +- if (!st) { +- err = -ENOMEM; +- goto err_phys; +- } +- +- if (sg_alloc_table(st, 1, GFP_KERNEL)) { +- kfree(st); +- err = -ENOMEM; +- goto err_phys; +- } +- +- sg = st->sgl; +- sg->offset = 0; +- sg->length = obj->base.size; +- +- sg_dma_address(sg) = phys->busaddr; +- sg_dma_len(sg) = obj->base.size; +- +- obj->phys_handle = phys; +- + __i915_gem_object_set_pages(obj, st, sg->length); + + return 0; + +-err_phys: +- drm_pci_free(obj->base.dev, phys); +- +- return err; ++err_st: ++ kfree(st); ++err_pci: ++ dma_free_coherent(&obj->base.dev->pdev->dev, ++ roundup_pow_of_two(obj->base.size), ++ vaddr, dma); ++ return -ENOMEM; + } + + static void + i915_gem_object_put_pages_phys(struct drm_i915_gem_object *obj, + struct sg_table *pages) + { ++ dma_addr_t dma = sg_dma_address(pages->sgl); ++ void *vaddr = sg_page(pages->sgl); ++ + __i915_gem_object_release_shmem(obj, pages, false); + + if (obj->mm.dirty) { + struct address_space *mapping = obj->base.filp->f_mapping; +- char *vaddr = obj->phys_handle->vaddr; ++ void *src = vaddr; + int i; + + for (i = 0; i < obj->base.size / PAGE_SIZE; i++) { +@@ -115,15 +114,16 @@ i915_gem_object_put_pages_phys(struct drm_i915_gem_object *obj, + continue; + + dst = kmap_atomic(page); +- drm_clflush_virt_range(vaddr, PAGE_SIZE); +- memcpy(dst, vaddr, PAGE_SIZE); ++ drm_clflush_virt_range(src, PAGE_SIZE); ++ memcpy(dst, src, PAGE_SIZE); + kunmap_atomic(dst); + + set_page_dirty(page); + if (obj->mm.madv == I915_MADV_WILLNEED) + mark_page_accessed(page); + put_page(page); +- vaddr += PAGE_SIZE; ++ ++ src += PAGE_SIZE; + } + obj->mm.dirty = false; + } +@@ -131,7 +131,9 @@ i915_gem_object_put_pages_phys(struct drm_i915_gem_object *obj, + sg_free_table(pages); + kfree(pages); + +- drm_pci_free(obj->base.dev, obj->phys_handle); ++ dma_free_coherent(&obj->base.dev->pdev->dev, ++ roundup_pow_of_two(obj->base.size), ++ vaddr, dma); + } + + static void phys_release(struct drm_i915_gem_object *obj) +diff --git a/drivers/gpu/drm/i915/i915_gem.c b/drivers/gpu/drm/i915/i915_gem.c +index 905890e3ac24..3f07948ea4da 100644 +--- a/drivers/gpu/drm/i915/i915_gem.c ++++ b/drivers/gpu/drm/i915/i915_gem.c +@@ -154,7 +154,7 @@ i915_gem_phys_pwrite(struct drm_i915_gem_object *obj, + struct drm_i915_gem_pwrite *args, + struct drm_file *file) + { +- void *vaddr = obj->phys_handle->vaddr + args->offset; ++ void *vaddr = sg_page(obj->mm.pages->sgl) + args->offset; + char __user *user_data = u64_to_user_ptr(args->data_ptr); + + /* +@@ -800,10 +800,10 @@ i915_gem_pwrite_ioctl(struct drm_device *dev, void *data, + ret = i915_gem_gtt_pwrite_fast(obj, args); + + if (ret == -EFAULT || ret == -ENOSPC) { +- if (obj->phys_handle) +- ret = i915_gem_phys_pwrite(obj, args, file); +- else ++ if (i915_gem_object_has_struct_page(obj)) + ret = i915_gem_shmem_pwrite(obj, args); ++ else ++ ret = i915_gem_phys_pwrite(obj, args, file); + } + + i915_gem_object_unpin_pages(obj); +-- +2.25.0 + diff --git a/0005-drm-Remove-PageReserved-manipulation-from-drm_pci_al.patch b/0005-drm-Remove-PageReserved-manipulation-from-drm_pci_al.patch new file mode 100644 index 000000000000..bbe4432aaaf8 --- /dev/null +++ b/0005-drm-Remove-PageReserved-manipulation-from-drm_pci_al.patch @@ -0,0 +1,91 @@ +From c40f78c76b2f3ae55c348e8b206b0b283f01549c Mon Sep 17 00:00:00 2001 +From: Chris Wilson <chris@chris-wilson.co.uk> +Date: Sun, 2 Feb 2020 17:16:31 +0000 +Subject: [PATCH 5/7] drm: Remove PageReserved manipulation from drm_pci_alloc + +drm_pci_alloc/drm_pci_free are very thin wrappers around the core dma +facilities, and we have no special reason within the drm layer to behave +differently. In particular, since + +commit de09d31dd38a50fdce106c15abd68432eebbd014 +Author: Kirill A. Shutemov <kirill.shutemov@linux.intel.com> +Date: Fri Jan 15 16:51:42 2016 -0800 + + page-flags: define PG_reserved behavior on compound pages + + As far as I can see there's no users of PG_reserved on compound pages. + Let's use PF_NO_COMPOUND here. + +it has been illegal to combine GFP_COMP with SetPageReserved, so lets +stop doing both and leave the dma layer to its own devices. + +Reported-by: Taketo Kabe +Bug: https://gitlab.freedesktop.org/drm/intel/issues/1027 +Fixes: de09d31dd38a ("page-flags: define PG_reserved behavior on compound pages") +Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk> +Cc: <stable@vger.kernel.org> # v4.5+ +Reviewed-by: Alex Deucher <alexander.deucher@amd.com> +Link: https://patchwork.freedesktop.org/patch/msgid/20200202171635.4039044-1-chris@chris-wilson.co.uk +--- + drivers/gpu/drm/drm_pci.c | 23 ++--------------------- + 1 file changed, 2 insertions(+), 21 deletions(-) + +diff --git a/drivers/gpu/drm/drm_pci.c b/drivers/gpu/drm/drm_pci.c +index a86a3ab2771c..235729f4aadb 100644 +--- a/drivers/gpu/drm/drm_pci.c ++++ b/drivers/gpu/drm/drm_pci.c +@@ -51,8 +51,6 @@ + drm_dma_handle_t *drm_pci_alloc(struct drm_device * dev, size_t size, size_t align) + { + drm_dma_handle_t *dmah; +- unsigned long addr; +- size_t sz; + + /* pci_alloc_consistent only guarantees alignment to the smallest + * PAGE_SIZE order which is greater than or equal to the requested size. +@@ -68,20 +66,13 @@ drm_dma_handle_t *drm_pci_alloc(struct drm_device * dev, size_t size, size_t ali + dmah->size = size; + dmah->vaddr = dma_alloc_coherent(&dev->pdev->dev, size, + &dmah->busaddr, +- GFP_KERNEL | __GFP_COMP); ++ GFP_KERNEL); + + if (dmah->vaddr == NULL) { + kfree(dmah); + return NULL; + } + +- /* XXX - Is virt_to_page() legal for consistent mem? */ +- /* Reserve */ +- for (addr = (unsigned long)dmah->vaddr, sz = size; +- sz > 0; addr += PAGE_SIZE, sz -= PAGE_SIZE) { +- SetPageReserved(virt_to_page((void *)addr)); +- } +- + return dmah; + } + +@@ -94,19 +85,9 @@ EXPORT_SYMBOL(drm_pci_alloc); + */ + void __drm_legacy_pci_free(struct drm_device * dev, drm_dma_handle_t * dmah) + { +- unsigned long addr; +- size_t sz; +- +- if (dmah->vaddr) { +- /* XXX - Is virt_to_page() legal for consistent mem? */ +- /* Unreserve */ +- for (addr = (unsigned long)dmah->vaddr, sz = dmah->size; +- sz > 0; addr += PAGE_SIZE, sz -= PAGE_SIZE) { +- ClearPageReserved(virt_to_page((void *)addr)); +- } ++ if (dmah->vaddr) + dma_free_coherent(&dev->pdev->dev, dmah->size, dmah->vaddr, + dmah->busaddr); +- } + } + + /** +-- +2.25.0 + diff --git a/0006-drm-i915-execlists-Always-force-a-context-reload-whe.patch b/0006-drm-i915-execlists-Always-force-a-context-reload-whe.patch new file mode 100644 index 000000000000..8f7938320cd1 --- /dev/null +++ b/0006-drm-i915-execlists-Always-force-a-context-reload-whe.patch @@ -0,0 +1,145 @@ +From 6ffd5925e2659e589d48b8dcaf06e0b3cc0f4d52 Mon Sep 17 00:00:00 2001 +From: Chris Wilson <chris@chris-wilson.co.uk> +Date: Fri, 7 Feb 2020 21:14:52 +0000 +Subject: [PATCH 6/7] drm/i915/execlists: Always force a context reload when + rewinding RING_TAIL + +If we rewind the RING_TAIL on a context, due to a preemption event, we +must force the context restore for the RING_TAIL update to be properly +handled. Rather than note which preemption events may cause us to rewind +the tail, compare the new request's tail with the previously submitted +RING_TAIL, as it turns out that timeslicing was causing unexpected +rewinds. + + <idle>-0 0d.s2 1280851190us : __execlists_submission_tasklet: 0000:00:02.0 rcs0: expired last=130:4698, prio=3, hint=3 + <idle>-0 0d.s2 1280851192us : __i915_request_unsubmit: 0000:00:02.0 rcs0: fence 66:119966, current 119964 + <idle>-0 0d.s2 1280851195us : __i915_request_unsubmit: 0000:00:02.0 rcs0: fence 130:4698, current 4695 + <idle>-0 0d.s2 1280851198us : __i915_request_unsubmit: 0000:00:02.0 rcs0: fence 130:4696, current 4695 +^---- Note we unwind 2 requests from the same context + + <idle>-0 0d.s2 1280851208us : __i915_request_submit: 0000:00:02.0 rcs0: fence 130:4696, current 4695 + <idle>-0 0d.s2 1280851213us : __i915_request_submit: 0000:00:02.0 rcs0: fence 134:1508, current 1506 +^---- But to apply the new timeslice, we have to replay the first request + before the new client can start -- the unexpected RING_TAIL rewind + + <idle>-0 0d.s2 1280851219us : trace_ports: 0000:00:02.0 rcs0: submit { 130:4696*, 134:1508 } + synmark2-5425 2..s. 1280851239us : process_csb: 0000:00:02.0 rcs0: cs-irq head=5, tail=0 + synmark2-5425 2..s. 1280851240us : process_csb: 0000:00:02.0 rcs0: csb[0]: status=0x00008002:0x00000000 +^---- Preemption event for the ELSP update; note the lite-restore + + synmark2-5425 2..s. 1280851243us : trace_ports: 0000:00:02.0 rcs0: preempted { 130:4698, 66:119966 } + synmark2-5425 2..s. 1280851246us : trace_ports: 0000:00:02.0 rcs0: promote { 130:4696*, 134:1508 } + synmark2-5425 2.... 1280851462us : __i915_request_commit: 0000:00:02.0 rcs0: fence 130:4700, current 4695 + synmark2-5425 2.... 1280852111us : __i915_request_commit: 0000:00:02.0 rcs0: fence 130:4702, current 4695 + synmark2-5425 2.Ns1 1280852296us : process_csb: 0000:00:02.0 rcs0: cs-irq head=0, tail=2 + synmark2-5425 2.Ns1 1280852297us : process_csb: 0000:00:02.0 rcs0: csb[1]: status=0x00000814:0x00000000 + synmark2-5425 2.Ns1 1280852299us : trace_ports: 0000:00:02.0 rcs0: completed { 130:4696!, 134:1508 } + synmark2-5425 2.Ns1 1280852301us : process_csb: 0000:00:02.0 rcs0: csb[2]: status=0x00000818:0x00000040 + synmark2-5425 2.Ns1 1280852302us : trace_ports: 0000:00:02.0 rcs0: completed { 134:1508, 0:0 } + synmark2-5425 2.Ns1 1280852313us : process_csb: process_csb:2336 GEM_BUG_ON(!i915_request_completed(*execlists->active) && !reset_in_progress(execlists)) + +Fixes: 8ee36e048c98 ("drm/i915/execlists: Minimalistic timeslicing") +Referenecs: 82c69bf58650 ("drm/i915/gt: Detect if we miss WaIdleLiteRestore") +Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk> +Cc: Mika Kuoppala <mika.kuoppala@linux.intel.com> +Reviewed-by: Mika Kuoppala <mika.kuoppala@linux.intel.com> +Cc: <stable@vger.kernel.org> # v5.4+ +Link: https://patchwork.freedesktop.org/patch/msgid/20200207211452.2860634-1-chris@chris-wilson.co.uk +--- + drivers/gpu/drm/i915/gt/intel_lrc.c | 18 ++++++++---------- + drivers/gpu/drm/i915/gt/intel_ring.c | 1 + + drivers/gpu/drm/i915/gt/intel_ring.h | 8 ++++++++ + drivers/gpu/drm/i915/gt/intel_ring_types.h | 1 + + 4 files changed, 18 insertions(+), 10 deletions(-) + +diff --git a/drivers/gpu/drm/i915/gt/intel_lrc.c b/drivers/gpu/drm/i915/gt/intel_lrc.c +index d925a1035c9d..1b4784bfa7e5 100644 +--- a/drivers/gpu/drm/i915/gt/intel_lrc.c ++++ b/drivers/gpu/drm/i915/gt/intel_lrc.c +@@ -1157,7 +1157,7 @@ static u64 execlists_update_context(struct i915_request *rq) + { + struct intel_context *ce = rq->hw_context; + u64 desc = ce->lrc_desc; +- u32 tail; ++ u32 tail, prev; + + /* + * WaIdleLiteRestore:bdw,skl +@@ -1170,9 +1170,15 @@ static u64 execlists_update_context(struct i915_request *rq) + * subsequent resubmissions (for lite restore). Should that fail us, + * and we try and submit the same tail again, force the context + * reload. ++ * ++ * If we need to return to a preempted context, we need to skip the ++ * lite-restore and force it to reload the RING_TAIL. Otherwise, the ++ * HW has a tendency to ignore us rewinding the TAIL to the end of ++ * an earlier request. + */ + tail = intel_ring_set_tail(rq->ring, rq->tail); +- if (unlikely(ce->lrc_reg_state[CTX_RING_TAIL] == tail)) ++ prev = ce->lrc_reg_state[CTX_RING_TAIL]; ++ if (unlikely(intel_ring_direction(rq->ring, tail, prev) <= 0)) + desc |= CTX_DESC_FORCE_RESTORE; + ce->lrc_reg_state[CTX_RING_TAIL] = tail; + rq->tail = rq->wa_tail; +@@ -1651,14 +1657,6 @@ static void execlists_dequeue(struct intel_engine_cs *engine) + */ + __unwind_incomplete_requests(engine); + +- /* +- * If we need to return to the preempted context, we +- * need to skip the lite-restore and force it to +- * reload the RING_TAIL. Otherwise, the HW has a +- * tendency to ignore us rewinding the TAIL to the +- * end of an earlier request. +- */ +- last->hw_context->lrc_desc |= CTX_DESC_FORCE_RESTORE; + last = NULL; + } else if (need_timeslice(engine, last) && + timer_expired(&engine->execlists.timer)) { +diff --git a/drivers/gpu/drm/i915/gt/intel_ring.c b/drivers/gpu/drm/i915/gt/intel_ring.c +index 374b28f13ca0..6ff803f397c4 100644 +--- a/drivers/gpu/drm/i915/gt/intel_ring.c ++++ b/drivers/gpu/drm/i915/gt/intel_ring.c +@@ -145,6 +145,7 @@ intel_engine_create_ring(struct intel_engine_cs *engine, int size) + + kref_init(&ring->ref); + ring->size = size; ++ ring->wrap = BITS_PER_TYPE(ring->size) - ilog2(size); + + /* + * Workaround an erratum on the i830 which causes a hang if +diff --git a/drivers/gpu/drm/i915/gt/intel_ring.h b/drivers/gpu/drm/i915/gt/intel_ring.h +index ea2839d9e044..5bdce24994aa 100644 +--- a/drivers/gpu/drm/i915/gt/intel_ring.h ++++ b/drivers/gpu/drm/i915/gt/intel_ring.h +@@ -56,6 +56,14 @@ static inline u32 intel_ring_wrap(const struct intel_ring *ring, u32 pos) + return pos & (ring->size - 1); + } + ++static inline int intel_ring_direction(const struct intel_ring *ring, ++ u32 next, u32 prev) ++{ ++ typecheck(typeof(ring->size), next); ++ typecheck(typeof(ring->size), prev); ++ return (next - prev) << ring->wrap; ++} ++ + static inline bool + intel_ring_offset_valid(const struct intel_ring *ring, + unsigned int pos) +diff --git a/drivers/gpu/drm/i915/gt/intel_ring_types.h b/drivers/gpu/drm/i915/gt/intel_ring_types.h +index d9f17f38e0cc..3cd7fec7fd8d 100644 +--- a/drivers/gpu/drm/i915/gt/intel_ring_types.h ++++ b/drivers/gpu/drm/i915/gt/intel_ring_types.h +@@ -45,6 +45,7 @@ struct intel_ring { + + u32 space; + u32 size; ++ u32 wrap; + u32 effective_size; + }; + +-- +2.25.0 + @@ -61,7 +61,7 @@ _localmodcfg= ### IMPORTANT: Do no edit below this line unless you know what you're doing pkgbase=linux-ck -pkgver=5.5.2 +pkgver=5.5.3 pkgrel=1 _ckpatchversion=1 arch=(x86_64) @@ -78,22 +78,26 @@ source=( "http://ck.kolivas.org/patches/5.0/5.5/5.5-ck${_ckpatchversion}/$_ckpatch.xz" 0001-ZEN-Add-sysctl-and-CONFIG-to-disallow-unprivileged-C.patch 0002-iwlwifi-pcie-restore-support-for-Killer-Qu-C0-NICs.patch - 0003-ALSA-hda-Fix-DP-MST-support-for-NVIDIA-codecs.patch - 0004-Btrfs-send-fix-emission-of-invalid-clone-operations-.patch + 0003-iwlwifi-mvm-Do-not-require-PHY_SKU-NVM-section-for-3.patch + 0004-drm-i915-Wean-off-drm_pci_alloc-drm_pci_free.patch + 0005-drm-Remove-PageReserved-manipulation-from-drm_pci_al.patch + 0006-drm-i915-execlists-Always-force-a-context-reload-whe.patch ) validpgpkeys=( 'ABAF11C65A2970B130ABE3C479BE3E4300411886' # Linus Torvalds '647F28654894E3BD457199BE38DBBDC86092693E' # Greg Kroah-Hartman ) -sha256sums=('24f5f383b0337374f160723bcf3bf679c75cb5bd3fd0824a56998e47c04ef99e' +sha256sums=('2bef3edcf44c746383045f4a809b2013e18c52319c827875ed8e89138951cab2' 'SKIP' 'eb95e2f45dc868b097136d75077b8861b85fea109de78bff253fbf98162e5cb6' '7a4a209de815f4bae49c7c577c0584c77257e3953ac4324d2aa425859ba657f5' '37a9d61e8a0b5a73992e1397c3a9cc947d39e715f205f3c665eb157b96d58f98' - '7c66fd00db7147d62274edc0cf0276fcca1036892a354b31deb20c424462cf2c' - 'db6aa91dd446a021945f8671c70cafbfc743a3cba7f0d0f4b02bde6cf98c376e' - '3299c34452dbaa480e253e03d3f4bd44805ac732fd4c3e7ebbd228bf51229419' - '84d3ab282a371f616fc7be5089ec71ece1e193700afe4e77c86ce50ce579e253') + 'c981eacffe1091fbd4b22fd6359163bea343591c44c7c53573391541eb943d17' + 'a25a82ce5a7e84d7a580036a250aa4d2621ab0fdac0f375b40417a207f87cf87' + 'd5b209bcd90d11fd83055ffe8aea617776101502908c4aefdc7f6f3bc3a87929' + '03bcdd2668403cf7875bab86313cb4719dc35e202f4bb21c61c3646215a15be3' + '49a63d402a35dcefe18e858b0c66d0983a075c003fcfb50426fd0ba79639fafe' + '8e1e9cf077e774ac579bbaa7cb5932a1f96f50fad7a72fa998b868137c2472d3') export KBUILD_BUILD_HOST=archlinux export KBUILD_BUILD_USER=$pkgbase @@ -163,7 +167,7 @@ prepare() { fi make -s kernelrelease > version - echo "Prepared %s version %s" "$pkgbase" "$(<version)" + echo "Prepared $pkgbase version $(<version)" [[ -z "$_makenconfig" ]] || make nconfig |