|
|
|
|
|
|
|
|
|
|
xen-devel
Re: [Xen-devel] [PATCH] Paravirt framebuffer frontend kernel support [1/
Steven Smith <sos22@xxxxxxxxx> writes:
[...]
>> As far as I can see, this is our only option right now. I'm ignorant
>> of `shadow translate mode'; can somebody please educate me on how to
>> detect and translate shadow translate mode frontend mfns in the
>> backend?
> Shadow translate mode is a mode of the shadow page tables in which Xen
> does machine<->physical address translations on behalf of the guest.
> It's mostly used for HVM guests to give them the impression of a
> mostly-contiguous block of memory starting at machine address 0.
>
> If you just bung the guest-supplied machine frame numbers through
> xc_translate_gpfn_list you should be fine. That does the translation
> if you're in shadow translate mode and does nothing if you're not.
Assuming you mean xc_domain_translate_gpfn_list(). I tried
translating fbdev_mfn right before use, as follows:
ret = xc_domain_translate_gpfn_list(xenfb->xc, domid, 1,
&fbdev_mfn, &fbdev_mfn);
if (ret < 0)
goto error;
xenfb->fb_info = xc_map_foreign_range(xenfb->xc, domid, XC_PAGE_SIZE,
PROT_READ | PROT_WRITE,
fbdev_mfn);
if (xenfb->fb_info == NULL)
goto error;
However, xc_domain_translate_gpfn_list() always fails with EINVAL for
me. If I read its code correctly, this can happen because op.nr_gpfns
is too large, or !shadow_mode_translate(). I suspect its the latter.
Should I call it only when in shadow translate mode? How to check for
that? Or am I doing something wrong?
_______________________________________________
Xen-devel mailing list
Xen-devel@xxxxxxxxxxxxxxxxxxx
http://lists.xensource.com/xen-devel
|
<Prev in Thread] |
Current Thread |
[Next in Thread>
|
- Re: [Xen-devel] [PATCH] Paravirt framebuffer frontend kernel support [1/5],
Markus Armbruster <=
|
|
|
|
|