Re: Cannot map more than 512 grant references with Mini-OS
On 14/09/17 18:00, Frederic Dang Tran wrote:
> I'm trying to set up a shared memory pool between two minimal Xen
> domains based on Mini-OS using the grant table API provided by Mini-OS.
> The sender domain sets up a grant table and publishes the grant
> references on xenstore. The receiver domain reads the grant references
> on xenstore and maps them.
So how does the Xenstore structure look like? You are aware that you
might experience problems when a node has too many children, as the
output of a directory read is limited to 4096 characters? OTOH depending
on xenstored parameters a single node might be limited in size, so maybe
you can't write all references into a single Xenstore node.
> As long as the grant table of the sender domain fits in one frame, i.e.
> 512 grants at most, everything works OK. But grant references beyond the
> first 512 cannot be mapped in the receiver domain.
> The GNTTABOP_map_grant_ref hypercall fails with a GNTST_general_error
> status without any logs (function gntmap_map_grant_refs of the Mini-OS api).
> Any help is welcome.
> Is it a Mini-OS specific problem ?
> Does Xen support more than one single grant table per domain ?
> Is there any Xen parameter that needs to be set ?
Looking into the sources I don't see the problem. Mini-OS should use
4 grant frames, not just one.
Can you rebuild Mini-OS with MM_DEBUG defined and look at the output
sent to the hypervisor console (you'll need to set "guest_loglvl=all"
hypervisor boot parameter to see it)? "xl dmesg" in dom0 prints the