[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

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:

    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.

> Regards,
> --
> Julien Grall

Xen-devel mailing list



Lists.xenproject.org is hosted with RackSpace, monitoring our
servers 24x7x365 and backed by RackSpace's Fanatical Support®.