svn commit: r346687 - head/sys/compat/linuxkpi/common/src

Konstantin Belousov kostikbel at gmail.com
Thu Apr 25 18:43:10 UTC 2019


On Thu, Apr 25, 2019 at 06:13:56PM +0000, Tycho Nightingale wrote:
> Author: tychon
> Date: Thu Apr 25 18:13:55 2019
> New Revision: 346687
> URL: https://svnweb.freebsd.org/changeset/base/346687
> 
> Log:
>   LinuxKPI buildfix for ppc64 after r346645.
>   
>   Proposed by:	hselasky
>   Sponsored by:	Dell EMC Isilon
> 
> Modified:
>   head/sys/compat/linuxkpi/common/src/linux_pci.c
> 
> Modified: head/sys/compat/linuxkpi/common/src/linux_pci.c
> ==============================================================================
> --- head/sys/compat/linuxkpi/common/src/linux_pci.c	Thu Apr 25 17:28:36 2019	(r346686)
> +++ head/sys/compat/linuxkpi/common/src/linux_pci.c	Thu Apr 25 18:13:55 2019	(r346687)
> @@ -137,9 +137,9 @@ linux_dma_tag_init(struct device *dev, u64 dma_mask)
>  	    dma_mask,			/* lowaddr */
>  	    BUS_SPACE_MAXADDR,		/* highaddr */
>  	    NULL, NULL,			/* filtfunc, filtfuncarg */
> -	    BUS_SPACE_MAXADDR,		/* maxsize */
> +	    BUS_SPACE_MAXSIZE,		/* maxsize */
>  	    1,				/* nsegments */
> -	    BUS_SPACE_MAXADDR,		/* maxsegsz */
> +	    BUS_SPACE_MAXSIZE,		/* maxsegsz */
>  	    0,				/* flags */
>  	    NULL, NULL,			/* lockfunc, lockfuncarg */
>  	    &priv->dmat);

It seems that amd64 BUS_SPACE_MAXSIZE is 4G, I do not know why.
Either we should fix that, or the following fix is more appropriate.
i386 and ppc both have PAE-like configs where maxaddr is 64bit but
maxsize is 32bit.

diff --git a/sys/compat/linuxkpi/common/src/linux_pci.c b/sys/compat/linuxkpi/common/src/linux_pci.c
index 4e93827e2e9..ed0d5575b05 100644
--- a/sys/compat/linuxkpi/common/src/linux_pci.c
+++ b/sys/compat/linuxkpi/common/src/linux_pci.c
@@ -137,9 +137,17 @@ linux_dma_tag_init(struct device *dev, u64 dma_mask)
 	    dma_mask,			/* lowaddr */
 	    BUS_SPACE_MAXADDR,		/* highaddr */
 	    NULL, NULL,			/* filtfunc, filtfuncarg */
+#if defined(__i386__) || defined(__powerpc__)
+	    BUS_SPACE_MAXSIZE,
+#else
 	    BUS_SPACE_MAXADDR,		/* maxsize */
+#endif
 	    1,				/* nsegments */
+#if defined(__i386__) || defined(__powerpc__)
+	    BUS_SPACE_MAXSIZE,
+#else
 	    BUS_SPACE_MAXADDR,		/* maxsegsz */
+#endif
 	    0,				/* flags */
 	    NULL, NULL,			/* lockfunc, lockfuncarg */
 	    &priv->dmat);




More information about the svn-src-head mailing list