From mboxrd@z Thu Jan 1 00:00:00 1970 From: Pavel =?utf-8?q?Mat=C4=9Bja?= Subject: Re: [Xen-users] VGA passthough still not working Date: Wed, 25 Jan 2012 20:29:12 +0100 Message-ID: <201201252029.12936.pavel@netsafe.cz> References: <1327510331.2452.21.camel@mnetdjm5.mageenet.host> Mime-Version: 1.0 Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit Return-path: In-Reply-To: <1327510331.2452.21.camel@mnetdjm5.mageenet.host> List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Sender: xen-devel-bounces@lists.xensource.com Errors-To: xen-devel-bounces@lists.xensource.com To: xen-devel@lists.xensource.com List-Id: xen-devel@lists.xenproject.org On Wed 25. of January 2012 17:52:11 Doug Magee wrote: > Also, i believe you said the card you're trying to pass through is not > the primary card in your host system. If that's the case, don't use > gfx_passthru or expect to get the video bios working. The 'primary' > video adapter owns certain io ports and memory areas that are consitent > from machine to machine. Also, the system will copy the vbios from the > card to a location in memory (0xc0000) so it can execute at boot time. > > Xen's gfx_passthru code depends on all of these factors. As the code > stands, if you use gfx_passthru on a secondary card, it will still copy > the vbios from the primary card (as it simply reads memory from > 0xc0000), and directly map io ports and low memory areas to those used > by the primary card in the host system. In this case the guest will > almost certainly never get past executing ROMBIOS, and the host may or > may not lock up or experience 'issues'. This will do the trick with secondary card (replace path to VGA BIOS): --- xen-unstable.hg.working/tools/ioemu-remote/hw/pt-graphics.c 2012-01-25 20:26:37.927654890 +0100 +++ xen-unstable.hg.working.generic/tools/ioemu-remote/hw/pt-graphics.c 2011-07-30 13:57:57.347396095 +0200 @@ -487,10 +487,10 @@ { int fd; uint32_t bios_size = 0; - uint32_t start = 0; + uint32_t start = 0xC0000; uint16_t magic = 0; - if ( (fd = open("/lib/firmware/ASUS.HD6850.1024.101007.bin", O_RDONLY)) < 0 ) + if ( (fd = open("/dev/mem", O_RDONLY)) < 0 ) { PT_LOG("Error: Can't open /dev/mem: %s\n", strerror(errno)); return 0; -- Pavel Mateja