[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Qemu-ppc] [PATCH v5 12/12] pc-dimm: get_memory_region() will not fail a
From: |
David Hildenbrand |
Subject: |
[Qemu-ppc] [PATCH v5 12/12] pc-dimm: get_memory_region() will not fail after realize |
Date: |
Tue, 19 Jun 2018 15:41:41 +0200 |
Let's try to reduce error handling a bit. In the plug/unplug case, the
device was realized and therefore we can assume that getting access to
the memory region will not fail.
For get_vmstate_memory_region() this is already handled that way.
Document both cases.
Reviewed-by: Igor Mammedov <address@hidden>
Reviewed-by: David Gibson <address@hidden>
Signed-off-by: David Hildenbrand <address@hidden>
---
hw/i386/pc.c | 7 +------
hw/mem/pc-dimm.c | 7 +------
hw/ppc/spapr.c | 12 ++----------
include/hw/mem/pc-dimm.h | 6 ++++--
4 files changed, 8 insertions(+), 24 deletions(-)
diff --git a/hw/i386/pc.c b/hw/i386/pc.c
index 2db032a6df..f310040351 100644
--- a/hw/i386/pc.c
+++ b/hw/i386/pc.c
@@ -1706,15 +1706,10 @@ static void pc_memory_plug(HotplugHandler *hotplug_dev,
PCMachineClass *pcmc = PC_MACHINE_GET_CLASS(pcms);
PCDIMMDevice *dimm = PC_DIMM(dev);
PCDIMMDeviceClass *ddc = PC_DIMM_GET_CLASS(dimm);
- MemoryRegion *mr;
+ MemoryRegion *mr = ddc->get_memory_region(dimm, &error_abort);
uint64_t align = TARGET_PAGE_SIZE;
bool is_nvdimm = object_dynamic_cast(OBJECT(dev), TYPE_NVDIMM);
- mr = ddc->get_memory_region(dimm, &local_err);
- if (local_err) {
- goto out;
- }
-
if (memory_region_get_alignment(mr) && pcmc->enforce_aligned_dimm) {
align = memory_region_get_alignment(mr);
}
diff --git a/hw/mem/pc-dimm.c b/hw/mem/pc-dimm.c
index 4ff39b59ef..65843bc52a 100644
--- a/hw/mem/pc-dimm.c
+++ b/hw/mem/pc-dimm.c
@@ -37,15 +37,10 @@ void pc_dimm_plug(DeviceState *dev, MachineState *machine,
uint64_t align,
PCDIMMDeviceClass *ddc = PC_DIMM_GET_CLASS(dimm);
MemoryRegion *vmstate_mr = ddc->get_vmstate_memory_region(dimm,
&error_abort);
+ MemoryRegion *mr = ddc->get_memory_region(dimm, &error_abort);
Error *local_err = NULL;
- MemoryRegion *mr;
uint64_t addr;
- mr = ddc->get_memory_region(dimm, &local_err);
- if (local_err) {
- goto out;
- }
-
addr = object_property_get_uint(OBJECT(dimm),
PC_DIMM_ADDR_PROP, &local_err);
if (local_err) {
diff --git a/hw/ppc/spapr.c b/hw/ppc/spapr.c
index 4250a3c9b8..74d1d23506 100644
--- a/hw/ppc/spapr.c
+++ b/hw/ppc/spapr.c
@@ -3148,14 +3148,10 @@ static void spapr_memory_plug(HotplugHandler
*hotplug_dev, DeviceState *dev,
sPAPRMachineState *ms = SPAPR_MACHINE(hotplug_dev);
PCDIMMDevice *dimm = PC_DIMM(dev);
PCDIMMDeviceClass *ddc = PC_DIMM_GET_CLASS(dimm);
- MemoryRegion *mr;
+ MemoryRegion *mr = ddc->get_memory_region(dimm, &error_abort);
uint64_t align, size, addr;
uint32_t node;
- mr = ddc->get_memory_region(dimm, &local_err);
- if (local_err) {
- goto out;
- }
align = memory_region_get_alignment(mr);
size = memory_region_size(mr);
@@ -3346,16 +3342,12 @@ static void spapr_memory_unplug_request(HotplugHandler
*hotplug_dev,
Error *local_err = NULL;
PCDIMMDevice *dimm = PC_DIMM(dev);
PCDIMMDeviceClass *ddc = PC_DIMM_GET_CLASS(dimm);
- MemoryRegion *mr;
+ MemoryRegion *mr = ddc->get_memory_region(dimm, &error_abort);
uint32_t nr_lmbs;
uint64_t size, addr_start, addr;
int i;
sPAPRDRConnector *drc;
- mr = ddc->get_memory_region(dimm, &local_err);
- if (local_err) {
- goto out;
- }
size = memory_region_size(mr);
nr_lmbs = size / SPAPR_MEMORY_BLOCK_SIZE;
diff --git a/include/hw/mem/pc-dimm.h b/include/hw/mem/pc-dimm.h
index 5679a80465..26ebb7d5e9 100644
--- a/include/hw/mem/pc-dimm.h
+++ b/include/hw/mem/pc-dimm.h
@@ -62,9 +62,11 @@ typedef struct PCDIMMDevice {
* @realize: called after common dimm is realized so that the dimm based
* devices get the chance to do specified operations.
* @get_memory_region: returns #MemoryRegion associated with @dimm which
- * is directly mapped into the physical address space of guest.
+ * is directly mapped into the physical address space of guest. Will not
+ * fail after the device was realized.
* @get_vmstate_memory_region: returns #MemoryRegion which indicates the
- * memory of @dimm should be kept during live migration.
+ * memory of @dimm should be kept during live migration. Will not fail
+ * after the device was realized.
*/
typedef struct PCDIMMDeviceClass {
/* private */
--
2.17.1
- [Qemu-ppc] [PATCH v5 01/12] pc-dimm: remove leftover "struct pc_dimms_capacity", (continued)
- [Qemu-ppc] [PATCH v5 01/12] pc-dimm: remove leftover "struct pc_dimms_capacity", David Hildenbrand, 2018/06/19
- [Qemu-ppc] [PATCH v5 03/12] pc-dimm: rename pc_dimm_memory_* to pc_dimm_*, David Hildenbrand, 2018/06/19
- [Qemu-ppc] [PATCH v5 02/12] pc: rename pc_dimm_(plug|unplug|...)* into pc_memory_(plug|unplug|...)*, David Hildenbrand, 2018/06/19
- [Qemu-ppc] [PATCH v5 04/12] pc-dimm: remove pc_dimm_get_free_slot() from header, David Hildenbrand, 2018/06/19
- [Qemu-ppc] [PATCH v5 05/12] pc: factor out pc specific dimm checks into pc_memory_pre_plug(), David Hildenbrand, 2018/06/19
- [Qemu-ppc] [PATCH v5 06/12] nvdimm: no need to overwrite get_vmstate_memory_region(), David Hildenbrand, 2018/06/19
- [Qemu-ppc] [PATCH v5 09/12] nvdimm: convert "unarmed" into a static property, David Hildenbrand, 2018/06/19
- [Qemu-ppc] [PATCH v5 08/12] pc-dimm: merge get_(vmstate_)memory_region(), David Hildenbrand, 2018/06/19
- [Qemu-ppc] [PATCH v5 10/12] nvdimm: convert nvdimm_mr into a pointer, David Hildenbrand, 2018/06/19
- [Qemu-ppc] [PATCH v5 07/12] hostmem: drop error variable from host_memory_backend_get_memory(), David Hildenbrand, 2018/06/19
- [Qemu-ppc] [PATCH v5 12/12] pc-dimm: get_memory_region() will not fail after realize,
David Hildenbrand <=
- [Qemu-ppc] [PATCH v5 11/12] nvdimm: make get_memory_region() perform checks and initialization, David Hildenbrand, 2018/06/19
- Re: [Qemu-ppc] [PATCH v5 00/12] pc-dimm: next bunch of cleanups, Paolo Bonzini, 2018/06/20