RE: CMCI vector not initialized on BP

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Hi Tony - thanks for the response... appreciate this. If you follow register_percpu_irq you will discover it does not operate on CPU0 and the line ' ia64_mca_cmc_vector_setup()' operates on the current cpu which is typically not CPU0. It took some hacks in my kernel to prove this and ultimately show CPU CMCV is always 0x0.

smp_callin looks like the routine to iniatialize the vector table and the CMCI vector as well when the cpu  goes online. However smp_callin is not called for the BP.

Thanks - Fred



-----Original Message-----
From: Tony Luck [mailto:tony.luck@xxxxxxxxx] 
Sent: Monday, March 11, 2013 5:30 PM
To: Hartnett, Fred
Cc: linux-ia64@xxxxxxxxxxxxxxx
Subject: Re: CMCI vector not initialized on BP

On Tue, Mar 5, 2013 at 3:05 PM, Hartnett, Fred <fred.hartnett@xxxxxx> wrote:
>  but the BP vector is not initialized since the BP is already online
    ...
> Is this by design or an oops?

Looks like we handle BSP in ia64_mca_late_init() [see below]. Are you seeing something that indicates that this isn't doing what the comment says it is doing?

-Tony

static int __init
ia64_mca_late_init(void)
{
        if (!mca_init)
                return 0;

        /*
         *  Configure the CMCI/P vector and handler. Interrupts for CMC are
         *  per-processor, so AP CMC interrupts are setup in
smp_callin() (smpboot.c).
         */
        register_percpu_irq(IA64_CMC_VECTOR, &cmci_irqaction);
        register_percpu_irq(IA64_CMCP_VECTOR, &cmcp_irqaction);
        ia64_mca_cmc_vector_setup();       /* Setup vector on BSP */
--
To unsubscribe from this list: send the line "unsubscribe linux-ia64" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html


[Index of Archives]     [Linux Kernel]     [Sparc Linux]     [DCCP]     [Linux ARM]     [Yosemite News]     [Linux SCSI]     [Linux x86_64]     [Linux for Ham Radio]

  Powered by Linux