Skip to content

Commit

Permalink
---
Browse files Browse the repository at this point in the history
yaml
---
r: 67194
b: refs/heads/master
c: 4511dad
h: refs/heads/master
v: v3
  • Loading branch information
Linas Vepstas authored and Paul Mackerras committed Aug 17, 2007
1 parent ba3b80b commit 6a39a72
Show file tree
Hide file tree
Showing 2 changed files with 20 additions and 35 deletions.
2 changes: 1 addition & 1 deletion [refs]
Original file line number Diff line number Diff line change
@@ -1,2 +1,2 @@
---
refs/heads/master: ba28cc09316510aacb17f8421fdaae37969a4d5b
refs/heads/master: 4511dad42a8da41fc2f5a58066c519c2228896ac
53 changes: 19 additions & 34 deletions trunk/arch/powerpc/platforms/pseries/rtasd.c
Original file line number Diff line number Diff line change
Expand Up @@ -64,8 +64,6 @@ volatile int error_log_cnt = 0;
*/
static unsigned char logdata[RTAS_ERROR_LOG_MAX];

static int get_eventscan_parms(void);

static char *rtas_type[] = {
"Unknown", "Retry", "TCE Error", "Internal Device Failure",
"Timeout", "Data Parity", "Address Parity", "Cache Parity",
Expand Down Expand Up @@ -169,9 +167,9 @@ static int log_rtas_len(char * buf)
len += err->extended_log_length;
}

if (rtas_error_log_max == 0) {
get_eventscan_parms();
}
if (rtas_error_log_max == 0)
rtas_error_log_max = rtas_get_error_log_max();

if (len > rtas_error_log_max)
len = rtas_error_log_max;

Expand Down Expand Up @@ -359,22 +357,6 @@ static int enable_surveillance(int timeout)
return -1;
}

static int get_eventscan_parms(void)
{
rtas_event_scan_rate = rtas_token("rtas-event-scan-rate");
if (rtas_event_scan_rate == RTAS_UNKNOWN_SERVICE) {
printk(KERN_ERR "rtasd: no rtas-event-scan-rate\n");
return -1;
}
DEBUG("rtas-event-scan-rate %d\n", rtas_event_scan_rate);

/* Make room for the sequence number */
rtas_error_log_max = rtas_get_error_log_max();
rtas_error_log_buffer_max = rtas_error_log_max + sizeof(int);

return 0;
}

static void do_event_scan(void)
{
int error;
Expand Down Expand Up @@ -424,22 +406,11 @@ static int rtasd(void *unused)

daemonize("rtasd");

if (get_eventscan_parms() == -1)
goto error;

rtas_log_buf = vmalloc(rtas_error_log_buffer_max*LOG_NUMBER);
if (!rtas_log_buf) {
printk(KERN_ERR "rtasd: no memory\n");
goto error;
}

printk(KERN_DEBUG "RTAS daemon started\n");

DEBUG("will sleep for %d milliseconds\n", (30000/rtas_event_scan_rate));

/* See if we have any error stored in NVRAM */
memset(logdata, 0, rtas_error_log_max);

rc = nvram_read_error_log(logdata, rtas_error_log_max, &err_type);

/* We can use rtas_log_buf now */
Expand All @@ -466,8 +437,6 @@ static int rtasd(void *unused)
for (;;)
do_event_scan_all_cpus(30000/rtas_event_scan_rate);

error:
/* Should delete proc entries */
return -EINVAL;
}

Expand All @@ -485,6 +454,22 @@ static int __init rtas_init(void)
return -ENODEV;
}

rtas_event_scan_rate = rtas_token("rtas-event-scan-rate");
if (rtas_event_scan_rate == RTAS_UNKNOWN_SERVICE) {
printk(KERN_ERR "rtasd: no rtas-event-scan-rate on system\n");
return -ENODEV;
}

/* Make room for the sequence number */
rtas_error_log_max = rtas_get_error_log_max();
rtas_error_log_buffer_max = rtas_error_log_max + sizeof(int);

rtas_log_buf = vmalloc(rtas_error_log_buffer_max*LOG_NUMBER);
if (!rtas_log_buf) {
printk(KERN_ERR "rtasd: no memory\n");
return -ENOMEM;
}

entry = create_proc_entry("ppc64/rtas/error_log", S_IRUSR, NULL);
if (entry)
entry->proc_fops = &proc_rtas_log_operations;
Expand Down

0 comments on commit 6a39a72

Please sign in to comment.