|
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] Re: [Xen-devel] [PATCH v3.1 08/15] x86/vtd: fix mapping of RMRR regions
>>> On 04.11.16 at 14:03, <roger.pau@xxxxxxxxxx> wrote:
> On Fri, Nov 04, 2016 at 06:53:09AM -0600, Jan Beulich wrote:
>> >>> On 04.11.16 at 13:25, <roger.pau@xxxxxxxxxx> wrote:
>> > On Fri, Nov 04, 2016 at 04:34:58AM -0600, Jan Beulich wrote:
>> >> >>> On 04.11.16 at 10:45, <roger.pau@xxxxxxxxxx> wrote:
>> >> > case p2m_invalid:
>> >> > case p2m_mmio_dm:
>> >> > ret = p2m_set_entry(p2m, gfn, _mfn(gfn), PAGE_ORDER_4K,
>> >> > p2m_mmio_direct, p2ma);
>> >> > if ( ret )
>> >> > break;
>> >> > if ( !iommu_use_hap_pt(d) )
>> >> > ret = iommu_map_page(d, gfn, gfn,
> IOMMUF_readable|IOMMUF_writable);
>> >> > break;
>> >> > case p2m_mmio_direct:
>> >> > if ( a != p2ma || gfn != mfn )
>> >> > {
>> >> > printk(XENLOG_G_WARNING
>> >> > "Cannot setup identity map d%d:%lx, already mapped with "
>> >> > "different access type or mfn\n", d->domain_id, gfn);
>> >> > ret = (flag & XEN_DOMCTL_DEV_RDM_RELAXED) ? 0 : -EBUSY;
>> >> > break;
>> >> > }
>> >> > if ( !iommu_use_hap_pt(d) )
>> >> > ret = iommu_map_page(d, gfn, gfn,
> IOMMUF_readable|IOMMUF_writable);
>> >>
>> >> Well, since according to what I've said above this code should
>> >> really not be here, I think the code structuring question is moot
>> >> now. The conditional call to iommu_map_page() really just needs
>> >> adding alongside the p2m_set_entry() call.
>> >
>> > OK, so if the gfn is already mapped into the p2m we don't care whether it
>> > has a valid IOMMU mapping or not?
>>
>> We do care, but it is the responsibility of whoever established the
>> first mapping to make sure it's present in both P2M and IOMMU.
>> IOW if the GFN is already mapped, we should be able to imply that
>> it's mapped in both places.
>
> But how is the first caller that established the mapping supposed to know if
> it needs an IOMMU entry or not? (p2m_mmio_direct types don't get an IOMMU
> mapping at all)
And it's that fact stated in parentheses which I'd like to question.
I don't see what's wrong with e.g. DMAing right into / out of a
video frame buffer.
> Are we expecting the first caller that setup the mapping to also know about
> RMRR regions and add the IOMMU entry if needed?
This has nothing to do with RMRR regions: Whoever establishes
_some_ P2M mapping ought to also establish an IOMMU one, if
the tables aren't shared (unless there is an explicit reason not do
so).
Jan
_______________________________________________
Xen-devel mailing list
Xen-devel@xxxxxxxxxxxxx
https://lists.xen.org/xen-devel
|
![]() |
Lists.xenproject.org is hosted with RackSpace, monitoring our |