qemu-devel.nongnu.org archive mirror
 help / color / mirror / Atom feed
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
>>
>>     

  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).