|
23 | 23 | static __read_mostly int print = 1;
|
24 | 24 |
|
25 | 25 | enum {
|
26 |
| - NTEST = 400, |
| 26 | + NTEST = 3 * 100, |
| 27 | + NPAGES = 100, |
27 | 28 | #ifdef CONFIG_X86_64
|
28 | 29 | LPS = (1 << PMD_SHIFT),
|
29 | 30 | #elif defined(CONFIG_X86_PAE)
|
@@ -110,6 +111,9 @@ static int print_split(struct split_state *s)
|
110 | 111 | static unsigned long addr[NTEST];
|
111 | 112 | static unsigned int len[NTEST];
|
112 | 113 |
|
| 114 | +static struct page *pages[NPAGES]; |
| 115 | +static unsigned long addrs[NPAGES]; |
| 116 | + |
113 | 117 | /* Change the global bit on random pages in the direct mapping */
|
114 | 118 | static int pageattr_test(void)
|
115 | 119 | {
|
@@ -137,7 +141,7 @@ static int pageattr_test(void)
|
137 | 141 | unsigned long pfn = prandom_u32() % max_pfn_mapped;
|
138 | 142 |
|
139 | 143 | addr[i] = (unsigned long)__va(pfn << PAGE_SHIFT);
|
140 |
| - len[i] = prandom_u32() % 100; |
| 144 | + len[i] = prandom_u32() % NPAGES; |
141 | 145 | len[i] = min_t(unsigned long, len[i], max_pfn_mapped - pfn - 1);
|
142 | 146 |
|
143 | 147 | if (len[i] == 0)
|
@@ -167,14 +171,30 @@ static int pageattr_test(void)
|
167 | 171 | break;
|
168 | 172 | }
|
169 | 173 | __set_bit(pfn + k, bm);
|
| 174 | + addrs[k] = addr[i] + k*PAGE_SIZE; |
| 175 | + pages[k] = pfn_to_page(pfn + k); |
170 | 176 | }
|
171 | 177 | if (!addr[i] || !pte || !k) {
|
172 | 178 | addr[i] = 0;
|
173 | 179 | continue;
|
174 | 180 | }
|
175 | 181 |
|
176 |
| - test_addr = addr[i]; |
177 |
| - err = change_page_attr_set(&test_addr, len[i], PAGE_CPA_TEST, 0); |
| 182 | + switch (i % 3) { |
| 183 | + case 0: |
| 184 | + test_addr = addr[i]; |
| 185 | + err = change_page_attr_set(&test_addr, len[i], PAGE_CPA_TEST, 0); |
| 186 | + break; |
| 187 | + |
| 188 | + case 1: |
| 189 | + err = change_page_attr_set(addrs, len[1], PAGE_CPA_TEST, 1); |
| 190 | + break; |
| 191 | + |
| 192 | + case 2: |
| 193 | + err = cpa_set_pages_array(pages, len[i], PAGE_CPA_TEST); |
| 194 | + break; |
| 195 | + } |
| 196 | + |
| 197 | + |
178 | 198 | if (err < 0) {
|
179 | 199 | printk(KERN_ERR "CPA %d failed %d\n", i, err);
|
180 | 200 | failed++;
|
|
0 commit comments