@@ -14,6 +14,10 @@ PAT allows for different types of memory attributes. The most commonly used
14
14
ones that will be supported at this time are Write-back, Uncached,
15
15
Write-combined and Uncached Minus.
16
16
17
+
18
+ PAT APIs
19
+ --------
20
+
17
21
There are many different APIs in the kernel that allows setting of memory
18
22
attributes at the page level. In order to avoid aliasing, these interfaces
19
23
should be used thoughtfully. Below is a table of interfaces available,
@@ -26,38 +30,38 @@ address range to avoid any aliasing.
26
30
API | RAM | ACPI,... | Reserved/Holes |
27
31
-----------------------|----------|------------|------------------|
28
32
| | | |
29
- ioremap | -- | UC | UC |
33
+ ioremap | -- | UC- | UC- |
30
34
| | | |
31
35
ioremap_cache | -- | WB | WB |
32
36
| | | |
33
- ioremap_nocache | -- | UC | UC |
37
+ ioremap_nocache | -- | UC- | UC- |
34
38
| | | |
35
39
ioremap_wc | -- | -- | WC |
36
40
| | | |
37
- set_memory_uc | UC | -- | -- |
41
+ set_memory_uc | UC- | -- | -- |
38
42
set_memory_wb | | | |
39
43
| | | |
40
44
set_memory_wc | WC | -- | -- |
41
45
set_memory_wb | | | |
42
46
| | | |
43
- pci sysfs resource | -- | -- | UC |
47
+ pci sysfs resource | -- | -- | UC- |
44
48
| | | |
45
49
pci sysfs resource_wc | -- | -- | WC |
46
50
is IORESOURCE_PREFETCH| | | |
47
51
| | | |
48
- pci proc | -- | -- | UC |
52
+ pci proc | -- | -- | UC- |
49
53
!PCIIOC_WRITE_COMBINE | | | |
50
54
| | | |
51
55
pci proc | -- | -- | WC |
52
56
PCIIOC_WRITE_COMBINE | | | |
53
57
| | | |
54
- /dev/mem | -- | UC | UC |
58
+ /dev/mem | -- | WB/WC/UC- | WB/WC/UC- |
55
59
read-write | | | |
56
60
| | | |
57
- /dev/mem | -- | UC | UC |
61
+ /dev/mem | -- | UC- | UC- |
58
62
mmap SYNC flag | | | |
59
63
| | | |
60
- /dev/mem | -- | WB/WC/UC | WB/WC/UC |
64
+ /dev/mem | -- | WB/WC/UC- | WB/WC/UC- |
61
65
mmap !SYNC flag | |(from exist-| (from exist- |
62
66
and | | ing alias)| ing alias) |
63
67
any alias to this area| | | |
@@ -68,7 +72,7 @@ pci proc | -- | -- | WC |
68
72
and | | | |
69
73
MTRR says WB | | | |
70
74
| | | |
71
- /dev/mem | -- | -- | UC_MINUS |
75
+ /dev/mem | -- | -- | UC- |
72
76
mmap !SYNC flag | | | |
73
77
no alias to this area | | | |
74
78
and | | | |
@@ -98,3 +102,35 @@ types.
98
102
99
103
Drivers should use set_memory_[uc|wc] to set access type for RAM ranges.
100
104
105
+
106
+ PAT debugging
107
+ -------------
108
+
109
+ With CONFIG_DEBUG_FS enabled, PAT memtype list can be examined by
110
+
111
+ # mount -t debugfs debugfs /sys/kernel/debug
112
+ # cat /sys/kernel/debug/x86/pat_memtype_list
113
+ PAT memtype list:
114
+ uncached-minus @ 0x7fadf000-0x7fae0000
115
+ uncached-minus @ 0x7fb19000-0x7fb1a000
116
+ uncached-minus @ 0x7fb1a000-0x7fb1b000
117
+ uncached-minus @ 0x7fb1b000-0x7fb1c000
118
+ uncached-minus @ 0x7fb1c000-0x7fb1d000
119
+ uncached-minus @ 0x7fb1d000-0x7fb1e000
120
+ uncached-minus @ 0x7fb1e000-0x7fb25000
121
+ uncached-minus @ 0x7fb25000-0x7fb26000
122
+ uncached-minus @ 0x7fb26000-0x7fb27000
123
+ uncached-minus @ 0x7fb27000-0x7fb28000
124
+ uncached-minus @ 0x7fb28000-0x7fb2e000
125
+ uncached-minus @ 0x7fb2e000-0x7fb2f000
126
+ uncached-minus @ 0x7fb2f000-0x7fb30000
127
+ uncached-minus @ 0x7fb31000-0x7fb32000
128
+ uncached-minus @ 0x80000000-0x90000000
129
+
130
+ This list shows physical address ranges and various PAT settings used to
131
+ access those physical address ranges.
132
+
133
+ Another, more verbose way of getting PAT related debug messages is with
134
+ "debugpat" boot parameter. With this parameter, various debug messages are
135
+ printed to dmesg log.
136
+
0 commit comments