{"action":"closed","issue":{"url":"https://api.github.com/repos/marmarek/test/issues/14","labels_url":"https://api.github.com/repos/marmarek/test/issues/14/labels{/name}","comments_url":"https://api.github.com/repos/marmarek/test/issues/14/comments","events_url":"https://api.github.com/repos/marmarek/test/issues/14/events","html_url":"https://github.com/marmarek/test/issues/14","id":59572283,"number":14,"title":"Verify if XShmPutImage() works fine when VT-d is enabled","user":{"login":"marmarek","id":726704,"avatar_url":"https://avatars.githubusercontent.com/u/726704?v=3","gravatar_id":"","url":"https://api.github.com/users/marmarek","html_url":"https://github.com/marmarek","followers_url":"https://api.github.com/users/marmarek/followers","following_url":"https://api.github.com/users/marmarek/following{/other_user}","gists_url":"https://api.github.com/users/marmarek/gists{/gist_id}","starred_url":"https://api.github.com/users/marmarek/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/marmarek/subscriptions","organizations_url":"https://api.github.com/users/marmarek/orgs","repos_url":"https://api.github.com/users/marmarek/repos","events_url":"https://api.github.com/users/marmarek/events{/privacy}","received_events_url":"https://api.github.com/users/marmarek/received_events","type":"User","site_admin":false},"labels":[{"url":"https://api.github.com/repos/marmarek/test/labels/C:%20gui-virtualization","name":"C: gui-virtualization","color":"0000aa"},{"url":"https://api.github.com/repos/marmarek/test/labels/P:%20critical","name":"P: critical","color":"ffffb8"},{"url":"https://api.github.com/repos/marmarek/test/labels/R:%20invalid","name":"R: invalid","color":"55ff55"},{"url":"https://api.github.com/repos/marmarek/test/labels/T:%20defect","name":"T: defect","color":"cccccc"}],"state":"closed","locked":false,"assignee":{"login":"marmarek","id":726704,"avatar_url":"https://avatars.githubusercontent.com/u/726704?v=3","gravatar_id":"","url":"https://api.github.com/users/marmarek","html_url":"https://github.com/marmarek","followers_url":"https://api.github.com/users/marmarek/followers","following_url":"https://api.github.com/users/marmarek/following{/other_user}","gists_url":"https://api.github.com/users/marmarek/gists{/gist_id}","starred_url":"https://api.github.com/users/marmarek/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/marmarek/subscriptions","organizations_url":"https://api.github.com/users/marmarek/orgs","repos_url":"https://api.github.com/users/marmarek/repos","events_url":"https://api.github.com/users/marmarek/events{/privacy}","received_events_url":"https://api.github.com/users/marmarek/received_events","type":"User","site_admin":false},"milestone":{"url":"https://api.github.com/repos/marmarek/test/milestones/7","html_url":"https://github.com/marmarek/test/milestones/Release%201%20Alpha%203","labels_url":"https://api.github.com/repos/marmarek/test/milestones/7/labels","id":1003138,"number":7,"title":"Release 1 Alpha 3","description":" * Dynamic Memory Management for VMs\n * [http://theinvisiblethings.blogspot.com/2010/06/disposable-vms.html Disposable AppVMs]\n * Stable GUI virtualization\n * Improved Suspend-to-RAM (S3 Sleep)\n * Many other under-the-hood fixes and improvements\n * ~~Installer~~ (moved to Beta 1)\n","creator":{"login":"marmarek","id":726704,"avatar_url":"https://avatars.githubusercontent.com/u/726704?v=3","gravatar_id":"","url":"https://api.github.com/users/marmarek","html_url":"https://github.com/marmarek","followers_url":"https://api.github.com/users/marmarek/followers","following_url":"https://api.github.com/users/marmarek/following{/other_user}","gists_url":"https://api.github.com/users/marmarek/gists{/gist_id}","starred_url":"https://api.github.com/users/marmarek/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/marmarek/subscriptions","organizations_url":"https://api.github.com/users/marmarek/orgs","repos_url":"https://api.github.com/users/marmarek/repos","events_url":"https://api.github.com/users/marmarek/events{/privacy}","received_events_url":"https://api.github.com/users/marmarek/received_events","type":"User","site_admin":false},"open_issues":0,"closed_issues":4,"state":"closed","created_at":"2015-03-02T23:52:18Z","updated_at":"2015-03-02T23:53:03Z","due_on":null,"closed_at":"2015-03-02T23:52:18Z"},"comments":0,"created_at":"2015-03-02T23:53:02Z","updated_at":"2015-03-02T23:53:03Z","closed_at":"2015-03-02T23:53:03Z","body":"**Reported by joanna on 20 Jun 40303745 20:26 UTC**\nAccording to this message:\nhttp://groups.google.com/group/qubes-devel/msg/9d23cd9c26127ed7\n\nThe XShmPutImage() function, that is used by guid in Dom0 to draw the actual app's pixmap, might attempt to schedule a DMA from the SHM region to video memory. The SHM memory in our case belongs originaly to DomU and is being brought to Dom0 via xc_map_foreign_pages() (see http://qubes-os.org/gitweb/?p=rafal/gui.git;a=blob;f=shmoverride/shmoverride.c;h=77be2127948436013dc8a57ea069901a5d33ec03;hb=HEAD#l48).\n\nIf xc_map_foreign_pages() doesn't update IOMMU/VT-d tables so that the mapped pages belong also to Dom0, than the graphics card, that is VT-d assigned to Dom0, would not be able to do DMA read from those pages, and so the XShmPutImage() might not work correctly (not at all in fact).\n\nTODO: check if xc_map_foreign_pages() updates IOMMU/VT-d tables, and if not discuss a way to add such behaviour on xen-devel and implement a patch."}}