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 <mailto: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. ~Andrew
_______________________________________________ Xen-devel mailing list Xen-devel@lists.xen.org http://lists.xen.org/xen-devel