X-Git-Url: http://git.pld-linux.org/?a=blobdiff_plain;f=kernel-small_fixes.patch;h=f0584fb5d2bf489cc24ac7eaf952c345766e3c27;hb=48505b18a6a1b64b1275f7f77d250b93ea819bd0;hp=f8c1e758aa6d1ebafcdd63eb42237b5eebf59763;hpb=99992ee38162d313ea413f836b516d62ccdf5f96;p=packages%2Fkernel.git diff --git a/kernel-small_fixes.patch b/kernel-small_fixes.patch index f8c1e758..f0584fb5 100644 --- a/kernel-small_fixes.patch +++ b/kernel-small_fixes.patch @@ -1,188 +1,117 @@ ---- linux-2.6.33/scripts/mod/modpost.c~ 2010-02-24 19:52:17.000000000 +0100 -+++ linux-2.6.33/scripts/mod/modpost.c 2010-03-07 14:26:47.242168558 +0100 -@@ -15,7 +15,8 @@ - #include - #include - #include "modpost.h" --#include "../../include/generated/autoconf.h" -+// PLD architectures don't use CONFIG_SYMBOL_PREFIX -+//#include "../../include/generated/autoconf.h" - #include "../../include/linux/license.h" +; https://lkml.org/lkml/2019/7/10/244 +diff -ur linux-5.3/drivers/scsi/aacraid.org/aacraid.h linux-5.3/drivers/scsi/aacraid/aacraid.h +--- linux-5.3/drivers/scsi/aacraid.org/aacraid.h 2019-11-01 22:42:37.011469816 +0100 ++++ linux-5.3/drivers/scsi/aacraid/aacraid.h 2019-11-04 09:29:51.321486211 +0100 +@@ -2740,17 +2740,6 @@ + int aac_rx_deliver_producer(struct fib * fib); + void aac_reinit_aif(struct aac_dev *aac, unsigned int index); - /* Some toolchains use a `_' prefix for all user symbols. */ - ---- linux-3.0/scripts/kconfig/lxdialog/check-lxdialog.sh~ 2011-07-22 04:17:23.000000000 +0200 -+++ linux-3.0/scripts/kconfig/lxdialog/check-lxdialog.sh 2011-08-25 21:26:04.799150642 +0200 -@@ -9,6 +9,12 @@ - $cc -print-file-name=lib${lib}.${ext} | grep -q / - if [ $? -eq 0 ]; then - echo "-l${lib}" -+ for libt in tinfow tinfo ; do -+ $cc -print-file-name=lib${libt}.${ext} | grep -q / -+ if [ $? -eq 0 ]; then -+ echo "-l${libt}" -+ fi -+ done - exit - fi - done - -From 30927520dbae297182990bb21d08762bcc35ce1d Mon Sep 17 00:00:00 2001 -From: Eric Dumazet -Date: Wed, 9 Sep 2015 21:55:07 -0700 -Subject: [PATCH] tcp_cubic: better follow cubic curve after idle period - -Jana Iyengar found an interesting issue on CUBIC : - -The epoch is only updated/reset initially and when experiencing losses. -The delta "t" of now - epoch_start can be arbitrary large after app idle -as well as the bic_target. Consequentially the slope (inverse of -ca->cnt) would be really large, and eventually ca->cnt would be -lower-bounded in the end to 2 to have delayed-ACK slow-start behavior. - -This particularly shows up when slow_start_after_idle is disabled -as a dangerous cwnd inflation (1.5 x RTT) after few seconds of idle -time. - -Jana initial fix was to reset epoch_start if app limited, -but Neal pointed out it would ask the CUBIC algorithm to recalculate the -curve so that we again start growing steeply upward from where cwnd is -now (as CUBIC does just after a loss). Ideally we'd want the cwnd growth -curve to be the same shape, just shifted later in time by the amount of -the idle period. - -Reported-by: Jana Iyengar -Signed-off-by: Eric Dumazet -Signed-off-by: Yuchung Cheng -Signed-off-by: Neal Cardwell -Cc: Stephen Hemminger -Cc: Sangtae Ha -Cc: Lawrence Brakmo -Signed-off-by: David S. Miller ---- - net/ipv4/tcp_cubic.c | 16 ++++++++++++++++ - 1 file changed, 16 insertions(+) - -diff --git a/net/ipv4/tcp_cubic.c b/net/ipv4/tcp_cubic.c -index 28011fb1..c6ded6b 100644 ---- a/net/ipv4/tcp_cubic.c -+++ b/net/ipv4/tcp_cubic.c -@@ -151,6 +151,21 @@ static void bictcp_init(struct sock *sk) - tcp_sk(sk)->snd_ssthresh = initial_ssthresh; - } +-static inline int aac_is_src(struct aac_dev *dev) +-{ +- u16 device = dev->pdev->device; +- +- if (device == PMC_DEVICE_S6 || +- device == PMC_DEVICE_S7 || +- device == PMC_DEVICE_S8) +- return 1; +- return 0; +-} +- + static inline int aac_supports_2T(struct aac_dev *dev) + { + return (dev->adapter_info.options & AAC_OPT_NEW_COMM_64); +diff -ur linux-5.3/drivers/scsi/aacraid.org/comminit.c linux-5.3/drivers/scsi/aacraid/comminit.c +--- linux-5.3/drivers/scsi/aacraid.org/comminit.c 2019-11-01 22:42:37.014803249 +0100 ++++ linux-5.3/drivers/scsi/aacraid/comminit.c 2019-11-04 09:29:51.321486211 +0100 +@@ -41,8 +41,11 @@ + { + u32 status = 0; -+static void bictcp_cwnd_event(struct sock *sk, enum tcp_ca_event event) -+{ -+ if (event == CA_EVENT_TX_START) { -+ s32 delta = tcp_time_stamp - tcp_sk(sk)->lsndtime; -+ struct bictcp *ca = inet_csk_ca(sk); -+ -+ /* We were application limited (idle) for a while. -+ * Shift epoch_start to keep cwnd growth to cubic curve. -+ */ -+ if (ca->epoch_start && delta > 0) -+ ca->epoch_start += delta; -+ return; +- if (aac_is_src(dev)) ++ if (dev->pdev->device == PMC_DEVICE_S6 || ++ dev->pdev->device == PMC_DEVICE_S7 || ++ dev->pdev->device == PMC_DEVICE_S8) { + status = src_readl(dev, MUnit.OMR); + } -+} -+ - /* calculate the cubic root of x using a table lookup followed by one - * Newton-Raphson iteration. - * Avg err ~= 0.195% -@@ -450,6 +465,7 @@ static struct tcp_congestion_ops cubictcp __read_mostly = { - .cong_avoid = bictcp_cong_avoid, - .set_state = bictcp_state, - .undo_cwnd = bictcp_undo_cwnd, -+ .cwnd_event = bictcp_cwnd_event, - .pkts_acked = bictcp_acked, - .owner = THIS_MODULE, - .name = "cubic", -From 7a29ac474a47eb8cf212b45917683ae89d6fa13b Mon Sep 17 00:00:00 2001 -From: Chris Mason -Date: Tue, 10 Nov 2015 10:10:34 +1100 -Subject: xfs: give all workqueues rescuer threads - -We're consistently hitting deadlocks here with XFS on recent kernels. -After some digging through the crash files, it looks like everyone in -the system is waiting for XFS to reclaim memory. - -Something like this: - -PID: 2733434 TASK: ffff8808cd242800 CPU: 19 COMMAND: "java" - #0 [ffff880019c53588] __schedule at ffffffff818c4df2 - #1 [ffff880019c535d8] schedule at ffffffff818c5517 - #2 [ffff880019c535f8] _xfs_log_force_lsn at ffffffff81316348 - #3 [ffff880019c53688] xfs_log_force_lsn at ffffffff813164fb - #4 [ffff880019c536b8] xfs_iunpin_wait at ffffffff8130835e - #5 [ffff880019c53728] xfs_reclaim_inode at ffffffff812fd453 - #6 [ffff880019c53778] xfs_reclaim_inodes_ag at ffffffff812fd8c7 - #7 [ffff880019c53928] xfs_reclaim_inodes_nr at ffffffff812fe433 - #8 [ffff880019c53958] xfs_fs_free_cached_objects at ffffffff8130d3b9 - #9 [ffff880019c53968] super_cache_scan at ffffffff811a6f73 -#10 [ffff880019c539c8] shrink_slab at ffffffff811460e6 -#11 [ffff880019c53aa8] shrink_zone at ffffffff8114a53f -#12 [ffff880019c53b48] do_try_to_free_pages at ffffffff8114a8ba -#13 [ffff880019c53be8] try_to_free_pages at ffffffff8114ad5a -#14 [ffff880019c53c78] __alloc_pages_nodemask at ffffffff8113e1b8 -#15 [ffff880019c53d88] alloc_kmem_pages_node at ffffffff8113e671 -#16 [ffff880019c53dd8] copy_process at ffffffff8104f781 -#17 [ffff880019c53ec8] do_fork at ffffffff8105129c -#18 [ffff880019c53f38] sys_clone at ffffffff810515b6 -#19 [ffff880019c53f48] stub_clone at ffffffff818c8e4d - -xfs_log_force_lsn is waiting for logs to get cleaned, which is waiting -for IO, which is waiting for workers to complete the IO which is waiting -for worker threads that don't exist yet: - -PID: 2752451 TASK: ffff880bd6bdda00 CPU: 37 COMMAND: "kworker/37:1" - #0 [ffff8808d20abbb0] __schedule at ffffffff818c4df2 - #1 [ffff8808d20abc00] schedule at ffffffff818c5517 - #2 [ffff8808d20abc20] schedule_timeout at ffffffff818c7c6c - #3 [ffff8808d20abcc0] wait_for_completion_killable at ffffffff818c6495 - #4 [ffff8808d20abd30] kthread_create_on_node at ffffffff8106ec82 - #5 [ffff8808d20abdf0] create_worker at ffffffff8106752f - #6 [ffff8808d20abe40] worker_thread at ffffffff810699be - #7 [ffff8808d20abec0] kthread at ffffffff8106ef59 - #8 [ffff8808d20abf50] ret_from_fork at ffffffff818c8ac8 - -I think we should be using WQ_MEM_RECLAIM to make sure this thread -pool makes progress when we're not able to allocate new workers. - -[dchinner: make all workqueues WQ_MEM_RECLAIM] - -Signed-off-by: Chris Mason -Reviewed-by: Dave Chinner -Signed-off-by: Dave Chinner ---- - fs/xfs/xfs_super.c | 7 ++++--- - 1 file changed, 4 insertions(+), 3 deletions(-) - -diff --git a/fs/xfs/xfs_super.c b/fs/xfs/xfs_super.c -index 29531ec..65fbfb7 100644 ---- a/fs/xfs/xfs_super.c -+++ b/fs/xfs/xfs_super.c -@@ -838,17 +838,18 @@ xfs_init_mount_workqueues( - goto out_destroy_unwritten; + return (status & AAC_INT_MODE_MSIX); + } - mp->m_reclaim_workqueue = alloc_workqueue("xfs-reclaim/%s", -- WQ_FREEZABLE, 0, mp->m_fsname); -+ WQ_MEM_RECLAIM|WQ_FREEZABLE, 0, mp->m_fsname); - if (!mp->m_reclaim_workqueue) - goto out_destroy_cil; +@@ -349,7 +352,8 @@ + /* FIB should be freed only after getting the response from the F/W */ + if (status != -ERESTARTSYS) + aac_fib_free(fibctx); +- if (aac_is_src(dev) && ++ if ((dev->pdev->device == PMC_DEVICE_S7 || ++ dev->pdev->device == PMC_DEVICE_S8) && + dev->msi_enabled) + aac_set_intx_mode(dev); + return status; +@@ -610,7 +614,8 @@ + dev->max_fib_size = status[1] & 0xFFE0; + host->sg_tablesize = status[2] >> 16; + dev->sg_tablesize = status[2] & 0xFFFF; +- if (aac_is_src(dev)) { ++ if (dev->pdev->device == PMC_DEVICE_S7 || ++ dev->pdev->device == PMC_DEVICE_S8) { + if (host->can_queue > (status[3] >> 16) - + AAC_NUM_MGT_FIB) + host->can_queue = (status[3] >> 16) - +@@ -629,7 +634,9 @@ + pr_warn("numacb=%d ignored\n", numacb); + } - mp->m_log_workqueue = alloc_workqueue("xfs-log/%s", -- WQ_FREEZABLE|WQ_HIGHPRI, 0, mp->m_fsname); -+ WQ_MEM_RECLAIM|WQ_FREEZABLE|WQ_HIGHPRI, 0, -+ mp->m_fsname); - if (!mp->m_log_workqueue) - goto out_destroy_reclaim; +- if (aac_is_src(dev)) ++ if (dev->pdev->device == PMC_DEVICE_S6 || ++ dev->pdev->device == PMC_DEVICE_S7 || ++ dev->pdev->device == PMC_DEVICE_S8) + aac_define_int_mode(dev); + /* + * Ok now init the communication subsystem +diff -ur linux-5.3/drivers/scsi/aacraid.org/commsup.c linux-5.3/drivers/scsi/aacraid/commsup.c +--- linux-5.3/drivers/scsi/aacraid.org/commsup.c 2019-11-01 22:42:37.014803249 +0100 ++++ linux-5.3/drivers/scsi/aacraid/commsup.c 2019-11-04 09:29:51.321486211 +0100 +@@ -2593,7 +2593,9 @@ + { + int i; - mp->m_eofblocks_workqueue = alloc_workqueue("xfs-eofblocks/%s", -- WQ_FREEZABLE, 0, mp->m_fsname); -+ WQ_MEM_RECLAIM|WQ_FREEZABLE, 0, mp->m_fsname); - if (!mp->m_eofblocks_workqueue) - goto out_destroy_log; +- if (aac_is_src(dev)) { ++ if (dev->pdev->device == PMC_DEVICE_S6 || ++ dev->pdev->device == PMC_DEVICE_S7 || ++ dev->pdev->device == PMC_DEVICE_S8) { + if (dev->max_msix > 1) { + for (i = 0; i < dev->max_msix; i++) + free_irq(pci_irq_vector(dev->pdev, i), +diff -ur linux-5.3/drivers/scsi/aacraid.org/linit.c linux-5.3/drivers/scsi/aacraid/linit.c +--- linux-5.3/drivers/scsi/aacraid.org/linit.c 2019-11-01 22:42:37.011469816 +0100 ++++ linux-5.3/drivers/scsi/aacraid/linit.c 2019-11-04 09:29:51.321486211 +0100 +@@ -1567,8 +1567,9 @@ + aac_send_shutdown(aac); --- -cgit v0.11.2 - + aac_adapter_disable_int(aac); +- +- if (aac_is_src(aac)) { ++ if (aac->pdev->device == PMC_DEVICE_S6 || ++ aac->pdev->device == PMC_DEVICE_S7 || ++ aac->pdev->device == PMC_DEVICE_S8) { + if (aac->max_msix > 1) { + for (i = 0; i < aac->max_msix; i++) { + free_irq(pci_irq_vector(aac->pdev, i), +@@ -1858,7 +1859,8 @@ + aac_adapter_enable_int(dev); + + +- if (aac_is_src(dev)) ++ if (dev->pdev->device == PMC_DEVICE_S7 || ++ dev->pdev->device == PMC_DEVICE_S8) + aac_define_int_mode(dev); + + if (dev->msi_enabled) + +--- linux-5.7/scripts/ld-version.sh~ 2020-06-01 01:49:15.000000000 +0200 ++++ linux-5.7/scripts/ld-version.sh 2020-06-02 08:28:48.303207264 +0200 +@@ -1,4 +1,4 @@ +-#!/usr/bin/awk -f ++#!/bin/awk -f + # SPDX-License-Identifier: GPL-2.0 + # extract linker version number from stdin and turn into single number + {