Unified · Split
| @@ -557,9 +557,16 @@ ENTRY(__switch_to) · 556 unmodified lines | |||
| 557 | ldmia r4, {r4 - sl, fp, ip, lr} @ Load all regs saved previously | 557 | ldmia r4, {r4 - sl, fp, ip, lr} @ Load all regs saved previously |
| 558 | #ifdef CONFIG_VMAP_STACK | 558 | #ifdef CONFIG_VMAP_STACK |
| 559 | @ | 559 | @ |
| 560 | @ Do a dummy read from the new stack while running from the old one so | 560 | @ For a non-lazy mm switch, check_vmalloc_seq() has ensured that |
| 561 | @ that we can rely on do_translation_fault() to fix up any stale PMD | 561 | @ that the active mm's page tables have mappings for the prev |
| 562 | @ entries covering the vmalloc region. | 562 | @ task's stack and the next task's stack. |
| 563 | @ | ||
| 564 | @ For a lazy mm switch the active mm's page tables have mappings | ||
| 565 | @ for the prev task's stack but might not have mappings for the | ||
| 566 | @ new task's stack. Do a dummy read from the new stack while | ||
| 567 | @ running from the old stack so that we can rely on | ||
| 568 | @ do_translation_fault() to populate missing PMD entries covering the | ||
| 569 | @ new task's stack in the old task's page tables. | ||
| 563 | @ | 570 | @ |
| 564 | ldr r2, [ip] | 571 | ldr r2, [ip] |
| 565 | #ifdef CONFIG_KASAN_VMALLOC | 572 | #ifdef CONFIG_KASAN_VMALLOC |
| @@ -8,8 +8,6 @@ · 7 unmodified lines | |||
| 8 | * | 8 | * |
| 9 | * These are the low level assembler for performing cache and TLB | 9 | * These are the low level assembler for performing cache and TLB |
| 10 | * functions on the arm920. | 10 | * functions on the arm920. |
| 11 | * | ||
| 12 | * CONFIG_CPU_ARM920_CPU_IDLE -> nohlt | ||
| 13 | */ | 11 | */ |
| 14 | #include <linux/linkage.h> | 12 | #include <linux/linkage.h> |
| 15 | #include <linux/init.h> | 13 | #include <linux/init.h> |
| @@ -9,8 +9,6 @@ · 8 unmodified lines | |||
| 9 | * | 9 | * |
| 10 | * These are the low level assembler for performing cache and TLB | 10 | * These are the low level assembler for performing cache and TLB |
| 11 | * functions on the arm922. | 11 | * functions on the arm922. |
| 12 | * | ||
| 13 | * CONFIG_CPU_ARM922_CPU_IDLE -> nohlt | ||
| 14 | */ | 12 | */ |
| 15 | #include <linux/linkage.h> | 13 | #include <linux/linkage.h> |
| 16 | #include <linux/init.h> | 14 | #include <linux/init.h> |
| @@ -15,8 +15,6 @@ · 14 unmodified lines | |||
| 15 | * These are the low level assembler for performing cache and TLB | 15 | * These are the low level assembler for performing cache and TLB |
| 16 | * functions on the arm925. | 16 | * functions on the arm925. |
| 17 | * | 17 | * |
| 18 | * CONFIG_CPU_ARM925_CPU_IDLE -> nohlt | ||
| 19 | * | ||
| 20 | * Some additional notes based on deciphering the TI TRM on OMAP-5910: | 18 | * Some additional notes based on deciphering the TI TRM on OMAP-5910: |
| 21 | * | 19 | * |
| 22 | * NOTE1: The TI925T Configuration Register bit "D-cache clean and flush | 20 | * NOTE1: The TI925T Configuration Register bit "D-cache clean and flush |
| @@ -8,8 +8,6 @@ · 7 unmodified lines | |||
| 8 | * | 8 | * |
| 9 | * These are the low level assembler for performing cache and TLB | 9 | * These are the low level assembler for performing cache and TLB |
| 10 | * functions on the arm926. | 10 | * functions on the arm926. |
| 11 | * | ||
| 12 | * CONFIG_CPU_ARM926_CPU_IDLE -> nohlt | ||
| 13 | */ | 11 | */ |
| 14 | #include <linux/linkage.h> | 12 | #include <linux/linkage.h> |
| 15 | #include <linux/init.h> | 13 | #include <linux/init.h> |
| @@ -1649,24 +1649,16 @@ out: · 1648 unmodified lines | |||
| 1649 | 1649 | ||
| 1650 | return ret; | 1650 | return ret; |
| 1651 | } | 1651 | } |
| 1652 | 1652 | late_initcall(run_all_tests); | |
| 1653 | 1653 | ||
| 1654 | /* | 1654 | /* |
| 1655 | * Module setup | 1655 | * Module setup |
| 1656 | */ | 1656 | */ |
| 1657 | 1657 | ||
| 1658 | #ifdef MODULE | ||
| 1659 | |||
| 1660 | static void __exit kprobe_test_exit(void) | 1658 | static void __exit kprobe_test_exit(void) |
| 1661 | { | 1659 | { |
| 1662 | } | 1660 | } |
| 1663 | |||
| 1664 | module_init(run_all_tests) | ||
| 1665 | module_exit(kprobe_test_exit) | 1661 | module_exit(kprobe_test_exit) |
| 1666 | MODULE_LICENSE("GPL"); | ||
| 1667 | 1662 | ||
| 1668 | #else /* !MODULE */ | 1663 | MODULE_DESCRIPTION("Test code for ARM kprobes"); |
| 1669 | 1664 | MODULE_LICENSE("GPL"); | |
| 1670 | late_initcall(run_all_tests); | ||
| 1671 | |||
| 1672 | #endif | ||