mirror of
https://github.com/freebsd/freebsd-src
synced 2024-10-15 21:05:08 +00:00
linuxkpi: Make arch_io_*_memtype_wc amd64-only
Linux only implements these functions on x86. They return 0 on other architectures. The FreeBSD implementation calls PHYS_TO_DMAP but this panics on i386 because it does not have a direct map so return 0 on i386 as well for now. These functions are only used by graphics/drm-*-kmod to mark the VRAM aperture write-combining but this is also accomplished by a call to vm_phys_fictitious_reg_range so this change is sufficient to fix drm-*-kmod on i386 for FreeBSD 14.1. Reviewed by: kib MFC after: 3 days Differential Revision: https://reviews.freebsd.org/D45125
This commit is contained in:
parent
22b3e7898e
commit
2ae0f5a4d0
|
@ -541,30 +541,29 @@ void lkpi_arch_phys_wc_del(int);
|
|||
#define arch_phys_wc_index(x) \
|
||||
(((x) < __MTRR_ID_BASE) ? -1 : ((x) - __MTRR_ID_BASE))
|
||||
|
||||
#if defined(__amd64__) || defined(__i386__) || defined(__aarch64__) || defined(__powerpc__) || defined(__riscv)
|
||||
static inline int
|
||||
arch_io_reserve_memtype_wc(resource_size_t start, resource_size_t size)
|
||||
{
|
||||
#if defined(__amd64__)
|
||||
vm_offset_t va;
|
||||
|
||||
va = PHYS_TO_DMAP(start);
|
||||
|
||||
#ifdef VM_MEMATTR_WRITE_COMBINING
|
||||
return (-pmap_change_attr(va, size, VM_MEMATTR_WRITE_COMBINING));
|
||||
#else
|
||||
return (-pmap_change_attr(va, size, VM_MEMATTR_UNCACHEABLE));
|
||||
return (0);
|
||||
#endif
|
||||
}
|
||||
|
||||
static inline void
|
||||
arch_io_free_memtype_wc(resource_size_t start, resource_size_t size)
|
||||
{
|
||||
#if defined(__amd64__)
|
||||
vm_offset_t va;
|
||||
|
||||
va = PHYS_TO_DMAP(start);
|
||||
|
||||
pmap_change_attr(va, size, VM_MEMATTR_WRITE_BACK);
|
||||
}
|
||||
#endif
|
||||
}
|
||||
|
||||
#endif /* _LINUXKPI_LINUX_IO_H_ */
|
||||
|
|
Loading…
Reference in a new issue