Fwd: git: 3473f2832284 - main - Switch the arm64 VM_MEMATTR_DEVICE to nGnRE

From: Andrew Turner <andrew_at_fubar.geek.nz>
Date: Thu, 16 Mar 2023 16:53:17 UTC
Hello,

I’ve pushed a change to relax the default device memory type on arm64. This is now equivalent to the device memory type used on arm.

Because of this I expect most devices to just work, however if you are seeing strange issues you can set kern.force_nonposted=1 in loader.conf to revert to the previous memory type globally, or hint.<device>.<unit>.force_nonposted=1 to disable it for a specific device. For example to disable it for xhci0 you would use hint.xhci.0.force_nonposted=1.

If you do find this fixes an issue please report it so we can fix the driver.

Andrew

> Begin forwarded message:
> 
> From: Andrew Turner <andrew@FreeBSD.org>
> Subject: git: 3473f2832284 - main - Switch the arm64 VM_MEMATTR_DEVICE to nGnRE
> Date: 16 March 2023 at 16:46:11 GMT
> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-main@FreeBSD.org
> 
> The branch main has been updated by andrew:
> 
> URL: https://cgit.FreeBSD.org/src/commit/?id=3473f283228401ba585044ac6dea8c8eb27237a5
> 
> commit 3473f283228401ba585044ac6dea8c8eb27237a5
> Author:     Andrew Turner <andrew@FreeBSD.org>
> AuthorDate: 2023-03-16 15:36:06 +0000
> Commit:     Andrew Turner <andrew@FreeBSD.org>
> CommitDate: 2023-03-16 16:45:42 +0000
> 
>    Switch the arm64 VM_MEMATTR_DEVICE to nGnRE
> 
>    Move device memory to a weaker type. The new device memory type allows
>    the system to acknowledge a write to a device before the write has
>    completed. This is inline with VM_MEMATTR_DEVICE on armv6/armv7.
> 
>    Sponsored by:   Arm Ltd
>    Differential Revision:  https://reviews.freebsd.org/D38945
> ---
> sys/arm64/include/vm.h | 6 +-----
> 1 file changed, 1 insertion(+), 5 deletions(-)
> 
> diff --git a/sys/arm64/include/vm.h b/sys/arm64/include/vm.h
> index e479aab52e26..a8c1ea97b513 100644
> --- a/sys/arm64/include/vm.h
> +++ b/sys/arm64/include/vm.h
> @@ -36,11 +36,7 @@
> #define	VM_MEMATTR_WRITE_THROUGH	3
> #define	VM_MEMATTR_DEVICE_nGnRE		4
> 
> -/*
> - * VM_MEMATTR_DEVICE can be changed to VM_MEMATTR_DEVICE_nGnRE when
> - * the PCI drivers use VM_MEMATTR_DEVICE_NP for their config space.
> - */
> -#define	VM_MEMATTR_DEVICE		VM_MEMATTR_DEVICE_nGnRnE
> +#define	VM_MEMATTR_DEVICE		VM_MEMATTR_DEVICE_nGnRE
> #define	VM_MEMATTR_DEVICE_NP		VM_MEMATTR_DEVICE_nGnRnE
> 
> #ifdef _KERNEL
>