From mboxrd@z Thu Jan 1 00:00:00 1970 From: George Dunlap Subject: Re: [PATCH v2 2/2] sched_credit2.c: runqueue_per_core code Date: Thu, 19 Mar 2015 11:40:35 +0000 Message-ID: <550AB5B3.9020308@eu.citrix.com> References: <20150313181109.GA3179@gmail.com> <55032C85.6090805@citrix.com> <550336EE.60909@eu.citrix.com> <5506DF40020000780006A407@mail.emea.novell.com> <5506D1E1.8050404@eu.citrix.com> <5506E11F020000780006A426@mail.emea.novell.com> <1426616308.32500.98.camel@citrix.com> <55093DD1020000780006B1F2@mail.emea.novell.com> <1426668836.2560.13.camel@citrix.com> <55099940.7080007@eu.citrix.com> <1426697366.2560.65.camel@citrix.com> <5509B066.5050302@eu.citrix.com> <1426759435.2560.104.camel@citrix.com> <550AB812020000780006B872@mail.emea.novell.com> Mime-Version: 1.0 Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit Return-path: In-Reply-To: <550AB812020000780006B872@mail.emea.novell.com> List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Sender: xen-devel-bounces@lists.xen.org Errors-To: xen-devel-bounces@lists.xen.org To: Jan Beulich , Dario Faggioli Cc: AndrewCooper , "xen-devel@lists.xen.org" , George Dunlap , "uma.sharma523@gmail.com" List-Id: xen-devel@lists.xenproject.org On 03/19/2015 10:50 AM, Jan Beulich wrote: >>>> On 19.03.15 at 11:03, wrote: >> OTOH, CPU_STARTING callbacks run: >> - on the cpu being brought up; >> - with interrupt disabled (see how the call to local_irq_enable(), in >> start_secondary(), is *after* the invocation of >> notify_cpu_starting()). >> >> Here we are. And the reason why things works ok in Credit2, is that >> csched2_alloc_pdata() doesn't really allocate anything! In fact, in >> general, handling alloc_pdata() during CPU_STARTING would mean that we >> can't allocate any memory which, given the name of the function, would >> look rather odd. :-) >> >> Nevertheless I see the value of doing so, and hence I think what we >> could do would be to introduce a new hook in the scheduler interface, >> called .init_pdata or .init_pcpu, and, in sched_*.c, split the >> allocation and the initialization parts. The former will be handled >> during CPU_UP_PREPARE, when allocation is possible, the latter during >> CPU_STARTING, when we have more info available to perform actual >> initializations. > > Another alternative would be a new CPU_ALIVE (name subject to > change) notification after interrupts got enabled. That would (as > a follow-up cleanup) also allow the MTRR and microcode setup on > the CPU to no longer need explicit calls (which look reversed > anyway - surely we should update microcode before fiddling with > MTRRs). local_irq_enable() happens after setting the cpu as online in cpu_online_map; not having the scheduler ready to actually schedule on it at that time seems like it's asking for trouble. /me pokes around and thinks some more... -George