diff mbox

parisc: pci memory bar assignment fails with 64bit kernels on dino/cujo

Message ID 20170812214418.DB60D50835D@solo.franken.de (mailing list archive)
State Accepted, archived
Headers show

Commit Message

Thomas Bogendoerfer Aug. 12, 2017, 9:36 p.m. UTC
For 64bit kernels the lmmio_space_offset of the host bridge window
isn't set correctly on systems with dino/cujo PCI host bridges.
This leads to not assigned memory bars and failing drivers, which
need to use these bars.

Signed-off-by: Thomas Bogendoerfer <tsbogend@alpha.franken.de>
---
 drivers/parisc/dino.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

Comments

Helge Deller Aug. 13, 2017, 7:56 a.m. UTC | #1
Hi Thomas,

On 12.08.2017 23:36, Thomas Bogendoerfer wrote:
> For 64bit kernels the lmmio_space_offset of the host bridge window
> isn't set correctly on systems with dino/cujo PCI host bridges.
> This leads to not assigned memory bars and failing drivers, which
> need to use these bars.
> 
> Signed-off-by: Thomas Bogendoerfer <tsbogend@alpha.franken.de>

Acked-by: Helge Deller <deller@gmx.de>

Very good finding!
Does it mean that your mach64 card will then generally not being
able to work on a 32bit kernel (due to PCI resource shortage) ?

Now, if we find the issue why the FireGL cards don't work accelerated
on the C8000 it would be great.

Helge

> ---
>  drivers/parisc/dino.c | 2 +-
>  1 file changed, 1 insertion(+), 1 deletion(-)
> 
> diff --git a/drivers/parisc/dino.c b/drivers/parisc/dino.c
> index 5c63b92..ed92c12 100644
> --- a/drivers/parisc/dino.c
> +++ b/drivers/parisc/dino.c
> @@ -956,7 +956,7 @@ static int __init dino_probe(struct parisc_device *dev)
>  
>  	dino_dev->hba.dev = dev;
>  	dino_dev->hba.base_addr = ioremap_nocache(hpa, 4096);
> -	dino_dev->hba.lmmio_space_offset = 0;	/* CPU addrs == bus addrs */
> +	dino_dev->hba.lmmio_space_offset = PCI_F_EXTEND;
>  	spin_lock_init(&dino_dev->dinosaur_pen);
>  	dino_dev->hba.iommu = ccio_get_iommu(dev);
>  
> 

--
To unsubscribe from this list: send the line "unsubscribe linux-parisc" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Thomas Bogendoerfer Aug. 13, 2017, 4:21 p.m. UTC | #2
On Sun, Aug 13, 2017 at 09:56:26AM +0200, Helge Deller wrote:
> Does it mean that your mach64 card will then generally not being
> able to work on a 32bit kernel (due to PCI resource shortage) ?

no, it works 32bit on a B180, but I only tried 64bit kernel on the
C360.

> Now, if we find the issue why the FireGL cards don't work accelerated
> on the C8000 it would be great.

that's my final goal. My next step is to see whether I could get cards
working, which are supported by drivers/video/fbdev/aty/radeon*
This driver is known to work big endian, so I don't have to wonder
about endian issues in the first place...

Thomas.
diff mbox

Patch

diff --git a/drivers/parisc/dino.c b/drivers/parisc/dino.c
index 5c63b92..ed92c12 100644
--- a/drivers/parisc/dino.c
+++ b/drivers/parisc/dino.c
@@ -956,7 +956,7 @@  static int __init dino_probe(struct parisc_device *dev)
 
 	dino_dev->hba.dev = dev;
 	dino_dev->hba.base_addr = ioremap_nocache(hpa, 4096);
-	dino_dev->hba.lmmio_space_offset = 0;	/* CPU addrs == bus addrs */
+	dino_dev->hba.lmmio_space_offset = PCI_F_EXTEND;
 	spin_lock_init(&dino_dev->dinosaur_pen);
 	dino_dev->hba.iommu = ccio_get_iommu(dev);