From: "Dr. David Alan Gilbert" <dgilbert@redhat.com>
To: KONRAD Frederic <frederic.konrad@adacore.com>
Cc: Peter Maydell <peter.maydell@linaro.org>,
"Edgar E. Iglesias" <edgar.iglesias@gmail.com>,
QEMU Developers <qemu-devel@nongnu.org>,
Paolo Bonzini <pbonzini@redhat.com>,
Richard Henderson <rth@twiddle.net>
Subject: Re: [Qemu-devel] [PULL v1 0/7] MMIO Exec pull request
Date: Wed, 19 Jul 2017 17:46:18 +0100 [thread overview]
Message-ID: <20170719164617.GO2103@work-vm> (raw)
In-Reply-To: <3fe1df9e-6b49-621f-53b6-271fd2f77305@adacore.com>
* KONRAD Frederic (frederic.konrad@adacore.com) wrote:
>
>
> On 07/19/2017 02:29 PM, Dr. David Alan Gilbert wrote:
> > * KONRAD Frederic (frederic.konrad@adacore.com) wrote:
> > >
> > >
> > > On 07/17/2017 07:27 PM, Edgar E. Iglesias wrote:
> > > > On Mon, Jul 17, 2017 at 11:33 PM, Peter Maydell <peter.maydell@linaro.org>
> > > > wrote:
> > > >
> > > > > On 14 June 2017 at 18:45, Edgar E. Iglesias <edgar.iglesias@gmail.com>
> > > > > wrote:
> > > > > > From: "Edgar E. Iglesias" <edgar.iglesias@xilinx.com>
> > > > > > Paolo suggested offline that we send a pull request for this series.
> > > > > > Here it is, I've run it through my testsuite + tested the LQSPI testcase
> > > > > > on Zynq.
> > > > >
> > > > > > ----------------------------------------------------------------
> > > > > > mmio-exec.for-upstream
> > > > > >
> > > > > > ----------------------------------------------------------------
> > > > > > KONRAD Frederic (7):
> > > > > > cputlb: cleanup get_page_addr_code to use VICTIM_TLB_HIT
> > > > > > cputlb: move get_page_addr_code
> > > > > > cputlb: fix the way get_page_addr_code fills the tlb
> > > > > > qdev: add MemoryRegion property
> > > > > > introduce mmio_interface
> > > > > > exec: allow to get a pointer for some mmio memory region
> > > > > > xilinx_spips: allow mmio execution
> > > > >
> > > > > Hi Edgar -- can you or Fred explain how this code interacts with
> > > > > VM migration? The mmio-interface device creates a RAM memory
> > > > > region with memory_region_init_ram_ptr(), but it doesn't call
> > > > > vmstate_register_ram(). On the other hand the core migration code
> > > > > will try to migrate the contents of the RAMBlock anyway, just
> > > > > without a name.
> > > > >
> > > > > It's not clear to me how this works, and it would be nice to
> > > > > get it clear so that we can make any necessary fixes before the
> > > > > 2.10 release hits and we lose the opportunity to make any
> > > > > migration-compatibility-breaking changes.
> > > > >
> > > > > thanks
> > > > > -- PMM
> > > > >
> > > >
> > > > Hi Peter,
> > > >
> > > > These temporary regions should be read-only and treated as temporary caches
> > > > AFAIU things.
> > > > I would say that they don't need to be migrated. After migration, the new
> > > > VM will recreate the ram areas from device backing.
> > > >
> > > > Is there a way we can prevent migration of the RAMBlock?
> > > >
> > > > Cheers,
> > > > Edgar
> > > >
> > >
> > > Hi All,
> > >
> > > Yes Edgar is right, they don't need to be migrated (as the old
> > > Xilinx SPI cache).
> > > And it will be the case for all the other stuff using this as
> > > well.
> > >
> > > Maybe we can simply drop the region before the migration?
> >
> > Dont forget the VM is still running during migration, so you
> > can't drop anything that's needed for it to be able to execute.
> >
> > Dave
>
> Scary.. Yes your right. I still think it doesn't need to be
> migrated.. But how..
One question about the way your device works; being a cache, is
there something bad that the guest could do which would make
a reload into the cache fail - i.e the real program could
be reliant on running out of data in the cache?
i.e. could the state of the cache actually be system state
which really does need migrating.
(e.g. reprogram the flash via another route or something?)
(I've seen real code rely on an ARM TLB like this).
> BTW taking a look at this I found the comment below which seems
> to implies that the content won't be migrated?
>
> /**
>
> * memory_region_init_ram_ptr: Initialize RAM memory region from a
> * user-provided pointer. Accesses into the
> * region will modify memory directly.
> *
>
> * @mr: the #MemoryRegion to be initialized.
>
> * @owner: the object that tracks the region's reference count
>
> * @name: Region name, becomes part of RAMBlock name used in migration
> stream
> * must be unique within any device
>
> * @size: size of the region.
>
> * @ptr: memory to be mapped; must contain at least @size bytes.
>
> *
>
> * Note that this function does not do anything to cause the data in the
> * RAM memory region to be migrated; that is the responsibility of the
> caller.
> */
>
> And I guess we have the same issue when we try to unplug a device
> during migration?
plug/unplugging during a migration is a bad idea; I've sene suggestions
some of the code is safe for bits of it; I'm not convinced.
Dave
> Fred
>
> >
> > > Fred
> > --
> > Dr. David Alan Gilbert / dgilbert@redhat.com / Manchester, UK
> >
--
Dr. David Alan Gilbert / dgilbert@redhat.com / Manchester, UK
next prev parent reply other threads:[~2017-07-19 16:46 UTC|newest]
Thread overview: 39+ messages / expand[flat|nested] mbox.gz Atom feed top
2017-06-14 17:45 [Qemu-devel] [PULL v1 0/7] MMIO Exec pull request Edgar E. Iglesias
2017-06-14 17:45 ` [Qemu-devel] [PULL v1 1/7] cputlb: cleanup get_page_addr_code to use VICTIM_TLB_HIT Edgar E. Iglesias
2017-06-14 17:45 ` [Qemu-devel] [PULL v1 2/7] cputlb: move get_page_addr_code Edgar E. Iglesias
2017-06-14 17:45 ` [Qemu-devel] [PULL v1 3/7] cputlb: fix the way get_page_addr_code fills the tlb Edgar E. Iglesias
2017-06-14 17:45 ` [Qemu-devel] [PULL v1 4/7] qdev: add MemoryRegion property Edgar E. Iglesias
2017-06-14 17:45 ` [Qemu-devel] [PULL v1 5/7] introduce mmio_interface Edgar E. Iglesias
2017-06-14 17:45 ` [Qemu-devel] [PULL v1 6/7] exec: allow to get a pointer for some mmio memory region Edgar E. Iglesias
2017-06-14 17:45 ` [Qemu-devel] [PULL v1 7/7] xilinx_spips: allow mmio execution Edgar E. Iglesias
2017-06-14 18:36 ` [Qemu-devel] [PULL v1 0/7] MMIO Exec pull request no-reply
2017-06-23 10:54 ` Peter Maydell
2017-06-23 12:34 ` KONRAD Frederic
2017-06-27 15:21 ` Edgar E. Iglesias
2017-07-17 16:33 ` Peter Maydell
2017-07-17 17:27 ` Edgar E. Iglesias
2017-07-17 18:58 ` Dr. David Alan Gilbert
2017-07-17 19:57 ` Peter Maydell
2017-07-18 14:53 ` Dr. David Alan Gilbert
2017-07-20 9:42 ` Peter Maydell
2017-07-20 9:53 ` KONRAD Frederic
2017-07-20 10:02 ` Dr. David Alan Gilbert
2017-07-21 8:09 ` KONRAD Frederic
2017-07-21 9:13 ` Dr. David Alan Gilbert
2017-07-21 9:29 ` Peter Maydell
2017-07-21 9:38 ` KONRAD Frederic
2017-07-21 10:31 ` Dr. David Alan Gilbert
2017-07-27 19:13 ` Juan Quintela
2017-07-27 19:07 ` Juan Quintela
2017-07-21 9:27 ` Dr. David Alan Gilbert
2017-07-21 9:34 ` KONRAD Frederic
2017-07-28 9:18 ` Peter Maydell
2017-07-28 10:13 ` Peter Maydell
2017-07-31 7:34 ` KONRAD Frederic
2017-07-18 7:34 ` KONRAD Frederic
2017-07-19 12:29 ` Dr. David Alan Gilbert
2017-07-19 16:22 ` KONRAD Frederic
2017-07-19 16:25 ` Peter Maydell
2017-07-20 7:55 ` KONRAD Frederic
2017-07-19 16:46 ` Dr. David Alan Gilbert [this message]
2017-07-20 7:54 ` KONRAD Frederic
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=20170719164617.GO2103@work-vm \
--to=dgilbert@redhat.com \
--cc=edgar.iglesias@gmail.com \
--cc=frederic.konrad@adacore.com \
--cc=pbonzini@redhat.com \
--cc=peter.maydell@linaro.org \
--cc=qemu-devel@nongnu.org \
--cc=rth@twiddle.net \
/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).