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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.