Re: [Qemu-devel] [PATCH RFC v4 15/20] intel_iommu: provide its own replay() callback

2017-01-23 Thread Peter Xu
On Mon, Jan 23, 2017 at 12:34:29PM -0700, Alex Williamson wrote: > On Mon, 23 Jan 2017 10:54:49 +0800 > Peter Xu wrote: > > > On Mon, Jan 23, 2017 at 09:48:48AM +0800, Jason Wang wrote: > > > > > > > > > On 2017年01月22日 16:51, Peter Xu wrote: > > > >On Sun, Jan 22, 2017 at 03:56:10PM +0800, Ja

Re: [Qemu-devel] [PATCH RFC v4 15/20] intel_iommu: provide its own replay() callback

2017-01-23 Thread Alex Williamson
On Mon, 23 Jan 2017 10:54:49 +0800 Peter Xu wrote: > On Mon, Jan 23, 2017 at 09:48:48AM +0800, Jason Wang wrote: > > > > > > On 2017年01月22日 16:51, Peter Xu wrote: > > >On Sun, Jan 22, 2017 at 03:56:10PM +0800, Jason Wang wrote: > > > > > >[...] > > > > > >>>+/** > > >>>+ * vtd_page_walk_lev

Re: [Qemu-devel] [PATCH RFC v4 15/20] intel_iommu: provide its own replay() callback

2017-01-23 Thread Alex Williamson
On Sun, 22 Jan 2017 16:51:18 +0800 Peter Xu wrote: > On Sun, Jan 22, 2017 at 03:56:10PM +0800, Jason Wang wrote: > > > > >+trace_vtd_page_walk_one(level, entry.iova, > > >entry.translated_addr, > > >+entry.addr_mask, entry.perm); > > >+

Re: [Qemu-devel] [PATCH RFC v4 15/20] intel_iommu: provide its own replay() callback

2017-01-22 Thread Peter Xu
On Mon, Jan 23, 2017 at 11:12:27AM +0800, Jason Wang wrote: > > > On 2017年01月23日 10:54, Peter Xu wrote: > >+trace_vtd_page_walk_skip_read(iova, iova_next); > >+skipped_local++; > >+goto next; > >+} > >+ > >+if (vtd_slpte_

Re: [Qemu-devel] [PATCH RFC v4 15/20] intel_iommu: provide its own replay() callback

2017-01-22 Thread Jason Wang
On 2017年01月23日 10:54, Peter Xu wrote: +trace_vtd_page_walk_skip_read(iova, iova_next); +skipped_local++; +goto next; +} + +if (vtd_slpte_nonzero_rsvd(slpte, level)) { +trace_vtd_page_walk_skip_reserve(iova, iova_next); +

Re: [Qemu-devel] [PATCH RFC v4 15/20] intel_iommu: provide its own replay() callback

2017-01-22 Thread Peter Xu
On Mon, Jan 23, 2017 at 09:48:48AM +0800, Jason Wang wrote: > > > On 2017年01月22日 16:51, Peter Xu wrote: > >On Sun, Jan 22, 2017 at 03:56:10PM +0800, Jason Wang wrote: > > > >[...] > > > >>>+/** > >>>+ * vtd_page_walk_level - walk over specific level for IOVA range > >>>+ * > >>>+ * @addr: base GP

Re: [Qemu-devel] [PATCH RFC v4 15/20] intel_iommu: provide its own replay() callback

2017-01-22 Thread Jason Wang
On 2017年01月22日 17:36, Peter Xu wrote: Besides this one, I tried to fix the comments in this function as below, hope this is better (I removed 1-3 thing since I think that's clearer from below code): diff --git a/hw/i386/intel_iommu.c b/hw/i386/intel_iommu.c index e958f53..f3fe8c4 100644 --- a/

Re: [Qemu-devel] [PATCH RFC v4 15/20] intel_iommu: provide its own replay() callback

2017-01-22 Thread Jason Wang
On 2017年01月22日 16:51, Peter Xu wrote: On Sun, Jan 22, 2017 at 03:56:10PM +0800, Jason Wang wrote: [...] +/** + * vtd_page_walk_level - walk over specific level for IOVA range + * + * @addr: base GPA addr to start the walk + * @start: IOVA range start address + * @end: IOVA range end address

Re: [Qemu-devel] [PATCH RFC v4 15/20] intel_iommu: provide its own replay() callback

2017-01-22 Thread Peter Xu
On Sun, Jan 22, 2017 at 04:51:18PM +0800, Peter Xu wrote: > On Sun, Jan 22, 2017 at 03:56:10PM +0800, Jason Wang wrote: > > [...] > > > >+/** > > >+ * vtd_page_walk_level - walk over specific level for IOVA range > > >+ * > > >+ * @addr: base GPA addr to start the walk > > >+ * @start: IOVA range

Re: [Qemu-devel] [PATCH RFC v4 15/20] intel_iommu: provide its own replay() callback

2017-01-22 Thread Peter Xu
On Sun, Jan 22, 2017 at 03:56:10PM +0800, Jason Wang wrote: [...] > >+/** > >+ * vtd_page_walk_level - walk over specific level for IOVA range > >+ * > >+ * @addr: base GPA addr to start the walk > >+ * @start: IOVA range start address > >+ * @end: IOVA range end address (start <= addr < end) > >

Re: [Qemu-devel] [PATCH RFC v4 15/20] intel_iommu: provide its own replay() callback

2017-01-21 Thread Jason Wang
On 2017年01月20日 21:08, Peter Xu wrote: The default replay() don't work for VT-d since vt-d will have a huge default memory region which covers address range 0-(2^64-1). This will normally consumes a lot of time (which looks like a dead loop). The solution is simple - we don't walk over all the

[Qemu-devel] [PATCH RFC v4 15/20] intel_iommu: provide its own replay() callback

2017-01-20 Thread Peter Xu
The default replay() don't work for VT-d since vt-d will have a huge default memory region which covers address range 0-(2^64-1). This will normally consumes a lot of time (which looks like a dead loop). The solution is simple - we don't walk over all the regions. Instead, we jump over the regions