Hi Dave, Thank you for the patch! Yet something to improve: [auto build test ERROR on omap/for-next] [also build test ERROR on v4.18-rc3 next-20180704] [if your patch is applied to the wrong git tree, please drop us a note to help improve the system] url: https://github.com/0day-ci/linux/commits/Keerthy/ARM-OMAP2-sleep33-43xx-Make-sleep-actions-configurable/20180705-010044 base: https://git.kernel.org/pub/scm/linux/kernel/git/tmlind/linux-omap.git for-next config: arm-multi_v7_defconfig (attached as .config) compiler: arm-linux-gnueabi-gcc (Debian 7.2.0-11) 7.2.0 reproduce: wget https://raw.githubusercontent.com/intel/lkp-tests/master/sbin/make.cross -O ~/bin/make.cross chmod +x ~/bin/make.cross # save the attached .config to linux build tree GCC_VERSION=7.2.0 make.cross ARCH=arm Note: the linux-review/Keerthy/ARM-OMAP2-sleep33-43xx-Make-sleep-actions-configurable/20180705-010044 HEAD e3afa3d962d9da30f840bc6f95322b0f9aea67d5 builds fine. It only hurts bisectibility. All errors (new ones prefixed by >>): arch/arm/mach-omap2/sleep33xx.S: Assembler messages: >> arch/arm/mach-omap2/sleep33xx.S:36: Error: garbage following instruction -- `tst r4,#BIT(0)' arch/arm/mach-omap2/sleep33xx.S:68: Error: garbage following instruction -- `tst r4,#BIT(1)' arch/arm/mach-omap2/sleep33xx.S:78: Error: garbage following instruction -- `tst r4,#BIT(2)' arch/arm/mach-omap2/sleep33xx.S:86: Error: garbage following instruction -- `tst r4,#BIT(1)' arch/arm/mach-omap2/sleep33xx.S:103: Error: garbage following instruction -- `tst r4,#BIT(3)' arch/arm/mach-omap2/sleep33xx.S:171: Error: garbage following instruction -- `tst r4,#BIT(1)' arch/arm/mach-omap2/sleep33xx.S:179: Error: garbage following instruction -- `tst r4,#BIT(0)' -- arch/arm/mach-omap2/sleep43xx.S: Assembler messages: >> arch/arm/mach-omap2/sleep43xx.S:68: Error: garbage following instruction -- `tst r4,#BIT(0)' arch/arm/mach-omap2/sleep43xx.S:148: Error: garbage following instruction -- `tst r4,#BIT(1)' arch/arm/mach-omap2/sleep43xx.S:158: Error: garbage following instruction -- `tst r4,#BIT(2)' arch/arm/mach-omap2/sleep43xx.S:166: Error: garbage following instruction -- `tst r4,#BIT(1)' arch/arm/mach-omap2/sleep43xx.S:182: Error: garbage following instruction -- `tst r4,#BIT(3)' arch/arm/mach-omap2/sleep43xx.S:256: Error: garbage following instruction -- `tst r4,#BIT(0)' arch/arm/mach-omap2/sleep43xx.S:269: Error: garbage following instruction -- `tst r4,#BIT(1)' vim +36 arch/arm/mach-omap2/sleep33xx.S 22 23 .arm 24 .align 3 25 26 ENTRY(am33xx_do_wfi) 27 stmfd sp!, {r4 - r11, lr} @ save registers on stack 28 29 /* Save wfi_flags arg to data space */ 30 mov r4, r0 31 adr r3, am33xx_pm_ro_sram_data 32 ldr r2, [r3, #AMX3_PM_RO_SRAM_DATA_VIRT_OFFSET] 33 str r4, [r2, #AMX3_PM_WFI_FLAGS_OFFSET] 34 35 /* Only flush cache is we know we are losing MPU context */ > 36 tst r4, #WFI_FLAG_FLUSH_CACHE 37 beq cache_skip_flush 38 39 /* 40 * Flush all data from the L1 and L2 data cache before disabling 41 * SCTLR.C bit. 42 */ 43 ldr r1, kernel_flush 44 blx r1 45 46 /* 47 * Clear the SCTLR.C bit to prevent further data cache 48 * allocation. Clearing SCTLR.C would make all the data accesses 49 * strongly ordered and would not hit the cache. 50 */ 51 mrc p15, 0, r0, c1, c0, 0 52 bic r0, r0, #(1 << 2) @ Disable the C bit 53 mcr p15, 0, r0, c1, c0, 0 54 isb 55 56 /* 57 * Invalidate L1 and L2 data cache. 58 */ 59 ldr r1, kernel_flush 60 blx r1 61 62 adr r3, am33xx_pm_ro_sram_data 63 ldr r2, [r3, #AMX3_PM_RO_SRAM_DATA_VIRT_OFFSET] 64 ldr r4, [r2, #AMX3_PM_WFI_FLAGS_OFFSET] 65 66 cache_skip_flush: 67 /* Check if we want self refresh */ 68 tst r4, #WFI_FLAG_SELF_REFRESH 69 beq emif_skip_enter_sr 70 71 adr r9, am33xx_emif_sram_table 72 73 ldr r3, [r9, #EMIF_PM_ENTER_SR_OFFSET] 74 blx r3 75 76 emif_skip_enter_sr: 77 /* Only necessary if PER is losing context */ 78 tst r4, #WFI_FLAG_SAVE_EMIF 79 beq emif_skip_save 80 81 ldr r3, [r9, #EMIF_PM_SAVE_CONTEXT_OFFSET] 82 blx r3 83 84 emif_skip_save: 85 /* Only can disable EMIF if we have entered self refresh */ 86 tst r4, #WFI_FLAG_SELF_REFRESH 87 beq emif_skip_disable 88 89 /* Disable EMIF */ 90 ldr r1, virt_emif_clkctrl 91 ldr r2, [r1] 92 bic r2, r2, #AM33XX_CM_CLKCTRL_MODULEMODE_DISABLE 93 str r2, [r1] 94 95 ldr r1, virt_emif_clkctrl 96 wait_emif_disable: 97 ldr r2, [r1] 98 mov r3, #AM33XX_CM_CLKCTRL_MODULESTATE_DISABLED 99 cmp r2, r3 100 bne wait_emif_disable 101 102 emif_skip_disable: 103 tst r4, #WFI_FLAG_WAKE_M3 104 beq wkup_m3_skip 105 106 /* 107 * For the MPU WFI to be registered as an interrupt 108 * to WKUP_M3, MPU_CLKCTRL.MODULEMODE needs to be set 109 * to DISABLED 110 */ 111 ldr r1, virt_mpu_clkctrl 112 ldr r2, [r1] 113 bic r2, r2, #AM33XX_CM_CLKCTRL_MODULEMODE_DISABLE 114 str r2, [r1] 115 116 wkup_m3_skip: 117 /* 118 * Execute an ISB instruction to ensure that all of the 119 * CP15 register changes have been committed. 120 */ 121 isb 122 123 /* 124 * Execute a barrier instruction to ensure that all cache, 125 * TLB and branch predictor maintenance operations issued 126 * have completed. 127 */ 128 dsb 129 dmb 130 131 /* 132 * Execute a WFI instruction and wait until the 133 * STANDBYWFI output is asserted to indicate that the 134 * CPU is in idle and low power state. CPU can specualatively 135 * prefetch the instructions so add NOPs after WFI. Thirteen 136 * NOPs as per Cortex-A8 pipeline. 137 */ 138 wfi 139 140 nop 141 nop 142 nop 143 nop 144 nop 145 nop 146 nop 147 nop 148 nop 149 nop 150 nop 151 nop 152 nop 153 154 /* We come here in case of an abort due to a late interrupt */ 155 156 /* Set MPU_CLKCTRL.MODULEMODE back to ENABLE */ 157 ldr r1, virt_mpu_clkctrl 158 mov r2, #AM33XX_CM_CLKCTRL_MODULEMODE_ENABLE 159 str r2, [r1] 160 161 /* Re-enable EMIF */ 162 ldr r1, virt_emif_clkctrl 163 mov r2, #AM33XX_CM_CLKCTRL_MODULEMODE_ENABLE 164 str r2, [r1] 165 wait_emif_enable: 166 ldr r3, [r1] 167 cmp r2, r3 168 bne wait_emif_enable 169 170 /* Only necessary if PER is losing context */ 171 tst r4, #WFI_FLAG_SELF_REFRESH 172 beq emif_skip_exit_sr_abt 173 174 adr r9, am33xx_emif_sram_table 175 ldr r1, [r9, #EMIF_PM_ABORT_SR_OFFSET] 176 blx r1 177 178 emif_skip_exit_sr_abt: 179 tst r4, #WFI_FLAG_FLUSH_CACHE 180 beq cache_skip_restore 181 182 /* 183 * Set SCTLR.C bit to allow data cache allocation 184 */ 185 mrc p15, 0, r0, c1, c0, 0 186 orr r0, r0, #(1 << 2) @ Enable the C bit 187 mcr p15, 0, r0, c1, c0, 0 188 isb 189 190 cache_skip_restore: 191 /* Let the suspend code know about the abort */ 192 mov r0, #1 193 ldmfd sp!, {r4 - r11, pc} @ restore regs and return 194 ENDPROC(am33xx_do_wfi) 195 196 .align 197 ENTRY(am33xx_resume_offset) 198 .word . - am33xx_do_wfi 199 --- 0-DAY kernel test infrastructure Open Source Technology Center https://lists.01.org/pipermail/kbuild-all Intel Corporation
Attachment:
.config.gz
Description: application/gzip