Lines Matching refs:data
194 salinfo_work_to_do(struct salinfo_data *data) in salinfo_work_to_do() argument
196 (void)(down_trylock(&data->mutex) ?: 0); in salinfo_work_to_do()
197 up(&data->mutex); in salinfo_work_to_do()
208 shift1_data_saved (struct salinfo_data *data, int shift) in shift1_data_saved() argument
210 memcpy(data->data_saved+shift, data->data_saved+shift+1, in shift1_data_saved()
211 (ARRAY_SIZE(data->data_saved) - (shift+1)) * sizeof(data->data_saved[0])); in shift1_data_saved()
212 memset(data->data_saved + ARRAY_SIZE(data->data_saved) - 1, 0, in shift1_data_saved()
213 sizeof(data->data_saved[0])); in shift1_data_saved()
230 struct salinfo_data *data = salinfo_data + type; in salinfo_log_wakeup() local
234 int saved_size = ARRAY_SIZE(data->data_saved); in salinfo_log_wakeup()
241 for (i = 0, data_saved = data->data_saved; i < saved_size; ++i, ++data_saved) { in salinfo_log_wakeup()
246 if (!data->saved_num) { in salinfo_log_wakeup()
247 shift1_data_saved(data, 0); in salinfo_log_wakeup()
248 data_saved = data->data_saved + saved_size - 1; in salinfo_log_wakeup()
259 cpumask_set_cpu(smp_processor_id(), &data->cpu_event); in salinfo_log_wakeup()
261 salinfo_work_to_do(data); in salinfo_log_wakeup()
272 salinfo_timeout_check(struct salinfo_data *data) in salinfo_timeout_check() argument
275 if (!data->open) in salinfo_timeout_check()
277 if (!cpumask_empty(&data->cpu_event)) { in salinfo_timeout_check()
279 salinfo_work_to_do(data); in salinfo_timeout_check()
305 struct salinfo_data *data = PDE_DATA(file_inode(file)); in salinfo_event_read() local
311 if (cpumask_empty(&data->cpu_event) && down_trylock(&data->mutex)) { in salinfo_event_read()
314 if (down_interruptible(&data->mutex)) in salinfo_event_read()
318 n = data->cpu_check; in salinfo_event_read()
320 if (cpumask_test_cpu(n, &data->cpu_event)) { in salinfo_event_read()
322 cpumask_clear_cpu(n, &data->cpu_event); in salinfo_event_read()
338 data->cpu_check = cpu; in salinfo_event_read()
339 if (++data->cpu_check == nr_cpu_ids) in salinfo_event_read()
340 data->cpu_check = 0; in salinfo_event_read()
362 struct salinfo_data *data = PDE_DATA(inode); in salinfo_log_open() local
368 if (data->open) { in salinfo_log_open()
372 data->open = 1; in salinfo_log_open()
375 if (data->state == STATE_NO_DATA && in salinfo_log_open()
376 !(data->log_buffer = vmalloc(ia64_sal_get_state_info_size(data->type)))) { in salinfo_log_open()
377 data->open = 0; in salinfo_log_open()
387 struct salinfo_data *data = PDE_DATA(inode); in salinfo_log_release() local
389 if (data->state == STATE_NO_DATA) { in salinfo_log_release()
390 vfree(data->log_buffer); in salinfo_log_release()
391 vfree(data->oemdata); in salinfo_log_release()
392 data->log_buffer = NULL; in salinfo_log_release()
393 data->oemdata = NULL; in salinfo_log_release()
396 data->open = 0; in salinfo_log_release()
413 struct salinfo_data *data = context; in salinfo_log_read_cpu() local
415 data->log_size = ia64_sal_get_state_info(data->type, (u64 *) data->log_buffer); in salinfo_log_read_cpu()
416 rh = (sal_log_record_header_t *)(data->log_buffer); in salinfo_log_read_cpu()
419 ia64_sal_clear_state_info(data->type); in salinfo_log_read_cpu()
423 salinfo_log_new_read(int cpu, struct salinfo_data *data) in salinfo_log_new_read() argument
428 int saved_size = ARRAY_SIZE(data->data_saved); in salinfo_log_new_read()
430 data->saved_num = 0; in salinfo_log_new_read()
433 for (i = 0, data_saved = data->data_saved; i < saved_size; ++i, ++data_saved) { in salinfo_log_new_read()
436 data->log_size = data_saved->size; in salinfo_log_new_read()
437 memcpy(data->log_buffer, rh, data->log_size); in salinfo_log_new_read()
440 data->saved_num = i+1; in salinfo_log_new_read()
444 shift1_data_saved(data, i); in salinfo_log_new_read()
450 if (!data->saved_num) in salinfo_log_new_read()
451 call_on_cpu(cpu, salinfo_log_read_cpu, data); in salinfo_log_new_read()
452 if (!data->log_size) { in salinfo_log_new_read()
453 data->state = STATE_NO_DATA; in salinfo_log_new_read()
454 cpumask_clear_cpu(cpu, &data->cpu_event); in salinfo_log_new_read()
456 data->state = STATE_LOG_RECORD; in salinfo_log_new_read()
463 struct salinfo_data *data = PDE_DATA(file_inode(file)); in salinfo_log_read() local
467 if (data->state == STATE_LOG_RECORD) { in salinfo_log_read()
468 buf = data->log_buffer; in salinfo_log_read()
469 bufsize = data->log_size; in salinfo_log_read()
470 } else if (data->state == STATE_OEMDATA) { in salinfo_log_read()
471 buf = data->oemdata; in salinfo_log_read()
472 bufsize = data->oemdata_size; in salinfo_log_read()
483 struct salinfo_data *data = context; in salinfo_log_clear_cpu() local
484 ia64_sal_clear_state_info(data->type); in salinfo_log_clear_cpu()
488 salinfo_log_clear(struct salinfo_data *data, int cpu) in salinfo_log_clear() argument
493 data->state = STATE_NO_DATA; in salinfo_log_clear()
494 if (!cpumask_test_cpu(cpu, &data->cpu_event)) { in salinfo_log_clear()
498 cpumask_clear_cpu(cpu, &data->cpu_event); in salinfo_log_clear()
499 if (data->saved_num) { in salinfo_log_clear()
500 shift1_data_saved(data, data->saved_num - 1); in salinfo_log_clear()
501 data->saved_num = 0; in salinfo_log_clear()
504 rh = (sal_log_record_header_t *)(data->log_buffer); in salinfo_log_clear()
507 call_on_cpu(cpu, salinfo_log_clear_cpu, data); in salinfo_log_clear()
509 salinfo_log_new_read(cpu, data); in salinfo_log_clear()
510 if (data->state == STATE_LOG_RECORD) { in salinfo_log_clear()
512 cpumask_set_cpu(cpu, &data->cpu_event); in salinfo_log_clear()
513 salinfo_work_to_do(data); in salinfo_log_clear()
522 struct salinfo_data *data = PDE_DATA(file_inode(file)); in salinfo_log_write() local
535 salinfo_log_new_read(cpu, data); in salinfo_log_write()
538 if ((ret = salinfo_log_clear(data, cpu))) in salinfo_log_write()
541 if (data->state != STATE_LOG_RECORD && data->state != STATE_OEMDATA) in salinfo_log_write()
543 if (offset > data->log_size - sizeof(efi_guid_t)) in salinfo_log_write()
545 data->state = STATE_OEMDATA; in salinfo_log_write()
548 .efi_guid = data->log_buffer + offset, in salinfo_log_write()
549 .oemdata = &data->oemdata, in salinfo_log_write()
550 .oemdata_size = &data->oemdata_size in salinfo_log_write()
556 data->oemdata_size = 0; in salinfo_log_write()
576 struct salinfo_data *data; in salinfo_cpu_callback() local
581 for (i = 0, data = salinfo_data; in salinfo_cpu_callback()
583 ++i, ++data) { in salinfo_cpu_callback()
584 cpumask_set_cpu(cpu, &data->cpu_event); in salinfo_cpu_callback()
585 salinfo_work_to_do(data); in salinfo_cpu_callback()
592 for (i = 0, data = salinfo_data; in salinfo_cpu_callback()
594 ++i, ++data) { in salinfo_cpu_callback()
597 for (j = ARRAY_SIZE(data->data_saved) - 1, data_saved = data->data_saved + j; in salinfo_cpu_callback()
601 shift1_data_saved(data, j); in salinfo_cpu_callback()
604 cpumask_clear_cpu(cpu, &data->cpu_event); in salinfo_cpu_callback()
624 struct salinfo_data *data; in salinfo_init() local
641 data = salinfo_data + i; in salinfo_init()
642 data->type = i; in salinfo_init()
643 sema_init(&data->mutex, 1); in salinfo_init()
649 &salinfo_event_fops, data); in salinfo_init()
655 &salinfo_data_fops, data); in salinfo_init()
662 cpumask_set_cpu(j, &data->cpu_event); in salinfo_init()
687 unsigned long data = (unsigned long)v; in proc_salinfo_show() local
688 seq_puts(m, (sal_platform_features & data) ? "1\n" : "0\n"); in proc_salinfo_show()