From: vagran <vagran.ast@gmail.com>
To: Isaku Yamahata <yamahata@valinux.co.jp>
Cc: qemu-devel@nongnu.org
Subject: Re: [Qemu-devel] Re: EFI console stopped working in Qemu 0.14.0
Date: Thu, 03 Mar 2011 08:43:11 +0200 [thread overview]
Message-ID: <4D6F387F.2000505@gmail.com> (raw)
In-Reply-To: <20110303030959.GD1759@valinux.co.jp>
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.
> 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 <yamahata@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
>>
>>
next prev parent reply other threads:[~2011-03-03 6:43 UTC|newest]
Thread overview: 15+ messages / expand[flat|nested] mbox.gz Atom feed top
2011-03-02 20:31 [Qemu-devel] EFI console stopped working in Qemu 0.14.0 vagran
2011-03-02 21:27 ` [Qemu-devel] " vagran
2011-03-03 3:03 ` Isaku Yamahata
2011-03-03 3:09 ` Isaku Yamahata
2011-03-03 6:43 ` vagran [this message]
2011-03-03 7:38 ` Isaku Yamahata
2011-03-03 7:46 ` Isaku Yamahata
2011-03-03 7:48 ` Isaku Yamahata
2011-03-03 8:20 ` Tristan Gingold
2011-03-03 18:02 ` vagran
2011-03-06 3:35 ` Jordan Justen
2011-03-06 10:10 ` vagran
[not found] ` <AANLkTik968MQ9K+DGqrLDsse04BPMep9mQpXT55TCUnn@mail.gmail.com>
2011-03-06 21:26 ` vagran
2011-03-06 23:36 ` Jordan Justen
2011-03-07 18:35 ` vagran
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=4D6F387F.2000505@gmail.com \
--to=vagran.ast@gmail.com \
--cc=qemu-devel@nongnu.org \
--cc=yamahata@valinux.co.jp \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).