Received: by 2002:a25:c593:0:0:0:0:0 with SMTP id v141csp1072993ybe; Fri, 6 Sep 2019 11:26:09 -0700 (PDT) X-Google-Smtp-Source: APXvYqyi12jKmtk6B4oV4voFXs7tpVaxCvKxbgFQ+3HOuZobnvkcAJ6IVltEX/H3J0XmA5vgOnRH X-Received: by 2002:a17:90a:1a1a:: with SMTP id 26mr11319769pjk.118.1567794369117; Fri, 06 Sep 2019 11:26:09 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1567794369; cv=none; d=google.com; s=arc-20160816; b=s8uHmUQzjIZyzdbCCeZRuNpDDO9FVzwBj27PZNVyIxS7UmNYtH2/n5guVEmd+A+OSx hFEBhDbQuMFE7zyRcNRtfjItdGYe3hhJtxj2HAqToGEmThrEA21es0lY16r37N3f28iT X7fVeDYz7HexMF91MiztrutrsDb66roRvLAjtIYqcYP/SlcCa+z7m2meDaakyW3iDeBk nLF38hNf39zTW/MAT/YTBsG+fou4Ym3uwmOYdnEIm5Jk1XPNf3N4H1eTYlNHgbhFmWZ4 WgHtTZSzdl6Z+3r2pYLhXBNHsmEF9Gbhj3fQebbya/UBiMcZpRTCkY1VJI6WsWA08/7R +K9w== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:content-transfer-encoding :content-language:in-reply-to:mime-version:user-agent:date :message-id:organization:from:references:cc:to:subject; bh=sQlX7jEQ5N5YzoKi3/WB8Qj/8r8Z55hawyRkNkhHbqI=; b=TtyfSuCR4PNv7tjIojKT5vU+KuldK/2hqB2b0HUqN+oY+vJ1Eg9ZrrJQJer7pGrunN 89atID2Ln4UkF26XBhb4UKfea+JDXBFpfBLLZv6YxHiyGEsvzS512bWsm4a4uAn1l3Df HMD3WhMNPhLgN/5GM37t7AxGxZWc6d1pHT4F2503ajp/nKhUy2f0mOSXEY+kxc2MyZkl Dvv6+3BlsXGGSKy6wO0a7fGBBJtnCoztRKCz2VjaHRfRU5v8nq+nN0kWjZ6YHqf0quQR 6n/cZuyErzuOmotkvkdxkXgBMLmlz09jxydAkoji6INARntLjaQKlNt/4uiEeQlZwE5/ fe1g== ARC-Authentication-Results: i=1; mx.google.com; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=kernel.org Return-Path: Received: from vger.kernel.org (vger.kernel.org. [209.132.180.67]) by mx.google.com with ESMTP id j25si6190927pfi.264.2019.09.06.11.25.53; Fri, 06 Sep 2019 11:26:09 -0700 (PDT) Received-SPF: pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) client-ip=209.132.180.67; Authentication-Results: mx.google.com; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=kernel.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S2391992AbfIFMew (ORCPT + 99 others); Fri, 6 Sep 2019 08:34:52 -0400 Received: from foss.arm.com ([217.140.110.172]:55638 "EHLO foss.arm.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1728509AbfIFMew (ORCPT ); Fri, 6 Sep 2019 08:34:52 -0400 Received: from usa-sjc-imap-foss1.foss.arm.com (unknown [10.121.207.14]) by usa-sjc-mx-foss1.foss.arm.com (Postfix) with ESMTP id 57B971570; Fri, 6 Sep 2019 05:34:51 -0700 (PDT) Received: from [10.1.197.61] (usa-sjc-imap-foss1.foss.arm.com [10.121.207.14]) by usa-sjc-imap-foss1.foss.arm.com (Postfix) with ESMTPSA id 52B373F718; Fri, 6 Sep 2019 05:34:50 -0700 (PDT) Subject: Re: [PATCH 1/1] KVM: inject data abort if instruction cannot be decoded To: Alexander Graf , Christoffer Dall Cc: =?UTF-8?Q?Daniel_P=2e_Berrang=c3=a9?= , Heinrich Schuchardt , lkml - Kernel Mailing List , Stefan Hajnoczi , kvmarm@lists.cs.columbia.edu, arm-mail-list References: <20190904180736.29009-1-xypron.glpk@gmx.de> <86r24vrwyh.wl-maz@kernel.org> <86mufjrup7.wl-maz@kernel.org> <20190905092223.GC4320@e113682-lin.lund.arm.com> <4b6662bd-56e4-3c10-3b65-7c90828a22f9@kernel.org> <20190906080033.GF4320@e113682-lin.lund.arm.com> From: Marc Zyngier Organization: Approximate Message-ID: <0a99ce2b-7700-2a2f-eb3a-4922631cbe02@kernel.org> Date: Fri, 6 Sep 2019 13:34:48 +0100 User-Agent: Mozilla/5.0 (X11; Linux aarch64; rv:60.0) Gecko/20100101 Thunderbird/60.8.0 MIME-Version: 1.0 In-Reply-To: Content-Type: text/plain; charset=utf-8 Content-Language: en-US Content-Transfer-Encoding: 7bit Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org On 06/09/2019 13:08, Alexander Graf wrote: > > > On 06.09.19 10:00, Christoffer Dall wrote: >> On Thu, Sep 05, 2019 at 02:09:18PM +0100, Marc Zyngier wrote: [...] >>>> @@ -673,6 +694,8 @@ int kvm_arch_vcpu_ioctl_run(struct kvm_vcpu *vcpu, struct kvm_run *run) >>>> ret = kvm_handle_mmio_return(vcpu, vcpu->run); >>>> if (ret) >>>> return ret; >>>> + } else if (run->exit_reason == KVM_EXIT_ARM_NISV) { >>>> + kvm_inject_undefined(vcpu); >>> >>> Just to make sure I understand: Is the expectation here that userspace >>> could clear the exit reason if it managed to handle the exit? And >>> otherwise we'd inject an UNDEF on reentry? >>> >> >> Yes, but I think we should change that to an external abort. I'll test >> something and send a proper patch with more clear documentation. > > Why not leave the injection to user space in any case? API wise there is > no need to be backwards compatible, as we require the CAP to be enabled, > right? > > IMHO it should be 100% a policy decision in user space whether to > emulate and what type of exception to inject, if anything. The exception has to be something that the trapped instruction can actually generate. An UNDEF is definitely wrong, as the guest would have otherwise UNDEF'd at EL1, and KVM would have never seen it. You cannot deviate from the rule of architecture, and userspace feels like the wrong place to enforce it. M. -- Jazz is not dead, it just smells funny...