[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [Qemu-devel] OVMF with q35 (was: osx bootloader)
From: |
BALATON Zoltan |
Subject: |
Re: [Qemu-devel] OVMF with q35 (was: osx bootloader) |
Date: |
Sat, 1 Feb 2014 15:35:09 +0100 (CET) |
User-agent: |
Alpine 2.02 (LMD 1266 2009-07-14) |
On Sat, 1 Feb 2014, Alexander Graf wrote:
The assert happens inside the guest, so I'm afraid you'll have to add
debugging output to edk2. Just print out the port number if port & 3 in
the code path above.
I've come this same conclusion too after I managed to enable qemu iport
debugging but it wasn't helpful. I've added logging to edk2 but I still
don't know what's going on. This is what I got:
Without -M q35 where it works:
(qemu) info pci
Bus 0, device 0, function 0:
Host bridge: PCI device 8086:1237
id ""
Bus 0, device 1, function 0:
ISA bridge: PCI device 8086:7000
id ""
Bus 0, device 1, function 1:
IDE controller: PCI device 8086:7010
BAR4: I/O at 0xffffffffffffffff [0x000e].
id ""
Bus 0, device 1, function 3:
Bridge: PCI device 8086:7113
IRQ 0.
id ""
Bus 0, device 2, function 0:
VGA controller: PCI device 1013:00b8
BAR0: 32 bit prefetchable memory at 0xffffffffffffffff [0x01fffffe].
BAR1: 32 bit memory at 0xffffffffffffffff [0x00000ffe].
BAR6: 32 bit memory at 0xffffffffffffffff [0x0000fffe].
id ""
Bus 0, device 3, function 0:
Ethernet controller: PCI device 8086:100e
IRQ 0.
BAR0: 32 bit memory at 0xffffffffffffffff [0x0001fffe].
BAR1: I/O at 0xffffffffffffffff [0x003e].
BAR6: 32 bit memory at 0xffffffffffffffff [0x0003fffe].
id ""
PciBus: Resource Map for Root Bridge PciRoot(0x0)
Type = Io16; Base = 0xC000; Length = 0x1000; Alignment = 0xFFF
Base = 0xC000; Length = 0x40; Alignment = 0x3F; Owner = PCI
[00|03|00:14]
Base = 0xC040; Length = 0x10; Alignment = 0xF; Owner = PCI
[00|01|01:20]
Type = Mem32; Base = 0x80000000; Length = 0x2100000; Alignment =
0x1FFFFFF
Base = 0x80000000; Length = 0x2000000; Alignment = 0x1FFFFFF; Owner =
PCI [00|02|00:10]
Base = 0x82000000; Length = 0x20000; Alignment = 0x1FFFF; Owner =
PCI [00|03|00:10]
Base = 0x82020000; Length = 0x1000; Alignment = 0xFFF; Owner =
PCI [00|02|00:14]
[...]
IoWrite32 CF8 80000820
IoRead32 CFC
IoWrite32 CF8 00000000
IoRead32 CF8
IoWrite32 CF8 80000824
IoRead32 CFC
IoWrite32 CF8 00000000
IoRead32 CF8
IoWrite32 CF8 80000828
IoRead32 CFC
IoWrite32 CF8 00000000
IoRead32 CF8
IoWrite32 CF8 8000082C
IoRead32 CFC
IoWrite32 CF8 00000000
IoRead32 CF8
IoWrite32 CF8 80000830
IoRead32 CFC
IoWrite32 CF8 00000000
IoRead32 CF8
IoWrite32 CF8 80000834
IoRead32 CFC
IoWrite32 CF8 00000000
IoRead32 CF8
IoWrite32 CF8 80000838
IoRead32 CFC
IoWrite32 CF8 00000000
IoRead32 CF8
IoWrite32 CF8 8000083C
IoRead32 CFC
IoWrite32 CF8 00000000
IoRead32 CF8
IoWrite32 CF8 80000804
IoWrite32 CF8 00000000
IoRead32 CF8
IoWrite32 CF8 80000804
IoWrite32 CF8 00000000
IoRead32 CF8
IoWrite32 CF8 80000B40
IoRead32 CFC
IoWrite32 CF8 00000000
IoRead32 B008
IoRead32 CF8
IoWrite32 CF8 80000B40
IoRead32 CFC
IoWrite32 CF8 00000000
IoRead32 B008
and so on repeating. With -M q35 where it stops at the assertion:
(qemu) info pci
Bus 0, device 0, function 0:
Host bridge: PCI device 8086:29c0
id ""
Bus 0, device 1, function 0:
VGA controller: PCI device 1013:00b8
BAR0: 32 bit prefetchable memory at 0xffffffffffffffff [0x01fffffe].
BAR1: 32 bit memory at 0xffffffffffffffff [0x00000ffe].
BAR6: 32 bit memory at 0xffffffffffffffff [0x0000fffe].
id ""
Bus 0, device 2, function 0:
Ethernet controller: PCI device 8086:100e
IRQ 0.
BAR0: 32 bit memory at 0xffffffffffffffff [0x0001fffe].
BAR1: I/O at 0xffffffffffffffff [0x003e].
BAR6: 32 bit memory at 0xffffffffffffffff [0x0003fffe].
id ""
Bus 0, device 31, function 0:
ISA bridge: PCI device 8086:2918
id ""
Bus 0, device 31, function 2:
SATA controller: PCI device 8086:2922
IRQ 0.
BAR4: I/O at 0xffffffffffffffff [0x001e].
BAR5: 32 bit memory at 0xffffffffffffffff [0x00000ffe].
id ""
Bus 0, device 31, function 3:
SMBus: PCI device 8086:2930
IRQ 0.
BAR4: I/O at 0xffffffffffffffff [0x003e].
id ""
PciBus: Resource Map for Root Bridge PciRoot(0x0)
Type = Io16; Base = 0xC000; Length = 0x1000; Alignment = 0xFFF
Base = 0xC000; Length = 0x40; Alignment = 0x3F; Owner = PCI
[00|1F|03:20]
Base = 0xC040; Length = 0x40; Alignment = 0x3F; Owner = PCI
[00|02|00:14]
Base = 0xC080; Length = 0x20; Alignment = 0x1F; Owner = PCI
[00|1F|02:20]
Type = Mem32; Base = 0x80000000; Length = 0x2100000; Alignment =
0x1FFFFFF
Base = 0x80000000; Length = 0x2000000; Alignment = 0x1FFFFFF; Owner =
PCI [00|01|00:10]
Base = 0x82000000; Length = 0x20000; Alignment = 0x1FFFF; Owner =
PCI [00|02|00:10]
Base = 0x82020000; Length = 0x1000; Alignment = 0xFFF; Owner =
PCI [00|1F|02:24]
Base = 0x82021000; Length = 0x1000; Alignment = 0xFFF; Owner =
PCI [00|01|00:14]
[...]
IoWrite32 CF8 80001020
IoRead32 CFC
IoWrite32 CF8 00000000
IoRead32 CF8
IoWrite32 CF8 80001024
IoRead32 CFC
IoWrite32 CF8 00000000
IoRead32 CF8
IoWrite32 CF8 80001004
IoWrite32 CF8 00000000
IoRead32 CF8
IoWrite32 CF8 80001004
IoWrite32 CF8 00000000
IoRead32 CF8
IoWrite32 CF8 80001004
IoWrite32 CF8 00000000
IoRead32 CF8
IoWrite32 CF8 80001004
IoWrite32 CF8 00000000
IoRead32 CF8
IoWrite32 CF8 80001004
IoWrite32 CF8 00000000
IoRead32 CF8
IoWrite32 CF8 80001004
IoWrite32 CF8 00000000
IoRead32 CF8
IoWrite32 CF8 80001004
IoWrite32 CF8 00000000
IoRead32 CF8
IoWrite32 CF8 8000100C
IoWrite32 CF8 00000000
IoRead32 CF8
IoWrite32 CF8 8000100C
IoWrite32 CF8 00000000
IoRead32 CF8
IoWrite32 CF8 80000B40
IoRead32 CFC
IoWrite32 CF8 00000000
IoRead32 6
ASSERT .../edk2/MdePkg/Library/BaseIoLibIntrinsic/IoLibGcc.c(164): (Port & 3)
== 0
Does anybody have any hints on why this fails or how to debug it further?
Regards,
BALATON Zoltan