* [Qemu-devel] Secondary VGA passthrough not working, hitting linux kernel's pci_fixup_video
@ 2014-01-15 10:37 Sander Eikelenboom
2014-01-15 11:58 ` Michael S. Tsirkin
0 siblings, 1 reply; 10+ messages in thread
From: Sander Eikelenboom @ 2014-01-15 10:37 UTC (permalink / raw)
To: Michael S. Tsirkin, Anthony Liguori; +Cc: qemu-devel
Hi Michael / Anthony,
I'm trying to do secondary VGA passthrough with on Xen for some time. The problem was that the driver
would get the rom of the emulated VGA device instead of it's own rom from the rom bar.
In the end I found out it is because of a "fixup" in the linux kernel, "pci_fixup_video" in arch/x86/pci/fixup.c
that sets the IORESOURCE_ROM_SHADOW flag for both VGA cards and make both point to C000 (which is were the emulated rom is).
The code there tries to verify if the bridge has the PCI_BRIDGE_CTL_VGA bit set, and would only apply the fix when that's true
however the code doesn't get that far since it returns prematurely since !bridge (the code in question is below as is a dump of lspci -vvvknn).
The author of that code replied:
I understood there is no bridge for a VGA device in your virtual machine.
Your emulator for the bridge control register is odd.
I guess your virtual machine ignore "PCI-to-PCI Bridge Architecture
Specification".
Thank you,
Eiichiro Oiwa
So my first question is .. (i haven't got much knowledge on PCI) is he right and is the layout of pci devices in Qemu indeed out of spec ?
Or is the pci_fixup_video code assuming too much ... ?
And second .. any ideas of how to fix it ?
When i prevent this quirk/fixup from running in the guest kernel, the passthrough works fine .. it can read it's bios .. playing HD video .. even DPM seems to work with the radeon :-)
Also see this thread on the linux-kernel mailing list: https://lkml.org/lkml/2014/1/11/203
--
Sander
/*
* Fixup to mark boot BIOS video selected by BIOS before it changes
*
* From information provided by "Jon Smirl" <jonsmirl@gmail.com>
*
* The standard boot ROM sequence for an x86 machine uses the BIOS
* to select an initial video card for boot display. This boot video
* card will have it's BIOS copied to C0000 in system RAM.
* IORESOURCE_ROM_SHADOW is used to associate the boot video
* card with this copy. On laptops this copy has to be used since
* the main ROM may be compressed or combined with another image.
* See pci_map_rom() for use of this flag. Before we mark the device
* with IORESOURCE_ROM_SHADOW we have to check if this is or should become
* the primary video card, since this quirk is ran for all video devices.
*/
static void pci_fixup_video(struct pci_dev *pdev)
{
struct pci_dev *bridge;
struct pci_bus *bus;
u16 config;
/* Is VGA routed to us? */
bus = pdev->bus;
while (bus) {
bridge = bus->self;
/*
* From information provided by
* "David Miller" <davem@davemloft.net>
* The bridge control register is valid for PCI header
* type BRIDGE, or CARDBUS. Host to PCI controllers use
* PCI header type NORMAL.
*/
if (bridge
&& ((bridge->hdr_type == PCI_HEADER_TYPE_BRIDGE)
|| (bridge->hdr_type == PCI_HEADER_TYPE_CARDBUS))) {
pci_read_config_word(bridge, PCI_BRIDGE_CONTROL,
&config);
if (!(config & PCI_BRIDGE_CTL_VGA))
return;
}
bus = bus->parent;
}
if (!vga_default_device() || pdev == vga_default_device()) {
pci_read_config_word(pdev, PCI_COMMAND, &config);
if (config & (PCI_COMMAND_IO | PCI_COMMAND_MEMORY)) {
pdev->resource[PCI_ROM_RESOURCE].flags |= IORESOURCE_ROM_SHADOW;
dev_printk(KERN_DEBUG, &pdev->dev, "Boot video device\n");
vga_set_default_device(pdev);
}
}
}
DECLARE_PCI_FIXUP_CLASS_FINAL(PCI_ANY_ID, PCI_ANY_ID,
PCI_CLASS_DISPLAY_VGA, 8, pci_fixup_video);
# lspci -vvvknn
00:00.0 Host bridge [0600]: Intel Corporation 440FX - 82441FX PMC [Natoma] [8086:1237] (rev 02)
Subsystem: Red Hat, Inc Qemu virtual machine [1af4:1100]
Control: I/O- Mem- BusMaster+ SpecCycle- MemWINV- VGASnoop- ParErr- Stepping- SERR- FastB2B- DisINTx-
Status: Cap- 66MHz- UDF- FastB2B- ParErr- DEVSEL=fast >TAbort- <TAbort- <MAbort- >SERR- <PERR- INTx-
Latency: 0
00:01.0 ISA bridge [0601]: Intel Corporation 82371SB PIIX3 ISA [Natoma/Triton II] [8086:7000]
Subsystem: Red Hat, Inc Qemu virtual machine [1af4:1100]
Physical Slot: 1
Control: I/O- Mem- BusMaster+ SpecCycle- MemWINV- VGASnoop- ParErr- Stepping- SERR- FastB2B- DisINTx-
Status: Cap- 66MHz- UDF- FastB2B- ParErr- DEVSEL=medium >TAbort- <TAbort- <MAbort- >SERR- <PERR- INTx-
Latency: 0
00:01.1 IDE interface [0101]: Intel Corporation 82371SB PIIX3 IDE [Natoma/Triton II] [8086:7010] (prog-if 80 [Master])
Subsystem: Red Hat, Inc Qemu virtual machine [1af4:1100]
Physical Slot: 1
Control: I/O+ Mem- BusMaster+ SpecCycle- MemWINV- VGASnoop- ParErr- Stepping- SERR- FastB2B- DisINTx-
Status: Cap- 66MHz- UDF- FastB2B+ ParErr- DEVSEL=medium >TAbort- <TAbort- <MAbort- >SERR- <PERR- INTx-
Latency: 0
Region 0: [virtual] Memory at 000001f0 (32-bit, non-prefetchable) [size=8]
Region 1: [virtual] Memory at 000003f0 (type 3, non-prefetchable) [size=1]
Region 2: [virtual] Memory at 00000170 (32-bit, non-prefetchable) [size=8]
Region 3: [virtual] Memory at 00000370 (type 3, non-prefetchable) [size=1]
Region 4: I/O ports at c260 [size=16]
Kernel driver in use: PIIX_IDE
00:01.2 USB controller [0c03]: Intel Corporation 82371SB PIIX3 USB [Natoma/Triton II] [8086:7020] (rev 01) (prog-if 00 [UHCI])
Subsystem: Red Hat, Inc Qemu virtual machine [1af4:1100]
Physical Slot: 1
Control: I/O+ Mem- BusMaster+ SpecCycle- MemWINV- VGASnoop- ParErr- Stepping- SERR- FastB2B- DisINTx-
Status: Cap- 66MHz- UDF- FastB2B- ParErr- DEVSEL=fast >TAbort- <TAbort- <MAbort- >SERR- <PERR- INTx-
Latency: 0
Interrupt: pin D routed to IRQ 23
Region 4: I/O ports at c240 [size=32]
Kernel driver in use: uhci_hcd
00:01.3 Bridge [0680]: Intel Corporation 82371AB/EB/MB PIIX4 ACPI [8086:7113] (rev 03)
Subsystem: Red Hat, Inc Qemu virtual machine [1af4:1100]
Physical Slot: 1
Control: I/O- Mem- BusMaster+ SpecCycle- MemWINV- VGASnoop- ParErr- Stepping- SERR- FastB2B- DisINTx-
Status: Cap- 66MHz- UDF- FastB2B+ ParErr- DEVSEL=medium >TAbort- <TAbort- <MAbort- >SERR- <PERR- INTx-
Latency: 0
Interrupt: pin A routed to IRQ 9
00:02.0 Unassigned class [ff80]: XenSource, Inc. Xen Platform Device [5853:0001] (rev 01)
Subsystem: XenSource, Inc. Xen Platform Device [5853:0001]
Physical Slot: 2
Control: I/O+ Mem+ BusMaster+ SpecCycle- MemWINV- VGASnoop- ParErr- Stepping- SERR- FastB2B- DisINTx-
Status: Cap- 66MHz- UDF- FastB2B- ParErr- DEVSEL=fast >TAbort- <TAbort- <MAbort- >SERR- <PERR- INTx-
Latency: 0
Interrupt: pin A routed to IRQ 24
Region 0: I/O ports at c000 [size=256]
Region 1: Memory at f2000000 (32-bit, prefetchable) [size=16M]
Kernel driver in use: xen-platform-pci
00:03.0 VGA compatible controller [0300]: Cirrus Logic GD 5446 [1013:00b8] (prog-if 00 [VGA controller])
Subsystem: Red Hat, Inc Device [1af4:1100]
Physical Slot: 3
Control: I/O+ Mem+ BusMaster+ SpecCycle- MemWINV- VGASnoop- ParErr- Stepping- SERR- FastB2B- DisINTx-
Status: Cap- 66MHz- UDF- FastB2B- ParErr- DEVSEL=fast >TAbort- <TAbort- <MAbort- >SERR- <PERR- INTx-
Latency: 0
Region 0: Memory at f0000000 (32-bit, prefetchable) [size=32M]
Region 1: Memory at f30b0000 (32-bit, non-prefetchable) [size=4K]
Expansion ROM at f30a0000 [disabled] [size=64K]
00:05.0 VGA compatible controller [0300]: Advanced Micro Devices [AMD] nee ATI Turks [Radeon HD 6570] [1002:6759] (prog-if 00 [VGA controller])
Subsystem: PC Partner Limited Device [174b:e193]
Physical Slot: 5
Control: I/O+ Mem+ BusMaster+ SpecCycle- MemWINV- VGASnoop- ParErr- Stepping- SERR- FastB2B- DisINTx+
Status: Cap+ 66MHz- UDF- FastB2B- ParErr- DEVSEL=fast >TAbort- <TAbort- <MAbort- >SERR- <PERR- INTx-
Latency: 0
Interrupt: pin A routed to IRQ 81
Region 0: Memory at e0000000 (64-bit, prefetchable) [size=256M]
Region 2: Memory at f3060000 (64-bit, non-prefetchable) [size=128K]
Region 4: I/O ports at c100 [size=256]
Expansion ROM at f3080000 [disabled] [size=128K]
Capabilities: [50] Power Management version 3
Flags: PMEClk- DSI- D1+ D2+ AuxCurrent=0mA PME(D0-,D1-,D2-,D3hot-,D3cold-)
Status: D0 NoSoftRst+ PME-Enable- DSel=0 DScale=0 PME-
Capabilities: [58] Express (v2) Legacy Endpoint, MSI 00
DevCap: MaxPayload 256 bytes, PhantFunc 0, Latency L0s <4us, L1 unlimited
ExtTag+ AttnBtn- AttnInd- PwrInd- RBE+ FLReset-
DevCtl: Report errors: Correctable- Non-Fatal- Fatal- Unsupported-
RlxdOrd+ ExtTag- PhantFunc- AuxPwr- NoSnoop+
MaxPayload 128 bytes, MaxReadReq 512 bytes
DevSta: CorrErr+ UncorrErr+ FatalErr- UnsuppReq+ AuxPwr- TransPend-
LnkCap: Port #0, Speed 5GT/s, Width x16, ASPM L0s L1, Latency L0 <64ns, L1 <1us
ClockPM- Surprise- LLActRep- BwNot-
LnkCtl: ASPM Disabled; RCB 64 bytes Disabled- Retrain- CommClk-
ExtSynch- ClockPM- AutWidDis- BWInt- AutBWInt-
LnkSta: Speed 2.5GT/s, Width x8, TrErr- Train- SlotClk+ DLActive- BWMgmt- ABWMgmt-
DevCap2: Completion Timeout: Not Supported, TimeoutDis-
DevCtl2: Completion Timeout: 50us to 50ms, TimeoutDis-
LnkCtl2: Target Link Speed: 5GT/s, EnterCompliance- SpeedDis-, Selectable De-emphasis: -6dB
Transmit Margin: Normal Operating Range, EnterModifiedCompliance- ComplianceSOS-
Compliance De-emphasis: -6dB
LnkSta2: Current De-emphasis Level: -3.5dB, EqualizationComplete-, EqualizationPhase1-
EqualizationPhase2-, EqualizationPhase3-, LinkEqualizationRequest-
Capabilities: [a0] MSI: Enable+ Count=1/1 Maskable- 64bit+
Address: 00000000fee57000 Data: 4300
Capabilities: [100 v9] #1002
Kernel driver in use: radeon
^ permalink raw reply [flat|nested] 10+ messages in thread
* Re: [Qemu-devel] Secondary VGA passthrough not working, hitting linux kernel's pci_fixup_video
2014-01-15 10:37 [Qemu-devel] Secondary VGA passthrough not working, hitting linux kernel's pci_fixup_video Sander Eikelenboom
@ 2014-01-15 11:58 ` Michael S. Tsirkin
2014-01-15 13:14 ` Sander Eikelenboom
0 siblings, 1 reply; 10+ messages in thread
From: Michael S. Tsirkin @ 2014-01-15 11:58 UTC (permalink / raw)
To: Sander Eikelenboom; +Cc: qemu-devel, Anthony Liguori
On Wed, Jan 15, 2014 at 11:37:29AM +0100, Sander Eikelenboom wrote:
> Hi Michael / Anthony,
>
> I'm trying to do secondary VGA passthrough with on Xen for some time. The problem was that the driver
> would get the rom of the emulated VGA device instead of it's own rom from the rom bar.
>
> In the end I found out it is because of a "fixup" in the linux kernel, "pci_fixup_video" in arch/x86/pci/fixup.c
> that sets the IORESOURCE_ROM_SHADOW flag for both VGA cards and make both point to C000 (which is were the emulated rom is).
>
> The code there tries to verify if the bridge has the PCI_BRIDGE_CTL_VGA bit set, and would only apply the fix when that's true
> however the code doesn't get that far since it returns prematurely since !bridge (the code in question is below as is a dump of lspci -vvvknn).
>
> The author of that code replied:
>
> I understood there is no bridge for a VGA device in your virtual machine.
> Your emulator for the bridge control register is odd.
That seems beside the point as there's no bridge here.
> I guess your virtual machine ignore "PCI-to-PCI Bridge Architecture
> Specification".
Since there's no pci to pci bridge in this VM, why would this
specification apply?
> Thank you,
>
> Eiichiro Oiwa
I can't see that reply anywhere except quoted in your mail.
Tried to hunt addresses for relevant people and Cc them all.
Cc: bhelgaas@google.com
Cc: linux-pci@vger.kernel.org
Cc: jbarnes@virtuousgeek.org
Cc: airlied@redhat.com
Cc: eiichiro.oiwa.nm@hitachi.com
Cc: linux-kernel@vger.kernel.org
not yet copying until we think it's a linux bug.
>
> So my first question is .. (i haven't got much knowledge on PCI) is he right and is the layout of pci devices in Qemu indeed out of spec ?
> Or is the pci_fixup_video code assuming too much ... ?
>
> And second .. any ideas of how to fix it ?
>
> When i prevent this quirk/fixup from running in the guest kernel, the passthrough works fine .. it can read it's bios .. playing HD video .. even DPM seems to work with the radeon :-)
>
> Also see this thread on the linux-kernel mailing list: https://lkml.org/lkml/2014/1/11/203
Overall what's the issue here?
Here's my analysis:
You have two video cards both on the root bus.
So the logic in fixup that tries to guess which one
to use based on which one is behind bridge
isn't effective.
As the result fixup will enable ROM shadow for both,
unsurprisingly this doesn't work.
But they can't both work in VGA mode anyway, right?
They would try to claim both addresses.
So I would say you should just disable cirrus on qemu command line with
the -no-graphics flag.
Then it won't conflict.
If you don't want your card to work in VGA mode,
just want it to work in non VGA mode, we run into a problem
in that there's no standard way to disable VGA addresses in devices themselves.
If you want this one solution is to put your card behind a pci to pci bridge in qemu.
Our bridges don't support VGA so your card won't work in VGA mode then.
> --
>
> Sander
>
>
>
> /*
> * Fixup to mark boot BIOS video selected by BIOS before it changes
> *
> * From information provided by "Jon Smirl" <jonsmirl@gmail.com>
> *
> * The standard boot ROM sequence for an x86 machine uses the BIOS
> * to select an initial video card for boot display. This boot video
> * card will have it's BIOS copied to C0000 in system RAM.
> * IORESOURCE_ROM_SHADOW is used to associate the boot video
> * card with this copy. On laptops this copy has to be used since
> * the main ROM may be compressed or combined with another image.
> * See pci_map_rom() for use of this flag. Before we mark the device
> * with IORESOURCE_ROM_SHADOW we have to check if this is or should become
> * the primary video card, since this quirk is ran for all video devices.
> */
>
> static void pci_fixup_video(struct pci_dev *pdev)
> {
> struct pci_dev *bridge;
> struct pci_bus *bus;
> u16 config;
>
> /* Is VGA routed to us? */
> bus = pdev->bus;
> while (bus) {
> bridge = bus->self;
>
> /*
> * From information provided by
> * "David Miller" <davem@davemloft.net>
> * The bridge control register is valid for PCI header
> * type BRIDGE, or CARDBUS. Host to PCI controllers use
> * PCI header type NORMAL.
> */
> if (bridge
> && ((bridge->hdr_type == PCI_HEADER_TYPE_BRIDGE)
> || (bridge->hdr_type == PCI_HEADER_TYPE_CARDBUS))) {
> pci_read_config_word(bridge, PCI_BRIDGE_CONTROL,
> &config);
> if (!(config & PCI_BRIDGE_CTL_VGA))
> return;
> }
> bus = bus->parent;
> }
> if (!vga_default_device() || pdev == vga_default_device()) {
> pci_read_config_word(pdev, PCI_COMMAND, &config);
> if (config & (PCI_COMMAND_IO | PCI_COMMAND_MEMORY)) {
> pdev->resource[PCI_ROM_RESOURCE].flags |= IORESOURCE_ROM_SHADOW;
> dev_printk(KERN_DEBUG, &pdev->dev, "Boot video device\n");
> vga_set_default_device(pdev);
> }
> }
> }
> DECLARE_PCI_FIXUP_CLASS_FINAL(PCI_ANY_ID, PCI_ANY_ID,
> PCI_CLASS_DISPLAY_VGA, 8, pci_fixup_video);
>
>
>
>
>
>
>
>
>
>
>
>
>
> # lspci -vvvknn
> 00:00.0 Host bridge [0600]: Intel Corporation 440FX - 82441FX PMC [Natoma] [8086:1237] (rev 02)
> Subsystem: Red Hat, Inc Qemu virtual machine [1af4:1100]
> Control: I/O- Mem- BusMaster+ SpecCycle- MemWINV- VGASnoop- ParErr- Stepping- SERR- FastB2B- DisINTx-
> Status: Cap- 66MHz- UDF- FastB2B- ParErr- DEVSEL=fast >TAbort- <TAbort- <MAbort- >SERR- <PERR- INTx-
> Latency: 0
>
> 00:01.0 ISA bridge [0601]: Intel Corporation 82371SB PIIX3 ISA [Natoma/Triton II] [8086:7000]
> Subsystem: Red Hat, Inc Qemu virtual machine [1af4:1100]
> Physical Slot: 1
> Control: I/O- Mem- BusMaster+ SpecCycle- MemWINV- VGASnoop- ParErr- Stepping- SERR- FastB2B- DisINTx-
> Status: Cap- 66MHz- UDF- FastB2B- ParErr- DEVSEL=medium >TAbort- <TAbort- <MAbort- >SERR- <PERR- INTx-
> Latency: 0
>
> 00:01.1 IDE interface [0101]: Intel Corporation 82371SB PIIX3 IDE [Natoma/Triton II] [8086:7010] (prog-if 80 [Master])
> Subsystem: Red Hat, Inc Qemu virtual machine [1af4:1100]
> Physical Slot: 1
> Control: I/O+ Mem- BusMaster+ SpecCycle- MemWINV- VGASnoop- ParErr- Stepping- SERR- FastB2B- DisINTx-
> Status: Cap- 66MHz- UDF- FastB2B+ ParErr- DEVSEL=medium >TAbort- <TAbort- <MAbort- >SERR- <PERR- INTx-
> Latency: 0
> Region 0: [virtual] Memory at 000001f0 (32-bit, non-prefetchable) [size=8]
> Region 1: [virtual] Memory at 000003f0 (type 3, non-prefetchable) [size=1]
> Region 2: [virtual] Memory at 00000170 (32-bit, non-prefetchable) [size=8]
> Region 3: [virtual] Memory at 00000370 (type 3, non-prefetchable) [size=1]
> Region 4: I/O ports at c260 [size=16]
> Kernel driver in use: PIIX_IDE
>
> 00:01.2 USB controller [0c03]: Intel Corporation 82371SB PIIX3 USB [Natoma/Triton II] [8086:7020] (rev 01) (prog-if 00 [UHCI])
> Subsystem: Red Hat, Inc Qemu virtual machine [1af4:1100]
> Physical Slot: 1
> Control: I/O+ Mem- BusMaster+ SpecCycle- MemWINV- VGASnoop- ParErr- Stepping- SERR- FastB2B- DisINTx-
> Status: Cap- 66MHz- UDF- FastB2B- ParErr- DEVSEL=fast >TAbort- <TAbort- <MAbort- >SERR- <PERR- INTx-
> Latency: 0
> Interrupt: pin D routed to IRQ 23
> Region 4: I/O ports at c240 [size=32]
> Kernel driver in use: uhci_hcd
>
> 00:01.3 Bridge [0680]: Intel Corporation 82371AB/EB/MB PIIX4 ACPI [8086:7113] (rev 03)
> Subsystem: Red Hat, Inc Qemu virtual machine [1af4:1100]
> Physical Slot: 1
> Control: I/O- Mem- BusMaster+ SpecCycle- MemWINV- VGASnoop- ParErr- Stepping- SERR- FastB2B- DisINTx-
> Status: Cap- 66MHz- UDF- FastB2B+ ParErr- DEVSEL=medium >TAbort- <TAbort- <MAbort- >SERR- <PERR- INTx-
> Latency: 0
> Interrupt: pin A routed to IRQ 9
>
> 00:02.0 Unassigned class [ff80]: XenSource, Inc. Xen Platform Device [5853:0001] (rev 01)
> Subsystem: XenSource, Inc. Xen Platform Device [5853:0001]
> Physical Slot: 2
> Control: I/O+ Mem+ BusMaster+ SpecCycle- MemWINV- VGASnoop- ParErr- Stepping- SERR- FastB2B- DisINTx-
> Status: Cap- 66MHz- UDF- FastB2B- ParErr- DEVSEL=fast >TAbort- <TAbort- <MAbort- >SERR- <PERR- INTx-
> Latency: 0
> Interrupt: pin A routed to IRQ 24
> Region 0: I/O ports at c000 [size=256]
> Region 1: Memory at f2000000 (32-bit, prefetchable) [size=16M]
> Kernel driver in use: xen-platform-pci
>
> 00:03.0 VGA compatible controller [0300]: Cirrus Logic GD 5446 [1013:00b8] (prog-if 00 [VGA controller])
> Subsystem: Red Hat, Inc Device [1af4:1100]
> Physical Slot: 3
> Control: I/O+ Mem+ BusMaster+ SpecCycle- MemWINV- VGASnoop- ParErr- Stepping- SERR- FastB2B- DisINTx-
> Status: Cap- 66MHz- UDF- FastB2B- ParErr- DEVSEL=fast >TAbort- <TAbort- <MAbort- >SERR- <PERR- INTx-
> Latency: 0
> Region 0: Memory at f0000000 (32-bit, prefetchable) [size=32M]
> Region 1: Memory at f30b0000 (32-bit, non-prefetchable) [size=4K]
> Expansion ROM at f30a0000 [disabled] [size=64K]
>
> 00:05.0 VGA compatible controller [0300]: Advanced Micro Devices [AMD] nee ATI Turks [Radeon HD 6570] [1002:6759] (prog-if 00 [VGA controller])
> Subsystem: PC Partner Limited Device [174b:e193]
> Physical Slot: 5
> Control: I/O+ Mem+ BusMaster+ SpecCycle- MemWINV- VGASnoop- ParErr- Stepping- SERR- FastB2B- DisINTx+
> Status: Cap+ 66MHz- UDF- FastB2B- ParErr- DEVSEL=fast >TAbort- <TAbort- <MAbort- >SERR- <PERR- INTx-
> Latency: 0
> Interrupt: pin A routed to IRQ 81
> Region 0: Memory at e0000000 (64-bit, prefetchable) [size=256M]
> Region 2: Memory at f3060000 (64-bit, non-prefetchable) [size=128K]
> Region 4: I/O ports at c100 [size=256]
> Expansion ROM at f3080000 [disabled] [size=128K]
> Capabilities: [50] Power Management version 3
> Flags: PMEClk- DSI- D1+ D2+ AuxCurrent=0mA PME(D0-,D1-,D2-,D3hot-,D3cold-)
> Status: D0 NoSoftRst+ PME-Enable- DSel=0 DScale=0 PME-
> Capabilities: [58] Express (v2) Legacy Endpoint, MSI 00
> DevCap: MaxPayload 256 bytes, PhantFunc 0, Latency L0s <4us, L1 unlimited
> ExtTag+ AttnBtn- AttnInd- PwrInd- RBE+ FLReset-
> DevCtl: Report errors: Correctable- Non-Fatal- Fatal- Unsupported-
> RlxdOrd+ ExtTag- PhantFunc- AuxPwr- NoSnoop+
> MaxPayload 128 bytes, MaxReadReq 512 bytes
> DevSta: CorrErr+ UncorrErr+ FatalErr- UnsuppReq+ AuxPwr- TransPend-
> LnkCap: Port #0, Speed 5GT/s, Width x16, ASPM L0s L1, Latency L0 <64ns, L1 <1us
> ClockPM- Surprise- LLActRep- BwNot-
> LnkCtl: ASPM Disabled; RCB 64 bytes Disabled- Retrain- CommClk-
> ExtSynch- ClockPM- AutWidDis- BWInt- AutBWInt-
> LnkSta: Speed 2.5GT/s, Width x8, TrErr- Train- SlotClk+ DLActive- BWMgmt- ABWMgmt-
> DevCap2: Completion Timeout: Not Supported, TimeoutDis-
> DevCtl2: Completion Timeout: 50us to 50ms, TimeoutDis-
> LnkCtl2: Target Link Speed: 5GT/s, EnterCompliance- SpeedDis-, Selectable De-emphasis: -6dB
> Transmit Margin: Normal Operating Range, EnterModifiedCompliance- ComplianceSOS-
> Compliance De-emphasis: -6dB
> LnkSta2: Current De-emphasis Level: -3.5dB, EqualizationComplete-, EqualizationPhase1-
> EqualizationPhase2-, EqualizationPhase3-, LinkEqualizationRequest-
> Capabilities: [a0] MSI: Enable+ Count=1/1 Maskable- 64bit+
> Address: 00000000fee57000 Data: 4300
> Capabilities: [100 v9] #1002
> Kernel driver in use: radeon
^ permalink raw reply [flat|nested] 10+ messages in thread
* Re: [Qemu-devel] Secondary VGA passthrough not working, hitting linux kernel's pci_fixup_video
2014-01-15 11:58 ` Michael S. Tsirkin
@ 2014-01-15 13:14 ` Sander Eikelenboom
2014-01-15 19:03 ` Michael S. Tsirkin
0 siblings, 1 reply; 10+ messages in thread
From: Sander Eikelenboom @ 2014-01-15 13:14 UTC (permalink / raw)
To: Michael S. Tsirkin; +Cc: qemu-devel, Anthony Liguori
Wednesday, January 15, 2014, 12:58:20 PM, you wrote:
> On Wed, Jan 15, 2014 at 11:37:29AM +0100, Sander Eikelenboom wrote:
>> Hi Michael / Anthony,
>>
>> I'm trying to do secondary VGA passthrough with on Xen for some time. The problem was that the driver
>> would get the rom of the emulated VGA device instead of it's own rom from the rom bar.
>>
>> In the end I found out it is because of a "fixup" in the linux kernel, "pci_fixup_video" in arch/x86/pci/fixup.c
>> that sets the IORESOURCE_ROM_SHADOW flag for both VGA cards and make both point to C000 (which is were the emulated rom is).
>>
>> The code there tries to verify if the bridge has the PCI_BRIDGE_CTL_VGA bit set, and would only apply the fix when that's true
>> however the code doesn't get that far since it returns prematurely since !bridge (the code in question is below as is a dump of lspci -vvvknn).
>>
>> The author of that code replied:
>>
>> I understood there is no bridge for a VGA device in your virtual machine.
>> Your emulator for the bridge control register is odd.
> That seems beside the point as there's no bridge here.
>> I guess your virtual machine ignore "PCI-to-PCI Bridge Architecture
>> Specification".
> Since there's no pci to pci bridge in this VM, why would this
> specification apply?
>> Thank you,
>>
>> Eiichiro Oiwa
> I can't see that reply anywhere except quoted in your mail.
Hmm strange his replies are indeed not archived in that LKML archive.
> Tried to hunt addresses for relevant people and Cc them all.
> Cc: bhelgaas@google.com
> Cc: linux-pci@vger.kernel.org
> Cc: jbarnes@virtuousgeek.org
> Cc: airlied@redhat.com
> Cc: eiichiro.oiwa.nm@hitachi.com
> Cc: linux-kernel@vger.kernel.org
> not yet copying until we think it's a linux bug.
Thanks yes i thought it would be more wise to first verify with you Qemu guys :-)
Qemu has perhaps a slightly different pci setup/layout from the average real machine ..
However the linux kernel fixup seems to target quite broad for a very small number of cases it would actually fix.
So yes .. i don't know if there is actually any part to "blame" .. and if not .. where it would be the most easy
and durable to fix it.
For reference this is the linux history of commits that introduced and changed the current pci_fixup_video:
commit 6b5c76b8e2ff204fa8d7201acce461188873bf2b
Author: Eiichiro Oiwa <eiichiro.oiwa.nm@hitachi.com>
Date: Mon Oct 23 15:14:07 2006 +0900
PCI: fix pci_fixup_video as it blows up on sparc64
This reverts much of the original pci_fixup_video change and makes it
work for all arches that need it.
fixed, and tested on x86, x86_64 and IA64 dig.
Signed-off-by: Eiichiro Oiwa <eiichiro.oiwa.nm@hitachi.com>
Acked-by: David Miller <davem@davemloft.net>
Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
commit 938f667198179dc0c8424e2cfac9cd9fe405bee3
Author: Paolo Ciarrocchi <paolo.ciarrocchi@gmail.com>
Date: Wed Jan 30 13:33:00 2008 +0100
x86: coding style fixes in arch/x86/pci/fixup.c
Simple coding style fixes.
no code changed:
commit 73e3b590f38fb7c03ee370430348edf1f401204e
Author: Yinghai Lu <yinghai@kernel.org>
Date: Thu Feb 23 23:46:52 2012 -0800
PCI: Use class for quirk for pci_fixup_video
commit 6cf20beec4b91c240cf759b4db72669e251f1fc4
Author: Dave Airlie <airlied@redhat.com>
Date: Mon May 14 17:00:40 2012 +0100
x86/vga: set the default device from the fixup.
Since Matthew's efi/vga changes on non-EFI machines we were failing
to tell the vgaarb/switcheroo what the default device was, this
sets the default device in the quirk if none has been set before.
This fixes the switcheroo on my T410s.
commit a18e3690a52790a034d6540d54e8e1f1cd125da2
Author: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Date: Fri Dec 21 14:02:53 2012 -0800
X86: drivers: remove __dev* attributes.
CONFIG_HOTPLUG is going away as an option. As a result, the __dev*
markings need to be removed.
This change removes the use of __devinit, __devexit_p, __devinitconst,
and __devexit from these drivers.
Based on patches originally written by Bill Pemberton, but redone by me
in order to handle some of the coding style issues better, by hand.
>>
>> So my first question is .. (i haven't got much knowledge on PCI) is he right and is the layout of pci devices in Qemu indeed out of spec ?
>> Or is the pci_fixup_video code assuming too much ... ?
>>
>> And second .. any ideas of how to fix it ?
>>
>> When i prevent this quirk/fixup from running in the guest kernel, the passthrough works fine .. it can read it's bios .. playing HD video .. even DPM seems to work with the radeon :-)
>>
>> Also see this thread on the linux-kernel mailing list: https://lkml.org/lkml/2014/1/11/203
> Overall what's the issue here?
> Here's my analysis:
> You have two video cards both on the root bus.
> So the logic in fixup that tries to guess which one
> to use based on which one is behind bridge
> isn't effective.
Check.
> As the result fixup will enable ROM shadow for both,
> unsurprisingly this doesn't work.
Check.
> But they can't both work in VGA mode anyway, right?
> They would try to claim both addresses.
I don't know why .. but it seems they don't try to ..
probably how seabios works .. since it finds the optionrom for the emulated device and
enables VGA text mode at that moment ?
(d21) [2014-01-14 23:51:07] Invoking SeaBIOS ...
(d21) [2014-01-14 23:51:07] SeaBIOS (version rel-1.7.3-117-g31b8b4e-dirty-20140112_142355-serveerstertje)
(d21) [2014-01-14 23:51:07]
(d21) [2014-01-14 23:51:07] Found Xen hypervisor signature at 40000000
(d21) [2014-01-14 23:51:07] Running on QEMU (i440fx)
(d21) [2014-01-14 23:51:07] xen: copy e820...
(d21) [2014-01-14 23:51:07] Relocating init from 0x000e1b81 to 0x3f7e0e50 (size 61675)
(d21) [2014-01-14 23:51:07] CPU Mhz=3202
(d21) [2014-01-14 23:51:07] Found 9 PCI devices (max PCI bus is 00)
(d21) [2014-01-14 23:51:07] Allocated Xen hypercall page at 3f7ff000
(d21) [2014-01-14 23:51:07] Detected Xen v4.4-unstable
(d21) [2014-01-14 23:51:07] xen: copy BIOS tables...
(d21) [2014-01-14 23:51:07] Copying SMBIOS entry point from 0x00010010 to 0x000f0c50
(d21) [2014-01-14 23:51:07] Copying MPTABLE from 0xfc001190/fc0011a0 to 0x000f0b40
(d21) [2014-01-14 23:51:07] Copying PIR from 0x00010030 to 0x000f0ac0
(d21) [2014-01-14 23:51:07] Copying ACPI RSDP from 0x000100b0 to 0x000f0a90
(d21) [2014-01-14 23:51:07] Using pmtimer, ioport 0xb008
(d21) [2014-01-14 23:51:07] Scan for VGA option rom
(d21) [2014-01-14 23:51:07] Running option rom at c000:0003
(XEN) [2014-01-14 23:51:07] stdvga.c:147:d21 entering stdvga and caching modes
(d21) [2014-01-14 23:51:07] pmm call arg1=0
(d21) [2014-01-14 23:51:07] Turning on vga text mode console
> So I would say you should just disable cirrus on qemu command line with
> the -no-graphics flag.
> Then it won't conflict.
yes you would end up with primary passthrough, which is also a goal, but secondary
passthrough seemed to be an easier primary goal.
I will see if i can get this working but as far as i know stuff didn't work on Xen without applying
additional patches to hvmloader and or qemu.
> If you don't want your card to work in VGA mode,
> just want it to work in non VGA mode, we run into a problem
> in that there's no standard way to disable VGA addresses in devices themselves.
> If you want this one solution is to put your card behind a pci to pci bridge in qemu.
> Our bridges don't support VGA so your card won't work in VGA mode then.
Yes it's not working in VGA mode now .. it only starts giving output on the monitor
when the radeon driver loads.
I don't know how this would work on a normal machine with say 2 graphic cards ..
would those always be behing a different bridge ?
If not the fixup code in the kernel isn't selective enough.
Isn't there another way a system can indicate which device is the primary (as you can select in most real world bioses
(agp/pci/pcie/igd) ?
If not then a boot option and manually specifying / overriding the boot vga card would probably be the only way to fix it i guess.
Thanks for your prompt reply and analysis !
--
Sander
>> --
>>
>> Sander
>>
>>
>>
>> /*
>> * Fixup to mark boot BIOS video selected by BIOS before it changes
>> *
>> * From information provided by "Jon Smirl" <jonsmirl@gmail.com>
>> *
>> * The standard boot ROM sequence for an x86 machine uses the BIOS
>> * to select an initial video card for boot display. This boot video
>> * card will have it's BIOS copied to C0000 in system RAM.
>> * IORESOURCE_ROM_SHADOW is used to associate the boot video
>> * card with this copy. On laptops this copy has to be used since
>> * the main ROM may be compressed or combined with another image.
>> * See pci_map_rom() for use of this flag. Before we mark the device
>> * with IORESOURCE_ROM_SHADOW we have to check if this is or should become
>> * the primary video card, since this quirk is ran for all video devices.
>> */
>>
>> static void pci_fixup_video(struct pci_dev *pdev)
>> {
>> struct pci_dev *bridge;
>> struct pci_bus *bus;
>> u16 config;
>>
>> /* Is VGA routed to us? */
>> bus = pdev->bus;
>> while (bus) {
>> bridge = bus->self;
>>
>> /*
>> * From information provided by
>> * "David Miller" <davem@davemloft.net>
>> * The bridge control register is valid for PCI header
>> * type BRIDGE, or CARDBUS. Host to PCI controllers use
>> * PCI header type NORMAL.
>> */
>> if (bridge
>> && ((bridge->hdr_type == PCI_HEADER_TYPE_BRIDGE)
>> || (bridge->hdr_type == PCI_HEADER_TYPE_CARDBUS))) {
>> pci_read_config_word(bridge, PCI_BRIDGE_CONTROL,
>> &config);
>> if (!(config & PCI_BRIDGE_CTL_VGA))
>> return;
>> }
>> bus = bus->parent;
>> }
>> if (!vga_default_device() || pdev == vga_default_device()) {
>> pci_read_config_word(pdev, PCI_COMMAND, &config);
>> if (config & (PCI_COMMAND_IO | PCI_COMMAND_MEMORY)) {
>> pdev->resource[PCI_ROM_RESOURCE].flags |= IORESOURCE_ROM_SHADOW;
>> dev_printk(KERN_DEBUG, &pdev->dev, "Boot video device\n");
>> vga_set_default_device(pdev);
>> }
>> }
>> }
>> DECLARE_PCI_FIXUP_CLASS_FINAL(PCI_ANY_ID, PCI_ANY_ID,
>> PCI_CLASS_DISPLAY_VGA, 8, pci_fixup_video);
>>
>>
>>
>>
>>
>>
>>
>>
>>
>>
>>
>>
>>
>> # lspci -vvvknn
>> 00:00.0 Host bridge [0600]: Intel Corporation 440FX - 82441FX PMC [Natoma] [8086:1237] (rev 02)
>> Subsystem: Red Hat, Inc Qemu virtual machine [1af4:1100]
>> Control: I/O- Mem- BusMaster+ SpecCycle- MemWINV- VGASnoop- ParErr- Stepping- SERR- FastB2B- DisINTx-
>> Status: Cap- 66MHz- UDF- FastB2B- ParErr- DEVSEL=fast >TAbort- <TAbort- <MAbort- >SERR- <PERR- INTx-
>> Latency: 0
>>
>> 00:01.0 ISA bridge [0601]: Intel Corporation 82371SB PIIX3 ISA [Natoma/Triton II] [8086:7000]
>> Subsystem: Red Hat, Inc Qemu virtual machine [1af4:1100]
>> Physical Slot: 1
>> Control: I/O- Mem- BusMaster+ SpecCycle- MemWINV- VGASnoop- ParErr- Stepping- SERR- FastB2B- DisINTx-
>> Status: Cap- 66MHz- UDF- FastB2B- ParErr- DEVSEL=medium >TAbort- <TAbort- <MAbort- >SERR- <PERR- INTx-
>> Latency: 0
>>
>> 00:01.1 IDE interface [0101]: Intel Corporation 82371SB PIIX3 IDE [Natoma/Triton II] [8086:7010] (prog-if 80 [Master])
>> Subsystem: Red Hat, Inc Qemu virtual machine [1af4:1100]
>> Physical Slot: 1
>> Control: I/O+ Mem- BusMaster+ SpecCycle- MemWINV- VGASnoop- ParErr- Stepping- SERR- FastB2B- DisINTx-
>> Status: Cap- 66MHz- UDF- FastB2B+ ParErr- DEVSEL=medium >TAbort- <TAbort- <MAbort- >SERR- <PERR- INTx-
>> Latency: 0
>> Region 0: [virtual] Memory at 000001f0 (32-bit, non-prefetchable) [size=8]
>> Region 1: [virtual] Memory at 000003f0 (type 3, non-prefetchable) [size=1]
>> Region 2: [virtual] Memory at 00000170 (32-bit, non-prefetchable) [size=8]
>> Region 3: [virtual] Memory at 00000370 (type 3, non-prefetchable) [size=1]
>> Region 4: I/O ports at c260 [size=16]
>> Kernel driver in use: PIIX_IDE
>>
>> 00:01.2 USB controller [0c03]: Intel Corporation 82371SB PIIX3 USB [Natoma/Triton II] [8086:7020] (rev 01) (prog-if 00 [UHCI])
>> Subsystem: Red Hat, Inc Qemu virtual machine [1af4:1100]
>> Physical Slot: 1
>> Control: I/O+ Mem- BusMaster+ SpecCycle- MemWINV- VGASnoop- ParErr- Stepping- SERR- FastB2B- DisINTx-
>> Status: Cap- 66MHz- UDF- FastB2B- ParErr- DEVSEL=fast >TAbort- <TAbort- <MAbort- >SERR- <PERR- INTx-
>> Latency: 0
>> Interrupt: pin D routed to IRQ 23
>> Region 4: I/O ports at c240 [size=32]
>> Kernel driver in use: uhci_hcd
>>
>> 00:01.3 Bridge [0680]: Intel Corporation 82371AB/EB/MB PIIX4 ACPI [8086:7113] (rev 03)
>> Subsystem: Red Hat, Inc Qemu virtual machine [1af4:1100]
>> Physical Slot: 1
>> Control: I/O- Mem- BusMaster+ SpecCycle- MemWINV- VGASnoop- ParErr- Stepping- SERR- FastB2B- DisINTx-
>> Status: Cap- 66MHz- UDF- FastB2B+ ParErr- DEVSEL=medium >TAbort- <TAbort- <MAbort- >SERR- <PERR- INTx-
>> Latency: 0
>> Interrupt: pin A routed to IRQ 9
>>
>> 00:02.0 Unassigned class [ff80]: XenSource, Inc. Xen Platform Device [5853:0001] (rev 01)
>> Subsystem: XenSource, Inc. Xen Platform Device [5853:0001]
>> Physical Slot: 2
>> Control: I/O+ Mem+ BusMaster+ SpecCycle- MemWINV- VGASnoop- ParErr- Stepping- SERR- FastB2B- DisINTx-
>> Status: Cap- 66MHz- UDF- FastB2B- ParErr- DEVSEL=fast >TAbort- <TAbort- <MAbort- >SERR- <PERR- INTx-
>> Latency: 0
>> Interrupt: pin A routed to IRQ 24
>> Region 0: I/O ports at c000 [size=256]
>> Region 1: Memory at f2000000 (32-bit, prefetchable) [size=16M]
>> Kernel driver in use: xen-platform-pci
>>
>> 00:03.0 VGA compatible controller [0300]: Cirrus Logic GD 5446 [1013:00b8] (prog-if 00 [VGA controller])
>> Subsystem: Red Hat, Inc Device [1af4:1100]
>> Physical Slot: 3
>> Control: I/O+ Mem+ BusMaster+ SpecCycle- MemWINV- VGASnoop- ParErr- Stepping- SERR- FastB2B- DisINTx-
>> Status: Cap- 66MHz- UDF- FastB2B- ParErr- DEVSEL=fast >TAbort- <TAbort- <MAbort- >SERR- <PERR- INTx-
>> Latency: 0
>> Region 0: Memory at f0000000 (32-bit, prefetchable) [size=32M]
>> Region 1: Memory at f30b0000 (32-bit, non-prefetchable) [size=4K]
>> Expansion ROM at f30a0000 [disabled] [size=64K]
>>
>> 00:05.0 VGA compatible controller [0300]: Advanced Micro Devices [AMD] nee ATI Turks [Radeon HD 6570] [1002:6759] (prog-if 00 [VGA controller])
>> Subsystem: PC Partner Limited Device [174b:e193]
>> Physical Slot: 5
>> Control: I/O+ Mem+ BusMaster+ SpecCycle- MemWINV- VGASnoop- ParErr- Stepping- SERR- FastB2B- DisINTx+
>> Status: Cap+ 66MHz- UDF- FastB2B- ParErr- DEVSEL=fast >TAbort- <TAbort- <MAbort- >SERR- <PERR- INTx-
>> Latency: 0
>> Interrupt: pin A routed to IRQ 81
>> Region 0: Memory at e0000000 (64-bit, prefetchable) [size=256M]
>> Region 2: Memory at f3060000 (64-bit, non-prefetchable) [size=128K]
>> Region 4: I/O ports at c100 [size=256]
>> Expansion ROM at f3080000 [disabled] [size=128K]
>> Capabilities: [50] Power Management version 3
>> Flags: PMEClk- DSI- D1+ D2+ AuxCurrent=0mA PME(D0-,D1-,D2-,D3hot-,D3cold-)
>> Status: D0 NoSoftRst+ PME-Enable- DSel=0 DScale=0 PME-
>> Capabilities: [58] Express (v2) Legacy Endpoint, MSI 00
>> DevCap: MaxPayload 256 bytes, PhantFunc 0, Latency L0s <4us, L1 unlimited
>> ExtTag+ AttnBtn- AttnInd- PwrInd- RBE+ FLReset-
>> DevCtl: Report errors: Correctable- Non-Fatal- Fatal- Unsupported-
>> RlxdOrd+ ExtTag- PhantFunc- AuxPwr- NoSnoop+
>> MaxPayload 128 bytes, MaxReadReq 512 bytes
>> DevSta: CorrErr+ UncorrErr+ FatalErr- UnsuppReq+ AuxPwr- TransPend-
>> LnkCap: Port #0, Speed 5GT/s, Width x16, ASPM L0s L1, Latency L0 <64ns, L1 <1us
>> ClockPM- Surprise- LLActRep- BwNot-
>> LnkCtl: ASPM Disabled; RCB 64 bytes Disabled- Retrain- CommClk-
>> ExtSynch- ClockPM- AutWidDis- BWInt- AutBWInt-
>> LnkSta: Speed 2.5GT/s, Width x8, TrErr- Train- SlotClk+ DLActive- BWMgmt- ABWMgmt-
>> DevCap2: Completion Timeout: Not Supported, TimeoutDis-
>> DevCtl2: Completion Timeout: 50us to 50ms, TimeoutDis-
>> LnkCtl2: Target Link Speed: 5GT/s, EnterCompliance- SpeedDis-, Selectable De-emphasis: -6dB
>> Transmit Margin: Normal Operating Range, EnterModifiedCompliance- ComplianceSOS-
>> Compliance De-emphasis: -6dB
>> LnkSta2: Current De-emphasis Level: -3.5dB, EqualizationComplete-, EqualizationPhase1-
>> EqualizationPhase2-, EqualizationPhase3-, LinkEqualizationRequest-
>> Capabilities: [a0] MSI: Enable+ Count=1/1 Maskable- 64bit+
>> Address: 00000000fee57000 Data: 4300
>> Capabilities: [100 v9] #1002
>> Kernel driver in use: radeon
^ permalink raw reply [flat|nested] 10+ messages in thread
* Re: [Qemu-devel] Secondary VGA passthrough not working, hitting linux kernel's pci_fixup_video
2014-01-15 13:14 ` Sander Eikelenboom
@ 2014-01-15 19:03 ` Michael S. Tsirkin
2014-01-15 19:19 ` Sander Eikelenboom
0 siblings, 1 reply; 10+ messages in thread
From: Michael S. Tsirkin @ 2014-01-15 19:03 UTC (permalink / raw)
To: Sander Eikelenboom; +Cc: qemu-devel, Anthony Liguori
On Wed, Jan 15, 2014 at 02:14:49PM +0100, Sander Eikelenboom wrote:
>
> Wednesday, January 15, 2014, 12:58:20 PM, you wrote:
>
> > On Wed, Jan 15, 2014 at 11:37:29AM +0100, Sander Eikelenboom wrote:
> >> Hi Michael / Anthony,
> >>
> >> I'm trying to do secondary VGA passthrough with on Xen for some time. The problem was that the driver
> >> would get the rom of the emulated VGA device instead of it's own rom from the rom bar.
> >>
> >> In the end I found out it is because of a "fixup" in the linux kernel, "pci_fixup_video" in arch/x86/pci/fixup.c
> >> that sets the IORESOURCE_ROM_SHADOW flag for both VGA cards and make both point to C000 (which is were the emulated rom is).
> >>
> >> The code there tries to verify if the bridge has the PCI_BRIDGE_CTL_VGA bit set, and would only apply the fix when that's true
> >> however the code doesn't get that far since it returns prematurely since !bridge (the code in question is below as is a dump of lspci -vvvknn).
> >>
> >> The author of that code replied:
> >>
> >> I understood there is no bridge for a VGA device in your virtual machine.
> >> Your emulator for the bridge control register is odd.
>
> > That seems beside the point as there's no bridge here.
>
> >> I guess your virtual machine ignore "PCI-to-PCI Bridge Architecture
> >> Specification".
>
> > Since there's no pci to pci bridge in this VM, why would this
> > specification apply?
>
>
>
> >> Thank you,
> >>
> >> Eiichiro Oiwa
>
> > I can't see that reply anywhere except quoted in your mail.
>
> Hmm strange his replies are indeed not archived in that LKML archive.
>
>
> > Tried to hunt addresses for relevant people and Cc them all.
> > Cc: bhelgaas@google.com
> > Cc: linux-pci@vger.kernel.org
> > Cc: jbarnes@virtuousgeek.org
> > Cc: airlied@redhat.com
> > Cc: eiichiro.oiwa.nm@hitachi.com
> > Cc: linux-kernel@vger.kernel.org
>
> > not yet copying until we think it's a linux bug.
>
> Thanks yes i thought it would be more wise to first verify with you Qemu guys :-)
>
> Qemu has perhaps a slightly different pci setup/layout from the average real machine ..
> However the linux kernel fixup seems to target quite broad for a very small number of cases it would actually fix.
> So yes .. i don't know if there is actually any part to "blame" .. and if not .. where it would be the most easy
> and durable to fix it.
>
> For reference this is the linux history of commits that introduced and changed the current pci_fixup_video:
>
> commit 6b5c76b8e2ff204fa8d7201acce461188873bf2b
> Author: Eiichiro Oiwa <eiichiro.oiwa.nm@hitachi.com>
> Date: Mon Oct 23 15:14:07 2006 +0900
>
> PCI: fix pci_fixup_video as it blows up on sparc64
>
> This reverts much of the original pci_fixup_video change and makes it
> work for all arches that need it.
>
> fixed, and tested on x86, x86_64 and IA64 dig.
>
> Signed-off-by: Eiichiro Oiwa <eiichiro.oiwa.nm@hitachi.com>
> Acked-by: David Miller <davem@davemloft.net>
> Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
>
> commit 938f667198179dc0c8424e2cfac9cd9fe405bee3
> Author: Paolo Ciarrocchi <paolo.ciarrocchi@gmail.com>
> Date: Wed Jan 30 13:33:00 2008 +0100
>
> x86: coding style fixes in arch/x86/pci/fixup.c
> Simple coding style fixes.
> no code changed:
>
> commit 73e3b590f38fb7c03ee370430348edf1f401204e
> Author: Yinghai Lu <yinghai@kernel.org>
> Date: Thu Feb 23 23:46:52 2012 -0800
>
> PCI: Use class for quirk for pci_fixup_video
>
> commit 6cf20beec4b91c240cf759b4db72669e251f1fc4
> Author: Dave Airlie <airlied@redhat.com>
> Date: Mon May 14 17:00:40 2012 +0100
>
> x86/vga: set the default device from the fixup.
>
> Since Matthew's efi/vga changes on non-EFI machines we were failing
> to tell the vgaarb/switcheroo what the default device was, this
> sets the default device in the quirk if none has been set before.
>
> This fixes the switcheroo on my T410s.
>
> commit a18e3690a52790a034d6540d54e8e1f1cd125da2
> Author: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
> Date: Fri Dec 21 14:02:53 2012 -0800
>
> X86: drivers: remove __dev* attributes.
>
> CONFIG_HOTPLUG is going away as an option. As a result, the __dev*
> markings need to be removed.
>
> This change removes the use of __devinit, __devexit_p, __devinitconst,
> and __devexit from these drivers.
>
> Based on patches originally written by Bill Pemberton, but redone by me
> in order to handle some of the coding style issues better, by hand.
>
>
> >>
> >> So my first question is .. (i haven't got much knowledge on PCI) is he right and is the layout of pci devices in Qemu indeed out of spec ?
> >> Or is the pci_fixup_video code assuming too much ... ?
> >>
> >> And second .. any ideas of how to fix it ?
> >>
> >> When i prevent this quirk/fixup from running in the guest kernel, the passthrough works fine .. it can read it's bios .. playing HD video .. even DPM seems to work with the radeon :-)
> >>
> >> Also see this thread on the linux-kernel mailing list: https://lkml.org/lkml/2014/1/11/203
>
>
> > Overall what's the issue here?
>
> > Here's my analysis:
> > You have two video cards both on the root bus.
> > So the logic in fixup that tries to guess which one
> > to use based on which one is behind bridge
> > isn't effective.
>
> Check.
>
> > As the result fixup will enable ROM shadow for both,
> > unsurprisingly this doesn't work.
>
> Check.
>
> > But they can't both work in VGA mode anyway, right?
> > They would try to claim both addresses.
>
> I don't know why .. but it seems they don't try to ..
> probably how seabios works .. since it finds the optionrom for the emulated device and
> enables VGA text mode at that moment ?
>
> (d21) [2014-01-14 23:51:07] Invoking SeaBIOS ...
> (d21) [2014-01-14 23:51:07] SeaBIOS (version rel-1.7.3-117-g31b8b4e-dirty-20140112_142355-serveerstertje)
> (d21) [2014-01-14 23:51:07]
> (d21) [2014-01-14 23:51:07] Found Xen hypervisor signature at 40000000
> (d21) [2014-01-14 23:51:07] Running on QEMU (i440fx)
> (d21) [2014-01-14 23:51:07] xen: copy e820...
> (d21) [2014-01-14 23:51:07] Relocating init from 0x000e1b81 to 0x3f7e0e50 (size 61675)
> (d21) [2014-01-14 23:51:07] CPU Mhz=3202
> (d21) [2014-01-14 23:51:07] Found 9 PCI devices (max PCI bus is 00)
> (d21) [2014-01-14 23:51:07] Allocated Xen hypercall page at 3f7ff000
> (d21) [2014-01-14 23:51:07] Detected Xen v4.4-unstable
> (d21) [2014-01-14 23:51:07] xen: copy BIOS tables...
> (d21) [2014-01-14 23:51:07] Copying SMBIOS entry point from 0x00010010 to 0x000f0c50
> (d21) [2014-01-14 23:51:07] Copying MPTABLE from 0xfc001190/fc0011a0 to 0x000f0b40
> (d21) [2014-01-14 23:51:07] Copying PIR from 0x00010030 to 0x000f0ac0
> (d21) [2014-01-14 23:51:07] Copying ACPI RSDP from 0x000100b0 to 0x000f0a90
> (d21) [2014-01-14 23:51:07] Using pmtimer, ioport 0xb008
> (d21) [2014-01-14 23:51:07] Scan for VGA option rom
> (d21) [2014-01-14 23:51:07] Running option rom at c000:0003
> (XEN) [2014-01-14 23:51:07] stdvga.c:147:d21 entering stdvga and caching modes
> (d21) [2014-01-14 23:51:07] pmm call arg1=0
> (d21) [2014-01-14 23:51:07] Turning on vga text mode console
>
>
I think it's more or less by luck.
I think VGA registers aren't passed through yet
so cirrus emulation is the only one that claims VGA registers.
There's no way for guest to know this though at the moment.
Other possible ways to do this (in addition to bridge hack I suggested
below):
- mask ROM from guest so it doesn't see it. It won't try to load
it then.
we have a flag for this : rombar=0 but I'm not sure it works
for device assignment. you can try.
- add a new flag to override programming interface (or class)
so guest knows VGA does not work for this device
> > So I would say you should just disable cirrus on qemu command line with
> > the -no-graphics flag.
> > Then it won't conflict.
>
> yes you would end up with primary passthrough, which is also a goal, but secondary
> passthrough seemed to be an easier primary goal.
>
> I will see if i can get this working but as far as i know stuff didn't work on Xen without applying
> additional patches to hvmloader and or qemu.
>
> > If you don't want your card to work in VGA mode,
> > just want it to work in non VGA mode, we run into a problem
> > in that there's no standard way to disable VGA addresses in devices themselves.
> > If you want this one solution is to put your card behind a pci to pci bridge in qemu.
> > Our bridges don't support VGA so your card won't work in VGA mode then.
>
> Yes it's not working in VGA mode now .. it only starts giving output on the monitor
> when the radeon driver loads.
>
> I don't know how this would work on a normal machine with say 2 graphic cards ..
> would those always be behing a different bridge ?
> If not the fixup code in the kernel isn't selective enough.
My guess is, if there isn't a bridge there, they will conflict,
only one can be enabled at a time.
If there's a bridge there, VGA mode can be disabled in the bridge.
> Isn't there another way a system can indicate which device is the primary (as you can select in most real world bioses
> (agp/pci/pcie/igd) ?
> If not then a boot option and manually specifying / overriding the boot vga card would probably be the only way to fix it i guess.
Why the only way? Did you try placing your card behind a pci bridge and
it didn't work?
>
> Thanks for your prompt reply and analysis !
>
> --
> Sander
>
>
> >> --
> >>
> >> Sander
> >>
> >>
> >>
> >> /*
> >> * Fixup to mark boot BIOS video selected by BIOS before it changes
> >> *
> >> * From information provided by "Jon Smirl" <jonsmirl@gmail.com>
> >> *
> >> * The standard boot ROM sequence for an x86 machine uses the BIOS
> >> * to select an initial video card for boot display. This boot video
> >> * card will have it's BIOS copied to C0000 in system RAM.
> >> * IORESOURCE_ROM_SHADOW is used to associate the boot video
> >> * card with this copy. On laptops this copy has to be used since
> >> * the main ROM may be compressed or combined with another image.
> >> * See pci_map_rom() for use of this flag. Before we mark the device
> >> * with IORESOURCE_ROM_SHADOW we have to check if this is or should become
> >> * the primary video card, since this quirk is ran for all video devices.
> >> */
> >>
> >> static void pci_fixup_video(struct pci_dev *pdev)
> >> {
> >> struct pci_dev *bridge;
> >> struct pci_bus *bus;
> >> u16 config;
> >>
> >> /* Is VGA routed to us? */
> >> bus = pdev->bus;
> >> while (bus) {
> >> bridge = bus->self;
> >>
> >> /*
> >> * From information provided by
> >> * "David Miller" <davem@davemloft.net>
> >> * The bridge control register is valid for PCI header
> >> * type BRIDGE, or CARDBUS. Host to PCI controllers use
> >> * PCI header type NORMAL.
> >> */
> >> if (bridge
> >> && ((bridge->hdr_type == PCI_HEADER_TYPE_BRIDGE)
> >> || (bridge->hdr_type == PCI_HEADER_TYPE_CARDBUS))) {
> >> pci_read_config_word(bridge, PCI_BRIDGE_CONTROL,
> >> &config);
> >> if (!(config & PCI_BRIDGE_CTL_VGA))
> >> return;
> >> }
> >> bus = bus->parent;
> >> }
> >> if (!vga_default_device() || pdev == vga_default_device()) {
> >> pci_read_config_word(pdev, PCI_COMMAND, &config);
> >> if (config & (PCI_COMMAND_IO | PCI_COMMAND_MEMORY)) {
> >> pdev->resource[PCI_ROM_RESOURCE].flags |= IORESOURCE_ROM_SHADOW;
> >> dev_printk(KERN_DEBUG, &pdev->dev, "Boot video device\n");
> >> vga_set_default_device(pdev);
> >> }
> >> }
> >> }
> >> DECLARE_PCI_FIXUP_CLASS_FINAL(PCI_ANY_ID, PCI_ANY_ID,
> >> PCI_CLASS_DISPLAY_VGA, 8, pci_fixup_video);
> >>
> >>
> >>
> >>
> >>
> >>
> >>
> >>
> >>
> >>
> >>
> >>
> >>
> >> # lspci -vvvknn
> >> 00:00.0 Host bridge [0600]: Intel Corporation 440FX - 82441FX PMC [Natoma] [8086:1237] (rev 02)
> >> Subsystem: Red Hat, Inc Qemu virtual machine [1af4:1100]
> >> Control: I/O- Mem- BusMaster+ SpecCycle- MemWINV- VGASnoop- ParErr- Stepping- SERR- FastB2B- DisINTx-
> >> Status: Cap- 66MHz- UDF- FastB2B- ParErr- DEVSEL=fast >TAbort- <TAbort- <MAbort- >SERR- <PERR- INTx-
> >> Latency: 0
> >>
> >> 00:01.0 ISA bridge [0601]: Intel Corporation 82371SB PIIX3 ISA [Natoma/Triton II] [8086:7000]
> >> Subsystem: Red Hat, Inc Qemu virtual machine [1af4:1100]
> >> Physical Slot: 1
> >> Control: I/O- Mem- BusMaster+ SpecCycle- MemWINV- VGASnoop- ParErr- Stepping- SERR- FastB2B- DisINTx-
> >> Status: Cap- 66MHz- UDF- FastB2B- ParErr- DEVSEL=medium >TAbort- <TAbort- <MAbort- >SERR- <PERR- INTx-
> >> Latency: 0
> >>
> >> 00:01.1 IDE interface [0101]: Intel Corporation 82371SB PIIX3 IDE [Natoma/Triton II] [8086:7010] (prog-if 80 [Master])
> >> Subsystem: Red Hat, Inc Qemu virtual machine [1af4:1100]
> >> Physical Slot: 1
> >> Control: I/O+ Mem- BusMaster+ SpecCycle- MemWINV- VGASnoop- ParErr- Stepping- SERR- FastB2B- DisINTx-
> >> Status: Cap- 66MHz- UDF- FastB2B+ ParErr- DEVSEL=medium >TAbort- <TAbort- <MAbort- >SERR- <PERR- INTx-
> >> Latency: 0
> >> Region 0: [virtual] Memory at 000001f0 (32-bit, non-prefetchable) [size=8]
> >> Region 1: [virtual] Memory at 000003f0 (type 3, non-prefetchable) [size=1]
> >> Region 2: [virtual] Memory at 00000170 (32-bit, non-prefetchable) [size=8]
> >> Region 3: [virtual] Memory at 00000370 (type 3, non-prefetchable) [size=1]
> >> Region 4: I/O ports at c260 [size=16]
> >> Kernel driver in use: PIIX_IDE
> >>
> >> 00:01.2 USB controller [0c03]: Intel Corporation 82371SB PIIX3 USB [Natoma/Triton II] [8086:7020] (rev 01) (prog-if 00 [UHCI])
> >> Subsystem: Red Hat, Inc Qemu virtual machine [1af4:1100]
> >> Physical Slot: 1
> >> Control: I/O+ Mem- BusMaster+ SpecCycle- MemWINV- VGASnoop- ParErr- Stepping- SERR- FastB2B- DisINTx-
> >> Status: Cap- 66MHz- UDF- FastB2B- ParErr- DEVSEL=fast >TAbort- <TAbort- <MAbort- >SERR- <PERR- INTx-
> >> Latency: 0
> >> Interrupt: pin D routed to IRQ 23
> >> Region 4: I/O ports at c240 [size=32]
> >> Kernel driver in use: uhci_hcd
> >>
> >> 00:01.3 Bridge [0680]: Intel Corporation 82371AB/EB/MB PIIX4 ACPI [8086:7113] (rev 03)
> >> Subsystem: Red Hat, Inc Qemu virtual machine [1af4:1100]
> >> Physical Slot: 1
> >> Control: I/O- Mem- BusMaster+ SpecCycle- MemWINV- VGASnoop- ParErr- Stepping- SERR- FastB2B- DisINTx-
> >> Status: Cap- 66MHz- UDF- FastB2B+ ParErr- DEVSEL=medium >TAbort- <TAbort- <MAbort- >SERR- <PERR- INTx-
> >> Latency: 0
> >> Interrupt: pin A routed to IRQ 9
> >>
> >> 00:02.0 Unassigned class [ff80]: XenSource, Inc. Xen Platform Device [5853:0001] (rev 01)
> >> Subsystem: XenSource, Inc. Xen Platform Device [5853:0001]
> >> Physical Slot: 2
> >> Control: I/O+ Mem+ BusMaster+ SpecCycle- MemWINV- VGASnoop- ParErr- Stepping- SERR- FastB2B- DisINTx-
> >> Status: Cap- 66MHz- UDF- FastB2B- ParErr- DEVSEL=fast >TAbort- <TAbort- <MAbort- >SERR- <PERR- INTx-
> >> Latency: 0
> >> Interrupt: pin A routed to IRQ 24
> >> Region 0: I/O ports at c000 [size=256]
> >> Region 1: Memory at f2000000 (32-bit, prefetchable) [size=16M]
> >> Kernel driver in use: xen-platform-pci
> >>
> >> 00:03.0 VGA compatible controller [0300]: Cirrus Logic GD 5446 [1013:00b8] (prog-if 00 [VGA controller])
> >> Subsystem: Red Hat, Inc Device [1af4:1100]
> >> Physical Slot: 3
> >> Control: I/O+ Mem+ BusMaster+ SpecCycle- MemWINV- VGASnoop- ParErr- Stepping- SERR- FastB2B- DisINTx-
> >> Status: Cap- 66MHz- UDF- FastB2B- ParErr- DEVSEL=fast >TAbort- <TAbort- <MAbort- >SERR- <PERR- INTx-
> >> Latency: 0
> >> Region 0: Memory at f0000000 (32-bit, prefetchable) [size=32M]
> >> Region 1: Memory at f30b0000 (32-bit, non-prefetchable) [size=4K]
> >> Expansion ROM at f30a0000 [disabled] [size=64K]
> >>
> >> 00:05.0 VGA compatible controller [0300]: Advanced Micro Devices [AMD] nee ATI Turks [Radeon HD 6570] [1002:6759] (prog-if 00 [VGA controller])
> >> Subsystem: PC Partner Limited Device [174b:e193]
> >> Physical Slot: 5
> >> Control: I/O+ Mem+ BusMaster+ SpecCycle- MemWINV- VGASnoop- ParErr- Stepping- SERR- FastB2B- DisINTx+
> >> Status: Cap+ 66MHz- UDF- FastB2B- ParErr- DEVSEL=fast >TAbort- <TAbort- <MAbort- >SERR- <PERR- INTx-
> >> Latency: 0
> >> Interrupt: pin A routed to IRQ 81
> >> Region 0: Memory at e0000000 (64-bit, prefetchable) [size=256M]
> >> Region 2: Memory at f3060000 (64-bit, non-prefetchable) [size=128K]
> >> Region 4: I/O ports at c100 [size=256]
> >> Expansion ROM at f3080000 [disabled] [size=128K]
> >> Capabilities: [50] Power Management version 3
> >> Flags: PMEClk- DSI- D1+ D2+ AuxCurrent=0mA PME(D0-,D1-,D2-,D3hot-,D3cold-)
> >> Status: D0 NoSoftRst+ PME-Enable- DSel=0 DScale=0 PME-
> >> Capabilities: [58] Express (v2) Legacy Endpoint, MSI 00
> >> DevCap: MaxPayload 256 bytes, PhantFunc 0, Latency L0s <4us, L1 unlimited
> >> ExtTag+ AttnBtn- AttnInd- PwrInd- RBE+ FLReset-
> >> DevCtl: Report errors: Correctable- Non-Fatal- Fatal- Unsupported-
> >> RlxdOrd+ ExtTag- PhantFunc- AuxPwr- NoSnoop+
> >> MaxPayload 128 bytes, MaxReadReq 512 bytes
> >> DevSta: CorrErr+ UncorrErr+ FatalErr- UnsuppReq+ AuxPwr- TransPend-
> >> LnkCap: Port #0, Speed 5GT/s, Width x16, ASPM L0s L1, Latency L0 <64ns, L1 <1us
> >> ClockPM- Surprise- LLActRep- BwNot-
> >> LnkCtl: ASPM Disabled; RCB 64 bytes Disabled- Retrain- CommClk-
> >> ExtSynch- ClockPM- AutWidDis- BWInt- AutBWInt-
> >> LnkSta: Speed 2.5GT/s, Width x8, TrErr- Train- SlotClk+ DLActive- BWMgmt- ABWMgmt-
> >> DevCap2: Completion Timeout: Not Supported, TimeoutDis-
> >> DevCtl2: Completion Timeout: 50us to 50ms, TimeoutDis-
> >> LnkCtl2: Target Link Speed: 5GT/s, EnterCompliance- SpeedDis-, Selectable De-emphasis: -6dB
> >> Transmit Margin: Normal Operating Range, EnterModifiedCompliance- ComplianceSOS-
> >> Compliance De-emphasis: -6dB
> >> LnkSta2: Current De-emphasis Level: -3.5dB, EqualizationComplete-, EqualizationPhase1-
> >> EqualizationPhase2-, EqualizationPhase3-, LinkEqualizationRequest-
> >> Capabilities: [a0] MSI: Enable+ Count=1/1 Maskable- 64bit+
> >> Address: 00000000fee57000 Data: 4300
> >> Capabilities: [100 v9] #1002
> >> Kernel driver in use: radeon
>
^ permalink raw reply [flat|nested] 10+ messages in thread
* Re: [Qemu-devel] Secondary VGA passthrough not working, hitting linux kernel's pci_fixup_video
2014-01-15 19:03 ` Michael S. Tsirkin
@ 2014-01-15 19:19 ` Sander Eikelenboom
2014-01-15 22:10 ` Bjorn Helgaas
0 siblings, 1 reply; 10+ messages in thread
From: Sander Eikelenboom @ 2014-01-15 19:19 UTC (permalink / raw)
To: Michael S. Tsirkin; +Cc: qemu-devel, Anthony Liguori
Wednesday, January 15, 2014, 8:03:15 PM, you wrote:
> On Wed, Jan 15, 2014 at 02:14:49PM +0100, Sander Eikelenboom wrote:
>>
>> Wednesday, January 15, 2014, 12:58:20 PM, you wrote:
>>
>> > On Wed, Jan 15, 2014 at 11:37:29AM +0100, Sander Eikelenboom wrote:
>> >> Hi Michael / Anthony,
>> >>
>> >> I'm trying to do secondary VGA passthrough with on Xen for some time. The problem was that the driver
>> >> would get the rom of the emulated VGA device instead of it's own rom from the rom bar.
>> >>
>> >> In the end I found out it is because of a "fixup" in the linux kernel, "pci_fixup_video" in arch/x86/pci/fixup.c
>> >> that sets the IORESOURCE_ROM_SHADOW flag for both VGA cards and make both point to C000 (which is were the emulated rom is).
>> >>
>> >> The code there tries to verify if the bridge has the PCI_BRIDGE_CTL_VGA bit set, and would only apply the fix when that's true
>> >> however the code doesn't get that far since it returns prematurely since !bridge (the code in question is below as is a dump of lspci -vvvknn).
>> >>
>> >> The author of that code replied:
>> >>
>> >> I understood there is no bridge for a VGA device in your virtual machine.
>> >> Your emulator for the bridge control register is odd.
>>
>> > That seems beside the point as there's no bridge here.
>>
>> >> I guess your virtual machine ignore "PCI-to-PCI Bridge Architecture
>> >> Specification".
>>
>> > Since there's no pci to pci bridge in this VM, why would this
>> > specification apply?
>>
>>
>>
>> >> Thank you,
>> >>
>> >> Eiichiro Oiwa
>>
>> > I can't see that reply anywhere except quoted in your mail.
>>
>> Hmm strange his replies are indeed not archived in that LKML archive.
>>
>>
>> > Tried to hunt addresses for relevant people and Cc them all.
>> > Cc: bhelgaas@google.com
>> > Cc: linux-pci@vger.kernel.org
>> > Cc: jbarnes@virtuousgeek.org
>> > Cc: airlied@redhat.com
>> > Cc: eiichiro.oiwa.nm@hitachi.com
>> > Cc: linux-kernel@vger.kernel.org
>>
>> > not yet copying until we think it's a linux bug.
>>
>> Thanks yes i thought it would be more wise to first verify with you Qemu guys :-)
>>
>> Qemu has perhaps a slightly different pci setup/layout from the average real machine ..
>> However the linux kernel fixup seems to target quite broad for a very small number of cases it would actually fix.
>> So yes .. i don't know if there is actually any part to "blame" .. and if not .. where it would be the most easy
>> and durable to fix it.
>>
>> For reference this is the linux history of commits that introduced and changed the current pci_fixup_video:
>>
>> commit 6b5c76b8e2ff204fa8d7201acce461188873bf2b
>> Author: Eiichiro Oiwa <eiichiro.oiwa.nm@hitachi.com>
>> Date: Mon Oct 23 15:14:07 2006 +0900
>>
>> PCI: fix pci_fixup_video as it blows up on sparc64
>>
>> This reverts much of the original pci_fixup_video change and makes it
>> work for all arches that need it.
>>
>> fixed, and tested on x86, x86_64 and IA64 dig.
>>
>> Signed-off-by: Eiichiro Oiwa <eiichiro.oiwa.nm@hitachi.com>
>> Acked-by: David Miller <davem@davemloft.net>
>> Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
>>
>> commit 938f667198179dc0c8424e2cfac9cd9fe405bee3
>> Author: Paolo Ciarrocchi <paolo.ciarrocchi@gmail.com>
>> Date: Wed Jan 30 13:33:00 2008 +0100
>>
>> x86: coding style fixes in arch/x86/pci/fixup.c
>> Simple coding style fixes.
>> no code changed:
>>
>> commit 73e3b590f38fb7c03ee370430348edf1f401204e
>> Author: Yinghai Lu <yinghai@kernel.org>
>> Date: Thu Feb 23 23:46:52 2012 -0800
>>
>> PCI: Use class for quirk for pci_fixup_video
>>
>> commit 6cf20beec4b91c240cf759b4db72669e251f1fc4
>> Author: Dave Airlie <airlied@redhat.com>
>> Date: Mon May 14 17:00:40 2012 +0100
>>
>> x86/vga: set the default device from the fixup.
>>
>> Since Matthew's efi/vga changes on non-EFI machines we were failing
>> to tell the vgaarb/switcheroo what the default device was, this
>> sets the default device in the quirk if none has been set before.
>>
>> This fixes the switcheroo on my T410s.
>>
>> commit a18e3690a52790a034d6540d54e8e1f1cd125da2
>> Author: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
>> Date: Fri Dec 21 14:02:53 2012 -0800
>>
>> X86: drivers: remove __dev* attributes.
>>
>> CONFIG_HOTPLUG is going away as an option. As a result, the __dev*
>> markings need to be removed.
>>
>> This change removes the use of __devinit, __devexit_p, __devinitconst,
>> and __devexit from these drivers.
>>
>> Based on patches originally written by Bill Pemberton, but redone by me
>> in order to handle some of the coding style issues better, by hand.
>>
>>
>> >>
>> >> So my first question is .. (i haven't got much knowledge on PCI) is he right and is the layout of pci devices in Qemu indeed out of spec ?
>> >> Or is the pci_fixup_video code assuming too much ... ?
>> >>
>> >> And second .. any ideas of how to fix it ?
>> >>
>> >> When i prevent this quirk/fixup from running in the guest kernel, the passthrough works fine .. it can read it's bios .. playing HD video .. even DPM seems to work with the radeon :-)
>> >>
>> >> Also see this thread on the linux-kernel mailing list: https://lkml.org/lkml/2014/1/11/203
>>
>>
>> > Overall what's the issue here?
>>
>> > Here's my analysis:
>> > You have two video cards both on the root bus.
>> > So the logic in fixup that tries to guess which one
>> > to use based on which one is behind bridge
>> > isn't effective.
>>
>> Check.
>>
>> > As the result fixup will enable ROM shadow for both,
>> > unsurprisingly this doesn't work.
>>
>> Check.
>>
>> > But they can't both work in VGA mode anyway, right?
>> > They would try to claim both addresses.
>>
>> I don't know why .. but it seems they don't try to ..
>> probably how seabios works .. since it finds the optionrom for the emulated device and
>> enables VGA text mode at that moment ?
>>
>> (d21) [2014-01-14 23:51:07] Invoking SeaBIOS ...
>> (d21) [2014-01-14 23:51:07] SeaBIOS (version rel-1.7.3-117-g31b8b4e-dirty-20140112_142355-serveerstertje)
>> (d21) [2014-01-14 23:51:07]
>> (d21) [2014-01-14 23:51:07] Found Xen hypervisor signature at 40000000
>> (d21) [2014-01-14 23:51:07] Running on QEMU (i440fx)
>> (d21) [2014-01-14 23:51:07] xen: copy e820...
>> (d21) [2014-01-14 23:51:07] Relocating init from 0x000e1b81 to 0x3f7e0e50 (size 61675)
>> (d21) [2014-01-14 23:51:07] CPU Mhz=3202
>> (d21) [2014-01-14 23:51:07] Found 9 PCI devices (max PCI bus is 00)
>> (d21) [2014-01-14 23:51:07] Allocated Xen hypercall page at 3f7ff000
>> (d21) [2014-01-14 23:51:07] Detected Xen v4.4-unstable
>> (d21) [2014-01-14 23:51:07] xen: copy BIOS tables...
>> (d21) [2014-01-14 23:51:07] Copying SMBIOS entry point from 0x00010010 to 0x000f0c50
>> (d21) [2014-01-14 23:51:07] Copying MPTABLE from 0xfc001190/fc0011a0 to 0x000f0b40
>> (d21) [2014-01-14 23:51:07] Copying PIR from 0x00010030 to 0x000f0ac0
>> (d21) [2014-01-14 23:51:07] Copying ACPI RSDP from 0x000100b0 to 0x000f0a90
>> (d21) [2014-01-14 23:51:07] Using pmtimer, ioport 0xb008
>> (d21) [2014-01-14 23:51:07] Scan for VGA option rom
>> (d21) [2014-01-14 23:51:07] Running option rom at c000:0003
>> (XEN) [2014-01-14 23:51:07] stdvga.c:147:d21 entering stdvga and caching modes
>> (d21) [2014-01-14 23:51:07] pmm call arg1=0
>> (d21) [2014-01-14 23:51:07] Turning on vga text mode console
>>
>>
> I think it's more or less by luck.
> I think VGA registers aren't passed through yet
> so cirrus emulation is the only one that claims VGA registers.
> There's no way for guest to know this though at the moment.
> Other possible ways to do this (in addition to bridge hack I suggested
> below):
> - mask ROM from guest so it doesn't see it. It won't try to load
> it then.
> we have a flag for this : rombar=0 but I'm not sure it works
> for device assignment. you can try.
> - add a new flag to override programming interface (or class)
> so guest knows VGA does not work for this device
Yes i have done some more reading .. from what i could find from PCI specs there is nothing in there
that points to a specific boot vga card.
The whole agp/pci/pcie bios selection is ACPI stuff .. but if all the cards are of the same type ..
there is no way to specify a specific card.
So as far as i could find .. there is NO way to designate the boot VGA adapter (if of equal type and on the same bus/bridge).
But if that's the case .. the linux kernel fixup should only apply it's fix an device that have not being designated as boot device ..
even if it where by luck. And that's what's happening .. i have added another debug line .. and the arch and/or vga arbitration code
have already set the "vga_default_device", so the fixup code should use that knowledge and not apply the fixup to any other vga device.
In this case the "luck" is seabios:
(d25) [2014-01-15 18:50:58] Invoking SeaBIOS ...
(d25) [2014-01-15 18:50:58] SeaBIOS (version rel-1.7.3-117-g31b8b4e-dirty-20140115_180253-serveerstertje)
(d25) [2014-01-15 18:50:58]
(d25) [2014-01-15 18:50:58] Found Xen hypervisor signature at 40000000
(d25) [2014-01-15 18:50:58] Running on QEMU (i440fx)
(d25) [2014-01-15 18:50:58] xen: copy e820...
(d25) [2014-01-15 18:50:58] Relocating init from 0x000e1b81 to 0x3f7e0e50 (size 61675)
(d25) [2014-01-15 18:50:58] CPU Mhz=3201
(d25) [2014-01-15 18:50:58] Found 9 PCI devices (max PCI bus is 00)
(d25) [2014-01-15 18:50:58] Allocated Xen hypercall page at 3f7ff000
(d25) [2014-01-15 18:50:58] Detected Xen v4.4-unstable
(d25) [2014-01-15 18:50:58] xen: copy BIOS tables...
(d25) [2014-01-15 18:50:58] Copying SMBIOS entry point from 0x00010010 to 0x000f0c50
(d25) [2014-01-15 18:50:58] Copying MPTABLE from 0xfc001190/fc0011a0 to 0x000f0b40
(d25) [2014-01-15 18:50:58] Copying PIR from 0x00010030 to 0x000f0ac0
(d25) [2014-01-15 18:50:58] Copying ACPI RSDP from 0x000100b0 to 0x000f0a90
(d25) [2014-01-15 18:50:58] Using pmtimer, ioport 0xb008
(d25) [2014-01-15 18:50:58] Scan for VGA option rom
(d25) [2014-01-15 18:50:58] Running option rom at c000:0003
(XEN) [2014-01-15 18:50:58] stdvga.c:147:d25 entering stdvga and caching modes
(d25) [2014-01-15 18:50:58] pmm call arg1=0
(d25) [2014-01-15 18:50:58] Turning on vga text mode console
>> > So I would say you should just disable cirrus on qemu command line with
>> > the -no-graphics flag.
>> > Then it won't conflict.
>>
>> yes you would end up with primary passthrough, which is also a goal, but secondary
>> passthrough seemed to be an easier primary goal.
This didn't work out .. the guest halts in booting .. it seems just after invoking the option rom.
I will investigate this later.
>>
>> I will see if i can get this working but as far as i know stuff didn't work on Xen without applying
>> additional patches to hvmloader and or qemu.
>>
>> > If you don't want your card to work in VGA mode,
>> > just want it to work in non VGA mode, we run into a problem
>> > in that there's no standard way to disable VGA addresses in devices themselves.
>> > If you want this one solution is to put your card behind a pci to pci bridge in qemu.
>> > Our bridges don't support VGA so your card won't work in VGA mode then.
>>
>> Yes it's not working in VGA mode now .. it only starts giving output on the monitor
>> when the radeon driver loads.
>>
>> I don't know how this would work on a normal machine with say 2 graphic cards ..
>> would those always be behing a different bridge ?
>> If not the fixup code in the kernel isn't selective enough.
> My guess is, if there isn't a bridge there, they will conflict,
> only one can be enabled at a time.
> If there's a bridge there, VGA mode can be disabled in the bridge.
Well it does work :-p .. just the fixup shouldn't be applied to other devices ..
>> Isn't there another way a system can indicate which device is the primary (as you can select in most real world bioses
>> (agp/pci/pcie/igd) ?
>> If not then a boot option and manually specifying / overriding the boot vga card would probably be the only way to fix it i guess.
> Why the only way? Did you try placing your card behind a pci bridge and
> it didn't work?
Nope .. what option should i use for that ? (problem in Xen is it's not always easy to adjust the Qemu options (adding extra works,
changing what the management toolstack does is less easy)
And i still think 2 cards on the root bus is perhaps a non common but valid config.
As said .. the fixup code doesn't do what the comment says .. and my last test shows that
it does have the knowledge to not apply the fix.
So i will be back to the linux kernel side for this moment.
>>
>> Thanks for your prompt reply and analysis !
>>
>> --
>> Sander
>>
>>
>> >> --
>> >>
>> >> Sander
>> >>
>> >>
>> >>
>> >> /*
>> >> * Fixup to mark boot BIOS video selected by BIOS before it changes
>> >> *
>> >> * From information provided by "Jon Smirl" <jonsmirl@gmail.com>
>> >> *
>> >> * The standard boot ROM sequence for an x86 machine uses the BIOS
>> >> * to select an initial video card for boot display. This boot video
>> >> * card will have it's BIOS copied to C0000 in system RAM.
>> >> * IORESOURCE_ROM_SHADOW is used to associate the boot video
>> >> * card with this copy. On laptops this copy has to be used since
>> >> * the main ROM may be compressed or combined with another image.
>> >> * See pci_map_rom() for use of this flag. Before we mark the device
>> >> * with IORESOURCE_ROM_SHADOW we have to check if this is or should become
>> >> * the primary video card, since this quirk is ran for all video devices.
>> >> */
>> >>
>> >> static void pci_fixup_video(struct pci_dev *pdev)
>> >> {
>> >> struct pci_dev *bridge;
>> >> struct pci_bus *bus;
>> >> u16 config;
>> >>
>> >> /* Is VGA routed to us? */
>> >> bus = pdev->bus;
>> >> while (bus) {
>> >> bridge = bus->self;
>> >>
>> >> /*
>> >> * From information provided by
>> >> * "David Miller" <davem@davemloft.net>
>> >> * The bridge control register is valid for PCI header
>> >> * type BRIDGE, or CARDBUS. Host to PCI controllers use
>> >> * PCI header type NORMAL.
>> >> */
>> >> if (bridge
>> >> && ((bridge->hdr_type == PCI_HEADER_TYPE_BRIDGE)
>> >> || (bridge->hdr_type == PCI_HEADER_TYPE_CARDBUS))) {
>> >> pci_read_config_word(bridge, PCI_BRIDGE_CONTROL,
>> >> &config);
>> >> if (!(config & PCI_BRIDGE_CTL_VGA))
>> >> return;
>> >> }
>> >> bus = bus->parent;
>> >> }
>> >> if (!vga_default_device() || pdev == vga_default_device()) {
>> >> pci_read_config_word(pdev, PCI_COMMAND, &config);
>> >> if (config & (PCI_COMMAND_IO | PCI_COMMAND_MEMORY)) {
>> >> pdev->resource[PCI_ROM_RESOURCE].flags |= IORESOURCE_ROM_SHADOW;
>> >> dev_printk(KERN_DEBUG, &pdev->dev, "Boot video device\n");
>> >> vga_set_default_device(pdev);
>> >> }
>> >> }
>> >> }
>> >> DECLARE_PCI_FIXUP_CLASS_FINAL(PCI_ANY_ID, PCI_ANY_ID,
>> >> PCI_CLASS_DISPLAY_VGA, 8, pci_fixup_video);
>> >>
>> >>
>> >>
>> >>
>> >>
>> >>
>> >>
>> >>
>> >>
>> >>
>> >>
>> >>
>> >>
>> >> # lspci -vvvknn
>> >> 00:00.0 Host bridge [0600]: Intel Corporation 440FX - 82441FX PMC [Natoma] [8086:1237] (rev 02)
>> >> Subsystem: Red Hat, Inc Qemu virtual machine [1af4:1100]
>> >> Control: I/O- Mem- BusMaster+ SpecCycle- MemWINV- VGASnoop- ParErr- Stepping- SERR- FastB2B- DisINTx-
>> >> Status: Cap- 66MHz- UDF- FastB2B- ParErr- DEVSEL=fast >TAbort- <TAbort- <MAbort- >SERR- <PERR- INTx-
>> >> Latency: 0
>> >>
>> >> 00:01.0 ISA bridge [0601]: Intel Corporation 82371SB PIIX3 ISA [Natoma/Triton II] [8086:7000]
>> >> Subsystem: Red Hat, Inc Qemu virtual machine [1af4:1100]
>> >> Physical Slot: 1
>> >> Control: I/O- Mem- BusMaster+ SpecCycle- MemWINV- VGASnoop- ParErr- Stepping- SERR- FastB2B- DisINTx-
>> >> Status: Cap- 66MHz- UDF- FastB2B- ParErr- DEVSEL=medium >TAbort- <TAbort- <MAbort- >SERR- <PERR- INTx-
>> >> Latency: 0
>> >>
>> >> 00:01.1 IDE interface [0101]: Intel Corporation 82371SB PIIX3 IDE [Natoma/Triton II] [8086:7010] (prog-if 80 [Master])
>> >> Subsystem: Red Hat, Inc Qemu virtual machine [1af4:1100]
>> >> Physical Slot: 1
>> >> Control: I/O+ Mem- BusMaster+ SpecCycle- MemWINV- VGASnoop- ParErr- Stepping- SERR- FastB2B- DisINTx-
>> >> Status: Cap- 66MHz- UDF- FastB2B+ ParErr- DEVSEL=medium >TAbort- <TAbort- <MAbort- >SERR- <PERR- INTx-
>> >> Latency: 0
>> >> Region 0: [virtual] Memory at 000001f0 (32-bit, non-prefetchable) [size=8]
>> >> Region 1: [virtual] Memory at 000003f0 (type 3, non-prefetchable) [size=1]
>> >> Region 2: [virtual] Memory at 00000170 (32-bit, non-prefetchable) [size=8]
>> >> Region 3: [virtual] Memory at 00000370 (type 3, non-prefetchable) [size=1]
>> >> Region 4: I/O ports at c260 [size=16]
>> >> Kernel driver in use: PIIX_IDE
>> >>
>> >> 00:01.2 USB controller [0c03]: Intel Corporation 82371SB PIIX3 USB [Natoma/Triton II] [8086:7020] (rev 01) (prog-if 00 [UHCI])
>> >> Subsystem: Red Hat, Inc Qemu virtual machine [1af4:1100]
>> >> Physical Slot: 1
>> >> Control: I/O+ Mem- BusMaster+ SpecCycle- MemWINV- VGASnoop- ParErr- Stepping- SERR- FastB2B- DisINTx-
>> >> Status: Cap- 66MHz- UDF- FastB2B- ParErr- DEVSEL=fast >TAbort- <TAbort- <MAbort- >SERR- <PERR- INTx-
>> >> Latency: 0
>> >> Interrupt: pin D routed to IRQ 23
>> >> Region 4: I/O ports at c240 [size=32]
>> >> Kernel driver in use: uhci_hcd
>> >>
>> >> 00:01.3 Bridge [0680]: Intel Corporation 82371AB/EB/MB PIIX4 ACPI [8086:7113] (rev 03)
>> >> Subsystem: Red Hat, Inc Qemu virtual machine [1af4:1100]
>> >> Physical Slot: 1
>> >> Control: I/O- Mem- BusMaster+ SpecCycle- MemWINV- VGASnoop- ParErr- Stepping- SERR- FastB2B- DisINTx-
>> >> Status: Cap- 66MHz- UDF- FastB2B+ ParErr- DEVSEL=medium >TAbort- <TAbort- <MAbort- >SERR- <PERR- INTx-
>> >> Latency: 0
>> >> Interrupt: pin A routed to IRQ 9
>> >>
>> >> 00:02.0 Unassigned class [ff80]: XenSource, Inc. Xen Platform Device [5853:0001] (rev 01)
>> >> Subsystem: XenSource, Inc. Xen Platform Device [5853:0001]
>> >> Physical Slot: 2
>> >> Control: I/O+ Mem+ BusMaster+ SpecCycle- MemWINV- VGASnoop- ParErr- Stepping- SERR- FastB2B- DisINTx-
>> >> Status: Cap- 66MHz- UDF- FastB2B- ParErr- DEVSEL=fast >TAbort- <TAbort- <MAbort- >SERR- <PERR- INTx-
>> >> Latency: 0
>> >> Interrupt: pin A routed to IRQ 24
>> >> Region 0: I/O ports at c000 [size=256]
>> >> Region 1: Memory at f2000000 (32-bit, prefetchable) [size=16M]
>> >> Kernel driver in use: xen-platform-pci
>> >>
>> >> 00:03.0 VGA compatible controller [0300]: Cirrus Logic GD 5446 [1013:00b8] (prog-if 00 [VGA controller])
>> >> Subsystem: Red Hat, Inc Device [1af4:1100]
>> >> Physical Slot: 3
>> >> Control: I/O+ Mem+ BusMaster+ SpecCycle- MemWINV- VGASnoop- ParErr- Stepping- SERR- FastB2B- DisINTx-
>> >> Status: Cap- 66MHz- UDF- FastB2B- ParErr- DEVSEL=fast >TAbort- <TAbort- <MAbort- >SERR- <PERR- INTx-
>> >> Latency: 0
>> >> Region 0: Memory at f0000000 (32-bit, prefetchable) [size=32M]
>> >> Region 1: Memory at f30b0000 (32-bit, non-prefetchable) [size=4K]
>> >> Expansion ROM at f30a0000 [disabled] [size=64K]
>> >>
>> >> 00:05.0 VGA compatible controller [0300]: Advanced Micro Devices [AMD] nee ATI Turks [Radeon HD 6570] [1002:6759] (prog-if 00 [VGA controller])
>> >> Subsystem: PC Partner Limited Device [174b:e193]
>> >> Physical Slot: 5
>> >> Control: I/O+ Mem+ BusMaster+ SpecCycle- MemWINV- VGASnoop- ParErr- Stepping- SERR- FastB2B- DisINTx+
>> >> Status: Cap+ 66MHz- UDF- FastB2B- ParErr- DEVSEL=fast >TAbort- <TAbort- <MAbort- >SERR- <PERR- INTx-
>> >> Latency: 0
>> >> Interrupt: pin A routed to IRQ 81
>> >> Region 0: Memory at e0000000 (64-bit, prefetchable) [size=256M]
>> >> Region 2: Memory at f3060000 (64-bit, non-prefetchable) [size=128K]
>> >> Region 4: I/O ports at c100 [size=256]
>> >> Expansion ROM at f3080000 [disabled] [size=128K]
>> >> Capabilities: [50] Power Management version 3
>> >> Flags: PMEClk- DSI- D1+ D2+ AuxCurrent=0mA PME(D0-,D1-,D2-,D3hot-,D3cold-)
>> >> Status: D0 NoSoftRst+ PME-Enable- DSel=0 DScale=0 PME-
>> >> Capabilities: [58] Express (v2) Legacy Endpoint, MSI 00
>> >> DevCap: MaxPayload 256 bytes, PhantFunc 0, Latency L0s <4us, L1 unlimited
>> >> ExtTag+ AttnBtn- AttnInd- PwrInd- RBE+ FLReset-
>> >> DevCtl: Report errors: Correctable- Non-Fatal- Fatal- Unsupported-
>> >> RlxdOrd+ ExtTag- PhantFunc- AuxPwr- NoSnoop+
>> >> MaxPayload 128 bytes, MaxReadReq 512 bytes
>> >> DevSta: CorrErr+ UncorrErr+ FatalErr- UnsuppReq+ AuxPwr- TransPend-
>> >> LnkCap: Port #0, Speed 5GT/s, Width x16, ASPM L0s L1, Latency L0 <64ns, L1 <1us
>> >> ClockPM- Surprise- LLActRep- BwNot-
>> >> LnkCtl: ASPM Disabled; RCB 64 bytes Disabled- Retrain- CommClk-
>> >> ExtSynch- ClockPM- AutWidDis- BWInt- AutBWInt-
>> >> LnkSta: Speed 2.5GT/s, Width x8, TrErr- Train- SlotClk+ DLActive- BWMgmt- ABWMgmt-
>> >> DevCap2: Completion Timeout: Not Supported, TimeoutDis-
>> >> DevCtl2: Completion Timeout: 50us to 50ms, TimeoutDis-
>> >> LnkCtl2: Target Link Speed: 5GT/s, EnterCompliance- SpeedDis-, Selectable De-emphasis: -6dB
>> >> Transmit Margin: Normal Operating Range, EnterModifiedCompliance- ComplianceSOS-
>> >> Compliance De-emphasis: -6dB
>> >> LnkSta2: Current De-emphasis Level: -3.5dB, EqualizationComplete-, EqualizationPhase1-
>> >> EqualizationPhase2-, EqualizationPhase3-, LinkEqualizationRequest-
>> >> Capabilities: [a0] MSI: Enable+ Count=1/1 Maskable- 64bit+
>> >> Address: 00000000fee57000 Data: 4300
>> >> Capabilities: [100 v9] #1002
>> >> Kernel driver in use: radeon
>>
^ permalink raw reply [flat|nested] 10+ messages in thread
* Re: [Qemu-devel] Secondary VGA passthrough not working, hitting linux kernel's pci_fixup_video
2014-01-15 19:19 ` Sander Eikelenboom
@ 2014-01-15 22:10 ` Bjorn Helgaas
2014-01-15 22:25 ` Michael S. Tsirkin
2014-01-15 22:35 ` Sander Eikelenboom
0 siblings, 2 replies; 10+ messages in thread
From: Bjorn Helgaas @ 2014-01-15 22:10 UTC (permalink / raw)
To: Sander Eikelenboom
Cc: David Airlie, Jesse Barnes, qemu-devel@nongnu.org,
Anthony Liguori, Michael S. Tsirkin
[+cc Jesse, David]
On Wed, Jan 15, 2014 at 12:19 PM, Sander Eikelenboom
<linux@eikelenboom.it> wrote:
>>> >> I understood there is no bridge for a VGA device in your virtual machine.
>>> >> Your emulator for the bridge control register is odd.
>>>
>>> > That seems beside the point as there's no bridge here.
>>>
>>> >> I guess your virtual machine ignore "PCI-to-PCI Bridge Architecture
>>> >> Specification".
>>>
>>> > Since there's no pci to pci bridge in this VM, why would this
>>> > specification apply?
My guess is that he is referring to sec 11.3.2 "Initialization
Algorithm" of the Bridge spec r1.2. That section (and chapter 24 of
MindShare PCI System Architecture, 4th edition) apparently reiterate a
discovery algorithm that appears in the PCI spec. I can't find that
algorithm in the 3.0 or 2.3 PCI specs, but I assume it was in an
earlier version.
> Yes i have done some more reading .. from what i could find from PCI specs there is nothing in there
> that points to a specific boot vga card.
> The whole agp/pci/pcie bios selection is ACPI stuff .. but if all the cards are of the same type ..
> there is no way to specify a specific card.
The algorithm from sec 11.3.2 *does* seem to give a way to identify a
specific boot VGA card, i.e., the first one you find when searching in
the specified order. There are still issues, such as the fact that
11.3.2 says to start at PCI bus 0, while MindShare says to start with
the largest bus number.
Also, sec 12.1.2.1 of the Bridge spec says the PCI_COMMAND memory and
I/O enables do apply to VGA accesses, so that is potentially a way to
make two sibling VGA devices work, e.g., by toggling those bits to
control which device you want to talk to. I also assume that when
identifying the "boot VGA device," one might ignore devices that the
BIOS left disabled.
>>> >> 00:03.0 VGA compatible controller [0300]: Cirrus Logic GD 5446 [1013:00b8] (prog-if 00 [VGA controller])
>>> >> Subsystem: Red Hat, Inc Device [1af4:1100]
>>> >> Physical Slot: 3
>>> >> Control: I/O+ Mem+ BusMaster+ SpecCycle- MemWINV- VGASnoop- ParErr- Stepping- SERR- FastB2B- DisINTx-
>>> >> Status: Cap- 66MHz- UDF- FastB2B- ParErr- DEVSEL=fast >TAbort- <TAbort- <MAbort- >SERR- <PERR- INTx-
>>> >> Latency: 0
>>> >> Region 0: Memory at f0000000 (32-bit, prefetchable) [size=32M]
>>> >> Region 1: Memory at f30b0000 (32-bit, non-prefetchable) [size=4K]
>>> >> Expansion ROM at f30a0000 [disabled] [size=64K]
>>> >>
>>> >> 00:05.0 VGA compatible controller [0300]: Advanced Micro Devices [AMD] nee ATI Turks [Radeon HD 6570] [1002:6759] (prog-if 00 [VGA controller])
>>> >> Subsystem: PC Partner Limited Device [174b:e193]
>>> >> Physical Slot: 5
>>> >> Control: I/O+ Mem+ BusMaster+ SpecCycle- MemWINV- VGASnoop- ParErr- Stepping- SERR- FastB2B- DisINTx+
>>> >> Status: Cap+ 66MHz- UDF- FastB2B- ParErr- DEVSEL=fast >TAbort- <TAbort- <MAbort- >SERR- <PERR- INTx-
>>> >> Latency: 0
>>> >> Interrupt: pin A routed to IRQ 81
>>> >> Region 0: Memory at e0000000 (64-bit, prefetchable) [size=256M]
>>> >> Region 2: Memory at f3060000 (64-bit, non-prefetchable) [size=128K]
>>> >> Region 4: I/O ports at c100 [size=256]
>>> >> Expansion ROM at f3080000 [disabled] [size=128K]
I am not an expert on this legacy stuff, but this looks like an
illegal configuration to me: both 00:03.0 and 00:05.0 claim to be VGA
controllers and both have I/O+ and Mem+, so I would think both would
respond to the legacy VGA addresses.
^ permalink raw reply [flat|nested] 10+ messages in thread
* Re: [Qemu-devel] Secondary VGA passthrough not working, hitting linux kernel's pci_fixup_video
2014-01-15 22:10 ` Bjorn Helgaas
@ 2014-01-15 22:25 ` Michael S. Tsirkin
2014-01-15 22:52 ` Sander Eikelenboom
2014-01-15 22:35 ` Sander Eikelenboom
1 sibling, 1 reply; 10+ messages in thread
From: Michael S. Tsirkin @ 2014-01-15 22:25 UTC (permalink / raw)
To: Bjorn Helgaas
Cc: David Airlie, Sander Eikelenboom, Jesse Barnes,
qemu-devel@nongnu.org, Anthony Liguori
On Wed, Jan 15, 2014 at 03:10:35PM -0700, Bjorn Helgaas wrote:
> [+cc Jesse, David]
>
> On Wed, Jan 15, 2014 at 12:19 PM, Sander Eikelenboom
> <linux@eikelenboom.it> wrote:
>
> >>> >> I understood there is no bridge for a VGA device in your virtual machine.
> >>> >> Your emulator for the bridge control register is odd.
> >>>
> >>> > That seems beside the point as there's no bridge here.
> >>>
> >>> >> I guess your virtual machine ignore "PCI-to-PCI Bridge Architecture
> >>> >> Specification".
> >>>
> >>> > Since there's no pci to pci bridge in this VM, why would this
> >>> > specification apply?
>
> My guess is that he is referring to sec 11.3.2 "Initialization
> Algorithm" of the Bridge spec r1.2. That section (and chapter 24 of
> MindShare PCI System Architecture, 4th edition) apparently reiterate a
> discovery algorithm that appears in the PCI spec. I can't find that
> algorithm in the 3.0 or 2.3 PCI specs, but I assume it was in an
> earlier version.
It's not in 2.2 either apparently.
> > Yes i have done some more reading .. from what i could find from PCI specs there is nothing in there
> > that points to a specific boot vga card.
> > The whole agp/pci/pcie bios selection is ACPI stuff .. but if all the cards are of the same type ..
> > there is no way to specify a specific card.
>
> The algorithm from sec 11.3.2 *does* seem to give a way to identify a
> specific boot VGA card, i.e., the first one you find when searching in
> the specified order. There are still issues, such as the fact that
> 11.3.2 says to start at PCI bus 0, while MindShare says to start with
> the largest bus number.
The spec merely says walk topology top to bottom.
If there are no bridges there's a single bus and it
does not seem to apply.
> Also, sec 12.1.2.1 of the Bridge spec says the PCI_COMMAND memory and
> I/O enables do apply to VGA accesses, so that is potentially a way to
> make two sibling VGA devices work, e.g., by toggling those bits to
> control which device you want to talk to. I also assume that when
> identifying the "boot VGA device," one might ignore devices that the
> BIOS left disabled.
Absolutely. But the disabled device can't be used at all.
Sander here wants to use one device in VGA mode, and the
second device in non VGA mode.
This can only work if the non VGA one is behind bridge, or
if second device doesn't use the legacy VGA addresses.
> >>> >> 00:03.0 VGA compatible controller [0300]: Cirrus Logic GD 5446 [1013:00b8] (prog-if 00 [VGA controller])
> >>> >> Subsystem: Red Hat, Inc Device [1af4:1100]
> >>> >> Physical Slot: 3
> >>> >> Control: I/O+ Mem+ BusMaster+ SpecCycle- MemWINV- VGASnoop- ParErr- Stepping- SERR- FastB2B- DisINTx-
> >>> >> Status: Cap- 66MHz- UDF- FastB2B- ParErr- DEVSEL=fast >TAbort- <TAbort- <MAbort- >SERR- <PERR- INTx-
> >>> >> Latency: 0
> >>> >> Region 0: Memory at f0000000 (32-bit, prefetchable) [size=32M]
> >>> >> Region 1: Memory at f30b0000 (32-bit, non-prefetchable) [size=4K]
> >>> >> Expansion ROM at f30a0000 [disabled] [size=64K]
> >>> >>
> >>> >> 00:05.0 VGA compatible controller [0300]: Advanced Micro Devices [AMD] nee ATI Turks [Radeon HD 6570] [1002:6759] (prog-if 00 [VGA controller])
> >>> >> Subsystem: PC Partner Limited Device [174b:e193]
> >>> >> Physical Slot: 5
> >>> >> Control: I/O+ Mem+ BusMaster+ SpecCycle- MemWINV- VGASnoop- ParErr- Stepping- SERR- FastB2B- DisINTx+
> >>> >> Status: Cap+ 66MHz- UDF- FastB2B- ParErr- DEVSEL=fast >TAbort- <TAbort- <MAbort- >SERR- <PERR- INTx-
> >>> >> Latency: 0
> >>> >> Interrupt: pin A routed to IRQ 81
> >>> >> Region 0: Memory at e0000000 (64-bit, prefetchable) [size=256M]
> >>> >> Region 2: Memory at f3060000 (64-bit, non-prefetchable) [size=128K]
> >>> >> Region 4: I/O ports at c100 [size=256]
> >>> >> Expansion ROM at f3080000 [disabled] [size=128K]
>
> I am not an expert on this legacy stuff, but this looks like an
> illegal configuration to me: both 00:03.0 and 00:05.0 claim to be VGA
> controllers and both have I/O+ and Mem+, so I would think both would
> respond to the legacy VGA addresses.
Also both are on the same bus so no bridge filters these.
--
MST
^ permalink raw reply [flat|nested] 10+ messages in thread
* Re: [Qemu-devel] Secondary VGA passthrough not working, hitting linux kernel's pci_fixup_video
2014-01-15 22:10 ` Bjorn Helgaas
2014-01-15 22:25 ` Michael S. Tsirkin
@ 2014-01-15 22:35 ` Sander Eikelenboom
2014-01-16 5:40 ` Michael S. Tsirkin
1 sibling, 1 reply; 10+ messages in thread
From: Sander Eikelenboom @ 2014-01-15 22:35 UTC (permalink / raw)
To: Bjorn Helgaas
Cc: David Airlie, Jesse Barnes, qemu-devel@nongnu.org,
Anthony Liguori, Michael S. Tsirkin
Wednesday, January 15, 2014, 11:10:35 PM, you wrote:
> [+cc Jesse, David]
> On Wed, Jan 15, 2014 at 12:19 PM, Sander Eikelenboom
> <linux@eikelenboom.it> wrote:
>>>> >> I understood there is no bridge for a VGA device in your virtual machine.
>>>> >> Your emulator for the bridge control register is odd.
>>>>
>>>> > That seems beside the point as there's no bridge here.
>>>>
>>>> >> I guess your virtual machine ignore "PCI-to-PCI Bridge Architecture
>>>> >> Specification".
>>>>
>>>> > Since there's no pci to pci bridge in this VM, why would this
>>>> > specification apply?
> My guess is that he is referring to sec 11.3.2 "Initialization
> Algorithm" of the Bridge spec r1.2. That section (and chapter 24 of
> MindShare PCI System Architecture, 4th edition) apparently reiterate a
> discovery algorithm that appears in the PCI spec. I can't find that
> algorithm in the 3.0 or 2.3 PCI specs, but I assume it was in an
> earlier version.
>> Yes i have done some more reading .. from what i could find from PCI specs there is nothing in there
>> that points to a specific boot vga card.
>> The whole agp/pci/pcie bios selection is ACPI stuff .. but if all the cards are of the same type ..
>> there is no way to specify a specific card.
> The algorithm from sec 11.3.2 *does* seem to give a way to identify a
> specific boot VGA card, i.e., the first one you find when searching in
> the specified order. There are still issues, such as the fact that
> 11.3.2 says to start at PCI bus 0, while MindShare says to start with
> the largest bus number.
> Also, sec 12.1.2.1 of the Bridge spec says the PCI_COMMAND memory and
> I/O enables do apply to VGA accesses, so that is potentially a way to
> make two sibling VGA devices work, e.g., by toggling those bits to
> control which device you want to talk to. I also assume that when
> identifying the "boot VGA device," one might ignore devices that the
> BIOS left disabled.
>>>> >> 00:03.0 VGA compatible controller [0300]: Cirrus Logic GD 5446 [1013:00b8] (prog-if 00 [VGA controller])
>>>> >> Subsystem: Red Hat, Inc Device [1af4:1100]
>>>> >> Physical Slot: 3
>>>> >> Control: I/O+ Mem+ BusMaster+ SpecCycle- MemWINV- VGASnoop- ParErr- Stepping- SERR- FastB2B- DisINTx-
>>>> >> Status: Cap- 66MHz- UDF- FastB2B- ParErr- DEVSEL=fast >TAbort- <TAbort- <MAbort- >SERR- <PERR- INTx-
>>>> >> Latency: 0
>>>> >> Region 0: Memory at f0000000 (32-bit, prefetchable) [size=32M]
>>>> >> Region 1: Memory at f30b0000 (32-bit, non-prefetchable) [size=4K]
>>>> >> Expansion ROM at f30a0000 [disabled] [size=64K]
>>>> >>
>>>> >> 00:05.0 VGA compatible controller [0300]: Advanced Micro Devices [AMD] nee ATI Turks [Radeon HD 6570] [1002:6759] (prog-if 00 [VGA controller])
>>>> >> Subsystem: PC Partner Limited Device [174b:e193]
>>>> >> Physical Slot: 5
>>>> >> Control: I/O+ Mem+ BusMaster+ SpecCycle- MemWINV- VGASnoop- ParErr- Stepping- SERR- FastB2B- DisINTx+
>>>> >> Status: Cap+ 66MHz- UDF- FastB2B- ParErr- DEVSEL=fast >TAbort- <TAbort- <MAbort- >SERR- <PERR- INTx-
>>>> >> Latency: 0
>>>> >> Interrupt: pin A routed to IRQ 81
>>>> >> Region 0: Memory at e0000000 (64-bit, prefetchable) [size=256M]
>>>> >> Region 2: Memory at f3060000 (64-bit, non-prefetchable) [size=128K]
>>>> >> Region 4: I/O ports at c100 [size=256]
>>>> >> Expansion ROM at f3080000 [disabled] [size=128K]
> I am not an expert on this legacy stuff, but this looks like an
> illegal configuration to me: both 00:03.0 and 00:05.0 claim to be VGA
> controllers and both have I/O+ and Mem+, so I would think both would
> respond to the legacy VGA addresses.
Me neither .. and all pci specs seem to be paywalled, but apart from this
the current code of pci_video_fixup doesn't check for I/O+ and Mem+ either.
Ánd as i pointed out the kernel at this point has already set vga_default_device (from what it seems
indeed the first device from a ordered scan). So if there should be a better detection mechanism i think it should
be implemented at what sets vga_default_device .. and pci_fixup_video should adhere to that (or fixup if it's still not set)
And that's essentially what the patch does .. and it also doesn't seem to alter anything for the cases it was implemented for
of i read the comment and commit messages correctly.
--
Sander
^ permalink raw reply [flat|nested] 10+ messages in thread
* Re: [Qemu-devel] Secondary VGA passthrough not working, hitting linux kernel's pci_fixup_video
2014-01-15 22:25 ` Michael S. Tsirkin
@ 2014-01-15 22:52 ` Sander Eikelenboom
0 siblings, 0 replies; 10+ messages in thread
From: Sander Eikelenboom @ 2014-01-15 22:52 UTC (permalink / raw)
To: Michael S. Tsirkin
Cc: Bjorn Helgaas, David Airlie, Jesse Barnes, qemu-devel@nongnu.org,
Anthony Liguori
[-- Attachment #1: Type: text/plain, Size: 6376 bytes --]
Wednesday, January 15, 2014, 11:25:20 PM, you wrote:
> On Wed, Jan 15, 2014 at 03:10:35PM -0700, Bjorn Helgaas wrote:
>> [+cc Jesse, David]
>>
>> On Wed, Jan 15, 2014 at 12:19 PM, Sander Eikelenboom
>> <linux@eikelenboom.it> wrote:
>>
>> >>> >> I understood there is no bridge for a VGA device in your virtual machine.
>> >>> >> Your emulator for the bridge control register is odd.
>> >>>
>> >>> > That seems beside the point as there's no bridge here.
>> >>>
>> >>> >> I guess your virtual machine ignore "PCI-to-PCI Bridge Architecture
>> >>> >> Specification".
>> >>>
>> >>> > Since there's no pci to pci bridge in this VM, why would this
>> >>> > specification apply?
>>
>> My guess is that he is referring to sec 11.3.2 "Initialization
>> Algorithm" of the Bridge spec r1.2. That section (and chapter 24 of
>> MindShare PCI System Architecture, 4th edition) apparently reiterate a
>> discovery algorithm that appears in the PCI spec. I can't find that
>> algorithm in the 3.0 or 2.3 PCI specs, but I assume it was in an
>> earlier version.
> It's not in 2.2 either apparently.
>> > Yes i have done some more reading .. from what i could find from PCI specs there is nothing in there
>> > that points to a specific boot vga card.
>> > The whole agp/pci/pcie bios selection is ACPI stuff .. but if all the cards are of the same type ..
>> > there is no way to specify a specific card.
>>
>> The algorithm from sec 11.3.2 *does* seem to give a way to identify a
>> specific boot VGA card, i.e., the first one you find when searching in
>> the specified order. There are still issues, such as the fact that
>> 11.3.2 says to start at PCI bus 0, while MindShare says to start with
>> the largest bus number.
> The spec merely says walk topology top to bottom.
> If there are no bridges there's a single bus and it
> does not seem to apply.
>> Also, sec 12.1.2.1 of the Bridge spec says the PCI_COMMAND memory and
>> I/O enables do apply to VGA accesses, so that is potentially a way to
>> make two sibling VGA devices work, e.g., by toggling those bits to
>> control which device you want to talk to. I also assume that when
>> identifying the "boot VGA device," one might ignore devices that the
>> BIOS left disabled.
> Absolutely. But the disabled device can't be used at all.
> Sander here wants to use one device in VGA mode, and the
> second device in non VGA mode.
> This can only work if the non VGA one is behind bridge, or
> if second device doesn't use the legacy VGA addresses.
>> >>> >> 00:03.0 VGA compatible controller [0300]: Cirrus Logic GD 5446 [1013:00b8] (prog-if 00 [VGA controller])
>> >>> >> Subsystem: Red Hat, Inc Device [1af4:1100]
>> >>> >> Physical Slot: 3
>> >>> >> Control: I/O+ Mem+ BusMaster+ SpecCycle- MemWINV- VGASnoop- ParErr- Stepping- SERR- FastB2B- DisINTx-
>> >>> >> Status: Cap- 66MHz- UDF- FastB2B- ParErr- DEVSEL=fast >TAbort- <TAbort- <MAbort- >SERR- <PERR- INTx-
>> >>> >> Latency: 0
>> >>> >> Region 0: Memory at f0000000 (32-bit, prefetchable) [size=32M]
>> >>> >> Region 1: Memory at f30b0000 (32-bit, non-prefetchable) [size=4K]
>> >>> >> Expansion ROM at f30a0000 [disabled] [size=64K]
>> >>> >>
>> >>> >> 00:05.0 VGA compatible controller [0300]: Advanced Micro Devices [AMD] nee ATI Turks [Radeon HD 6570] [1002:6759] (prog-if 00 [VGA controller])
>> >>> >> Subsystem: PC Partner Limited Device [174b:e193]
>> >>> >> Physical Slot: 5
>> >>> >> Control: I/O+ Mem+ BusMaster+ SpecCycle- MemWINV- VGASnoop- ParErr- Stepping- SERR- FastB2B- DisINTx+
>> >>> >> Status: Cap+ 66MHz- UDF- FastB2B- ParErr- DEVSEL=fast >TAbort- <TAbort- <MAbort- >SERR- <PERR- INTx-
>> >>> >> Latency: 0
>> >>> >> Interrupt: pin A routed to IRQ 81
>> >>> >> Region 0: Memory at e0000000 (64-bit, prefetchable) [size=256M]
>> >>> >> Region 2: Memory at f3060000 (64-bit, non-prefetchable) [size=128K]
>> >>> >> Region 4: I/O ports at c100 [size=256]
>> >>> >> Expansion ROM at f3080000 [disabled] [size=128K]
>>
>> I am not an expert on this legacy stuff, but this looks like an
>> illegal configuration to me: both 00:03.0 and 00:05.0 claim to be VGA
>> controllers and both have I/O+ and Mem+, so I would think both would
>> respond to the legacy VGA addresses.
> Also both are on the same bus so no bridge filters these.
For completeness sake i have attached the dmesg from the guest booted with my patch and some additional printk's on top of that.
of interest i guess:
[ 2.486917] vgaarb: device added: PCI:0000:00:03.0,decodes=io+mem,owns=io+mem,locks=none
[ 2.490170] vgaarb: device added: PCI:0000:00:05.0,decodes=io+mem,owns=io+mem,locks=none
[ 2.496679] vgaarb: loaded
[ 2.496683] vgaarb: bridge control possible 0000:00:05.0
[ 2.500011] vgaarb: no bridge control possible 0000:00:03.0
and after that the applying of the pci_video_fixup ..
[ 2.918390] pci 0000:00:00.0: calling quirk_natoma+0x0/0x40
[ 2.918394] pci 0000:00:00.0: Limiting direct PCI/PCI transfers
[ 2.933934] pci 0000:00:00.0: calling quirk_passive_release+0x0/0x90
[ 2.934024] pci 0000:00:01.0: PIIX3: Enabling Passive Release
[ 2.953087] pci 0000:00:01.0: calling quirk_isa_dma_hangs+0x0/0x40
[ 2.953095] pci 0000:00:01.0: Activating ISA DMA hang workarounds
[ 2.969218] pci 0000:00:01.2: calling quirk_usb_early_handoff+0x0/0x6c0
[ 2.974714] xen: --> pirq=21 -> irq=23 (gsi=23)
[ 2.983163] pci 0000:00:03.0: calling pci_fixup_video+0x0/0x200
[ 2.983171] pci 0000:00:03.0: Current VGA default device: 03.0
[ 2.983174] pci 0000:00:03.0: walked 1 bridges/busses for this device
[ 2.983251] pci 0000:00:03.0: Boot video device
[ 2.983329] pci 0000:00:05.0: calling pci_fixup_video+0x0/0x200
[ 2.983330] pci 0000:00:05.0: Current VGA default device: 03.0
[ 2.983333] pci 0000:00:05.0: walked 1 bridges/busses for this device
The "Current VGA default device: 03.0" line is a added printk at the start of pci_video_fixup ..
as you see vga_default_device is already set before the pci_video_fixup get's run. From what it seems
either from arch or vga arbitration code. Since this it *with* my patch .. it only keeps the vga_default_devive as
the Boot video device .. and only sets the shadow flag for that device.
[-- Attachment #2: dmesg.txt --]
[-- Type: text/plain, Size: 52242 bytes --]
[ 0.000000] Initializing cgroup subsys cpuset
[ 0.000000] Initializing cgroup subsys cpu
[ 0.000000] Initializing cgroup subsys cpuacct
[ 0.000000] Linux version 3.13.0-rc8-20140115-vidquirk-fixed-debug3+ (root@xbmc) (gcc version 4.7.2 (Debian 4.7.2-5) ) #1 SMP Wed Jan 15 19:31:29 CET 2014
[ 0.000000] Command line: BOOT_IMAGE=/boot/vmlinuz-3.13.0-rc8-20140115-vidquirk-fixed-debug3+ root=UUID=4b432b33-87ec-4522-8b10-5dba3f49099e ro debug loglevel=7 console=tty1 console=ttyS0 slub_debug radeon.dpm=1
[ 0.000000] e820: BIOS-provided physical RAM map:
[ 0.000000] BIOS-e820: [mem 0x0000000000000000-0x000000000009fbff] usable
[ 0.000000] BIOS-e820: [mem 0x000000000009fc00-0x000000000009ffff] reserved
[ 0.000000] BIOS-e820: [mem 0x00000000000f0000-0x00000000000fffff] reserved
[ 0.000000] BIOS-e820: [mem 0x0000000000100000-0x000000003f7fefff] usable
[ 0.000000] BIOS-e820: [mem 0x000000003f7ff000-0x000000003f7fffff] reserved
[ 0.000000] BIOS-e820: [mem 0x00000000fc000000-0x00000000ffffffff] reserved
[ 0.000000] NX (Execute Disable) protection: active
[ 0.000000] SMBIOS 2.4 present.
[ 0.000000] DMI: Xen HVM domU, BIOS 4.4-unstable 01/15/2014
[ 0.000000] Hypervisor detected: Xen HVM
[ 0.000000] Xen version 4.4.
[ 0.000000] Xen Platform PCI: I/O protocol version 1
[ 0.000000] Netfront and the Xen platform PCI driver have been compiled for this kernel: unplug emulated NICs.
[ 0.000000] Blkfront and the Xen platform PCI driver have been compiled for this kernel: unplug emulated disks.
[ 0.000000] You might have to change the root device
[ 0.000000] from /dev/hd[a-d] to /dev/xvd[a-d]
[ 0.000000] in your root= kernel command line option
[ 0.000000] HVMOP_pagetable_dying not supported
[ 0.000000] e820: update [mem 0x00000000-0x00000fff] usable ==> reserved
[ 0.000000] e820: remove [mem 0x000a0000-0x000fffff] usable
[ 0.000000] No AGP bridge found
[ 0.000000] e820: last_pfn = 0x3f7ff max_arch_pfn = 0x400000000
[ 0.000000] MTRR default type: write-back
[ 0.000000] MTRR fixed ranges enabled:
[ 0.000000] 00000-9FFFF write-back
[ 0.000000] A0000-BFFFF write-combining
[ 0.000000] C0000-FFFFF write-back
[ 0.000000] MTRR variable ranges enabled:
[ 0.000000] 0 base 0000E0000000 mask FFFFF0000000 uncachable
[ 0.000000] 1 base 0000F0000000 mask FFFFF8000000 uncachable
[ 0.000000] 2 base 0000F8000000 mask FFFFFC000000 uncachable
[ 0.000000] 3 disabled
[ 0.000000] 4 disabled
[ 0.000000] 5 disabled
[ 0.000000] 6 disabled
[ 0.000000] 7 disabled
[ 0.000000] TOM2: 0000000560000000 aka 22016M
[ 0.000000] x86 PAT enabled: cpu 0, old 0x7040600070406, new 0x7010600070106
[ 0.000000] found SMP MP-table at [mem 0x000f0b40-0x000f0b4f] mapped at [ffff8800000f0b40]
[ 0.000000] Scanning 1 areas for low memory corruption
[ 0.000000] Base memory trampoline at [ffff880000099000] 99000 size 24576
[ 0.000000] init_memory_mapping: [mem 0x00000000-0x000fffff]
[ 0.000000] [mem 0x00000000-0x000fffff] page 4k
[ 0.000000] BRK [0x0294c000, 0x0294cfff] PGTABLE
[ 0.000000] BRK [0x0294d000, 0x0294dfff] PGTABLE
[ 0.000000] BRK [0x0294e000, 0x0294efff] PGTABLE
[ 0.000000] init_memory_mapping: [mem 0x3f400000-0x3f5fffff]
[ 0.000000] [mem 0x3f400000-0x3f5fffff] page 2M
[ 0.000000] init_memory_mapping: [mem 0x3c000000-0x3f3fffff]
[ 0.000000] [mem 0x3c000000-0x3f3fffff] page 2M
[ 0.000000] init_memory_mapping: [mem 0x00100000-0x3bffffff]
[ 0.000000] [mem 0x00100000-0x001fffff] page 4k
[ 0.000000] [mem 0x00200000-0x3bffffff] page 2M
[ 0.000000] init_memory_mapping: [mem 0x3f600000-0x3f7fefff]
[ 0.000000] [mem 0x3f600000-0x3f7fefff] page 4k
[ 0.000000] BRK [0x0294f000, 0x0294ffff] PGTABLE
[ 0.000000] RAMDISK: [mem 0x371d8000-0x378e3fff]
[ 0.000000] ACPI: RSDP 00000000000f0a90 000024 (v02 Xen)
[ 0.000000] ACPI: XSDT 00000000fc00a000 000054 (v01 Xen HVM 00000000 HVML 00000000)
[ 0.000000] ACPI: FACP 00000000fc009930 0000F4 (v04 Xen HVM 00000000 HVML 00000000)
[ 0.000000] ACPI: DSDT 00000000fc0012e0 0085CD (v02 Xen HVM 00000000 INTL 20100528)
[ 0.000000] ACPI: FACS 00000000fc0012a0 000040
[ 0.000000] ACPI: APIC 00000000fc009a30 000460 (v02 Xen HVM 00000000 HVML 00000000)
[ 0.000000] ACPI: HPET 00000000fc009f10 000038 (v01 Xen HVM 00000000 HVML 00000000)
[ 0.000000] ACPI: WAET 00000000fc009f50 000028 (v01 Xen HVM 00000000 HVML 00000000)
[ 0.000000] ACPI: SSDT 00000000fc009f80 000031 (v02 Xen HVM 00000000 INTL 20100528)
[ 0.000000] ACPI: SSDT 00000000fc009fc0 000031 (v02 Xen HVM 00000000 INTL 20100528)
[ 0.000000] ACPI: Local APIC address 0xfee00000
[ 0.000000] No NUMA configuration found
[ 0.000000] Faking a node at [mem 0x0000000000000000-0x000000003f7fefff]
[ 0.000000] Initmem setup node 0 [mem 0x00000000-0x3f7fefff]
[ 0.000000] NODE_DATA [mem 0x3f7f4000-0x3f7fefff]
[ 0.000000] [ffffea0000000000-ffffea0000ffffff] PMD -> [ffff88003de00000-ffff88003edfffff] on node 0
[ 0.000000] Zone ranges:
[ 0.000000] DMA [mem 0x00001000-0x00ffffff]
[ 0.000000] DMA32 [mem 0x01000000-0xffffffff]
[ 0.000000] Normal empty
[ 0.000000] Movable zone start for each node
[ 0.000000] Early memory node ranges
[ 0.000000] node 0: [mem 0x00001000-0x0009efff]
[ 0.000000] node 0: [mem 0x00100000-0x3f7fefff]
[ 0.000000] On node 0 totalpages: 259997
[ 0.000000] DMA zone: 64 pages used for memmap
[ 0.000000] DMA zone: 21 pages reserved
[ 0.000000] DMA zone: 3998 pages, LIFO batch:0
[ 0.000000] DMA32 zone: 4000 pages used for memmap
[ 0.000000] DMA32 zone: 255999 pages, LIFO batch:31
[ 0.000000] ACPI: PM-Timer IO Port: 0xb008
[ 0.000000] ACPI: Local APIC address 0xfee00000
[ 0.000000] ACPI: LAPIC (acpi_id[0x00] lapic_id[0x00] enabled)
[ 0.000000] ACPI: LAPIC (acpi_id[0x01] lapic_id[0x02] enabled)
[ 0.000000] ACPI: LAPIC (acpi_id[0x02] lapic_id[0x04] enabled)
[ 0.000000] ACPI: LAPIC (acpi_id[0x03] lapic_id[0x06] disabled)
[ 0.000000] ACPI: LAPIC (acpi_id[0x04] lapic_id[0x08] disabled)
[ 0.000000] ACPI: LAPIC (acpi_id[0x05] lapic_id[0x0a] disabled)
[ 0.000000] ACPI: LAPIC (acpi_id[0x06] lapic_id[0x0c] disabled)
[ 0.000000] ACPI: LAPIC (acpi_id[0x07] lapic_id[0x0e] disabled)
[ 0.000000] ACPI: LAPIC (acpi_id[0x08] lapic_id[0x10] disabled)
[ 0.000000] ACPI: LAPIC (acpi_id[0x09] lapic_id[0x12] disabled)
[ 0.000000] ACPI: LAPIC (acpi_id[0x0a] lapic_id[0x14] disabled)
[ 0.000000] ACPI: LAPIC (acpi_id[0x0b] lapic_id[0x16] disabled)
[ 0.000000] ACPI: LAPIC (acpi_id[0x0c] lapic_id[0x18] disabled)
[ 0.000000] ACPI: LAPIC (acpi_id[0x0d] lapic_id[0x1a] disabled)
[ 0.000000] ACPI: LAPIC (acpi_id[0x0e] lapic_id[0x1c] disabled)
[ 0.000000] ACPI: LAPIC (acpi_id[0x0f] lapic_id[0x1e] disabled)
[ 0.000000] ACPI: LAPIC (acpi_id[0x10] lapic_id[0x20] disabled)
[ 0.000000] ACPI: LAPIC (acpi_id[0x11] lapic_id[0x22] disabled)
[ 0.000000] ACPI: LAPIC (acpi_id[0x12] lapic_id[0x24] disabled)
[ 0.000000] ACPI: LAPIC (acpi_id[0x13] lapic_id[0x26] disabled)
[ 0.000000] ACPI: LAPIC (acpi_id[0x14] lapic_id[0x28] disabled)
[ 0.000000] ACPI: LAPIC (acpi_id[0x15] lapic_id[0x2a] disabled)
[ 0.000000] ACPI: LAPIC (acpi_id[0x16] lapic_id[0x2c] disabled)
[ 0.000000] ACPI: LAPIC (acpi_id[0x17] lapic_id[0x2e] disabled)
[ 0.000000] ACPI: LAPIC (acpi_id[0x18] lapic_id[0x30] disabled)
[ 0.000000] ACPI: LAPIC (acpi_id[0x19] lapic_id[0x32] disabled)
[ 0.000000] ACPI: LAPIC (acpi_id[0x1a] lapic_id[0x34] disabled)
[ 0.000000] ACPI: LAPIC (acpi_id[0x1b] lapic_id[0x36] disabled)
[ 0.000000] ACPI: LAPIC (acpi_id[0x1c] lapic_id[0x38] disabled)
[ 0.000000] ACPI: LAPIC (acpi_id[0x1d] lapic_id[0x3a] disabled)
[ 0.000000] ACPI: LAPIC (acpi_id[0x1e] lapic_id[0x3c] disabled)
[ 0.000000] ACPI: LAPIC (acpi_id[0x1f] lapic_id[0x3e] disabled)
[ 0.000000] ACPI: LAPIC (acpi_id[0x20] lapic_id[0x40] disabled)
[ 0.000000] ACPI: LAPIC (acpi_id[0x21] lapic_id[0x42] disabled)
[ 0.000000] ACPI: LAPIC (acpi_id[0x22] lapic_id[0x44] disabled)
[ 0.000000] ACPI: LAPIC (acpi_id[0x23] lapic_id[0x46] disabled)
[ 0.000000] ACPI: LAPIC (acpi_id[0x24] lapic_id[0x48] disabled)
[ 0.000000] ACPI: LAPIC (acpi_id[0x25] lapic_id[0x4a] disabled)
[ 0.000000] ACPI: LAPIC (acpi_id[0x26] lapic_id[0x4c] disabled)
[ 0.000000] ACPI: LAPIC (acpi_id[0x27] lapic_id[0x4e] disabled)
[ 0.000000] ACPI: LAPIC (acpi_id[0x28] lapic_id[0x50] disabled)
[ 0.000000] ACPI: LAPIC (acpi_id[0x29] lapic_id[0x52] disabled)
[ 0.000000] ACPI: LAPIC (acpi_id[0x2a] lapic_id[0x54] disabled)
[ 0.000000] ACPI: LAPIC (acpi_id[0x2b] lapic_id[0x56] disabled)
[ 0.000000] ACPI: LAPIC (acpi_id[0x2c] lapic_id[0x58] disabled)
[ 0.000000] ACPI: LAPIC (acpi_id[0x2d] lapic_id[0x5a] disabled)
[ 0.000000] ACPI: LAPIC (acpi_id[0x2e] lapic_id[0x5c] disabled)
[ 0.000000] ACPI: LAPIC (acpi_id[0x2f] lapic_id[0x5e] disabled)
[ 0.000000] ACPI: LAPIC (acpi_id[0x30] lapic_id[0x60] disabled)
[ 0.000000] ACPI: LAPIC (acpi_id[0x31] lapic_id[0x62] disabled)
[ 0.000000] ACPI: LAPIC (acpi_id[0x32] lapic_id[0x64] disabled)
[ 0.000000] ACPI: LAPIC (acpi_id[0x33] lapic_id[0x66] disabled)
[ 0.000000] ACPI: LAPIC (acpi_id[0x34] lapic_id[0x68] disabled)
[ 0.000000] ACPI: LAPIC (acpi_id[0x35] lapic_id[0x6a] disabled)
[ 0.000000] ACPI: LAPIC (acpi_id[0x36] lapic_id[0x6c] disabled)
[ 0.000000] ACPI: LAPIC (acpi_id[0x37] lapic_id[0x6e] disabled)
[ 0.000000] ACPI: LAPIC (acpi_id[0x38] lapic_id[0x70] disabled)
[ 0.000000] ACPI: LAPIC (acpi_id[0x39] lapic_id[0x72] disabled)
[ 0.000000] ACPI: LAPIC (acpi_id[0x3a] lapic_id[0x74] disabled)
[ 0.000000] ACPI: LAPIC (acpi_id[0x3b] lapic_id[0x76] disabled)
[ 0.000000] ACPI: LAPIC (acpi_id[0x3c] lapic_id[0x78] disabled)
[ 0.000000] ACPI: LAPIC (acpi_id[0x3d] lapic_id[0x7a] disabled)
[ 0.000000] ACPI: LAPIC (acpi_id[0x3e] lapic_id[0x7c] disabled)
[ 0.000000] ACPI: LAPIC (acpi_id[0x3f] lapic_id[0x7e] disabled)
[ 0.000000] ACPI: LAPIC (acpi_id[0x40] lapic_id[0x80] disabled)
[ 0.000000] ACPI: LAPIC (acpi_id[0x41] lapic_id[0x82] disabled)
[ 0.000000] ACPI: LAPIC (acpi_id[0x42] lapic_id[0x84] disabled)
[ 0.000000] ACPI: LAPIC (acpi_id[0x43] lapic_id[0x86] disabled)
[ 0.000000] ACPI: LAPIC (acpi_id[0x44] lapic_id[0x88] disabled)
[ 0.000000] ACPI: LAPIC (acpi_id[0x45] lapic_id[0x8a] disabled)
[ 0.000000] ACPI: LAPIC (acpi_id[0x46] lapic_id[0x8c] disabled)
[ 0.000000] ACPI: LAPIC (acpi_id[0x47] lapic_id[0x8e] disabled)
[ 0.000000] ACPI: LAPIC (acpi_id[0x48] lapic_id[0x90] disabled)
[ 0.000000] ACPI: LAPIC (acpi_id[0x49] lapic_id[0x92] disabled)
[ 0.000000] ACPI: LAPIC (acpi_id[0x4a] lapic_id[0x94] disabled)
[ 0.000000] ACPI: LAPIC (acpi_id[0x4b] lapic_id[0x96] disabled)
[ 0.000000] ACPI: LAPIC (acpi_id[0x4c] lapic_id[0x98] disabled)
[ 0.000000] ACPI: LAPIC (acpi_id[0x4d] lapic_id[0x9a] disabled)
[ 0.000000] ACPI: LAPIC (acpi_id[0x4e] lapic_id[0x9c] disabled)
[ 0.000000] ACPI: LAPIC (acpi_id[0x4f] lapic_id[0x9e] disabled)
[ 0.000000] ACPI: LAPIC (acpi_id[0x50] lapic_id[0xa0] disabled)
[ 0.000000] ACPI: LAPIC (acpi_id[0x51] lapic_id[0xa2] disabled)
[ 0.000000] ACPI: LAPIC (acpi_id[0x52] lapic_id[0xa4] disabled)
[ 0.000000] ACPI: LAPIC (acpi_id[0x53] lapic_id[0xa6] disabled)
[ 0.000000] ACPI: LAPIC (acpi_id[0x54] lapic_id[0xa8] disabled)
[ 0.000000] ACPI: LAPIC (acpi_id[0x55] lapic_id[0xaa] disabled)
[ 0.000000] ACPI: LAPIC (acpi_id[0x56] lapic_id[0xac] disabled)
[ 0.000000] ACPI: LAPIC (acpi_id[0x57] lapic_id[0xae] disabled)
[ 0.000000] ACPI: LAPIC (acpi_id[0x58] lapic_id[0xb0] disabled)
[ 0.000000] ACPI: LAPIC (acpi_id[0x59] lapic_id[0xb2] disabled)
[ 0.000000] ACPI: LAPIC (acpi_id[0x5a] lapic_id[0xb4] disabled)
[ 0.000000] ACPI: LAPIC (acpi_id[0x5b] lapic_id[0xb6] disabled)
[ 0.000000] ACPI: LAPIC (acpi_id[0x5c] lapic_id[0xb8] disabled)
[ 0.000000] ACPI: LAPIC (acpi_id[0x5d] lapic_id[0xba] disabled)
[ 0.000000] ACPI: LAPIC (acpi_id[0x5e] lapic_id[0xbc] disabled)
[ 0.000000] ACPI: LAPIC (acpi_id[0x5f] lapic_id[0xbe] disabled)
[ 0.000000] ACPI: LAPIC (acpi_id[0x60] lapic_id[0xc0] disabled)
[ 0.000000] ACPI: LAPIC (acpi_id[0x61] lapic_id[0xc2] disabled)
[ 0.000000] ACPI: LAPIC (acpi_id[0x62] lapic_id[0xc4] disabled)
[ 0.000000] ACPI: LAPIC (acpi_id[0x63] lapic_id[0xc6] disabled)
[ 0.000000] ACPI: LAPIC (acpi_id[0x64] lapic_id[0xc8] disabled)
[ 0.000000] ACPI: LAPIC (acpi_id[0x65] lapic_id[0xca] disabled)
[ 0.000000] ACPI: LAPIC (acpi_id[0x66] lapic_id[0xcc] disabled)
[ 0.000000] ACPI: LAPIC (acpi_id[0x67] lapic_id[0xce] disabled)
[ 0.000000] ACPI: LAPIC (acpi_id[0x68] lapic_id[0xd0] disabled)
[ 0.000000] ACPI: LAPIC (acpi_id[0x69] lapic_id[0xd2] disabled)
[ 0.000000] ACPI: LAPIC (acpi_id[0x6a] lapic_id[0xd4] disabled)
[ 0.000000] ACPI: LAPIC (acpi_id[0x6b] lapic_id[0xd6] disabled)
[ 0.000000] ACPI: LAPIC (acpi_id[0x6c] lapic_id[0xd8] disabled)
[ 0.000000] ACPI: LAPIC (acpi_id[0x6d] lapic_id[0xda] disabled)
[ 0.000000] ACPI: LAPIC (acpi_id[0x6e] lapic_id[0xdc] disabled)
[ 0.000000] ACPI: LAPIC (acpi_id[0x6f] lapic_id[0xde] disabled)
[ 0.000000] ACPI: LAPIC (acpi_id[0x70] lapic_id[0xe0] disabled)
[ 0.000000] ACPI: LAPIC (acpi_id[0x71] lapic_id[0xe2] disabled)
[ 0.000000] ACPI: LAPIC (acpi_id[0x72] lapic_id[0xe4] disabled)
[ 0.000000] ACPI: LAPIC (acpi_id[0x73] lapic_id[0xe6] disabled)
[ 0.000000] ACPI: LAPIC (acpi_id[0x74] lapic_id[0xe8] disabled)
[ 0.000000] ACPI: LAPIC (acpi_id[0x75] lapic_id[0xea] disabled)
[ 0.000000] ACPI: LAPIC (acpi_id[0x76] lapic_id[0xec] disabled)
[ 0.000000] ACPI: LAPIC (acpi_id[0x77] lapic_id[0xee] disabled)
[ 0.000000] ACPI: LAPIC (acpi_id[0x78] lapic_id[0xf0] disabled)
[ 0.000000] ACPI: LAPIC (acpi_id[0x79] lapic_id[0xf2] disabled)
[ 0.000000] ACPI: LAPIC (acpi_id[0x7a] lapic_id[0xf4] disabled)
[ 0.000000] ACPI: LAPIC (acpi_id[0x7b] lapic_id[0xf6] disabled)
[ 0.000000] ACPI: LAPIC (acpi_id[0x7c] lapic_id[0xf8] disabled)
[ 0.000000] ACPI: LAPIC (acpi_id[0x7d] lapic_id[0xfa] disabled)
[ 0.000000] ACPI: LAPIC (acpi_id[0x7e] lapic_id[0xfc] disabled)
[ 0.000000] ACPI: LAPIC (acpi_id[0x7f] lapic_id[0xfe] disabled)
[ 0.000000] ACPI: IOAPIC (id[0x01] address[0xfec00000] gsi_base[0])
[ 0.000000] IOAPIC[0]: apic_id 1, version 17, address 0xfec00000, GSI 0-47
[ 0.000000] ACPI: INT_SRC_OVR (bus 0 bus_irq 0 global_irq 2 dfl dfl)
[ 0.000000] ACPI: INT_SRC_OVR (bus 0 bus_irq 5 global_irq 5 low level)
[ 0.000000] ACPI: INT_SRC_OVR (bus 0 bus_irq 10 global_irq 10 low level)
[ 0.000000] ACPI: INT_SRC_OVR (bus 0 bus_irq 11 global_irq 11 low level)
[ 0.000000] ACPI: IRQ0 used by override.
[ 0.000000] ACPI: IRQ2 used by override.
[ 0.000000] ACPI: IRQ5 used by override.
[ 0.000000] ACPI: IRQ9 used by override.
[ 0.000000] ACPI: IRQ10 used by override.
[ 0.000000] ACPI: IRQ11 used by override.
[ 0.000000] Using ACPI (MADT) for SMP configuration information
[ 0.000000] ACPI: HPET id: 0x8086a201 base: 0xfed00000
[ 0.000000] smpboot: 128 Processors exceeds NR_CPUS limit of 8
[ 0.000000] smpboot: Allowing 8 CPUs, 5 hotplug CPUs
[ 0.000000] nr_irqs_gsi: 64
[ 0.000000] e820: [mem 0x3f800000-0xfbffffff] available for PCI devices
[ 0.000000] Booting paravirtualized kernel on Xen HVM
[ 0.000000] setup_percpu: NR_CPUS:8 nr_cpumask_bits:8 nr_cpu_ids:8 nr_node_ids:1
[ 0.000000] PERCPU: Embedded 28 pages/cpu @ffff88003f400000 s82624 r8192 d23872 u262144
[ 0.000000] pcpu-alloc: s82624 r8192 d23872 u262144 alloc=1*2097152
[ 0.000000] pcpu-alloc: [0] 0 1 2 3 4 5 6 7
[ 0.000000] Built 1 zonelists in Node order, mobility grouping on. Total pages: 255912
[ 0.000000] Policy zone: DMA32
[ 0.000000] Kernel command line: BOOT_IMAGE=/boot/vmlinuz-3.13.0-rc8-20140115-vidquirk-fixed-debug3+ root=UUID=4b432b33-87ec-4522-8b10-5dba3f49099e ro debug loglevel=7 console=tty1 console=ttyS0 slub_debug radeon.dpm=1
[ 0.000000] PID hash table entries: 4096 (order: 3, 32768 bytes)
[ 0.000000] Checking aperture...
[ 0.000000] No AGP bridge found
[ 0.000000] Memory: 989308K/1039988K available (9567K kernel code, 882K rwdata, 3824K rodata, 1072K init, 9568K bss, 50680K reserved)
[ 0.000000] SLUB: HWalign=64, Order=0-3, MinObjects=0, CPUs=8, Nodes=1
[ 0.000000] Hierarchical RCU implementation.
[ 0.000000] RCU dyntick-idle grace-period acceleration is enabled.
[ 0.000000] Additional per-CPU info printed with stalls.
[ 0.000000] NR_IRQS:4352 nr_irqs:1152 16
[ 0.000000] xen:events: Xen HVM callback vector for event delivery is enabled
[ 0.000000] Console: colour VGA+ 80x25
[ 0.000000] console [tty1] enabled
[ 0.000000] console [ttyS0] enabled
[ 0.000000] Lock dependency validator: Copyright (c) 2006 Red Hat, Inc., Ingo Molnar
[ 0.000000] ... MAX_LOCKDEP_SUBCLASSES: 8
[ 0.000000] ... MAX_LOCK_DEPTH: 48
[ 0.000000] ... MAX_LOCKDEP_KEYS: 8191
[ 0.000000] ... CLASSHASH_SIZE: 4096
[ 0.000000] ... MAX_LOCKDEP_ENTRIES: 16384
[ 0.000000] ... MAX_LOCKDEP_CHAINS: 32768
[ 0.000000] ... CHAINHASH_SIZE: 16384
[ 0.000000] memory used by lock dependency info: 5855 kB
[ 0.000000] per task-struct memory footprint: 1920 bytes
[ 0.000000] kmemleak: Kernel memory leak detector disabled
[ 0.000000] hpet clockevent registered
[ 0.000000] tsc: Detected 3200.168 MHz processor
[ 0.000000] tsc: Marking TSC unstable due to TSCs unsynchronized
[ 0.036666] Calibrating delay loop (skipped), value calculated using timer frequency.. 6402.01 BogoMIPS (lpj=10667226)
[ 0.063339] pid_max: default: 32768 minimum: 301
[ 0.073818] Dentry cache hash table entries: 131072 (order: 8, 1048576 bytes)
[ 0.093772] Inode-cache hash table entries: 65536 (order: 7, 524288 bytes)
[ 0.113503] Mount-cache hash table entries: 256
[ 0.128049] Initializing cgroup subsys freezer
[ 0.140048] Initializing cgroup subsys blkio
[ 0.150348] tseg: 0000000000
[ 0.150393] CPU: Physical Processor ID: 0
[ 0.186674] CPU: Processor Core ID: 0
[ 0.196676] mce: CPU supports 2 MCE banks
[ 0.210051] numa_add_cpu cpu 0 node 0: mask now 0
[ 0.210058] Last level iTLB entries: 4KB 512, 2MB 16, 4MB 8
[ 0.210058] Last level dTLB entries: 4KB 512, 2MB 128, 4MB 64
[ 0.210058] tlb_flushall_shift: 4
[ 0.246975] Freeing SMP alternatives memory: 32K (ffffffff81fea000 - ffffffff81ff2000)
[ 0.275379] ACPI: Core revision 20131115
[ 0.398639] ACPI: All ACPI Tables successfully acquired
[ 0.420429] ..TIMER: vector=0x30 apic1=0 pin1=2 apic2=0 pin2=0
[ 0.469981] smpboot: CPU0: AMD Phenom(tm) II X6 1090T Processor (fam: 10, model: 0a, stepping: 00)
[ 0.496684] Xen: using vcpuop timer interface
[ 0.496698] installing Xen timer for CPU 0
[ 0.506972] Performance Events: Broken PMU hardware detected, using software events only.
[ 0.513349] Failed to access perfctr msr (MSR c0010004 is 0)
[ 0.518144] NMI watchdog: disabled (cpu0): hardware events not enabled
[ 0.520423] installing Xen timer for CPU 1
[ 0.523609] x86: Booting SMP configuration:
[ 0.036666] numa_add_cpu cpu 1 node 0: mask now 0-1
[ 0.036666] calibrate_delay_direct() dropping max bogoMips estimate 4 = 30611442
[ 0.526688] .... node #0, CPUs: #1
[ 0.644474] installing Xen timer for CPU 2
[ 0.036666] numa_add_cpu cpu 2 node 0: mask now 0-2
[ 0.036666] calibrate_delay_direct() dropping max bogoMips estimate 2 = 19490715
[ 0.646905] #2
[ 0.761738] x86: Booted up 1 node, 3 CPUs
[ 0.763349] smpboot: Total of 3 processors activated (19424.53 BogoMIPS)
[ 0.773645] xor: measuring software checksum speed
[ 0.819074] prefetch64-sse: 1021.200 MB/sec
[ 0.861235] generic_sse: 936.000 MB/sec
[ 0.873345] xor: using function: prefetch64-sse (1021.200 MB/sec)
[ 0.890593] NET: Registered protocol family 16
[ 0.906874] xenbus: xs_reset_watches failed: -38
[ 0.920190] cpuidle: using governor ladder
[ 0.930016] cpuidle: using governor menu
[ 0.950498] ACPI: bus type PCI registered
[ 0.960013] acpiphp: ACPI Hot Plug PCI Controller Driver version: 0.5
[ 0.980733] PCI: Using configuration type 1 for base access
[ 0.993601] PCI: Using configuration type 1 for extended access
[ 1.143607] bio: create slab <bio-0> at 0
[ 1.213357] raid6: sse2x1 2668 MB/s
[ 1.273350] raid6: sse2x2 3587 MB/s
[ 1.333353] raid6: sse2x4 3539 MB/s
[ 1.336681] raid6: using algorithm sse2x2 (3587 MB/s)
[ 1.340014] raid6: using intx1 recovery algorithm
[ 1.343551] ACPI: Added _OSI(Module Device)
[ 1.346698] ACPI: Added _OSI(Processor Device)
[ 1.350072] ACPI: Added _OSI(3.0 _SCP Extensions)
[ 1.353346] ACPI: Added _OSI(Processor Aggregator Device)
[ 1.490271] ACPI: Interpreter enabled
[ 1.493371] ACPI: (supports S0 S5)
[ 1.496679] ACPI: Using IOAPIC for interrupt routing
[ 1.500283] PCI: Using host bridge windows from ACPI; if necessary, use "pci=nocrs" and report a bug
[ 1.634787] ACPI: PCI Root Bridge [PCI0] (domain 0000 [bus 00-ff])
[ 1.653467] acpi PNP0A03:00: _OSC: OS supports [ExtendedConfig ASPM ClockPM Segments MSI]
[ 1.673527] acpi PNP0A03:00: _OSC failed (AE_NOT_FOUND); disabling ASPM
[ 1.697355] pci_bus 0000:00: dev 01, created physical slot 1
[ 1.697528] pci_bus 0000:00: dev 02, created physical slot 2
[ 1.697685] pci_bus 0000:00: dev 03, created physical slot 3
[ 1.697851] pci_bus 0000:00: dev 04, created physical slot 4
[ 1.698016] pci_bus 0000:00: dev 05, created physical slot 5
[ 1.698172] pci_bus 0000:00: dev 06, created physical slot 6
[ 1.698326] pci_bus 0000:00: dev 07, created physical slot 7
[ 1.698480] pci_bus 0000:00: dev 08, created physical slot 8
[ 1.698633] pci_bus 0000:00: dev 09, created physical slot 9
[ 1.698787] pci_bus 0000:00: dev 0a, created physical slot 10
[ 1.698939] pci_bus 0000:00: dev 0b, created physical slot 11
[ 1.699086] pci_bus 0000:00: dev 0c, created physical slot 12
[ 1.699229] pci_bus 0000:00: dev 0d, created physical slot 13
[ 1.699371] pci_bus 0000:00: dev 0e, created physical slot 14
[ 1.699531] pci_bus 0000:00: dev 0f, created physical slot 15
[ 1.699686] pci_bus 0000:00: dev 10, created physical slot 16
[ 1.699842] pci_bus 0000:00: dev 11, created physical slot 17
[ 1.699999] pci_bus 0000:00: dev 12, created physical slot 18
[ 1.700109] pci_bus 0000:00: dev 13, created physical slot 19
[ 1.700266] pci_bus 0000:00: dev 14, created physical slot 20
[ 1.700421] pci_bus 0000:00: dev 15, created physical slot 21
[ 1.700566] pci_bus 0000:00: dev 16, created physical slot 22
[ 1.700709] pci_bus 0000:00: dev 17, created physical slot 23
[ 1.700857] pci_bus 0000:00: dev 18, created physical slot 24
[ 1.700984] pci_bus 0000:00: dev 19, created physical slot 25
[ 1.701116] pci_bus 0000:00: dev 1a, created physical slot 26
[ 1.701243] pci_bus 0000:00: dev 1b, created physical slot 27
[ 1.701389] pci_bus 0000:00: dev 1c, created physical slot 28
[ 1.701533] pci_bus 0000:00: dev 1d, created physical slot 29
[ 1.701691] pci_bus 0000:00: dev 1e, created physical slot 30
[ 1.701836] pci_bus 0000:00: dev 1f, created physical slot 31
[ 1.703751] acpiphp: Slot [3] registered
[ 1.716760] acpiphp: Slot [4] registered
[ 1.727053] acpiphp: Slot [5] registered
[ 1.740440] acpiphp: Slot [6] registered
[ 1.753430] acpiphp: Slot [7] registered
[ 1.763752] acpiphp: Slot [8] registered
[ 1.776776] acpiphp: Slot [9] registered
[ 1.787072] acpiphp: Slot [10] registered
[ 1.800515] acpiphp: Slot [11] registered
[ 1.813360] acpiphp: Slot [12] registered
[ 1.833758] acpiphp: Slot [13] registered
[ 1.847099] acpiphp: Slot [14] registered
[ 1.860433] acpiphp: Slot [15] registered
[ 1.877154] acpiphp: Slot [16] registered
[ 1.890422] acpiphp: Slot [17] registered
[ 1.903358] acpiphp: Slot [18] registered
[ 1.913771] acpiphp: Slot [19] registered
[ 1.927075] acpiphp: Slot [20] registered
[ 1.940046] acpiphp: Slot [21] registered
[ 1.950405] acpiphp: Slot [22] registered
[ 1.963824] acpiphp: Slot [23] registered
[ 1.973748] acpiphp: Slot [24] registered
[ 1.987076] acpiphp: Slot [25] registered
[ 2.000399] acpiphp: Slot [26] registered
[ 2.010419] acpiphp: Slot [27] registered
[ 2.023805] acpiphp: Slot [28] registered
[ 2.037047] acpiphp: Slot [29] registered
[ 2.046992] acpiphp: Slot [30] registered
[ 2.060159] acpiphp: Slot [31] registered
[ 2.070120] PCI host bridge to bus 0000:00
[ 2.083361] pci_bus 0000:00: root bus resource [bus 00-ff]
[ 2.100031] pci_bus 0000:00: root bus resource [io 0x0000-0x0cf7]
[ 2.116695] pci_bus 0000:00: root bus resource [io 0x0d00-0xffff]
[ 2.133362] pci_bus 0000:00: root bus resource [mem 0x000a0000-0x000bffff]
[ 2.150039] pci_bus 0000:00: root bus resource [mem 0xe0000000-0xfbffffff]
[ 2.170018] pci_bus 0000:00: scanning bus
[ 2.170364] pci 0000:00:00.0: [8086:1237] type 00 class 0x060000
[ 2.170461] pci 0000:00:00.0: calling quirk_mmio_always_on+0x0/0x10
[ 2.176933] pci 0000:00:01.0: [8086:7000] type 00 class 0x060100
[ 2.183722] pci 0000:00:01.1: [8086:7010] type 00 class 0x010180
[ 2.203355] pci 0000:00:01.1: reg 0x20: [io 0xc260-0xc26f]
[ 2.215930] pci 0000:00:01.2: [8086:7020] type 00 class 0x0c0300
[ 2.235606] pci 0000:00:01.2: reg 0x20: [io 0xc240-0xc25f]
[ 2.247100] pci 0000:00:01.3: [8086:7113] type 00 class 0x068000
[ 2.247182] pci 0000:00:01.3: calling acpi_pm_check_blacklist+0x0/0x40
[ 2.249999] pci 0000:00:01.3: calling quirk_piix4_acpi+0x0/0x140
[ 2.249999] pci 0000:00:01.3: quirk: [io 0xb000-0xb03f] claimed by PIIX4 ACPI
[ 2.270102] pci 0000:00:01.3: quirk: [io 0xb100-0xb10f] claimed by PIIX4 SMB
[ 2.287088] pci 0000:00:01.3: calling pci_fixup_piix4_acpi+0x0/0x10
[ 2.290161] pci 0000:00:02.0: [5853:0001] type 00 class 0xff8000
[ 2.300014] pci 0000:00:02.0: reg 0x10: [io 0xc000-0xc0ff]
[ 2.303333] pci 0000:00:02.0: reg 0x14: [mem 0xf2000000-0xf2ffffff pref]
[ 2.343766] pci 0000:00:03.0: [1013:00b8] type 00 class 0x030000
[ 2.350017] pci 0000:00:03.0: reg 0x10: [mem 0xf0000000-0xf1ffffff pref]
[ 2.360024] pci 0000:00:03.0: reg 0x14: [mem 0xf30b0000-0xf30b0fff]
[ 2.396688] pci 0000:00:03.0: reg 0x30: [mem 0xf30a0000-0xf30affff pref]
[ 2.400785] pci 0000:00:05.0: [1002:6759] type 00 class 0x030000
[ 2.413354] pci 0000:00:05.0: reg 0x10: [mem 0xe0000000-0xefffffff 64bit pref]
[ 2.423354] pci 0000:00:05.0: reg 0x18: [mem 0xf3060000-0xf307ffff 64bit]
[ 2.433351] pci 0000:00:05.0: reg 0x20: [io 0xc100-0xc1ff]
[ 2.453347] pci 0000:00:05.0: reg 0x30: [mem 0xf3080000-0xf309ffff pref]
[ 2.453534] pci 0000:00:05.0: supports D1 D2
[ 2.456319] pci_bus 0000:00: fixups for bus
[ 2.456319] pci_bus 0000:00: bus scan returning with max=00
[ 2.456666] ACPI: PCI Interrupt Link [LNKA] (IRQs *5 10 11)
[ 2.459999] ACPI: PCI Interrupt Link [LNKB] (IRQs 5 *10 11)
[ 2.466666] ACPI: PCI Interrupt Link [LNKC] (IRQs 5 10 *11)
[ 2.470355] ACPI: PCI Interrupt Link [LNKD] (IRQs *5 10 11)
[ 2.480493] ACPI: Enabled 2 GPEs in block 00 to 0F
[ 2.483378] ACPI: \_SB_.PCI0: notify handler is installed
[ 2.483537] Found 1 acpi root devices
[ 2.483640] xen:balloon: Initialising balloon driver
[ 2.486917] vgaarb: device added: PCI:0000:00:03.0,decodes=io+mem,owns=io+mem,locks=none
[ 2.490170] vgaarb: device added: PCI:0000:00:05.0,decodes=io+mem,owns=io+mem,locks=none
[ 2.496679] vgaarb: loaded
[ 2.496683] vgaarb: bridge control possible 0000:00:05.0
[ 2.500011] vgaarb: no bridge control possible 0000:00:03.0
[ 2.504390] SCSI subsystem initialized
[ 2.506788] libata version 3.00 loaded.
[ 2.506796] ACPI: bus type USB registered
[ 2.510246] usbcore: registered new interface driver usbfs
[ 2.513524] usbcore: registered new interface driver hub
[ 2.516810] usbcore: registered new device driver usb
[ 2.520187] Linux video capture interface: v2.00
[ 2.523636] pps_core: LinuxPPS API ver. 1 registered
[ 2.526706] pps_core: Software ver. 5.3.6 - Copyright 2005-2007 Rodolfo Giometti <giometti@linux.it>
[ 2.530132] PTP clock support registered
[ 2.533478] PCI: Using ACPI for IRQ routing
[ 2.536685] PCI: pci_cache_line_size set to 64 bytes
[ 2.536933] pci 0000:00:01.1: BAR 0: reserving [io 0x01f0-0x01f7 flags 0x110] (d=0, p=0)
[ 2.536938] pci 0000:00:01.1: BAR 1: reserving [io 0x03f6 flags 0x110] (d=0, p=0)
[ 2.536941] pci 0000:00:01.1: BAR 2: reserving [io 0x0170-0x0177 flags 0x110] (d=0, p=0)
[ 2.536943] pci 0000:00:01.1: BAR 3: reserving [io 0x0376 flags 0x110] (d=0, p=0)
[ 2.536945] pci 0000:00:01.1: BAR 4: reserving [io 0xc260-0xc26f flags 0x40101] (d=0, p=0)
[ 2.537021] pci 0000:00:01.2: BAR 4: reserving [io 0xc240-0xc25f flags 0x40101] (d=0, p=0)
[ 2.537176] pci 0000:00:02.0: BAR 0: reserving [io 0xc000-0xc0ff flags 0x40101] (d=0, p=0)
[ 2.537179] pci 0000:00:02.0: BAR 1: reserving [mem 0xf2000000-0xf2ffffff flags 0x42208] (d=0, p=0)
[ 2.537256] pci 0000:00:03.0: BAR 0: reserving [mem 0xf0000000-0xf1ffffff flags 0x42208] (d=0, p=0)
[ 2.537259] pci 0000:00:03.0: BAR 1: reserving [mem 0xf30b0000-0xf30b0fff flags 0x40200] (d=0, p=0)
[ 2.537359] pci 0000:00:05.0: BAR 0: reserving [mem 0xe0000000-0xefffffff flags 0x14220c] (d=0, p=0)
[ 2.537361] pci 0000:00:05.0: BAR 2: reserving [mem 0xf3060000-0xf307ffff flags 0x140204] (d=0, p=0)
[ 2.537364] pci 0000:00:05.0: BAR 4: reserving [io 0xc100-0xc1ff flags 0x40101] (d=0, p=0)
[ 2.538077] e820: reserve RAM buffer [mem 0x0009fc00-0x0009ffff]
[ 2.538099] e820: reserve RAM buffer [mem 0x3f7ff000-0x3fffffff]
[ 2.538514] Bluetooth: Core ver 2.17
[ 2.540350] NET: Registered protocol family 31
[ 2.543358] Bluetooth: HCI device and connection manager initialized
[ 2.546666] Bluetooth: HCI socket layer initialized
[ 2.546724] Bluetooth: L2CAP socket layer initialized
[ 2.549999] Bluetooth: SCO socket layer initialized
[ 2.550181] HPET: 3 timers in total, 0 timers will be used for per-cpu timer
[ 2.553374] hpet0: at MMIO 0xfed00000, IRQs 2, 8, 0
[ 2.556678] hpet0: 3 comparators, 64-bit 62.500000 MHz counter
[ 2.563114] Switched to clocksource xen
[ 2.567357] FS-Cache: Loaded
[ 2.584124] pnp: PnP ACPI init
[ 2.593549] ACPI: bus type PNP registered
[ 2.606438] system 00:00: [mem 0x00000000-0x0009ffff] could not be reserved
[ 2.624584] system 00:00: Plug and Play ACPI device, IDs PNP0c02 (active)
[ 2.625561] pnp 00:01: Plug and Play ACPI device, IDs PNP0103 (active)
[ 2.626920] system 00:02: [io 0x08a0-0x08a3] has been reserved
[ 2.644629] system 00:02: [io 0x0cc0-0x0ccf] has been reserved
[ 2.660431] system 00:02: [io 0x04d0-0x04d1] has been reserved
[ 2.677049] system 00:02: Plug and Play ACPI device, IDs PNP0c02 (active)
[ 2.677198] pnp 00:03: [dma 4]
[ 2.678643] pnp 00:03: Plug and Play ACPI device, IDs PNP0200 (active)
[ 2.678803] xen: --> pirq=16 -> irq=8 (gsi=8)
[ 2.679222] pnp 00:04: Plug and Play ACPI device, IDs PNP0b00 (active)
[ 2.679680] pnp 00:05: Plug and Play ACPI device, IDs PNP0800 (active)
[ 2.679909] xen: --> pirq=17 -> irq=12 (gsi=12)
[ 2.680358] pnp 00:06: Plug and Play ACPI device, IDs PNP0f13 (active)
[ 2.680571] xen: --> pirq=18 -> irq=1 (gsi=1)
[ 2.680951] pnp 00:07: Plug and Play ACPI device, IDs PNP0303 PNP030b (active)
[ 2.681179] xen: --> pirq=19 -> irq=6 (gsi=6)
[ 2.681191] pnp 00:08: [dma 2]
[ 2.681535] pnp 00:08: Plug and Play ACPI device, IDs PNP0700 (active)
[ 2.681921] xen: --> pirq=20 -> irq=4 (gsi=4)
[ 2.682287] pnp 00:09: Plug and Play ACPI device, IDs PNP0501 (active)
[ 2.683720] system 00:0a: [io 0xae00-0xae0f] has been reserved
[ 2.699438] system 00:0a: [io 0xb044-0xb047] has been reserved
[ 2.716084] system 00:0a: Plug and Play ACPI device, IDs PNP0c02 (active)
[ 2.718949] pnp: PnP ACPI: found 11 devices
[ 2.730514] ACPI: bus type PNP unregistered
[ 2.776822] pci_bus 0000:00: resource 4 [io 0x0000-0x0cf7]
[ 2.776827] pci_bus 0000:00: resource 5 [io 0x0d00-0xffff]
[ 2.776830] pci_bus 0000:00: resource 6 [mem 0x000a0000-0x000bffff]
[ 2.776832] pci_bus 0000:00: resource 7 [mem 0xe0000000-0xfbffffff]
[ 2.777002] NET: Registered protocol family 2
[ 2.790048] TCP established hash table entries: 8192 (order: 4, 65536 bytes)
[ 2.810638] TCP bind hash table entries: 8192 (order: 7, 524288 bytes)
[ 2.830824] TCP: Hash tables configured (established 8192 bind 8192)
[ 2.848886] TCP: reno registered
[ 2.862182] UDP hash table entries: 512 (order: 4, 81920 bytes)
[ 2.885716] UDP-Lite hash table entries: 512 (order: 4, 81920 bytes)
[ 2.906282] NET: Registered protocol family 1
[ 2.918390] pci 0000:00:00.0: calling quirk_natoma+0x0/0x40
[ 2.918394] pci 0000:00:00.0: Limiting direct PCI/PCI transfers
[ 2.933934] pci 0000:00:00.0: calling quirk_passive_release+0x0/0x90
[ 2.934024] pci 0000:00:01.0: PIIX3: Enabling Passive Release
[ 2.953087] pci 0000:00:01.0: calling quirk_isa_dma_hangs+0x0/0x40
[ 2.953095] pci 0000:00:01.0: Activating ISA DMA hang workarounds
[ 2.969218] pci 0000:00:01.2: calling quirk_usb_early_handoff+0x0/0x6c0
[ 2.974714] xen: --> pirq=21 -> irq=23 (gsi=23)
[ 2.983163] pci 0000:00:03.0: calling pci_fixup_video+0x0/0x200
[ 2.983171] pci 0000:00:03.0: Current VGA default device: 03.0
[ 2.983174] pci 0000:00:03.0: walked 1 bridges/busses for this device
[ 2.983251] pci 0000:00:03.0: Boot video device
[ 2.983329] pci 0000:00:05.0: calling pci_fixup_video+0x0/0x200
[ 2.983330] pci 0000:00:05.0: Current VGA default device: 03.0
[ 2.983333] pci 0000:00:05.0: walked 1 bridges/busses for this device
[ 2.983442] PCI: CLS 0 bytes, default 64
[ 2.983900] Trying to unpack rootfs image as initramfs...
[ 3.159021] Freeing initrd memory: 7216K (ffff8800371d8000 - ffff8800378e4000)
[ 3.361319] DMA-API: preallocated 65536 debug entries
[ 3.375223] DMA-API: debugging enabled by kernel config
[ 3.395117] Scanning for low memory corruption every 60 seconds
[ 3.414579] sha1_ssse3: Neither AVX nor SSSE3 is available/usable.
[ 3.436974] audit: initializing netlink socket (disabled)
[ 3.452244] type=2000 audit(1389811878.318:1): initialized
[ 3.469179] bounce pool size: 64 pages
[ 3.480901] HugeTLB registered 2 MB page size, pre-allocated 0 pages
[ 3.565252] VFS: Disk quotas dquot_6.5.2
[ 3.578899] Dquot-cache hash table entries: 512 (order 0, 4096 bytes)
[ 3.611316] NTFS driver 2.1.30 [Flags: R/W].
[ 3.628991] fuse init (API version 7.22)
[ 3.646124] bio: create slab <bio-1> at 1
[ 3.666646] Btrfs loaded
[ 3.680480] GFS2 installed
[ 3.691708] ceph: loaded (mds proto 32)
[ 3.706321] msgmni has been set to 1946
[ 3.729170] Block layer SCSI generic (bsg) driver version 0.4 loaded (major 250)
[ 3.751401] io scheduler noop registered
[ 3.761960] io scheduler deadline registered
[ 3.774935] io scheduler cfq registered (default)
[ 3.789864] crc32: CRC_LE_BITS = 64, CRC_BE BITS = 64
[ 3.803150] crc32: self tests passed, processed 225944 bytes in 124826 nsec
[ 3.821026] crc32c: CRC_LE_BITS = 64
[ 3.830702] crc32c: self tests passed, processed 225944 bytes in 54632 nsec
[ 4.032831] crc32_combine: 8373 self tests passed
[ 4.232991] crc32c_combine: 8373 self tests passed
[ 4.249045] pci_hotplug: PCI Hot Plug PCI Core version: 0.5
[ 4.267865] pciehp: PCI Express Hot Plug Controller Driver version: 0.4
[ 4.285429] cpcihp_zt5550: ZT5550 CompactPCI Hot Plug Driver version: 0.2
[ 4.304955] cpcihp_generic: Generic port I/O CompactPCI Hot Plug Driver version: 0.1
[ 4.325553] cpcihp_generic: not configured, disabling.
[ 4.358148] shpchp: Standard Hot Plug PCI Controller Driver version: 0.4
[ 4.392304] acpiphp_ibm: ibm_acpiphp_init: acpi_walk_namespace failed
[ 4.412337] input: Power Button as /devices/LNXSYSTM:00/LNXPWRBN:00/input/input0
[ 4.434222] ACPI: Power Button [PWRF]
[ 4.445521] input: Sleep Button as /devices/LNXSYSTM:00/LNXSLPBN:00/input/input1
[ 4.466424] ACPI: Sleep Button [SLPF]
[ 4.482002] xen:xen_evtchn: Event-channel device installed
[ 4.505042] xen: --> pirq=22 -> irq=24 (gsi=24)
[ 4.505076] xen:grant_table: Grant tables using version 1 layout
[ 4.521305] Grant table initialized
[ 4.535888] Serial: 8250/16550 driver, 4 ports, IRQ sharing enabled
[ 4.599282] 00:09: ttyS0 at I/O 0x3f8 (irq = 4, base_baud = 115200) is a 16550A
[ 4.625824] Linux agpgart interface v0.103
[ 4.639546] Hangcheck: starting hangcheck timer 0.9.1 (tick is 180 seconds, margin is 60 seconds).
[ 4.664830] Hangcheck: Using getrawmonotonic().
[ 4.677564] [drm] Initialized drm 1.1.0 20060810
[ 4.690333] [drm] radeon kernel modesetting enabled.
[ 4.712080] xen: --> pirq=32 -> irq=36 (gsi=36)
[ 4.715810] [drm] initializing kernel modesetting (TURKS 0x1002:0x6759 0x174B:0xE193).
[ 4.739491] [drm] register mmio base: 0xF3060000
[ 4.753126] [drm] register mmio size: 131072
[ 4.767309] [drm] radeon_atrm_get_bios: failed
[ 4.779827] [drm] radeon_acpi_vfct_bios: failed
[ 4.792367] [drm] igp_read_bios_from_vram: failed
[ 4.984188] [drm] radeon_read_bios: succes
[ 4.995848] ATOM BIOS: ELIXIR
[ 5.004860] radeon 0000:00:05.0: VRAM: 1024M 0x0000000000000000 - 0x000000003FFFFFFF (1024M used)
[ 5.027347] radeon 0000:00:05.0: GTT: 1024M 0x0000000040000000 - 0x000000007FFFFFFF
[ 5.048907] [drm] Detected VRAM RAM=1024M, BAR=256M
[ 5.061901] [drm] RAM width 128bits DDR
[ 5.073336] [TTM] Zone kernel: Available graphics memory: 498278 kiB
[ 5.090148] [TTM] Initializing pool allocator
[ 5.102360] [TTM] Initializing DMA pool allocator
[ 5.115242] [drm] radeon: 1024M of VRAM memory ready
[ 5.128543] [drm] radeon: 1024M of GTT memory ready.
[ 5.142860] [drm] GART: num cpu pages 262144, num gpu pages 262144
[ 5.166273] [drm] Loading TURKS Microcode
[ 5.179830] [drm] PCIE GART of 1024M enabled (table at 0x0000000000273000).
[ 5.199419] radeon 0000:00:05.0: WB enabled
[ 5.211064] radeon 0000:00:05.0: fence driver on ring 0 use gpu addr 0x0000000040000c00 and cpu addr 0xffff880039a06c00
[ 5.241007] radeon 0000:00:05.0: fence driver on ring 3 use gpu addr 0x0000000040000c0c and cpu addr 0xffff880039a06c0c
[ 5.271208] radeon 0000:00:05.0: fence driver on ring 5 use gpu addr 0x0000000000072118 and cpu addr 0xffffc90000432118
[ 5.302924] [drm] Supports vblank timestamp caching Rev 2 (21.10.2013).
[ 5.320400] [drm] Driver supports precise vblank timestamp query.
[ 5.338329] radeon 0000:00:05.0: xen: msi bound to pirq=87
[ 5.338380] radeon 0000:00:05.0: xen: msi --> pirq=87 --> irq=81
[ 5.338958] radeon 0000:00:05.0: radeon: using MSI.
[ 5.363125] [drm] radeon: irq initialized.
[ 5.396261] [drm] ring test on 0 succeeded in 2 usecs
[ 5.409991] [drm] ring test on 3 succeeded in 1 usecs
[ 5.604508] [drm] ring test on 5 succeeded in 2 usecs
[ 5.617784] [drm] UVD initialized successfully.
[ 5.632002] [drm] Enabling audio 0 support
[ 5.643485] [drm] ib test on ring 0 succeeded in 0 usecs
[ 5.657669] [drm] ib test on ring 3 succeeded in 0 usecs
[ 5.826440] [drm] ib test on ring 5 succeeded
[ 5.848345] [drm] Radeon Display Connectors
[ 5.861945] [drm] Connector 0:
[ 5.871949] [drm] HDMI-A-1
[ 5.880933] [drm] HPD4
[ 5.888329] [drm] DDC: 0x6450 0x6450 0x6454 0x6454 0x6458 0x6458 0x645c 0x645c
[ 5.907133] [drm] Encoders:
[ 5.914988] [drm] DFP1: INTERNAL_UNIPHY2
[ 5.925705] [drm] Connector 1:
[ 5.933887] [drm] DVI-D-1
[ 5.942195] [drm] HPD1
[ 5.949108] [drm] DDC: 0x6460 0x6460 0x6464 0x6464 0x6468 0x6468 0x646c 0x646c
[ 5.967946] [drm] Encoders:
[ 5.976232] [drm] DFP2: INTERNAL_UNIPHY
[ 5.987093] [drm] Connector 2:
[ 5.995859] [drm] VGA-1
[ 6.003380] [drm] DDC: 0x6430 0x6430 0x6434 0x6434 0x6438 0x6438 0x643c 0x643c
[ 6.022067] [drm] Encoders:
[ 6.030148] [drm] CRT1: INTERNAL_KLDSCP_DAC1
[ 6.042238] [drm] Internal thermal controller with fan control
[ 6.057974] == power state 0 ==
[ 6.067029] ui class: none
[ 6.076111] internal class: boot
[ 6.087664] caps:
[ 6.095270] uvd vclk: 0 dclk: 0
[ 6.105152] power level 0 sclk: 10000 mclk: 15000 vddc: 900 vddci: 0
[ 6.121906] power level 1 sclk: 10000 mclk: 15000 vddc: 900 vddci: 0
[ 6.139500] power level 2 sclk: 10000 mclk: 15000 vddc: 900 vddci: 0
[ 6.156670] status: c r b
[ 6.168782] == power state 1 ==
[ 6.177464] ui class: performance
[ 6.187440] internal class: none
[ 6.199851] caps:
[ 6.206986] uvd vclk: 0 dclk: 0
[ 6.217630] power level 0 sclk: 10000 mclk: 15000 vddc: 900 vddci: 0
[ 6.235778] power level 1 sclk: 40000 mclk: 66700 vddc: 1000 vddci: 0
[ 6.252711] power level 2 sclk: 65000 mclk: 66700 vddc: 1050 vddci: 0
[ 6.271205] status:
[ 6.279778] == power state 2 ==
[ 6.288386] ui class: none
[ 6.298028] internal class: uvd
[ 6.309251] caps: video
[ 6.319058] uvd vclk: 70000 dclk: 56000
[ 6.329840] power level 0 sclk: 65000 mclk: 66700 vddc: 1050 vddci: 0
[ 6.346605] power level 1 sclk: 65000 mclk: 66700 vddc: 1050 vddci: 0
[ 6.371416] power level 2 sclk: 65000 mclk: 66700 vddc: 1050 vddci: 0
[ 6.391886] status:
[ 6.401088] [drm:radeon_pm_init_dpm] *ERROR* radeon: dpm initialization failed
[ 6.476021] [drm] fb mappable at 0xE0474000
[ 6.490424] [drm] vram apper at 0xE0000000
[ 6.504252] [drm] size 7299072
[ 6.513823] [drm] fb depth is 24
[ 6.523017] [drm] pitch is 6912
[ 6.565637] Console: switching to colour frame buffer device 210x65
[ 6.585818] radeon 0000:00:05.0: fb0: radeondrmfb frame buffer device
[ 6.600740] radeon 0000:00:05.0: registered panic notifier
[ 6.613816] [drm] Initialized radeon 2.36.0 20080528 for 0000:00:05.0 on minor 0
[ 6.658871] brd: module loaded
[ 6.676507] loop: module loaded
[ 6.692904] Uniform Multi-Platform E-IDE driver
[ 6.707029] piix 0000:00:01.1: IDE controller (0x8086:0x7010 rev 0x00)
[ 6.728016] piix 0000:00:01.1: not 100% native mode: will probe irqs later
[ 6.746085] ide0: BM-DMA at 0xc260-0xc267
[ 6.756458] ide1: BM-DMA at 0xc268-0xc26f
[ 6.766591] Probing IDE interface ide0...
[ 6.772856] blkfront: xvda: flush diskcache: enabled; persistent grants: enabled; indirect descriptors: enabled;
[ 6.813829] random: nonblocking pool is initialized
[ 6.830311] xvda: xvda1 xvda2 < xvda5 >
[ 7.307390] Probing IDE interface ide1...
[ 7.851222] ide0 at 0x1f0-0x1f7,0x3f6 on irq 14
[ 7.862557] ide1 at 0x170-0x177,0x376 on irq 15
[ 7.874430] ide_generic: please use "probe_mask=0x3f" module parameter for probing all legacy ISA IDE ports
[ 7.897359] ide-gd driver 1.18
[ 7.909397] tun: Universal TUN/TAP device driver, 1.6
[ 7.920703] tun: (C) 1999-2004 Max Krasnyansky <maxk@qualcomm.com>
[ 7.935312] e1000: Intel(R) PRO/1000 Network Driver - version 7.3.21-k8-NAPI
[ 7.951775] e1000: Copyright (c) 1999-2006 Intel Corporation.
[ 7.965423] e1000e: Intel(R) PRO/1000 Network Driver - 2.3.2-k
[ 7.979158] e1000e: Copyright(c) 1999 - 2013 Intel Corporation.
[ 7.992875] igb: Intel(R) Gigabit Ethernet Network Driver - version 5.0.5-k
[ 8.009000] igb: Copyright (c) 2007-2013 Intel Corporation.
[ 8.023871] igbvf: Intel(R) Gigabit Virtual Function Network Driver - version 2.0.2-k
[ 8.041338] igbvf: Copyright (c) 2009 - 2012 Intel Corporation.
[ 8.054911] xen_netfront: Initialising Xen virtual ethernet driver
[ 8.074668] ehci_hcd: USB 2.0 'Enhanced' Host Controller (EHCI) Driver
[ 8.089869] ehci-pci: EHCI PCI platform driver
[ 8.102242] ohci_hcd: USB 1.1 'Open' Host Controller (OHCI) Driver
[ 8.116495] ohci-pci: OHCI PCI platform driver
[ 8.127830] uhci_hcd: USB Universal Host Controller Interface driver
[ 8.151777] uhci_hcd 0000:00:01.2: enabling bus mastering
[ 8.153818] uhci_hcd 0000:00:01.2: UHCI Host Controller
[ 8.165894] uhci_hcd 0000:00:01.2: new USB bus registered, assigned bus number 1
[ 8.184847] uhci_hcd 0000:00:01.2: irq 23, io base 0x0000c240
[ 8.206743] usb usb1: New USB device found, idVendor=1d6b, idProduct=0001
[ 8.235970] usb usb1: New USB device strings: Mfr=3, Product=2, SerialNumber=1
[ 8.254241] usb usb1: Product: UHCI Host Controller
[ 8.267988] usb usb1: Manufacturer: Linux 3.13.0-rc8-20140115-vidquirk-fixed-debug3+ uhci_hcd
[ 8.290550] usb usb1: SerialNumber: 0000:00:01.2
[ 8.305163] hub 1-0:1.0: USB hub found
[ 8.316586] hub 1-0:1.0: 2 ports detected
[ 8.331183] usbcore: registered new interface driver usblp
[ 8.348291] usbcore: registered new interface driver usb-storage
[ 8.366736] usbcore: registered new interface driver usbserial
[ 8.382626] usbcore: registered new interface driver cp210x
[ 8.401105] usbserial: USB Serial support registered for cp210x
[ 8.421428] usbcore: registered new interface driver cypress_m8
[ 8.437870] usbserial: USB Serial support registered for DeLorme Earthmate USB
[ 8.457357] usbserial: USB Serial support registered for HID->COM RS232 Adapter
[ 8.476461] usbserial: USB Serial support registered for Nokia CA-42 V2 Adapter
[ 8.495973] usbcore: registered new interface driver mos7720
[ 8.513775] usbserial: USB Serial support registered for Moschip 2 port adapter
[ 8.537722] usbcore: registered new interface driver mos7840
[ 8.555045] usbserial: USB Serial support registered for Moschip 7840/7820 USB Serial Driver
[ 8.579968] i8042: PNP: PS/2 Controller [PNP0303:PS2K,PNP0f13:PS2M] at 0x60,0x64 irq 1,12
[ 8.610004] serio: i8042 KBD port at 0x60,0x64 irq 1
[ 8.626599] serio: i8042 AUX port at 0x60,0x64 irq 12
[ 8.642451] mousedev: PS/2 mouse device common for all mice
[ 8.643540] usb 1-1: new full-speed USB device number 2 using uhci_hcd
[ 8.680997] input: Xen Virtual Keyboard as /devices/virtual/input/input3
[ 8.682500] input: AT Translated Set 2 keyboard as /devices/platform/i8042/serio0/input/input2
[ 8.732345] input: Xen Virtual Pointer as /devices/virtual/input/input6
[ 8.759043] rtc_cmos 00:04: rtc core: registered rtc_cmos as rtc0
[ 8.777190] rtc_cmos 00:04: alarms up to one day, 114 bytes nvram, hpet irqs
[ 8.800783] piix4_smbus 0000:00:01.3: Host SMBus controller not enabled!
[ 8.806330] usb 1-1: New USB device found, idVendor=0627, idProduct=0001
[ 8.806332] usb 1-1: New USB device strings: Mfr=1, Product=3, SerialNumber=5
[ 8.806334] usb 1-1: Product: QEMU USB Tablet
[ 8.806335] usb 1-1: Manufacturer: QEMU
[ 8.806336] usb 1-1: SerialNumber: 42
[ 8.893400] lirc_dev: IR Remote Control driver registered, major 248
[ 8.913956] IR NEC protocol handler initialized
[ 8.926354] IR RC5(x) protocol handler initialized
[ 8.938300] IR RC6 protocol handler initialized
[ 8.951521] IR JVC protocol handler initialized
[ 8.963072] IR Sony protocol handler initialized
[ 8.974925] IR RC5 (streamzap) protocol handler initialized
[ 8.991867] IR SANYO protocol handler initialized
[ 9.003685] IR MCE Keyboard/mouse protocol handler initialized
[ 9.019570] IR LIRC bridge handler initialized
[ 9.032665] cx25821: driver version 0.0.106 loaded
[ 9.047022] usbcore: registered new interface driver pvrusb2
[ 9.064143] pvrusb2: V4L in-tree version:Hauppauge WinTV-PVR-USB2 MPEG2 Encoder/Tuner
[ 9.083814] pvrusb2: Debug mask is 31 (0x1f)
[ 9.102027] sp5100_tco: SP5100/SB800 TCO WatchDog Timer Driver v0.05
[ 9.119487] xen_wdt: Xen WatchDog Timer Driver v0.01
[ 9.133315] xen_wdt: initialized (timeout=60s, nowayout=0)
[ 9.150488] device-mapper: ioctl: 4.27.0-ioctl (2013-10-30) initialised: dm-devel@redhat.com
[ 9.172377] Bluetooth: Virtual HCI driver ver 1.4
[ 9.193943] Bluetooth: HCI UART driver ver 2.2
[ 9.205345] Bluetooth: HCI H4 protocol initialized
[ 9.218875] Bluetooth: HCI BCSP protocol initialized
[ 9.232689] Bluetooth: HCILL protocol initialized
[ 9.244516] Bluetooth: HCIATH3K protocol initialized
[ 9.260143] Bluetooth: HCI Three-wire UART (H5) protocol initialized
[ 9.280198] usbcore: registered new interface driver bcm203x
[ 9.296038] usbcore: registered new interface driver bpa10x
[ 9.311805] usbcore: registered new interface driver bfusb
[ 9.326719] usbcore: registered new interface driver btusb
[ 9.341895] usbcore: registered new interface driver ath3k
[ 9.358866] ioremap error for 0xfc001000-0xfc002000, requested 0x10, got 0x0
[ 9.383105] hidraw: raw HID events driver (C) Jiri Kosina
[ 9.421505] input: QEMU QEMU USB Tablet as /devices/pci0000:00/0000:00:01.2/usb1/1-1/1-1:1.0/input/input7
[ 9.449780] hid-generic 0003:0627:0001.0001: input,hidraw0: USB HID v0.01 Pointer [QEMU QEMU USB Tablet] on usb-0000:00:01.2-1/input0
[ 9.486336] input: ImExPS/2 Generic Explorer Mouse as /devices/platform/i8042/serio1/input/input5
[ 9.486479] usbcore: registered new interface driver usbhid
[ 9.486481] usbhid: USB HID core driver
[ 9.486573] Netfilter messages via NETLINK v0.30.
[ 9.486601] nfnl_acct: registering with nfnetlink.
[ 9.486794] nf_conntrack version 0.5.0 (7785 buckets, 31140 max)
[ 9.488237] ctnetlink v0.93: registering with nfnetlink.
[ 9.489525] xt_time: kernel timezone is -0000
[ 9.489557] ip_set: protocol 6
[ 9.489579] IPVS: Registered protocols ()
[ 9.490058] IPVS: Connection hash table configured (size=4096, memory=64Kbytes)
[ 9.490229] IPVS: Creating netns size=1904 id=0
[ 9.674872] IPVS: ipvs loaded.
[ 9.685169] ip_tables: (C) 2000-2006 Netfilter Core Team
[ 9.699716] TCP: cubic registered
[ 9.709142] NET: Registered protocol family 17
[ 9.724282] Bridge firewalling registered
[ 9.735613] Ebtables v2.0 registered
[ 9.747021] Bluetooth: RFCOMM TTY layer initialized
[ 9.761602] Bluetooth: RFCOMM socket layer initialized
[ 9.775650] Bluetooth: RFCOMM ver 1.11
[ 9.787136] Bluetooth: BNEP (Ethernet Emulation) ver 1.3
[ 9.802270] Bluetooth: BNEP filters: protocol multicast
[ 9.816088] Bluetooth: BNEP socket layer initialized
[ 9.829140] Bluetooth: HIDP (Human Interface Emulation) ver 1.2
[ 9.845027] Bluetooth: HIDP socket layer initialized
[ 9.858248] Key type ceph registered
[ 9.869919] libceph: loaded (mon/osd proto 15/24)
[ 9.888606] registered taskstats version 1
[ 9.902876] xenbus_probe_frontend: Device with no driver: device/pci/0
[ 9.920780] console [netcon0] enabled
[ 9.931023] netconsole: network logging started
[ 9.943509] rtc_cmos 00:04: setting system clock to 2014-01-15 18:51:26 UTC (1389811886)
[ 9.968957] Freeing unused kernel memory: 1072K (ffffffff81ede000 - ffffffff81fea000)
[ 9.989995] Write protecting the kernel read-only data: 14336k
[ 10.008940] Freeing unused kernel memory: 660K (ffff88000195b000 - ffff880001a00000)
[ 10.029932] Freeing unused kernel memory: 272K (ffff880001dbc000 - ffff880001e00000)
[ 10.702548] EXT4-fs (xvda1): mounted filesystem with ordered data mode. Opts: (null)
[ 13.272415] udevd[1559]: starting version 175
[ 18.576152] Adding 901116k swap on /dev/xvda5. Priority:-1 extents:1 across:901116k SS
[ 18.676818] EXT4-fs (xvda1): re-mounted. Opts: (null)
[ 18.994288] EXT4-fs (xvda1): re-mounted. Opts: errors=remount-ro
[ 28.862997] vgaarb: device changed decodes: PCI:0000:00:05.0,olddecodes=io+mem,decodes=none:owns=none
[ 31.846949] type=1006 audit(1389811908.400:2): pid=4222 uid=0 old auid=4294967295 new auid=112 old ses=4294967295 new ses=1 res=1
^ permalink raw reply [flat|nested] 10+ messages in thread
* Re: [Qemu-devel] Secondary VGA passthrough not working, hitting linux kernel's pci_fixup_video
2014-01-15 22:35 ` Sander Eikelenboom
@ 2014-01-16 5:40 ` Michael S. Tsirkin
0 siblings, 0 replies; 10+ messages in thread
From: Michael S. Tsirkin @ 2014-01-16 5:40 UTC (permalink / raw)
To: Sander Eikelenboom
Cc: Bjorn Helgaas, David Airlie, Jesse Barnes, qemu-devel@nongnu.org,
Anthony Liguori
On Wed, Jan 15, 2014 at 11:35:29PM +0100, Sander Eikelenboom wrote:
>
> Wednesday, January 15, 2014, 11:10:35 PM, you wrote:
>
> > [+cc Jesse, David]
>
> > On Wed, Jan 15, 2014 at 12:19 PM, Sander Eikelenboom
> > <linux@eikelenboom.it> wrote:
>
> >>>> >> I understood there is no bridge for a VGA device in your virtual machine.
> >>>> >> Your emulator for the bridge control register is odd.
> >>>>
> >>>> > That seems beside the point as there's no bridge here.
> >>>>
> >>>> >> I guess your virtual machine ignore "PCI-to-PCI Bridge Architecture
> >>>> >> Specification".
> >>>>
> >>>> > Since there's no pci to pci bridge in this VM, why would this
> >>>> > specification apply?
>
> > My guess is that he is referring to sec 11.3.2 "Initialization
> > Algorithm" of the Bridge spec r1.2. That section (and chapter 24 of
> > MindShare PCI System Architecture, 4th edition) apparently reiterate a
> > discovery algorithm that appears in the PCI spec. I can't find that
> > algorithm in the 3.0 or 2.3 PCI specs, but I assume it was in an
> > earlier version.
>
> >> Yes i have done some more reading .. from what i could find from PCI specs there is nothing in there
> >> that points to a specific boot vga card.
> >> The whole agp/pci/pcie bios selection is ACPI stuff .. but if all the cards are of the same type ..
> >> there is no way to specify a specific card.
>
> > The algorithm from sec 11.3.2 *does* seem to give a way to identify a
> > specific boot VGA card, i.e., the first one you find when searching in
> > the specified order. There are still issues, such as the fact that
> > 11.3.2 says to start at PCI bus 0, while MindShare says to start with
> > the largest bus number.
>
> > Also, sec 12.1.2.1 of the Bridge spec says the PCI_COMMAND memory and
> > I/O enables do apply to VGA accesses, so that is potentially a way to
> > make two sibling VGA devices work, e.g., by toggling those bits to
> > control which device you want to talk to. I also assume that when
> > identifying the "boot VGA device," one might ignore devices that the
> > BIOS left disabled.
>
> >>>> >> 00:03.0 VGA compatible controller [0300]: Cirrus Logic GD 5446 [1013:00b8] (prog-if 00 [VGA controller])
> >>>> >> Subsystem: Red Hat, Inc Device [1af4:1100]
> >>>> >> Physical Slot: 3
> >>>> >> Control: I/O+ Mem+ BusMaster+ SpecCycle- MemWINV- VGASnoop- ParErr- Stepping- SERR- FastB2B- DisINTx-
> >>>> >> Status: Cap- 66MHz- UDF- FastB2B- ParErr- DEVSEL=fast >TAbort- <TAbort- <MAbort- >SERR- <PERR- INTx-
> >>>> >> Latency: 0
> >>>> >> Region 0: Memory at f0000000 (32-bit, prefetchable) [size=32M]
> >>>> >> Region 1: Memory at f30b0000 (32-bit, non-prefetchable) [size=4K]
> >>>> >> Expansion ROM at f30a0000 [disabled] [size=64K]
> >>>> >>
> >>>> >> 00:05.0 VGA compatible controller [0300]: Advanced Micro Devices [AMD] nee ATI Turks [Radeon HD 6570] [1002:6759] (prog-if 00 [VGA controller])
> >>>> >> Subsystem: PC Partner Limited Device [174b:e193]
> >>>> >> Physical Slot: 5
> >>>> >> Control: I/O+ Mem+ BusMaster+ SpecCycle- MemWINV- VGASnoop- ParErr- Stepping- SERR- FastB2B- DisINTx+
> >>>> >> Status: Cap+ 66MHz- UDF- FastB2B- ParErr- DEVSEL=fast >TAbort- <TAbort- <MAbort- >SERR- <PERR- INTx-
> >>>> >> Latency: 0
> >>>> >> Interrupt: pin A routed to IRQ 81
> >>>> >> Region 0: Memory at e0000000 (64-bit, prefetchable) [size=256M]
> >>>> >> Region 2: Memory at f3060000 (64-bit, non-prefetchable) [size=128K]
> >>>> >> Region 4: I/O ports at c100 [size=256]
> >>>> >> Expansion ROM at f3080000 [disabled] [size=128K]
>
> > I am not an expert on this legacy stuff, but this looks like an
> > illegal configuration to me: both 00:03.0 and 00:05.0 claim to be VGA
> > controllers and both have I/O+ and Mem+, so I would think both would
> > respond to the legacy VGA addresses.
>
> Me neither .. and all pci specs seem to be paywalled, but apart from this
> the current code of pci_video_fixup doesn't check for I/O+ and Mem+ either.
I see this:
pci_read_config_word(pdev, PCI_COMMAND, &config);
if (config & (PCI_COMMAND_IO | PCI_COMMAND_MEMORY)) {
pdev->resource[PCI_ROM_RESOURCE].flags |= IORESOURCE_ROM_SHADOW;
so it checks that either IO+ or Mem+ is enabled.
> Ánd as i pointed out the kernel at this point has already set vga_default_device (from what it seems
> indeed the first device from a ordered scan). So if there should be a better detection mechanism i think it should
> be implemented at what sets vga_default_device .. and pci_fixup_video should adhere to that (or fixup if it's still not set)
> And that's essentially what the patch does .. and it also doesn't seem to alter anything for the cases it was implemented for
> of i read the comment and commit messages correctly.
>
> --
> Sander
^ permalink raw reply [flat|nested] 10+ messages in thread
end of thread, other threads:[~2014-01-16 5:40 UTC | newest]
Thread overview: 10+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2014-01-15 10:37 [Qemu-devel] Secondary VGA passthrough not working, hitting linux kernel's pci_fixup_video Sander Eikelenboom
2014-01-15 11:58 ` Michael S. Tsirkin
2014-01-15 13:14 ` Sander Eikelenboom
2014-01-15 19:03 ` Michael S. Tsirkin
2014-01-15 19:19 ` Sander Eikelenboom
2014-01-15 22:10 ` Bjorn Helgaas
2014-01-15 22:25 ` Michael S. Tsirkin
2014-01-15 22:52 ` Sander Eikelenboom
2014-01-15 22:35 ` Sander Eikelenboom
2014-01-16 5:40 ` Michael S. Tsirkin
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).