From: Borislav Petkov <borislav.petkov@amd.com>
To: <norsk5@yahoo.com>
Cc: <linux-kernel@vger.kernel.org>, <x86@kernel.org>,
Borislav Petkov <borislav.petkov@amd.com>
Subject: [PATCH 3/6] amd64_edac: make driver loading more robust
Date: Tue, 22 Dec 2009 12:41:14 +0100 [thread overview]
Message-ID: <1261482077-23733-4-git-send-email-borislav.petkov@amd.com> (raw)
In-Reply-To: <1261482077-23733-1-git-send-email-borislav.petkov@amd.com>
Currently, the module does not initialize fully when the DIMMs aren't
ECC but remains still loaded. Propagate the error when no instance of
the driver is properly initialized and prevent further loading.
Reorganize and polish error handling in amd64_edac_init() while at it.
Signed-off-by: Borislav Petkov <borislav.petkov@amd.com>
---
drivers/edac/amd64_edac.c | 23 ++++++++++++++++-------
1 files changed, 16 insertions(+), 7 deletions(-)
diff --git a/drivers/edac/amd64_edac.c b/drivers/edac/amd64_edac.c
index fb0d36b..a8af27a 100644
--- a/drivers/edac/amd64_edac.c
+++ b/drivers/edac/amd64_edac.c
@@ -3014,25 +3014,29 @@ static void amd64_setup_pci_device(void)
static int __init amd64_edac_init(void)
{
int nb, err = -ENODEV;
+ bool load_ok = false;
edac_printk(KERN_INFO, EDAC_MOD_STR, EDAC_AMD64_VERSION "\n");
opstate_init();
if (cache_k8_northbridges() < 0)
- return err;
+ goto err_ret;
msrs = msrs_alloc();
+ if (!msrs)
+ goto err_ret;
err = pci_register_driver(&amd64_pci_driver);
if (err)
- return err;
+ goto err_pci;
/*
* At this point, the array 'pvt_lookup[]' contains pointers to alloc'd
* amd64_pvt structs. These will be used in the 2nd stage init function
* to finish initialization of the MC instances.
*/
+ err = -ENODEV;
for (nb = 0; nb < num_k8_northbridges; nb++) {
if (!pvt_lookup[nb])
continue;
@@ -3040,16 +3044,21 @@ static int __init amd64_edac_init(void)
err = amd64_init_2nd_stage(pvt_lookup[nb]);
if (err)
goto err_2nd_stage;
- }
- amd64_setup_pci_device();
+ load_ok = true;
+ }
- return 0;
+ if (load_ok) {
+ amd64_setup_pci_device();
+ return 0;
+ }
err_2nd_stage:
- debugf0("2nd stage failed\n");
pci_unregister_driver(&amd64_pci_driver);
-
+err_pci:
+ msrs_free(msrs);
+ msrs = NULL;
+err_ret:
return err;
}
--
1.6.5.4
next prev parent reply other threads:[~2009-12-22 11:43 UTC|newest]
Thread overview: 7+ messages / expand[flat|nested] mbox.gz Atom feed top
2009-12-22 11:41 AMD64 EDAC fixlets for .33 Borislav Petkov
2009-12-22 11:41 ` [PATCH 1/6] amd64_edac: fix K8 chip select reporting Borislav Petkov
2009-12-22 11:41 ` [PATCH 2/6] amd64_edac: fix driver instance freeing Borislav Petkov
2009-12-22 11:41 ` Borislav Petkov [this message]
2009-12-22 11:41 ` [PATCH 4/6] amd64_edac: fix forcing module load/unload Borislav Petkov
2009-12-22 11:41 ` [PATCH 5/6] amd64_edac: restrict PCI config space access Borislav Petkov
2009-12-22 11:41 ` [PATCH 6/6] edac, pci: remove pesky debug printk Borislav Petkov
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=1261482077-23733-4-git-send-email-borislav.petkov@amd.com \
--to=borislav.petkov@amd.com \
--cc=linux-kernel@vger.kernel.org \
--cc=norsk5@yahoo.com \
--cc=x86@kernel.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
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®