mirror of https://lore.kernel.org/lkml/
 help / color / mirror / Atom feed
* amd64_edac making improper assumptions?
@ 2009-09-18 13:02 Jan Beulich
  2009-09-18 13:36 ` Borislav Petkov
  0 siblings, 1 reply; 2+ messages in thread
From: Jan Beulich @ 2009-09-18 13:02 UTC (permalink / raw)
  To: borislav.petkov, dougthompson; +Cc: linux-kernel

Doug, Borislav,

the sizing of pvt_lookup[] and mci_lookup[] is done based on a config
setting (CONFIG_NODES_SHIFT), and the indexing happens using the
raw value read from hardware without any bounds checking. Hence,
running a kernel with e.g. !CONFIG_NUMA on a multi-socket system
would happily access other than the first and only array element.

Likewise, the use of rdmsr_on_cpu() doesn't seem to do what is
intended when !CONFIG_NUMA.

Also, assuming you can use cpumask_of_node() directly on the
node ID read from hardware seems bogus (even in general, but
namely again when MAX_NUMNODES is less than the actual number
of nodes).

Thanks for your explanation,
Jan


^ permalink raw reply	[flat|nested] 2+ messages in thread

* Re: amd64_edac making improper assumptions?
  2009-09-18 13:02 amd64_edac making improper assumptions? Jan Beulich
@ 2009-09-18 13:36 ` Borislav Petkov
  0 siblings, 0 replies; 2+ messages in thread
From: Borislav Petkov @ 2009-09-18 13:36 UTC (permalink / raw)
  To: Jan Beulich; +Cc: dougthompson, linux-kernel

Hi Jan,

On Fri, Sep 18, 2009 at 02:02:28PM +0100, Jan Beulich wrote:
> Doug, Borislav,
> 
> the sizing of pvt_lookup[] and mci_lookup[] is done based on a config
> setting (CONFIG_NODES_SHIFT), and the indexing happens using the
> raw value read from hardware without any bounds checking. Hence,
> running a kernel with e.g. !CONFIG_NUMA on a multi-socket system
> would happily access other than the first and only array element.

Good catch, will fix, thanks. See below for longer explanation.

> Likewise, the use of rdmsr_on_cpu() doesn't seem to do what is
> intended when !CONFIG_NUMA.
> 
> Also, assuming you can use cpumask_of_node() directly on the
> node ID read from hardware seems bogus (even in general, but
> namely again when MAX_NUMNODES is less than the actual number
> of nodes).

originally, the driver was compiling in NUMA for facilities like
cpumask_of_node() et al for all per-node stuff but Ingo raised a concern
that the NUMA dependency shouldn't be needed. Therefore, we needed some
alternative facilities which, for example, can give you all the cores
on a node so that you can init a driver instance per node and thus per
memory controller.

Well, Andreas did prepare a bunch of generic cpu topology patches which
handle also MCM processors (e.g. having more than one internal node) and
currently the per-CPU cpu_llc_id var contains the node id of a cpu. They
went upstream last week and I'm waiting for another patch in -tip to go
in before I send my local queue here which removes the cpumask_of_node()
usage and all the rest of NUMA stuff completely.

Hope that makes it more clear and thanks for letting us know, we're on
it :).

-- 
Regards/Gruss,
Boris.

Operating | Advanced Micro Devices GmbH
  System  | Karl-Hammerschmidt-Str. 34, 85609 Dornach b. München, Germany
 Research | Geschäftsführer: Andrew Bowd, Thomas M. McCoy, Giuliano Meroni
  Center  | Sitz: Dornach, Gemeinde Aschheim, Landkreis München
  (OSRC)  | Registergericht München, HRB Nr. 43632


^ permalink raw reply	[flat|nested] 2+ messages in thread

end of thread, other threads:[~2009-09-18 13:37 UTC | newest]

Thread overview: 2+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2009-09-18 13:02 amd64_edac making improper assumptions? Jan Beulich
2009-09-18 13:36 ` Borislav Petkov

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox

all inboxes | Powered by JetHome®