Messages in this thread | | | From | Sami Tolvanen <> | Date | Thu, 30 Jul 2020 10:34:24 -0700 | Subject | Re: [PATCH v2] arm64/alternatives: move length validation inside the subsection |
| |
On Thu, Jul 30, 2020 at 10:24 AM Catalin Marinas <catalin.marinas@arm.com> wrote: > > On Thu, Jul 30, 2020 at 08:37:01AM -0700, Sami Tolvanen wrote: > > Commit f7b93d42945c ("arm64/alternatives: use subsections for replacement > > sequences") breaks LLVM's integrated assembler, because due to its > > one-pass design, it cannot compute instruction sequence lengths before the > > layout for the subsection has been finalized. This change fixes the build > > by moving the .org directives inside the subsection, so they are processed > > after the subsection layout is known. > > > > Link: https://github.com/ClangBuiltLinux/linux/issues/1078 > > Fixes: f7b93d42945c ("arm64/alternatives: use subsections for replacement sequences") > > Signed-off-by: Sami Tolvanen <samitolvanen@google.com> > > --- > > v1 -> v2: > > - Added the missing Fixes tag and dropped CC: stable@. > > > > --- > > arch/arm64/include/asm/alternative.h | 4 ++-- > > 1 file changed, 2 insertions(+), 2 deletions(-) > > > > diff --git a/arch/arm64/include/asm/alternative.h b/arch/arm64/include/asm/alternative.h > > index 12f0eb56a1cc..619db9b4c9d5 100644 > > --- a/arch/arm64/include/asm/alternative.h > > +++ b/arch/arm64/include/asm/alternative.h > > @@ -77,9 +77,9 @@ static inline void apply_alternatives_module(void *start, size_t length) { } > > "663:\n\t" \ > > newinstr "\n" \ > > "664:\n\t" \ > > - ".previous\n\t" \ > > ".org . - (664b-663b) + (662b-661b)\n\t" \ > > - ".org . - (662b-661b) + (664b-663b)\n" \ > > + ".org . - (662b-661b) + (664b-663b)\n\t" \ > > + ".previous\n" \ > > ".endif\n" > > Acked-by: Catalin Marinas <catalin.marinas@arm.com> > > There are a few instances of the .org test outside the subsection, > though using in .S files. Are those ok?
Yes, this only appears to be a problem when used in inline assembly.
Sami
| |