From: Avi Kivity <avi@redhat.com>
To: liu ping fan <qemulist@gmail.com>
Cc: kvm@vger.kernel.org, Jan Kiszka <jan.kiszka@siemens.com>,
Marcelo Tosatti <mtosatti@redhat.com>,
qemu-devel@nongnu.org, Anthony Liguori <anthony@codemonkey.ws>,
Stefan Hajnoczi <stefanha@gmail.com>
Subject: Re: [Qemu-devel] [PATCH 2/5] exec.c: use refcnt to protect device during dispatching
Date: Thu, 26 Jul 2012 16:13:13 +0300 [thread overview]
Message-ID: <50114269.2000906@redhat.com> (raw)
In-Reply-To: <CAJnKYQnxG-m=8=wY9ogQMiBtuTpvJ2cUxsUQexWHk82vfuoxzA@mail.gmail.com>
On 07/26/2012 04:06 PM, liu ping fan wrote:
> On Wed, Jul 25, 2012 at 8:27 PM, Avi Kivity <avi@redhat.com> wrote:
>> On 07/25/2012 01:58 PM, Avi Kivity wrote:
>>>> while (len > 0) {
>>>> page = addr & TARGET_PAGE_MASK;
>>>> l = (page + TARGET_PAGE_SIZE) - addr;
>>>> if (l > len)
>>>> l = len;
>>>> +
>>>> + qemu_rwlock_rdlock_devtree();
>>>> section = phys_page_find(page >> TARGET_PAGE_BITS);
>>>
>>> Does the devtree lock also protect the data structures accessed by
>>> phys_page_find()? Seems wrong.
>>
>> The right way is to object_ref() in core_region_add() and object_unref()
>> in core_region_del(). We're guaranteed that mr->object is alive during
>> _add(), and DeviceClass::unmap() ensures that the extra ref doesn't
>> block destruction.
>>
> OK, I see. I will try in this way. But when
> memory_region_destroy()->..->core_region_del(), should we reset the
> lp.ptr to phys_section_unassigned , otherwise, if using removed
> target_phys_addr_t, we will still get the pointer to invalid
> MemoryRegion?
The intent was to use rcu, so when we rebuild phys_map we build it into
a new tree, use rcu_assign_pointer() to switch into the new tree, then
synchronize_rcu() and drop the old tree.
Since we don't have rcu yet we can emulate it with a lock. We can start
with a simple mutex around the lookup and rebuild, then switch to rwlock
or rcu if needed.
(without the lock or rcu, just changing lp.ptr is dangerous, since it is
a bit field)
--
error compiling committee.c: too many arguments to function
next prev parent reply other threads:[~2012-07-26 13:13 UTC|newest]
Thread overview: 28+ messages / expand[flat|nested] mbox.gz Atom feed top
2012-07-25 3:31 [Qemu-devel] [PATCH 0/5] prepare unplug out of protection of global lock Liu Ping Fan
2012-07-25 3:31 ` [Qemu-devel] [PATCH 1/5] qom: adopt rwlock to protect accessing dev from removing it Liu Ping Fan
2012-07-25 9:08 ` Paolo Bonzini
2012-07-26 12:56 ` liu ping fan
2012-07-26 13:00 ` Avi Kivity
2012-07-26 13:14 ` liu ping fan
2012-07-26 13:15 ` Avi Kivity
2012-07-26 13:21 ` liu ping fan
2012-07-26 13:46 ` Avi Kivity
2012-07-25 3:31 ` [Qemu-devel] [PATCH 2/5] exec.c: use refcnt to protect device during dispatching Liu Ping Fan
2012-07-25 7:43 ` Stefan Hajnoczi
2012-07-25 8:12 ` liu ping fan
2012-07-25 9:18 ` Paolo Bonzini
2012-07-26 13:00 ` liu ping fan
2012-07-25 10:58 ` Avi Kivity
2012-07-25 12:27 ` Avi Kivity
2012-07-26 13:06 ` liu ping fan
2012-07-26 13:13 ` Avi Kivity [this message]
2012-07-25 3:31 ` [Qemu-devel] [PATCH 3/5] hotplug: introduce qdev_unplug_ack() to remove device from views Liu Ping Fan
2012-07-25 10:58 ` Avi Kivity
2012-07-25 3:31 ` [Qemu-devel] [PATCH 4/5] qom: delay DeviceState's reclaim to main-loop Liu Ping Fan
2012-07-25 7:03 ` Stefan Hajnoczi
2012-07-25 7:37 ` Paolo Bonzini
2012-07-25 8:16 ` liu ping fan
2012-07-25 8:22 ` Paolo Bonzini
2012-07-25 8:17 ` liu ping fan
2012-07-25 3:31 ` [Qemu-devel] [PATCH 5/5] e1000: using new interface--unmap to unplug Liu Ping Fan
2012-07-25 7:12 ` Stefan Hajnoczi
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=50114269.2000906@redhat.com \
--to=avi@redhat.com \
--cc=anthony@codemonkey.ws \
--cc=jan.kiszka@siemens.com \
--cc=kvm@vger.kernel.org \
--cc=mtosatti@redhat.com \
--cc=qemu-devel@nongnu.org \
--cc=qemulist@gmail.com \
--cc=stefanha@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).