Received: by 10.192.165.156 with SMTP id m28csp1857212imm; Thu, 12 Apr 2018 04:52:50 -0700 (PDT) X-Google-Smtp-Source: AIpwx48JeLc3urbHQv7B6SGVtCJpd4w3iJ8bmy4X3/TdqUgSDXRxLkY1LLqsiCZDS35FOuEjLLb4 X-Received: by 10.99.36.7 with SMTP id k7mr461750pgk.63.1523533970215; Thu, 12 Apr 2018 04:52:50 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1523533970; cv=none; d=google.com; s=arc-20160816; b=sHotMZB8+WlJFb9DpM09Gxub2cjK4fV+0CiyQ3NvxnN/4MfZXYxjPTRicky01ZFaYA V1E/bamtUXvjrw+nsIiR3reDpcm6YdZjlhKmS3PLv1t13ZrJ0AARY4Kb0URnU2sg3sx9 c2lGWgwU7Oy9bQYjJcW+73pyJxvVwALFsC+6Y0ZtoHwsKTXOZbcFfWhY/LMNRLJVBO11 85IP08xo1bifZgu6EcbhVwpCv8uKxTsdBSZG4zde26hqZcA/jHyX2wVDxPVxmI/G4Qbk UCop7/N3vmbyLsVdyfNkIsgnZSMXGu9lu22JbrKB83D41p0ryt+vTTsVbk9cTkRHNHeA dxHA== 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:in-reply-to :mime-version:user-agent:date:message-id:from:cc:references:to :subject:arc-authentication-results; bh=yrYAojisCu+xpmGa6J4per0Q7wCbFwENxdhYZB1V+VE=; b=MQs2gzn1bLm7/3BjNInoy2JobzfF/E424Lbx3c+iAnIbHb9zmRcyO7pU0d4GnIYOkV THrV25DdK+BX5MSLUhnIMPDZfDW38u6W+TqhCRArJM/RwwU6p9TKYksP3mH5Z2Dz0f6H VwcDCAkEaADuWNiB48cFIKyvgUcY6uRAKbFeejV/ytBFe3uGTUsIIaFvXixAelx9D8Ae /yEzNApAE7la4z2DY1grjVcLP5Q51VOMilMItAq5uAug0WIK4k7zdhZeXbfmIWv05WWu jsvuAUF302vGsXVlDih5bqNMk5yRUPFo4PVUp9hQ/hV0c0+K56p2VIMCNVxmIEKqfW3O Es6A== 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=redhat.com Return-Path: Received: from vger.kernel.org (vger.kernel.org. [209.132.180.67]) by mx.google.com with ESMTP id f8si2139747pgt.243.2018.04.12.04.52.13; Thu, 12 Apr 2018 04:52:50 -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=redhat.com Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1752759AbeDLLtP (ORCPT + 99 others); Thu, 12 Apr 2018 07:49:15 -0400 Received: from mx3-rdu2.redhat.com ([66.187.233.73]:32854 "EHLO mx1.redhat.com" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S1751832AbeDLLtK (ORCPT ); Thu, 12 Apr 2018 07:49:10 -0400 Received: from smtp.corp.redhat.com (int-mx03.intmail.prod.int.rdu2.redhat.com [10.11.54.3]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mx1.redhat.com (Postfix) with ESMTPS id DBBFEEC010; Thu, 12 Apr 2018 11:49:09 +0000 (UTC) Received: from localhost.localdomain (ovpn-116-192.ams2.redhat.com [10.36.116.192]) by smtp.corp.redhat.com (Postfix) with ESMTPS id 5001810B00AD; Thu, 12 Apr 2018 11:49:05 +0000 (UTC) Subject: Re: [PATCH v3 2/2] vfio: platform: Add generic DT reset support To: Geert Uytterhoeven References: <1523438149-16433-1-git-send-email-geert+renesas@glider.be> <1523438149-16433-4-git-send-email-geert+renesas@glider.be> Cc: Geert Uytterhoeven , Baptiste Reynal , Alex Williamson , Philipp Zabel , Rob Herring , Mark Rutland , KVM list , "open list:OPEN FIRMWARE AND FLATTENED DEVICE TREE BINDINGS" , Linux-Renesas , Linux Kernel Mailing List , Kaya Sinan From: Auger Eric Message-ID: <2e09425d-0f27-3069-3421-e454ee70e3b2@redhat.com> Date: Thu, 12 Apr 2018 13:49:04 +0200 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:45.0) Gecko/20100101 Thunderbird/45.4.0 MIME-Version: 1.0 In-Reply-To: Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 7bit X-Scanned-By: MIMEDefang 2.78 on 10.11.54.3 X-Greylist: Sender IP whitelisted, not delayed by milter-greylist-4.5.16 (mx1.redhat.com [10.11.55.1]); Thu, 12 Apr 2018 11:49:09 +0000 (UTC) X-Greylist: inspected by milter-greylist-4.5.16 (mx1.redhat.com [10.11.55.1]); Thu, 12 Apr 2018 11:49:09 +0000 (UTC) for IP:'10.11.54.3' DOMAIN:'int-mx03.intmail.prod.int.rdu2.redhat.com' HELO:'smtp.corp.redhat.com' FROM:'eric.auger@redhat.com' RCPT:'' Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Hi Geert, On 12/04/18 13:32, Geert Uytterhoeven wrote: > Hi Eric, > > On Thu, Apr 12, 2018 at 12:31 PM, Auger Eric wrote: >> On 11/04/18 11:15, Geert Uytterhoeven wrote: >>> Vfio-platform requires reset support, provided either by ACPI, or, on DT >>> platforms, by a device-specific reset driver matching against the >>> device's compatible value. >>> >>> On many SoCs, devices are connected to an SoC-internal reset controller. >>> If the reset hierarchy is described in DT using "resets" properties, >>> such devices can be reset in a generic way through the reset controller >>> subsystem. Hence add support for this, avoiding the need to write >>> device-specific reset drivers for each single device on affected SoCs. >>> >>> Devices that do require a more complex reset procedure can still provide >>> a device-specific reset driver, as that takes precedence. >>> >>> Note that this functionality depends on CONFIG_RESET_CONTROLLER=y, and >>> becomes a no-op (as in: "No reset function found for device") if reset >>> controller support is disabled. >>> >>> Signed-off-by: Geert Uytterhoeven >>> Reviewed-by: Philipp Zabel > >>> --- a/drivers/vfio/platform/vfio_platform_common.c >>> +++ b/drivers/vfio/platform/vfio_platform_common.c > >>> @@ -127,8 +130,16 @@ static int vfio_platform_get_reset(struct vfio_platform_device *vdev) >>> vdev->of_reset = vfio_platform_lookup_reset(vdev->compat, >>> &vdev->reset_module); >>> } >>> + if (vdev->of_reset) >>> + return 0; >>> + >>> + rstc = of_reset_control_get_exclusive(vdev->device->of_node, NULL); >> >> Shouldn't we prefer the top level reset_control_get_exclusive()? > > I guess that should work, too. > >> To make sure about the exclusive/shared terminology, does >> get_reset_control_get_exclusive() check we have an exclusive wire >> between this device and the reset controller? > > AFAIU, the "exclusive" means that only a single user can obtain access to > the reset, and it does not guarantee that we have an exclusive wire between > the device and the reset controller. > > The latter depends on the SoC's reset topology. If a reset wire is shared > by multiple devices (e.g. resets shared by PWM or Display Unit devices on > R-Car SoCs), exporting a subset of these devices to a guest is a bad idea, > indeed. So who's going to check this assigned device will not trigger a reset of other non assigned devices sharing the same reset controller? > > I guess the same thing can happen with the ACPI "_RST" method? ACPI spec _RST chapter says about _RST object: "This object executes a reset on the associated device or devices. If included in a device context, the reset must not affect any other ACPI-described de vices; if included in a power resource for reset (_PRR, Section 7.3.26) the reset must affect all ACPI-described devices that reference it. When this object is described in a device context, it executes a function level reset that only affects the device it is associated with; neither parent nor children should be affected by the execution of this reset. Executing this must only result in this device resetting without the device appearing as if it has been removed from the bus altogether, to prevent OSPM re-enumeration of devices on hot-pluggable buses (e.g. USB)." Adding Sinan in copy for clarification. Thanks Eric > > Gr{oetje,eeting}s, > > Geert >