qemu-devel.nongnu.org archive mirror
 help / color / mirror / Atom feed
From: Isaku Yamahata <yamahata@valinux.co.jp>
To: vagran <vagran.ast@gmail.com>
Cc: qemu-devel@nongnu.org
Subject: Re: [Qemu-devel] Re: EFI console stopped working in Qemu 0.14.0
Date: Thu, 3 Mar 2011 16:46:34 +0900	[thread overview]
Message-ID: <20110303074634.GH1759@valinux.co.jp> (raw)
In-Reply-To: <4D6F387F.2000505@gmail.com>


Seabios has the patch to address the similar issue with
the changeset of b82a1e49fc0e72fb9bf1a642d6aa707345b0f398,
which enables memory/io unconditionally.

I suppose the EFI bios is very old so that it has the same issue.
I think the following file is the one to modify.

efi-vfirmware.hg/edk2-sparse/EdkQemuPkg/Pei/BochsPciScan/BochsPciScan.c

thanks,

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

-- 
yamahata

  parent reply	other threads:[~2011-03-03  7:46 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
2011-03-03  7:38         ` Isaku Yamahata
2011-03-03  7:46         ` Isaku Yamahata [this message]
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=20110303074634.GH1759@valinux.co.jp \
    --to=yamahata@valinux.co.jp \
    --cc=qemu-devel@nongnu.org \
    --cc=vagran.ast@gmail.com \
    /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).