![Nicolas Pitre](/assets/img/avatar_default.png)
The choice is between looping over the physical range and performing single cache line operations, or to map highmem pages somewhere, as cache range ops are possible only on virtual addresses. Because L2 range ops are much faster, we go with the later by factoring the physical-to-virtual address conversion and use a fixmap entry for it in the HIGHMEM case. Possible future optimizations to avoid the pte setup cost: - do the pte setup for highmem pages only - determine a threshold for doing a line-by-line processing on physical addresses when the range is small Signed-off-by: Nicolas Pitre <nico@marvell.com>
26 lines
357 B
C
26 lines
357 B
C
#ifndef __ARM_KMAP_TYPES_H
|
|
#define __ARM_KMAP_TYPES_H
|
|
|
|
/*
|
|
* This is the "bare minimum". AIO seems to require this.
|
|
*/
|
|
enum km_type {
|
|
KM_BOUNCE_READ,
|
|
KM_SKB_SUNRPC_DATA,
|
|
KM_SKB_DATA_SOFTIRQ,
|
|
KM_USER0,
|
|
KM_USER1,
|
|
KM_BIO_SRC_IRQ,
|
|
KM_BIO_DST_IRQ,
|
|
KM_PTE0,
|
|
KM_PTE1,
|
|
KM_IRQ0,
|
|
KM_IRQ1,
|
|
KM_SOFTIRQ0,
|
|
KM_SOFTIRQ1,
|
|
KM_L2_CACHE,
|
|
KM_TYPE_NR
|
|
};
|
|
|
|
#endif
|