On Thu, Mar 03, 2011 at 08:43:11AM +0200, vagran wrote: > I am using TianoCore EFI by Tristan Gingold which is published > on http://wiki.qemu.org/download/efi-bios.tar.bz2. If you would try > to load it on Qemu 0.14.0 (built either for i386 or x86_64) you will > see nothing on VGA display or serial console. But it still will be > able to load OS after timeout if you have proper disk image.
Thank you for the info. Then I can also test it locally. thanks, >> It seems your EFI BIOS doesn't enable memor, io or master bits >> in command register. >> >> >> or disableintx. >> > I have checked your guess and figured out that it works only > if both memory and io bits are not cleared. So the following > patch also works: > diff --git a/hw/pci.c b/hw/pci.c > index 8b76cea..bcf9b16 100644 > --- a/hw/pci.c > +++ b/hw/pci.c > @@ -163,8 +163,9 @@ void pci_device_reset(PCIDevice *dev) > pci_device_deassert_intx(dev); > /* Clear all writeable bits */ > pci_word_test_and_clear_mask(dev->config + PCI_COMMAND, > - pci_get_word(dev->wmask + PCI_COMMAND) | > - pci_get_word(dev->w1cmask + PCI_COMMAND)); > + (pci_get_word(dev->wmask + PCI_COMMAND) | > + pci_get_word(dev->w1cmask + > PCI_COMMAND)) & > + ~(PCI_COMMAND_IO | PCI_COMMAND_MEMORY)); > pci_word_test_and_clear_mask(dev->config + PCI_STATUS, > pci_get_word(dev->wmask + PCI_STATUS) | > pci_get_word(dev->w1cmask + PCI_STATUS)); > > So probably the problem is in EFI BIOS. But I was not able to find > its source code. Anyone knows how is it built? > > Best regards, > Artyom. > > > Isaku Yamahata wrote: >> On Thu, Mar 03, 2011 at 12:03:53PM +0900, Isaku Yamahata wrote: >> >>> Hi. Thank you for reporting. >>> Can you elaborate on the changeset that you pointed out and >>> your work around? >>> >>> Regarding to the changeset, it had the issue, but I suppose >>> 80376c3fc2c38fdd45354e4b0eb45031f35587ed fixed it. >>> Do you found any other issue? >>> >>> Regarding to your workaround, what was the problem? >>> What EFI BIOS are you using? Tiano-core derivatives that >>> Tristan Gingold worked on? Or other one? >>> It seems your EFI BIOS doesn't enable memor, io or master bits >>> in command register. >>> >> >> or disableintx. >> >> >>> If so, the issue is in the bios, not qemu. >>> >>> thanks, >>> >>> On Wed, Mar 02, 2011 at 11:27:31PM +0200, vagran wrote: >>> >>>> vagran wrote: >>>> >>>>> Hi, >>>>> I have noted that Qemu VGA and serial console with EFI BIOS >>>>> stopped working in >>>>> 0.14.0 (and in latest development snapshot is still not working). >>>>> Everything was >>>>> fine in 0.13.0. However EFI BIOS itself is able to load kernel if it was >>>>> properly configured on used disk image. The only effect is that >>>>> neither VGA nor >>>>> serial console is not functioning. After short investigation I >>>>> have discovered >>>>> that this functionality was broken by this commit: >>>>> >>>>> commit 9bb3358627d87d8de25fb41b7276575539d799a7 >>>>> Author: Isaku Yamahata <yamah...@valinux.co.jp> >>>>> Date: Fri Nov 19 18:56:02 2010 +0900 >>>>> >>>>> Do you have any idea how this change could affect EFI consoles? >>>>> >>>>> >>>> After further investigation I have found that the following patch provides >>>> a workaround for the problem, may be it could be useful for somebody who >>>> is more familiar with Qemu PCI code: >>>> >>>> diff --git a/hw/pci.c b/hw/pci.c >>>> index 8b76cea..06dd7ab 100644 >>>> --- a/hw/pci.c >>>> +++ b/hw/pci.c >>>> @@ -162,9 +162,11 @@ void pci_device_reset(PCIDevice *dev) >>>> pci_update_irq_status(dev); >>>> pci_device_deassert_intx(dev); >>>> /* Clear all writeable bits */ >>>> +#if 0 >>>> pci_word_test_and_clear_mask(dev->config + PCI_COMMAND, >>>> pci_get_word(dev->wmask + PCI_COMMAND) | >>>> pci_get_word(dev->w1cmask + PCI_COMMAND)); >>>> +#endif >>>> pci_word_test_and_clear_mask(dev->config + PCI_STATUS, >>>> pci_get_word(dev->wmask + PCI_STATUS) | >>>> pci_get_word(dev->w1cmask + PCI_STATUS)); >>>> >>>> Best regards, >>>> Artyom. >>>> >>>> >>> -- >>> yamahata >>> >>> > -- yamahata