ION doesn't set the cache attributes according to ION_FLAG_CACHED buffer flag

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Hi,

Mapping the buffer to user space, ION failed to set the cache attributes
according to ION_FLAG_CACHED flag on x86.

When the reserved memory (reserved by memmap= kernel boot option) or
part of it is mapped to the user space, the user space memory mapping is
always *uncachable*.

ION uses remap_pfn_range to create the mapping. On x86 arch, the actual
cache attributes may be different from the requested ones due to the PAT
implementation. When we map the PFNs one by one to some VMA, the cache
attributes are set by lookup_memtype, completely ignoring the cache
attributes of VMA. For example:
- if the requested memory region is managed by the OS (has struct page
object), the actual cache attribute is set based on struct page cache
attributes saved in its flag member
- if the memory region is not managed by the OS (there are no struct
page object), the PAT internal RBT of memory types is scanned. If RBT
defines the memory type for the requested PFN, this memory type is used,
otherwise the PFN is mapped as uncachable.

Is it x86 specific issue?

I have implemented and tested the fix for this issue, but it looks like
it should be submitted to the PAT.

Thanks,
Alexey
_______________________________________________
devel mailing list
devel@xxxxxxxxxxxxxxxxxxxxxx
http://driverdev.linuxdriverproject.org/mailman/listinfo/driverdev-devel



[Index of Archives]     [Linux Driver Backports]     [DMA Engine]     [Linux GPIO]     [Linux SPI]     [Video for Linux]     [Linux USB Devel]     [Linux Coverity]     [Linux Audio Users]     [Linux Kernel]     [Linux SCSI]     [Yosemite Backpacking]
  Powered by Linux