Bug 1242968
| Summary: | pci: support booting of devices behind PXB | ||
|---|---|---|---|
| Product: | Red Hat Enterprise Linux 7 | Reporter: | Marcel Apfelbaum <marcel> |
| Component: | seabios | Assignee: | Marcel Apfelbaum <marcel> |
| Status: | CLOSED ERRATA | QA Contact: | Virtualization Bugs <virt-bugs> |
| Severity: | unspecified | Docs Contact: | |
| Priority: | unspecified | ||
| Version: | 7.0 | CC: | huding, juzhang, knoel, marcel, virt-maint, xfu, xwei |
| Target Milestone: | rc | ||
| Target Release: | --- | ||
| Hardware: | Unspecified | ||
| OS: | Unspecified | ||
| Whiteboard: | |||
| Fixed In Version: | seabios-1.7.5-11.el7 | Doc Type: | Bug Fix |
| Doc Text: | Story Points: | --- | |
| Clone Of: | Environment: | ||
| Last Closed: | 2015-11-19 08:20:53 UTC | Type: | Bug |
| Regression: | --- | Mount Type: | --- |
| Documentation: | --- | CRM: | |
| Verified Versions: | Category: | --- | |
| oVirt Team: | --- | RHEL 7.3 requirements from Atomic Host: | |
| Cloudforms Team: | --- | Target Upstream Version: | |
| Embargoed: | |||
|
Description
Marcel Apfelbaum
2015-07-14 13:39:25 UTC
Fix included in seabios-1.7.5-11.el7 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. (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. 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)
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 |