From patchwork Thu Apr 2 12:32:51 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Uladzislau Rezki X-Patchwork-Id: 11470647 Return-Path: Received: from mail.kernel.org (pdx-korg-mail-1.web.codeaurora.org [172.30.200.123]) by pdx-korg-patchwork-2.web.codeaurora.org (Postfix) with ESMTP id 6803A1667 for ; Thu, 2 Apr 2020 12:33:07 +0000 (UTC) Received: from kanga.kvack.org (kanga.kvack.org [205.233.56.17]) by mail.kernel.org (Postfix) with ESMTP id 0E04A20784 for ; Thu, 2 Apr 2020 12:33:06 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=fail reason="signature verification failed" (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b="YdCj68Co" DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org 0E04A20784 Authentication-Results: mail.kernel.org; dmarc=fail (p=none dis=none) header.from=gmail.com Authentication-Results: mail.kernel.org; spf=pass smtp.mailfrom=owner-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix) id 9C9188E0008; Thu, 2 Apr 2020 08:33:05 -0400 (EDT) Delivered-To: linux-mm-outgoing@kvack.org Received: by kanga.kvack.org (Postfix, from userid 40) id 97A068E0007; Thu, 2 Apr 2020 08:33:05 -0400 (EDT) X-Original-To: int-list-linux-mm@kvack.org X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 88E898E0008; Thu, 2 Apr 2020 08:33:05 -0400 (EDT) X-Original-To: linux-mm@kvack.org X-Delivered-To: linux-mm@kvack.org Received: from forelay.hostedemail.com (smtprelay0142.hostedemail.com [216.40.44.142]) by kanga.kvack.org (Postfix) with ESMTP id 6E7BF8E0007 for ; Thu, 2 Apr 2020 08:33:05 -0400 (EDT) Received: from smtpin01.hostedemail.com (10.5.19.251.rfc1918.com [10.5.19.251]) by forelay05.hostedemail.com (Postfix) with ESMTP id 22F64181AC9CB for ; Thu, 2 Apr 2020 12:33:05 +0000 (UTC) X-FDA: 76662854730.01.rock09_72353abaab327 X-Spam-Summary: 2,0,0,edada8eb4555f2d7,d41d8cd98f00b204,urezki@gmail.com,,RULES_HIT:41:355:379:541:800:960:966:973:988:989:1260:1311:1314:1345:1437:1515:1535:1542:1711:1730:1747:1777:1792:2196:2198:2199:2200:2393:2559:2562:3138:3139:3140:3141:3142:3354:3865:3866:3867:3868:3871:3872:3874:4250:4321:4385:5007:6117:6119:6261:6653:7514:7903:9413:9592:10004:10394:11026:11473:11658:11914:12043:12296:12297:12438:12517:12519:12555:12895:12986:13869:13894:14093:14096:14181:14394:14687:14721:21080:21433:21444:21451:21627:21666:21789:21939:21990:30005:30054:30056,0,RBL:209.85.208.196:@gmail.com:.lbl8.mailshell.net-66.100.201.100 62.18.0.100,CacheIP:none,Bayesian:0.5,0.5,0.5,Netcheck:none,DomainCache:0,MSF:not bulk,SPF:fp,MSBL:0,DNSBL:neutral,Custom_rules:0:0:0,LFtime:24,LUA_SUMMARY:none X-HE-Tag: rock09_72353abaab327 X-Filterd-Recvd-Size: 5751 Received: from mail-lj1-f196.google.com (mail-lj1-f196.google.com [209.85.208.196]) by imf37.hostedemail.com (Postfix) with ESMTP for ; Thu, 2 Apr 2020 12:33:04 +0000 (UTC) Received: by mail-lj1-f196.google.com with SMTP id p14so2995500lji.11 for ; Thu, 02 Apr 2020 05:33:04 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:to:cc:subject:date:message-id:mime-version :content-transfer-encoding; bh=l3xG+lzh6Q2m2bU1b/cZLY6stz0OrJ21NrAPdv3f5lI=; b=YdCj68CoIGNm8klzekN6UwRYTOMrJXNAezwvbdvUizysC4JClKGycqepTK+P7kMSvz uwVO0pWBAXIY1nFRiH8r9VGbzeOqyH9dKdPayLKVc+dWktRsc/A/1Sov+46ZtTtRdUB/ xUJNK1/Gz3eateO4IDozVXnf1oN0EuAtjmu4VOSsRljrle+pIg2MY1gNdURCin4zU6/k SWHI1+MuowwyS8UwE8c8lJi2kBSm5o++E57IM3Er2yNVdlacfF/ktRO8zJygZVEjM92l tQHJkbf5Mij5Ekw+QVL+Gt0PzXldNxNVNJ3WuoTmVy3hWs8vAndrvhY6XDAQ5mGgF4yv 5pUg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:mime-version :content-transfer-encoding; bh=l3xG+lzh6Q2m2bU1b/cZLY6stz0OrJ21NrAPdv3f5lI=; b=YSf3RW5OWEhX9GEitrI5RbG5AIqPovU05OdhJ8xBjUZQdanyaPWnT5/3R/gVwInr2E Lnm24CaeiuhVXJ+qZ13h7/OJQauZBS/Z8VSDITpdbIPb0ELZ58nWJIVkjB+LxIBqR+JB lrEObX7Rw0/laeOx/R8zLuyB0+Sjfc2HuuFowWvR7avzMdZ7QVT4wwDgJnJDk1O2i6KO M3xAB8w3HcPTbYn725qyBjY8JlZJQHvfXjPlk7Rb53ZSbhJP2aFlDhDoW8pD4hTuFVDb kWAHZHwvBcMmpRsnu2GEicCgXIsgeN1wiSDbGl5AEbXpoKAQaLbJusNLPvD2lqapUEj7 V7uA== X-Gm-Message-State: AGi0PuahHYg3QIGCFSBeKF1yyzVLAjeiaT58ZrjyyDQSv9rWmNaiayqX mbeFLRe2j9a31EJPIeUH4BE= X-Google-Smtp-Source: APiQypL/TMoPg1xpQz/u+DpsCIjhLMV4V4JUwSAbK/9BffhqsJD2f8okxquuS6KlEyeqFYyh6hqOaQ== X-Received: by 2002:a2e:8887:: with SMTP id k7mr1909764lji.193.1585830783082; Thu, 02 Apr 2020 05:33:03 -0700 (PDT) Received: from pc636.lan (h5ef52e31.seluork.dyn.perspektivbredband.net. [94.245.46.49]) by smtp.gmail.com with ESMTPSA id u25sm3833494lfo.71.2020.04.02.05.33.00 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 02 Apr 2020 05:33:01 -0700 (PDT) From: "Uladzislau Rezki (Sony)" To: LKML , "Paul E . McKenney" , Joel Fernandes Cc: RCU , linux-mm@kvack.org, Andrew Morton , Uladzislau Rezki , Steven Rostedt , Oleksiy Avramchenko Subject: [PATCH 1/3] rcu/tree: use more permissive parameters when attaching a head Date: Thu, 2 Apr 2020 14:32:51 +0200 Message-Id: <20200402123253.10382-1-urezki@gmail.com> X-Mailer: git-send-email 2.20.1 MIME-Version: 1.0 X-Bogosity: Ham, tests=bogofilter, spamicity=0.000000, version=1.2.4 Sender: owner-linux-mm@kvack.org Precedence: bulk X-Loop: owner-majordomo@kvack.org List-ID: It is documneted that a headless object can be reclaimed from might_sleep() context only. Because of that when a head is dynamically attached it makes sense to drop the lock and do an allocation with much more permissve flags comparing if it is done from atomic context. That is why use GFP_KERNEL flag plus some extra ones which would make an allocation most likely to be succeed. The big advantage of doing so is a direct reclaim process. Tested such approach on my local tiny system with 145MB of ram(the minimum amount the KVM system is capable of booting) and 4xCPUs. For stressing the rcuperf module was used. During tests with difference combinations i did not observe any hit of our last emergency case, when synchronize_rcu() is involved. Please note, the "dynamically attaching" path was enabled only, apart of that all types of objects were considered as headless variant during testing. Signed-off-by: Uladzislau Rezki (Sony) Suggested-by: Joel Fernandes (Google) --- kernel/rcu/tree.c | 23 ++++++++++++++++------- 1 file changed, 16 insertions(+), 7 deletions(-) diff --git a/kernel/rcu/tree.c b/kernel/rcu/tree.c index 6172e6296dd7..24f620a06219 100644 --- a/kernel/rcu/tree.c +++ b/kernel/rcu/tree.c @@ -3148,13 +3148,10 @@ static inline struct rcu_head *attach_rcu_head_to_object(void *obj) { unsigned long *ptr; + /* Try hard to get the memory. */ ptr = kmalloc(sizeof(unsigned long *) + - sizeof(struct rcu_head), GFP_NOWAIT | __GFP_NOWARN); - - if (!ptr) - ptr = kmalloc(sizeof(unsigned long *) + - sizeof(struct rcu_head), GFP_ATOMIC | __GFP_NOWARN); - + sizeof(struct rcu_head), GFP_KERNEL | + __GFP_ATOMIC | __GFP_HIGH | __GFP_RETRY_MAYFAIL); if (!ptr) return NULL; @@ -3222,9 +3219,20 @@ void kvfree_call_rcu(struct rcu_head *head, rcu_callback_t func) if (!success) { /* Is headless object? */ if (head == NULL) { + /* Drop the lock. */ + if (krcp->initialized) + spin_unlock(&krcp->lock); + local_irq_restore(flags); + head = attach_rcu_head_to_object(ptr); if (head == NULL) - goto unlock_return; + goto inline_return; + + /* Take it back. */ + local_irq_save(flags); + krcp = this_cpu_ptr(&krc); + if (krcp->initialized) + spin_lock(&krcp->lock); /* * Tag the headless object. Such objects have a back-pointer @@ -3263,6 +3271,7 @@ void kvfree_call_rcu(struct rcu_head *head, rcu_callback_t func) spin_unlock(&krcp->lock); local_irq_restore(flags); +inline_return: /* * High memory pressure, so inline kvfree() after * synchronize_rcu(). We can do it from might_sleep() From patchwork Thu Apr 2 12:32:52 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Uladzislau Rezki X-Patchwork-Id: 11470649 Return-Path: Received: from mail.kernel.org (pdx-korg-mail-1.web.codeaurora.org [172.30.200.123]) by pdx-korg-patchwork-2.web.codeaurora.org (Postfix) with ESMTP id 7785381 for ; Thu, 2 Apr 2020 12:33:09 +0000 (UTC) Received: from kanga.kvack.org (kanga.kvack.org [205.233.56.17]) by mail.kernel.org (Postfix) with ESMTP id 4452320784 for ; Thu, 2 Apr 2020 12:33:09 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=fail reason="signature verification failed" (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b="apIxOOpu" DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org 4452320784 Authentication-Results: mail.kernel.org; dmarc=fail (p=none dis=none) header.from=gmail.com Authentication-Results: mail.kernel.org; spf=pass smtp.mailfrom=owner-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix) id 9543C8E0009; Thu, 2 Apr 2020 08:33:06 -0400 (EDT) Delivered-To: linux-mm-outgoing@kvack.org Received: by kanga.kvack.org (Postfix, from userid 40) id 8DF228E0007; Thu, 2 Apr 2020 08:33:06 -0400 (EDT) X-Original-To: int-list-linux-mm@kvack.org X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 758A18E0009; Thu, 2 Apr 2020 08:33:06 -0400 (EDT) X-Original-To: linux-mm@kvack.org X-Delivered-To: linux-mm@kvack.org Received: from forelay.hostedemail.com (smtprelay0171.hostedemail.com [216.40.44.171]) by kanga.kvack.org (Postfix) with ESMTP id 5FC468E0007 for ; Thu, 2 Apr 2020 08:33:06 -0400 (EDT) Received: from smtpin14.hostedemail.com (10.5.19.251.rfc1918.com [10.5.19.251]) by forelay02.hostedemail.com (Postfix) with ESMTP id 1AEDE5831 for ; Thu, 2 Apr 2020 12:33:06 +0000 (UTC) X-FDA: 76662854772.14.game28_7256bce0e9a49 X-Spam-Summary: 2,0,0,b9b0a27fbb60c7bc,d41d8cd98f00b204,urezki@gmail.com,,RULES_HIT:41:69:355:379:541:800:960:966:973:988:989:1260:1311:1314:1345:1359:1437:1515:1535:1542:1711:1730:1747:1777:1792:2194:2196:2199:2200:2393:2559:2562:2901:3138:3139:3140:3141:3142:3354:3865:3866:3867:3868:3871:3872:4385:5007:6117:6119:6261:6653:7514:9413:10004:11026:11658:11914:12043:12291:12296:12297:12438:12517:12519:12555:12683:12895:13894:14096:14110:14181:14394:14687:14721:21080:21444:21451:21627:21666:21789:21990:30054:30070,0,RBL:209.85.208.195:@gmail.com:.lbl8.mailshell.net-62.18.0.100 66.100.201.100,CacheIP:none,Bayesian:0.5,0.5,0.5,Netcheck:none,DomainCache:0,MSF:not bulk,SPF:fp,MSBL:0,DNSBL:neutral,Custom_rules:0:0:0,LFtime:23,LUA_SUMMARY:none X-HE-Tag: game28_7256bce0e9a49 X-Filterd-Recvd-Size: 5815 Received: from mail-lj1-f195.google.com (mail-lj1-f195.google.com [209.85.208.195]) by imf46.hostedemail.com (Postfix) with ESMTP for ; Thu, 2 Apr 2020 12:33:05 +0000 (UTC) Received: by mail-lj1-f195.google.com with SMTP id p10so3071890ljn.1 for ; Thu, 02 Apr 2020 05:33:05 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=tB5Om8/vjXd8Shhy7gccK+1zsTKo1F5yn1ziCQxk5RE=; b=apIxOOpuaj9CeJortfeXXN6+I17U1oEqokkNyJAsVBVGMa6nppSAZGqaceFNoA5DyN mJ5BX0CkvUDnryB6tLnWnaMqc2qvr+8SrhRfxGh4X0/zL09hnSY6lvbqx3Hytd6DRhUr dmVvZKXwg5WHyazfygIy2Nmu+P+LiXRXuWu9gsgTLsDHEftEtc+8DaEWlErsbG2zdXkc lz9b+iMZLp9Hk08KqdoPktOwMF6FlfXAACsmReS3C74IFR5022ZHRbgyt4RubRnwt73n EbG1sEZ0AgzGX3Ij9FrTuE4CfG2V+v1IqRvMP0T4FEyOE+1vWVyGmf0s0GgNgV4FtPcc VWVQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=tB5Om8/vjXd8Shhy7gccK+1zsTKo1F5yn1ziCQxk5RE=; b=cd2pMd9FzKTCODKzva4XD5S0p7JY4HRKLI9A+S4LZRz5uUmMelH/brMGeZkOeTpYkl 84K87EWSDFLSJzoU04r85YYGCwIodz+x9YMLlhhf04q4dsh/c+eE2INSZjN9pfIPmDy2 8O/Ca4cSVEjNkElGI2ztlEwykM+hS8Jw/07e5QoTnDlimPlIFrm+I6seSOavi25iU5+0 0oDaV7p1UGLSGEfJ0fYZsHn9jiANQw2OnrGwM+tmX1jtWTyiAxIWw7YxTiFJ7oS8CKzp Q2Y0r38Jcc3KitgRmn7dddZGlzw7whFLU73qpqDSyRpBVmEQQuV8pb+VuYrbtA/kQ+JF QGFg== X-Gm-Message-State: AGi0PuYMpE90d7dt8CXPJ2YA88JeMIU2LhiOV+mOLm5McOuxU/mV2P9i 3popI7MmzFDZzZ01+8CgurJrbsdtCKw= X-Google-Smtp-Source: APiQypIcS/0ZJG7YlW+OPjmQzK2ZO8973RyK3GGEQvRKxPf6FN91uLJ6txbYJd0fY/sqwIBF0bVUeA== X-Received: by 2002:a2e:854b:: with SMTP id u11mr1868755ljj.75.1585830784175; Thu, 02 Apr 2020 05:33:04 -0700 (PDT) Received: from pc636.lan (h5ef52e31.seluork.dyn.perspektivbredband.net. [94.245.46.49]) by smtp.gmail.com with ESMTPSA id u25sm3833494lfo.71.2020.04.02.05.33.03 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 02 Apr 2020 05:33:03 -0700 (PDT) From: "Uladzislau Rezki (Sony)" To: LKML , "Paul E . McKenney" , Joel Fernandes Cc: RCU , linux-mm@kvack.org, Andrew Morton , Uladzislau Rezki , Steven Rostedt , Oleksiy Avramchenko Subject: [PATCH 2/3] rcu/tree: move locking/unlocking to separate functions Date: Thu, 2 Apr 2020 14:32:52 +0200 Message-Id: <20200402123253.10382-2-urezki@gmail.com> X-Mailer: git-send-email 2.20.1 In-Reply-To: <20200402123253.10382-1-urezki@gmail.com> References: <20200402123253.10382-1-urezki@gmail.com> MIME-Version: 1.0 X-Bogosity: Ham, tests=bogofilter, spamicity=0.000000, version=1.2.4 Sender: owner-linux-mm@kvack.org Precedence: bulk X-Loop: owner-majordomo@kvack.org List-ID: Introduce two helpers to lock and unlock an access to the per-cpu "kfree_rcu_cpu" structure. The reason is to make kvfree_call_rcu() function to be more readable. Signed-off-by: Uladzislau Rezki (Sony) --- kernel/rcu/tree.c | 39 +++++++++++++++++++++++++-------------- 1 file changed, 25 insertions(+), 14 deletions(-) diff --git a/kernel/rcu/tree.c b/kernel/rcu/tree.c index 24f620a06219..5e26145e9ead 100644 --- a/kernel/rcu/tree.c +++ b/kernel/rcu/tree.c @@ -3159,6 +3159,27 @@ static inline struct rcu_head *attach_rcu_head_to_object(void *obj) return ((struct rcu_head *) ++ptr); } +static inline struct kfree_rcu_cpu * +krc_this_cpu_lock(unsigned long *flags) +{ + struct kfree_rcu_cpu *krcp; + + local_irq_save(*flags); // For safely calling this_cpu_ptr(). + krcp = this_cpu_ptr(&krc); + if (likely(krcp->initialized)) + spin_lock(&krcp->lock); + + return krcp; +} + +static inline void +krc_this_cpu_unlock(struct kfree_rcu_cpu *krcp, unsigned long flags) +{ + if (likely(krcp->initialized)) + spin_unlock(&krcp->lock); + local_irq_restore(flags); +} + /* * Queue a request for lazy invocation of appropriate free routine after a * grace period. Please note there are three paths are maintained, two are the @@ -3195,10 +3216,7 @@ void kvfree_call_rcu(struct rcu_head *head, rcu_callback_t func) ptr = (unsigned long *) func; } - local_irq_save(flags); // For safely calling this_cpu_ptr(). - krcp = this_cpu_ptr(&krc); - if (krcp->initialized) - spin_lock(&krcp->lock); + krcp = krc_this_cpu_lock(&flags); // Queue the object but don't yet schedule the batch. if (debug_rcu_head_queue(ptr)) { @@ -3220,19 +3238,14 @@ void kvfree_call_rcu(struct rcu_head *head, rcu_callback_t func) /* Is headless object? */ if (head == NULL) { /* Drop the lock. */ - if (krcp->initialized) - spin_unlock(&krcp->lock); - local_irq_restore(flags); + krc_this_cpu_unlock(krcp, flags); head = attach_rcu_head_to_object(ptr); if (head == NULL) goto inline_return; /* Take it back. */ - local_irq_save(flags); - krcp = this_cpu_ptr(&krc); - if (krcp->initialized) - spin_lock(&krcp->lock); + krcp = krc_this_cpu_lock(&flags); /* * Tag the headless object. Such objects have a back-pointer @@ -3267,9 +3280,7 @@ void kvfree_call_rcu(struct rcu_head *head, rcu_callback_t func) } unlock_return: - if (krcp->initialized) - spin_unlock(&krcp->lock); - local_irq_restore(flags); + krc_this_cpu_unlock(krcp, flags); inline_return: /* From patchwork Thu Apr 2 12:32:53 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Uladzislau Rezki X-Patchwork-Id: 11470651 Return-Path: Received: from mail.kernel.org (pdx-korg-mail-1.web.codeaurora.org [172.30.200.123]) by pdx-korg-patchwork-2.web.codeaurora.org (Postfix) with ESMTP id E3EB381 for ; Thu, 2 Apr 2020 12:33:11 +0000 (UTC) Received: from kanga.kvack.org (kanga.kvack.org [205.233.56.17]) by mail.kernel.org (Postfix) with ESMTP id AFA8120784 for ; Thu, 2 Apr 2020 12:33:11 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=fail reason="signature verification failed" (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b="OlZDoiBa" DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org AFA8120784 Authentication-Results: mail.kernel.org; dmarc=fail (p=none dis=none) header.from=gmail.com Authentication-Results: mail.kernel.org; spf=pass smtp.mailfrom=owner-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix) id ADD2A8E000A; Thu, 2 Apr 2020 08:33:07 -0400 (EDT) Delivered-To: linux-mm-outgoing@kvack.org Received: by kanga.kvack.org (Postfix, from userid 40) id A8AC28E0007; Thu, 2 Apr 2020 08:33:07 -0400 (EDT) X-Original-To: int-list-linux-mm@kvack.org X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 9C7F78E000A; Thu, 2 Apr 2020 08:33:07 -0400 (EDT) X-Original-To: linux-mm@kvack.org X-Delivered-To: linux-mm@kvack.org Received: from forelay.hostedemail.com (smtprelay0184.hostedemail.com [216.40.44.184]) by kanga.kvack.org (Postfix) with ESMTP id 802C78E0007 for ; Thu, 2 Apr 2020 08:33:07 -0400 (EDT) Received: from smtpin26.hostedemail.com (10.5.19.251.rfc1918.com [10.5.19.251]) by forelay03.hostedemail.com (Postfix) with ESMTP id 36F778248068 for ; Thu, 2 Apr 2020 12:33:07 +0000 (UTC) X-FDA: 76662854814.26.tank31_728215abd1d04 X-Spam-Summary: 2,0,0,532e9d997c5919bb,d41d8cd98f00b204,urezki@gmail.com,,RULES_HIT:41:355:379:541:800:960:966:973:982:988:989:1260:1311:1314:1345:1359:1437:1515:1535:1542:1711:1730:1747:1777:1792:2196:2199:2393:2559:2562:3138:3139:3140:3141:3142:3353:3866:3868:3871:3874:4250:4321:4385:5007:6261:6653:7514:9163:9413:10004:11026:11658:11914:12043:12291:12296:12297:12438:12517:12519:12555:12683:12895:12986:13894:14110:14181:14394:14687:14721:21080:21444:21451:21627:21666:21990:30029:30054:30056,0,RBL:209.85.167.67:@gmail.com:.lbl8.mailshell.net-62.18.0.100 66.100.201.100,CacheIP:none,Bayesian:0.5,0.5,0.5,Netcheck:none,DomainCache:0,MSF:not bulk,SPF:fp,MSBL:0,DNSBL:neutral,Custom_rules:0:0:0,LFtime:23,LUA_SUMMARY:none X-HE-Tag: tank31_728215abd1d04 X-Filterd-Recvd-Size: 5451 Received: from mail-lf1-f67.google.com (mail-lf1-f67.google.com [209.85.167.67]) by imf22.hostedemail.com (Postfix) with ESMTP for ; Thu, 2 Apr 2020 12:33:06 +0000 (UTC) Received: by mail-lf1-f67.google.com with SMTP id 131so2517443lfh.11 for ; Thu, 02 Apr 2020 05:33:06 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=3oNMXTSVy6jGvNXMWanVwf0wUd7Pg4Fz/TBszTFSFfc=; b=OlZDoiBaVRrpoMJPay8t+WC3BkVs+tt0VdHzuxgyBkOT2r6MXRPRUR9UJ0//vbVKNv bEWbizoTcF9IbGwXwBzEr1QZyX42bIzYKshqx8sGRId4dnGSWFNjOMFTdV+0eMME1DeS lYCWaeujh92t6PK/3Saxj2ffSYTY4/ZZBTKMOL0xLNZmbDxsjz/5dRkjX5SNfaze+KzJ ldQi7LMb+Vdz9SLtHsf0gYNmjpqxfasnvbKtbTT1gU9kBstPflxXVihIlY4I+vOBFCD1 U/iR2GDM7Evm8MoRLlRmY/qJT3D7jJ8P6GzScjGq7s1zwoZi/mj/jeDNjd0el+pgyDeT gfag== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=3oNMXTSVy6jGvNXMWanVwf0wUd7Pg4Fz/TBszTFSFfc=; b=HHeAXBBwtTnoFOE1QflWuk3d7L4do4b6mDc1Nlj8GIJNaJOKz25WKKMDl8NM0ThH9j wP/xXgcYutiibQgpACvP4OAMjHKsojjL7qS7E8XcmJQpBjFPR1LIdy9ohu2xQltb7T2i lHGIXU6lMirvhWDywDTIesd/t7kXX3popcnm4yIzLSXhKenSnBrFP8RfoTu3sDNo/VdM 2XEW/IA8N/dXNozM2PhExjDyIyw+72+qXaXXUxm0omsoezU9wtnKFxaRIf3e96h62M2Y 3igF9dTsFBewCRp0oyCvk/4kOtWjZQaZnoieoafd82vV0GWYpKjmphBLyrSRh0taapS9 6URw== X-Gm-Message-State: AGi0Pub98PltByju462GrQ7ekT+aYTp/MSFOniIExyuRddU4EstISazA BqtNFSqTQvtNdxIyBDRGnl4= X-Google-Smtp-Source: APiQypKnYbGd+eszPt18ZrxvAEAYuoPzYQvfhiUJdasXhLB4S4rCjVPMPTpyxWOGOWWeRpXnluqc0Q== X-Received: by 2002:a05:6512:3f4:: with SMTP id n20mr1966754lfq.185.1585830785323; Thu, 02 Apr 2020 05:33:05 -0700 (PDT) Received: from pc636.lan (h5ef52e31.seluork.dyn.perspektivbredband.net. [94.245.46.49]) by smtp.gmail.com with ESMTPSA id u25sm3833494lfo.71.2020.04.02.05.33.04 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 02 Apr 2020 05:33:04 -0700 (PDT) From: "Uladzislau Rezki (Sony)" To: LKML , "Paul E . McKenney" , Joel Fernandes Cc: RCU , linux-mm@kvack.org, Andrew Morton , Uladzislau Rezki , Steven Rostedt , Oleksiy Avramchenko Subject: [PATCH 3/3] lib/test_vmalloc.c: introduce two new test cases Date: Thu, 2 Apr 2020 14:32:53 +0200 Message-Id: <20200402123253.10382-3-urezki@gmail.com> X-Mailer: git-send-email 2.20.1 In-Reply-To: <20200402123253.10382-1-urezki@gmail.com> References: <20200402123253.10382-1-urezki@gmail.com> MIME-Version: 1.0 X-Bogosity: Ham, tests=bogofilter, spamicity=0.000000, version=1.2.4 Sender: owner-linux-mm@kvack.org Precedence: bulk X-Loop: owner-majordomo@kvack.org List-ID: Introduce two more test cases which are specific for RCU freeing of vmalloc pointer. One test case is for object that has rcu_head inside and second one is for headless testing. Signed-off-by: Uladzislau Rezki (Sony) --- lib/test_vmalloc.c | 48 ++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 48 insertions(+) diff --git a/lib/test_vmalloc.c b/lib/test_vmalloc.c index 8bbefcaddfe8..1734ba7fc400 100644 --- a/lib/test_vmalloc.c +++ b/lib/test_vmalloc.c @@ -15,6 +15,7 @@ #include #include #include +#include #define __param(type, name, init, msg) \ static type name = init; \ @@ -43,6 +44,8 @@ __param(int, run_test_mask, INT_MAX, "\t\tid: 32, name: random_size_align_alloc_test\n" "\t\tid: 64, name: align_shift_alloc_test\n" "\t\tid: 128, name: pcpu_alloc_test\n" + "\t\tid: 256, name: kvfree_rcu_with_head_test\n" + "\t\tid: 512, name: kvfree_rcu_head_less_test\n" /* Add a new test case description here. */ ); @@ -328,6 +331,49 @@ pcpu_alloc_test(void) return rv; } +struct test_kvfree_rcu { + struct rcu_head rcu; + unsigned char array[100]; +}; + +static int +kvfree_rcu_with_head_test(void) +{ + struct test_kvfree_rcu *p; + int i; + + for (i = 0; i < test_loop_count; i++) { + p = vmalloc(1 * PAGE_SIZE); + + if (!p) + return -1; + + p->array[0] = 'a'; + kvfree_rcu(p, rcu); + } + + return 0; +} + +static int +kvfree_rcu_head_less_test(void) +{ + struct test_kvfree_rcu *p; + int i; + + for (i = 0; i < test_loop_count; i++) { + p = vmalloc(1 * PAGE_SIZE); + + if (!p) + return -1; + + p->array[0] = 'a'; + kvfree_rcu(p); + } + + return 0; +} + struct test_case_desc { const char *test_name; int (*test_func)(void); @@ -342,6 +388,8 @@ static struct test_case_desc test_case_array[] = { { "random_size_align_alloc_test", random_size_align_alloc_test }, { "align_shift_alloc_test", align_shift_alloc_test }, { "pcpu_alloc_test", pcpu_alloc_test }, + { "kvfree_rcu_with_head_test", kvfree_rcu_with_head_test }, + { "kvfree_rcu_head_less_test", kvfree_rcu_head_less_test }, /* Add a new test case here. */ };