tree:
https://github.com/sbates130272/linux-p2pmem.git remap_pages_cache
head: 6b6b28881f17f808a7440cf8e7e96802998e5c25
commit: 63564a7b18d94844d8cab40e3de1f7e9bfa96b30 [1/6] x86/mm: Thread pgprot_t through
init_memory_mapping()
config: i386-tinyconfig (attached as .config)
compiler: gcc-7 (Debian 7.4.0-13) 7.4.0
reproduce:
git checkout 63564a7b18d94844d8cab40e3de1f7e9bfa96b30
# save the attached .config to linux build tree
make ARCH=i386
If you fix the issue, kindly add following tag
Reported-by: kbuild test robot <lkp(a)intel.com>
All errors (new ones prefixed by >>):
> arch/x86/mm/init_32.c:253:1: error: conflicting types for
'kernel_physical_mapping_init'
kernel_physical_mapping_init(unsigned
long start,
^~~~~~~~~~~~~~~~~~~~~~~~~~~~
In file included from arch/x86/mm/init_32.c:56:0:
arch/x86/mm/mm_internal.h:13:15: note: previous declaration of
'kernel_physical_mapping_init' was here
unsigned long kernel_physical_mapping_init(unsigned long start,
^~~~~~~~~~~~~~~~~~~~~~~~~~~~
vim +/kernel_physical_mapping_init +253 arch/x86/mm/init_32.c
^1da177e4c3f41 arch/i386/mm/init.c Linus Torvalds 2005-04-16 246
^1da177e4c3f41 arch/i386/mm/init.c Linus Torvalds 2005-04-16 247 /*
^1da177e4c3f41 arch/i386/mm/init.c Linus Torvalds 2005-04-16 248 * This maps the
physical memory to kernel virtual address space, a total
^1da177e4c3f41 arch/i386/mm/init.c Linus Torvalds 2005-04-16 249 * of
max_low_pfn pages, by creating page tables starting from address
8550eb99821b3f arch/x86/mm/init_32.c Ingo Molnar 2008-01-30 250 * PAGE_OFFSET:
^1da177e4c3f41 arch/i386/mm/init.c Linus Torvalds 2005-04-16 251 */
e53fb04fce6d24 arch/x86/mm/init_32.c Pekka Enberg 2009-03-05 252 unsigned long
__init
e53fb04fce6d24 arch/x86/mm/init_32.c Pekka Enberg 2009-03-05 @253
kernel_physical_mapping_init(unsigned long start,
e53fb04fce6d24 arch/x86/mm/init_32.c Pekka Enberg 2009-03-05 254 unsigned
long end,
e53fb04fce6d24 arch/x86/mm/init_32.c Pekka Enberg 2009-03-05 255 unsigned
long page_size_mask)
^1da177e4c3f41 arch/i386/mm/init.c Linus Torvalds 2005-04-16 256 {
e53fb04fce6d24 arch/x86/mm/init_32.c Pekka Enberg 2009-03-05 257 int use_pse =
page_size_mask == (1<<PG_LEVEL_2M);
c1fd1b43831fa2 arch/x86/mm/init_32.c Pekka Enberg 2010-02-24 258 unsigned long
last_map_addr = end;
e53fb04fce6d24 arch/x86/mm/init_32.c Pekka Enberg 2009-03-05 259 unsigned long
start_pfn, end_pfn;
e7179853e7552b arch/x86/mm/init_32.c Pekka Enberg 2009-03-05 260 pgd_t *pgd_base
= swapper_pg_dir;
8550eb99821b3f arch/x86/mm/init_32.c Ingo Molnar 2008-01-30 261 int pgd_idx,
pmd_idx, pte_ofs;
^1da177e4c3f41 arch/i386/mm/init.c Linus Torvalds 2005-04-16 262 unsigned long
pfn;
^1da177e4c3f41 arch/i386/mm/init.c Linus Torvalds 2005-04-16 263 pgd_t *pgd;
^1da177e4c3f41 arch/i386/mm/init.c Linus Torvalds 2005-04-16 264 pmd_t *pmd;
^1da177e4c3f41 arch/i386/mm/init.c Linus Torvalds 2005-04-16 265 pte_t *pte;
a2699e477b8e6b arch/x86/mm/init_32.c Suresh Siddha 2008-09-23 266 unsigned
pages_2m, pages_4k;
a2699e477b8e6b arch/x86/mm/init_32.c Suresh Siddha 2008-09-23 267 int
mapping_iter;
a2699e477b8e6b arch/x86/mm/init_32.c Suresh Siddha 2008-09-23 268
e53fb04fce6d24 arch/x86/mm/init_32.c Pekka Enberg 2009-03-05 269 start_pfn =
start >> PAGE_SHIFT;
e53fb04fce6d24 arch/x86/mm/init_32.c Pekka Enberg 2009-03-05 270 end_pfn = end
>> PAGE_SHIFT;
e53fb04fce6d24 arch/x86/mm/init_32.c Pekka Enberg 2009-03-05 271
a2699e477b8e6b arch/x86/mm/init_32.c Suresh Siddha 2008-09-23 272 /*
a2699e477b8e6b arch/x86/mm/init_32.c Suresh Siddha 2008-09-23 273 * First
iteration will setup identity mapping using large/small pages
a2699e477b8e6b arch/x86/mm/init_32.c Suresh Siddha 2008-09-23 274 * based on
use_pse, with other attributes same as set by
a2699e477b8e6b arch/x86/mm/init_32.c Suresh Siddha 2008-09-23 275 * the early
code in head_32.S
a2699e477b8e6b arch/x86/mm/init_32.c Suresh Siddha 2008-09-23 276 *
a2699e477b8e6b arch/x86/mm/init_32.c Suresh Siddha 2008-09-23 277 * Second
iteration will setup the appropriate attributes (NX, GLOBAL..)
a2699e477b8e6b arch/x86/mm/init_32.c Suresh Siddha 2008-09-23 278 * as desired
for the kernel identity mapping.
a2699e477b8e6b arch/x86/mm/init_32.c Suresh Siddha 2008-09-23 279 *
a2699e477b8e6b arch/x86/mm/init_32.c Suresh Siddha 2008-09-23 280 * This two
pass mechanism conforms to the TLB app note which says:
a2699e477b8e6b arch/x86/mm/init_32.c Suresh Siddha 2008-09-23 281 *
a2699e477b8e6b arch/x86/mm/init_32.c Suresh Siddha 2008-09-23 282 *
"Software should not write to a paging-structure entry in a way
a2699e477b8e6b arch/x86/mm/init_32.c Suresh Siddha 2008-09-23 283 * that
would change, for any linear address, both the page size
a2699e477b8e6b arch/x86/mm/init_32.c Suresh Siddha 2008-09-23 284 * and
either the page frame or attributes."
a2699e477b8e6b arch/x86/mm/init_32.c Suresh Siddha 2008-09-23 285 */
a2699e477b8e6b arch/x86/mm/init_32.c Suresh Siddha 2008-09-23 286 mapping_iter =
1;
^1da177e4c3f41 arch/i386/mm/init.c Linus Torvalds 2005-04-16 287
16bf92261b1b6c arch/x86/mm/init_32.c Borislav Petkov 2016-03-29 288 if
(!boot_cpu_has(X86_FEATURE_PSE))
a04ad82d0bff4b arch/x86/mm/init_32.c Yinghai Lu 2008-06-29 289 use_pse = 0;
^1da177e4c3f41 arch/i386/mm/init.c Linus Torvalds 2005-04-16 290
a2699e477b8e6b arch/x86/mm/init_32.c Suresh Siddha 2008-09-23 291 repeat:
a2699e477b8e6b arch/x86/mm/init_32.c Suresh Siddha 2008-09-23 292 pages_2m =
pages_4k = 0;
a04ad82d0bff4b arch/x86/mm/init_32.c Yinghai Lu 2008-06-29 293 pfn =
start_pfn;
a04ad82d0bff4b arch/x86/mm/init_32.c Yinghai Lu 2008-06-29 294 pgd_idx =
pgd_index((pfn<<PAGE_SHIFT) + PAGE_OFFSET);
a04ad82d0bff4b arch/x86/mm/init_32.c Yinghai Lu 2008-06-29 295 pgd = pgd_base
+ pgd_idx;
^1da177e4c3f41 arch/i386/mm/init.c Linus Torvalds 2005-04-16 296 for (; pgd_idx
< PTRS_PER_PGD; pgd++, pgd_idx++) {
^1da177e4c3f41 arch/i386/mm/init.c Linus Torvalds 2005-04-16 297 pmd =
one_md_table_init(pgd);
8550eb99821b3f arch/x86/mm/init_32.c Ingo Molnar 2008-01-30 298
a04ad82d0bff4b arch/x86/mm/init_32.c Yinghai Lu 2008-06-29 299 if (pfn >=
end_pfn)
a04ad82d0bff4b arch/x86/mm/init_32.c Yinghai Lu 2008-06-29 300 continue;
a04ad82d0bff4b arch/x86/mm/init_32.c Yinghai Lu 2008-06-29 301 #ifdef
CONFIG_X86_PAE
a04ad82d0bff4b arch/x86/mm/init_32.c Yinghai Lu 2008-06-29 302 pmd_idx =
pmd_index((pfn<<PAGE_SHIFT) + PAGE_OFFSET);
a04ad82d0bff4b arch/x86/mm/init_32.c Yinghai Lu 2008-06-29 303 pmd +=
pmd_idx;
a04ad82d0bff4b arch/x86/mm/init_32.c Yinghai Lu 2008-06-29 304 #else
a04ad82d0bff4b arch/x86/mm/init_32.c Yinghai Lu 2008-06-29 305 pmd_idx = 0;
a04ad82d0bff4b arch/x86/mm/init_32.c Yinghai Lu 2008-06-29 306 #endif
a04ad82d0bff4b arch/x86/mm/init_32.c Yinghai Lu 2008-06-29 307 for (; pmd_idx
< PTRS_PER_PMD && pfn < end_pfn;
f3f20de87c03a9 arch/x86/mm/init_32.c Jeremy Fitzhardinge 2008-01-30 308 pmd++,
pmd_idx++) {
8550eb99821b3f arch/x86/mm/init_32.c Ingo Molnar 2008-01-30 309 unsigned int
addr = pfn * PAGE_SIZE + PAGE_OFFSET;
^1da177e4c3f41 arch/i386/mm/init.c Linus Torvalds 2005-04-16 310
8550eb99821b3f arch/x86/mm/init_32.c Ingo Molnar 2008-01-30 311 /*
8550eb99821b3f arch/x86/mm/init_32.c Ingo Molnar 2008-01-30 312 * Map with
big pages if possible, otherwise
8550eb99821b3f arch/x86/mm/init_32.c Ingo Molnar 2008-01-30 313 * create
normal page tables:
8550eb99821b3f arch/x86/mm/init_32.c Ingo Molnar 2008-01-30 314 */
a04ad82d0bff4b arch/x86/mm/init_32.c Yinghai Lu 2008-06-29 315 if (use_pse)
{
8550eb99821b3f arch/x86/mm/init_32.c Ingo Molnar 2008-01-30 316 unsigned int
addr2;
f3f20de87c03a9 arch/x86/mm/init_32.c Jeremy Fitzhardinge 2008-01-30 317 pgprot_t
prot = PAGE_KERNEL_LARGE;
a2699e477b8e6b arch/x86/mm/init_32.c Suresh Siddha 2008-09-23 318 /*
a2699e477b8e6b arch/x86/mm/init_32.c Suresh Siddha 2008-09-23 319 * first
pass will use the same initial
a2699e477b8e6b arch/x86/mm/init_32.c Suresh Siddha 2008-09-23 320 * identity
mapping attribute + _PAGE_PSE.
a2699e477b8e6b arch/x86/mm/init_32.c Suresh Siddha 2008-09-23 321 */
a2699e477b8e6b arch/x86/mm/init_32.c Suresh Siddha 2008-09-23 322 pgprot_t
init_prot =
a2699e477b8e6b arch/x86/mm/init_32.c Suresh Siddha 2008-09-23 323
__pgprot(PTE_IDENT_ATTR |
a2699e477b8e6b arch/x86/mm/init_32.c Suresh Siddha 2008-09-23 324
_PAGE_PSE);
f3f20de87c03a9 arch/x86/mm/init_32.c Jeremy Fitzhardinge 2008-01-30 325
960ddb4fe7832b arch/x86/mm/init_32.c Yinghai Lu 2012-11-16 326 pfn &=
PMD_MASK >> PAGE_SHIFT;
8550eb99821b3f arch/x86/mm/init_32.c Ingo Molnar 2008-01-30 327 addr2 = (pfn
+ PTRS_PER_PTE-1) * PAGE_SIZE +
f3f20de87c03a9 arch/x86/mm/init_32.c Jeremy Fitzhardinge 2008-01-30 328 PAGE_OFFSET
+ PAGE_SIZE-1;
f3f20de87c03a9 arch/x86/mm/init_32.c Jeremy Fitzhardinge 2008-01-30 329
8550eb99821b3f arch/x86/mm/init_32.c Ingo Molnar 2008-01-30 330 if
(is_kernel_text(addr) ||
8550eb99821b3f arch/x86/mm/init_32.c Ingo Molnar 2008-01-30 331
is_kernel_text(addr2))
f3f20de87c03a9 arch/x86/mm/init_32.c Jeremy Fitzhardinge 2008-01-30 332 prot =
PAGE_KERNEL_LARGE_EXEC;
f3f20de87c03a9 arch/x86/mm/init_32.c Jeremy Fitzhardinge 2008-01-30 333
ce0c0e50f94e8c arch/x86/mm/init_32.c Andi Kleen 2008-05-02 334 pages_2m++;
a2699e477b8e6b arch/x86/mm/init_32.c Suresh Siddha 2008-09-23 335 if
(mapping_iter == 1)
a2699e477b8e6b arch/x86/mm/init_32.c Suresh Siddha 2008-09-23 336
set_pmd(pmd, pfn_pmd(pfn, init_prot));
a2699e477b8e6b arch/x86/mm/init_32.c Suresh Siddha 2008-09-23 337 else
f3f20de87c03a9 arch/x86/mm/init_32.c Jeremy Fitzhardinge 2008-01-30 338
set_pmd(pmd, pfn_pmd(pfn, prot));
b239fb2501117b arch/i386/mm/init.c Jeremy Fitzhardinge 2007-05-02 339
^1da177e4c3f41 arch/i386/mm/init.c Linus Torvalds 2005-04-16 340 pfn +=
PTRS_PER_PTE;
8550eb99821b3f arch/x86/mm/init_32.c Ingo Molnar 2008-01-30 341 continue;
8550eb99821b3f arch/x86/mm/init_32.c Ingo Molnar 2008-01-30 342 }
^1da177e4c3f41 arch/i386/mm/init.c Linus Torvalds 2005-04-16 343 pte =
one_page_table_init(pmd);
^1da177e4c3f41 arch/i386/mm/init.c Linus Torvalds 2005-04-16 344
a04ad82d0bff4b arch/x86/mm/init_32.c Yinghai Lu 2008-06-29 345 pte_ofs =
pte_index((pfn<<PAGE_SHIFT) + PAGE_OFFSET);
a04ad82d0bff4b arch/x86/mm/init_32.c Yinghai Lu 2008-06-29 346 pte +=
pte_ofs;
a04ad82d0bff4b arch/x86/mm/init_32.c Yinghai Lu 2008-06-29 347 for (;
pte_ofs < PTRS_PER_PTE && pfn < end_pfn;
8550eb99821b3f arch/x86/mm/init_32.c Ingo Molnar 2008-01-30 348 pte++,
pfn++, pte_ofs++, addr += PAGE_SIZE) {
f3f20de87c03a9 arch/x86/mm/init_32.c Jeremy Fitzhardinge 2008-01-30 349 pgprot_t
prot = PAGE_KERNEL;
a2699e477b8e6b arch/x86/mm/init_32.c Suresh Siddha 2008-09-23 350 /*
a2699e477b8e6b arch/x86/mm/init_32.c Suresh Siddha 2008-09-23 351 * first
pass will use the same initial
a2699e477b8e6b arch/x86/mm/init_32.c Suresh Siddha 2008-09-23 352 * identity
mapping attribute.
a2699e477b8e6b arch/x86/mm/init_32.c Suresh Siddha 2008-09-23 353 */
a2699e477b8e6b arch/x86/mm/init_32.c Suresh Siddha 2008-09-23 354 pgprot_t
init_prot = __pgprot(PTE_IDENT_ATTR);
f3f20de87c03a9 arch/x86/mm/init_32.c Jeremy Fitzhardinge 2008-01-30 355
8550eb99821b3f arch/x86/mm/init_32.c Ingo Molnar 2008-01-30 356 if
(is_kernel_text(addr))
f3f20de87c03a9 arch/x86/mm/init_32.c Jeremy Fitzhardinge 2008-01-30 357 prot =
PAGE_KERNEL_EXEC;
f3f20de87c03a9 arch/x86/mm/init_32.c Jeremy Fitzhardinge 2008-01-30 358
ce0c0e50f94e8c arch/x86/mm/init_32.c Andi Kleen 2008-05-02 359 pages_4k++;
c1fd1b43831fa2 arch/x86/mm/init_32.c Pekka Enberg 2010-02-24 360 if
(mapping_iter == 1) {
a2699e477b8e6b arch/x86/mm/init_32.c Suresh Siddha 2008-09-23 361
set_pte(pte, pfn_pte(pfn, init_prot));
c1fd1b43831fa2 arch/x86/mm/init_32.c Pekka Enberg 2010-02-24 362
last_map_addr = (pfn << PAGE_SHIFT) + PAGE_SIZE;
c1fd1b43831fa2 arch/x86/mm/init_32.c Pekka Enberg 2010-02-24 363 } else
f3f20de87c03a9 arch/x86/mm/init_32.c Jeremy Fitzhardinge 2008-01-30 364
set_pte(pte, pfn_pte(pfn, prot));
^1da177e4c3f41 arch/i386/mm/init.c Linus Torvalds 2005-04-16 365 }
^1da177e4c3f41 arch/i386/mm/init.c Linus Torvalds 2005-04-16 366 }
^1da177e4c3f41 arch/i386/mm/init.c Linus Torvalds 2005-04-16 367 }
a2699e477b8e6b arch/x86/mm/init_32.c Suresh Siddha 2008-09-23 368 if
(mapping_iter == 1) {
a2699e477b8e6b arch/x86/mm/init_32.c Suresh Siddha 2008-09-23 369 /*
a2699e477b8e6b arch/x86/mm/init_32.c Suresh Siddha 2008-09-23 370 * update
direct mapping page count only in the first
a2699e477b8e6b arch/x86/mm/init_32.c Suresh Siddha 2008-09-23 371 * iteration.
a2699e477b8e6b arch/x86/mm/init_32.c Suresh Siddha 2008-09-23 372 */
ce0c0e50f94e8c arch/x86/mm/init_32.c Andi Kleen 2008-05-02 373
update_page_count(PG_LEVEL_2M, pages_2m);
ce0c0e50f94e8c arch/x86/mm/init_32.c Andi Kleen 2008-05-02 374
update_page_count(PG_LEVEL_4K, pages_4k);
a2699e477b8e6b arch/x86/mm/init_32.c Suresh Siddha 2008-09-23 375
a2699e477b8e6b arch/x86/mm/init_32.c Suresh Siddha 2008-09-23 376 /*
a2699e477b8e6b arch/x86/mm/init_32.c Suresh Siddha 2008-09-23 377 * local
global flush tlb, which will flush the previous
a2699e477b8e6b arch/x86/mm/init_32.c Suresh Siddha 2008-09-23 378 * mappings
present in both small and large page TLB's.
a2699e477b8e6b arch/x86/mm/init_32.c Suresh Siddha 2008-09-23 379 */
a2699e477b8e6b arch/x86/mm/init_32.c Suresh Siddha 2008-09-23 380
__flush_tlb_all();
a2699e477b8e6b arch/x86/mm/init_32.c Suresh Siddha 2008-09-23 381
a2699e477b8e6b arch/x86/mm/init_32.c Suresh Siddha 2008-09-23 382 /*
a2699e477b8e6b arch/x86/mm/init_32.c Suresh Siddha 2008-09-23 383 * Second
iteration will set the actual desired PTE attributes.
a2699e477b8e6b arch/x86/mm/init_32.c Suresh Siddha 2008-09-23 384 */
a2699e477b8e6b arch/x86/mm/init_32.c Suresh Siddha 2008-09-23 385 mapping_iter =
2;
a2699e477b8e6b arch/x86/mm/init_32.c Suresh Siddha 2008-09-23 386 goto repeat;
a2699e477b8e6b arch/x86/mm/init_32.c Suresh Siddha 2008-09-23 387 }
c1fd1b43831fa2 arch/x86/mm/init_32.c Pekka Enberg 2010-02-24 388 return
last_map_addr;
ae531c26c5c2a2 arch/x86/mm/init_32.c Arjan van de Ven 2008-04-24 389 }
ae531c26c5c2a2 arch/x86/mm/init_32.c Arjan van de Ven 2008-04-24 390
:::::: The code at line 253 was first introduced by commit
:::::: e53fb04fce6d246ebed755b904ed1b0b814a754c x86: unify kernel_physical_mapping_init()
function signatures
:::::: TO: Pekka Enberg <penberg(a)cs.helsinki.fi>
:::::: CC: Ingo Molnar <mingo(a)elte.hu>
---
0-DAY kernel test infrastructure Open Source Technology Center
https://lists.01.org/pipermail/kbuild-all Intel Corporation