Re: [Xen-devel] Success with pv guest and ATI Radeon HD4550

2015-12-08 Thread Geoffrey McRae


On 09/12/15 01:51, Andrew Cooper wrote:

On 08/12/15 14:37, Geoffrey McRae wrote:

Hi All,

This is just a heads up on the steps involved in getting a HD4550
working with the ATI driver as a pv guest on a Dom0 with no IOMMU
support. The main issue with making this work was providing a way for
the guest to read the vga bios.

[2.127078] [drm] Initialized drm 1.1.0 20060810
[2.140666] snd_hda_intel :00:00.1: Xen PCI mapped GSI19 to IRQ51
[2.140950] snd_hda_intel :00:00.1: Handle VGA-switcheroo audio
client
[2.143196] [drm] radeon kernel modesetting enabled.
[2.143856] radeon :00:00.0: Xen PCI mapped GSI18 to IRQ53
[2.144583] [drm] initializing kernel modesetting (RV710
0x1002:0x9540 0x1043:0x0298).
[2.144608] [drm] register mmio base: 0xFBDF
[2.144612] [drm] register mmio size: 65536
[2.144693] radeon :00:00.0: Invalid ROM contents
[2.144703] radeon :00:00.0: Invalid ROM contents
[2.144707] [drm:radeon_get_bios] *ERROR* Unable to locate a BIOS ROM
[2.144712] radeon :00:00.0: Fatal error during GPU init
[2.144717] [drm] radeon: finishing device.
[2.144720] [TTM] Memory type 2 has not been initialized

To resolve this I dumped the BIOS on dom0 to a file and copied it into
the guest, then patched radeon_bios.c to provide a means to load it
from userspace with the following result.


[  997.220370] [drm] radeon kernel modesetting enabled.
[  997.220743] xen:events: xen_bind_pirq_gsi_to_irq: returning irq 53
for gsi 18
[  997.220753] radeon :00:00.0: Xen PCI mapped GSI18 to IRQ53
[  997.221304] [drm] initializing kernel modesetting (RV710
0x1002:0x9540 0x1043:0x0298).
[  997.221329] [drm] register mmio base: 0xFBDF
[  997.221333] [drm] register mmio size: 65536
[  997.222605] radeon :00:00.0: firmware: direct-loading firmware
radeon.bios
[  997.222652] ATOM BIOS: 9540.11.17.0.18.AS02
[  997.222691] radeon :00:00.0: VRAM: 512M 0x -
0x1FFF (512M used)
[  997.222702] radeon :00:00.0: GTT: 1024M 0x2000 -
0x5FFF
[  997.222708] Failed to add WC MTRR for
[d000-dfff]; performance may suffer.
[  997.222713] [drm] Detected VRAM RAM=512M, BAR=256M
[  997.222717] [drm] RAM width 64bits DDR
[  997.222815] [TTM] Zone  kernel: Available graphics memory: 509996 kiB
[  997.222821] [TTM] Initializing pool allocator
[  997.222829] [TTM] Initializing DMA pool allocator
[  997.222862] [drm] radeon: 512M of VRAM memory ready
[  997.222866] [drm] radeon: 1024M of GTT memory ready.
[  997.222884] [drm] Loading RV710 Microcode
[  997.231622] radeon :00:00.0: firmware: direct-loading firmware
radeon/RV710_pfp.bin
[  997.249253] radeon :00:00.0: firmware: direct-loading firmware
radeon/RV710_me.bin
[  997.272966] radeon :00:00.0: firmware: direct-loading firmware
radeon/R700_rlc.bin
[  997.290901] radeon :00:00.0: firmware: direct-loading firmware
radeon/RV710_smc.bin
[  997.290915] [drm] Internal thermal controller without fan control
[  997.291866] [drm] radeon: dpm initialized
[  997.306236] radeon :00:00.0: firmware: direct-loading firmware
radeon/RV710_uvd.bin
[  997.306409] [drm] GART: num cpu pages 262144, num gpu pages 262144
[  997.320178] [drm] PCIE GART of 1024M enabled (table at
0x0025D000).
[  997.320240] radeon :00:00.0: WB enabled
[  997.320246] radeon :00:00.0: fence driver on ring 0 use gpu
addr 0x2c00 and cpu addr 0x88003c79cc00
[  997.320253] radeon :00:00.0: fence driver on ring 3 use gpu
addr 0x2c0c and cpu addr 0x88003c79cc0c
[  997.323053] radeon :00:00.0: fence driver on ring 5 use gpu
addr 0x0005c598 and cpu addr 0xc931c598
[  997.323060] [drm] Supports vblank timestamp caching Rev 2
(21.10.2013).
[  997.323063] [drm] Driver supports precise vblank timestamp query.
[  997.323067] radeon :00:00.0: radeon: MSI limited to 32-bit
[  997.323285] radeon :00:00.0: radeon: using MSI.
[  997.323322] [drm] radeon: irq initialized.
[  997.369642] [drm] ring test on 0 succeeded in 1 usecs
[  997.369651] [drm] ring test on 3 succeeded in 2 usecs
[  997.564145] [drm] ring test on 5 succeeded in 1 usecs
[  997.564153] [drm] UVD initialized successfully.
[  997.564580] [drm] ib test on ring 0 succeeded in 0 usecs
[  997.564614] [drm] ib test on ring 3 succeeded in 0 usecs
[  997.723870] [drm] ib test on ring 5 succeeded
[  997.724326] [drm] Radeon Display Connectors
[  997.724332] [drm] Connector 0:
[  997.724335] [drm]   VGA-1
[  997.724338] [drm]   DDC: 0x7e40 0x7e40 0x7e44 0x7e44 0x7e48 0x7e48
0x7e4c 0x7e4c
[  997.724342] [drm]   Encoders:
[  997.724345] [drm] CRT2: INTERNAL_KLDSCP_DAC2
[  997.724348] [drm] Connector 1:
[  997.724350] [drm]   HDMI-A-1
[  997.724353] [drm]   HPD1
[  997.724355] [drm]   DDC: 0x7e50 0x7e50 0x7e54 0x7e54 0x7e58 0x7e58
0x7e5c 0x7e5c
[  997.724359] [drm]   Encoders:
[  997.724362] [drm] DFP1: INTERNAL_UNIPHY
[  

Re: [Xen-devel] Success with pv guest and ATI Radeon HD4550

2015-12-08 Thread Andrew Cooper
On 08/12/15 14:55, Geoffrey McRae wrote:
>
> On 09/12/15 01:51, Andrew Cooper wrote:
>> On 08/12/15 14:37, Geoffrey McRae wrote:
>>> Hi All,
>>>
>>> This is just a heads up on the steps involved in getting a HD4550
>>> working with the ATI driver as a pv guest on a Dom0 with no IOMMU
>>> support. The main issue with making this work was providing a way for
>>> the guest to read the vga bios.
>>>
>>> [2.127078] [drm] Initialized drm 1.1.0 20060810
>>> [2.140666] snd_hda_intel :00:00.1: Xen PCI mapped GSI19 to
>>> IRQ51
>>> [2.140950] snd_hda_intel :00:00.1: Handle VGA-switcheroo audio
>>> client
>>> [2.143196] [drm] radeon kernel modesetting enabled.
>>> [2.143856] radeon :00:00.0: Xen PCI mapped GSI18 to IRQ53
>>> [2.144583] [drm] initializing kernel modesetting (RV710
>>> 0x1002:0x9540 0x1043:0x0298).
>>> [2.144608] [drm] register mmio base: 0xFBDF
>>> [2.144612] [drm] register mmio size: 65536
>>> [2.144693] radeon :00:00.0: Invalid ROM contents
>>> [2.144703] radeon :00:00.0: Invalid ROM contents
>>> [2.144707] [drm:radeon_get_bios] *ERROR* Unable to locate a BIOS
>>> ROM
>>> [2.144712] radeon :00:00.0: Fatal error during GPU init
>>> [2.144717] [drm] radeon: finishing device.
>>> [2.144720] [TTM] Memory type 2 has not been initialized
>>>
>>> To resolve this I dumped the BIOS on dom0 to a file and copied it into
>>> the guest, then patched radeon_bios.c to provide a means to load it
>>> from userspace with the following result.
>>>
>>>
>>> [  997.220370] [drm] radeon kernel modesetting enabled.
>>> [  997.220743] xen:events: xen_bind_pirq_gsi_to_irq: returning irq 53
>>> for gsi 18
>>> [  997.220753] radeon :00:00.0: Xen PCI mapped GSI18 to IRQ53
>>> [  997.221304] [drm] initializing kernel modesetting (RV710
>>> 0x1002:0x9540 0x1043:0x0298).
>>> [  997.221329] [drm] register mmio base: 0xFBDF
>>> [  997.221333] [drm] register mmio size: 65536
>>> [  997.222605] radeon :00:00.0: firmware: direct-loading firmware
>>> radeon.bios
>>> [  997.222652] ATOM BIOS: 9540.11.17.0.18.AS02
>>> [  997.222691] radeon :00:00.0: VRAM: 512M 0x -
>>> 0x1FFF (512M used)
>>> [  997.222702] radeon :00:00.0: GTT: 1024M 0x2000 -
>>> 0x5FFF
>>> [  997.222708] Failed to add WC MTRR for
>>> [d000-dfff]; performance may suffer.
>>> [  997.222713] [drm] Detected VRAM RAM=512M, BAR=256M
>>> [  997.222717] [drm] RAM width 64bits DDR
>>> [  997.222815] [TTM] Zone  kernel: Available graphics memory: 509996
>>> kiB
>>> [  997.222821] [TTM] Initializing pool allocator
>>> [  997.222829] [TTM] Initializing DMA pool allocator
>>> [  997.222862] [drm] radeon: 512M of VRAM memory ready
>>> [  997.222866] [drm] radeon: 1024M of GTT memory ready.
>>> [  997.222884] [drm] Loading RV710 Microcode
>>> [  997.231622] radeon :00:00.0: firmware: direct-loading firmware
>>> radeon/RV710_pfp.bin
>>> [  997.249253] radeon :00:00.0: firmware: direct-loading firmware
>>> radeon/RV710_me.bin
>>> [  997.272966] radeon :00:00.0: firmware: direct-loading firmware
>>> radeon/R700_rlc.bin
>>> [  997.290901] radeon :00:00.0: firmware: direct-loading firmware
>>> radeon/RV710_smc.bin
>>> [  997.290915] [drm] Internal thermal controller without fan control
>>> [  997.291866] [drm] radeon: dpm initialized
>>> [  997.306236] radeon :00:00.0: firmware: direct-loading firmware
>>> radeon/RV710_uvd.bin
>>> [  997.306409] [drm] GART: num cpu pages 262144, num gpu pages 262144
>>> [  997.320178] [drm] PCIE GART of 1024M enabled (table at
>>> 0x0025D000).
>>> [  997.320240] radeon :00:00.0: WB enabled
>>> [  997.320246] radeon :00:00.0: fence driver on ring 0 use gpu
>>> addr 0x2c00 and cpu addr 0x88003c79cc00
>>> [  997.320253] radeon :00:00.0: fence driver on ring 3 use gpu
>>> addr 0x2c0c and cpu addr 0x88003c79cc0c
>>> [  997.323053] radeon :00:00.0: fence driver on ring 5 use gpu
>>> addr 0x0005c598 and cpu addr 0xc931c598
>>> [  997.323060] [drm] Supports vblank timestamp caching Rev 2
>>> (21.10.2013).
>>> [  997.323063] [drm] Driver supports precise vblank timestamp query.
>>> [  997.323067] radeon :00:00.0: radeon: MSI limited to 32-bit
>>> [  997.323285] radeon :00:00.0: radeon: using MSI.
>>> [  997.323322] [drm] radeon: irq initialized.
>>> [  997.369642] [drm] ring test on 0 succeeded in 1 usecs
>>> [  997.369651] [drm] ring test on 3 succeeded in 2 usecs
>>> [  997.564145] [drm] ring test on 5 succeeded in 1 usecs
>>> [  997.564153] [drm] UVD initialized successfully.
>>> [  997.564580] [drm] ib test on ring 0 succeeded in 0 usecs
>>> [  997.564614] [drm] ib test on ring 3 succeeded in 0 usecs
>>> [  997.723870] [drm] ib test on ring 5 succeeded
>>> [  997.724326] [drm] Radeon Display Connectors
>>> [  997.724332] [drm] Connector 0:
>>> [  997.724335] [drm]   VGA-1
>>> [  

Re: [Xen-devel] Success with pv guest and ATI Radeon HD4550

2015-12-08 Thread Andrew Cooper
On 08/12/15 14:37, Geoffrey McRae wrote:
> Hi All,
>
> This is just a heads up on the steps involved in getting a HD4550
> working with the ATI driver as a pv guest on a Dom0 with no IOMMU
> support. The main issue with making this work was providing a way for
> the guest to read the vga bios.
>
> [2.127078] [drm] Initialized drm 1.1.0 20060810
> [2.140666] snd_hda_intel :00:00.1: Xen PCI mapped GSI19 to IRQ51
> [2.140950] snd_hda_intel :00:00.1: Handle VGA-switcheroo audio
> client
> [2.143196] [drm] radeon kernel modesetting enabled.
> [2.143856] radeon :00:00.0: Xen PCI mapped GSI18 to IRQ53
> [2.144583] [drm] initializing kernel modesetting (RV710
> 0x1002:0x9540 0x1043:0x0298).
> [2.144608] [drm] register mmio base: 0xFBDF
> [2.144612] [drm] register mmio size: 65536
> [2.144693] radeon :00:00.0: Invalid ROM contents
> [2.144703] radeon :00:00.0: Invalid ROM contents
> [2.144707] [drm:radeon_get_bios] *ERROR* Unable to locate a BIOS ROM
> [2.144712] radeon :00:00.0: Fatal error during GPU init
> [2.144717] [drm] radeon: finishing device.
> [2.144720] [TTM] Memory type 2 has not been initialized
>
> To resolve this I dumped the BIOS on dom0 to a file and copied it into
> the guest, then patched radeon_bios.c to provide a means to load it
> from userspace with the following result.
>
>
> [  997.220370] [drm] radeon kernel modesetting enabled.
> [  997.220743] xen:events: xen_bind_pirq_gsi_to_irq: returning irq 53
> for gsi 18
> [  997.220753] radeon :00:00.0: Xen PCI mapped GSI18 to IRQ53
> [  997.221304] [drm] initializing kernel modesetting (RV710
> 0x1002:0x9540 0x1043:0x0298).
> [  997.221329] [drm] register mmio base: 0xFBDF
> [  997.221333] [drm] register mmio size: 65536
> [  997.222605] radeon :00:00.0: firmware: direct-loading firmware
> radeon.bios
> [  997.222652] ATOM BIOS: 9540.11.17.0.18.AS02
> [  997.222691] radeon :00:00.0: VRAM: 512M 0x -
> 0x1FFF (512M used)
> [  997.222702] radeon :00:00.0: GTT: 1024M 0x2000 -
> 0x5FFF
> [  997.222708] Failed to add WC MTRR for
> [d000-dfff]; performance may suffer.
> [  997.222713] [drm] Detected VRAM RAM=512M, BAR=256M
> [  997.222717] [drm] RAM width 64bits DDR
> [  997.222815] [TTM] Zone  kernel: Available graphics memory: 509996 kiB
> [  997.222821] [TTM] Initializing pool allocator
> [  997.222829] [TTM] Initializing DMA pool allocator
> [  997.222862] [drm] radeon: 512M of VRAM memory ready
> [  997.222866] [drm] radeon: 1024M of GTT memory ready.
> [  997.222884] [drm] Loading RV710 Microcode
> [  997.231622] radeon :00:00.0: firmware: direct-loading firmware
> radeon/RV710_pfp.bin
> [  997.249253] radeon :00:00.0: firmware: direct-loading firmware
> radeon/RV710_me.bin
> [  997.272966] radeon :00:00.0: firmware: direct-loading firmware
> radeon/R700_rlc.bin
> [  997.290901] radeon :00:00.0: firmware: direct-loading firmware
> radeon/RV710_smc.bin
> [  997.290915] [drm] Internal thermal controller without fan control
> [  997.291866] [drm] radeon: dpm initialized
> [  997.306236] radeon :00:00.0: firmware: direct-loading firmware
> radeon/RV710_uvd.bin
> [  997.306409] [drm] GART: num cpu pages 262144, num gpu pages 262144
> [  997.320178] [drm] PCIE GART of 1024M enabled (table at
> 0x0025D000).
> [  997.320240] radeon :00:00.0: WB enabled
> [  997.320246] radeon :00:00.0: fence driver on ring 0 use gpu
> addr 0x2c00 and cpu addr 0x88003c79cc00
> [  997.320253] radeon :00:00.0: fence driver on ring 3 use gpu
> addr 0x2c0c and cpu addr 0x88003c79cc0c
> [  997.323053] radeon :00:00.0: fence driver on ring 5 use gpu
> addr 0x0005c598 and cpu addr 0xc931c598
> [  997.323060] [drm] Supports vblank timestamp caching Rev 2
> (21.10.2013).
> [  997.323063] [drm] Driver supports precise vblank timestamp query.
> [  997.323067] radeon :00:00.0: radeon: MSI limited to 32-bit
> [  997.323285] radeon :00:00.0: radeon: using MSI.
> [  997.323322] [drm] radeon: irq initialized.
> [  997.369642] [drm] ring test on 0 succeeded in 1 usecs
> [  997.369651] [drm] ring test on 3 succeeded in 2 usecs
> [  997.564145] [drm] ring test on 5 succeeded in 1 usecs
> [  997.564153] [drm] UVD initialized successfully.
> [  997.564580] [drm] ib test on ring 0 succeeded in 0 usecs
> [  997.564614] [drm] ib test on ring 3 succeeded in 0 usecs
> [  997.723870] [drm] ib test on ring 5 succeeded
> [  997.724326] [drm] Radeon Display Connectors
> [  997.724332] [drm] Connector 0:
> [  997.724335] [drm]   VGA-1
> [  997.724338] [drm]   DDC: 0x7e40 0x7e40 0x7e44 0x7e44 0x7e48 0x7e48
> 0x7e4c 0x7e4c
> [  997.724342] [drm]   Encoders:
> [  997.724345] [drm] CRT2: INTERNAL_KLDSCP_DAC2
> [  997.724348] [drm] Connector 1:
> [  997.724350] [drm]   HDMI-A-1
> [  997.724353] [drm]   HPD1
> [  997.724355] 

[Xen-devel] Success with pv guest and ATI Radeon HD4550

2015-12-08 Thread Geoffrey McRae

Hi All,

This is just a heads up on the steps involved in getting a HD4550 
working with the ATI driver as a pv guest on a Dom0 with no IOMMU 
support. The main issue with making this work was providing a way for 
the guest to read the vga bios.


[2.127078] [drm] Initialized drm 1.1.0 20060810
[2.140666] snd_hda_intel :00:00.1: Xen PCI mapped GSI19 to IRQ51
[2.140950] snd_hda_intel :00:00.1: Handle VGA-switcheroo audio 
client

[2.143196] [drm] radeon kernel modesetting enabled.
[2.143856] radeon :00:00.0: Xen PCI mapped GSI18 to IRQ53
[2.144583] [drm] initializing kernel modesetting (RV710 
0x1002:0x9540 0x1043:0x0298).

[2.144608] [drm] register mmio base: 0xFBDF
[2.144612] [drm] register mmio size: 65536
[2.144693] radeon :00:00.0: Invalid ROM contents
[2.144703] radeon :00:00.0: Invalid ROM contents
[2.144707] [drm:radeon_get_bios] *ERROR* Unable to locate a BIOS ROM
[2.144712] radeon :00:00.0: Fatal error during GPU init
[2.144717] [drm] radeon: finishing device.
[2.144720] [TTM] Memory type 2 has not been initialized

To resolve this I dumped the BIOS on dom0 to a file and copied it into 
the guest, then patched radeon_bios.c to provide a means to load it from 
userspace with the following result.



[  997.220370] [drm] radeon kernel modesetting enabled.
[  997.220743] xen:events: xen_bind_pirq_gsi_to_irq: returning irq 53 
for gsi 18

[  997.220753] radeon :00:00.0: Xen PCI mapped GSI18 to IRQ53
[  997.221304] [drm] initializing kernel modesetting (RV710 
0x1002:0x9540 0x1043:0x0298).

[  997.221329] [drm] register mmio base: 0xFBDF
[  997.221333] [drm] register mmio size: 65536
[  997.222605] radeon :00:00.0: firmware: direct-loading firmware 
radeon.bios

[  997.222652] ATOM BIOS: 9540.11.17.0.18.AS02
[  997.222691] radeon :00:00.0: VRAM: 512M 0x - 
0x1FFF (512M used)
[  997.222702] radeon :00:00.0: GTT: 1024M 0x2000 - 
0x5FFF
[  997.222708] Failed to add WC MTRR for 
[d000-dfff]; performance may suffer.

[  997.222713] [drm] Detected VRAM RAM=512M, BAR=256M
[  997.222717] [drm] RAM width 64bits DDR
[  997.222815] [TTM] Zone  kernel: Available graphics memory: 509996 kiB
[  997.222821] [TTM] Initializing pool allocator
[  997.222829] [TTM] Initializing DMA pool allocator
[  997.222862] [drm] radeon: 512M of VRAM memory ready
[  997.222866] [drm] radeon: 1024M of GTT memory ready.
[  997.222884] [drm] Loading RV710 Microcode
[  997.231622] radeon :00:00.0: firmware: direct-loading firmware 
radeon/RV710_pfp.bin
[  997.249253] radeon :00:00.0: firmware: direct-loading firmware 
radeon/RV710_me.bin
[  997.272966] radeon :00:00.0: firmware: direct-loading firmware 
radeon/R700_rlc.bin
[  997.290901] radeon :00:00.0: firmware: direct-loading firmware 
radeon/RV710_smc.bin

[  997.290915] [drm] Internal thermal controller without fan control
[  997.291866] [drm] radeon: dpm initialized
[  997.306236] radeon :00:00.0: firmware: direct-loading firmware 
radeon/RV710_uvd.bin

[  997.306409] [drm] GART: num cpu pages 262144, num gpu pages 262144
[  997.320178] [drm] PCIE GART of 1024M enabled (table at 
0x0025D000).

[  997.320240] radeon :00:00.0: WB enabled
[  997.320246] radeon :00:00.0: fence driver on ring 0 use gpu addr 
0x2c00 and cpu addr 0x88003c79cc00
[  997.320253] radeon :00:00.0: fence driver on ring 3 use gpu addr 
0x2c0c and cpu addr 0x88003c79cc0c
[  997.323053] radeon :00:00.0: fence driver on ring 5 use gpu addr 
0x0005c598 and cpu addr 0xc931c598

[  997.323060] [drm] Supports vblank timestamp caching Rev 2 (21.10.2013).
[  997.323063] [drm] Driver supports precise vblank timestamp query.
[  997.323067] radeon :00:00.0: radeon: MSI limited to 32-bit
[  997.323285] radeon :00:00.0: radeon: using MSI.
[  997.323322] [drm] radeon: irq initialized.
[  997.369642] [drm] ring test on 0 succeeded in 1 usecs
[  997.369651] [drm] ring test on 3 succeeded in 2 usecs
[  997.564145] [drm] ring test on 5 succeeded in 1 usecs
[  997.564153] [drm] UVD initialized successfully.
[  997.564580] [drm] ib test on ring 0 succeeded in 0 usecs
[  997.564614] [drm] ib test on ring 3 succeeded in 0 usecs
[  997.723870] [drm] ib test on ring 5 succeeded
[  997.724326] [drm] Radeon Display Connectors
[  997.724332] [drm] Connector 0:
[  997.724335] [drm]   VGA-1
[  997.724338] [drm]   DDC: 0x7e40 0x7e40 0x7e44 0x7e44 0x7e48 0x7e48 
0x7e4c 0x7e4c

[  997.724342] [drm]   Encoders:
[  997.724345] [drm] CRT2: INTERNAL_KLDSCP_DAC2
[  997.724348] [drm] Connector 1:
[  997.724350] [drm]   HDMI-A-1
[  997.724353] [drm]   HPD1
[  997.724355] [drm]   DDC: 0x7e50 0x7e50 0x7e54 0x7e54 0x7e58 0x7e58 
0x7e5c 0x7e5c

[  997.724359] [drm]   Encoders:
[  997.724362] [drm] DFP1: INTERNAL_UNIPHY
[  997.724365] [drm] Connector 2:
[  997.724367]