All of lore.kernel.org
 help / color / mirror / Atom feed
From: KONRAD Frederic <frederic.konrad@adacore.com>
To: "Dr. David Alan Gilbert" <dgilbert@redhat.com>
Cc: Peter Maydell <peter.maydell@linaro.org>,
	Juan Quintela <quintela@redhat.com>,
	QEMU Developers <qemu-devel@nongnu.org>,
	Paolo Bonzini <pbonzini@redhat.com>,
	"Edgar E. Iglesias" <edgar.iglesias@gmail.com>,
	Richard Henderson <rth@twiddle.net>
Subject: Re: [Qemu-devel] [PULL v1 0/7] MMIO Exec pull request
Date: Fri, 21 Jul 2017 11:34:26 +0200	[thread overview]
Message-ID: <7879f510-5a59-ba17-1727-5ea47bf781f2@adacore.com> (raw)
In-Reply-To: <20170721092705.GB2133@work-vm>



On 07/21/2017 11:27 AM, Dr. David Alan Gilbert wrote:
> * KONRAD Frederic (frederic.konrad@adacore.com) wrote:
>>
>>
>> On 07/20/2017 12:02 PM, Dr. David Alan Gilbert wrote:
>>> * Peter Maydell (peter.maydell@linaro.org) wrote:
>>>> On 17 July 2017 at 19:58, Dr. David Alan Gilbert <dgilbert@redhat.com> wrote:
>>>>> * Edgar E. Iglesias (edgar.iglesias@gmail.com) wrote:
>>>>>> Is there a way we can prevent migration of the RAMBlock?
>>>>>
>>>>> Not yet, I think we'd have to:
>>>>>      a) Add a flag to the RAMBlock
>>>>>      b) Set it/clear it on registration
>>>>>      c) Have a RAMBLOCK_FOREACH_MIGRATABLE macro
>>>>>      d) Replace all of the RAMBLOCK_FOREACH (and the couple of hand coded
>>>>>      cases) with the RAMBLOCK_FOREACH_MIGRATABLE
>>>>>      e) Worry about the corner cases!
>>>>>
>>>>> I've got a few worries about what happens when the kernel tries to
>>>>> do dirty yncing - I'm not sure if we have to change anything on that
>>>>> interface to skip those RAMBlocks.
>>>>
>>>> OK, so what should we do for 2.10 ?
>>>>
>>>> We could:
>>>>    * implement the changes you suggest above, and mark only
>>>>      vmstate_register_ram'd blocks as migratable
>>>>      (would probably need to fix some places which buggily
>>>>      don't call vmstate_register_ram)
>>>>    * implement the changes above, but special case mmio-interface
>>>>      so only its ramblock is marked unmigratable
>>>
>>> I think either of these is too late for 2.10 - I don't fancy prodding
>>> about in all of the migration RAM loops at this stage.
>>>
>>>>    * postpone the changes above until 2.11, and for 2.10 register
>>>>      a migration-blocker in mmio-interface so that we at least
>>>>      give the user a useful error rather than having it fail
>>>>      obscurely on vmload (and release note this)
>>>
>>> I think that's best, especially because I've just thought of another nasty.
>>> If I understand the way mmio-interface is working, you're dynamically
>>> changing the RAMBlock list while the guest is running.
>>> And while we are using QLIST_FOREACH_RCU I'm not convinced we're
>>> actually safe against dynamic modification of that list.
>>
>> Hi Dave,
>>
>> Hmmm I'm not totally convinced..
>>
>> Let's imagine somebody (eg: u-boot guest) wants to execute code
>> from the LQSPI area.
>>
>> memory_region_request_mmio_ptr is called (the guest is not
>> running yet) it will create a mmio-interface which create the
>> ram memory region with a pointer provided by the device.
>> Then the guest can execute code from that and this somehow is
>> breaking migration because this ram memory region is migrated.
>>
>> Now something is writing to the device.. The cache is no longer
>> valid, we have to drop this mmio-interface. This is done in an
>> async_safe work so cpu are stopped at this moment. So I think we
>> are safe for that.
>>
>>>
>>>> (Or something else?)
>>>>
>>>> I do think we definitely need to fix this for 2.11 at latest.
>>>
>>> OK, I can do a-e OK, I'm more worried now about that dynamic
>>> modification I just thought of.
>>>
>>
>> What's an a-e?
> 
> Oh sorry, didn't answer that bit - it's the items a..e in the list
> I posted above.
> 
>> BTW sorry for this pain :( I didn't figure out that the
>> ram MemoryRegion would be migrated..
> 
> It's OK, these things happen.
> 
> Dave

Ok thanks!

Fred

> 
>> Thanks,
>> Fred
>>
>>> Dave
>>>
>>>> thanks
>>>> -- PMM
>>> --
>>> Dr. David Alan Gilbert / dgilbert@redhat.com / Manchester, UK
>>>
> --
> Dr. David Alan Gilbert / dgilbert@redhat.com / Manchester, UK
> 

  reply	other threads:[~2017-07-21  9:34 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 [this message]
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
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=7879f510-5a59-ba17-1727-5ea47bf781f2@adacore.com \
    --to=frederic.konrad@adacore.com \
    --cc=dgilbert@redhat.com \
    --cc=edgar.iglesias@gmail.com \
    --cc=pbonzini@redhat.com \
    --cc=peter.maydell@linaro.org \
    --cc=qemu-devel@nongnu.org \
    --cc=quintela@redhat.com \
    --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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.