diff options
author | Linas Vepstas <linas@austin.ibm.com> | 2007-08-08 16:06:15 -0400 |
---|---|---|
committer | Paul Mackerras <paulus@samba.org> | 2007-08-16 21:01:52 -0400 |
commit | 79c0108d1b9db4864ab77b2a95dfa04f2dcf264c (patch) | |
tree | 861b770063674cdf7c4561b51dfabc4df4d13b85 /arch/powerpc/platforms/pseries/rtasd.c | |
parent | 72755f44075d34cdb9bc467c6cd9a229292b5aff (diff) |
[POWERPC] pseries: Fix jumbled no_logging flag
Get rid of the jumbled usage of the no_logging flag. Its use
spans several directories, and is incorrectly/misleadingly
documented. Instead, two changes:
1) nvram will accept error log as soon as its ready.
2) logging to nvram stops on the first fatal error reported.
Signed-off-by: Linas Vepstas <linas@austin.ibm.com>
----
arch/powerpc/kernel/nvram_64.c | 8 --------
arch/powerpc/platforms/pseries/rtasd.c | 14 ++++++--------
2 files changed, 6 insertions(+), 16 deletions(-)
Signed-off-by: Paul Mackerras <paulus@samba.org>
Diffstat (limited to 'arch/powerpc/platforms/pseries/rtasd.c')
-rw-r--r-- | arch/powerpc/platforms/pseries/rtasd.c | 14 |
1 files changed, 6 insertions, 8 deletions
diff --git a/arch/powerpc/platforms/pseries/rtasd.c b/arch/powerpc/platforms/pseries/rtasd.c index d902097646b7..b802a272bd29 100644 --- a/arch/powerpc/platforms/pseries/rtasd.c +++ b/arch/powerpc/platforms/pseries/rtasd.c | |||
@@ -53,7 +53,8 @@ static unsigned int rtas_event_scan_rate; | |||
53 | 53 | ||
54 | static int full_rtas_msgs = 0; | 54 | static int full_rtas_msgs = 0; |
55 | 55 | ||
56 | extern int no_logging; | 56 | /* Stop logging to nvram after first fatal error */ |
57 | static int no_more_logging; | ||
57 | 58 | ||
58 | volatile int error_log_cnt = 0; | 59 | volatile int error_log_cnt = 0; |
59 | 60 | ||
@@ -216,7 +217,7 @@ void pSeries_log_error(char *buf, unsigned int err_type, int fatal) | |||
216 | } | 217 | } |
217 | 218 | ||
218 | /* Write error to NVRAM */ | 219 | /* Write error to NVRAM */ |
219 | if (!no_logging && !(err_type & ERR_FLAG_BOOT)) | 220 | if (!no_more_logging && !(err_type & ERR_FLAG_BOOT)) |
220 | nvram_write_error_log(buf, len, err_type); | 221 | nvram_write_error_log(buf, len, err_type); |
221 | 222 | ||
222 | /* | 223 | /* |
@@ -228,8 +229,8 @@ void pSeries_log_error(char *buf, unsigned int err_type, int fatal) | |||
228 | printk_log_rtas(buf, len); | 229 | printk_log_rtas(buf, len); |
229 | 230 | ||
230 | /* Check to see if we need to or have stopped logging */ | 231 | /* Check to see if we need to or have stopped logging */ |
231 | if (fatal || no_logging) { | 232 | if (fatal || no_more_logging) { |
232 | no_logging = 1; | 233 | no_more_logging = 1; |
233 | spin_unlock_irqrestore(&rtasd_log_lock, s); | 234 | spin_unlock_irqrestore(&rtasd_log_lock, s); |
234 | return; | 235 | return; |
235 | } | 236 | } |
@@ -301,7 +302,7 @@ static ssize_t rtas_log_read(struct file * file, char __user * buf, | |||
301 | 302 | ||
302 | spin_lock_irqsave(&rtasd_log_lock, s); | 303 | spin_lock_irqsave(&rtasd_log_lock, s); |
303 | /* if it's 0, then we know we got the last one (the one in NVRAM) */ | 304 | /* if it's 0, then we know we got the last one (the one in NVRAM) */ |
304 | if (rtas_log_size == 0 && !no_logging) | 305 | if (rtas_log_size == 0 && !no_more_logging) |
305 | nvram_clear_error_log(); | 306 | nvram_clear_error_log(); |
306 | spin_unlock_irqrestore(&rtasd_log_lock, s); | 307 | spin_unlock_irqrestore(&rtasd_log_lock, s); |
307 | 308 | ||
@@ -413,9 +414,6 @@ static int rtasd(void *unused) | |||
413 | memset(logdata, 0, rtas_error_log_max); | 414 | memset(logdata, 0, rtas_error_log_max); |
414 | rc = nvram_read_error_log(logdata, rtas_error_log_max, &err_type); | 415 | rc = nvram_read_error_log(logdata, rtas_error_log_max, &err_type); |
415 | 416 | ||
416 | /* We can use rtas_log_buf now */ | ||
417 | no_logging = 0; | ||
418 | |||
419 | if (!rc) { | 417 | if (!rc) { |
420 | if (err_type != ERR_FLAG_ALREADY_LOGGED) { | 418 | if (err_type != ERR_FLAG_ALREADY_LOGGED) { |
421 | pSeries_log_error(logdata, err_type | ERR_FLAG_BOOT, 0); | 419 | pSeries_log_error(logdata, err_type | ERR_FLAG_BOOT, 0); |