From 25d6753ec6dcb75021c1b6e2c3c9504981bc90a5 Mon Sep 17 00:00:00 2001 From: Greg Kroah-Hartman Date: Thu, 11 Jul 2024 11:41:26 +0200 Subject: [PATCH] drop a bunch of patches based on reviews --- ...ts-remove-bug_on-in-its_vpe_irq_doma.patch | 41 ----- queue-4.19/series | 1 - ...ts-remove-bug_on-in-its_vpe_irq_doma.patch | 41 ----- queue-5.10/series | 1 - ...ts-remove-bug_on-in-its_vpe_irq_doma.patch | 41 ----- queue-5.15/series | 1 - ...ts-remove-bug_on-in-its_vpe_irq_doma.patch | 41 ----- queue-5.4/series | 1 - ...ts-remove-bug_on-in-its_vpe_irq_doma.patch | 41 ----- queue-6.1/kunit-handle-test-faults.patch | 152 ------------------ queue-6.1/series | 2 - ...ts-remove-bug_on-in-its_vpe_irq_doma.patch | 41 ----- queue-6.6/kunit-handle-test-faults.patch | 152 ------------------ ...pc-dexcr-track-the-dexcr-per-process.patch | 95 ----------- queue-6.6/series | 3 - ...ts-remove-bug_on-in-its_vpe_irq_doma.patch | 41 ----- queue-6.9/kunit-handle-test-faults.patch | 152 ------------------ ...pc-dexcr-track-the-dexcr-per-process.patch | 96 ----------- queue-6.9/series | 3 - 19 files changed, 946 deletions(-) delete mode 100644 queue-4.19/irqchip-gic-v3-its-remove-bug_on-in-its_vpe_irq_doma.patch delete mode 100644 queue-5.10/irqchip-gic-v3-its-remove-bug_on-in-its_vpe_irq_doma.patch delete mode 100644 queue-5.15/irqchip-gic-v3-its-remove-bug_on-in-its_vpe_irq_doma.patch delete mode 100644 queue-5.4/irqchip-gic-v3-its-remove-bug_on-in-its_vpe_irq_doma.patch delete mode 100644 queue-6.1/irqchip-gic-v3-its-remove-bug_on-in-its_vpe_irq_doma.patch delete mode 100644 queue-6.1/kunit-handle-test-faults.patch delete mode 100644 queue-6.6/irqchip-gic-v3-its-remove-bug_on-in-its_vpe_irq_doma.patch delete mode 100644 queue-6.6/kunit-handle-test-faults.patch delete mode 100644 queue-6.6/powerpc-dexcr-track-the-dexcr-per-process.patch delete mode 100644 queue-6.9/irqchip-gic-v3-its-remove-bug_on-in-its_vpe_irq_doma.patch delete mode 100644 queue-6.9/kunit-handle-test-faults.patch delete mode 100644 queue-6.9/powerpc-dexcr-track-the-dexcr-per-process.patch diff --git a/queue-4.19/irqchip-gic-v3-its-remove-bug_on-in-its_vpe_irq_doma.patch b/queue-4.19/irqchip-gic-v3-its-remove-bug_on-in-its_vpe_irq_doma.patch deleted file mode 100644 index 33b5bf0fb86..00000000000 --- a/queue-4.19/irqchip-gic-v3-its-remove-bug_on-in-its_vpe_irq_doma.patch +++ /dev/null @@ -1,41 +0,0 @@ -From 755959e2b1af22abbf5a264c0407266b6eac9750 Mon Sep 17 00:00:00 2001 -From: Sasha Levin -Date: Thu, 18 Apr 2024 14:10:53 +0800 -Subject: irqchip/gic-v3-its: Remove BUG_ON in its_vpe_irq_domain_alloc - -From: Guanrui Huang - -[ Upstream commit 382d2ffe86efb1e2fa803d2cf17e5bfc34e574f3 ] - -This BUG_ON() is useless, because the same effect will be obtained -by letting the code run its course and vm being dereferenced, -triggering an exception. - -So just remove this check. - -Signed-off-by: Guanrui Huang -Signed-off-by: Thomas Gleixner -Reviewed-by: Zenghui Yu -Acked-by: Marc Zyngier -Link: https://lore.kernel.org/r/20240418061053.96803-3-guanrui.huang@linux.alibaba.com -Signed-off-by: Sasha Levin ---- - drivers/irqchip/irq-gic-v3-its.c | 2 -- - 1 file changed, 2 deletions(-) - -diff --git a/drivers/irqchip/irq-gic-v3-its.c b/drivers/irqchip/irq-gic-v3-its.c -index 6b58194c1e346..2e0478e8be747 100644 ---- a/drivers/irqchip/irq-gic-v3-its.c -+++ b/drivers/irqchip/irq-gic-v3-its.c -@@ -2958,8 +2958,6 @@ static int its_vpe_irq_domain_alloc(struct irq_domain *domain, unsigned int virq - struct page *vprop_page; - int base, nr_ids, i, err = 0; - -- BUG_ON(!vm); -- - bitmap = its_lpi_alloc(roundup_pow_of_two(nr_irqs), &base, &nr_ids); - if (!bitmap) - return -ENOMEM; --- -2.43.0 - diff --git a/queue-4.19/series b/queue-4.19/series index a521dd90a4b..ad5d003f98f 100644 --- a/queue-4.19/series +++ b/queue-4.19/series @@ -1,7 +1,6 @@ media-dvb-as102-fe-fix-as10x_register_addr-packing.patch media-dvb-usb-dib0700_devices-add-missing-release_fi.patch ib-core-implement-a-limit-on-umad-receive-list.patch -irqchip-gic-v3-its-remove-bug_on-in-its_vpe_irq_doma.patch drm-amd-display-skip-finding-free-audio-for-unknown-.patch media-dw2102-don-t-translate-i2c-read-into-write.patch sctp-prefer-struct_size-over-open-coded-arithmetic.patch diff --git a/queue-5.10/irqchip-gic-v3-its-remove-bug_on-in-its_vpe_irq_doma.patch b/queue-5.10/irqchip-gic-v3-its-remove-bug_on-in-its_vpe_irq_doma.patch deleted file mode 100644 index bfaab2cc2a0..00000000000 --- a/queue-5.10/irqchip-gic-v3-its-remove-bug_on-in-its_vpe_irq_doma.patch +++ /dev/null @@ -1,41 +0,0 @@ -From 8b350f7960ad2a2316483438dbbae0c0fefd30a8 Mon Sep 17 00:00:00 2001 -From: Sasha Levin -Date: Thu, 18 Apr 2024 14:10:53 +0800 -Subject: irqchip/gic-v3-its: Remove BUG_ON in its_vpe_irq_domain_alloc - -From: Guanrui Huang - -[ Upstream commit 382d2ffe86efb1e2fa803d2cf17e5bfc34e574f3 ] - -This BUG_ON() is useless, because the same effect will be obtained -by letting the code run its course and vm being dereferenced, -triggering an exception. - -So just remove this check. - -Signed-off-by: Guanrui Huang -Signed-off-by: Thomas Gleixner -Reviewed-by: Zenghui Yu -Acked-by: Marc Zyngier -Link: https://lore.kernel.org/r/20240418061053.96803-3-guanrui.huang@linux.alibaba.com -Signed-off-by: Sasha Levin ---- - drivers/irqchip/irq-gic-v3-its.c | 2 -- - 1 file changed, 2 deletions(-) - -diff --git a/drivers/irqchip/irq-gic-v3-its.c b/drivers/irqchip/irq-gic-v3-its.c -index 4e486cccc4cc6..a9469751720cc 100644 ---- a/drivers/irqchip/irq-gic-v3-its.c -+++ b/drivers/irqchip/irq-gic-v3-its.c -@@ -4469,8 +4469,6 @@ static int its_vpe_irq_domain_alloc(struct irq_domain *domain, unsigned int virq - struct page *vprop_page; - int base, nr_ids, i, err = 0; - -- BUG_ON(!vm); -- - bitmap = its_lpi_alloc(roundup_pow_of_two(nr_irqs), &base, &nr_ids); - if (!bitmap) - return -ENOMEM; --- -2.43.0 - diff --git a/queue-5.10/series b/queue-5.10/series index eb9ed1e5a1a..71be383944b 100644 --- a/queue-5.10/series +++ b/queue-5.10/series @@ -3,7 +3,6 @@ media-dvb-as102-fe-fix-as10x_register_addr-packing.patch media-dvb-usb-dib0700_devices-add-missing-release_fi.patch ib-core-implement-a-limit-on-umad-receive-list.patch scsi-qedf-make-qedf_execute_tmf-non-preemptible.patch -irqchip-gic-v3-its-remove-bug_on-in-its_vpe_irq_doma.patch crypto-aead-cipher-zeroize-key-buffer-after-use.patch drm-amdgpu-initialize-timestamp-for-some-legacy-socs.patch drm-amd-display-check-index-msg_id-before-read-or-wr.patch diff --git a/queue-5.15/irqchip-gic-v3-its-remove-bug_on-in-its_vpe_irq_doma.patch b/queue-5.15/irqchip-gic-v3-its-remove-bug_on-in-its_vpe_irq_doma.patch deleted file mode 100644 index f59e9636e5c..00000000000 --- a/queue-5.15/irqchip-gic-v3-its-remove-bug_on-in-its_vpe_irq_doma.patch +++ /dev/null @@ -1,41 +0,0 @@ -From 63fa0d12f873318e314562d760d9ed060657fb6c Mon Sep 17 00:00:00 2001 -From: Sasha Levin -Date: Thu, 18 Apr 2024 14:10:53 +0800 -Subject: irqchip/gic-v3-its: Remove BUG_ON in its_vpe_irq_domain_alloc - -From: Guanrui Huang - -[ Upstream commit 382d2ffe86efb1e2fa803d2cf17e5bfc34e574f3 ] - -This BUG_ON() is useless, because the same effect will be obtained -by letting the code run its course and vm being dereferenced, -triggering an exception. - -So just remove this check. - -Signed-off-by: Guanrui Huang -Signed-off-by: Thomas Gleixner -Reviewed-by: Zenghui Yu -Acked-by: Marc Zyngier -Link: https://lore.kernel.org/r/20240418061053.96803-3-guanrui.huang@linux.alibaba.com -Signed-off-by: Sasha Levin ---- - drivers/irqchip/irq-gic-v3-its.c | 2 -- - 1 file changed, 2 deletions(-) - -diff --git a/drivers/irqchip/irq-gic-v3-its.c b/drivers/irqchip/irq-gic-v3-its.c -index fa89e590c1333..3fa6c71843261 100644 ---- a/drivers/irqchip/irq-gic-v3-its.c -+++ b/drivers/irqchip/irq-gic-v3-its.c -@@ -4491,8 +4491,6 @@ static int its_vpe_irq_domain_alloc(struct irq_domain *domain, unsigned int virq - struct page *vprop_page; - int base, nr_ids, i, err = 0; - -- BUG_ON(!vm); -- - bitmap = its_lpi_alloc(roundup_pow_of_two(nr_irqs), &base, &nr_ids); - if (!bitmap) - return -ENOMEM; --- -2.43.0 - diff --git a/queue-5.15/series b/queue-5.15/series index 30983b9d73f..ca16a200b1d 100644 --- a/queue-5.15/series +++ b/queue-5.15/series @@ -4,7 +4,6 @@ media-dvb-as102-fe-fix-as10x_register_addr-packing.patch media-dvb-usb-dib0700_devices-add-missing-release_fi.patch ib-core-implement-a-limit-on-umad-receive-list.patch scsi-qedf-make-qedf_execute_tmf-non-preemptible.patch -irqchip-gic-v3-its-remove-bug_on-in-its_vpe_irq_doma.patch crypto-aead-cipher-zeroize-key-buffer-after-use.patch drm-amdgpu-initialize-timestamp-for-some-legacy-socs.patch drm-amd-display-check-index-msg_id-before-read-or-wr.patch diff --git a/queue-5.4/irqchip-gic-v3-its-remove-bug_on-in-its_vpe_irq_doma.patch b/queue-5.4/irqchip-gic-v3-its-remove-bug_on-in-its_vpe_irq_doma.patch deleted file mode 100644 index 45fc405d878..00000000000 --- a/queue-5.4/irqchip-gic-v3-its-remove-bug_on-in-its_vpe_irq_doma.patch +++ /dev/null @@ -1,41 +0,0 @@ -From b7e790929b930f798a0573afbc3c0b28e1c0c17d Mon Sep 17 00:00:00 2001 -From: Sasha Levin -Date: Thu, 18 Apr 2024 14:10:53 +0800 -Subject: irqchip/gic-v3-its: Remove BUG_ON in its_vpe_irq_domain_alloc - -From: Guanrui Huang - -[ Upstream commit 382d2ffe86efb1e2fa803d2cf17e5bfc34e574f3 ] - -This BUG_ON() is useless, because the same effect will be obtained -by letting the code run its course and vm being dereferenced, -triggering an exception. - -So just remove this check. - -Signed-off-by: Guanrui Huang -Signed-off-by: Thomas Gleixner -Reviewed-by: Zenghui Yu -Acked-by: Marc Zyngier -Link: https://lore.kernel.org/r/20240418061053.96803-3-guanrui.huang@linux.alibaba.com -Signed-off-by: Sasha Levin ---- - drivers/irqchip/irq-gic-v3-its.c | 2 -- - 1 file changed, 2 deletions(-) - -diff --git a/drivers/irqchip/irq-gic-v3-its.c b/drivers/irqchip/irq-gic-v3-its.c -index d16776c6dee7b..ae3378ef469b0 100644 ---- a/drivers/irqchip/irq-gic-v3-its.c -+++ b/drivers/irqchip/irq-gic-v3-its.c -@@ -3085,8 +3085,6 @@ static int its_vpe_irq_domain_alloc(struct irq_domain *domain, unsigned int virq - struct page *vprop_page; - int base, nr_ids, i, err = 0; - -- BUG_ON(!vm); -- - bitmap = its_lpi_alloc(roundup_pow_of_two(nr_irqs), &base, &nr_ids); - if (!bitmap) - return -ENOMEM; --- -2.43.0 - diff --git a/queue-5.4/series b/queue-5.4/series index 9ae8beb3868..e1aa1fa2936 100644 --- a/queue-5.4/series +++ b/queue-5.4/series @@ -3,7 +3,6 @@ media-dvb-as102-fe-fix-as10x_register_addr-packing.patch media-dvb-usb-dib0700_devices-add-missing-release_fi.patch ib-core-implement-a-limit-on-umad-receive-list.patch scsi-qedf-make-qedf_execute_tmf-non-preemptible.patch -irqchip-gic-v3-its-remove-bug_on-in-its_vpe_irq_doma.patch drm-amdgpu-initialize-timestamp-for-some-legacy-socs.patch drm-amd-display-skip-finding-free-audio-for-unknown-.patch media-dw2102-don-t-translate-i2c-read-into-write.patch diff --git a/queue-6.1/irqchip-gic-v3-its-remove-bug_on-in-its_vpe_irq_doma.patch b/queue-6.1/irqchip-gic-v3-its-remove-bug_on-in-its_vpe_irq_doma.patch deleted file mode 100644 index 9abc0d9ccda..00000000000 --- a/queue-6.1/irqchip-gic-v3-its-remove-bug_on-in-its_vpe_irq_doma.patch +++ /dev/null @@ -1,41 +0,0 @@ -From 902a39c973d95824257ad898dccc1530ed8056f1 Mon Sep 17 00:00:00 2001 -From: Sasha Levin -Date: Thu, 18 Apr 2024 14:10:53 +0800 -Subject: irqchip/gic-v3-its: Remove BUG_ON in its_vpe_irq_domain_alloc - -From: Guanrui Huang - -[ Upstream commit 382d2ffe86efb1e2fa803d2cf17e5bfc34e574f3 ] - -This BUG_ON() is useless, because the same effect will be obtained -by letting the code run its course and vm being dereferenced, -triggering an exception. - -So just remove this check. - -Signed-off-by: Guanrui Huang -Signed-off-by: Thomas Gleixner -Reviewed-by: Zenghui Yu -Acked-by: Marc Zyngier -Link: https://lore.kernel.org/r/20240418061053.96803-3-guanrui.huang@linux.alibaba.com -Signed-off-by: Sasha Levin ---- - drivers/irqchip/irq-gic-v3-its.c | 2 -- - 1 file changed, 2 deletions(-) - -diff --git a/drivers/irqchip/irq-gic-v3-its.c b/drivers/irqchip/irq-gic-v3-its.c -index 3620bdb5200f2..a7a952bbfdc28 100644 ---- a/drivers/irqchip/irq-gic-v3-its.c -+++ b/drivers/irqchip/irq-gic-v3-its.c -@@ -4476,8 +4476,6 @@ static int its_vpe_irq_domain_alloc(struct irq_domain *domain, unsigned int virq - struct page *vprop_page; - int base, nr_ids, i, err = 0; - -- BUG_ON(!vm); -- - bitmap = its_lpi_alloc(roundup_pow_of_two(nr_irqs), &base, &nr_ids); - if (!bitmap) - return -ENOMEM; --- -2.43.0 - diff --git a/queue-6.1/kunit-handle-test-faults.patch b/queue-6.1/kunit-handle-test-faults.patch deleted file mode 100644 index 26338d5ef22..00000000000 --- a/queue-6.1/kunit-handle-test-faults.patch +++ /dev/null @@ -1,152 +0,0 @@ -From e27e45dd35e762a86b13c811599f3c98931061af Mon Sep 17 00:00:00 2001 -From: Sasha Levin -Date: Mon, 8 Apr 2024 09:46:22 +0200 -Subject: kunit: Handle test faults -MIME-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit - -From: Mickaël Salaün - -[ Upstream commit 3a35c13007dea132a65f07de05c26b87837fadc2 ] - -Previously, when a kernel test thread crashed (e.g. NULL pointer -dereference, general protection fault), the KUnit test hanged for 30 -seconds and exited with a timeout error. - -Fix this issue by waiting on task_struct->vfork_done instead of the -custom kunit_try_catch.try_completion, and track the execution state by -initially setting try_result with -EINTR and only setting it to 0 if -the test passed. - -Fix kunit_generic_run_threadfn_adapter() signature by returning 0 -instead of calling kthread_complete_and_exit(). Because thread's exit -code is never checked, always set it to 0 to make it clear. To make -this explicit, export kthread_exit() for KUnit tests built as module. - -Fix the -EINTR error message, which couldn't be reached until now. - -This is tested with a following patch. - -Cc: Brendan Higgins -Cc: Eric W. Biederman -Cc: Shuah Khan -Reviewed-by: Kees Cook -Reviewed-by: David Gow -Tested-by: Rae Moar -Signed-off-by: Mickaël Salaün -Link: https://lore.kernel.org/r/20240408074625.65017-5-mic@digikod.net -Signed-off-by: Shuah Khan -Signed-off-by: Sasha Levin ---- - include/kunit/try-catch.h | 3 --- - kernel/kthread.c | 1 + - lib/kunit/try-catch.c | 19 ++++++++++++------- - 3 files changed, 13 insertions(+), 10 deletions(-) - -diff --git a/include/kunit/try-catch.h b/include/kunit/try-catch.h -index c507dd43119d5..7c966a1adbd30 100644 ---- a/include/kunit/try-catch.h -+++ b/include/kunit/try-catch.h -@@ -14,13 +14,11 @@ - - typedef void (*kunit_try_catch_func_t)(void *); - --struct completion; - struct kunit; - - /** - * struct kunit_try_catch - provides a generic way to run code which might fail. - * @test: The test case that is currently being executed. -- * @try_completion: Completion that the control thread waits on while test runs. - * @try_result: Contains any errno obtained while running test case. - * @try: The function, the test case, to attempt to run. - * @catch: The function called if @try bails out. -@@ -46,7 +44,6 @@ struct kunit; - struct kunit_try_catch { - /* private: internal use only. */ - struct kunit *test; -- struct completion *try_completion; - int try_result; - kunit_try_catch_func_t try; - kunit_try_catch_func_t catch; -diff --git a/kernel/kthread.c b/kernel/kthread.c -index f97fd01a29325..742e7c24b29f4 100644 ---- a/kernel/kthread.c -+++ b/kernel/kthread.c -@@ -305,6 +305,7 @@ void __noreturn kthread_exit(long result) - kthread->result = result; - do_exit(0); - } -+EXPORT_SYMBOL(kthread_exit); - - /** - * kthread_complete_and_exit - Exit the current kthread. -diff --git a/lib/kunit/try-catch.c b/lib/kunit/try-catch.c -index 9c9e4dcf06d96..34d30a6f23054 100644 ---- a/lib/kunit/try-catch.c -+++ b/lib/kunit/try-catch.c -@@ -18,7 +18,7 @@ - void __noreturn kunit_try_catch_throw(struct kunit_try_catch *try_catch) - { - try_catch->try_result = -EFAULT; -- kthread_complete_and_exit(try_catch->try_completion, -EFAULT); -+ kthread_exit(0); - } - EXPORT_SYMBOL_GPL(kunit_try_catch_throw); - -@@ -26,9 +26,12 @@ static int kunit_generic_run_threadfn_adapter(void *data) - { - struct kunit_try_catch *try_catch = data; - -+ try_catch->try_result = -EINTR; - try_catch->try(try_catch->context); -+ if (try_catch->try_result == -EINTR) -+ try_catch->try_result = 0; - -- kthread_complete_and_exit(try_catch->try_completion, 0); -+ return 0; - } - - static unsigned long kunit_test_timeout(void) -@@ -58,13 +61,11 @@ static unsigned long kunit_test_timeout(void) - - void kunit_try_catch_run(struct kunit_try_catch *try_catch, void *context) - { -- DECLARE_COMPLETION_ONSTACK(try_completion); - struct kunit *test = try_catch->test; - struct task_struct *task_struct; - int exit_code, time_remaining; - - try_catch->context = context; -- try_catch->try_completion = &try_completion; - try_catch->try_result = 0; - task_struct = kthread_create(kunit_generic_run_threadfn_adapter, - try_catch, "kunit_try_catch_thread"); -@@ -74,8 +75,12 @@ void kunit_try_catch_run(struct kunit_try_catch *try_catch, void *context) - } - get_task_struct(task_struct); - wake_up_process(task_struct); -- -- time_remaining = wait_for_completion_timeout(&try_completion, -+ /* -+ * As for a vfork(2), task_struct->vfork_done (pointing to the -+ * underlying kthread->exited) can be used to wait for the end of a -+ * kernel thread. -+ */ -+ time_remaining = wait_for_completion_timeout(task_struct->vfork_done, - kunit_test_timeout()); - if (time_remaining == 0) { - try_catch->try_result = -ETIMEDOUT; -@@ -91,7 +96,7 @@ void kunit_try_catch_run(struct kunit_try_catch *try_catch, void *context) - if (exit_code == -EFAULT) - try_catch->try_result = 0; - else if (exit_code == -EINTR) -- kunit_err(test, "wake_up_process() was never called\n"); -+ kunit_err(test, "try faulted\n"); - else if (exit_code == -ETIMEDOUT) - kunit_err(test, "try timed out\n"); - else if (exit_code) --- -2.43.0 - diff --git a/queue-6.1/series b/queue-6.1/series index 602dd4847d9..f073518c657 100644 --- a/queue-6.1/series +++ b/queue-6.1/series @@ -6,7 +6,6 @@ media-dvb-as102-fe-fix-as10x_register_addr-packing.patch media-dvb-usb-dib0700_devices-add-missing-release_fi.patch ib-core-implement-a-limit-on-umad-receive-list.patch scsi-qedf-make-qedf_execute_tmf-non-preemptible.patch -irqchip-gic-v3-its-remove-bug_on-in-its_vpe_irq_doma.patch crypto-aead-cipher-zeroize-key-buffer-after-use.patch drm-amdgpu-fix-uninitialized-variable-warnings.patch drm-amdgpu-initialize-timestamp-for-some-legacy-socs.patch @@ -28,7 +27,6 @@ i2c-i801-annotate-apanel_addr-as-__ro_after_init.patch powerpc-64-set-_io_base-to-poison_pointer_delta-not-.patch orangefs-fix-out-of-bounds-fsid-access.patch kunit-fix-timeout-message.patch -kunit-handle-test-faults.patch powerpc-xmon-check-cpu-id-in-commands-c-dp-and-dx.patch igc-fix-a-log-entry-using-uninitialized-netdev.patch bpf-avoid-uninitialized-value-in-bpf_core_read_bitfi.patch diff --git a/queue-6.6/irqchip-gic-v3-its-remove-bug_on-in-its_vpe_irq_doma.patch b/queue-6.6/irqchip-gic-v3-its-remove-bug_on-in-its_vpe_irq_doma.patch deleted file mode 100644 index 84cb8e69922..00000000000 --- a/queue-6.6/irqchip-gic-v3-its-remove-bug_on-in-its_vpe_irq_doma.patch +++ /dev/null @@ -1,41 +0,0 @@ -From 47a92b2b270eaf9db033591d1b38e0bf1a51c11c Mon Sep 17 00:00:00 2001 -From: Sasha Levin -Date: Thu, 18 Apr 2024 14:10:53 +0800 -Subject: irqchip/gic-v3-its: Remove BUG_ON in its_vpe_irq_domain_alloc - -From: Guanrui Huang - -[ Upstream commit 382d2ffe86efb1e2fa803d2cf17e5bfc34e574f3 ] - -This BUG_ON() is useless, because the same effect will be obtained -by letting the code run its course and vm being dereferenced, -triggering an exception. - -So just remove this check. - -Signed-off-by: Guanrui Huang -Signed-off-by: Thomas Gleixner -Reviewed-by: Zenghui Yu -Acked-by: Marc Zyngier -Link: https://lore.kernel.org/r/20240418061053.96803-3-guanrui.huang@linux.alibaba.com -Signed-off-by: Sasha Levin ---- - drivers/irqchip/irq-gic-v3-its.c | 2 -- - 1 file changed, 2 deletions(-) - -diff --git a/drivers/irqchip/irq-gic-v3-its.c b/drivers/irqchip/irq-gic-v3-its.c -index c7d6e6987166f..350abbb36e04b 100644 ---- a/drivers/irqchip/irq-gic-v3-its.c -+++ b/drivers/irqchip/irq-gic-v3-its.c -@@ -4501,8 +4501,6 @@ static int its_vpe_irq_domain_alloc(struct irq_domain *domain, unsigned int virq - struct page *vprop_page; - int base, nr_ids, i, err = 0; - -- BUG_ON(!vm); -- - bitmap = its_lpi_alloc(roundup_pow_of_two(nr_irqs), &base, &nr_ids); - if (!bitmap) - return -ENOMEM; --- -2.43.0 - diff --git a/queue-6.6/kunit-handle-test-faults.patch b/queue-6.6/kunit-handle-test-faults.patch deleted file mode 100644 index a6e8eab61cd..00000000000 --- a/queue-6.6/kunit-handle-test-faults.patch +++ /dev/null @@ -1,152 +0,0 @@ -From 080a463fab2314c87a1878033833405694ca3a5e Mon Sep 17 00:00:00 2001 -From: Sasha Levin -Date: Mon, 8 Apr 2024 09:46:22 +0200 -Subject: kunit: Handle test faults -MIME-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit - -From: Mickaël Salaün - -[ Upstream commit 3a35c13007dea132a65f07de05c26b87837fadc2 ] - -Previously, when a kernel test thread crashed (e.g. NULL pointer -dereference, general protection fault), the KUnit test hanged for 30 -seconds and exited with a timeout error. - -Fix this issue by waiting on task_struct->vfork_done instead of the -custom kunit_try_catch.try_completion, and track the execution state by -initially setting try_result with -EINTR and only setting it to 0 if -the test passed. - -Fix kunit_generic_run_threadfn_adapter() signature by returning 0 -instead of calling kthread_complete_and_exit(). Because thread's exit -code is never checked, always set it to 0 to make it clear. To make -this explicit, export kthread_exit() for KUnit tests built as module. - -Fix the -EINTR error message, which couldn't be reached until now. - -This is tested with a following patch. - -Cc: Brendan Higgins -Cc: Eric W. Biederman -Cc: Shuah Khan -Reviewed-by: Kees Cook -Reviewed-by: David Gow -Tested-by: Rae Moar -Signed-off-by: Mickaël Salaün -Link: https://lore.kernel.org/r/20240408074625.65017-5-mic@digikod.net -Signed-off-by: Shuah Khan -Signed-off-by: Sasha Levin ---- - include/kunit/try-catch.h | 3 --- - kernel/kthread.c | 1 + - lib/kunit/try-catch.c | 19 ++++++++++++------- - 3 files changed, 13 insertions(+), 10 deletions(-) - -diff --git a/include/kunit/try-catch.h b/include/kunit/try-catch.h -index c507dd43119d5..7c966a1adbd30 100644 ---- a/include/kunit/try-catch.h -+++ b/include/kunit/try-catch.h -@@ -14,13 +14,11 @@ - - typedef void (*kunit_try_catch_func_t)(void *); - --struct completion; - struct kunit; - - /** - * struct kunit_try_catch - provides a generic way to run code which might fail. - * @test: The test case that is currently being executed. -- * @try_completion: Completion that the control thread waits on while test runs. - * @try_result: Contains any errno obtained while running test case. - * @try: The function, the test case, to attempt to run. - * @catch: The function called if @try bails out. -@@ -46,7 +44,6 @@ struct kunit; - struct kunit_try_catch { - /* private: internal use only. */ - struct kunit *test; -- struct completion *try_completion; - int try_result; - kunit_try_catch_func_t try; - kunit_try_catch_func_t catch; -diff --git a/kernel/kthread.c b/kernel/kthread.c -index 290cbc845225e..2afdba66b729e 100644 ---- a/kernel/kthread.c -+++ b/kernel/kthread.c -@@ -315,6 +315,7 @@ void __noreturn kthread_exit(long result) - kthread->result = result; - do_exit(0); - } -+EXPORT_SYMBOL(kthread_exit); - - /** - * kthread_complete_and_exit - Exit the current kthread. -diff --git a/lib/kunit/try-catch.c b/lib/kunit/try-catch.c -index 9c9e4dcf06d96..34d30a6f23054 100644 ---- a/lib/kunit/try-catch.c -+++ b/lib/kunit/try-catch.c -@@ -18,7 +18,7 @@ - void __noreturn kunit_try_catch_throw(struct kunit_try_catch *try_catch) - { - try_catch->try_result = -EFAULT; -- kthread_complete_and_exit(try_catch->try_completion, -EFAULT); -+ kthread_exit(0); - } - EXPORT_SYMBOL_GPL(kunit_try_catch_throw); - -@@ -26,9 +26,12 @@ static int kunit_generic_run_threadfn_adapter(void *data) - { - struct kunit_try_catch *try_catch = data; - -+ try_catch->try_result = -EINTR; - try_catch->try(try_catch->context); -+ if (try_catch->try_result == -EINTR) -+ try_catch->try_result = 0; - -- kthread_complete_and_exit(try_catch->try_completion, 0); -+ return 0; - } - - static unsigned long kunit_test_timeout(void) -@@ -58,13 +61,11 @@ static unsigned long kunit_test_timeout(void) - - void kunit_try_catch_run(struct kunit_try_catch *try_catch, void *context) - { -- DECLARE_COMPLETION_ONSTACK(try_completion); - struct kunit *test = try_catch->test; - struct task_struct *task_struct; - int exit_code, time_remaining; - - try_catch->context = context; -- try_catch->try_completion = &try_completion; - try_catch->try_result = 0; - task_struct = kthread_create(kunit_generic_run_threadfn_adapter, - try_catch, "kunit_try_catch_thread"); -@@ -74,8 +75,12 @@ void kunit_try_catch_run(struct kunit_try_catch *try_catch, void *context) - } - get_task_struct(task_struct); - wake_up_process(task_struct); -- -- time_remaining = wait_for_completion_timeout(&try_completion, -+ /* -+ * As for a vfork(2), task_struct->vfork_done (pointing to the -+ * underlying kthread->exited) can be used to wait for the end of a -+ * kernel thread. -+ */ -+ time_remaining = wait_for_completion_timeout(task_struct->vfork_done, - kunit_test_timeout()); - if (time_remaining == 0) { - try_catch->try_result = -ETIMEDOUT; -@@ -91,7 +96,7 @@ void kunit_try_catch_run(struct kunit_try_catch *try_catch, void *context) - if (exit_code == -EFAULT) - try_catch->try_result = 0; - else if (exit_code == -EINTR) -- kunit_err(test, "wake_up_process() was never called\n"); -+ kunit_err(test, "try faulted\n"); - else if (exit_code == -ETIMEDOUT) - kunit_err(test, "try timed out\n"); - else if (exit_code) --- -2.43.0 - diff --git a/queue-6.6/powerpc-dexcr-track-the-dexcr-per-process.patch b/queue-6.6/powerpc-dexcr-track-the-dexcr-per-process.patch deleted file mode 100644 index 0b82c3a9961..00000000000 --- a/queue-6.6/powerpc-dexcr-track-the-dexcr-per-process.patch +++ /dev/null @@ -1,95 +0,0 @@ -From 5236722cd74a1f92589c43b268044b1ae1be1d86 Mon Sep 17 00:00:00 2001 -From: Sasha Levin -Date: Wed, 17 Apr 2024 21:23:18 +1000 -Subject: powerpc/dexcr: Track the DEXCR per-process - -From: Benjamin Gray - -[ Upstream commit 75171f06c4507c3b6b5a69d793879fb20d108bb1 ] - -Add capability to make the DEXCR act as a per-process SPR. - -We do not yet have an interface for changing the values per task. We -also expect the kernel to use a single DEXCR value across all tasks -while in privileged state, so there is no need to synchronize after -changing it (the userspace aspects will synchronize upon returning to -userspace). - -Signed-off-by: Benjamin Gray -Signed-off-by: Michael Ellerman -Link: https://msgid.link/20240417112325.728010-3-bgray@linux.ibm.com -Signed-off-by: Sasha Levin ---- - arch/powerpc/include/asm/processor.h | 1 + - arch/powerpc/kernel/process.c | 10 ++++++++++ - arch/powerpc/kernel/ptrace/ptrace-view.c | 7 +------ - 3 files changed, 12 insertions(+), 6 deletions(-) - -diff --git a/arch/powerpc/include/asm/processor.h b/arch/powerpc/include/asm/processor.h -index b2c51d337e60c..882e31296ea6b 100644 ---- a/arch/powerpc/include/asm/processor.h -+++ b/arch/powerpc/include/asm/processor.h -@@ -260,6 +260,7 @@ struct thread_struct { - unsigned long sier2; - unsigned long sier3; - unsigned long hashkeyr; -+ unsigned long dexcr; - - #endif - }; -diff --git a/arch/powerpc/kernel/process.c b/arch/powerpc/kernel/process.c -index 9452a54d356c9..d482c3fd81d7a 100644 ---- a/arch/powerpc/kernel/process.c -+++ b/arch/powerpc/kernel/process.c -@@ -1185,6 +1185,9 @@ static inline void save_sprs(struct thread_struct *t) - - if (cpu_has_feature(CPU_FTR_DEXCR_NPHIE)) - t->hashkeyr = mfspr(SPRN_HASHKEYR); -+ -+ if (cpu_has_feature(CPU_FTR_ARCH_31)) -+ t->dexcr = mfspr(SPRN_DEXCR); - #endif - } - -@@ -1267,6 +1270,10 @@ static inline void restore_sprs(struct thread_struct *old_thread, - if (cpu_has_feature(CPU_FTR_DEXCR_NPHIE) && - old_thread->hashkeyr != new_thread->hashkeyr) - mtspr(SPRN_HASHKEYR, new_thread->hashkeyr); -+ -+ if (cpu_has_feature(CPU_FTR_ARCH_31) && -+ old_thread->dexcr != new_thread->dexcr) -+ mtspr(SPRN_DEXCR, new_thread->dexcr); - #endif - - } -@@ -1878,6 +1885,9 @@ int copy_thread(struct task_struct *p, const struct kernel_clone_args *args) - #ifdef CONFIG_PPC_BOOK3S_64 - if (cpu_has_feature(CPU_FTR_DEXCR_NPHIE)) - p->thread.hashkeyr = current->thread.hashkeyr; -+ -+ if (cpu_has_feature(CPU_FTR_ARCH_31)) -+ p->thread.dexcr = mfspr(SPRN_DEXCR); - #endif - return 0; - } -diff --git a/arch/powerpc/kernel/ptrace/ptrace-view.c b/arch/powerpc/kernel/ptrace/ptrace-view.c -index 584cf5c3df509..c1819e0a66842 100644 ---- a/arch/powerpc/kernel/ptrace/ptrace-view.c -+++ b/arch/powerpc/kernel/ptrace/ptrace-view.c -@@ -469,12 +469,7 @@ static int dexcr_get(struct task_struct *target, const struct user_regset *regse - if (!cpu_has_feature(CPU_FTR_ARCH_31)) - return -ENODEV; - -- /* -- * The DEXCR is currently static across all CPUs, so we don't -- * store the target's value anywhere, but the static value -- * will also be correct. -- */ -- membuf_store(&to, (u64)lower_32_bits(DEXCR_INIT)); -+ membuf_store(&to, (u64)lower_32_bits(target->thread.dexcr)); - - /* - * Technically the HDEXCR is per-cpu, but a hypervisor can't reasonably --- -2.43.0 - diff --git a/queue-6.6/series b/queue-6.6/series index c3fe45e50cc..492f1129f37 100644 --- a/queue-6.6/series +++ b/queue-6.6/series @@ -7,7 +7,6 @@ media-dvb-as102-fe-fix-as10x_register_addr-packing.patch media-dvb-usb-dib0700_devices-add-missing-release_fi.patch ib-core-implement-a-limit-on-umad-receive-list.patch scsi-qedf-make-qedf_execute_tmf-non-preemptible.patch -irqchip-gic-v3-its-remove-bug_on-in-its_vpe_irq_doma.patch selftests-bpf-adjust-dummy_st_ops_success-to-detect-.patch selftests-bpf-do-not-pass-null-for-non-nullable-para.patch selftests-bpf-dummy_st_ops-should-reject-0-for-non-n.patch @@ -36,12 +35,10 @@ net-dsa-mv88e6xxx-correct-check-for-empty-list.patch media-dvb-frontends-tda18271c2dd-remove-casting-duri.patch media-s2255-use-refcount_t-instead-of-atomic_t-for-n.patch media-dvb-frontends-tda10048-fix-integer-overflow.patch -powerpc-dexcr-track-the-dexcr-per-process.patch i2c-i801-annotate-apanel_addr-as-__ro_after_init.patch powerpc-64-set-_io_base-to-poison_pointer_delta-not-.patch orangefs-fix-out-of-bounds-fsid-access.patch kunit-fix-timeout-message.patch -kunit-handle-test-faults.patch powerpc-xmon-check-cpu-id-in-commands-c-dp-and-dx.patch selftests-net-fix-uninitialized-variables.patch igc-fix-a-log-entry-using-uninitialized-netdev.patch diff --git a/queue-6.9/irqchip-gic-v3-its-remove-bug_on-in-its_vpe_irq_doma.patch b/queue-6.9/irqchip-gic-v3-its-remove-bug_on-in-its_vpe_irq_doma.patch deleted file mode 100644 index b16772fcbb0..00000000000 --- a/queue-6.9/irqchip-gic-v3-its-remove-bug_on-in-its_vpe_irq_doma.patch +++ /dev/null @@ -1,41 +0,0 @@ -From 26ca8971ba590e3c23b9768e541b9e9205b27e99 Mon Sep 17 00:00:00 2001 -From: Sasha Levin -Date: Thu, 18 Apr 2024 14:10:53 +0800 -Subject: irqchip/gic-v3-its: Remove BUG_ON in its_vpe_irq_domain_alloc - -From: Guanrui Huang - -[ Upstream commit 382d2ffe86efb1e2fa803d2cf17e5bfc34e574f3 ] - -This BUG_ON() is useless, because the same effect will be obtained -by letting the code run its course and vm being dereferenced, -triggering an exception. - -So just remove this check. - -Signed-off-by: Guanrui Huang -Signed-off-by: Thomas Gleixner -Reviewed-by: Zenghui Yu -Acked-by: Marc Zyngier -Link: https://lore.kernel.org/r/20240418061053.96803-3-guanrui.huang@linux.alibaba.com -Signed-off-by: Sasha Levin ---- - drivers/irqchip/irq-gic-v3-its.c | 2 -- - 1 file changed, 2 deletions(-) - -diff --git a/drivers/irqchip/irq-gic-v3-its.c b/drivers/irqchip/irq-gic-v3-its.c -index 6dbac6ec778ee..33fa6b7f41c93 100644 ---- a/drivers/irqchip/irq-gic-v3-its.c -+++ b/drivers/irqchip/irq-gic-v3-its.c -@@ -4507,8 +4507,6 @@ static int its_vpe_irq_domain_alloc(struct irq_domain *domain, unsigned int virq - struct page *vprop_page; - int base, nr_ids, i, err = 0; - -- BUG_ON(!vm); -- - bitmap = its_lpi_alloc(roundup_pow_of_two(nr_irqs), &base, &nr_ids); - if (!bitmap) - return -ENOMEM; --- -2.43.0 - diff --git a/queue-6.9/kunit-handle-test-faults.patch b/queue-6.9/kunit-handle-test-faults.patch deleted file mode 100644 index f471201860a..00000000000 --- a/queue-6.9/kunit-handle-test-faults.patch +++ /dev/null @@ -1,152 +0,0 @@ -From 2d873e7b1358877e1f41c1631a2ac1c7d70d0b5b Mon Sep 17 00:00:00 2001 -From: Sasha Levin -Date: Mon, 8 Apr 2024 09:46:22 +0200 -Subject: kunit: Handle test faults -MIME-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit - -From: Mickaël Salaün - -[ Upstream commit 3a35c13007dea132a65f07de05c26b87837fadc2 ] - -Previously, when a kernel test thread crashed (e.g. NULL pointer -dereference, general protection fault), the KUnit test hanged for 30 -seconds and exited with a timeout error. - -Fix this issue by waiting on task_struct->vfork_done instead of the -custom kunit_try_catch.try_completion, and track the execution state by -initially setting try_result with -EINTR and only setting it to 0 if -the test passed. - -Fix kunit_generic_run_threadfn_adapter() signature by returning 0 -instead of calling kthread_complete_and_exit(). Because thread's exit -code is never checked, always set it to 0 to make it clear. To make -this explicit, export kthread_exit() for KUnit tests built as module. - -Fix the -EINTR error message, which couldn't be reached until now. - -This is tested with a following patch. - -Cc: Brendan Higgins -Cc: Eric W. Biederman -Cc: Shuah Khan -Reviewed-by: Kees Cook -Reviewed-by: David Gow -Tested-by: Rae Moar -Signed-off-by: Mickaël Salaün -Link: https://lore.kernel.org/r/20240408074625.65017-5-mic@digikod.net -Signed-off-by: Shuah Khan -Signed-off-by: Sasha Levin ---- - include/kunit/try-catch.h | 3 --- - kernel/kthread.c | 1 + - lib/kunit/try-catch.c | 19 ++++++++++++------- - 3 files changed, 13 insertions(+), 10 deletions(-) - -diff --git a/include/kunit/try-catch.h b/include/kunit/try-catch.h -index c507dd43119d5..7c966a1adbd30 100644 ---- a/include/kunit/try-catch.h -+++ b/include/kunit/try-catch.h -@@ -14,13 +14,11 @@ - - typedef void (*kunit_try_catch_func_t)(void *); - --struct completion; - struct kunit; - - /** - * struct kunit_try_catch - provides a generic way to run code which might fail. - * @test: The test case that is currently being executed. -- * @try_completion: Completion that the control thread waits on while test runs. - * @try_result: Contains any errno obtained while running test case. - * @try: The function, the test case, to attempt to run. - * @catch: The function called if @try bails out. -@@ -46,7 +44,6 @@ struct kunit; - struct kunit_try_catch { - /* private: internal use only. */ - struct kunit *test; -- struct completion *try_completion; - int try_result; - kunit_try_catch_func_t try; - kunit_try_catch_func_t catch; -diff --git a/kernel/kthread.c b/kernel/kthread.c -index c5e40830c1f2d..f7be976ff88af 100644 ---- a/kernel/kthread.c -+++ b/kernel/kthread.c -@@ -315,6 +315,7 @@ void __noreturn kthread_exit(long result) - kthread->result = result; - do_exit(0); - } -+EXPORT_SYMBOL(kthread_exit); - - /** - * kthread_complete_and_exit - Exit the current kthread. -diff --git a/lib/kunit/try-catch.c b/lib/kunit/try-catch.c -index 9c9e4dcf06d96..34d30a6f23054 100644 ---- a/lib/kunit/try-catch.c -+++ b/lib/kunit/try-catch.c -@@ -18,7 +18,7 @@ - void __noreturn kunit_try_catch_throw(struct kunit_try_catch *try_catch) - { - try_catch->try_result = -EFAULT; -- kthread_complete_and_exit(try_catch->try_completion, -EFAULT); -+ kthread_exit(0); - } - EXPORT_SYMBOL_GPL(kunit_try_catch_throw); - -@@ -26,9 +26,12 @@ static int kunit_generic_run_threadfn_adapter(void *data) - { - struct kunit_try_catch *try_catch = data; - -+ try_catch->try_result = -EINTR; - try_catch->try(try_catch->context); -+ if (try_catch->try_result == -EINTR) -+ try_catch->try_result = 0; - -- kthread_complete_and_exit(try_catch->try_completion, 0); -+ return 0; - } - - static unsigned long kunit_test_timeout(void) -@@ -58,13 +61,11 @@ static unsigned long kunit_test_timeout(void) - - void kunit_try_catch_run(struct kunit_try_catch *try_catch, void *context) - { -- DECLARE_COMPLETION_ONSTACK(try_completion); - struct kunit *test = try_catch->test; - struct task_struct *task_struct; - int exit_code, time_remaining; - - try_catch->context = context; -- try_catch->try_completion = &try_completion; - try_catch->try_result = 0; - task_struct = kthread_create(kunit_generic_run_threadfn_adapter, - try_catch, "kunit_try_catch_thread"); -@@ -74,8 +75,12 @@ void kunit_try_catch_run(struct kunit_try_catch *try_catch, void *context) - } - get_task_struct(task_struct); - wake_up_process(task_struct); -- -- time_remaining = wait_for_completion_timeout(&try_completion, -+ /* -+ * As for a vfork(2), task_struct->vfork_done (pointing to the -+ * underlying kthread->exited) can be used to wait for the end of a -+ * kernel thread. -+ */ -+ time_remaining = wait_for_completion_timeout(task_struct->vfork_done, - kunit_test_timeout()); - if (time_remaining == 0) { - try_catch->try_result = -ETIMEDOUT; -@@ -91,7 +96,7 @@ void kunit_try_catch_run(struct kunit_try_catch *try_catch, void *context) - if (exit_code == -EFAULT) - try_catch->try_result = 0; - else if (exit_code == -EINTR) -- kunit_err(test, "wake_up_process() was never called\n"); -+ kunit_err(test, "try faulted\n"); - else if (exit_code == -ETIMEDOUT) - kunit_err(test, "try timed out\n"); - else if (exit_code) --- -2.43.0 - diff --git a/queue-6.9/powerpc-dexcr-track-the-dexcr-per-process.patch b/queue-6.9/powerpc-dexcr-track-the-dexcr-per-process.patch deleted file mode 100644 index febf9b18297..00000000000 --- a/queue-6.9/powerpc-dexcr-track-the-dexcr-per-process.patch +++ /dev/null @@ -1,96 +0,0 @@ -From 0e94b82304e7a726b27dd46394fe22b6c1ebcd60 Mon Sep 17 00:00:00 2001 -From: Sasha Levin -Date: Wed, 17 Apr 2024 21:23:18 +1000 -Subject: powerpc/dexcr: Track the DEXCR per-process - -From: Benjamin Gray - -[ Upstream commit 75171f06c4507c3b6b5a69d793879fb20d108bb1 ] - -Add capability to make the DEXCR act as a per-process SPR. - -We do not yet have an interface for changing the values per task. We -also expect the kernel to use a single DEXCR value across all tasks -while in privileged state, so there is no need to synchronize after -changing it (the userspace aspects will synchronize upon returning to -userspace). - -Signed-off-by: Benjamin Gray -Signed-off-by: Michael Ellerman -Link: https://msgid.link/20240417112325.728010-3-bgray@linux.ibm.com -Stable-dep-of: bbd99922d0f4 ("powerpc/dexcr: Reset DEXCR value across exec") -Signed-off-by: Sasha Levin ---- - arch/powerpc/include/asm/processor.h | 1 + - arch/powerpc/kernel/process.c | 10 ++++++++++ - arch/powerpc/kernel/ptrace/ptrace-view.c | 7 +------ - 3 files changed, 12 insertions(+), 6 deletions(-) - -diff --git a/arch/powerpc/include/asm/processor.h b/arch/powerpc/include/asm/processor.h -index b2c51d337e60c..882e31296ea6b 100644 ---- a/arch/powerpc/include/asm/processor.h -+++ b/arch/powerpc/include/asm/processor.h -@@ -260,6 +260,7 @@ struct thread_struct { - unsigned long sier2; - unsigned long sier3; - unsigned long hashkeyr; -+ unsigned long dexcr; - - #endif - }; -diff --git a/arch/powerpc/kernel/process.c b/arch/powerpc/kernel/process.c -index 9452a54d356c9..d482c3fd81d7a 100644 ---- a/arch/powerpc/kernel/process.c -+++ b/arch/powerpc/kernel/process.c -@@ -1185,6 +1185,9 @@ static inline void save_sprs(struct thread_struct *t) - - if (cpu_has_feature(CPU_FTR_DEXCR_NPHIE)) - t->hashkeyr = mfspr(SPRN_HASHKEYR); -+ -+ if (cpu_has_feature(CPU_FTR_ARCH_31)) -+ t->dexcr = mfspr(SPRN_DEXCR); - #endif - } - -@@ -1267,6 +1270,10 @@ static inline void restore_sprs(struct thread_struct *old_thread, - if (cpu_has_feature(CPU_FTR_DEXCR_NPHIE) && - old_thread->hashkeyr != new_thread->hashkeyr) - mtspr(SPRN_HASHKEYR, new_thread->hashkeyr); -+ -+ if (cpu_has_feature(CPU_FTR_ARCH_31) && -+ old_thread->dexcr != new_thread->dexcr) -+ mtspr(SPRN_DEXCR, new_thread->dexcr); - #endif - - } -@@ -1878,6 +1885,9 @@ int copy_thread(struct task_struct *p, const struct kernel_clone_args *args) - #ifdef CONFIG_PPC_BOOK3S_64 - if (cpu_has_feature(CPU_FTR_DEXCR_NPHIE)) - p->thread.hashkeyr = current->thread.hashkeyr; -+ -+ if (cpu_has_feature(CPU_FTR_ARCH_31)) -+ p->thread.dexcr = mfspr(SPRN_DEXCR); - #endif - return 0; - } -diff --git a/arch/powerpc/kernel/ptrace/ptrace-view.c b/arch/powerpc/kernel/ptrace/ptrace-view.c -index 584cf5c3df509..c1819e0a66842 100644 ---- a/arch/powerpc/kernel/ptrace/ptrace-view.c -+++ b/arch/powerpc/kernel/ptrace/ptrace-view.c -@@ -469,12 +469,7 @@ static int dexcr_get(struct task_struct *target, const struct user_regset *regse - if (!cpu_has_feature(CPU_FTR_ARCH_31)) - return -ENODEV; - -- /* -- * The DEXCR is currently static across all CPUs, so we don't -- * store the target's value anywhere, but the static value -- * will also be correct. -- */ -- membuf_store(&to, (u64)lower_32_bits(DEXCR_INIT)); -+ membuf_store(&to, (u64)lower_32_bits(target->thread.dexcr)); - - /* - * Technically the HDEXCR is per-cpu, but a hypervisor can't reasonably --- -2.43.0 - diff --git a/queue-6.9/series b/queue-6.9/series index e3e34f8cef9..f981244c2f5 100644 --- a/queue-6.9/series +++ b/queue-6.9/series @@ -12,7 +12,6 @@ wifi-rtw89-fw-scan-offload-prohibit-all-6-ghz-channe.patch drm-xe-add-outer-runtime_pm-protection-to-xe_live_kt.patch ib-core-implement-a-limit-on-umad-receive-list.patch scsi-qedf-make-qedf_execute_tmf-non-preemptible.patch -irqchip-gic-v3-its-remove-bug_on-in-its_vpe_irq_doma.patch bpf-mark-bpf_dummy_struct_ops.test_1-parameter-as-nu.patch selftests-bpf-adjust-dummy_st_ops_success-to-detect-.patch selftests-bpf-do-not-pass-null-for-non-nullable-para.patch @@ -54,13 +53,11 @@ media-i2c-st-mipid02-use-the-correct-div-function.patch media-tc358746-use-the-correct-div_-function.patch media-dvb-frontends-tda10048-fix-integer-overflow.patch crypto-hisilicon-sec2-fix-for-register-offset.patch -powerpc-dexcr-track-the-dexcr-per-process.patch gve-account-for-stopped-queues-when-reading-nic-stat.patch i2c-i801-annotate-apanel_addr-as-__ro_after_init.patch powerpc-64-set-_io_base-to-poison_pointer_delta-not-.patch orangefs-fix-out-of-bounds-fsid-access.patch kunit-fix-timeout-message.patch -kunit-handle-test-faults.patch powerpc-xmon-check-cpu-id-in-commands-c-dp-and-dx.patch selftests-net-fix-uninitialized-variables.patch igc-fix-a-log-entry-using-uninitialized-netdev.patch -- 2.47.3