mirror of
https://github.com/opnsense/src.git
synced 2026-05-28 04:12:45 -04:00
linuxkpi: Fix set_memory_*
set_memory_* is currently implemented using PHYS_TO_DMAP but not all architectures have a DMAP. Looking at how this function is used the given address isn't physical but virtual so the PHYS_TO_DMAP call can simply be removed. Also cast numpages before shifting it to avoid overflow. Reviewed by: kib, markj MFC after: 3 days Differential Revision: https://reviews.freebsd.org/D45057 (cherry picked from commit 7206f7c619912bdd4d54dd539824733eae50c3a9)
This commit is contained in:
parent
d8ccaa995f
commit
147ea7d409
1 changed files with 6 additions and 15 deletions
|
|
@ -34,26 +34,20 @@
|
|||
static inline int
|
||||
set_memory_uc(unsigned long addr, int numpages)
|
||||
{
|
||||
vm_offset_t va;
|
||||
vm_size_t len;
|
||||
|
||||
va = PHYS_TO_DMAP(addr);
|
||||
len = numpages << PAGE_SHIFT;
|
||||
|
||||
return (-pmap_change_attr(va, len, VM_MEMATTR_UNCACHEABLE));
|
||||
len = (vm_size_t)numpages << PAGE_SHIFT;
|
||||
return (-pmap_change_attr(addr, len, VM_MEMATTR_UNCACHEABLE));
|
||||
}
|
||||
|
||||
static inline int
|
||||
set_memory_wc(unsigned long addr, int numpages)
|
||||
{
|
||||
#ifdef VM_MEMATTR_WRITE_COMBINING
|
||||
vm_offset_t va;
|
||||
vm_size_t len;
|
||||
|
||||
va = PHYS_TO_DMAP(addr);
|
||||
len = numpages << PAGE_SHIFT;
|
||||
|
||||
return (-pmap_change_attr(va, len, VM_MEMATTR_WRITE_COMBINING));
|
||||
len = (vm_size_t)numpages << PAGE_SHIFT;
|
||||
return (-pmap_change_attr(addr, len, VM_MEMATTR_WRITE_COMBINING));
|
||||
#else
|
||||
return (set_memory_uc(addr, numpages));
|
||||
#endif
|
||||
|
|
@ -62,13 +56,10 @@ set_memory_wc(unsigned long addr, int numpages)
|
|||
static inline int
|
||||
set_memory_wb(unsigned long addr, int numpages)
|
||||
{
|
||||
vm_offset_t va;
|
||||
vm_size_t len;
|
||||
|
||||
va = PHYS_TO_DMAP(addr);
|
||||
len = numpages << PAGE_SHIFT;
|
||||
|
||||
return (-pmap_change_attr(va, len, VM_MEMATTR_WRITE_BACK));
|
||||
len = (vm_size_t)numpages << PAGE_SHIFT;
|
||||
return (-pmap_change_attr(addr, len, VM_MEMATTR_WRITE_BACK));
|
||||
}
|
||||
|
||||
static inline int
|
||||
|
|
|
|||
Loading…
Reference in a new issue