Date: Tue, 31 Mar 2015 16:14:04 -0700 From: Adrian Chadd <adrian@freebsd.org> To: Slawa Olhovchenkov <slw@zxy.spb.ru> Cc: "freebsd-hackers@freebsd.org" <freebsd-hackers@freebsd.org> Subject: Re: irq cpu binding Message-ID: <CAJ-VmonDgch%2BRDyczkMMgJr5CXdgYyAJO6MqCE_uGzyNU%2BXN4g@mail.gmail.com> In-Reply-To: <20150331225947.GC23643@zxy.spb.ru> References: <20150328112035.GZ23643@zxy.spb.ru> <CAJ-Vmo=sxtLgn1HABbWchu1Hm8kZ4Qy%2BscPeD7ezkkBzr%2BQijA@mail.gmail.com> <20150328154031.GA23643@zxy.spb.ru> <CAJ-VmokpWNy-arZ_=4hNbyAvzBYgDWu4F=vYSDwqPgpjaGHk=w@mail.gmail.com> <20150328181026.GB23643@zxy.spb.ru> <CAJ-Vmok=0=C%2BHLvLXEM5pbYp_zP6C498wudAfEA40s4AVpGa_w@mail.gmail.com> <20150328183147.GC23643@zxy.spb.ru> <CAJ-VmokPdnOSASLcrzHtqs_r6GfUW6Q5ap7r9Tnp1OvKhDh20A@mail.gmail.com> <20150328192505.GD23643@zxy.spb.ru> <CAJ-Vmo=R5J=LT9ntgZJ4xHZwn8_WEAUC=3wSqPKn3=z8ki_N6A@mail.gmail.com> <20150331225947.GC23643@zxy.spb.ru>
next in thread | previous in thread | raw e-mail | index | archive | help
You also have to do the taskqueue threads. (I mean, pmc could also be broken...) -a On 31 March 2015 at 15:59, Slawa Olhovchenkov <slw@zxy.spb.ru> wrote: > On Sat, Mar 28, 2015 at 12:33:52PM -0700, Adrian Chadd wrote: > >> That's done deferred by the bus interrupt wiring. That's something >> John's been looking into as part of the general NUMA work (and I'm >> trying to debug right now, on dual-socket boxes with ixgbe. :-) >> >> Look at bus_bind_intr() and the twisty path to intr_event_bind(), then >> x86/x86/intr_machdep.c:intr_assign_cpu(), then intr_shuffle_cpus() at >> boot, versus what happens via calls to pic_assign_cpu to setup the >> wiring. > > I am do simple, ugle hack ixgbe driver for let start cpu binding. > I am still see ixgbe in pmc output. > > What may be wrong? > What may be miss? > > ===== > static int ixgbe_start_cpu = 0; > TUNABLE_INT("hw.ix.start_cpu", &ixgbe_start_cpu); > SYSCTL_INT(_hw_ix, OID_AUTO, start_cpu, CTLFLAG_RDTUN, &ixgbe_start_cpu, 0, > "Start CPU for next IRQ binding"); > > [...] > if (adapter->num_queues > 1) > bus_bind_intr(dev, que->res, i+ixgbe_start_cpu); > > #ifndef IXGBE_LEGACY_TX > TASK_INIT(&txr->txq_task, 0, ixgbe_deferred_mq_start, txr); > #endif > TASK_INIT(&que->que_task, 0, ixgbe_handle_que, que); > que->tq = taskqueue_create_fast("ixgbe_que", M_NOWAIT, > taskqueue_thread_enqueue, &que->tq); > taskqueue_start_threads(&que->tq, 1, PI_NET, "%s que", > device_get_nameunit(adapter->dev)); > } > ixgbe_start_cpu += adapter->num_queues; >
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?CAJ-VmonDgch%2BRDyczkMMgJr5CXdgYyAJO6MqCE_uGzyNU%2BXN4g>