]> www.infradead.org Git - nvme.git/commitdiff
net: enable timestamp static key if CPU
authorMarcelo Tosatti <mtosatti@redhat.com>
Mon, 1 Apr 2024 15:36:40 +0000 (12:36 -0300)
committerJakub Kicinski <kuba@kernel.org>
Thu, 4 Apr 2024 02:14:53 +0000 (19:14 -0700)
For systems that use CPU isolation (via nohz_full), creating or destroying
a socket with SO_TIMESTAMP, SO_TIMESTAMPNS or SO_TIMESTAMPING with flag
SOF_TIMESTAMPING_RX_SOFTWARE will cause a static key to be enabled/disabled.
This in turn causes undesired IPIs to isolated CPUs.

So enable the static key unconditionally, if CPU isolation is enabled,
thus avoiding the IPIs.

Signed-off-by: Marcelo Tosatti <mtosatti@redhat.com>
Reviewed-by: Willem de Bruijn <willemb@google.com>
Link: https://lore.kernel.org/r/ZgrUiLLtbEUf9SFn@tpad
Signed-off-by: Jakub Kicinski <kuba@kernel.org>
net/core/dev.c

index 818699dea9d7040ee74532ccdebf01c4fd6887cc..9b821d96eff30e47e1204724205eaae98af3a2f8 100644 (file)
@@ -77,6 +77,7 @@
 #include <linux/hash.h>
 #include <linux/slab.h>
 #include <linux/sched.h>
+#include <linux/sched/isolation.h>
 #include <linux/sched/mm.h>
 #include <linux/smpboot.h>
 #include <linux/mutex.h>
@@ -11911,6 +11912,10 @@ static int __init net_dev_init(void)
                                       NULL, dev_cpu_dead);
        WARN_ON(rc < 0);
        rc = 0;
+
+       /* avoid static key IPIs to isolated CPUs */
+       if (housekeeping_enabled(HK_TYPE_MISC))
+               net_enable_timestamp();
 out:
        if (rc < 0) {
                for_each_possible_cpu(i) {