Message ID | 20180920103243.28474-10-david@redhat.com (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
Series | memory-device: complete refactoring + virtio-pmem | expand |
On Thu, Sep 20, 2018 at 12:32:30PM +0200, David Hildenbrand wrote: > We now have get_memory_region(), which can be used generically to detect > the region size. Use memory_device_get_region_size() where > get_region_size() was used and use memory_device_get_region_size() as > callback for get_plugged_size() (pc-dimm only for now). The commit message reads a little oddly. I'm guessing it was written before you split out the introduction of the memory_device_get_region_size() wrapper into an earlier patch? > > Signed-off-by: David Hildenbrand <david@redhat.com> Nonetheless, Reviewed-by: David Gibson <david@gibson.dropbear.id.au> > --- > hw/mem/memory-device.c | 11 +++++++++-- > hw/mem/pc-dimm.c | 18 +----------------- > include/hw/mem/memory-device.h | 3 --- > 3 files changed, 10 insertions(+), 22 deletions(-) > > diff --git a/hw/mem/memory-device.c b/hw/mem/memory-device.c > index 2fa68b3730..1ab28e42cf 100644 > --- a/hw/mem/memory-device.c > +++ b/hw/mem/memory-device.c > @@ -270,9 +270,16 @@ void memory_device_unplug_region(MachineState *ms, MemoryRegion *mr) > uint64_t memory_device_get_region_size(const MemoryDeviceState *md, > Error **errp) > { > - MemoryDeviceClass *mdc = MEMORY_DEVICE_GET_CLASS(md); > + const MemoryDeviceClass *mdc = MEMORY_DEVICE_GET_CLASS(md); > + MemoryRegion *mr; > > - return mdc->get_region_size(md, errp); > + /* dropping const here is fine as we don't touch the memory region */ > + mr = mdc->get_memory_region((MemoryDeviceState *)md, errp); > + if (!mr) { > + return 0; > + } > + > + return memory_region_size(mr); > } > > static const TypeInfo memory_device_info = { > diff --git a/hw/mem/pc-dimm.c b/hw/mem/pc-dimm.c > index 49ad8bac2d..95c3c4bd76 100644 > --- a/hw/mem/pc-dimm.c > +++ b/hw/mem/pc-dimm.c > @@ -235,21 +235,6 @@ static uint64_t pc_dimm_md_get_addr(const MemoryDeviceState *md) > return dimm->addr; > } > > -static uint64_t pc_dimm_md_get_region_size(const MemoryDeviceState *md, > - Error **errp) > -{ > - MemoryDeviceClass *mdc = MEMORY_DEVICE_GET_CLASS(md); > - MemoryRegion *mr; > - > - /* dropping const here is fine as we don't touch the memory region */ > - mr = mdc->get_memory_region((MemoryDeviceState *)md, errp); > - if (!mr) { > - return 0; > - } > - > - return memory_region_size(mr); > -} > - > static MemoryRegion *pc_dimm_md_get_memory_region(MemoryDeviceState *md, > Error **errp) > { > @@ -301,8 +286,7 @@ static void pc_dimm_class_init(ObjectClass *oc, void *data) > > mdc->get_addr = pc_dimm_md_get_addr; > /* for a dimm plugged_size == region_size */ > - mdc->get_plugged_size = pc_dimm_md_get_region_size; > - mdc->get_region_size = pc_dimm_md_get_region_size; > + mdc->get_plugged_size = memory_device_get_region_size; > mdc->get_memory_region = pc_dimm_md_get_memory_region; > mdc->fill_device_info = pc_dimm_md_fill_device_info; > } > diff --git a/include/hw/mem/memory-device.h b/include/hw/mem/memory-device.h > index 0feed4ec0d..64df232919 100644 > --- a/include/hw/mem/memory-device.h > +++ b/include/hw/mem/memory-device.h > @@ -36,8 +36,6 @@ typedef struct MemoryDeviceState { > * assigned yet. > * @get_plugged_size: The amount of memory provided by this @md currently > * usable ("plugged") by the guest. > - * @get_region_size: The size of the memory region of the @md that's mapped > - * in guest physical memory at @get_addr. > * @get_memory_region: The memory region of the @md of the @md that's > * mapped in guest physical memory at @get_addr. If a @md is ever composed > * of multiple successive memory regions, a covering memory region is to > @@ -51,7 +49,6 @@ typedef struct MemoryDeviceClass { > /* public */ > uint64_t (*get_addr)(const MemoryDeviceState *md); > uint64_t (*get_plugged_size)(const MemoryDeviceState *md, Error **errp); > - uint64_t (*get_region_size)(const MemoryDeviceState *md, Error **errp); > MemoryRegion *(*get_memory_region)(MemoryDeviceState *md, Error **errp); > void (*fill_device_info)(const MemoryDeviceState *md, > MemoryDeviceInfo *info);
On 21/09/2018 07:19, David Gibson wrote: > On Thu, Sep 20, 2018 at 12:32:30PM +0200, David Hildenbrand wrote: >> We now have get_memory_region(), which can be used generically to detect >> the region size. Use memory_device_get_region_size() where >> get_region_size() was used and use memory_device_get_region_size() as >> callback for get_plugged_size() (pc-dimm only for now). > > The commit message reads a little oddly. I'm guessing it was written > before you split out the introduction of the > memory_device_get_region_size() wrapper into an earlier patch? Guess I changed it a couple of times while figuring out a way to do the transformations as cleanly as possible. "There are no remaining users of get_region_size() except memory_device_get_region_size() itself. We can make memory_device_get_region_size() work directly on get_memory_region() instead and drop get_region_size(). In addition, we can now use memory_device_get_region_size() in pc-dimm code to implement get_plugged_size()". Thanks! > >> >> Signed-off-by: David Hildenbrand <david@redhat.com> > > Nonetheless, > > Reviewed-by: David Gibson <david@gibson.dropbear.id.au> >
On Fri, 21 Sep 2018 09:19:17 +0200 David Hildenbrand <david@redhat.com> wrote: > On 21/09/2018 07:19, David Gibson wrote: > > On Thu, Sep 20, 2018 at 12:32:30PM +0200, David Hildenbrand wrote: > >> We now have get_memory_region(), which can be used generically to detect > >> the region size. Use memory_device_get_region_size() where > >> get_region_size() was used and use memory_device_get_region_size() as > >> callback for get_plugged_size() (pc-dimm only for now). > > > > The commit message reads a little oddly. I'm guessing it was written > > before you split out the introduction of the > > memory_device_get_region_size() wrapper into an earlier patch? > > Guess I changed it a couple of times while figuring out a way to do the > transformations as cleanly as possible. > > "There are no remaining users of get_region_size() except > memory_device_get_region_size() itself. We can make > memory_device_get_region_size() work directly on get_memory_region() > instead and drop get_region_size(). > > In addition, we can now use memory_device_get_region_size() in pc-dimm > code to implement get_plugged_size()". Reviewed-by: Igor Mammedov <imammedo@redhat.com> > > Thanks! > > > > >> > >> Signed-off-by: David Hildenbrand <david@redhat.com> > > > > Nonetheless, > > > > Reviewed-by: David Gibson <david@gibson.dropbear.id.au> > > > >
diff --git a/hw/mem/memory-device.c b/hw/mem/memory-device.c index 2fa68b3730..1ab28e42cf 100644 --- a/hw/mem/memory-device.c +++ b/hw/mem/memory-device.c @@ -270,9 +270,16 @@ void memory_device_unplug_region(MachineState *ms, MemoryRegion *mr) uint64_t memory_device_get_region_size(const MemoryDeviceState *md, Error **errp) { - MemoryDeviceClass *mdc = MEMORY_DEVICE_GET_CLASS(md); + const MemoryDeviceClass *mdc = MEMORY_DEVICE_GET_CLASS(md); + MemoryRegion *mr; - return mdc->get_region_size(md, errp); + /* dropping const here is fine as we don't touch the memory region */ + mr = mdc->get_memory_region((MemoryDeviceState *)md, errp); + if (!mr) { + return 0; + } + + return memory_region_size(mr); } static const TypeInfo memory_device_info = { diff --git a/hw/mem/pc-dimm.c b/hw/mem/pc-dimm.c index 49ad8bac2d..95c3c4bd76 100644 --- a/hw/mem/pc-dimm.c +++ b/hw/mem/pc-dimm.c @@ -235,21 +235,6 @@ static uint64_t pc_dimm_md_get_addr(const MemoryDeviceState *md) return dimm->addr; } -static uint64_t pc_dimm_md_get_region_size(const MemoryDeviceState *md, - Error **errp) -{ - MemoryDeviceClass *mdc = MEMORY_DEVICE_GET_CLASS(md); - MemoryRegion *mr; - - /* dropping const here is fine as we don't touch the memory region */ - mr = mdc->get_memory_region((MemoryDeviceState *)md, errp); - if (!mr) { - return 0; - } - - return memory_region_size(mr); -} - static MemoryRegion *pc_dimm_md_get_memory_region(MemoryDeviceState *md, Error **errp) { @@ -301,8 +286,7 @@ static void pc_dimm_class_init(ObjectClass *oc, void *data) mdc->get_addr = pc_dimm_md_get_addr; /* for a dimm plugged_size == region_size */ - mdc->get_plugged_size = pc_dimm_md_get_region_size; - mdc->get_region_size = pc_dimm_md_get_region_size; + mdc->get_plugged_size = memory_device_get_region_size; mdc->get_memory_region = pc_dimm_md_get_memory_region; mdc->fill_device_info = pc_dimm_md_fill_device_info; } diff --git a/include/hw/mem/memory-device.h b/include/hw/mem/memory-device.h index 0feed4ec0d..64df232919 100644 --- a/include/hw/mem/memory-device.h +++ b/include/hw/mem/memory-device.h @@ -36,8 +36,6 @@ typedef struct MemoryDeviceState { * assigned yet. * @get_plugged_size: The amount of memory provided by this @md currently * usable ("plugged") by the guest. - * @get_region_size: The size of the memory region of the @md that's mapped - * in guest physical memory at @get_addr. * @get_memory_region: The memory region of the @md of the @md that's * mapped in guest physical memory at @get_addr. If a @md is ever composed * of multiple successive memory regions, a covering memory region is to @@ -51,7 +49,6 @@ typedef struct MemoryDeviceClass { /* public */ uint64_t (*get_addr)(const MemoryDeviceState *md); uint64_t (*get_plugged_size)(const MemoryDeviceState *md, Error **errp); - uint64_t (*get_region_size)(const MemoryDeviceState *md, Error **errp); MemoryRegion *(*get_memory_region)(MemoryDeviceState *md, Error **errp); void (*fill_device_info)(const MemoryDeviceState *md, MemoryDeviceInfo *info);
We now have get_memory_region(), which can be used generically to detect the region size. Use memory_device_get_region_size() where get_region_size() was used and use memory_device_get_region_size() as callback for get_plugged_size() (pc-dimm only for now). Signed-off-by: David Hildenbrand <david@redhat.com> --- hw/mem/memory-device.c | 11 +++++++++-- hw/mem/pc-dimm.c | 18 +----------------- include/hw/mem/memory-device.h | 3 --- 3 files changed, 10 insertions(+), 22 deletions(-)