[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [Xen-devel] Shared page tables between ETP and IOMMU issue



On Thu, Feb 26, 2015 at 2:31 PM, Roger Pau Monnà <roger.pau@xxxxxxxxxx> wrote:
> El 26/02/15 a les 19.02, Roger Pau Monnà ha escrit:
>> El 26/02/15 a les 17.43, Jan Beulich ha escrit:
>>>>>> On 26.02.15 at 17:29, <roger.pau@xxxxxxxxxx> wrote:
>>>> OK, I will try to take a look. All those faults come from physical
>>>> memory ranges that are supposed to be usable, and in fact the CPU seems
>>>> to be able to read/write from them without problems, or else the guest
>>>> would have crashed much more early. Regarding sharing the page tables
>>>> between EPT and the IOMMU, is there some bit that needs to be set in the
>>>> ept entry in order to mark a page as available by the IOMMU?
>>>
>>> Bits 0 and 1 (read and write) are shared between VT-d and EPT
>>> (as is bit 7 - see struct dma_pte and ept_entry_t).
>>
>> I've added some debug prints at the end of construct_dom0 to print the
>> MFN of a RAM page (using get_gfn_query_unlocked) and the VTd entry
>> (using print_vtd_entries):
>>
>> (XEN) print_vtd_entries: iommu ffff8302197c3a40 dev 0000:00:1f.2 gmfn 43e0
>> (XEN)     root_entry = ffff8302197c0000
>> (XEN)     root_entry[0] = 140144001
>> (XEN)     context = ffff830140144000
>> (XEN)     context[fa] = 2_140148001
>> (XEN)     l4 = ffff830140148000
>> (XEN)     l4_index = 0
>> (XEN)     l4[0] = 140147003
>> (XEN)     l3 = ffff830140147000
>> (XEN)     l3_index = 0
>> (XEN)     l3[0] = 140146003
>> (XEN)     l2 = ffff830140146000
>> (XEN)     l2_index = 21
>> (XEN)     l2[21] = 0
>> (XEN)     l2[21] not present
>> (XEN) GFN: 0x43e0 MFN: 0x1401e3 type: 0
>>
>> This is before Dom0 has been started, so I think there's something
>> wrong in the way we build the page tables, because AFAICT the VTd
>> code is not able to resolve the GFN, but the EPT code is.
>
> BTW, if I set no-sharept the output is as expected:
>
> (XEN) print_vtd_entries: iommu ffff8302197c3a40 dev 0000:00:1f.2 gmfn 43e0
> (XEN)     root_entry = ffff8302197c0000
> (XEN)     root_entry[0] = 19793f001
> (XEN)     context = ffff83019793f000
> (XEN)     context[fa] = 2_140149001
> (XEN)     l4 = ffff830140149000
> (XEN)     l4_index = 0
> (XEN)     l4[0] = 140148003
> (XEN)     l3 = ffff830140148000
> (XEN)     l3_index = 0
> (XEN)     l3[0] = 140147003
> (XEN)     l2 = ffff830140147000
> (XEN)     l2_index = 21
> (XEN)     l2[21] = 14012c003
> (XEN)     l1 = ffff83014012c000
> (XEN)     l1_index = 1e0
> (XEN)     l1[1e0] = 1401e3003
> (XEN) GFN: 0x43e0 MFN: 0x1401e3 type: 0
>
>
> _______________________________________________
> Xen-devel mailing list
> Xen-devel@xxxxxxxxxxxxx
> http://lists.xen.org/xen-devel


Hi Roger

Can you please print same debug for 7cb92 address (where L3 page table
is missing).
With shared and not shared ept?

Thank you!

-- 
Elena

_______________________________________________
Xen-devel mailing list
Xen-devel@xxxxxxxxxxxxx
http://lists.xen.org/xen-devel

 


Rackspace

Lists.xenproject.org is hosted with RackSpace, monitoring our
servers 24x7x365 and backed by RackSpace's Fanatical Support®.