diff options
author | David P <megver83@parabola.nu> | 2020-03-05 22:40:15 -0300 |
---|---|---|
committer | David P <megver83@parabola.nu> | 2020-03-05 22:40:15 -0300 |
commit | 286477559a5d2fb9ca8225745079cd9777927493 (patch) | |
tree | fe8f898a44f8ace8e9d6af3519b47c61cf1328fe /libre/linux-libre-pae | |
parent | 8b34f5ca49bb3cd1ec06408c7cfbc92d4a928e7e (diff) | |
download | abslibre-286477559a5d2fb9ca8225745079cd9777927493.tar.gz abslibre-286477559a5d2fb9ca8225745079cd9777927493.tar.bz2 abslibre-286477559a5d2fb9ca8225745079cd9777927493.zip |
updpkg: libre/linux-libre-pae 5.5.7-1
Signed-off-by: David P <megver83@parabola.nu>
Diffstat (limited to 'libre/linux-libre-pae')
14 files changed, 46 insertions, 454 deletions
diff --git a/libre/linux-libre-pae/0001-ZEN-Add-sysctl-and-CONFIG-to-disallow-unprivileged-C.patch b/libre/linux-libre-pae/0001-ZEN-Add-sysctl-and-CONFIG-to-disallow-unprivileged-C.patch index 0593d2420..474946443 100644 --- a/libre/linux-libre-pae/0001-ZEN-Add-sysctl-and-CONFIG-to-disallow-unprivileged-C.patch +++ b/libre/linux-libre-pae/0001-ZEN-Add-sysctl-and-CONFIG-to-disallow-unprivileged-C.patch @@ -1,7 +1,7 @@ -From 5bb4af349a4a3f6393d5b491d8528d60088ef3c0 Mon Sep 17 00:00:00 2001 +From c09059dc286ec8396ff6d235d6fcb509a3c9ad58 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 01/13] ZEN: Add sysctl and CONFIG to disallow unprivileged +Subject: [PATCH 01/11] ZEN: Add sysctl and CONFIG to disallow unprivileged CLONE_NEWUSER Our default behavior continues to match the vanilla kernel. diff --git a/libre/linux-libre-pae/0002-iwlwifi-pcie-restore-support-for-Killer-Qu-C0-NICs.patch b/libre/linux-libre-pae/0002-iwlwifi-pcie-restore-support-for-Killer-Qu-C0-NICs.patch index 348c6c3a1..6eead55b5 100644 --- a/libre/linux-libre-pae/0002-iwlwifi-pcie-restore-support-for-Killer-Qu-C0-NICs.patch +++ b/libre/linux-libre-pae/0002-iwlwifi-pcie-restore-support-for-Killer-Qu-C0-NICs.patch @@ -1,7 +1,7 @@ -From bc21f2c8df72a57532eb295f77763154263b16b6 Mon Sep 17 00:00:00 2001 +From 5ab82a437113456735093bcfe709a71a9a5c7ea6 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 02/13] iwlwifi: pcie: restore support for Killer Qu C0 NICs +Subject: [PATCH 02/11] 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/libre/linux-libre-pae/0003-iwlwifi-mvm-Do-not-require-PHY_SKU-NVM-section-for-3.patch b/libre/linux-libre-pae/0003-iwlwifi-mvm-Do-not-require-PHY_SKU-NVM-section-for-3.patch index 5c309de77..5af211fc2 100644 --- a/libre/linux-libre-pae/0003-iwlwifi-mvm-Do-not-require-PHY_SKU-NVM-section-for-3.patch +++ b/libre/linux-libre-pae/0003-iwlwifi-mvm-Do-not-require-PHY_SKU-NVM-section-for-3.patch @@ -1,7 +1,7 @@ -From d4f3675632b7c55981b2a062e05d3efcaa1e4c55 Mon Sep 17 00:00:00 2001 +From 6ba9e64f96ff87b42e77e6deacaa793f5f0e0ce3 Mon Sep 17 00:00:00 2001 From: Dan Moulding <dmoulding@me.com> Date: Tue, 28 Jan 2020 02:31:07 -0700 -Subject: [PATCH 03/13] iwlwifi: mvm: Do not require PHY_SKU NVM section for +Subject: [PATCH 03/11] iwlwifi: mvm: Do not require PHY_SKU NVM section for 3168 devices The logic for checking required NVM sections was recently fixed in diff --git a/libre/linux-libre-pae/0005-drm-Remove-PageReserved-manipulation-from-drm_pci_al.patch b/libre/linux-libre-pae/0004-drm-Remove-PageReserved-manipulation-from-drm_pci_al.patch index 173559c8c..99b3142b0 100644 --- a/libre/linux-libre-pae/0005-drm-Remove-PageReserved-manipulation-from-drm_pci_al.patch +++ b/libre/linux-libre-pae/0004-drm-Remove-PageReserved-manipulation-from-drm_pci_al.patch @@ -1,7 +1,7 @@ -From 4c2060e15fe37c5fa9d62bc6cc59e29fd157c0c3 Mon Sep 17 00:00:00 2001 +From 33083113cc94448919443871567cb9bfd61e76df 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 05/13] drm: Remove PageReserved manipulation from +Subject: [PATCH 04/11] drm: Remove PageReserved manipulation from drm_pci_alloc drm_pci_alloc/drm_pci_free are very thin wrappers around the core dma diff --git a/libre/linux-libre-pae/0004-drm-i915-Wean-off-drm_pci_alloc-drm_pci_free.patch b/libre/linux-libre-pae/0004-drm-i915-Wean-off-drm_pci_alloc-drm_pci_free.patch deleted file mode 100644 index b4fe2c99b..000000000 --- a/libre/linux-libre-pae/0004-drm-i915-Wean-off-drm_pci_alloc-drm_pci_free.patch +++ /dev/null @@ -1,260 +0,0 @@ -From 9765a866d7439523fdf06ea780498041505e5b32 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 04/13] 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.1 - diff --git a/libre/linux-libre-pae/0007-drm-i915-Serialise-i915_active_acquire-with-__active.patch b/libre/linux-libre-pae/0005-drm-i915-Serialise-i915_active_acquire-with-__active.patch index 0b6743d43..29ab99fe8 100644 --- a/libre/linux-libre-pae/0007-drm-i915-Serialise-i915_active_acquire-with-__active.patch +++ b/libre/linux-libre-pae/0005-drm-i915-Serialise-i915_active_acquire-with-__active.patch @@ -1,7 +1,7 @@ -From 4111ed5d5b9bed12b5bf7929045ca3c10cb60521 Mon Sep 17 00:00:00 2001 +From dff3c906fd230a07369d85d501bb11f8b840f4e6 Mon Sep 17 00:00:00 2001 From: Chris Wilson <chris@chris-wilson.co.uk> Date: Thu, 5 Dec 2019 18:33:32 +0000 -Subject: [PATCH 07/13] drm/i915: Serialise i915_active_acquire() with +Subject: [PATCH 05/11] drm/i915: Serialise i915_active_acquire() with __active_retire() As __active_retire() does it's final atomic_dec() under the diff --git a/libre/linux-libre-pae/0006-drm-i915-execlists-Always-force-a-context-reload-whe.patch b/libre/linux-libre-pae/0006-drm-i915-execlists-Always-force-a-context-reload-whe.patch deleted file mode 100644 index fda8482df..000000000 --- a/libre/linux-libre-pae/0006-drm-i915-execlists-Always-force-a-context-reload-whe.patch +++ /dev/null @@ -1,145 +0,0 @@ -From db1660f27f62a515dde34ccb192d7c63acf7fde9 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 06/13] 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.1 - diff --git a/libre/linux-libre-pae/0008-drm-i915-gem-Take-runtime-pm-wakeref-prior-to-unbind.patch b/libre/linux-libre-pae/0006-drm-i915-gem-Take-runtime-pm-wakeref-prior-to-unbind.patch index 2cca09b39..c51edfc5d 100644 --- a/libre/linux-libre-pae/0008-drm-i915-gem-Take-runtime-pm-wakeref-prior-to-unbind.patch +++ b/libre/linux-libre-pae/0006-drm-i915-gem-Take-runtime-pm-wakeref-prior-to-unbind.patch @@ -1,7 +1,7 @@ -From ff71a1213c20acd951584e14fa2f19e9133722d4 Mon Sep 17 00:00:00 2001 +From 92294ec84e60045e4ab3613a2b6a597b35eb48e7 Mon Sep 17 00:00:00 2001 From: Chris Wilson <chris@chris-wilson.co.uk> Date: Tue, 3 Dec 2019 10:13:46 +0000 -Subject: [PATCH 08/13] drm/i915/gem: Take runtime-pm wakeref prior to +Subject: [PATCH 06/11] drm/i915/gem: Take runtime-pm wakeref prior to unbinding Some machines require ACPI for runtime resume, and ACPI is quite kmalloc diff --git a/libre/linux-libre-pae/0009-drm-i915-gem-Avoid-parking-the-vma-as-we-unbind.patch b/libre/linux-libre-pae/0007-drm-i915-gem-Avoid-parking-the-vma-as-we-unbind.patch index 18690528d..fe79b6953 100644 --- a/libre/linux-libre-pae/0009-drm-i915-gem-Avoid-parking-the-vma-as-we-unbind.patch +++ b/libre/linux-libre-pae/0007-drm-i915-gem-Avoid-parking-the-vma-as-we-unbind.patch @@ -1,7 +1,7 @@ -From 2d5fd5d31dcd5c63c0c82a4a599443ee2a7144b7 Mon Sep 17 00:00:00 2001 +From d9f4e03a3469b8c1fce1fd5ef59708a504e5ba02 Mon Sep 17 00:00:00 2001 From: Chris Wilson <chris@chris-wilson.co.uk> Date: Tue, 3 Dec 2019 15:50:32 +0000 -Subject: [PATCH 09/13] drm/i915/gem: Avoid parking the vma as we unbind +Subject: [PATCH 07/11] drm/i915/gem: Avoid parking the vma as we unbind In order to avoid keeping a reference on the i915_vma (which is long overdue!) we have to coordinate all the possible lifetimes and only use diff --git a/libre/linux-libre-pae/0010-drm-i915-gem-Try-to-flush-pending-unbind-events.patch b/libre/linux-libre-pae/0008-drm-i915-gem-Try-to-flush-pending-unbind-events.patch index 8cff1cbf9..3768889ae 100644 --- a/libre/linux-libre-pae/0010-drm-i915-gem-Try-to-flush-pending-unbind-events.patch +++ b/libre/linux-libre-pae/0008-drm-i915-gem-Try-to-flush-pending-unbind-events.patch @@ -1,7 +1,7 @@ -From ee4f0e7d05f4e20dec1a91b4751da983109dbe44 Mon Sep 17 00:00:00 2001 +From 73845f795c73b341d331ba4ea581745828b03232 Mon Sep 17 00:00:00 2001 From: Chris Wilson <chris@chris-wilson.co.uk> Date: Wed, 4 Dec 2019 12:35:56 +0000 -Subject: [PATCH 10/13] drm/i915/gem: Try to flush pending unbind events +Subject: [PATCH 08/11] drm/i915/gem: Try to flush pending unbind events If we cannot handle a vma within the unbind loop, try to flush the pending events (i915_vma_parked, i915_vm_release) and try again. This diff --git a/libre/linux-libre-pae/0011-drm-i915-gem-Reinitialise-the-local-list-before-repe.patch b/libre/linux-libre-pae/0009-drm-i915-gem-Reinitialise-the-local-list-before-repe.patch index d947d9502..c3913790d 100644 --- a/libre/linux-libre-pae/0011-drm-i915-gem-Reinitialise-the-local-list-before-repe.patch +++ b/libre/linux-libre-pae/0009-drm-i915-gem-Reinitialise-the-local-list-before-repe.patch @@ -1,7 +1,7 @@ -From c13629b1458dc936a12611ec91925ab421ffa800 Mon Sep 17 00:00:00 2001 +From 6d98cb966611949e5c98b5a7cee4da0cab594d5f Mon Sep 17 00:00:00 2001 From: Chris Wilson <chris@chris-wilson.co.uk> Date: Thu, 5 Dec 2019 13:29:12 +0000 -Subject: [PATCH 11/13] drm/i915/gem: Reinitialise the local list before +Subject: [PATCH 09/11] drm/i915/gem: Reinitialise the local list before repeating As we may start the loop again, we require our local list of i915_vma diff --git a/libre/linux-libre-pae/0012-drm-i915-Add-a-simple-is-bound-check-before-unbindin.patch b/libre/linux-libre-pae/0010-drm-i915-Add-a-simple-is-bound-check-before-unbindin.patch index 4c4bdaafc..96e3d8810 100644 --- a/libre/linux-libre-pae/0012-drm-i915-Add-a-simple-is-bound-check-before-unbindin.patch +++ b/libre/linux-libre-pae/0010-drm-i915-Add-a-simple-is-bound-check-before-unbindin.patch @@ -1,7 +1,7 @@ -From 2b7ac37ef0d71002f3b7a9da6553049bc1ea9172 Mon Sep 17 00:00:00 2001 +From 291a8a531808a32b25a7649495e835f7b0257fd3 Mon Sep 17 00:00:00 2001 From: Chris Wilson <chris@chris-wilson.co.uk> Date: Sun, 22 Dec 2019 21:02:54 +0000 -Subject: [PATCH 12/13] drm/i915: Add a simple is-bound check before unbinding +Subject: [PATCH 10/11] drm/i915: Add a simple is-bound check before unbinding Only acquire the various atomic references required to unbind the vma if we do need to unbind the vma. diff --git a/libre/linux-libre-pae/0013-drm-i915-Introduce-a-vma.kref.patch b/libre/linux-libre-pae/0011-drm-i915-Introduce-a-vma.kref.patch index 861889d73..ce0f800fb 100644 --- a/libre/linux-libre-pae/0013-drm-i915-Introduce-a-vma.kref.patch +++ b/libre/linux-libre-pae/0011-drm-i915-Introduce-a-vma.kref.patch @@ -1,7 +1,7 @@ -From 1e76c5d4a020453c26640572a2452456d68ebeea Mon Sep 17 00:00:00 2001 +From a3cef69920ccaab9833aeae47f03d2eaad841d96 Mon Sep 17 00:00:00 2001 From: Chris Wilson <chris@chris-wilson.co.uk> Date: Sun, 22 Dec 2019 21:02:55 +0000 -Subject: [PATCH 13/13] drm/i915: Introduce a vma.kref +Subject: [PATCH 11/11] drm/i915: Introduce a vma.kref Start introducing a kref on i915_vma in order to protect the vma unbind (i915_gem_object_unbind) from a parallel destruction (i915_vma_parked). diff --git a/libre/linux-libre-pae/PKGBUILD b/libre/linux-libre-pae/PKGBUILD index 77bce7a92..1fb2bbfb4 100644 --- a/libre/linux-libre-pae/PKGBUILD +++ b/libre/linux-libre-pae/PKGBUILD @@ -9,7 +9,7 @@ _replacesoldkernels=() # '%' gets replaced with kernel suffix _replacesoldmodules=() # '%' gets replaced with kernel suffix pkgbase=linux-libre-pae -pkgver=5.5.5 +pkgver=5.5.7 pkgrel=1 pkgdesc='Linux-libre PAE (physical address extension)' url='https://linux-libre.fsfla.org/' @@ -39,16 +39,14 @@ source=( 0001-ZEN-Add-sysctl-and-CONFIG-to-disallow-unprivileged-C.patch 0002-iwlwifi-pcie-restore-support-for-Killer-Qu-C0-NICs.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 - 0007-drm-i915-Serialise-i915_active_acquire-with-__active.patch - 0008-drm-i915-gem-Take-runtime-pm-wakeref-prior-to-unbind.patch - 0009-drm-i915-gem-Avoid-parking-the-vma-as-we-unbind.patch - 0010-drm-i915-gem-Try-to-flush-pending-unbind-events.patch - 0011-drm-i915-gem-Reinitialise-the-local-list-before-repe.patch - 0012-drm-i915-Add-a-simple-is-bound-check-before-unbindin.patch - 0013-drm-i915-Introduce-a-vma.kref.patch + 0004-drm-Remove-PageReserved-manipulation-from-drm_pci_al.patch + 0005-drm-i915-Serialise-i915_active_acquire-with-__active.patch + 0006-drm-i915-gem-Take-runtime-pm-wakeref-prior-to-unbind.patch + 0007-drm-i915-gem-Avoid-parking-the-vma-as-we-unbind.patch + 0008-drm-i915-gem-Try-to-flush-pending-unbind-events.patch + 0009-drm-i915-gem-Reinitialise-the-local-list-before-repe.patch + 0010-drm-i915-Add-a-simple-is-bound-check-before-unbindin.patch + 0011-drm-i915-Introduce-a-vma.kref.patch ) validpgpkeys=( '474402C8C582DAFBE389C427BCB7CF877E7D47A7' # Alexandre Oliva @@ -56,7 +54,7 @@ validpgpkeys=( ) sha512sums=('187368a8fb4e04acfd7d18a024d6cdbc2841bcc06dcfbc3a053706e8512c3e3f573755228347c11bd791b296ec60eb2d67d5075ece2aef234a847e72f2b3e746' 'SKIP' - 'd1ff0cd2089118da0311401c7f1f9f3d083af452899f3ffa7f9875d92aa9e85716fe87cbd8c59292d37cd6a37a0ebe68d8b1c0ea433277aaf636dd984fe0a7de' + '9e80c81ba21ce46422f6c9ee94772d5ea0152bb1176444a824c54c740fb58430ffaa1adadce8ecf1647d58fcadaabf6c67938999bf359b9ead4ed9141bc49ba7' 'SKIP' '13cb5bc42542e7b8bb104d5f68253f6609e463b6799800418af33eb0272cc269aaa36163c3e6f0aacbdaaa1d05e2827a4a7c4a08a029238439ed08b89c564bb3' 'SKIP' @@ -67,19 +65,17 @@ sha512sums=('187368a8fb4e04acfd7d18a024d6cdbc2841bcc06dcfbc3a053706e8512c3e3f573 '9b8298a195857108453042090bfebf7736b373b177077926bda7091bc490aeda1872fb51cf126e021eae97096973dfab6d6c858bebf5d565a9df4ffe28d2df2f' '02af4dd2a007e41db0c63822c8ab3b80b5d25646af1906dc85d0ad9bb8bbf5236f8e381d7f91cf99ed4b0978c50aee37cb9567cdeef65b7ec3d91b882852b1af' 'b8fe56e14006ab866970ddbd501c054ae37186ddc065bb869cf7d18db8c0d455118d5bda3255fb66a0dde38b544655cfe9040ffe46e41d19830b47959b2fb168' - 'c5006db63c01ad4f94786e4ed129470d74b9131cf2218c82dcbbc24af7de4881ce7e4c8144e3b2194d6015df328593c8f017d1372ae1e46fe49fe55acf5aac38' - 'ba13e423ef1bba3f46c20bb1c0f68b7533564cc4819aa17cabbf5b89552416341b83f7f65e97d4316412ac78365f25c612fde5c35cb29d27d612c351761a8385' - '28780156c1cdcc65d41a08cae0184bc6b42d7cf5f7c94fafea475f3e1f388faa28532216b2cdefcfa6a4d55f70cbb21329d48409c6ad9be78a72d212d0e80252' - '6c13d71552e1a651c7f1e753c6f94210b27f61dee58b8a855a11eed28dcd45afd168b361f2a8ac53b3899cc73322a102c1f99a04496e80b2ead229230883d261' - 'd9d807c2cb6680f494f52c86b54b8ad5b3fafb6bae8a6098a9ebe20383569704cfabded9ad442a9cc8aa05f5a280b76ff41e8b5d504523251e31d753930f3cc3' - '521a5320af6e56f85662a1fe0749aefa9759e4dc8fd21dd890d409256a67ed2da488dab5d54bb12eb71fbfc14142246f2df98ce4cfab061283a4019a8b748999' - 'b1605a93c97c01d255f19f5da20b0b41d9457a9aa473bb22d52feffab99bca0594f5f8b1cf5fb20862e65c84315ddc7bb162869c3337ff9ee795938856d583ba' - 'e24fa8a4bc8589274fc31edbf3e64cd1639737544982bc2c085e5f064daa16b1d56928115813733b46a758ed047dd415d14b87b7fcd958b7a73766066a7a6c32' - '2f961f57e8462615a2a01793d21f3ce49be956991cb537de68b80edbf8dd7123a790324c1a5aa81061436eda4eae30a9b710144d9b18a33c22b595710e30667e' - 'd29b49e87e90a773a0d101ff57688c6d55b1145cb6866da8706ed9313660d16e12c4debfd5005a585b33dad741a19de36fd9ccd8b5e18d9979a05e1845df993c' - '009b4280ba5da1ef78db7582eac04c9e290bfb2f0d7d8ba9574353b1cca9c5dd97c0bf1f85d228dede1f3ac342e35754ba776c2fe755382c65edf1b52f2d9eba' - '0c2cc5f04a577c42dece649d54e00bf8a1f45880a5f984328a3d4a51887b3d48e30dae3058f9da2fc651a95e204749b5512619752ecfc37227acb21e042e26ff' - 'f41929dd44a929dc3bf5f090f7f8c800112a07f1cc2c5ac1e282d4cff2821001c9daeb35987e8b47e70bde5cf5c06b010cac13b4f00fbcbb56b283069a5b30cc') + 'c817bab02fa530560b9d3d968242e5491e315286a4a1dc9490299dc78806c516831da79422d6ab56df0652b216565a80f10d6dacdcbcbbbe258d31455cc98add' + 'a9a7c0510d9b1c724f17d47e33925b7dadb529ed57cbdc80120af8884f43190b6bfc7698416d23651eae64c4fed393481715b3d87b528b71d8c03b4141fcca46' + 'a26d886d6e3e394e7d6a247154120d4c2ba06e9e75385959bbf284c9577da07aee05b718ed06a56d56bec5a726c8013709c560cd280e78525d50dc95fb84bdad' + '7395fc2202c76ffff815bb6f6f54a1dc57ffb46b0b25ecf89effe6787dd66bd273dee29dd8636b3160c31fd0bfef0a99bd55f4080e6e075e862640b422c15e2e' + 'bd68f5d64a6bb502db8b5b96d2823493cda1a5b3c8bd0639b25ae3e47e999fc02dfd3bffa32e8fd710355d9ca0ec5bfe19421158cdc488c2b47b5177caf0f5c8' + '3b71120a93c53eb6308bb55b76ec0c1ccd8b3b385d4ce4062cb4f657b84e6bfe28765eb8042f6f8f35860899ee66633a4f59999513bfdc2968b5317215e36347' + 'd3fbbd202efd72ebac265b89fb8c9c3772fd49dcd6d43910555d55ec96ea5df8c0b03bfe00e2677787643cfc0f547eb49d638774742471ec650067751cecc5e2' + '80928026ceeb29bf29a2b2909768ddced2f13c522f6496fa4717a490f087bdd45ae0131cbce37ec227d16071ce562477ca322305a68e8606fc28e3d35759af26' + '855de25a3df963506d3cce588e422a4cf24b2cc04c950647b0002f796a921d17ebc49d95cb94c38713e70b6385a91278943df3c707091607a1fd118f519dae87' + 'f31a943f9942427e79d646186611325e6dd9aa6b100eb869b531e04c2fe934503ff6cc7496ffa8644eeb3bb13ec82e1898def5311f29bb4d286f758dfd848b9a' + '9dcde0dd16222ecb09c83025ecc13bb529c78289878c5abb38283a4b10ffe181abc9447423641a271c3f8db79d9bb540eea369cd0108e4948067cf4356bd329e') _replacesarchkernel=("${_replacesarchkernel[@]/\%/${pkgbase#linux-libre}}") _replacesoldkernels=("${_replacesoldkernels[@]/\%/${pkgbase#linux-libre}}") @@ -120,12 +116,13 @@ prepare() { make olddefconfig make -s kernelrelease > version - echo "Prepared %s version %s" "$pkgbase" "$(<version)" + echo "Prepared $pkgbase version $(<version)" } build() { cd $_srcname - make bzImage modules htmldocs + make all + make htmldocs } _package() { |