From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1755057AbdKARtE (ORCPT ); Wed, 1 Nov 2017 13:49:04 -0400 Received: from mail-io0-f193.google.com ([209.85.223.193]:50965 "EHLO mail-io0-f193.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1751540AbdKARtC (ORCPT ); Wed, 1 Nov 2017 13:49:02 -0400 X-Google-Smtp-Source: ABhQp+Q3fnbsAzOctszVa311v1Tmxqwkg7RdsxQoonztgy7ZQF17/RMVjLtvMfRyQ6ZWL+ML7PCclg== Subject: Re: [PATCH] arm64: write_sysreg asm illegal for aarch32 To: Robin Murphy , linux-kernel@vger.kernel.org Cc: Mark Rutland , Christoffer Dall , Stefan Traby , Suzuki K Poulose , Marc Zyngier , Catalin Marinas , Will Deacon , Dave Martin , linux-arm-kernel@lists.infradead.org References: <20171101170014.20931-1-salyzyn@android.com> <35cf2062-f27e-16e6-19b1-cae5200d7081@arm.com> From: Mark Salyzyn Message-ID: <24cdf320-35e3-76f2-6e07-8b5548ac67a0@android.com> Date: Wed, 1 Nov 2017 10:49:00 -0700 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:52.0) Gecko/20100101 Thunderbird/52.4.0 MIME-Version: 1.0 In-Reply-To: <35cf2062-f27e-16e6-19b1-cae5200d7081@arm.com> Content-Type: text/plain; charset=utf-8; format=flowed Content-Transfer-Encoding: 7bit Content-Language: en-US Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org On 11/01/2017 10:14 AM, Robin Murphy wrote: > On 01/11/17 16:58, Mark Salyzyn wrote: >> Cross compiling to aarch32 (for vdso32) using clang correctly >> identifies that (the unused) write_sysreg inline asm directive is >> illegal in that architectural context: >> >> arch/arm64/include/asm/arch_timer.h: error: invalid input constraint 'rZ' in asm >> write_sysreg(cntkctl, cntkctl_el1); >> ^ >> arch/arm64/include/asm/sysreg.h: note: expanded from macro 'write_sysreg' >> : : "rZ" (__val)); >> ^ >> >> GCC normally checks for correctness everywhere. But uniquely for >> unused asm, will optimize out and suppress the error report. > It sounds more like some paths are wrong in the compat vDSO build if > it's pulling in this header in the first place - nothing in this file is > relevant to AArch32. > > Robin. > And yet, when you CROSS_COMPILE_ARM32 a vdso32, you have no choice but to utilize the arm64 headers since they contain all the relevant kernel structures and environment. asm/arch_timer.h (remember we are using arm instructions to access arch64 timers) linux/time.h (really only for struct timespec()) asm/processor.h (eg: cpu_relax()) pull in a _lot_ of architectural related cruft that always somehow picks up asm/sysreg.h somewhere in the multitude of includes to fulfill some unused inline's needs. -- Mark