Lines Matching refs:part
191 int nvram_write_os_partition(struct nvram_os_partition *part, in nvram_write_os_partition() argument
200 if (part->index == -1) in nvram_write_os_partition()
203 if (length > part->size) in nvram_write_os_partition()
204 length = part->size; in nvram_write_os_partition()
209 tmp_index = part->index; in nvram_write_os_partition()
231 int nvram_read_partition(struct nvram_os_partition *part, char *buff, in nvram_read_partition() argument
239 if (part->index == -1) in nvram_read_partition()
242 if (length > part->size) in nvram_read_partition()
243 length = part->size; in nvram_read_partition()
245 tmp_index = part->index; in nvram_read_partition()
247 if (part->os_partition) { in nvram_read_partition()
263 if (part->os_partition) { in nvram_read_partition()
288 int __init nvram_init_os_partition(struct nvram_os_partition *part) in nvram_init_os_partition() argument
294 p = nvram_find_partition(part->name, NVRAM_SIG_OS, &size); in nvram_init_os_partition()
297 if (p && size < part->min_size) { in nvram_init_os_partition()
299 " removing it...\n", part->name); in nvram_init_os_partition()
300 nvram_remove_partition(part->name, NVRAM_SIG_OS, NULL); in nvram_init_os_partition()
306 p = nvram_create_partition(part->name, NVRAM_SIG_OS, in nvram_init_os_partition()
307 part->req_size, part->min_size); in nvram_init_os_partition()
311 part->name); in nvram_init_os_partition()
314 p = nvram_create_partition(part->name, NVRAM_SIG_OS, in nvram_init_os_partition()
315 part->req_size, part->min_size); in nvram_init_os_partition()
321 " partition, err %d\n", part->name, (int)p); in nvram_init_os_partition()
325 part->index = p; in nvram_init_os_partition()
326 part->size = nvram_get_partition_size(p) - sizeof(struct err_log_info); in nvram_init_os_partition()
409 u64 *id, unsigned int part, int count, in nvram_pstore_write() argument
418 if (part > 1 || (type != PSTORE_TYPE_DMESG)) in nvram_pstore_write()
437 *id = part; in nvram_pstore_write()
452 struct nvram_os_partition *part = NULL; in nvram_pstore_read() local
461 part = &oops_log_partition; in nvram_pstore_read()
466 part = &common_partition; in nvram_pstore_read()
474 part = &rtas_log_partition; in nvram_pstore_read()
481 part = &of_config_partition; in nvram_pstore_read()
491 part = &skiboot_partition; in nvram_pstore_read()
502 if (!part->os_partition) { in nvram_pstore_read()
503 p = nvram_find_partition(part->name, sig, &size); in nvram_pstore_read()
506 "err %d\n", part->name, (int)p); in nvram_pstore_read()
509 part->index = p; in nvram_pstore_read()
510 part->size = size; in nvram_pstore_read()
513 buff = kmalloc(part->size, GFP_KERNEL); in nvram_pstore_read()
518 if (nvram_read_partition(part, buff, part->size, &err_type, &id_no)) { in nvram_pstore_read()
525 if (part->os_partition) in nvram_pstore_read()
557 return part->size; in nvram_pstore_read()
846 int part, offset; in dev_nvram_ioctl() local
850 if (copy_from_user(&part, (void __user*)arg, sizeof(part)) != 0) in dev_nvram_ioctl()
852 if (part < pmac_nvram_OF || part > pmac_nvram_NR) in dev_nvram_ioctl()
854 offset = pmac_get_partition(part); in dev_nvram_ioctl()
899 static int __init nvram_write_header(struct nvram_partition * part) in nvram_write_header() argument
905 memcpy(&phead, &part->header, NVRAM_HEADER_LEN); in nvram_write_header()
908 tmp_index = part->index; in nvram_write_header()
933 static int nvram_can_remove_partition(struct nvram_partition *part, in nvram_can_remove_partition() argument
936 if (part->header.signature != sig) in nvram_can_remove_partition()
939 if (strncmp(name, part->header.name, 12)) in nvram_can_remove_partition()
944 if (!strncmp(*except, part->header.name, 12)) in nvram_can_remove_partition()
963 struct nvram_partition *part, *prev, *tmp; in nvram_remove_partition() local
966 list_for_each_entry(part, &nvram_partitions, partition) { in nvram_remove_partition()
967 if (!nvram_can_remove_partition(part, name, sig, exceptions)) in nvram_remove_partition()
971 part->header.signature = NVRAM_SIG_FREE; in nvram_remove_partition()
972 strncpy(part->header.name, "wwwwwwwwwwww", 12); in nvram_remove_partition()
973 part->header.checksum = nvram_checksum(&part->header); in nvram_remove_partition()
974 rc = nvram_write_header(part); in nvram_remove_partition()
983 list_for_each_entry_safe(part, tmp, &nvram_partitions, partition) { in nvram_remove_partition()
984 if (part->header.signature != NVRAM_SIG_FREE) { in nvram_remove_partition()
989 prev->header.length += part->header.length; in nvram_remove_partition()
990 prev->header.checksum = nvram_checksum(&part->header); in nvram_remove_partition()
991 rc = nvram_write_header(part); in nvram_remove_partition()
996 list_del(&part->partition); in nvram_remove_partition()
997 kfree(part); in nvram_remove_partition()
999 prev = part; in nvram_remove_partition()
1021 struct nvram_partition *part; in nvram_create_partition() local
1047 list_for_each_entry(part, &nvram_partitions, partition) { in nvram_create_partition()
1048 if (part->header.signature != NVRAM_SIG_FREE) in nvram_create_partition()
1051 if (part->header.length >= req_size) { in nvram_create_partition()
1053 free_part = part; in nvram_create_partition()
1056 if (part->header.length > size && in nvram_create_partition()
1057 part->header.length >= min_size) { in nvram_create_partition()
1058 size = part->header.length; in nvram_create_partition()
1059 free_part = part; in nvram_create_partition()
1125 struct nvram_partition *part; in nvram_get_partition_size() local
1127 list_for_each_entry(part, &nvram_partitions, partition) { in nvram_get_partition_size()
1128 if (part->index + NVRAM_HEADER_LEN == data_index) in nvram_get_partition_size()
1129 return (part->header.length - 1) * NVRAM_BLOCK_LEN; in nvram_get_partition_size()