From patchwork Fri Dec 14 05:29:10 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Suraj Jitindar Singh X-Patchwork-Id: 1013319 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Authentication-Results: ozlabs.org; spf=none (mailfrom) smtp.mailfrom=vger.kernel.org (client-ip=209.132.180.67; helo=vger.kernel.org; envelope-from=kvm-ppc-owner@vger.kernel.org; receiver=) Authentication-Results: ozlabs.org; dmarc=pass (p=none dis=none) header.from=gmail.com Authentication-Results: ozlabs.org; dkim=pass (2048-bit key; unprotected) header.d=gmail.com header.i=@gmail.com header.b="ParHppv5"; dkim-atps=neutral Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by ozlabs.org (Postfix) with ESMTP id 43GJz22rWYz9sMQ for ; Fri, 14 Dec 2018 16:30:06 +1100 (AEDT) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1727232AbeLNFaG (ORCPT ); Fri, 14 Dec 2018 00:30:06 -0500 Received: from mail-pf1-f193.google.com ([209.85.210.193]:35922 "EHLO mail-pf1-f193.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1727127AbeLNFaF (ORCPT ); Fri, 14 Dec 2018 00:30:05 -0500 Received: by mail-pf1-f193.google.com with SMTP id b85so2266700pfc.3; Thu, 13 Dec 2018 21:30:05 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:to:cc:subject:date:message-id:in-reply-to:references; bh=nTpXPuR5nNBn4IJKLUkxEzOqae3TZevqo5p6ZkxTOqs=; b=ParHppv5ngEFUloWa+UXwi5BmComGUJ4tQ+QZvXxdYFamyMWUzshnksCxkOnH06EEA 8neJGHRwxVvZwo5hZINYGb+Xj735spYhgLCNFudFTxIDop1IdS+QrAccyD0/jmmpUOyq cpC4CwTLX1iqarz8G1/D44KWlai79dPrGIB2uP6Oky41pKIWBUnBcm0jvBPziOqUdP98 OjuXZe64i0C51bwGapO/n5kvFZwe1McL/4B9L6kQclhcAkKhp9nDQaYORRoaPX02IqCd 3pynMWukZeB+DhzaCH9JGgUztm0ra56XZDDoJinRYO2REO2vVOi5iSP7HRf5VVL2FsN3 JSCQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references; bh=nTpXPuR5nNBn4IJKLUkxEzOqae3TZevqo5p6ZkxTOqs=; b=CiisADItP1symwiFrXICEE6b/rca/gPcp3rtsvhQahElgdpve9blI7wwXvYHCDslWk 50okGqYZxRWqO9NBcH3ZSbGn35YlP/umyp1XaRA/eUC66lBmP0NxFSVLZ0x7bp3JaL+c jh/jsp1aRyjAyi4/IP6uKXEpD3hEPKMhJKZA7E4QzjikSXO794qT4wlnIgw7QN4BUn3l G84+lSB46YwVePftcPEvCA3SQ+DFHEN/wjysyEX/ZEkX320Zkcp3SkJCAFyV+pKDsaIi K9ARDiR8sE8bnsdVRi3onqFNgGpfq77dgngBlCo8iW6TGKu2DMXbIpE+3oYKLFa1uSlH b/UA== X-Gm-Message-State: AA+aEWaNh1sVS2Vlb6dTJRw/FCAGh0lJgQYHUO/5fqVdymq7JNchXYaJ KMSPkYzb3Vpth8lE89tGqG9dQVp/ X-Google-Smtp-Source: AFSGD/W5YSFkAFVbAXrhVq9mugjvHCM94u2N7MR5GQmjjmzPCLJPbrtF/gWdKQaBoNdcXwQ6yryhFw== X-Received: by 2002:a63:e348:: with SMTP id o8mr1534306pgj.158.1544765404738; Thu, 13 Dec 2018 21:30:04 -0800 (PST) Received: from surajjs2.ozlabs.ibm.com.ozlabs.ibm.com ([122.99.82.10]) by smtp.gmail.com with ESMTPSA id d21sm5358697pgv.37.2018.12.13.21.30.00 (version=TLS1_2 cipher=ECDHE-RSA-CHACHA20-POLY1305 bits=256/256); Thu, 13 Dec 2018 21:30:03 -0800 (PST) From: Suraj Jitindar Singh To: kvm-ppc@vger.kernel.org Cc: kvm@vger.kernel.org, linuxppc-dev@lists.ozlabs.org, paulus@ozlabs.org, aik@ozlabs.ru, sjitindarsingh@gmail.com Subject: [PATCH V4 8/8] KVM: PPC: Book3S HV: Allow passthrough of an emulated device to an L3 guest Date: Fri, 14 Dec 2018 16:29:10 +1100 Message-Id: <20181214052910.23639-9-sjitindarsingh@gmail.com> X-Mailer: git-send-email 2.13.6 In-Reply-To: <20181214052910.23639-1-sjitindarsingh@gmail.com> References: <20181214052910.23639-1-sjitindarsingh@gmail.com> Sender: kvm-ppc-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: kvm-ppc@vger.kernel.org Previously when a device was being emulated by an L1 guest for an L2 guest, that device couldn't then be passed through to an L3 guest. This was because the L1 guest had no method for accessing L3 memory. The hcall H_COPY_TOFROM_GUEST provides this access. Thus this setup for passthrough can now be allowed. Signed-off-by: Suraj Jitindar Singh --- arch/powerpc/kvm/book3s_64_mmu_radix.c | 9 ++++----- arch/powerpc/kvm/book3s_hv_nested.c | 5 ----- 2 files changed, 4 insertions(+), 10 deletions(-) diff --git a/arch/powerpc/kvm/book3s_64_mmu_radix.c b/arch/powerpc/kvm/book3s_64_mmu_radix.c index da89d10e5886..8522b034a4b2 100644 --- a/arch/powerpc/kvm/book3s_64_mmu_radix.c +++ b/arch/powerpc/kvm/book3s_64_mmu_radix.c @@ -37,11 +37,10 @@ unsigned long __kvmhv_copy_tofrom_guest_radix(int lpid, int pid, int old_pid, old_lpid; bool is_load = !!to; - /* Can't access quadrants 1 or 2 in non-HV mode */ - if (kvmhv_on_pseries()) { - /* TODO h-call */ - return -EPERM; - } + /* Can't access quadrants 1 or 2 in non-HV mode, call the HV to do it */ + if (kvmhv_on_pseries()) + return plpar_hcall_norets(H_COPY_TOFROM_GUEST, lpid, pid, eaddr, + __pa(to), __pa(from), n); quadrant = 1; if (!pid) diff --git a/arch/powerpc/kvm/book3s_hv_nested.c b/arch/powerpc/kvm/book3s_hv_nested.c index 5903175751b4..a9db12cbc0fa 100644 --- a/arch/powerpc/kvm/book3s_hv_nested.c +++ b/arch/powerpc/kvm/book3s_hv_nested.c @@ -1284,11 +1284,6 @@ static long int __kvmhv_nested_page_fault(struct kvm_run *run, } /* passthrough of emulated MMIO case */ - if (kvmhv_on_pseries()) { - pr_err("emulated MMIO passthrough?\n"); - return -EINVAL; - } - return kvmppc_hv_emulate_mmio(run, vcpu, gpa, ea, writing); } if (memslot->flags & KVM_MEM_READONLY) {