From mboxrd@z Thu Jan 1 00:00:00 1970 Received: by 2002:adf:ef42:0:0:0:0:0 with SMTP id c2csp64418wrp; Tue, 24 Sep 2019 16:13:53 -0700 (PDT) X-Google-Smtp-Source: APXvYqx3DFb2IoSJJoyLHKDO/FXVtZrKfbDyI4XJvNbvjPHbGz8wMb2H6jC+l9EwGeKOmVEcfRqj X-Received: by 2002:a1c:35c9:: with SMTP id c192mr3186143wma.91.1569366833018; Tue, 24 Sep 2019 16:13:53 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1569366833; cv=none; d=google.com; s=arc-20160816; b=0SoV6wDyg8m/Vao9ieef4c8+QQ7qYlmRC5dQ+zGNrSS/o9f5rAdtAlHJUnEWoVB0Rs 8dHzOIAewUrv8yLG/45pkshw0dUWLfT3y/PrmV8whtQnXQSLTzAvxvwNfhZPqzko/M8U 5WJOFIsY+7Lk/rFYImMdECnXLLmRzdLWtbcCgAFJhi3rxQlg7Qww80D5p+/Nu/lwY7CD xKRSMy7+F1pNg/YyL+ESQE0JUGE84ADR7Jzy6iWJ0gZiyOfHXUqImPegRpLurUU0xUmE eUTZv1kpJHabgi6UgiyEiM5m6OQaZ9tgrAQz8LU+MU0MPTqxvyPez8kj428lwomlzc40 cckA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=sender:errors-to:cc:list-subscribe:list-help:list-post:list-archive :list-unsubscribe:list-id:precedence:content-transfer-encoding :mime-version:organization:references:in-reply-to:message-id:subject :to:from:date; bh=RtPPDDcTnqTBHjJdkjYKVw9AFLONZ/vqLZV/SAnDbxw=; b=kyK575Fk7wyeZiG4u5T8O2HpmqrMUnjYakhDDyjXY2+GB/AvyQKseaGCHCpKvKSEIg eKnlFCn6Xdhw+DzhWYm7CUOZ+UCSNPbxsy1d9Yk37gHDT05gaCEuHrHxmj6mJIFk0fbl m0hkcX6sO9mVTecR6RTLkME2ntjzTjTp+7BcdoZ0UPO4mtjRjX4oWnuugMPZSRTju8vP KNW20QoreFk46yoBb64vh6uFVNwlMrisRGG9/SlhvD7ZNwiD/U6ab0d18mZ8vkdElIP1 r1+3HG+wvDw1zV3++hGOnz6k00/ho1NwG5d7p7JaCJdJZ+k0kAkisa39nDnSH9NSwizb 734Q== ARC-Authentication-Results: i=1; mx.google.com; spf=pass (google.com: domain of qemu-arm-bounces+alex.bennee=linaro.org@nongnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom="qemu-arm-bounces+alex.bennee=linaro.org@nongnu.org"; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=redhat.com Return-Path: Received: from lists.gnu.org (lists.gnu.org. [209.51.188.17]) by mx.google.com with ESMTPS id v5si2124544edm.313.2019.09.24.16.13.52 for (version=TLS1_2 cipher=ECDHE-RSA-CHACHA20-POLY1305 bits=256/256); Tue, 24 Sep 2019 16:13:53 -0700 (PDT) Received-SPF: pass (google.com: domain of qemu-arm-bounces+alex.bennee=linaro.org@nongnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; Authentication-Results: mx.google.com; spf=pass (google.com: domain of qemu-arm-bounces+alex.bennee=linaro.org@nongnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom="qemu-arm-bounces+alex.bennee=linaro.org@nongnu.org"; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=redhat.com Received: from localhost ([::1]:43830 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1iCtvk-0004Ov-G0 for alex.bennee@linaro.org; Tue, 24 Sep 2019 19:09:12 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:46789) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1iCttz-0002B6-9C for qemu-arm@nongnu.org; Tue, 24 Sep 2019 19:07:24 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1iCttx-000393-U8 for qemu-arm@nongnu.org; Tue, 24 Sep 2019 19:07:23 -0400 Received: from mx1.redhat.com ([209.132.183.28]:47514) by eggs.gnu.org with esmtps (TLS1.0:DHE_RSA_AES_256_CBC_SHA1:32) (Exim 4.71) (envelope-from ) id 1iCttx-00037f-C5; Tue, 24 Sep 2019 19:07:21 -0400 Received: from smtp.corp.redhat.com (int-mx08.intmail.prod.int.phx2.redhat.com [10.5.11.23]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mx1.redhat.com (Postfix) with ESMTPS id 5D7C57622B; Tue, 24 Sep 2019 23:07:18 +0000 (UTC) Received: from x1.home (ovpn-118-102.phx2.redhat.com [10.3.118.102]) by smtp.corp.redhat.com (Postfix) with ESMTP id BA46219C7F; Tue, 24 Sep 2019 23:07:12 +0000 (UTC) Date: Tue, 24 Sep 2019 15:31:44 -0600 From: Alex Williamson To: Eric Auger Subject: Re: [PATCH v4 0/2] Allow memory_region_register_iommu_notifier() to fail Message-ID: <20190924153144.0a656a41@x1.home> In-Reply-To: <20190924082517.13724-1-eric.auger@redhat.com> References: <20190924082517.13724-1-eric.auger@redhat.com> Organization: Red Hat MIME-Version: 1.0 Content-Type: text/plain; charset=US-ASCII Content-Transfer-Encoding: 7bit X-Scanned-By: MIMEDefang 2.84 on 10.5.11.23 X-Greylist: Sender IP whitelisted, not delayed by milter-greylist-4.5.16 (mx1.redhat.com [10.5.110.26]); Tue, 24 Sep 2019 23:07:18 +0000 (UTC) X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] [fuzzy] X-Received-From: 209.132.183.28 X-BeenThere: qemu-arm@nongnu.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: peter.maydell@linaro.org, aik@ozlabs.ru, qemu-devel@nongnu.org, peterx@redhat.com, qemu-arm@nongnu.org, pbonzini@redhat.com, david@gibson.dropbear.id.au, eric.auger.pro@gmail.com Errors-To: qemu-arm-bounces+alex.bennee=linaro.org@nongnu.org Sender: "Qemu-arm" X-TUID: tGbkswflO4F9 On Tue, 24 Sep 2019 10:25:15 +0200 Eric Auger wrote: > This series allows the memory_region_register_iommu_notifier() > to fail. As of now, when a MAP notifier is attempted to be > registered along with SMMUv3 or AMD IOMMU, we exit in the IOMMU > MR notify_flag_changed() callback. > > In case of VFIO assigned device hotplug, this could be handled > more nicely directly within the VFIO code, simply rejecting > the hotplug without exiting. This is what the series achieves > by handling the memory_region_register_iommu_notifier() returned > value and Error object. > > To propagate errors collected during vfio_listener_region_add() > we now store the error handle inside the VFIO container instead > of a returned value. > > The message now is: > (QEMU) device_add id=hot0 driver=vfio-pci host=0000:89:00.0 bus=pcie.1 > {"error": {"class": "GenericError", "desc": "vfio 0000:89:00.0: failed > to setup container for group 2: memory listener initialization failed: > Region smmuv3-iommu-memory-region-0-6: device 01.00.0 requires iommu MAP > notifier which is not currently supported"}} > > Best Regards > > Eric > > This series can be found at: > https://github.com/eauger/qemu/tree/v4.1.0_register_iommu_notifier_fail_v4 > > History: > > v3 -> v4: > - added Peter's R-b on 2d patch > - 1st patch: restore hw_error, remove useless ret assignment, improve > DMA host window error message, remove local mr variable > > v2 -> v3: > - also pass an Error handle (suggested by Peter) > > v1 -> v2: > - Intel IOMMU now handles the problem differently with machine init done > notifier and machine hotplug allowed hook. > - use assert(!ret) > - message rewording in SMMUv3 > > Follow-up of "VFIO/SMMUv3: Fail on VFIO/HW nested paging detection" > https://patchew.org/QEMU/20190829090141.21821-1-eric.auger@redhat.com/ > > > Eric Auger (2): > vfio: Turn the container error into an Error handle > memory: allow memory_region_register_iommu_notifier() to fail > > exec.c | 10 +++++-- > hw/arm/smmuv3.c | 18 ++++++------ > hw/i386/amd_iommu.c | 17 +++++++----- > hw/i386/intel_iommu.c | 8 ++++-- > hw/ppc/spapr_iommu.c | 8 ++++-- > hw/vfio/common.c | 52 +++++++++++++++++++++++------------ > hw/vfio/spapr.c | 4 ++- > hw/virtio/vhost.c | 9 ++++-- > include/exec/memory.h | 21 ++++++++++---- > include/hw/vfio/vfio-common.h | 2 +- > memory.c | 31 +++++++++++++-------- > 11 files changed, 120 insertions(+), 60 deletions(-) For series, Acked-by: Alex Williamson Paolo, would this go in through you given the memory API changes and greater girth in patch 2/2? Thanks, Alex