RHEL Engineering is moving the tracking of its product development work on RHEL 6 through RHEL 9 to Red Hat Jira (issues.redhat.com). If you're a Red Hat customer, please continue to file support cases via the Red Hat customer portal. If you're not, please head to the "RHEL project" in Red Hat Jira and file new tickets here. Individual Bugzilla bugs in the statuses "NEW", "ASSIGNED", and "POST" are being migrated throughout September 2023. Bugs of Red Hat partners with an assigned Engineering Partner Manager (EPM) are migrated in late September as per pre-agreed dates. Bugs against components "kernel", "kernel-rt", and "kpatch" are only migrated if still in "NEW" or "ASSIGNED". If you cannot log in to RH Jira, please consult article #7032570. That failing, please send an e-mail to the RH Jira admins at rh-issues@redhat.com to troubleshoot your issue as a user management inquiry. The email creates a ServiceNow ticket with Red Hat. Individual Bugzilla bugs that are migrated will be moved to status "CLOSED", resolution "MIGRATED", and set with "MigratedToJIRA" in "Keywords". The link to the successor Jira issue will be found under "Links", have a little "two-footprint" icon next to it, and direct you to the "RHEL project" in Red Hat Jira (issue links are of type "https://issues.redhat.com/browse/RHEL-XXXX", where "X" is a digit). This same link will be available in a blue banner at the top of the page informing you that that bug has been migrated.
Bug 1242968 - pci: support booting of devices behind PXB
Summary: pci: support booting of devices behind PXB
Keywords:
Status: CLOSED ERRATA
Alias: None
Product: Red Hat Enterprise Linux 7
Classification: Red Hat
Component: seabios
Version: 7.0
Hardware: Unspecified
OS: Unspecified
unspecified
unspecified
Target Milestone: rc
: ---
Assignee: Marcel Apfelbaum
QA Contact: Virtualization Bugs
URL:
Whiteboard:
Depends On:
Blocks:
TreeView+ depends on / blocked
 
Reported: 2015-07-14 13:39 UTC by Marcel Apfelbaum
Modified: 2015-11-19 08:20 UTC (History)
7 users (show)

Fixed In Version: seabios-1.7.5-11.el7
Doc Type: Bug Fix
Doc Text:
Clone Of:
Environment:
Last Closed: 2015-11-19 08:20:53 UTC
Target Upstream Version:
Embargoed:


Attachments (Terms of Use)


Links
System ID Private Priority Status Summary Last Updated
Red Hat Product Errata RHEA-2015:2218 0 normal SHIPPED_LIVE seabios enhancement update 2015-11-19 08:40:03 UTC

Description Marcel Apfelbaum 2015-07-14 13:39:25 UTC
Backport also Seabios patch:
1202f03583 (bootorder: Update "extra pci root" buses bootorder format to match qemu)
The patch changes PXB fw_path to "/pci@i0cf8,%x/" which is a guest visible code.

Comment 1 Yash Mankad 2015-07-15 19:22:54 UTC
Fix included in seabios-1.7.5-11.el7

Comment 3 Xiaoqing Wei 2015-07-23 08:44:13 UTC
Hi Marcel,

about this bug fix, I got a couple of questions, could you please help me by explain:

1) 1202f03583 (bootorder: Update "extra pci root" buses bootorder format to match qemu)

do you mean the change introcuded by this qemu commit ?
67d1a97 hw/pci-bridge: format special OFW unit address for PXB host

if true, then this bug fix should use qemu-kvm-rhev-2.3.0-11.el7 to test, right ?


2) since this is a guest visible change(as stated on C#0), does the compatibility from 7.1 kept ? in another word:
on updated seabios(seabios-1.7.5-11.el7) + updated qemu(qemu-kvm-rhev-2.3.0-11.el7) with -M 7.1.0, would it behave identical to qemu-kvm-rhev-7.1GA+seabios-7.1GA ?


3) could you please provide a test scenario and expected result ?


Thanks,
Xiaoqing.

Comment 4 Marcel Apfelbaum 2015-07-24 11:06:58 UTC
(In reply to Xiaoqing Wei from comment #3)
> Hi Marcel,
> 
> about this bug fix, I got a couple of questions, could you please help me by
> explain:
Hi,
Sure, I'll do my best to respond
> 
> 1) 1202f03583 (bootorder: Update "extra pci root" buses bootorder format to
> match qemu)
> 
> do you mean the change introcuded by this qemu commit ?
Yes

> 67d1a97 hw/pci-bridge: format special OFW unit address for PXB host
> 
> if true, then this bug fix should use qemu-kvm-rhev-2.3.0-11.el7 to test,
> right ?
Yes

> 
> 
> 2) since this is a guest visible change(as stated on C#0), does the
> compatibility from 7.1 kept ? in another word:
> on updated seabios(seabios-1.7.5-11.el7) + updated
> qemu(qemu-kvm-rhev-2.3.0-11.el7) with -M 7.1.0, would it behave identical to
> qemu-kvm-rhev-7.1GA+seabios-7.1GA ?
Yes, it should.

> 
> 
> 3) could you please provide a test scenario and expected result ?
Sure,
1. Add a PXB device to QEMU (see docs/docs/pci_expander_bridge.txt).
2. Add a NIC to PXB's bus, say e1000.
3. Try to boot from this NIC using PXE, and see for example you can use PXE to install an OS (One of the main reasons we are doing this)


Thanks,
Marcel

> 
> 
> Thanks,
> Xiaoqing.

Comment 5 Xiaoqing Wei 2015-07-27 06:46:08 UTC
use cli as below, and pxe to install a rhel 6.7

then boot from drive(with pxe installed rhel 6.7) and lspci,

all functional.

/usr/libexec/qemu-kvm -monitor stdio -S -vnc :20 \
-m 1G \
-object memory-backend-ram,size=1024M,policy=bind,host-nodes=0,id=ram-node0 -numa node,nodeid=0,cpus=0,memdev=ram-node0 \
-device pxb,id=bridge2,bus=pci.0,numa_node=0,bus_nr=8,bus=pci.0 -device e1000,bus=bridge2,addr=0x3,netdev=tap10,mac=9a:6a:6b:6c:6d:6e -netdev tap,id=tap10 \
-device pxb,id=bridge3,bus=pci.0,bus_nr=40,bus=pci.0 -drive if=none,id=drive0,file="/root/pxb.qcow2" -device virtio-blk-pci,drive=drive0,scsi=off,bus=bridge3,addr=1


[root@dhcp-9-151 ~]# lspci
00:00.0 Host bridge: Intel Corporation 440FX - 82441FX PMC [Natoma] (rev 02)
00:01.0 ISA bridge: Intel Corporation 82371SB PIIX3 ISA [Natoma/Triton II]
00:01.1 IDE interface: Intel Corporation 82371SB PIIX3 IDE [Natoma/Triton II]
00:01.3 Bridge: Intel Corporation 82371AB/EB/MB PIIX4 ACPI (rev 03)
00:02.0 VGA compatible controller: Device 1234:1111 (rev 02)
00:03.0 Host bridge: Red Hat, Inc. Device 0009
00:04.0 Host bridge: Red Hat, Inc. Device 0009
08:00.0 PCI bridge: Red Hat, Inc. QEMU PCI-PCI bridge
09:03.0 Ethernet controller: Intel Corporation 82540EM Gigabit Ethernet Controller (rev 03)
28:00.0 PCI bridge: Red Hat, Inc. QEMU PCI-PCI bridge
29:01.0 SCSI storage controller: Red Hat, Inc Virtio block device
[root@dhcp-9-151 ~]# lspci -t
-+-[0000:28]---00.0-[29]----01.0
 +-[0000:08]---00.0-[09]----03.0
 \-[0000:00]-+-00.0
             +-01.0
             +-01.1
             +-01.3
             +-02.0
             +-03.0
             \-04.0


(qemu) info qtree 
bus: main-system-bus
  type System
  dev: pxb-host, id ""
    bus: pxb-internal
      type pxb-bus
      dev: pci-bridge, id "bridge3"
        chassis_nr = 40 (0x28)
        msi = false
        shpc = false
        addr = 00.0
        romfile = ""
        rombar = 1 (0x1)
        multifunction = false
        command_serr_enable = true
        class PCI bridge, addr 28:00.0, pci id 1b36:0001 (sub 0000:0000)
        bus: bridge3
          type PCI
          dev: virtio-blk-pci, id ""
            class = 0 (0x0)
            ioeventfd = true
            vectors = 2 (0x2)
            virtio-pci-bus-master-bug-migration = false
            disable-legacy = false
            disable-modern = true
            addr = 01.0
            romfile = ""
            rombar = 1 (0x1)
            multifunction = false
            command_serr_enable = true
            class SCSI controller, addr 29:01.0, pci id 1af4:1001 (sub 1af4:0002)
            bar 0: i/o at 0xc000 [0xc03f]
            bar 1: mem at 0xfe600000 [0xfe600fff]
            bus: virtio-bus
              type virtio-pci-bus
              dev: virtio-blk-device, id ""
                drive = "drive0"
                logical_block_size = 512 (0x200)
                physical_block_size = 512 (0x200)
                min_io_size = 0 (0x0)
                opt_io_size = 0 (0x0)
                discard_granularity = 4294967295 (0xffffffff)
                cyls = 16383 (0x3fff)
                heads = 16 (0x10)
                secs = 63 (0x3f)
                serial = ""
                config-wce = true
                scsi = false
                request-merging = true
                x-data-plane = false
                indirect_desc = true
                event_idx = true
                notify_on_empty = true
  dev: pxb-host, id ""
    bus: pxb-internal
      type pxb-bus
      dev: pci-bridge, id "bridge2"
        chassis_nr = 8 (0x8)
        msi = false
        shpc = false
        addr = 00.0
        romfile = ""
        rombar = 1 (0x1)
        multifunction = false
        command_serr_enable = true
        class PCI bridge, addr 08:00.0, pci id 1b36:0001 (sub 0000:0000)
        bus: bridge2
          type PCI
          dev: e1000, id ""
            mac = "9a:6a:6b:6c:6d:6e"
            vlan = <null>
            netdev = "tap10"
            autonegotiation = true
            mitigation = true
            addr = 03.0
            romfile = "pxe-e1000.rom"
            rombar = 1 (0x1)
            multifunction = false
            command_serr_enable = true
            class Ethernet controller, addr 09:03.0, pci id 8086:100e (sub 1af4:1100)
            bar 0: mem at 0xfe840000 [0xfe85ffff]
            bar 1: i/o at 0xd000 [0xd03f]
            bar 6: mem at 0xffffffffffffffff [0x3fffe]
  dev: kvm-ioapic, id ""
    gpio-in "" 24
    gsi_base = 0 (0x0)
    mmio 00000000fec00000/0000000000001000
  dev: i440FX-pcihost, id ""
    pci-hole64-size = 18446744073709551615 (16 EiB)
    short_root_bus = 0 (0x0)
    bus: pci.0
      type PCI
      dev: pxb, id "bridge3"
        bus_nr = 40 (0x28)
        numa_node = 128 (0x80)
        addr = 04.0
        romfile = ""
        rombar = 1 (0x1)
        multifunction = false
        command_serr_enable = true
        class Host bridge, addr 00:04.0, pci id 1b36:0009 (sub 1af4:1100)
      dev: pxb, id "bridge2"
        bus_nr = 8 (0x8)
        numa_node = 0 (0x0)
        addr = 03.0
        romfile = ""
        rombar = 1 (0x1)
        multifunction = false
        command_serr_enable = true
        class Host bridge, addr 00:03.0, pci id 1b36:0009 (sub 1af4:1100)
      dev: PIIX4_PM, id ""
        smb_io_base = 1792 (0x700)
        disable_s3 = 1 (0x1)
        disable_s4 = 1 (0x1)
        s4_val = 2 (0x2)
        acpi-pci-hotplug-with-bridge-support = true
        memory-hotplug-support = true
        addr = 01.3
        romfile = ""
        rombar = 1 (0x1)
        multifunction = false
        command_serr_enable = true
        class Bridge, addr 00:01.3, pci id 8086:7113 (sub 1af4:1100)
        bus: i2c
          type i2c-bus
          dev: smbus-eeprom, id ""
            address = 87 (0x57)
          dev: smbus-eeprom, id ""
            address = 86 (0x56)
          dev: smbus-eeprom, id ""
            address = 85 (0x55)
          dev: smbus-eeprom, id ""
            address = 84 (0x54)
          dev: smbus-eeprom, id ""
            address = 83 (0x53)
          dev: smbus-eeprom, id ""
            address = 82 (0x52)
          dev: smbus-eeprom, id ""
            address = 81 (0x51)
          dev: smbus-eeprom, id ""
            address = 80 (0x50)
      dev: piix3-ide, id ""
        addr = 01.1
        romfile = ""
        rombar = 1 (0x1)
        multifunction = false
        command_serr_enable = true
        class IDE controller, addr 00:01.1, pci id 8086:7010 (sub 1af4:1100)
        bar 4: i/o at 0xe000 [0xe00f]
        bus: ide.1
          type IDE
          dev: ide-cd, id ""
            drive = "ide1-cd0"
            logical_block_size = 512 (0x200)
            physical_block_size = 512 (0x200)
            min_io_size = 0 (0x0)
            opt_io_size = 0 (0x0)
            discard_granularity = 512 (0x200)
            ver = "2.3.0"
            wwn = 0 (0x0)
            serial = "QM00003"
            model = ""
            unit = 0 (0x0)
        bus: ide.0
          type IDE
      dev: VGA, id ""
        vgamem_mb = 16 (0x10)
        mmio = true
        qemu-extended-regs = true
        addr = 02.0
        romfile = "vgabios-stdvga.bin"
        rombar = 1 (0x1)
        multifunction = false
        command_serr_enable = true
        class VGA controller, addr 00:02.0, pci id 1234:1111 (sub 1af4:1100)
        bar 0: mem at 0xfd000000 [0xfdffffff]
        bar 2: mem at 0xfea10000 [0xfea10fff]
        bar 6: mem at 0xffffffffffffffff [0xfffe]
      dev: PIIX3, id ""
        addr = 01.0
        romfile = ""
        rombar = 1 (0x1)
        multifunction = true
        command_serr_enable = true
        class ISA bridge, addr 00:01.0, pci id 8086:7000 (sub 1af4:1100)
        bus: isa.0
          type ISA
          dev: isa-fdc, id ""
            iobase = 1008 (0x3f0)
            irq = 6 (0x6)
            dma = 2 (0x2)
            driveA = "floppy0"
            driveB = ""
            check_media_rate = true
            isa irq 6
          dev: port92, id ""
          dev: vmmouse, id ""
          dev: vmport, id ""
          dev: i8042, id ""
            isa irqs 1,12
          dev: isa-serial, id ""
            index = 0 (0x0)
            iobase = 1016 (0x3f8)
            irq = 4 (0x4)
            chardev = "serial0"
            wakeup = 0 (0x0)
            isa irq 4
          dev: isa-pcspk, id ""
            iobase = 97 (0x61)
          dev: kvm-pit, id ""
            gpio-in "" 1
            iobase = 64 (0x40)
            lost_tick_policy = "delay"
          dev: mc146818rtc, id ""
            base_year = 0 (0x0)
            lost_tick_policy = "discard"
            isa irq 8
          dev: kvm-i8259, id ""
            iobase = 160 (0xa0)
            elcr_addr = 1233 (0x4d1)
            elcr_mask = 222 (0xde)
            master = false
          dev: kvm-i8259, id ""
            iobase = 32 (0x20)
            elcr_addr = 1232 (0x4d0)
            elcr_mask = 248 (0xf8)
            master = true
      dev: i440FX, id ""
        addr = 00.0
        romfile = ""
        rombar = 1 (0x1)
        multifunction = false
        command_serr_enable = true
        class Host bridge, addr 00:00.0, pci id 8086:1237 (sub 1af4:1100)
  dev: fw_cfg_io, id ""
    iobase = 1296 (0x510)
  dev: kvmclock, id ""
  dev: kvmvapic, id ""
  dev: icc-bridge, id ""
    mmio 00000000fee00000/0000000000100000
    bus: icc
      type icc-bus
      dev: kvm-apic, id ""
        id = 0 (0x0)
        version = 20 (0x14)
        vapic = true
      dev: qemu64-x86_64-cpu, id ""
        pmu = false
        hv-spinlocks = -1 (0xffffffffffffffff)
        hv-relaxed = false
        hv-vapic = false
        hv-time = false
        check = false
        enforce = false
        kvm = true
(qemu)

Comment 7 errata-xmlrpc 2015-11-19 08:20:53 UTC
Since the problem described in this bug report should be
resolved in a recent advisory, it has been closed with a
resolution of ERRATA.

For information on the advisory, and where to find the updated
files, follow the link below.

If the solution does not work for you, open a new bug report.

https://rhn.redhat.com/errata/RHEA-2015-2218.html


Note You need to log in before you can comment on or make changes to this bug.