[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] Re: [Xen-devel] [RFC PATCH v1 01/10] xen/arm: make secondary gic init as notifier call
Hello Vijay, (Adding George for the scheduler part) On 03/26/2014 11:27 AM, Vijay Kilari wrote: > Hi Julien, > >>>>> @@ -283,7 +283,7 @@ void __cpuinit start_secondary(unsigned long >>>>> boot_phys_offset, >>>>> >>>>> mmu_init_secondary_cpu(); >>>>> >>>>> - gic_init_secondary_cpu(); >>>>> + notify_cpu_starting(cpuid); >>>> >>>> >>>> Can you explain why it's safe to move notify_cpu_starting earlier? >>>> >>> When gic registers a notifier with action as CPU_STARTING, I am >>> getting a panic >>> from gic driver because notify_cpu_starting() is called after most of >>> the GIC >>> initialization calls as below from start_secondary() are called. >>> Especially the issue is coming >>> with init_maintenanc_interrupt(). So I have moved this notifier >>> before other GIC initialization >>> calls and since I move notifier only before GIC initialization >>> calls it not be a problem. >> >> >> It doesn't explain why it's safe... CPU_STARTING is also used in some place >> to initialize internal data structure. Are you sure that theses callbacks >> can be called earlier? >> > > The below callback is the only callback that is using CPU_STARTING, > IMO it is only initializing pcpu data. > > static int cpu_credit2_callback( > struct notifier_block *nfb, unsigned long action, void *hcpu) > { > unsigned int cpu = (unsigned long)hcpu; > int rc = 0; > > switch ( action ) > { > case CPU_STARTING: > csched_cpu_starting(cpu); > break; > default: > break; > } > > return !rc ? NOTIFY_DONE : notifier_from_errno(rc); > } > > With this patch, notifier is only called just before GIC initialization. > So should not be a problem. Let me know your opinion? I am > not very familiar with this piece of code. I think, the sched credit2 initialization code is relying on the sibling map (see cpu_to_socket), which is basically a no-op for now on ARM. You may have to also move setup_cpu_sibling_map(cpuid) earlier. I don't know enough the scheduler to say it's safe to move earlier. George any opinion? The second issue I can see is, a developer wants to add a CPU_STARTING callback for his shiny driver which will request a PPI. In this case we will fail because the IRQ desc is not correctly initialized (init_secondary_IRQ is called after notify_cpu_starting). Regards, -- Julien Grall _______________________________________________ Xen-devel mailing list Xen-devel@xxxxxxxxxxxxx http://lists.xen.org/xen-devel
|
Lists.xenproject.org is hosted with RackSpace, monitoring our |