Re: [PATCH v3 2/2] PCI: rcar: Return all Fs from read which triggered an exception

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On 1/23/22 15:12, Arnd Bergmann wrote:

[...]

+#ifdef CONFIG_ARM
+#define __rcar_pci_rw_reg_workaround(instr)                            \
+               "1:     " instr " %1, [%2]\n"                           \
+               "2:     isb\n"                                          \
+               "3:     .pushsection .text.fixup,\"ax\"\n"              \
+               "       .align  2\n"                                    \
+               "4:     mov     %0, #" __stringify(PCIBIOS_SET_FAILED) "\n" \
+               "       b       3b\n"                                   \
+               "       .popsection\n"                                  \
+               "       .pushsection __ex_table,\"a\"\n"                \
+               "       .align  3\n"                                    \
+               "       .long   1b, 4b\n"                               \
+               "       .long   1b, 4b\n"                               \
+               "       .popsection\n"
+#endif

You list the fixup for the ldr/str instruction here twice, (.long 1b,4b), but
no fixup for the isb instruction (.long 2b, 4b). Your description says that
the fault happens on the isb, not the ldr, so I don't understand what is
going on here.

Copy-paste error when deduplicating the patch content, should be

.long   1b, 4b
.long   2b, 4b

to cover both ldr/str and isb.

I can imagine on CA7, the abort would trigger on the ldr/str already.



[Index of Archives]     [DMA Engine]     [Linux Coverity]     [Linux USB]     [Video for Linux]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]     [Greybus]

  Powered by Linux