From: Greg Kroah-Hartman Date: Fri, 26 May 2023 14:08:16 +0000 (+0100) Subject: 6.1-stable patches X-Git-Tag: review~86 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=1b146be8751c8fc7a60183d1027076d099fa0ff6;p=thirdparty%2Fkernel%2Fstable-queue.git 6.1-stable patches added patches: drm-amd-amdgpu-update-mes11-api-def.patch drm-amdgpu-mes11-enable-reg-active-poll.patch skbuff-proactively-round-up-to-kmalloc-bucket-size.patch --- diff --git a/queue-6.1/drm-amd-amdgpu-update-mes11-api-def.patch b/queue-6.1/drm-amd-amdgpu-update-mes11-api-def.patch new file mode 100644 index 00000000000..639a043e158 --- /dev/null +++ b/queue-6.1/drm-amd-amdgpu-update-mes11-api-def.patch @@ -0,0 +1,36 @@ +From 1e7bbdba68baf6af7500dd636f18b6fcce58e945 Mon Sep 17 00:00:00 2001 +From: Jack Xiao +Date: Tue, 29 Nov 2022 11:12:08 +0800 +Subject: drm/amd/amdgpu: update mes11 api def + +From: Jack Xiao + +commit 1e7bbdba68baf6af7500dd636f18b6fcce58e945 upstream. + +Update the api def of mes11. + +Signed-off-by: Jack Xiao +Reviewed-by: Hawking Zhang +Tested-and-acked-by: Evan Quan +Signed-off-by: Alex Deucher +Cc: "Gong, Richard" +Signed-off-by: Greg Kroah-Hartman +--- + drivers/gpu/drm/amd/include/mes_v11_api_def.h | 6 +++++- + 1 file changed, 5 insertions(+), 1 deletion(-) + +--- a/drivers/gpu/drm/amd/include/mes_v11_api_def.h ++++ b/drivers/gpu/drm/amd/include/mes_v11_api_def.h +@@ -222,7 +222,11 @@ union MESAPI_SET_HW_RESOURCES { + uint32_t apply_grbm_remote_register_dummy_read_wa : 1; + uint32_t second_gfx_pipe_enabled : 1; + uint32_t enable_level_process_quantum_check : 1; +- uint32_t reserved : 25; ++ uint32_t legacy_sch_mode : 1; ++ uint32_t disable_add_queue_wptr_mc_addr : 1; ++ uint32_t enable_mes_event_int_logging : 1; ++ uint32_t enable_reg_active_poll : 1; ++ uint32_t reserved : 21; + }; + uint32_t uint32_t_all; + }; diff --git a/queue-6.1/drm-amdgpu-mes11-enable-reg-active-poll.patch b/queue-6.1/drm-amdgpu-mes11-enable-reg-active-poll.patch new file mode 100644 index 00000000000..dcf752b5202 --- /dev/null +++ b/queue-6.1/drm-amdgpu-mes11-enable-reg-active-poll.patch @@ -0,0 +1,31 @@ +From a6b3b618c0f7abc3f543dd0c57b2b19a770bffec Mon Sep 17 00:00:00 2001 +From: Jack Xiao +Date: Tue, 29 Nov 2022 11:12:32 +0800 +Subject: drm/amdgpu/mes11: enable reg active poll + +From: Jack Xiao + +commit a6b3b618c0f7abc3f543dd0c57b2b19a770bffec upstream. + +Enable reg active poll in mes11. + +Signed-off-by: Jack Xiao +Reviewed-by: Hawking Zhang +Tested-and-acked-by: Evan Quan +Signed-off-by: Alex Deucher +Cc: "Gong, Richard" +Signed-off-by: Greg Kroah-Hartman +--- + drivers/gpu/drm/amd/amdgpu/mes_v11_0.c | 1 + + 1 file changed, 1 insertion(+) + +--- a/drivers/gpu/drm/amd/amdgpu/mes_v11_0.c ++++ b/drivers/gpu/drm/amd/amdgpu/mes_v11_0.c +@@ -390,6 +390,7 @@ static int mes_v11_0_set_hw_resources(st + mes_set_hw_res_pkt.disable_reset = 1; + mes_set_hw_res_pkt.disable_mes_log = 1; + mes_set_hw_res_pkt.use_different_vmid_compute = 1; ++ mes_set_hw_res_pkt.enable_reg_active_poll = 1; + mes_set_hw_res_pkt.oversubscription_timer = 50; + + return mes_v11_0_submit_pkt_and_poll_completion(mes, diff --git a/queue-6.1/series b/queue-6.1/series index a7a58f2e54e..99a8c88b0f5 100644 --- a/queue-6.1/series +++ b/queue-6.1/series @@ -6,3 +6,6 @@ tpm-tpm_tis-startup-chip-before-testing-for-interrup.patch tpm-re-enable-tpm-chip-boostrapping-non-tpm_tis-tpm-.patch tpm-prevent-hwrng-from-activating-during-resume.patch watchdog-sp5100_tco-immediately-trigger-upon-starting.patch +drm-amd-amdgpu-update-mes11-api-def.patch +drm-amdgpu-mes11-enable-reg-active-poll.patch +skbuff-proactively-round-up-to-kmalloc-bucket-size.patch diff --git a/queue-6.1/skbuff-proactively-round-up-to-kmalloc-bucket-size.patch b/queue-6.1/skbuff-proactively-round-up-to-kmalloc-bucket-size.patch new file mode 100644 index 00000000000..610d4eb6d3d --- /dev/null +++ b/queue-6.1/skbuff-proactively-round-up-to-kmalloc-bucket-size.patch @@ -0,0 +1,153 @@ +From 12d6c1d3a2ad0c199ec57c201cdc71e8e157a232 Mon Sep 17 00:00:00 2001 +From: Kees Cook +Date: Tue, 25 Oct 2022 15:39:35 -0700 +Subject: skbuff: Proactively round up to kmalloc bucket size + +From: Kees Cook + +commit 12d6c1d3a2ad0c199ec57c201cdc71e8e157a232 upstream. + +Instead of discovering the kmalloc bucket size _after_ allocation, round +up proactively so the allocation is explicitly made for the full size, +allowing the compiler to correctly reason about the resulting size of +the buffer through the existing __alloc_size() hint. + +This will allow for kernels built with CONFIG_UBSAN_BOUNDS or the +coming dynamic bounds checking under CONFIG_FORTIFY_SOURCE to gain +back the __alloc_size() hints that were temporarily reverted in commit +93dd04ab0b2b ("slab: remove __alloc_size attribute from __kmalloc_track_caller") + +Cc: "David S. Miller" +Cc: Eric Dumazet +Cc: Jakub Kicinski +Cc: Paolo Abeni +Cc: netdev@vger.kernel.org +Cc: Greg Kroah-Hartman +Cc: Nick Desaulniers +Cc: David Rientjes +Acked-by: Vlastimil Babka +Link: https://patchwork.kernel.org/project/netdevbpf/patch/20221021234713.you.031-kees@kernel.org/ +Signed-off-by: Kees Cook +Link: https://lore.kernel.org/r/20221025223811.up.360-kees@kernel.org +Signed-off-by: Paolo Abeni +Cc: Daniel Díaz +Signed-off-by: Greg Kroah-Hartman +--- + net/core/skbuff.c | 52 ++++++++++++++++++++++++++-------------------------- + 1 file changed, 26 insertions(+), 26 deletions(-) + +--- a/net/core/skbuff.c ++++ b/net/core/skbuff.c +@@ -506,14 +506,14 @@ struct sk_buff *__alloc_skb(unsigned int + */ + size = SKB_DATA_ALIGN(size); + size += SKB_DATA_ALIGN(sizeof(struct skb_shared_info)); +- data = kmalloc_reserve(size, gfp_mask, node, &pfmemalloc); ++ osize = kmalloc_size_roundup(size); ++ data = kmalloc_reserve(osize, gfp_mask, node, &pfmemalloc); + if (unlikely(!data)) + goto nodata; +- /* kmalloc(size) might give us more room than requested. ++ /* kmalloc_size_roundup() might give us more room than requested. + * Put skb_shared_info exactly at the end of allocated zone, + * to allow max possible filling before reallocation. + */ +- osize = ksize(data); + size = SKB_WITH_OVERHEAD(osize); + prefetchw(data + size); + +@@ -1822,10 +1822,11 @@ EXPORT_SYMBOL(__pskb_copy_fclone); + int pskb_expand_head(struct sk_buff *skb, int nhead, int ntail, + gfp_t gfp_mask) + { +- int i, osize = skb_end_offset(skb); +- int size = osize + nhead + ntail; ++ unsigned int osize = skb_end_offset(skb); ++ unsigned int size = osize + nhead + ntail; + long off; + u8 *data; ++ int i; + + BUG_ON(nhead < 0); + +@@ -1833,15 +1834,16 @@ int pskb_expand_head(struct sk_buff *skb + + skb_zcopy_downgrade_managed(skb); + +- size = SKB_DATA_ALIGN(size); +- + if (skb_pfmemalloc(skb)) + gfp_mask |= __GFP_MEMALLOC; +- data = kmalloc_reserve(size + SKB_DATA_ALIGN(sizeof(struct skb_shared_info)), +- gfp_mask, NUMA_NO_NODE, NULL); ++ ++ size = SKB_DATA_ALIGN(size); ++ size += SKB_DATA_ALIGN(sizeof(struct skb_shared_info)); ++ size = kmalloc_size_roundup(size); ++ data = kmalloc_reserve(size, gfp_mask, NUMA_NO_NODE, NULL); + if (!data) + goto nodata; +- size = SKB_WITH_OVERHEAD(ksize(data)); ++ size = SKB_WITH_OVERHEAD(size); + + /* Copy only real data... and, alas, header. This should be + * optimized for the cases when header is void. +@@ -6182,21 +6184,20 @@ static int pskb_carve_inside_header(stru + const int headlen, gfp_t gfp_mask) + { + int i; +- int size = skb_end_offset(skb); ++ unsigned int size = skb_end_offset(skb); + int new_hlen = headlen - off; + u8 *data; + +- size = SKB_DATA_ALIGN(size); +- + if (skb_pfmemalloc(skb)) + gfp_mask |= __GFP_MEMALLOC; +- data = kmalloc_reserve(size + +- SKB_DATA_ALIGN(sizeof(struct skb_shared_info)), +- gfp_mask, NUMA_NO_NODE, NULL); ++ ++ size = SKB_DATA_ALIGN(size); ++ size += SKB_DATA_ALIGN(sizeof(struct skb_shared_info)); ++ size = kmalloc_size_roundup(size); ++ data = kmalloc_reserve(size, gfp_mask, NUMA_NO_NODE, NULL); + if (!data) + return -ENOMEM; +- +- size = SKB_WITH_OVERHEAD(ksize(data)); ++ size = SKB_WITH_OVERHEAD(size); + + /* Copy real data, and all frags */ + skb_copy_from_linear_data_offset(skb, off, data, new_hlen); +@@ -6301,22 +6302,21 @@ static int pskb_carve_inside_nonlinear(s + int pos, gfp_t gfp_mask) + { + int i, k = 0; +- int size = skb_end_offset(skb); ++ unsigned int size = skb_end_offset(skb); + u8 *data; + const int nfrags = skb_shinfo(skb)->nr_frags; + struct skb_shared_info *shinfo; + +- size = SKB_DATA_ALIGN(size); +- + if (skb_pfmemalloc(skb)) + gfp_mask |= __GFP_MEMALLOC; +- data = kmalloc_reserve(size + +- SKB_DATA_ALIGN(sizeof(struct skb_shared_info)), +- gfp_mask, NUMA_NO_NODE, NULL); ++ ++ size = SKB_DATA_ALIGN(size); ++ size += SKB_DATA_ALIGN(sizeof(struct skb_shared_info)); ++ size = kmalloc_size_roundup(size); ++ data = kmalloc_reserve(size, gfp_mask, NUMA_NO_NODE, NULL); + if (!data) + return -ENOMEM; +- +- size = SKB_WITH_OVERHEAD(ksize(data)); ++ size = SKB_WITH_OVERHEAD(size); + + memcpy((struct skb_shared_info *)(data + size), + skb_shinfo(skb), offsetof(struct skb_shared_info, frags[0]));