Lines Matching full:record
120 struct pstore_record *record) in ramoops_get_next_prz() argument
139 record->type = prz->type; in ramoops_get_next_prz()
140 record->id = id; in ramoops_get_next_prz()
178 static ssize_t ramoops_pstore_read(struct pstore_record *record) in ramoops_pstore_read() argument
181 struct ramoops_context *cxt = record->psi->data; in ramoops_pstore_read()
191 record->time.tv_sec = 0; in ramoops_pstore_read()
192 record->time.tv_nsec = 0; in ramoops_pstore_read()
193 record->compressed = false; in ramoops_pstore_read()
198 record); in ramoops_pstore_read()
202 &record->time, in ramoops_pstore_read()
203 &record->compressed); in ramoops_pstore_read()
204 /* Clear and skip this DMESG record if it has no valid header */ in ramoops_pstore_read()
213 prz = ramoops_get_next_prz(&cxt->cprz, 0 /* single */, record); in ramoops_pstore_read()
216 prz = ramoops_get_next_prz(&cxt->mprz, 0 /* single */, record); in ramoops_pstore_read()
223 record); in ramoops_pstore_read()
226 * Build a new dummy record which combines all the in ramoops_pstore_read()
240 cxt->ftrace_read_cnt++, record); in ramoops_pstore_read()
258 record->id = 0; in ramoops_pstore_read()
270 record->ecc_notice_size = persistent_ram_ecc_string(prz, NULL, 0); in ramoops_pstore_read()
272 record->buf = kvzalloc(size + record->ecc_notice_size + 1, GFP_KERNEL); in ramoops_pstore_read()
273 if (record->buf == NULL) { in ramoops_pstore_read()
278 memcpy(record->buf, (char *)persistent_ram_old(prz) + header_length, in ramoops_pstore_read()
281 persistent_ram_ecc_string(prz, record->buf + size, in ramoops_pstore_read()
282 record->ecc_notice_size + 1); in ramoops_pstore_read()
294 struct pstore_record *record) in ramoops_write_kmsg_hdr() argument
301 (time64_t)record->time.tv_sec, in ramoops_write_kmsg_hdr()
302 record->time.tv_nsec / 1000, in ramoops_write_kmsg_hdr()
303 record->compressed ? 'C' : 'D'); in ramoops_write_kmsg_hdr()
309 static int notrace ramoops_pstore_write(struct pstore_record *record) in ramoops_pstore_write() argument
311 struct ramoops_context *cxt = record->psi->data; in ramoops_pstore_write()
315 if (record->type == PSTORE_TYPE_CONSOLE) { in ramoops_pstore_write()
318 persistent_ram_write(cxt->cprz, record->buf, record->size); in ramoops_pstore_write()
320 } else if (record->type == PSTORE_TYPE_FTRACE) { in ramoops_pstore_write()
333 persistent_ram_write(cxt->fprzs[zonenum], record->buf, in ramoops_pstore_write()
334 record->size); in ramoops_pstore_write()
336 } else if (record->type == PSTORE_TYPE_PMSG) { in ramoops_pstore_write()
341 if (record->type != PSTORE_TYPE_DMESG) in ramoops_pstore_write()
345 * We could filter on record->reason here if we wanted to (which in ramoops_pstore_write()
360 if (record->part != 1) in ramoops_pstore_write()
379 /* Build header and append record contents. */ in ramoops_pstore_write()
380 hlen = ramoops_write_kmsg_hdr(prz, record); in ramoops_pstore_write()
384 size = record->size; in ramoops_pstore_write()
387 persistent_ram_write(prz, record->buf, size); in ramoops_pstore_write()
394 static int notrace ramoops_pstore_write_user(struct pstore_record *record, in ramoops_pstore_write_user() argument
397 if (record->type == PSTORE_TYPE_PMSG) { in ramoops_pstore_write_user()
398 struct ramoops_context *cxt = record->psi->data; in ramoops_pstore_write_user()
402 return persistent_ram_write_user(cxt->mprz, buf, record->size); in ramoops_pstore_write_user()
408 static int ramoops_pstore_erase(struct pstore_record *record) in ramoops_pstore_erase() argument
410 struct ramoops_context *cxt = record->psi->data; in ramoops_pstore_erase()
413 switch (record->type) { in ramoops_pstore_erase()
415 if (record->id >= cxt->max_dump_cnt) in ramoops_pstore_erase()
417 prz = cxt->dprzs[record->id]; in ramoops_pstore_erase()
423 if (record->id >= cxt->max_ftrace_cnt) in ramoops_pstore_erase()
425 prz = cxt->fprzs[record->id]; in ramoops_pstore_erase()
501 * If we have a negative record size, calculate it based on in ramoops_init_przs()
502 * mem_sz / *cnt. If we have a positive record size, calculate in ramoops_init_przs()
510 dev_err(dev, "%s record size == 0 (%zu / %u)\n", in ramoops_init_przs()
517 dev_err(dev, "%s record count == 0 (%zu / %zu)\n", in ramoops_init_przs()
686 parse_u32("record-size", pdata->record_size, 0); in ramoops_parse_dt()
698 * console_size and pmsg_size to the record size since that's in ramoops_parse_dt()
756 pr_err("The memory size and the record/console size must be " in ramoops_probe()
833 * must match the size of the dprz record (after PRZ header in ramoops_probe()