From: Paolo Bonzini <pbonzini@redhat.com>
To: Jan Kiszka <jan.kiszka@web.de>
Cc: qemu-devel <qemu-devel@nongnu.org>, Liu Ping Fan <qemulist@gmail.com>
Subject: Re: [Qemu-devel] [PATCH v7 0/7] push mmio dispatch out of big lock
Date: Mon, 06 May 2013 10:07:41 +0200 [thread overview]
Message-ID: <518764CD.2080602@redhat.com> (raw)
In-Reply-To: <5184E601.9030407@web.de>
-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1
Il 04/05/2013 12:42, Jan Kiszka ha scritto:
> On 2013-05-04 11:47, Paolo Bonzini wrote:
>> Il 03/05/2013 10:04, Jan Kiszka ha scritto:
>>> We can't change the semantics of opaque as long as old_mmio /
>>> old_portio are around. But we need a flag anyway to indicate if
>>> a region is depending on BQL or not. Adding a separate "Object
>>> *owner" to MemoryRegion can serve both purposes. Then we define
>>> something like
>>>
>>> void memory_region_set_local_locking(MemoryRegion *mr, bool
>>> local_locking, Object *owner);
>>>
>>> to control the property (if local_locking is true, owner must
>>> be non-NULL, of course). That's quite similar to my old
>>> prototype here that had
>>> memory_region_set/clear_global_locking.
>>
>> I think setting the owner can be done separately from enabling
>> local lock. For example, memory_region_find could also have a
>> variant that adds a ref to the owner. It would be very similar
>> to what Ping Fan is doing in the virtio-dataplane's HostMem data
>> structure.
>
> That's trivial to break up, but I'm not sure if there will be
> reasonable scenarios where a region requires reference counting
> without being able to work without the BQL. RAM, e.g., should
> always work BQL-free (once we have the infrastructure in place).
I think we need to add an owner to all regions (tedious, but
doable---perhaps even scriptable). The current code covers
address_space_rw, but memory_region_find remains callable only from
BQL-protected regions. The caller of memory_region_find needs to be
able to inspect the MemoryRegion, even if it is just to fail on
non-RAM regions. I would like to switch the dataplane code to use
memory_region_find.
BTW, have you seen
http://lwn.net/SubscriberLink/548909/b6fdd846f1232be6/ ? [*] Perhaps
we can adopt something like that, it solves the same exact problem
that we have, and it's a well-known solution from the literature.
[*] The "subscriber link" mechanism allows an LWN.net
subscriber to generate a special URL for a
subscription-only article. That URL can then be given to
others, who will be able to access the article regardless
of whether they are subscribed. This feature is made
available as a service to LWN subscribers, and in the hope
that they will use it to spread the word about their
favorite LWN articles.
> And memory_region_find should likely always increment a reference
> if the target region has an owner. We should convert its users to
> properly dereference the region once done with it.
Yes. But this is what requires you to have an owner for all regions.
Paolo
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v2.0.19 (GNU/Linux)
Comment: Using GnuPG with Thunderbird - http://www.enigmail.net/
iQIcBAEBAgAGBQJRh2TNAAoJEBvWZb6bTYbyVqsP/3DUCevVyhMU0OsDrdMhtbQO
9fTzQmvhbUo2auEzjhjxvl9YH/2exvymsBH1kW2dM5xsct+MsULKMmpw2wucELfd
9i82fS/TbofTWQI0Qz2iCEn6G40aAJf5GC/eMMUINpYlTL0hhaRibaNl4wtwgM+N
FhlohLM0Dki/dQiF+DOfr2TdeFwuJfBpaDVL3Q7YZ+4TXADnjHglltWBwWk0RYvy
1nzUNqah4WwP3yOSlh53kT40VGCgea3mJaogoBTNz1iYdsi2FEGcRdO8JKQqZDoU
0EzfEfBTmACSjXdFOpnkR81PV19DiinRK/Wcj4RGfJJygHAZcabseueWOYKLox+P
Zkjvr1h8HBkJWAZB1yZn0M++ts6nByFFZt0RKDgR9DEhJbKlf6E/7yH/xclecSMR
UynRjuLIZWmKgs+VrfBE8Sda4Wz8NP8oR6A6rv0t9K+oLI0CAA8bj3fQmGhgldkP
AAIyOcsWP7VnizvaLoxicP20fAqvEBPYJhcO80/kVrdubG9yt6ljdHnIwGpbXrR5
hchYoWYK4SsyPp6YwESG1eVPZ/4GNoK0PIjeJELSmUGwbMfwU/VOaIL0DExXpF5Y
b9yct9CpgEW3PhGxqCNgEsPAIbMSpl1OjaAqAdDb+DGZiYwIWE8Mb3SB5Ilsvco2
ZYVzJH7sXoOB9o5k7DIt
=nA/3
-----END PGP SIGNATURE-----
next prev parent reply other threads:[~2013-05-06 8:07 UTC|newest]
Thread overview: 35+ messages / expand[flat|nested] mbox.gz Atom feed top
2012-11-25 2:02 [Qemu-devel] [PATCH v7 0/7] push mmio dispatch out of big lock Liu Ping Fan
2012-11-25 2:02 ` [Qemu-devel] [PATCH v7 1/7] qom: apply atomic on object's refcount Liu Ping Fan
2012-11-28 17:16 ` Richard Henderson
2012-11-29 8:35 ` liu ping fan
2012-11-25 2:02 ` [Qemu-devel] [PATCH v7 2/7] hotplug: introduce qdev_unplug_complete() to remove device from views Liu Ping Fan
2012-11-25 2:03 ` [Qemu-devel] [PATCH v7 3/7] pci: remove pci device from mem view when unplug Liu Ping Fan
2012-11-25 2:03 ` [Qemu-devel] [PATCH v7 4/7] memory: introduce local lock for address space Liu Ping Fan
2012-11-25 2:03 ` [Qemu-devel] [PATCH v7 5/7] memory: make mmio dispatch able to be out of biglock Liu Ping Fan
2013-05-06 11:21 ` Paolo Bonzini
2013-05-06 11:25 ` Jan Kiszka
2013-05-06 11:30 ` Paolo Bonzini
2012-11-25 2:03 ` [Qemu-devel] [PATCH v7 6/7] memory: introduce tls context to trace nested mmio request issue Liu Ping Fan
2012-11-25 2:03 ` [Qemu-devel] [PATCH v7 7/7] vcpu: push mmio dispatcher out of big lock Liu Ping Fan
2012-12-06 7:28 ` [Qemu-devel] [PATCH v7 0/7] push mmio dispatch " liu ping fan
2013-05-02 16:58 ` Jan Kiszka
2013-05-02 17:14 ` Jan Kiszka
2013-05-03 7:37 ` liu ping fan
2013-05-03 8:04 ` Jan Kiszka
2013-05-04 9:47 ` Paolo Bonzini
2013-05-04 10:42 ` Jan Kiszka
2013-05-06 8:07 ` Paolo Bonzini [this message]
2013-05-06 8:40 ` Jan Kiszka
2013-05-06 10:27 ` Paolo Bonzini
2013-05-06 10:56 ` Jan Kiszka
2013-05-06 10:58 ` Paolo Bonzini
2013-05-06 11:11 ` Jan Kiszka
2013-05-06 11:28 ` Paolo Bonzini
2013-05-06 11:39 ` Jan Kiszka
2013-05-06 11:47 ` Paolo Bonzini
2013-05-06 12:06 ` Jan Kiszka
2013-05-06 13:09 ` Paolo Bonzini
2013-05-06 14:05 ` Jan Kiszka
2013-05-06 14:28 ` Paolo Bonzini
2013-05-06 1:46 ` liu ping fan
2013-05-06 1:57 ` liu ping fan
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=518764CD.2080602@redhat.com \
--to=pbonzini@redhat.com \
--cc=jan.kiszka@web.de \
--cc=qemu-devel@nongnu.org \
--cc=qemulist@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).