spapr_nvram.c (3b35d4542c8537a9269f6372df531ced6c960084) | spapr_nvram.c (a9262f551eba44d4d0f9e396d7124c059a93e204) |
---|---|
1/* 2 * QEMU sPAPR NVRAM emulation 3 * 4 * Copyright (C) 2012 David Gibson, IBM Corporation. 5 * 6 * Permission is hereby granted, free of charge, to any person obtaining a copy 7 * of this software and associated documentation files (the "Software"), to deal 8 * in the Software without restriction, including without limitation the rights --- 116 unchanged lines hidden (view full) --- 125 rtas_st(rets, 0, RTAS_OUT_PARAM_ERROR); 126 return; 127 } 128 129 membuf = cpu_physical_memory_map(buffer, &len, false); 130 131 ret = 0; 132 if (nvram->blk) { | 1/* 2 * QEMU sPAPR NVRAM emulation 3 * 4 * Copyright (C) 2012 David Gibson, IBM Corporation. 5 * 6 * Permission is hereby granted, free of charge, to any person obtaining a copy 7 * of this software and associated documentation files (the "Software"), to deal 8 * in the Software without restriction, including without limitation the rights --- 116 unchanged lines hidden (view full) --- 125 rtas_st(rets, 0, RTAS_OUT_PARAM_ERROR); 126 return; 127 } 128 129 membuf = cpu_physical_memory_map(buffer, &len, false); 130 131 ret = 0; 132 if (nvram->blk) { |
133 ret = blk_pwrite(nvram->blk, offset, membuf, len, 0); | 133 ret = blk_pwrite(nvram->blk, offset, len, membuf, 0); |
134 } 135 136 assert(nvram->buf); 137 memcpy(nvram->buf + offset, membuf, len); 138 139 cpu_physical_memory_unmap(membuf, len, 0, len); 140 141 rtas_st(rets, 0, (ret < 0) ? RTAS_OUT_HW_ERROR : RTAS_OUT_SUCCESS); --- 32 unchanged lines hidden (view full) --- 174 error_setg(errp, 175 "spapr-nvram must be between %" PRId64 176 " and %" PRId64 " bytes in size", 177 MIN_NVRAM_SIZE, MAX_NVRAM_SIZE); 178 return; 179 } 180 181 if (nvram->blk) { | 134 } 135 136 assert(nvram->buf); 137 memcpy(nvram->buf + offset, membuf, len); 138 139 cpu_physical_memory_unmap(membuf, len, 0, len); 140 141 rtas_st(rets, 0, (ret < 0) ? RTAS_OUT_HW_ERROR : RTAS_OUT_SUCCESS); --- 32 unchanged lines hidden (view full) --- 174 error_setg(errp, 175 "spapr-nvram must be between %" PRId64 176 " and %" PRId64 " bytes in size", 177 MIN_NVRAM_SIZE, MAX_NVRAM_SIZE); 178 return; 179 } 180 181 if (nvram->blk) { |
182 ret = blk_pread(nvram->blk, 0, nvram->buf, nvram->size, 0); | 182 ret = blk_pread(nvram->blk, 0, nvram->size, nvram->buf, 0); |
183 184 if (ret < 0) { 185 error_setg(errp, "can't read spapr-nvram contents"); 186 return; 187 } 188 } else if (nb_prom_envs > 0) { 189 /* Create a system partition to pass the -prom-env variables */ 190 chrp_nvram_create_system_partition(nvram->buf, MIN_NVRAM_SIZE / 4, --- 28 unchanged lines hidden (view full) --- 219{ 220 SpaprNvram *nvram = opaque; 221 222 /* This is called after bdrv_activate_all. */ 223 224 qemu_del_vm_change_state_handler(nvram->vmstate); 225 nvram->vmstate = NULL; 226 | 183 184 if (ret < 0) { 185 error_setg(errp, "can't read spapr-nvram contents"); 186 return; 187 } 188 } else if (nb_prom_envs > 0) { 189 /* Create a system partition to pass the -prom-env variables */ 190 chrp_nvram_create_system_partition(nvram->buf, MIN_NVRAM_SIZE / 4, --- 28 unchanged lines hidden (view full) --- 219{ 220 SpaprNvram *nvram = opaque; 221 222 /* This is called after bdrv_activate_all. */ 223 224 qemu_del_vm_change_state_handler(nvram->vmstate); 225 nvram->vmstate = NULL; 226 |
227 blk_pwrite(nvram->blk, 0, nvram->buf, nvram->size, 0); | 227 blk_pwrite(nvram->blk, 0, nvram->size, nvram->buf, 0); |
228} 229 230static int spapr_nvram_post_load(void *opaque, int version_id) 231{ 232 SpaprNvram *nvram = VIO_SPAPR_NVRAM(opaque); 233 234 if (nvram->blk) { 235 nvram->vmstate = qemu_add_vm_change_state_handler(postload_update_cb, --- 55 unchanged lines hidden --- | 228} 229 230static int spapr_nvram_post_load(void *opaque, int version_id) 231{ 232 SpaprNvram *nvram = VIO_SPAPR_NVRAM(opaque); 233 234 if (nvram->blk) { 235 nvram->vmstate = qemu_add_vm_change_state_handler(postload_update_cb, --- 55 unchanged lines hidden --- |