Patchwork [0/22] Make SVGA oriented FBs work on multi-domain PCI

login
register
mail settings
Submitter David Miller
Date Jan. 17, 2011, 4:30 a.m.
Message ID <20110116.203009.28806331.davem@davemloft.net>
Download mbox | patch
Permalink /patch/79121/
State RFC
Delegated to: David Miller
Headers show

Comments

David Miller - Jan. 17, 2011, 4:30 a.m.
From: Alex Buell <alex.buell@munted.org.uk>
Date: Wed, 12 Jan 2011 23:43:02 +0000

> Jan 12 21:53:27 sodium pci@8,700000: PCI Error, primary error type[Master Abort]
> Jan 12 21:53:27 sodium kernel: /pci@8,700pci@8,pci@8,700000: PCter Aborpci@8,700000: PCI Error, primary error type[Master Abort]
> Jan 12 21:53:27 sodium kernel: /pci@8,700000: bytemask[0080] was_block(0) space(Memory)
> Jan 12 21:53:27 sodium kernel: /pci@8,700000: PCI AFAR [00000000000a00a8]
> Jan 12 21:53:27 sodium kernel: /pci@8,700000: PCI Secondary errors [(Master Abort)]
> Jan 12 21:53:27 sodium kernel: /pci@8,700000: PCI Error, primary error type[Master Abort]

The address we're using seems right, but for some reason the device
is giving a master abort when we try to access the legacy VGA memory.

I did a little bit of research, and there is a bit in the VGA I/O
register set that needs to be set otherwise the VGA card will not
respond to video memory accesses.

Can you test to see if the following patch makes a difference?

--
To unsubscribe from this list: send the line "unsubscribe sparclinux" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
David Miller - Jan. 22, 2011, 4:11 a.m.
From: Alex Buell <alex.buell@munted.org.uk>
Date: Mon, 17 Jan 2011 13:06:48 +0000

> The module loads OK but generates the following when I run fbset -i
> -fb /dev/fb1
> 
> Jan 17 13:00:54 sodium kernel: [  369.984028] /pci@8,700000: PCI Error,
> primary error type[Master Abort]
> Jan 17 13:00:54 sodium kernel: [  369.984042] /pci@8,700000:
> bytemask[0001] was_block(0) space(Memory)
> Jan 17 13:00:54 sodium kernel: [  369.984049] /pci@8,700000: PCI AFAR
> [00000000000a0000]

Yeah, it's dying the same way as before.

I'm stumped at the moment.
--
To unsubscribe from this list: send the line "unsubscribe sparclinux" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Alex Buell - Jan. 22, 2011, 10:55 a.m.
On Fri, 2011-01-21 at 20:11 -0800, David Miller wrote:

> > [00000000000a0000]
> 
> Yeah, it's dying the same way as before.
> 
> I'm stumped at the moment.

I just spotted something. Looking at the above address, it seems to be
0xA0000, same as the high address for accessing VGA memory in a PC.
Perhaps it's still trying to access that whereas on a SUN it may need
remapping to the correct location?

Patch

diff --git a/drivers/video/s3fb.c b/drivers/video/s3fb.c
index 4b8f215..00152f6 100644
--- a/drivers/video/s3fb.c
+++ b/drivers/video/s3fb.c
@@ -1053,6 +1053,13 @@  static int __devinit s3_pci_probe(struct pci_dev *dev, const struct pci_device_i
 	vga_wcrt(par->state.vgabase, 0x38, cr38);
 	vga_wcrt(par->state.vgabase, 0x39, cr39);
 
+	/* Ensure that the card will respond to legacy VGA memory
+	 * accesses.
+	 */
+	regval = vga_r(par->state.vgabase, VGA_MIS_R);
+	regval |= VGA_MIS_ENB_MEM_ACCESS;
+	vga_w(par->state.vgabase, VGA_MIS_W, regval);
+
 	strcpy(info->fix.id, s3_names [par->chip]);
 	info->fix.mmio_start = 0;
 	info->fix.mmio_len = 0;