diff options
author | Mauro Carvalho Chehab <mchehab@redhat.com> | 2012-04-24 14:05:43 -0400 |
---|---|---|
committer | Mauro Carvalho Chehab <mchehab@redhat.com> | 2012-06-11 12:23:45 -0400 |
commit | de3910eb79ac8c0f29a11224661c0ebaaf813039 (patch) | |
tree | 44584d6691588b2c18823260be0e44f0c9872d02 /drivers/edac/amd64_edac.c | |
parent | e39f4ea9b01f137f9e6fa631f3e9088fb9175e91 (diff) |
edac: change the mem allocation scheme to make Documentation/kobject.txt happy
Kernel kobjects have rigid rules: each container object should be
dynamically allocated, and can't be allocated into a single kmalloc.
EDAC never obeyed this rule: it has a single malloc function that
allocates all needed data into a single kzalloc.
As this is not accepted anymore, change the allocation schema of the
EDAC *_info structs to enforce this Kernel standard.
Acked-by: Chris Metcalf <cmetcalf@tilera.com>
Cc: Aristeu Rozanski <arozansk@redhat.com>
Cc: Doug Thompson <norsk5@yahoo.com>
Cc: Greg K H <gregkh@linuxfoundation.org>
Cc: Borislav Petkov <borislav.petkov@amd.com>
Cc: Mark Gross <mark.gross@intel.com>
Cc: Tim Small <tim@buttersideup.com>
Cc: Ranganathan Desikan <ravi@jetztechnologies.com>
Cc: "Arvind R." <arvino55@gmail.com>
Cc: Olof Johansson <olof@lixom.net>
Cc: Egor Martovetsky <egor@pasemi.com>
Cc: Michal Marek <mmarek@suse.cz>
Cc: Jiri Kosina <jkosina@suse.cz>
Cc: Dmitry Eremin-Solenikov <dbaryshkov@gmail.com>
Cc: Benjamin Herrenschmidt <benh@kernel.crashing.org>
Cc: Hitoshi Mitake <h.mitake@gmail.com>
Cc: Andrew Morton <akpm@linux-foundation.org>
Cc: Shaohui Xie <Shaohui.Xie@freescale.com>
Cc: linuxppc-dev@lists.ozlabs.org
Signed-off-by: Mauro Carvalho Chehab <mchehab@redhat.com>
Diffstat (limited to 'drivers/edac/amd64_edac.c')
-rw-r--r-- | drivers/edac/amd64_edac.c | 10 |
1 files changed, 6 insertions, 4 deletions
diff --git a/drivers/edac/amd64_edac.c b/drivers/edac/amd64_edac.c index 9905834b560f..9fbced7f65ee 100644 --- a/drivers/edac/amd64_edac.c +++ b/drivers/edac/amd64_edac.c | |||
@@ -2205,6 +2205,7 @@ static u32 amd64_csrow_nr_pages(struct amd64_pvt *pvt, u8 dct, int csrow_nr) | |||
2205 | static int init_csrows(struct mem_ctl_info *mci) | 2205 | static int init_csrows(struct mem_ctl_info *mci) |
2206 | { | 2206 | { |
2207 | struct csrow_info *csrow; | 2207 | struct csrow_info *csrow; |
2208 | struct dimm_info *dimm; | ||
2208 | struct amd64_pvt *pvt = mci->pvt_info; | 2209 | struct amd64_pvt *pvt = mci->pvt_info; |
2209 | u64 base, mask; | 2210 | u64 base, mask; |
2210 | u32 val; | 2211 | u32 val; |
@@ -2222,7 +2223,7 @@ static int init_csrows(struct mem_ctl_info *mci) | |||
2222 | !!(val & NBCFG_CHIPKILL), !!(val & NBCFG_ECC_ENABLE)); | 2223 | !!(val & NBCFG_CHIPKILL), !!(val & NBCFG_ECC_ENABLE)); |
2223 | 2224 | ||
2224 | for_each_chip_select(i, 0, pvt) { | 2225 | for_each_chip_select(i, 0, pvt) { |
2225 | csrow = &mci->csrows[i]; | 2226 | csrow = mci->csrows[i]; |
2226 | 2227 | ||
2227 | if (!csrow_enabled(i, 0, pvt) && !csrow_enabled(i, 1, pvt)) { | 2228 | if (!csrow_enabled(i, 0, pvt) && !csrow_enabled(i, 1, pvt)) { |
2228 | debugf1("----CSROW %d EMPTY for node %d\n", i, | 2229 | debugf1("----CSROW %d EMPTY for node %d\n", i, |
@@ -2257,9 +2258,10 @@ static int init_csrows(struct mem_ctl_info *mci) | |||
2257 | edac_mode = EDAC_NONE; | 2258 | edac_mode = EDAC_NONE; |
2258 | 2259 | ||
2259 | for (j = 0; j < pvt->channel_count; j++) { | 2260 | for (j = 0; j < pvt->channel_count; j++) { |
2260 | csrow->channels[j].dimm->mtype = mtype; | 2261 | dimm = csrow->channels[j]->dimm; |
2261 | csrow->channels[j].dimm->edac_mode = edac_mode; | 2262 | dimm->mtype = mtype; |
2262 | csrow->channels[j].dimm->nr_pages = nr_pages; | 2263 | dimm->edac_mode = edac_mode; |
2264 | dimm->nr_pages = nr_pages; | ||
2263 | } | 2265 | } |
2264 | } | 2266 | } |
2265 | 2267 | ||