Lines Matching refs:dump

32 	ssize_t (*show)(struct dump_obj *dump, struct dump_attribute *attr,
34 ssize_t (*store)(struct dump_obj *dump, struct dump_attribute *attr,
69 return sprintf(buf, "ack - acknowledge dump\n");
102 /* Attributes of a dump
103 * The binary attribute of the dump itself is dynamic
104 * due to the dynamic size of the dump
117 return sprintf(buf, "1 - initiate Service Processor(FSP) dump\n");
126 pr_warn("%s: Failed to initiate FSP dump (%d)\n",
140 pr_info("%s: Initiated FSP dump\n", __func__);
164 struct dump_obj *dump;
167 dump = to_dump_obj(kobj);
172 return attribute->show(dump, attribute, buf);
180 struct dump_obj *dump;
183 dump = to_dump_obj(kobj);
188 return attribute->store(dump, attribute, buf, len);
198 struct dump_obj *dump;
200 dump = to_dump_obj(kobj);
201 vfree(dump->buffer);
202 kfree(dump);
231 pr_warn("%s: Failed to get dump info (%d)\n",
243 static int64_t dump_read_data(struct dump_obj *dump)
250 dump->buffer = vzalloc(PAGE_ALIGN(dump->size));
251 if (!dump->buffer) {
258 list = opal_vmalloc_to_sg_list(dump->buffer, dump->size);
270 rc = opal_dump_read(dump->id, addr);
278 pr_warn("%s: Extract dump failed for ID 0x%x\n",
279 __func__, dump->id);
294 struct dump_obj *dump = to_dump_obj(kobj);
296 if (!dump->buffer) {
297 rc = dump_read_data(dump);
300 vfree(dump->buffer);
301 dump->buffer = NULL;
310 pr_info("%s: Platform dump partially read. ID = 0x%x\n",
311 __func__, dump->id);
316 memcpy(buffer, dump->buffer + pos, count);
318 /* You may think we could free the dump buffer now and retrieve
321 * we keep the dump around until it's acknowledged by userspace.
329 struct dump_obj *dump;
332 dump = kzalloc(sizeof(*dump), GFP_KERNEL);
333 if (!dump)
336 dump->kobj.kset = dump_kset;
338 kobject_init(&dump->kobj, &dump_ktype);
340 sysfs_bin_attr_init(&dump->dump_attr);
342 dump->dump_attr.attr.name = "dump";
343 dump->dump_attr.attr.mode = 0400;
344 dump->dump_attr.size = size;
345 dump->dump_attr.read = dump_attr_read;
347 dump->id = id;
348 dump->size = size;
349 dump->type = type;
351 rc = kobject_add(&dump->kobj, NULL, "0x%x-0x%x", type, id);
353 kobject_put(&dump->kobj);
358 * As soon as the sysfs file for this dump is created/activated there is
360 * acknowledge the dump before kobject_uevent() is called. If that
372 kobject_get(&dump->kobj);
373 rc = sysfs_create_bin_file(&dump->kobj, &dump->dump_attr);
375 kobject_uevent(&dump->kobj, KOBJ_ADD);
377 pr_info("%s: New platform dump. ID = 0x%x Size %u\n",
378 __func__, dump->id, dump->size);
381 kobject_put(&dump->kobj);
385 kobject_put(&dump->kobj);
427 dump_kset = kset_create_and_add("dump", NULL, opal_kobj);
429 pr_warn("%s: Failed to create dump kset\n", __func__);
435 pr_warn("%s: Failed to create initiate dump attr group\n",
450 "opal-dump", NULL);