diff options
author | Borislav Petkov <borislav.petkov@amd.com> | 2010-05-25 12:21:07 -0400 |
---|---|---|
committer | Borislav Petkov <borislav.petkov@amd.com> | 2010-08-03 10:14:06 -0400 |
commit | eba042a81edd6baaff44831b2d719b14a6d21e58 (patch) | |
tree | a1e768aadf18708114e2d6c4d4a54b3af49e42e9 /drivers/edac/i5100_edac.c | |
parent | bc57117856cf1e581135810b37d3b75f9d1749f5 (diff) |
edac, mc: Improve scrub rate handling
Fortify the interface to not accept negative values, remove
memctrl_int_store() as a result. Also, sanitize bandwidth setting by
making the argument a simple u32 instead of strange u32 pointer being
passed around for no obvious reason. Then, fix error handling and teach
it to return proper error values. Finally, make code more readable,
simplify debug messages.
Cc: Mauro Carvalho Chehab <mchehab@redhat.com>
Cc: Arthur Jones <ajones@riverbed.com>
Signed-off-by: Borislav Petkov <borislav.petkov@amd.com>
Acked-by: Doug Thompson <dougthompson@xmission.com>
Diffstat (limited to 'drivers/edac/i5100_edac.c')
-rw-r--r-- | drivers/edac/i5100_edac.c | 7 |
1 files changed, 3 insertions, 4 deletions
diff --git a/drivers/edac/i5100_edac.c b/drivers/edac/i5100_edac.c index ee9753cf362c..f459a6c0886b 100644 --- a/drivers/edac/i5100_edac.c +++ b/drivers/edac/i5100_edac.c | |||
@@ -589,14 +589,13 @@ static void i5100_refresh_scrubbing(struct work_struct *work) | |||
589 | /* | 589 | /* |
590 | * The bandwidth is based on experimentation, feel free to refine it. | 590 | * The bandwidth is based on experimentation, feel free to refine it. |
591 | */ | 591 | */ |
592 | static int i5100_set_scrub_rate(struct mem_ctl_info *mci, | 592 | static int i5100_set_scrub_rate(struct mem_ctl_info *mci, u32 bandwidth) |
593 | u32 *bandwidth) | ||
594 | { | 593 | { |
595 | struct i5100_priv *priv = mci->pvt_info; | 594 | struct i5100_priv *priv = mci->pvt_info; |
596 | u32 dw; | 595 | u32 dw; |
597 | 596 | ||
598 | pci_read_config_dword(priv->mc, I5100_MC, &dw); | 597 | pci_read_config_dword(priv->mc, I5100_MC, &dw); |
599 | if (*bandwidth) { | 598 | if (bandwidth) { |
600 | priv->scrub_enable = 1; | 599 | priv->scrub_enable = 1; |
601 | dw |= I5100_MC_SCRBEN_MASK; | 600 | dw |= I5100_MC_SCRBEN_MASK; |
602 | schedule_delayed_work(&(priv->i5100_scrubbing), | 601 | schedule_delayed_work(&(priv->i5100_scrubbing), |
@@ -610,7 +609,7 @@ static int i5100_set_scrub_rate(struct mem_ctl_info *mci, | |||
610 | 609 | ||
611 | pci_read_config_dword(priv->mc, I5100_MC, &dw); | 610 | pci_read_config_dword(priv->mc, I5100_MC, &dw); |
612 | 611 | ||
613 | *bandwidth = 5900000 * i5100_mc_scrben(dw); | 612 | bandwidth = 5900000 * i5100_mc_scrben(dw); |
614 | 613 | ||
615 | return 0; | 614 | return 0; |
616 | } | 615 | } |