On Wed, Feb 3, 2016 at 3:35 AM, Andrew Cooper <andrew.coop...@citrix.com>
wrote:

> On 03/02/16 01:32, Tamas K Lengyel wrote:
>
>
>
> On Tue, Feb 2, 2016 at 6:00 PM, Andrew Cooper <andrew.coop...@citrix.com>
> wrote:
>
>> On 03/02/2016 00:51, Tamas K Lengyel wrote:
>>
>> Hello all,
>> with the latest master branch of Xen there is a regression enabling
>> vm_event on a domain. If an event listener was previously active on the
>> domain it is now not possible to reenable events as the domctl returns
>> -EINVAL. The problem seems to stem from activating the magic page for
>> vm_event using prepare_ring_for_helper as it returns NULL. Further looking
>> into where things go wrong within that function it seems the page type
>> returned by __get_gfn_type_access is p2m_ram_logdirty with an invalid mfn
>> (0xffffffffffffffff) and then it hits "Error path: not a suitable GFN at
>> all".
>>
>> Can anyone point me to which change or what may be causing this?
>>
>>
>> Did the previous event listener replace the page it stole from guest
>> physmap for ring purposes when it exited?
>>
>
> Ah, here is what seems to be the problem. Previously it was not required
> to do this during teardown. What we had was libxc would check if it can map
> the ring page with xc_map_foreign_pages, and it would repopulate the page
> if it failed before running xc_vm_event_enable. However, now it seems
> xc_map_foreign_pages return non-NULL the second time around as well, either
> though the page is not in the physmap.
>
>
> This is the bug then.  If there isn't a page in the physmap,
> xc_map_foreign_pages() should indicate an error.
>
> If I enforce libxc to run populate_physmap then I can get vm_event to
> initialize properly again. So the change seems to relate somehow the
> behavior of xc_map_foreign_pages.
>
>
> This seems likely due to the splitting out of libxenforeignmem from libxc,
> which included the the merging of 4? almost identical map_foreign_$FOO()
> functions into one.  It is likely that there is a subtle change in
> behaviour on an error path.
>

I've added a bunch of debug messages and it gets all the way down to
IOCTL_PRIVCMD_MMAPBATCH_V2 without an error in
tools/libs/foreignmemory/linux.c. That ioctl returns 0 too, so I'm not sure
where the error comes from. Compared to the flow in Xen 4.6 I don't really
see what changed..

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

Reply via email to