Received: by 2002:a05:6a10:8c0a:0:0:0:0 with SMTP id go10csp251979pxb; Fri, 15 Jan 2021 12:06:25 -0800 (PST) X-Google-Smtp-Source: ABdhPJxdO6YwJDMsncODT9GjNge3ZaoAUz27Kkyo5xiwWCLMQnPaSjOc3MZ8U6Xc2YIdAEV24LzI X-Received: by 2002:a05:6402:3074:: with SMTP id bs20mr11057036edb.365.1610741185581; Fri, 15 Jan 2021 12:06:25 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1610741185; cv=none; d=google.com; s=arc-20160816; b=VqpYD+xXdHBAh9VT7IuXZx5SA/KpydRUAB1HBDnOMLPVsxQ9MZJDuoozkqX7tdZNFg iftXbtlTFOFqL8sxPTZdpUsFSymdfZq4E+P5P+fbcTw36DhZz4bVYdvcN7TjHmL2pV8A +csAkOWT3iIPXPoAPqBJPfWiMrJqbYwAcIyg228uYlnd+fXQEJVefGCr/VbgHwOk033N hHMIgavSbSHtbd+8JsXw/eFmzosN3HZaGqQMrQb2meZfCkKw98V8taYM3Fba64G7/JIX VbE/fWnYICdkhsg6iehQ02bSrRBR8dOlkAt/A0yvBYOKa3hcPDQnCjukuRcO4fVKGEWi tJKA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:content-transfer-encoding:content-language :mime-version:accept-language:in-reply-to:references:message-id:date :thread-index:thread-topic:subject:cc:to:from; bh=AESruKPaTH83lMReWO6MmLTrfzgrmme7ZyDzaXQ9zqM=; b=NsfbIrXnob7QpXvAZ5cbZ+/Qun/yGGgnO8p513mYD5Gq1cG1VoQUECcFBJioz/4tWY vMPthtUPhCDwvnijXz0crO56drRbcZUgdxD02JZqtUwWRJdsnncgDaXJVXDQhS37gswo M39EIu0NxsEavW8PgvOMw2N8Nsx/gBJPXznowhdjDhyhPRTThQ1dgOuW4KRjdD+qyXqN dP8nG3X7S7fP2UgPQpmCVL9N0cmYikpC+YsTeGzZyQKnbFWdSwoyrJKoI0IurFTS5cRa 6CE2YEWM1X00gLFJOhh40OetfqnC7/+M+nVomMCJt4EEKM23U/MKaarH4co7QjsEvTWb ZCQw== ARC-Authentication-Results: i=1; mx.google.com; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=aculab.com Return-Path: Received: from vger.kernel.org (vger.kernel.org. [23.128.96.18]) by mx.google.com with ESMTP id m15si4583289edp.363.2021.01.15.12.06.02; Fri, 15 Jan 2021 12:06:25 -0800 (PST) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) client-ip=23.128.96.18; Authentication-Results: mx.google.com; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=aculab.com Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S2388690AbhAOUDM convert rfc822-to-8bit (ORCPT + 99 others); Fri, 15 Jan 2021 15:03:12 -0500 Received: from eu-smtp-delivery-151.mimecast.com ([185.58.86.151]:28135 "EHLO eu-smtp-delivery-151.mimecast.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S2388664AbhAOUDD (ORCPT ); Fri, 15 Jan 2021 15:03:03 -0500 Received: from AcuMS.aculab.com (156.67.243.126 [156.67.243.126]) (Using TLS) by relay.mimecast.com with ESMTP id uk-mta-79-PS3OFpBZPgGXINPuMHjjeQ-1; Fri, 15 Jan 2021 20:01:22 +0000 X-MC-Unique: PS3OFpBZPgGXINPuMHjjeQ-1 Received: from AcuMS.Aculab.com (fd9f:af1c:a25b:0:43c:695e:880f:8750) by AcuMS.aculab.com (fd9f:af1c:a25b:0:43c:695e:880f:8750) with Microsoft SMTP Server (TLS) id 15.0.1347.2; Fri, 15 Jan 2021 20:01:15 +0000 Received: from AcuMS.Aculab.com ([fe80::43c:695e:880f:8750]) by AcuMS.aculab.com ([fe80::43c:695e:880f:8750%12]) with mapi id 15.00.1347.000; Fri, 15 Jan 2021 20:01:15 +0000 From: David Laight To: "'sonicadvance1@gmail.com'" CC: Richard Henderson , Ivan Kokshaysky , Matt Turner , Russell King , Catalin Marinas , "Will Deacon" , Tony Luck , Fenghua Yu , Geert Uytterhoeven , "Michal Simek" , Thomas Bogendoerfer , "James E.J. Bottomley" , Helge Deller , Michael Ellerman , "Benjamin Herrenschmidt" , Paul Mackerras , Heiko Carstens , Vasily Gorbik , Christian Borntraeger , Yoshinori Sato , Rich Felker , "David S. Miller" , Andy Lutomirski , "Thomas Gleixner" , Ingo Molnar , "Borislav Petkov" , "x86@kernel.org" , "H. Peter Anvin" , Chris Zankel , Max Filippov , Alexander Viro , Arnd Bergmann , Andrew Morton , Aleksa Sarai , Xiaoming Ni , David Rientjes , Willem de Bruijn , "Christian Brauner" , Miklos Szeredi , Minchan Kim , "Eric W. Biederman" , Stephen Rothwell , "Vincenzo Frascino" , Vlastimil Babka , Oleg Nesterov , YueHaibing , "Suren Baghdasaryan" , Nicholas Piggin , Brian Gerst , Dominik Brodowski , Jan Kara , "Arnaldo Carvalho de Melo" , "linux-alpha@vger.kernel.org" , "linux-kernel@vger.kernel.org" , "linux-arm-kernel@lists.infradead.org" , "linux-ia64@vger.kernel.org" , "linux-m68k@lists.linux-m68k.org" , "linux-mips@vger.kernel.org" , "linux-parisc@vger.kernel.org" , "linuxppc-dev@lists.ozlabs.org" , "linux-s390@vger.kernel.org" , "linux-sh@vger.kernel.org" , "sparclinux@vger.kernel.org" , "linux-xtensa@linux-xtensa.org" , "linux-fsdevel@vger.kernel.org" , "linux-api@vger.kernel.org" , "linux-arch@vger.kernel.org" Subject: RE: [PATCH] Adds a new ioctl32 syscall for backwards compatibility layers Thread-Topic: [PATCH] Adds a new ioctl32 syscall for backwards compatibility layers Thread-Index: AQHW6wzXd1V6Thk8U0iiUgMFo8hTJqopEBwA Date: Fri, 15 Jan 2021 20:01:15 +0000 Message-ID: References: <20210106064807.253112-1-Sonicadvance1@gmail.com> <20210115070326.294332-1-Sonicadvance1@gmail.com> In-Reply-To: <20210115070326.294332-1-Sonicadvance1@gmail.com> Accept-Language: en-GB, en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: x-ms-exchange-transport-fromentityheader: Hosted x-originating-ip: [10.202.205.107] MIME-Version: 1.0 Authentication-Results: relay.mimecast.com; auth=pass smtp.auth=C51A453 smtp.mailfrom=david.laight@aculab.com X-Mimecast-Spam-Score: 0 X-Mimecast-Originator: aculab.com Content-Language: en-US Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8BIT Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org From: sonicadvance1@gmail.com > Sent: 15 January 2021 07:03 > Problem presented: > A backwards compatibility layer that allows running x86-64 and x86 > processes inside of an AArch64 process. > - CPU is emulated > - Syscall interface is mostly passthrough > - Some syscalls require patching or emulation depending on behaviour > - Not viable from the emulator design to use an AArch32 host process > You are going to need to add all the x86 compatibility code into your arm64 kernel. This is likely to be different from the 32bit arm compatibility because 64bit items are only aligned on 32bit boundaries. The x86 x32 compatibility will be more like the 32bit arm 'compat' code - I'm pretty sure arm32 64bit aligned 64bit data. You'll then need to remember how the process entered the kernel to work out which compatibility code to invoke. This is what x86 does. It allows a single process to do all three types of system call. Trying to 'patch up' structures outside the kernel, or in the syscall interface code will always cause grief somewhere. The only sane place is in the code that uses the structures. Which, for ioctls, means inside the driver that parses them. David - Registered Address Lakeside, Bramley Road, Mount Farm, Milton Keynes, MK1 1PT, UK Registration No: 1397386 (Wales)