summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorjc_gargma <jc_gargma@iserlohn-fortress.net>2020-02-11 10:58:48 -0800
committerjc_gargma <jc_gargma@iserlohn-fortress.net>2020-02-11 10:58:48 -0800
commit1e2b224b746e1e10b4f75f6328d32f35cc8eab81 (patch)
tree9c493d7e3fe78a972f462c66f71820e8cdfdaa8b
parentAdd more aliases for gcc patch versions (diff)
downloadlinux-ck-1e2b224b746e1e10b4f75f6328d32f35cc8eab81.tar.xz
Updated to 5.5.3
-rw-r--r--0003-ALSA-hda-Fix-DP-MST-support-for-NVIDIA-codecs.patch182
-rw-r--r--0003-iwlwifi-mvm-Do-not-require-PHY_SKU-NVM-section-for-3168-devices.patch39
-rw-r--r--0004-btrfs-send-fix-emission-of-invalid-clone-operations-within-the-same.patch114
-rw-r--r--0004-drm-i915-Wean-off-drm_pci_alloc-drm_pci_free.patch260
-rw-r--r--0005-drm-Remove-PageReserved-manipulation-from-drm_pci_alloc.patch91
-rw-r--r--0006-drm-i915-execlists-Always-force-a-context-reload-when-rewinding.patch145
-rw-r--r--PKGBUILD25
7 files changed, 551 insertions, 305 deletions
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 1e74d55..0000000
--- 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: 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);
- }
-
---
-cgit v1.2.1-1-g437b
-
diff --git a/0003-iwlwifi-mvm-Do-not-require-PHY_SKU-NVM-section-for-3168-devices.patch b/0003-iwlwifi-mvm-Do-not-require-PHY_SKU-NVM-section-for-3168-devices.patch
new file mode 100644
index 0000000..f9830bb
--- /dev/null
+++ b/0003-iwlwifi-mvm-Do-not-require-PHY_SKU-NVM-section-for-3168-devices.patch
@@ -0,0 +1,39 @@
+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: 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;
+--
+cgit v1.2.2-1-gc45e
+
diff --git a/0004-btrfs-send-fix-emission-of-invalid-clone-operations-within-the-same.patch b/0004-btrfs-send-fix-emission-of-invalid-clone-operations-within-the-same.patch
deleted file mode 100644
index 496cc6f..0000000
--- a/0004-btrfs-send-fix-emission-of-invalid-clone-operations-within-the-same.patch
+++ /dev/null
@@ -1,114 +0,0 @@
-From 693469a2b9d6d27282c06ed55cb70ff648740efd Mon Sep 17 00:00:00 2001
-From: Filipe Manana <fdmanana@suse.com>
-Date: Fri, 24 Jan 2020 11:52:04 +0000
-Subject: 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 192K, send
-does not issue a write operation full of zeroes for the hole between that
-extent and the extent starting at file offset 520K (hole range from 384K
-to 512K), this is because the hole is at an offset larger the size of the
-file in the parent snapshot (384K > 64K). As a consequence the field
-'cur_inode_next_write_offset' of the send context remains with a value of
-384K when we start to process the extent at file offset 512K, which is the
-value set after processing the extent at offset 192K.
-
-This screws up the lookup of possible extents to clone because due to an
-incorrect value of 'cur_inode_next_write_offset' we can now consider
-extents for cloning, in the same inode, that lie beyond the current size
-of the file in the receiver of the send stream. Also, when checking if
-an extent in the same file can be used for cloning, we must also check
-that not only its start offset doesn't start at or beyond the current eof
-of the file in the receiver but that the source range doesn't go beyond
-current eof, that is we must check offset + length does not cross the
-current eof, as that makes clone operations fail with -EINVAL.
-
-So fix this by updating 'cur_inode_next_write_offset' whenever we start
-processing an extent and checking an extent's offset and length when
-considering it for cloning operations.
-
-A test case for fstests follows soon.
-
-Fixes: 11f2069c113e02 ("Btrfs: send, allow clone operations within the same file")
-Signed-off-by: Filipe Manana <fdmanana@suse.com>
-Reviewed-by: Josef Bacik <josef@toxicpanda.com>
----
- fs/btrfs/send.c | 15 ++++++++++++++-
- 1 file changed, 14 insertions(+), 1 deletion(-)
-
-diff --git a/fs/btrfs/send.c b/fs/btrfs/send.c
-index 091e5bc8c7ea..0b42dac8a35f 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;
- }
-
-@@ -5804,6 +5805,18 @@ static int process_extent(struct send_ctx *sctx,
- }
- }
-
-+ /*
-+ * There might be a hole between the end of the last processed extent
-+ * and this extent, and we may have not sent a write operation for that
-+ * hole because it was not needed (range is beyond eof in the parent
-+ * snapshot). So adjust the next write offset to the offset of this
-+ * extent, as we want to make sure we don't do mistakes when checking if
-+ * we can clone this extent from some other offset in this inode or when
-+ * detecting if we need to issue a truncate operation when finishing the
-+ * processing this inode.
-+ */
-+ sctx->cur_inode_next_write_offset = key->offset;
-+
- ret = find_extent_clone(sctx, path, key->objectid, key->offset,
- sctx->cur_inode_size, &found_clone);
- if (ret != -ENOENT && ret < 0)
---
-cgit v1.2.1-1-g437b
-
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 0000000..c5c6f16
--- /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: 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 +-
+ drivers/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);
+--
+cgit v1.2.2-1-gc45e
+
diff --git a/0005-drm-Remove-PageReserved-manipulation-from-drm_pci_alloc.patch b/0005-drm-Remove-PageReserved-manipulation-from-drm_pci_alloc.patch
new file mode 100644
index 0000000..15688c8
--- /dev/null
+++ b/0005-drm-Remove-PageReserved-manipulation-from-drm_pci_alloc.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: 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);
+- }
+ }
+
+ /**
+--
+cgit v1.2.2-1-gc45e
+
diff --git a/0006-drm-i915-execlists-Always-force-a-context-reload-when-rewinding.patch b/0006-drm-i915-execlists-Always-force-a-context-reload-when-rewinding.patch
new file mode 100644
index 0000000..b6214d2
--- /dev/null
+++ b/0006-drm-i915-execlists-Always-force-a-context-reload-when-rewinding.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: 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;
+ };
+
+--
+cgit v1.2.2-1-gc45e
+
diff --git a/PKGBUILD b/PKGBUILD
index 8e8c5dc..473235b 100644
--- a/PKGBUILD
+++ b/PKGBUILD
@@ -9,6 +9,7 @@
# Arch version lacks ck patches
# Arch version is 300 Hz
# Arch version does not disable lockdown eee
+# Arch version does not disable hdcp
# Arch version allows insecure filesystems
# Arch version enables staging drivers
# Arch version enables ISDN and Infiniband
@@ -18,7 +19,7 @@
pkgbase=linux-ck
_supver=5
_majver=5
-_minver=2
+_minver=3
_gccpatchver='20191217'
_gccpatchger='9.1'
_gccpatchker='5.5'
@@ -44,8 +45,10 @@ source=(
https://www.kernel.org/pub/linux/kernel/v${_supver}.x/${_srcname}.tar.{xz,sign}
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-within-the-same.patch
+ 0003-iwlwifi-mvm-Do-not-require-PHY_SKU-NVM-section-for-3168-devices.patch
+ 0004-drm-i915-Wean-off-drm_pci_alloc-drm_pci_free.patch
+ 0005-drm-Remove-PageReserved-manipulation-from-drm_pci_alloc.patch
+ 0006-drm-i915-execlists-Always-force-a-context-reload-when-rewinding.patch
linux-ck-patch-${_supver}.${_majver}-${_ckpatchversion}.xz::http://ck.kolivas.org/patches/${_supver}.0/${_supver}.${_majver}/${_supver}.${_majver}-${_ckpatchversion}/patch-${_supver}.${_majver}-${_ckpatchversion}.xz
graysky_bdver2-hotfix.patch
kernel_gcc_patch-${_gccpatchver}.tar.gz::https://github.com/graysky2/kernel_gcc_patch/archive/${_gccpatchver}.tar.gz
@@ -58,12 +61,14 @@ validpgpkeys=(
'647F28654894E3BD457199BE38DBBDC86092693E' # Greg Kroah-Hartman
)
# https://www.kernel.org/pub/linux/kernel/v5.x/sha256sums.asc
-b2sums=('9587b8d8307c134a7732482e5495d9203a6367483ca30be06c13b270f4ce34b532d935874decb6c4c3e8b4dfb828c69814b35ef32e5e55db7c3845ee436aa1fc'
+b2sums=('fee027190fec757fdda70f7ef302914420e99644fac151acd32f2c9e562ccfa866c6702a28db98e6df8947ec161d68165161516bad083f0de8f5b35fe82dab05'
'SKIP'
'ab1fb19c67d4c107f75767581c33d9c1458b4d9fdb88f4adb41d30a36f5a2f95f1c48ef079eb87e1e6e8ce2f98b293195cb2c0f2a8ec975aa817453289158c6e'
'2e822cf7d4ff8b7458e22d3ce110fd8534e17a9aac2feace41c591f70697e1fab7bd9ce307c60a6361fbe525d10dab74c8b76fcb5276cd27f6e945f8fdfcc25c'
- 'ea755ddfbc59fd8a6eb2b23b80acec6f357fd7fbb2dac48275cec24d388c70c484808e8edf7450edf609ae2f33ab0e718075ba2636666cdd2f99ed64df796a79'
- 'b3f2c12f0d298ffec1a0d8237de80741d935af7b64f967f6ea2473741fbe4616edb7c321dc7a69c57b50d2313330a581b1f3086f64b15a10b2b640e26af659c4'
+ '1ae8107eb3d56db5b61fa07a35181232cc0be6c66f10b313a2f6b473bdbb33a42d8be3660413eef5321e08a775cda47260775174f74b803f3e66cdb890b9c6f3'
+ '6018d823c70f6129b8b52c77f9308e90a83de575f2206a056d562469f227e7651815ff4ed9be484409ea2a109eb6743fb0c71067f237d714934bd02ea132973e'
+ 'd8027cd96a447ea0987a67f3e65d157bb3d396069a944b140610f74c663677fe45e171e96a92dfd5eda8f71a5c715fd8114ee0e60b7620bc401a2a548bcf83cc'
+ '2d8579a1d27a0a40866b4f7f5c63ad5e402d919e21d09faf4cec14f3b19b8fc42b6fc3cb8d26dce3100a9e63ca21ab01519a0e804f34c35e4bda154fbe725602'
'54bdd9958d8fa9c3affa1972ca7d9821330394fbacf7ed25e098675d439764d0c918b4ee6554aaea23762bb90060cb2ee952bff569f54903e6b27fa10e8f4b09'
'1892bd22775eac3bcc4d37f4fd30c95346bf3a0888cbbff57fd614973b525390dff2e315ce35b2e498523cceaab94ff21a80475dee8df3de4dd8fc0fab07d74e'
'd76bd0bf237ea2bb7999fd3715cb664d89148cb0ade8057d57cdb40bc0a7954336e50ee077312e5e192398b0f35f055786deb98af9130d57e60f2ea040fbb66f'
@@ -89,8 +94,10 @@ prepare() {
echo "Applying hotfixes"
patch -p1 -i ../0001-ZEN-Add-sysctl-and-CONFIG-to-disallow-unprivileged-C.patch
patch -p1 -i ../0002-iwlwifi-pcie-restore-support-for-Killer-Qu-C0-NICs.patch
- patch -p1 -i ../0003-ALSA-hda-Fix-DP-MST-support-for-NVIDIA-codecs.patch
- patch -p1 -i ../0004-btrfs-send-fix-emission-of-invalid-clone-operations-within-the-same.patch
+ patch -p1 -i ../0003-iwlwifi-mvm-Do-not-require-PHY_SKU-NVM-section-for-3168-devices.patch
+ patch -p1 -i ../0004-drm-i915-Wean-off-drm_pci_alloc-drm_pci_free.patch
+ patch -p1 -i ../0005-drm-Remove-PageReserved-manipulation-from-drm_pci_alloc.patch
+ patch -p1 -i ../0006-drm-i915-execlists-Always-force-a-context-reload-when-rewinding.patch
# fix naming schema in EXTRAVERSION of ck patch set
@@ -162,7 +169,7 @@ prepare() {
echo "Backing up config..."
cp .config ${SRCDEST}/config.ck.previous
- echo "Prepared %s version %s" "$pkgbase" "$(<version)"
+ echo "Prepared $pkgbase version $(<version)"
}
build() {