[PATCH] rcu/dyntick-idle: Add better tracing

2019-08-28 Thread Joel Fernandes (Google)
evious patches to simplify rcu_dyntick counters [1] and with these traces, I have verified the counters are working properly. [1] Link: https://lore.kernel.org/patchwork/patch/1120021/ Link: https://lore.kernel.org/patchwork/patch/1120022/ Signed-off-by: Joel Fernandes (Google) --- incl

[PATCH v2] rcu/tree: Add multiple in-flight batches of kfree_rcu work

2019-08-28 Thread Joel Fernandes (Google)
more than 1 additional list did not show any improvement. Suggested-by: Paul E. McKenney Signed-off-by: Joel Fernandes (Google) --- kernel/rcu/tree.c | 61 --- 1 file changed, 42 insertions(+), 19 deletions(-) diff --git a/kernel/rcu/tree.c b/kernel

[PATCH 3/5] rcu/tree: Add support for debug_objects debugging for kfree_rcu()

2019-08-27 Thread Joel Fernandes (Google)
e_rcu() calls. Signed-off-by: Joel Fernandes (Google) --- kernel/rcu/tree.c | 8 1 file changed, 8 insertions(+) diff --git a/kernel/rcu/tree.c b/kernel/rcu/tree.c index 9b9ae4db1c2d..64568f12641d 100644 --- a/kernel/rcu/tree.c +++ b/kernel/rcu/tree.c @@ -2757,6 +2757,7 @@ static

[PATCH 4/5] rcu: Remove kfree_rcu() special casing and lazy handling

2019-08-27 Thread Joel Fernandes (Google)
Remove kfree_rcu() special casing and lazy handling from RCU. For Tiny RCU we fold the special handling into just Tiny RCU code. Suggested-by: Paul E. McKenney Signed-off-by: Joel Fernandes (Google) --- Documentation/RCU/stallwarn.txt | 13 +++-- include/linux/rcu_segcblist.h | 2

[PATCH 0/5] kfree_rcu() additions for -rcu

2019-08-27 Thread Joel Fernandes (Google)
ree_rcu() is handled separately from call_rcu(), we also get rid of kfree "lazy" handling from tree RCU as suggested by Paul which will be unused. This also results in a nice negative delta as well. Joel Fernandes (Google) (5): rcu/rcuperf: Add kfree_rcu() performance Tests rcu/tree: Add multiple

[PATCH 5/5] rcu: Remove kfree_call_rcu_nobatch()

2019-08-27 Thread Joel Fernandes (Google)
Now that kfree_rcu() special casing have been removed from tree RCU, remove kfree_call_rcu_nobatch() since it is not needed. Signed-off-by: Joel Fernandes (Google) --- .../admin-guide/kernel-parameters.txt | 4 --- include/linux/rcutiny.h | 5 --- include/linux

[PATCH 1/5] rcu/rcuperf: Add kfree_rcu() performance Tests

2019-08-27 Thread Joel Fernandes (Google)
CONFIG_DEBUG_PREEMPT and CONFIG_PROVE_RCU for realistic comparisons with/without batching. Signed-off-by: Joel Fernandes (Google) --- .../admin-guide/kernel-parameters.txt | 17 ++ kernel/rcu/rcuperf.c | 181 +- 2 files changed, 190 insertions(+), 8

[PATCH 2/5] rcu/tree: Add multiple in-flight batches of kfree_rcu work

2019-08-27 Thread Joel Fernandes (Google)
more than 1 additional list did not show any improvement. Suggested-by: Paul E. McKenney Signed-off-by: Joel Fernandes (Google) --- kernel/rcu/tree.c | 64 +-- 1 file changed, 45 insertions(+), 19 deletions(-) diff --git a/kernel/rcu/tree.c b/kernel

[RFC v1 1/2] rcu/tree: Clean up dynticks counter usage

2019-08-26 Thread Joel Fernandes (Google)
also do cheaper comparisons with zero instead for the code that keeps the tick on in rcu_nmi_enter_common(). In the next patch, both of the concerns of (2) will be addressed and then we can get rid of dynticks_nmi_nesting, however one step at a time. Signed-off-by: Joel Fernandes (Google) --- kernel/

[RFC v1 2/2] rcu/tree: Remove dynticks_nmi_nesting counter

2019-08-26 Thread Joel Fernandes (Google)
_tick would have been set to true in the outermost interrupt, so the nested/NMI interrupts will check forced_tick anyway, and bail. Signed-off-by: Joel Fernandes (Google) --- .../Data-Structures/Data-Structures.rst | 31 +++-- Documentation/RCU/stallwarn.txt | 6 +- kerne

[RFC v1 0/2] RCU dyntick nesting counter cleanups

2019-08-26 Thread Joel Fernandes (Google)
simple counter and can be "crowbarred" in common situations. Several nights of rcutorture testing with CONFIG_RCU_EQS_DEBUG on all RCU kernel configurations have survived without any splats. Further testing is in progress, hence marked as RFC! thanks, - Joel Joel Fernandes (Google) (2)

[PATCH v3 -rcu] workqueue: Convert for_each_wq to use built-in list check

2019-08-15 Thread Joel Fernandes (Google)
list_for_each_entry_rcu now has support to check for RCU reader sections as well as lock. Just use the support in it, instead of explicitly checking in the caller. Acked-by: Tejun Heo Signed-off-by: Joel Fernandes (Google) --- v1->v3: Changed lock_is_held() to lockdep_is_held() ker

[PATCH v3 2/2] rcuperf: Add kfree_rcu performance Tests

2019-08-13 Thread Joel Fernandes (Google)
CONFIG_PROVE_RCU for realistic comparisons with/without batching. Signed-off-by: Joel Fernandes (Google) --- kernel/rcu/rcuperf.c | 189 +-- 1 file changed, 181 insertions(+), 8 deletions(-) diff --git a/kernel/rcu/rcuperf.c b/kernel/rcu/rcuperf.c index

[PATCH v3 1/2] rcu/tree: Add basic support for kfree_rcu batching

2019-08-13 Thread Joel Fernandes (Google)
chul.p...@lge.com Cc: kernel-t...@android.com Cc: kernel-t...@lge.com Co-developed-by: Byungchul Park Signed-off-by: Byungchul Park Signed-off-by: Joel Fernandes (Google) --- v2->v3: Just some code comment changes thanks to Byungchul. RFCv1->PATCH v2: Removed limits on the -&g

[PATCH v2] driver/core: Fix build error when SRCU and lockdep disabled

2019-08-12 Thread Joel Fernandes (Google)
: Lai Jiangshan , Cc: linux-doc@vger.kernel.org, Cc: Mathieu Desnoyers , Cc: "Paul E. McKenney" , Cc: "Rafael J. Wysocki" , Cc: r...@vger.kernel.org, Cc: Steven Rostedt , Reported-by: kbuild test robot Signed-off-by: Joel Fernandes (Google) --- drivers/base/core.c | 4 +++-

[PATCH 2/3] doc: Update documentation about list_for_each_entry_rcu (v1)

2019-08-11 Thread Joel Fernandes (Google)
This patch updates the documentation with information about usage of lockdep with list_for_each_entry_rcu(). Signed-off-by: Joel Fernandes (Google) --- Documentation/RCU/lockdep.txt | 15 +++ Documentation/RCU/whatisRCU.txt | 9 - 2 files changed, 19 insertions(+), 5

[PATCH 1/3] workqueue: Convert for_each_wq to use built-in list check (v2)

2019-08-11 Thread Joel Fernandes (Google)
list_for_each_entry_rcu now has support to check for RCU reader sections as well as lock. Just use the support in it, instead of explicitly checking in the caller. Signed-off-by: Joel Fernandes (Google) --- kernel/workqueue.c | 10 ++ 1 file changed, 2 insertions(+), 8 deletions

[PATCH 3/3] driver/core: Fix build error when SRCU and lockdep disabled

2019-08-11 Thread Joel Fernandes (Google)
2fee8 ("acpi: Use built-in RCU list checking for acpi_ioremaps list") Reported-by: kbuild test robot Signed-off-by: Joel Fernandes (Google) --- This patch is based on the -rcu dev branch. drivers/base/core.c | 6 +- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/driver

[PATCH v2 2/2] rcuperf: Add kfree_rcu performance Tests

2019-08-10 Thread Joel Fernandes (Google)
CONFIG_PROVE_RCU for realistic comparisons with/without batching. Signed-off-by: Joel Fernandes (Google) --- kernel/rcu/rcuperf.c | 189 +-- 1 file changed, 181 insertions(+), 8 deletions(-) diff --git a/kernel/rcu/rcuperf.c b/kernel/rcu/rcuperf.c index

[PATCH v2 1/2] rcu/tree: Add basic support for kfree_rcu batching

2019-08-10 Thread Joel Fernandes (Google)
5725-mutt-send-email-...@kernel.org [2] https://lkml.org/lkml/2017/12/19/824 Cc: Rao Shoaib Cc: max.byungchul.p...@gmail.com Cc: byungchul.p...@lge.com Cc: kernel-t...@android.com Cc: kernel-t...@lge.com Co-developed-by: Byungchul Park Signed-off-by: Byungchul Park Signed-off-by: Joel Fernandes (Google)

[PATCH v5 6/6] doc: Update documentation for page_idle virtual address indexing

2019-08-07 Thread Joel Fernandes (Google)
This patch updates the documentation with the new page_idle tracking feature which uses virtual address indexing. Reviewed-by: Mike Rapoport Reviewed-by: Sandeep Patil Signed-off-by: Joel Fernandes (Google) --- .../admin-guide/mm/idle_page_tracking.rst | 43 --- 1 file

[PATCH v5 1/6] mm/page_idle: Add per-pid idle page tracking using virtual index

2019-08-07 Thread Joel Fernandes (Google)
ff-by: Joel Fernandes (Google) --- v3->v4: Minor fixups (Minchan) Add swap pte handling (Konstantin, Minchan) v2->v3: Fixed a bug where I was doing a kfree that is not needed due to not needing to do GFP_ATOMIC allocations. v1->v2: Mark swap ptes as idle (Minchan) Avoid need

[PATCH v5 4/6] [RFC] arm64: Add support for idle bit in swap PTE

2019-08-07 Thread Joel Fernandes (Google)
page tracking only works on user pages in the LRU. Device pages should not consitute those so it should be unused and safe to use. Cc: Robin Murphy Signed-off-by: Joel Fernandes (Google) --- arch/arm64/Kconfig| 1 + arch/arm64/include/asm/pgtable-prot.h | 1 + arch/arm64

[PATCH v5 3/6] [RFC] x86: Add support for idle bit in swap PTE

2019-08-07 Thread Joel Fernandes (Google)
swap PTE (see the comment in arch/x86/include/asm/pgtable_64.h). Bit 2 corresponds to _PAGE_USER. Use it for swap PTE purposes. Signed-off-by: Joel Fernandes (Google) --- arch/x86/Kconfig | 1 + arch/x86/include/asm/pgtable.h | 15 +++ arch/x86/include/asm

[PATCH v5 5/6] page_idle: Drain all LRU pagevec before idle tracking

2019-08-07 Thread Joel Fernandes (Google)
patch drains all CPU's pagevec before starting idle tracking. Signed-off-by: Joel Fernandes (Google) --- mm/page_idle.c | 21 + 1 file changed, 21 insertions(+) diff --git a/mm/page_idle.c b/mm/page_idle.c index 2766d4ab348c..26440a497609 100644 --- a/mm/page_idle.c

[PATCH v5 2/6] mm/page_idle: Add support for handling swapped PG_Idle pages

2019-08-07 Thread Joel Fernandes (Google)
f-by: Joel Fernandes (Google) --- arch/Kconfig | 3 +++ include/asm-generic/pgtable.h | 6 ++ mm/page_idle.c| 26 -- mm/rmap.c | 2 ++ 4 files changed, 35 insertions(+), 2 deletions(-) diff --git a/arch/Kcon

[PATCH v4 1/5] mm/page_idle: Add per-pid idle page tracking using virtual indexing

2019-08-05 Thread Joel Fernandes (Google)
ff-by: Joel Fernandes (Google) --- v3->v4: Minor fixups (Minchan) Add swap pte handling (Konstantin, Minchan) v2->v3: Fixed a bug where I was doing a kfree that is not needed due to not needing to do GFP_ATOMIC allocations. v1->v2: Mark swap ptes as idle (Minchan) Avoid need

[PATCH v4 2/5] [RFC] x86: Add support for idle bit in swap PTE

2019-08-05 Thread Joel Fernandes (Google)
swap PTE (see the comment in arch/x86/include/asm/pgtable_64.h). Bit 2 corresponds to _PAGE_USER. Use it for swap PTE purposes. Signed-off-by: Joel Fernandes (Google) --- arch/x86/Kconfig | 1 + arch/x86/include/asm/pgtable.h | 15 +++ arch/x86/include/asm

[PATCH v4 3/5] [RFC] arm64: Add support for idle bit in swap PTE

2019-08-05 Thread Joel Fernandes (Google)
page tracking only works on user pages in the LRU. Device pages should not consitute those so it should be unused and safe to use. Cc: Robin Murphy Signed-off-by: Joel Fernandes (Google) --- arch/arm64/Kconfig| 1 + arch/arm64/include/asm/pgtable-prot.h | 1 + arch/arm64

[PATCH v4 4/5] page_idle: Drain all LRU pagevec before idle tracking

2019-08-05 Thread Joel Fernandes (Google)
During idle tracking, we see that sometimes faulted anon pages are in pagevec but are not drained to LRU. Idle tracking considers pages only on LRU. Drain all CPU's LRU before starting idle tracking. Signed-off-by: Joel Fernandes (Google) --- mm/page_idle.c | 6 ++ 1 file chang

[PATCH v4 5/5] doc: Update documentation for page_idle virtual address indexing

2019-08-05 Thread Joel Fernandes (Google)
This patch updates the documentation with the new page_idle tracking feature which uses virtual address indexing. Reviewed-by: Mike Rapoport Reviewed-by: Sandeep Patil Signed-off-by: Joel Fernandes (Google) --- .../admin-guide/mm/idle_page_tracking.rst | 43 --- 1 file

[PATCH v3 3/3] docs: rcu: Increase toctree to 3

2019-07-30 Thread Joel Fernandes (Google)
These documents are long and have various sections. Provide a good toc nesting level. Signed-off-by: Joel Fernandes (Google) --- Documentation/RCU/index.rst | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Documentation/RCU/index.rst b/Documentation/RCU/index.rst index

[PATCH v3 2/3] docs: rcu: Correct links referring to titles

2019-07-30 Thread Joel Fernandes (Google)
Mauro's auto conversion broken these links, fix them. Signed-off-by: Joel Fernandes (Google) --- .../Tree-RCU-Memory-Ordering.rst | 17 ++-- .../RCU/Design/Requirements/Requirements.rst | 90 --- 2 files changed, 47 insertions(+), 60 deletions(-) diff --g

[PATCH v3 0/3] Convert some RCU articles to ReST

2019-07-30 Thread Joel Fernandes (Google)
This patch is a respin of the RCU ReST patch from Mauro [1]. I updated his changelog, and made some fixes. [1] https://www.spinics.net/lists/rcu/msg00750.html Joel Fernandes (Google) (2): docs: rcu: Correct links referring to titles docs: rcu: Increase toctree to 3 Mauro Carvalho Chehab (1

[PATCH v3 2/2] doc: Update documentation for page_idle virtual address indexing

2019-07-26 Thread Joel Fernandes (Google)
This patch updates the documentation with the new page_idle tracking feature which uses virtual address indexing. Signed-off-by: Joel Fernandes (Google) --- .../admin-guide/mm/idle_page_tracking.rst | 43 --- 1 file changed, 36 insertions(+), 7 deletions(-) diff --git a

[PATCH v3 1/2] mm/page_idle: Add per-pid idle page tracking using virtual indexing

2019-07-26 Thread Joel Fernandes (Google)
ff-by: Joel Fernandes (Google) --- v2->v3: Fixed a bug where I was doing a kfree that is not needed due to not needing to do GFP_ATOMIC allocations. v1->v2: Mark swap ptes as idle (Minchan) Avoid need for GFP_ATOMIC (Andrew) Get rid of idle_page_list lock by moving list to stack Internal r

[PATCH v2 2/2] doc: Update documentation for page_idle virtual address indexing

2019-07-26 Thread Joel Fernandes (Google)
This patch updates the documentation with the new page_idle tracking feature which uses virtual address indexing. Signed-off-by: Joel Fernandes (Google) --- .../admin-guide/mm/idle_page_tracking.rst | 43 --- 1 file changed, 36 insertions(+), 7 deletions(-) diff --git a

[PATCH v2 1/2] mm/page_idle: Add per-pid idle page tracking using virtual indexing

2019-07-26 Thread Joel Fernandes (Google)
ff-by: Joel Fernandes (Google) --- v1 -> v2: Mark swap ptes as idle (Minchan) Avoid need for GFP_ATOMIC (Andrew) Get rid of idle_page_list lock by moving list to stack Internal review -> v1: Fixes from Suren. Corrections to change log, docs (Florian, Sandeep) fs/proc/base.c

[PATCH v1 1/2] mm/page_idle: Add support for per-pid page_idle using virtual indexing

2019-07-22 Thread Joel Fernandes (Google)
exing, address space changes can occur between reading the pagemap and reading the bitmap. In virtual address indexing, the process's mmap_sem is held for the duration of the access. Cc: vdavydov@gmail.com Cc: Brendan Gregg Cc: kernel-t...@android.com Signed-off-by: Joel Fernand

[PATCH v1 2/2] doc: Update documentation for page_idle virtual address indexing

2019-07-22 Thread Joel Fernandes (Google)
This patch updates the documentation with the new page_idle tracking feature which uses virtual address indexing. Signed-off-by: Joel Fernandes (Google) --- .../admin-guide/mm/idle_page_tracking.rst | 41 +++ 1 file changed, 34 insertions(+), 7 deletions(-) diff --git a

[PATCH] rculist: Add build check for single optional list argument

2019-07-15 Thread Joel Fernandes (Google)
optional argument is passed. [1] https://lore.kernel.org/patchwork/project/lkml/list/?series=402150 Suggested-by: Paul McKenney Signed-off-by: Joel Fernandes (Google) --- include/linux/rculist.h | 8 ++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/include/linux/rculist.h b

[PATCH 0/9] Harden list_for_each_entry_rcu() and family

2019-07-15 Thread Joel Fernandes (Google)
ro (Rasmus Villemoes) Joel Fernandes (Google) (9): rcu/update: Remove useless check for debug_locks (v1) rcu: Add support for consolidated-RCU reader checking (v3) rcu/sync: Remove custom check for reader-section (v2) ipv4: add lockdep condition to fix for_each_entry (v1) driver/core: Convert to use bui

[PATCH 1/9] rcu/update: Remove useless check for debug_locks (v1)

2019-07-15 Thread Joel Fernandes (Google)
In rcu_read_lock_sched_held(), debug_locks can never be true at the point we check it because we already check debug_locks in debug_lockdep_rcu_enabled() in the beginning. Remove the check. Signed-off-by: Joel Fernandes (Google) --- kernel/rcu/update.c | 6 +- 1 file changed, 1 insertion

[PATCH 2/9] rcu: Add support for consolidated-RCU reader checking (v3)

2019-07-15 Thread Joel Fernandes (Google)
x27;t need to pass the optional fourth argument (cond) unless they are under some non-RCU protection and needs to make lockdep check pass. Signed-off-by: Joel Fernandes (Google) --- include/linux/rculist.h | 28 - include/linux/rcupdate.h | 7 +++ kernel/rcu/Kconfig.

[PATCH 3/9] rcu/sync: Remove custom check for reader-section (v2)

2019-07-15 Thread Joel Fernandes (Google)
-off-by: Joel Fernandes (Google) --- include/linux/rcu_sync.h | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/include/linux/rcu_sync.h b/include/linux/rcu_sync.h index 9b83865d24f9..0027d4c8087c 100644 --- a/include/linux/rcu_sync.h +++ b/include/linux/rcu_sync.h @@ -31,9

[PATCH 6/9] workqueue: Convert for_each_wq to use built-in list check (v2)

2019-07-15 Thread Joel Fernandes (Google)
list_for_each_entry_rcu now has support to check for RCU reader sections as well as lock. Just use the support in it, instead of explictly checking in the caller. Signed-off-by: Joel Fernandes (Google) --- kernel/workqueue.c | 10 ++ 1 file changed, 2 insertions(+), 8 deletions(-) diff

[PATCH 4/9] ipv4: add lockdep condition to fix for_each_entry (v1)

2019-07-15 Thread Joel Fernandes (Google)
Using the previous support added, use it for adding lockdep conditions to list usage here. Signed-off-by: Joel Fernandes (Google) --- net/ipv4/fib_frontend.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/net/ipv4/fib_frontend.c b/net/ipv4/fib_frontend.c index

[PATCH 8/9] acpi: Use built-in RCU list checking for acpi_ioremaps list (v1)

2019-07-15 Thread Joel Fernandes (Google)
list_for_each_entry_rcu has built-in RCU and lock checking. Make use of it for acpi_ioremaps list traversal. Signed-off-by: Joel Fernandes (Google) --- drivers/acpi/osl.c | 6 -- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/drivers/acpi/osl.c b/drivers/acpi/osl.c index

[PATCH 5/9] driver/core: Convert to use built-in RCU list checking (v1)

2019-07-15 Thread Joel Fernandes (Google)
list_for_each_entry_rcu has built-in RCU and lock checking. Make use of it in driver core. Acked-by: Greg Kroah-Hartman Signed-off-by: Joel Fernandes (Google) --- drivers/base/base.h | 1 + drivers/base/core.c | 10 ++ drivers/base/power/runtime.c | 15

[PATCH 9/9] doc: Update documentation about list_for_each_entry_rcu (v1)

2019-07-15 Thread Joel Fernandes (Google)
This patch updates the documentation with information about usage of lockdep with list_for_each_entry_rcu(). Signed-off-by: Joel Fernandes (Google) --- Documentation/RCU/lockdep.txt | 15 +++ Documentation/RCU/whatisRCU.txt | 9 - 2 files changed, 19 insertions(+), 5

[PATCH 7/9] x86/pci: Pass lockdep condition to pcm_mmcfg_list iterator (v1)

2019-07-15 Thread Joel Fernandes (Google)
Fernandes (Google) --- arch/x86/pci/mmconfig-shared.c | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/arch/x86/pci/mmconfig-shared.c b/arch/x86/pci/mmconfig-shared.c index 7389db538c30..6fa42e9c4e6f 100644 --- a/arch/x86/pci/mmconfig-shared.c +++ b/arch/x86/pci/mmconfig

[PATCH v2 7/9] x86/pci: Pass lockdep condition to pcm_mmcfg_list iterator

2019-07-12 Thread Joel Fernandes (Google)
Fernandes (Google) --- arch/x86/pci/mmconfig-shared.c | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/arch/x86/pci/mmconfig-shared.c b/arch/x86/pci/mmconfig-shared.c index 7389db538c30..6fa42e9c4e6f 100644 --- a/arch/x86/pci/mmconfig-shared.c +++ b/arch/x86/pci/mmconfig

[PATCH v2 9/9] doc: Update documentation about list_for_each_entry_rcu

2019-07-12 Thread Joel Fernandes (Google)
This patch updates the documentation with information about usage of lockdep with list_for_each_entry_rcu(). Signed-off-by: Joel Fernandes (Google) --- Documentation/RCU/lockdep.txt | 15 +++ Documentation/RCU/whatisRCU.txt | 9 - 2 files changed, 19 insertions(+), 5

[PATCH v2 8/9] acpi: Use built-in RCU list checking for acpi_ioremaps list

2019-07-12 Thread Joel Fernandes (Google)
list_for_each_entry_rcu has built-in RCU and lock checking. Make use of it for acpi_ioremaps list traversal. Signed-off-by: Joel Fernandes (Google) --- drivers/acpi/osl.c | 6 -- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/drivers/acpi/osl.c b/drivers/acpi/osl.c index

[PATCH v2 5/9] driver/core: Convert to use built-in RCU list checking

2019-07-12 Thread Joel Fernandes (Google)
list_for_each_entry_rcu has built-in RCU and lock checking. Make use of it in driver core. Acked-by: Greg Kroah-Hartman Signed-off-by: Joel Fernandes (Google) --- drivers/base/base.h | 1 + drivers/base/core.c | 10 ++ drivers/base/power/runtime.c | 15

[PATCH v2 6/9] workqueue: Convert for_each_wq to use built-in list check

2019-07-12 Thread Joel Fernandes (Google)
list_for_each_entry_rcu now has support to check for RCU reader sections as well as lock. Just use the support in it, instead of explictly checking in the caller. Signed-off-by: Joel Fernandes (Google) --- kernel/workqueue.c | 10 ++ 1 file changed, 2 insertions(+), 8 deletions(-) diff

[PATCH v2 4/9] ipv4: add lockdep condition to fix for_each_entry

2019-07-12 Thread Joel Fernandes (Google)
Signed-off-by: Joel Fernandes (Google) --- net/ipv4/fib_frontend.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/net/ipv4/fib_frontend.c b/net/ipv4/fib_frontend.c index b298255f6fdb..ef7c9f8e8682 100644 --- a/net/ipv4/fib_frontend.c +++ b/net/ipv4/fib_frontend.c @@ -127,7

[PATCH v2 3/9] rcu/sync: Remove custom check for reader-section

2019-07-12 Thread Joel Fernandes (Google)
The rcu/sync code was doing its own check whether we are in a reader section. With RCU consolidating flavors and the generic helper added in this series, this is no longer need. We can just use the generic helper and it results in a nice cleanup. Cc: Oleg Nesterov Signed-off-by: Joel Fernandes

[PATCH v2 2/9] rcu: Add support for consolidated-RCU reader checking

2019-07-12 Thread Joel Fernandes (Google)
x27;t need to pass the optional fourth argument (cond) unless they are under some non-RCU protection and needs to make lockdep check pass. Signed-off-by: Joel Fernandes (Google) --- include/linux/rculist.h | 28 +++- include/linux/rcupdate.h | 7 +++ kernel/rcu/Kconfig.

[PATCH v2 0/9] Harden list_for_each_entry_rcu() and family

2019-07-12 Thread Joel Fernandes (Google)
mentation and rculist comments. Added GregKH ack. RFC->v1: Simplify list checking macro (Rasmus Villemoes) Joel Fernandes (Google) (9): rcu/update: Remove useless check for debug_locks rcu: Add support for consolidated-RCU reader checking rcu/sync: Remove custom check for reader-s

[PATCH v2 1/9] rcu/update: Remove useless check for debug_locks

2019-07-12 Thread Joel Fernandes (Google)
In rcu_read_lock_sched_held(), debug_locks can never be true at the point we check it because we already check debug_locks in debug_lockdep_rcu_enabled() in the beginning. Remove the check. Signed-off-by: Joel Fernandes (Google) --- kernel/rcu/update.c | 6 +- 1 file changed, 1 insertion

[PATCH] treewide: Rename rcu_dereference_raw_notrace to _check

2019-07-11 Thread Joel Fernandes (Google)
check" indicating sparse checking. Signed-off-by: Joel Fernandes (Google) --- Previous discussion is here: https://lore.kernel.org/linuxppc-dev/20190528200014.gv28...@linux.ibm.com/T/ Documentation/RCU/Design/Requirements/Requirements.html | 2 +- arch/powerpc/include/asm/kvm_book3s_64.h

[PATCH RFC 1/1] doc/rcu: Add some more listRCU patterns in the kernel

2019-06-01 Thread Joel Fernandes (Google)
We keep the initially written audit examples and add to it, since the code that audit has is still relevant even though slightly different in the kernel. Cc: r...@vger.kernel.org Signed-off-by: Joel Fernandes (Google) --- Documentation/RCU/listRCU.txt | 154 +++--- 1

[PATCH RFC 2/5] trace: Use regular rcu_dereference_raw API

2019-05-24 Thread Joel Fernandes (Google)
rcu_dereference_raw_notrace API) with hlist_for_each_entry_rcu which also does not do any tracing. Signed-off-by: Joel Fernandes (Google) --- kernel/trace/ftrace.c | 4 ++-- kernel/trace/ftrace_internal.h | 8 kernel/trace/trace.c | 4 ++-- 3 files changed, 8 insertions(+), 8

[PATCH RFC 4/5] rculist: Remove hlist_for_each_entry_rcu_notrace since no users

2019-05-24 Thread Joel Fernandes (Google)
The series removes all users of the API and with this patch, the API itself. Signed-off-by: Joel Fernandes (Google) --- .clang-format | 1 - include/linux/rculist.h | 20 2 files changed, 21 deletions(-) diff --git a/.clang-format b/.clang-format index

[PATCH RFC 1/5] powerpc: Use regular rcu_dereference_raw API

2019-05-24 Thread Joel Fernandes (Google)
rcu_dereference_raw already does not do any tracing. There is no need to use the _notrace variant of it and this series removes that API, so let us use the regular variant here. Signed-off-by: Joel Fernandes (Google) --- arch/powerpc/include/asm/kvm_book3s_64.h | 2 +- 1 file changed, 1

[PATCH RFC 0/5] Remove some notrace RCU APIs

2019-05-24 Thread Joel Fernandes (Google)
The series removes users of the following APIs, and the APIs themselves, since the regular non - _notrace variants don't do any tracing anyway. * hlist_for_each_entry_rcu_notrace * rcu_dereference_raw_notrace Joel Fernandes (Google) (5): powerpc: Use regular rcu_dereference_raw API trace

[PATCH RFC 5/5] rcu: Remove rcu_dereference_raw_notrace since no users

2019-05-24 Thread Joel Fernandes (Google)
The series removes all users of the API and with this patch, the API itself. Also fix documentation. Signed-off-by: Joel Fernandes (Google) --- Documentation/RCU/Design/Requirements/Requirements.html | 6 +++--- include/linux/rcupdate.h| 9 - 2 files

[PATCH RFC 3/5] hashtable: Use the regular hlist_for_each_entry_rcu API

2019-05-24 Thread Joel Fernandes (Google)
hlist_for_each_entry_rcu already does not do any tracing. This series removes the notrace variant of it, so let us just use the regular API. In a future patch, we can also remove the hash_for_each_possible_rcu_notrace API that this patch touches. Signed-off-by: Joel Fernandes (Google

[PATCH v4 0/2] kheaders fixes for -rc

2019-05-15 Thread Joel Fernandes (Google)
https://patchwork.kernel.org/cover/10939557/ Joel Fernandes (Google) (2): kheaders: Move from proc to sysfs kheaders: Do not regenerate archive if config is not changed init/Kconfig| 17 + kernel/Makefile | 4 +-- kernel/{gen_ikh_da

[PATCH v4 2/2] kheaders: Do not regenerate archive if config is not changed

2019-05-15 Thread Joel Fernandes (Google)
X_Y option really changes, then we there are the include/config/X/Y.h which will already tells us "if a config really changed". So we don't really need these files for regeneration detection anyway, and ignoring them fixes Linus's issue. Reported-by: Linus Torvalds Signed-

[PATCH v4 1/2] kheaders: Move from proc to sysfs

2019-05-15 Thread Joel Fernandes (Google)
: Steven Rostedt Signed-off-by: Joel Fernandes (Google) --- This patch applies on top of the previous patch that was applied to the driver tree: https://lore.kernel.org/patchwork/patch/1067310/ v2->v3: Fixed sysfs file mode nit (Greg). v1->v2: Fixed some kconfig nits (Masami). init/K

[PATCH 1/3] kheaders: Move from proc to sysfs

2019-05-10 Thread Joel Fernandes (Google)
: Steven Rostedt Acked-by: Steven Rostedt Signed-off-by: Joel Fernandes (Google) --- Changes to this patch since initial posting: Fixed sysfs file mode nit (Greg). Fixed some kconfig nits (Masami). init/Kconfig| 16 - kernel/Makefile

[PATCH 2/3] kheaders: Do not regenerate archive if config is not changed

2019-05-10 Thread Joel Fernandes (Google)
X_Y option really changes, then we there are the include/config/X/Y.h which will already tells us "if a config really changed". So we don't really need these files for regeneration detection anyway, and ignoring them fixes Linus's issue. Reported-by: Linus Torvalds Signed-

[PATCH 3/3] kheaders: Make it depend on sysfs

2019-05-10 Thread Joel Fernandes (Google)
The kheaders archive is exposed through SYSFS in /sys/kernel/. Make it depend on SYSFS as it makes no sense to enable this feature without it. Suggested-by: Masahiro Yamada Signed-off-by: Joel Fernandes (Google) --- init/Kconfig | 1 + 1 file changed, 1 insertion(+) diff --git a/init/Kconfig

[PATCH 0/3] kheaders fixes for -rc

2019-05-10 Thread Joel Fernandes (Google)
Linus, Greg, Masahiro, Here are some simple fixes for the kheaders feature. Please consider these patches for an rc release. They are based on Linus's master branch. Thanks! Joel Fernandes (Google) (3): kheaders: Move from proc to sysfs kheaders: Do not regenerate archive if config is not ch

[PATCH v4 1/2] Provide in-kernel headers for making it easy to extend the kernel

2019-03-01 Thread Joel Fernandes (Google)
ers from a kernel or module image. Signed-off-by: Joel Fernandes (Google) --- Changes since v3: - Blank tar was being generated because of a one line I forgot to push. It is updated now. - Added module.lds since arm64 needs it to build modules. Changes since v2: (T

[PATCH v4 2/2] Add selftests for module build using in-kernel headers

2019-03-01 Thread Joel Fernandes (Google)
This test tries to build a module successfully using the in-kernel headers found in /proc/kheaders.tar.xz. Verified pass and fail scenarios by running: make -C tools/testing/selftests TARGETS=kheaders run_tests Signed-off-by: Joel Fernandes (Google) --- tools/testing/selftests/Makefile

[PATCH v3 2/2] Add selftests for module build using in-kernel headers

2019-02-27 Thread Joel Fernandes (Google)
This test tries to build a module successfully using the in-kernel headers found in /proc/kheaders.tar.xz. Verified pass and fail scenarios by running: make -C tools/testing/selftests TARGETS=kheaders run_tests Signed-off-by: Joel Fernandes (Google) --- tools/testing/selftests/Makefile

[PATCH v3 1/2] Provide in-kernel headers for making it easy to extend the kernel

2019-02-27 Thread Joel Fernandes (Google)
D_ST and IKHD_ED markers as is to facilitate future patches that would extract the headers from a kernel or module image. Signed-off-by: Joel Fernandes (Google) --- Changes since v2: (Thanks to Masahiro Yamada for several excellent suggestions) - Added support for out of tree builds.

[PATCH v2 1/2] Provide in-kernel headers for making it easy to extend the kernel

2019-02-11 Thread Joel Fernandes (Google)
s tar -xvf /proc/kheaders.txz -C $HOME/headers >/dev/null cd my-kernel-module make -C $HOME/headers M=$(pwd) modules rmmod kheaders Signed-off-by: Joel Fernandes (Google) --- Changes since v1: - removed IKH_EXTRA variable, not needed (Masahiro Yamada) - small fix ups to selftest - added t

[PATCH v2 2/2] Add selftests for module build using in-kernel headers

2019-02-11 Thread Joel Fernandes (Google)
This test tries to build a module successfully using the in-kernel headers found in /proc/kheaders.txz. Verified pass and fail scenarios by running: make -C tools/testing/selftests TARGETS=kheaders run_tests Signed-off-by: Joel Fernandes (Google) --- tools/testing/selftests/Makefile

[PATCH 1/2] Provide in-kernel headers for making it easy to extend the kernel

2019-02-07 Thread Joel Fernandes (Google)
s tar -xvf /proc/kheaders.txz -C $HOME/headers >/dev/null cd my-kernel-module make -C $HOME/headers M=$(pwd) modules rmmod kheaders Signed-off-by: Joel Fernandes (Google) --- Changes since RFC: Both changes bring size down to 3.8MB: - use xz for compression - strip comments except SPDX lines -

[PATCH 2/2] Add selftests for module build using in-kernel headers

2019-02-07 Thread Joel Fernandes (Google)
This test tries to build a module successfully using the in-kernel headers found in /proc/kheaders.txz. Verified pass and fail scenarios by running: make -C tools/testing/selftests TARGETS=kheaders run_tests Signed-off-by: Joel Fernandes (Google) --- tools/testing/selftests/kheaders/Makefile

[PATCH] doc: correct parameter in stallwarn

2018-10-29 Thread Joel Fernandes (Google)
The stallwarn document incorrectly mentions 'fps=' instead of 'fqs='. Correct that. Signed-off-by: Joel Fernandes (Google) --- Documentation/RCU/stallwarn.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Documentation/RCU/stallwarn.txt b/Documentati

[PATCH RFC] doc: rcu: remove obsolete (non-)requirement about disabling preemption

2018-10-14 Thread Joel Fernandes (Google)
The Requirements.html document says "Disabling Preemption Does Not Block Grace Periods". However this is no longer true with the RCU consolidation. Lets remove the obsolete (non-)requirement entirely. Signed-off-by: Joel Fernandes (Google) --- .../RCU/Design/Requirements/Requirements

[PATCH] docs: rcu: Make reader aware of rcu_dereference_protected

2018-10-08 Thread Joel Fernandes (Google)
a rcu_read_lock() and rcu_read_unlock(). Cc: ty...@mit.edu Suggested-by: ty...@mit.edu Signed-off-by: Joel Fernandes (Google) --- Documentation/RCU/whatisRCU.txt | 20 +++- 1 file changed, 19 insertions(+), 1 deletion(-) diff --git a/Documentation/RCU/whatisRCU.txt b

[PATCH RFC 4/5] doc: rcu: Remove obsolete checklist item about synchronize_rcu usage

2018-10-05 Thread Joel Fernandes (Google)
: Joel Fernandes (Google) --- Documentation/RCU/checklist.txt | 37 +++-- 1 file changed, 7 insertions(+), 30 deletions(-) diff --git a/Documentation/RCU/checklist.txt b/Documentation/RCU/checklist.txt index cc22ce49618d..b90ad1b0665a 100644 --- a/Documentation/RCU

[PATCH RFC 5/5] doc: rcu: Encourage use of rcu_barrier in checklist

2018-10-05 Thread Joel Fernandes (Google)
made in previous patches. Signed-off-by: Joel Fernandes (Google) --- Documentation/RCU/checklist.txt | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/Documentation/RCU/checklist.txt b/Documentation/RCU/checklist.txt index b90ad1b0665a..6f469864d9f5 100644 --- a/Documentation

[PATCH RFC 3/5] doc: rcu: Remove obsolete suggestion from checklist

2018-10-05 Thread Joel Fernandes (Google)
call_rcu_bh is now implemented in terms of call_rcu, so the suggestion to use a different API for speed benefits is not accurate anymore. Update the document accordingly. Signed-off-by: Joel Fernandes (Google) --- Documentation/RCU/checklist.txt | 6 +- 1 file changed, 1 insertion(+), 5

[PATCH RFC 1/5] doc: rcu: Update core and full API in whatisRCU

2018-10-05 Thread Joel Fernandes (Google)
debugging work correctly. This update also corrects that. Also, add local_bh_disable() and local_bh_enable() as softirq protection primitives and correct a grammar error in a quiz answer. Signed-off-by: Joel Fernandes (Google) --- Documentation/RCU/whatisRCU.txt | 55

[PATCH RFC 2/5] doc: rcu: Add more rationale for using rcu_read_lock_sched in checklist

2018-10-05 Thread Joel Fernandes (Google)
It could be clarified better why rcu_read_lock_sched is better than using preempt_disable, add the same. Signed-off-by: Joel Fernandes (Google) --- Documentation/RCU/checklist.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Documentation/RCU/checklist.txt b/Documentation

[PATCH RFC 0/5] rcu doc updates for whatisRCU and checklist

2018-10-05 Thread Joel Fernandes (Google)
'd love to give it a try, it looks exciting. I remember you saying you wanted to do that, so that's something else you could potentially offload to me as you see fit ;-) Thank you very much! Joel Fernandes (Google) (5): doc: rcu: Update core and full API in whatisRCU doc: rcu

[5/5] doc: rcu: Update description of gp_seq fields in rcu_data

2018-09-25 Thread Joel Fernandes (Google)
The rcu_state structure doesn't have a gp_seq_needed field. Update the description under rcu_data accordingly, to reflect this. Signed-off-by: Joel Fernandes (Google) --- .../RCU/Design/Data-Structures/Data-Structures.html| 7 --- 1 file changed, 4 insertions(+), 3 dele

[1/5] doc: rcu: Update information about resched_cpu

2018-09-25 Thread Joel Fernandes (Google)
Since commit fced9c8cfe6b ("rcu: Avoid resched_cpu() when rescheduling the current CPU"), resched_cpu is not directly called from sync_sched_exp_handler. Update the documentation about the same. Signed-off-by: Joel Fernandes (Google) --- .../Expedited-Grace-Periods/Expedited-Grace-Pe

[4/5] doc: rcu: Clarify better the rcu_segcblist len field

2018-09-25 Thread Joel Fernandes (Google)
for clarifying over email. Signed-off-by: Joel Fernandes (Google) --- .../RCU/Design/Data-Structures/Data-Structures.html| 10 -- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/Documentation/RCU/Design/Data-Structures/Data-Structures.html b/Documentation/RCU/Design/D

[2/5] doc: rcu: Remove rcu_dynticks from Data-Structures

2018-09-25 Thread Joel Fernandes (Google)
rcu_dynticks was folded into rcu_data structure. Update the data structures RCU document accordingly. Signed-off-by: Joel Fernandes (Google) --- .../BigTreeClassicRCUBHdyntick.svg| 695 -- .../Data-Structures/Data-Structures.html | 92 +-- 2 files changed, 25

[0/5] rcu doc updates

2018-09-25 Thread Joel Fernandes (Google)
the dyntick handling and then dig into other documents outside of Data-Structure that need updates. But let me know any suggestions. Thanks! Joel Fernandes (Google) (5): doc: rcu: Update information about resched_cpu doc: rcu: Remove rcu_dynticks from Data-Structures doc: rcu: Update Data-Struc

[PATCH RFC 2/3] rcu: tree: Fix comment about gp_seq_needed

2018-09-22 Thread Joel Fernandes (Google)
rcu_state does not have a gp_seq_needed field. This comment therefore is confusing or incorrect. Fix it. Signed-off-by: Joel Fernandes (Google) --- kernel/rcu/tree.h | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/kernel/rcu/tree.h b/kernel/rcu/tree.h index 57a937ac51c2

[PATCH RFC 3/3] Documentation: RCU: Fix rcu_preempt_state reference in stallwarn

2018-09-22 Thread Joel Fernandes (Google)
rcu_preempt_state doesn't exist anymore. Update stallwarn documentation accordingly. Signed-off-by: Joel Fernandes (Google) --- Documentation/RCU/stallwarn.txt | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/Documentation/RCU/stallwarn.txt b/Documentatio

  1   2   >