New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Generalize GUI daemon's xc_map_foreign_pages() #2619

Open
rootkovska opened this Issue Feb 2, 2017 · 3 comments

Comments

Projects
None yet
2 participants
@rootkovska
Member

rootkovska commented Feb 2, 2017

A few changes will be needed to allow to run gui-daemon in non-Dom0 VM when used in "true GuiDom" mode.

Some of these changes (especially with regards connection establishing between other AppVMs and GuiDom) should be resolved as part of #833. However, completing of #833 will likely not solve the problem with guid relying on the Xen's xc_map_foreign_pages (see https://github.com/QubesOS/qubes-gui-daemon/blob/v3.2.8/shmoverride/shmoverride.c#L76), which we need to solve for use with true GuiDom implementation.

@rootkovska rootkovska added this to the Release 4.1 milestone Feb 2, 2017

@rootkovska rootkovska referenced this issue Feb 2, 2017

Closed

create GSOC 2017 Ideas List #2607

2 of 2 tasks complete

@rootkovska rootkovska changed the title from Allow to use guid in true GuiDom (with GPU pass-through) to Generalize GUID's xc_map_foreign_pages() Feb 16, 2017

@rootkovska

This comment has been minimized.

Show comment
Hide comment
@rootkovska

rootkovska Feb 16, 2017

Member

While touching the GUID and reworking the xc_map_forgein_pages() for work with GUI domain, we should also make an effort to generalize this call to allow for future architectures not based on Xen. Ideally not even based on shared-memory-based hardware architectures.

Here the primary observation is that our GUI protocol already comprises two channels:

  1. The metadata channel (e.g. MSG_CONFIGURE, etc) about configuration and positioning of windows, damage notifications, human input.
  2. The actual data (i.e. pixels) channel, currently realized by xc_map_foreign_page as zero-copy memory sharing between the AppVM and Dom0, aided by the MSG_MFNDUMP messages flying over the meta channel.

So, the generalized version of the protocol should allow for providing independent implementations of this data channel (e.g. over network).

Member

rootkovska commented Feb 16, 2017

While touching the GUID and reworking the xc_map_forgein_pages() for work with GUI domain, we should also make an effort to generalize this call to allow for future architectures not based on Xen. Ideally not even based on shared-memory-based hardware architectures.

Here the primary observation is that our GUI protocol already comprises two channels:

  1. The metadata channel (e.g. MSG_CONFIGURE, etc) about configuration and positioning of windows, damage notifications, human input.
  2. The actual data (i.e. pixels) channel, currently realized by xc_map_foreign_page as zero-copy memory sharing between the AppVM and Dom0, aided by the MSG_MFNDUMP messages flying over the meta channel.

So, the generalized version of the protocol should allow for providing independent implementations of this data channel (e.g. over network).

@marmarek

This comment has been minimized.

Show comment
Hide comment
@marmarek

marmarek Feb 16, 2017

Member

Can you use full "GUI daemon" name? GUID means "globally unique identifier".

Member

marmarek commented Feb 16, 2017

Can you use full "GUI daemon" name? GUID means "globally unique identifier".

@rootkovska rootkovska changed the title from Generalize GUID's xc_map_foreign_pages() to Generalize GUI deamon's xc_map_foreign_pages() Feb 16, 2017

@rootkovska rootkovska changed the title from Generalize GUI deamon's xc_map_foreign_pages() to Generalize GUI daemon's xc_map_foreign_pages() Feb 16, 2017

@marmarek

This comment has been minimized.

Show comment
Hide comment
@marmarek

marmarek Mar 19, 2018

Member

For the record, this is implemented in:
QubesOS/qubes-gui-daemon#21
QubesOS/qubes-gui-common#2
QubesOS/qubes-gui-agent-linux#34
(missing qubes-gui-agent-xen-hvm-stubdom)

Member

marmarek commented Mar 19, 2018

For the record, this is implemented in:
QubesOS/qubes-gui-daemon#21
QubesOS/qubes-gui-common#2
QubesOS/qubes-gui-agent-linux#34
(missing qubes-gui-agent-xen-hvm-stubdom)

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment