| 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
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
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;