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>
This commit is contained in:
@@ -348,7 +348,7 @@ static void cpc925_init_csrows(struct mem_ctl_info *mci)
|
||||
if (bba == 0)
|
||||
continue; /* not populated */
|
||||
|
||||
csrow = &mci->csrows[index];
|
||||
csrow = mci->csrows[index];
|
||||
|
||||
row_size = bba * (1UL << 28); /* 256M */
|
||||
csrow->first_page = last_nr_pages;
|
||||
@@ -380,7 +380,7 @@ static void cpc925_init_csrows(struct mem_ctl_info *mci)
|
||||
break;
|
||||
}
|
||||
for (j = 0; j < csrow->nr_channels; j++) {
|
||||
dimm = csrow->channels[j].dimm;
|
||||
dimm = csrow->channels[j]->dimm;
|
||||
dimm->nr_pages = nr_pages / csrow->nr_channels;
|
||||
dimm->mtype = MEM_RDDR;
|
||||
dimm->edac_mode = EDAC_SECDED;
|
||||
@@ -463,7 +463,7 @@ static void cpc925_mc_get_pfn(struct mem_ctl_info *mci, u32 mear,
|
||||
*csrow = rank;
|
||||
|
||||
#ifdef CONFIG_EDAC_DEBUG
|
||||
if (mci->csrows[rank].first_page == 0) {
|
||||
if (mci->csrows[rank]->first_page == 0) {
|
||||
cpc925_mc_printk(mci, KERN_ERR, "ECC occurs in a "
|
||||
"non-populated csrow, broken hardware?\n");
|
||||
return;
|
||||
@@ -471,7 +471,7 @@ static void cpc925_mc_get_pfn(struct mem_ctl_info *mci, u32 mear,
|
||||
#endif
|
||||
|
||||
/* Revert csrow number */
|
||||
pa = mci->csrows[rank].first_page << PAGE_SHIFT;
|
||||
pa = mci->csrows[rank]->first_page << PAGE_SHIFT;
|
||||
|
||||
/* Revert column address */
|
||||
col += bcnt;
|
||||
|
Verwijs in nieuw issue
Block a user