qemu-devel.nongnu.org archive mirror
 help / color / mirror / Atom feed
From: Igor Mammedov <imammedo@redhat.com>
To: David Hildenbrand <david@redhat.com>
Cc: qemu-devel@nongnu.org, Eduardo Habkost <ehabkost@redhat.com>,
	"Michael S . Tsirkin" <mst@redhat.com>,
	Xiao Guangrong <xiaoguangrong.eric@gmail.com>,
	Alexander Graf <agraf@suse.de>,
	qemu-ppc@nongnu.org, Paolo Bonzini <pbonzini@redhat.com>,
	David Gibson <david@gibson.dropbear.id.au>,
	Richard Henderson <rth@twiddle.net>
Subject: Re: [Qemu-devel] [PATCH v1 00/11] pc-dimm: next bunch of cleanups
Date: Wed, 13 Jun 2018 15:34:54 +0200	[thread overview]
Message-ID: <20180613153454.3e0a07a3@redhat.com> (raw)
In-Reply-To: <20180611121655.19616-1-david@redhat.com>

On Mon, 11 Jun 2018 14:16:44 +0200
David Hildenbrand <david@redhat.com> wrote:

> This is another set of cleanups as the result from
>     [PATCH v4 00/14] MemoryDevice: use multi stage hotplug handlers
> And is based on the two series
>     [PATCH v1 0/2] memory: fix alignment checks/asserts
>     [PATCH v2 0/6] spapr: machine hotplug handler cleanups
> 
> These cleanup are the last step before factoring out the
> pre_plug, plug and unplug logic of memory devices completely, to make it
> more independent from pc-dimm.
patches 1-4 are fine,
the rest starting from 5/11 is based on wrong assumptions so should
be reworked or dropped.

> But these patches will already try to make an important point: Assigning
> physical addresses of memory devices will not be done in pre_plug but
> during plug. Other properties, like the "slot" property, however can be
> handled during pre_plug and is done in this patch series, because they
> don't realy on the device to be realized.
> 
> Igor proposed to move all property checks + assigmnets to the pre_plug
> stage. Hovewer for determining a physical address of a memory device, we
> need to know the exact size and the alignment of the underlying memory
> region.
> 
> This region might not be available and initialized before the device has
> been realized (e.g. for NVDIMM). So my point is: Accessing derived
> "properties" ("memory region" set up based on "memdev" property and maybe
> others e.g. for NVDIMM) via device class functions should not be done
> before the device has been realized. These functions should not be
> called during pre_plug.
It's impl. issue/bug of NVDIMM where it does initialization late, which
leads to access to uninitialized region in several places and we should fix.

There is nothing fundamental that prevents accessing size/memory of
backend that was linked to dimm device at pre_plug() time,
since all user specified properties are already set and it's time
for machine to check if properties are correct from machine's pov
and set its own values before proceeding to device.realize() and
plug() handler. That includes setting default GPA property. 

Hence I'm not willing to agree going backwards or adding more
code/refactoring based on broken behavior.

> 
> Enforcing this, already leads to sime nice cleanup numbers in pc-dimm
> code.
> 
> David Hildenbrand (11):
>   pc-dimm: remove leftover "struct pc_dimms_capacity"
>   nvdimm: no need to overwrite get_vmstate_memory_region()
>   pc: factor out pc-dimm checks into pc_dimm_pre_plug()
>   hostmem: drop error variable from host_memory_backend_get_memory()
>   spapr: move memory hotplug size check into plug code
>   pc-dimm: don't allow to access "size" before the device was realized
>   pc-dimm: get_memory_region() can never fail
>   pc-dimm: get_memory_region() will never return a NULL pointer
>   pc-dimm: remove pc_dimm_get_vmstate_memory_region()
>   pc-dimm: introduce and use pc_dimm_memory_pre_plug()
>   pc-dimm: assign and verify the "slot" property during pre_plug
> 
>  backends/hostmem.c       |  3 +-
>  hw/i386/pc.c             | 53 ++++++++++++++------------
>  hw/mem/nvdimm.c          | 12 ++----
>  hw/mem/pc-dimm.c         | 82 +++++++++++++++-------------------------
>  hw/misc/ivshmem.c        |  3 +-
>  hw/ppc/spapr.c           | 36 +++++-------------
>  include/hw/mem/pc-dimm.h |  6 ++-
>  include/sysemu/hostmem.h |  3 +-
>  numa.c                   |  3 +-
>  9 files changed, 81 insertions(+), 120 deletions(-)
> 

  parent reply	other threads:[~2018-06-13 13:35 UTC|newest]

Thread overview: 55+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2018-06-11 12:16 [Qemu-devel] [PATCH v1 00/11] pc-dimm: next bunch of cleanups David Hildenbrand
2018-06-11 12:16 ` [Qemu-devel] [PATCH v1 01/11] pc-dimm: remove leftover "struct pc_dimms_capacity" David Hildenbrand
2018-06-12  0:21   ` David Gibson
2018-06-13  9:23   ` Igor Mammedov
2018-06-11 12:16 ` [Qemu-devel] [PATCH v1 02/11] nvdimm: no need to overwrite get_vmstate_memory_region() David Hildenbrand
2018-06-12  0:22   ` David Gibson
2018-06-13  9:39   ` Igor Mammedov
2018-06-11 12:16 ` [Qemu-devel] [PATCH v1 03/11] pc: factor out pc-dimm checks into pc_dimm_pre_plug() David Hildenbrand
2018-06-12  0:28   ` David Gibson
2018-06-13 10:07   ` Igor Mammedov
2018-06-11 12:16 ` [Qemu-devel] [PATCH v1 04/11] hostmem: drop error variable from host_memory_backend_get_memory() David Hildenbrand
2018-06-12  0:49   ` David Gibson
2018-06-13 10:13   ` Igor Mammedov
2018-06-11 12:16 ` [Qemu-devel] [PATCH v1 05/11] spapr: move memory hotplug size check into plug code David Hildenbrand
2018-06-12  1:02   ` David Gibson
2018-06-13 11:01   ` Igor Mammedov
2018-06-13 11:05     ` David Hildenbrand
2018-06-13 13:57       ` Igor Mammedov
2018-06-14  7:10         ` David Hildenbrand
2018-06-11 12:16 ` [Qemu-devel] [PATCH v1 06/11] pc-dimm: don't allow to access "size" before the device was realized David Hildenbrand
2018-06-12  1:08   ` David Gibson
2018-06-13 12:56   ` Igor Mammedov
2018-06-13 14:03     ` David Hildenbrand
2018-06-13 21:33       ` Eduardo Habkost
2018-06-14 13:02         ` Igor Mammedov
2018-06-14 13:24       ` Igor Mammedov
2018-06-14 14:10         ` David Hildenbrand
2018-06-15  9:16           ` Igor Mammedov
2018-06-15  9:25             ` David Hildenbrand
2018-06-15 10:06               ` Igor Mammedov
2018-06-11 12:16 ` [Qemu-devel] [PATCH v1 07/11] pc-dimm: get_memory_region() can never fail David Hildenbrand
2018-06-12  1:10   ` David Gibson
2018-06-13 13:03   ` Igor Mammedov
2018-06-13 14:07     ` David Hildenbrand
2018-06-13 14:50       ` David Hildenbrand
2018-06-14 15:00         ` Igor Mammedov
2018-06-14 15:11           ` David Hildenbrand
2018-06-15  9:59             ` Igor Mammedov
2018-06-15 10:29               ` David Hildenbrand
2018-06-11 12:16 ` [Qemu-devel] [PATCH v1 08/11] pc-dimm: get_memory_region() will never return a NULL pointer David Hildenbrand
2018-06-12  1:12   ` David Gibson
2018-06-11 12:16 ` [Qemu-devel] [PATCH v1 09/11] pc-dimm: remove pc_dimm_get_vmstate_memory_region() David Hildenbrand
2018-06-12  1:29   ` David Gibson
2018-06-11 12:16 ` [Qemu-devel] [PATCH v1 10/11] pc-dimm: introduce and use pc_dimm_memory_pre_plug() David Hildenbrand
2018-06-12  1:48   ` David Gibson
2018-06-13 13:10   ` Igor Mammedov
2018-06-13 14:15     ` David Hildenbrand
2018-06-15  9:34       ` Igor Mammedov
2018-06-15  9:48         ` David Hildenbrand
2018-06-15 10:01           ` Igor Mammedov
2018-06-11 12:16 ` [Qemu-devel] [PATCH v1 11/11] pc-dimm: assign and verify the "slot" property during pre_plug David Hildenbrand
2018-06-12  2:02   ` David Gibson
2018-06-13 13:34 ` Igor Mammedov [this message]
2018-06-13 14:11   ` [Qemu-devel] [PATCH v1 00/11] pc-dimm: next bunch of cleanups David Hildenbrand
2018-06-15 10:59     ` David Hildenbrand

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20180613153454.3e0a07a3@redhat.com \
    --to=imammedo@redhat.com \
    --cc=agraf@suse.de \
    --cc=david@gibson.dropbear.id.au \
    --cc=david@redhat.com \
    --cc=ehabkost@redhat.com \
    --cc=mst@redhat.com \
    --cc=pbonzini@redhat.com \
    --cc=qemu-devel@nongnu.org \
    --cc=qemu-ppc@nongnu.org \
    --cc=rth@twiddle.net \
    --cc=xiaoguangrong.eric@gmail.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).