[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [Qemu-devel] [PATCH 03/10] intel-iommu: add iommu lock
From: |
Paolo Bonzini |
Subject: |
Re: [Qemu-devel] [PATCH 03/10] intel-iommu: add iommu lock |
Date: |
Mon, 30 Apr 2018 09:20:42 +0200 |
User-agent: |
Mozilla/5.0 (X11; Linux x86_64; rv:52.0) Gecko/20100101 Thunderbird/52.7.0 |
On 28/04/2018 04:24, Peter Xu wrote:
>>>> 2) Can we just reuse qemu BQL here?
>>> I would prefer not. As I mentioned, at least I have spent too much
>>> time on fighting BQL already. I really hope we can start to use
>>> isolated locks when capable. BQL is always the worst choice to me.
>> Just a thought, using BQL may greatly simplify the code actually (consider
>> we don't plan to remove BQL now).
> Frankly speaking I don't understand why using BQL may greatly simplify
> the code... :( IMHO the lock here is really not a complicated one.
>
> Note that IMO BQL is mostly helpful when we really want something to
> be run sequentially with some other things _already_ protected by BQL.
> In this case, all the stuff is inside VT-d code itself (or other
> IOMMUs), why bother taking the BQL to make our life harder?
>
> So, even if we want to provide a general lock for the translation
> procedure, I would prefer we add a per AddressSpace lock but not BQL.
> However still that will need some extra flag showing that whether we
> need the protection of not. For example, we may need to expliclitly
> turn that off for Power and s390. Would that really worth it?
>
> So my final preference is still current patch - we solve thread-safety
> problems in VT-d and IOMMU code. Again, we really should make sure
> all IOMMUs work with multithreads.
>
I agree. In particular, using BQL is _worse_ because it has very strict
lock ordering requirements. Using fine-grained locks is greatly
preferred as long as:
1) they are leaves in the lock ordering
2) they are not kept across calls to external callbacks (or there are no
external callbacks involved)
Paolo
- Re: [Qemu-devel] [PATCH 03/10] intel-iommu: add iommu lock, (continued)
- Re: [Qemu-devel] [PATCH 03/10] intel-iommu: add iommu lock, Jason Wang, 2018/04/27
- Re: [Qemu-devel] [PATCH 03/10] intel-iommu: add iommu lock, Peter Xu, 2018/04/27
- Re: [Qemu-devel] [PATCH 03/10] intel-iommu: add iommu lock, Jason Wang, 2018/04/27
- Re: [Qemu-devel] [PATCH 03/10] intel-iommu: add iommu lock, Peter Xu, 2018/04/27
- Re: [Qemu-devel] [PATCH 03/10] intel-iommu: add iommu lock, Jason Wang, 2018/04/27
- Re: [Qemu-devel] [PATCH 03/10] intel-iommu: add iommu lock, Peter Xu, 2018/04/27
- Re: [Qemu-devel] [PATCH 03/10] intel-iommu: add iommu lock, Jason Wang, 2018/04/27
- Re: [Qemu-devel] [PATCH 03/10] intel-iommu: add iommu lock, Paolo Bonzini, 2018/04/30
- Re: [Qemu-devel] [PATCH 03/10] intel-iommu: add iommu lock,
Paolo Bonzini <=
[Qemu-devel] [PATCH 05/10] intel-iommu: introduce vtd_page_walk_info, Peter Xu, 2018/04/25
[Qemu-devel] [PATCH 06/10] intel-iommu: pass in address space when page walk, Peter Xu, 2018/04/25
[Qemu-devel] [PATCH 04/10] intel-iommu: only do page walk for MAP notifiers, Peter Xu, 2018/04/25
[Qemu-devel] [PATCH 07/10] util: implement simple interval tree logic, Peter Xu, 2018/04/25
[Qemu-devel] [PATCH 08/10] intel-iommu: maintain per-device iova ranges, Peter Xu, 2018/04/25