qemu-devel.nongnu.org archive mirror
 help / color / mirror / Atom feed
From: Laszlo Ersek <lersek@redhat.com>
To: Marcel Apfelbaum <marcel@redhat.com>,
	"Michael S. Tsirkin" <mst@redhat.com>
Cc: pbonzini@redhat.com, Gerd Hoffmann <kraxel@redhat.com>,
	qemu-devel@nongnu.org
Subject: Re: [Qemu-devel] [PATCH V7 23/24] apci: fix PXB behaviour if used with unsupported BIOS
Date: Mon, 01 Jun 2015 17:37:29 +0200	[thread overview]
Message-ID: <556C7C39.6000201@redhat.com> (raw)
In-Reply-To: <556C62B7.5080305@redhat.com>

On 06/01/15 15:48, Marcel Apfelbaum wrote:
> On 06/01/2015 04:28 PM, Laszlo Ersek wrote:
>> On 06/01/15 15:05, Marcel Apfelbaum wrote:
>>> On 06/01/2015 03:27 PM, Michael S. Tsirkin wrote:
>>>> On Mon, Jun 01, 2015 at 03:21:19PM +0300, Marcel Apfelbaum wrote:
>>>>> On 06/01/2015 03:17 PM, Michael S. Tsirkin wrote:
>>>>>> On Mon, Jun 01, 2015 at 01:40:19PM +0200, Gerd Hoffmann wrote:
>>>>>>> On Mo, 2015-06-01 at 12:44 +0300, Marcel Apfelbaum wrote:
>>>>>>>> On 05/31/2015 09:12 PM, Michael S. Tsirkin wrote:
>>>>>>>>> On Mon, May 25, 2015 at 06:34:01PM +0300, Marcel Apfelbaum wrote:
>>>>>>>>>> PXB does not work with unsupported bioses, but should
>>>>>>>>>> not interfere with normal OS operation.
>>>>>>>>>> We don't ship them anymore, but it's reasonable
>>>>>>>>>> to keep the work-around until we update the bios in qemu.
>>>>>>>>>
>>>>>>>>> We already did, did we not?
>>>>>>>> Yes, we did, but Gerd preferred to keep this patch around.
>>>>>>>> Adding him to thread.
>>>>>>>
>>>>>>> seabios bundled with qemu isn't the only possible firmware.
>>>>>>>
>>>>>>> We have ovmf, coreboot, qboot.
>>>>>>
>>>>>> ovmf is especially interesting. Marcel, did you look at what
>>>>>> happens with pxb and ovmf?
>>>>> No, I talked to Laszlo about it, he said ovmf is not there yet.
>>>>> OVMF will not query the extra buses, so the devices on the extra bus
>>>>> will not be visible.
>>>>> Adding him to the thread.
>>>>>
>>>>> Thanks,
>>>>> Marcel
>>>>
>>>> But does OVMF need this specific patch?
>>> I don't think so because more than likely it doesn't scan for the extra
>>> buses,
>>> so it will not try to configure these devices.
>>> Laszlo, am I right?
>>
>> Well, I don't know. :)
>>
>> First, I'm not seeing the specific patch in question (can you pls send
>> me a URL into the web archive, or a Message-Id?)
> Well, there are a few patches, all this series,
> You can look for patches:
> 13/24 hw/acpi: add support for i440fx 'snooping' root busses -> acpi
> declarations
> 18/24 hw/pci: introduce PCI Expander Bridge (PXB)
> 19/24 hw/pci: inform bios if the system has extra pci root buses
> 
> Basically we add the pxb resources to ACPI tables and then inform BIOS
> using
> etc/extra-pci-roots fw_config file that he has extra roots to scan.
> 
> If the OVMF only looks for bus 0 and does not scan all possible buses
> it will not see PXB's root bus

I don't know enough about PCI to reply sensibly.

I can tell you that the bus range in OVMF, from "mResAperture" in
"PcAtChipsetPkg/PciHostBridgeDxe/PciHostBridge.c", is [0..0xff], inclusive.

This bus range is then exposed in the function StartBusEnumeration() to
the caller (which is the PCI bus driver), as an output parameter. The
StartBusEnumeration() function has the following leading comment:

> Sets up the specified PCI root bridge for the bus enumeration process.
>
> This member function sets up the root bridge for bus enumeration and
> returns the PCI bus range over which the search should be performed
> in ACPI 2.0 resource descriptor format.

So, there's a chance that if those busses actually exist on the virtual
hardware, the drivers included by OVMF from the generic edk2 source
"will just work". It is also possible that OVMF will notice no change at
all.

Do you have a public branch, and a matching command line? The PCI
enumeration / resource allocation spews a bunch of messages in OVMF, so
if you placed (on the QEMU command line) some devices on one of these
nonzero buses, then their enumeration / resource allocation, determined
from the log, could serve as evidence. (I think this should be testable
on a non-NUMA host, and without passthrough devices as well.)

Also, I checked the actual code hunks & message body for this patch (ie.
23/24) on the web. Looks like I should be able to dump the ACPI tables
in the guest, and get those dumps to you for verification. OVMF does
delay the ACPI download until after PCI enumeration, so the state of the
guest _CRS would be (negative or positive) proof, not lack of proof.

Thanks
Laszlo

> Thanks,
> Marcel
> 
> 
>> Second, recently I tested OVMF on Q35, but not just with a simple /
>> usual command line invocation -- I tested it on a Q35 machine configured
>> by libvirt. That's a very different animal.
>>
>> While it exposed a problem in OVMF's own boot order processing:
>>
>> https://github.com/tianocore/edk2/commit/feca17fa4b
>>
>> I was surprised to see that the PCI bus driver enumerated devices behind
>> two bridges no less without any problems. So, bridges off the one root
>> bridge should work, but several root bridges probably won't. (Exposing
>> root bridges is the responsibility of another driver, and they are not
>> enumerable in the usual way.)
>>
>> Thanks
>> Laszlo
>>
> 

  reply	other threads:[~2015-06-01 15:37 UTC|newest]

Thread overview: 46+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2015-05-25 15:33 [Qemu-devel] [PATCH V7 00/24] hw/pc: implement multiple primary busses for pc machines Marcel Apfelbaum
2015-05-25 15:33 ` [Qemu-devel] [PATCH V7 01/24] acpi: add aml_or() term Marcel Apfelbaum
2015-05-25 15:33 ` [Qemu-devel] [PATCH V7 02/24] acpi: add aml_add() term Marcel Apfelbaum
2015-05-26  6:09   ` Shannon Zhao
2015-05-25 15:33 ` [Qemu-devel] [PATCH V7 03/24] acpi: add aml_lless() term Marcel Apfelbaum
2015-05-25 15:33 ` [Qemu-devel] [PATCH V7 04/24] acpi: add aml_index() term Marcel Apfelbaum
2015-05-26  6:12   ` Shannon Zhao
2015-05-25 15:33 ` [Qemu-devel] [PATCH V7 05/24] acpi: add aml_shiftleft() term Marcel Apfelbaum
2015-05-26  6:15   ` Shannon Zhao
2015-05-25 15:33 ` [Qemu-devel] [PATCH V7 06/24] acpi: add aml_shiftright() term Marcel Apfelbaum
2015-05-26  6:16   ` Shannon Zhao
2015-05-25 15:33 ` [Qemu-devel] [PATCH V7 07/24] acpi: add aml_increment() term Marcel Apfelbaum
2015-05-25 15:33 ` [Qemu-devel] [PATCH V7 08/24] acpi: add aml_while() term Marcel Apfelbaum
2015-05-25 15:33 ` [Qemu-devel] [PATCH V7 09/24] hw/pci: made pci_bus_is_root a PCIBusClass method Marcel Apfelbaum
2015-05-25 15:33 ` [Qemu-devel] [PATCH V7 10/24] hw/pci: made pci_bus_num " Marcel Apfelbaum
2015-05-25 15:33 ` [Qemu-devel] [PATCH V7 11/24] hw/i386: query only for q35/pc when looking for pci host bridge Marcel Apfelbaum
2015-05-25 15:33 ` [Qemu-devel] [PATCH V7 12/24] hw/pci: extend PCI config access to support devices behind PXB Marcel Apfelbaum
2015-05-25 15:33 ` [Qemu-devel] [PATCH V7 13/24] hw/acpi: add support for i440fx 'snooping' root busses Marcel Apfelbaum
2015-05-25 15:33 ` [Qemu-devel] [PATCH V7 14/24] hw/apci: add _PRT method for extra PCI " Marcel Apfelbaum
2015-05-25 15:33 ` [Qemu-devel] [PATCH V7 15/24] hw/acpi: add _CRS method for extra " Marcel Apfelbaum
2015-05-25 15:33 ` [Qemu-devel] [PATCH V7 16/24] hw/acpi: remove from root bus 0 the crs resources used by other buses Marcel Apfelbaum
2015-05-25 15:33 ` [Qemu-devel] [PATCH V7 17/24] hw/pci: removed 'rootbus nr is 0' assumption from qmp_pci_query Marcel Apfelbaum
2015-05-25 15:33 ` [Qemu-devel] [PATCH V7 18/24] hw/pci: introduce PCI Expander Bridge (PXB) Marcel Apfelbaum
2015-05-25 15:33 ` [Qemu-devel] [PATCH V7 19/24] hw/pci: inform bios if the system has extra pci root buses Marcel Apfelbaum
2015-05-25 15:33 ` [Qemu-devel] [PATCH V7 20/24] hw/pxb: add map_irq func Marcel Apfelbaum
2015-05-25 15:33 ` [Qemu-devel] [PATCH V7 21/24] hw/pci: add support for NUMA nodes Marcel Apfelbaum
2015-05-25 15:34 ` [Qemu-devel] [PATCH V7 22/24] hw/pxb: add numa_node parameter Marcel Apfelbaum
2015-05-25 15:34 ` [Qemu-devel] [PATCH V7 23/24] apci: fix PXB behaviour if used with unsupported BIOS Marcel Apfelbaum
2015-05-31 18:12   ` Michael S. Tsirkin
2015-06-01  9:44     ` Marcel Apfelbaum
2015-06-01 11:40       ` Gerd Hoffmann
2015-06-01 12:17         ` Michael S. Tsirkin
2015-06-01 12:21           ` Marcel Apfelbaum
2015-06-01 12:27             ` Michael S. Tsirkin
2015-06-01 13:05               ` Marcel Apfelbaum
2015-06-01 13:28                 ` Laszlo Ersek
2015-06-01 13:48                   ` Marcel Apfelbaum
2015-06-01 15:37                     ` Laszlo Ersek [this message]
2015-06-02 11:37                       ` Marcel Apfelbaum
2015-06-02 15:24                         ` Laszlo Ersek
2015-06-02 15:51                           ` Marcel Apfelbaum
2015-06-01 12:24           ` Gerd Hoffmann
2015-06-01 12:27             ` Michael S. Tsirkin
2015-06-01 12:57               ` Gerd Hoffmann
2015-06-01 13:26                 ` Michael S. Tsirkin
2015-05-25 15:34 ` [Qemu-devel] [PATCH V7 24/24] docs: Add PXB documentation Marcel Apfelbaum

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=556C7C39.6000201@redhat.com \
    --to=lersek@redhat.com \
    --cc=kraxel@redhat.com \
    --cc=marcel@redhat.com \
    --cc=mst@redhat.com \
    --cc=pbonzini@redhat.com \
    --cc=qemu-devel@nongnu.org \
    /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).