[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] Re: [Xen-devel] Getting VGA Passthrough to work on Xen Unstable
Hi, >Hi all, > >I've tried to filter out parts of XCI that are relevant to VGA >passthrough (most, if not all, are Jean Guyader's work) and apply them >to Xen unstable. The patch doesn't work with changeset 19597. I'm not >sure why. But I've gotten DomU to boot up showing only the physical gfx >on previous changesets. I didn't have a chance to test the gfx >functionalities though. I made a lot of simplifications, such as >excluding user options, and ignoring HID passthrough for now. The patch >is hardcoded for VGA passthrough on HVM guests. The reason is really to >study which are the parts really affect VGA passthrough, and of course >ultimately getting VGA passthrough to work. > >This may seem like taking a step backwards, but I think there are many >people out there who are new, like me, and are really interested to >understand and get VGA passthrough to work correctly. I'm hoping that >experts out there can provide constructive criticism on this patch, and >of course provide suggestions on how to make this patch work for the >latest changeset. > I suspect the VGA rom doesn't be loaded. pci_load_option_roms() loads only mass stroage devices and serial bus controller. You need to remove the ckeck. @tools/firmware/hvmloader/hvmloader.c 476 static int pci_load_option_roms(uint32_t rom_base_addr) 477 { 478 uint32_t option_rom_addr, rom_phys_addr = rom_base_addr; 479 uint16_t vendor_id, device_id; 480 uint8_t devfn, class; 481 482 for ( devfn = 0; devfn < 128; devfn++ ) 483 { 484 class = pci_readb(devfn, PCI_CLASS_DEVICE + 1); 485 vendor_id = pci_readw(devfn, PCI_VENDOR_ID); 486 device_id = pci_readw(devfn, PCI_DEVICE_ID); 487 488 if ( (vendor_id == 0xffff) && (device_id == 0xffff) ) 489 continue; 490 491 /* 492 * Currently only scan options from mass storage devices and serial 493 * bus controller (Fibre Channel included). 494 */ 495 if ( (class != 0x1) && (class != 0xc) ) 496 continue; 497 498 option_rom_addr = pci_readl(devfn, PCI_ROM_ADDRESS); 499 if ( !option_rom_addr ) 500 continue; 501 502 /* Ensure Expansion Bar is enabled before copying */ 503 pci_writel(devfn, PCI_ROM_ADDRESS, option_rom_addr | 0x1); 504 505 rom_phys_addr += scan_option_rom( 506 devfn, vendor_id, device_id, 507 (void *)(option_rom_addr & ~2047), rom_phys_addr); 508 509 /* Restore the default original value of Expansion Bar */ 510 pci_writel(devfn, PCI_ROM_ADDRESS, option_rom_addr); 511 } 512 513 return rom_phys_addr - rom_base_addr; 514 } Best Regards, Akio Takebe _______________________________________________ Xen-devel mailing list Xen-devel@xxxxxxxxxxxxxxxxxxx http://lists.xensource.com/xen-devel
|
Lists.xenproject.org is hosted with RackSpace, monitoring our |