[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID: <bd4cb8901003171733k95fcf50mf6de78bf503d9a7b@mail.gmail.com>
Date: Thu, 18 Mar 2010 01:33:15 +0100
From: Stephane Eranian <eranian@...gle.com>
To: Peter Zijlstra <peterz@...radead.org>
Cc: linux-kernel@...r.kernel.org, mingo@...e.hu, paulus@...ba.org,
davem@...emloft.net, fweisbec@...il.com, robert.richter@....com,
perfmon2-devel@...ts.sf.net, eranian@...il.com
Subject: Re: [PATCH] perf_events: fix bug in AMD per-cpu initialization
On Thu, Mar 18, 2010 at 12:47 AM, Peter Zijlstra <peterz@...radead.org> wrote:
> On Wed, 2010-03-17 at 10:40 +0200, Stephane Eranian wrote:
>> On AMD processors, we need to allocate a data structure per Northbridge
>> to handle certain events.
>>
>> On CPU initialization, we need to query the Northbridge id and check
>> whether the structure is already allocated or not. We use the
>> amd_get_nb_id() function to request the Northbridge identification.
>>
>> The recent cleanup of the CPU online/offline initialization introduced
>> a bug. AMD cpu initialization is invoked on CPU_UP_PREPARE callback.
>> This is before the CPU Northbridge id is calculated. Therefore no
>> processor had a Northbridge structure allocated except the boot
>> processor. That was causing bogus NB event scheduling.
>>
>> This patch uses the CPU_ONLINE callback to initialize the AMD
>> Northbridge structure. This way amd_get_nb_id() returns valid
>> information.
>>
>> The x86_cpu_up() callback was added. Could not call it cpu_online
>> because of existing macro.
>>
>> Signed-off-by: Stephane Eranian <eranian@...gle.com>
>
>
> No, ONLINE is not exposed for a good reason, its always wrong.
>
> Use prepare to allocate data, and starting to initialize stuff on the
> cpu proper once its up. Online is after the cpu is up and running and we
> are already scheduling stuff on it so its too late to initialize things.
>
>
I can't because amd_get_nb_id() returns garbage for the CPU
when you call from CPU_STARTING. So looks like initialization
of cpu_llc_id needs to be moved way earlier. I don't want to have
to duplicate that code.
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@...r.kernel.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/
Powered by blists - more mailing lists