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/i82975x_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/i82975x_edac.c')
-rw-r--r-- | drivers/edac/i82975x_edac.c | 10 |
1 files changed, 5 insertions, 5 deletions
diff --git a/drivers/edac/i82975x_edac.c b/drivers/edac/i82975x_edac.c index 8b26401efa19..4d239ab31e34 100644 --- a/drivers/edac/i82975x_edac.c +++ b/drivers/edac/i82975x_edac.c | |||
@@ -308,10 +308,10 @@ static int i82975x_process_error_info(struct mem_ctl_info *mci, | |||
308 | (info->xeap & 1) ? 1 : 0, info->eap, (unsigned int) page); | 308 | (info->xeap & 1) ? 1 : 0, info->eap, (unsigned int) page); |
309 | return 0; | 309 | return 0; |
310 | } | 310 | } |
311 | chan = (mci->csrows[row].nr_channels == 1) ? 0 : info->eap & 1; | 311 | chan = (mci->csrows[row]->nr_channels == 1) ? 0 : info->eap & 1; |
312 | offst = info->eap | 312 | offst = info->eap |
313 | & ((1 << PAGE_SHIFT) - | 313 | & ((1 << PAGE_SHIFT) - |
314 | (1 << mci->csrows[row].channels[chan].dimm->grain)); | 314 | (1 << mci->csrows[row]->channels[chan]->dimm->grain)); |
315 | 315 | ||
316 | if (info->errsts & 0x0002) | 316 | if (info->errsts & 0x0002) |
317 | edac_mc_handle_error(HW_EVENT_ERR_UNCORRECTED, mci, | 317 | edac_mc_handle_error(HW_EVENT_ERR_UNCORRECTED, mci, |
@@ -394,7 +394,7 @@ static void i82975x_init_csrows(struct mem_ctl_info *mci, | |||
394 | */ | 394 | */ |
395 | 395 | ||
396 | for (index = 0; index < mci->nr_csrows; index++) { | 396 | for (index = 0; index < mci->nr_csrows; index++) { |
397 | csrow = &mci->csrows[index]; | 397 | csrow = mci->csrows[index]; |
398 | 398 | ||
399 | value = readb(mch_window + I82975X_DRB + index + | 399 | value = readb(mch_window + I82975X_DRB + index + |
400 | ((index >= 4) ? 0x80 : 0)); | 400 | ((index >= 4) ? 0x80 : 0)); |
@@ -421,10 +421,10 @@ static void i82975x_init_csrows(struct mem_ctl_info *mci, | |||
421 | */ | 421 | */ |
422 | dtype = i82975x_dram_type(mch_window, index); | 422 | dtype = i82975x_dram_type(mch_window, index); |
423 | for (chan = 0; chan < csrow->nr_channels; chan++) { | 423 | for (chan = 0; chan < csrow->nr_channels; chan++) { |
424 | dimm = mci->csrows[index].channels[chan].dimm; | 424 | dimm = mci->csrows[index]->channels[chan]->dimm; |
425 | 425 | ||
426 | dimm->nr_pages = nr_pages / csrow->nr_channels; | 426 | dimm->nr_pages = nr_pages / csrow->nr_channels; |
427 | strncpy(csrow->channels[chan].dimm->label, | 427 | strncpy(csrow->channels[chan]->dimm->label, |
428 | labels[(index >> 1) + (chan * 2)], | 428 | labels[(index >> 1) + (chan * 2)], |
429 | EDAC_MC_LABEL_LEN); | 429 | EDAC_MC_LABEL_LEN); |
430 | dimm->grain = 1 << 7; /* 128Byte cache-line resolution */ | 430 | dimm->grain = 1 << 7; /* 128Byte cache-line resolution */ |