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


_______________________________________________
[email protected] mailing list
https://lists.freebsd.org/mailman/listinfo/svn-src-all
To unsubscribe, send any mail to "[email protected]"

Reply via email to