From patchwork Fri Mar 20 21:04:34 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: Laurent Pinchart X-Patchwork-Id: 3224 Return-Path: Received: from perceval.ideasonboard.com (perceval.ideasonboard.com [213.167.242.64]) by lancelot.ideasonboard.com (Postfix) with ESMTPS id 57F7960416 for ; Fri, 20 Mar 2020 22:04:45 +0100 (CET) Received: from pendragon.bb.dnainternet.fi (81-175-216-236.bb.dnainternet.fi [81.175.216.236]) by perceval.ideasonboard.com (Postfix) with ESMTPSA id AF7BC504; Fri, 20 Mar 2020 22:04:44 +0100 (CET) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=ideasonboard.com; s=mail; t=1584738284; bh=1lBy6fvpAnsk0xcwQFO4HBmg/T4GaSqsVJcqf55oAcU=; h=From:To:Cc:Subject:Date:From; b=wIhzLgcPDU6HKQL3C6aNLWi0A6+Gn1+O9SVy+PWY33mSvSHXzDneVEVy4+KZ5hv/X Ixx+kTe2WxD0HQKfFxOPYcJtAZBIQdgUH3YF//fCuqCFVbJX2cgxfo1RJGhl9s8Ujj N6vYm3tmtbXtgWjpkgvYzfq+qkw+IUwlIGTxChnQ= From: Laurent Pinchart To: libcamera-devel@lists.libcamera.org Date: Fri, 20 Mar 2020 23:04:34 +0200 Message-Id: <20200320210435.8876-1-laurent.pinchart@ideasonboard.com> X-Mailer: git-send-email 2.24.1 MIME-Version: 1.0 Subject: [libcamera-devel] [PATCH 1/2] Revert "libcamera: controls: Don't over-optimize ControlValue layout" X-BeenThere: libcamera-devel@lists.libcamera.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 20 Mar 2020 21:04:45 -0000 This is a partial revert of commit 0028536d70c7, removing a change that was incorrectly squashed. Signed-off-by: Laurent Pinchart Reviewed-by: Niklas Söderlund Acked-by: Kieran Bingham --- src/libcamera/device_enumerator_udev.cpp | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/src/libcamera/device_enumerator_udev.cpp b/src/libcamera/device_enumerator_udev.cpp index f5a482e35b86..87638c59761c 100644 --- a/src/libcamera/device_enumerator_udev.cpp +++ b/src/libcamera/device_enumerator_udev.cpp @@ -90,8 +90,7 @@ int DeviceEnumeratorUdev::addUdevDevice(struct udev_device *dev) return ret; } - if (!ret) - addDevice(media); + addDevice(media); return 0; } From patchwork Fri Mar 20 21:04:35 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: Laurent Pinchart X-Patchwork-Id: 3225 Return-Path: Received: from perceval.ideasonboard.com (perceval.ideasonboard.com [IPv6:2001:4b98:dc2:55:216:3eff:fef7:d647]) by lancelot.ideasonboard.com (Postfix) with ESMTPS id A564460416 for ; Fri, 20 Mar 2020 22:04:45 +0100 (CET) Received: from pendragon.bb.dnainternet.fi (81-175-216-236.bb.dnainternet.fi [81.175.216.236]) by perceval.ideasonboard.com (Postfix) with ESMTPSA id 21C4A9C0; Fri, 20 Mar 2020 22:04:45 +0100 (CET) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=ideasonboard.com; s=mail; t=1584738285; bh=hsM48vFdA9+aFQoGhP5/1fQekIzfhNEKVhLzCRvm7Is=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=UcP5Bx/tVz9EXdvdD1dyo24yNuyRpATxMN528gmk4GEJ3pOH8+/EEZLGfBpASe92L qw5HPhUVaIHy5dIZAAynQl2xIehgiFjXIpgenBMN7+AfwKkH9hyRqc7B6lO1QSna2Y EFJ34gvDU1mWuj/1J/xthVzCdiJeaneX7TYjGb4M= From: Laurent Pinchart To: libcamera-devel@lists.libcamera.org Date: Fri, 20 Mar 2020 23:04:35 +0200 Message-Id: <20200320210435.8876-2-laurent.pinchart@ideasonboard.com> X-Mailer: git-send-email 2.24.1 In-Reply-To: <20200320210435.8876-1-laurent.pinchart@ideasonboard.com> References: <20200320210435.8876-1-laurent.pinchart@ideasonboard.com> MIME-Version: 1.0 Subject: [libcamera-devel] [PATCH 2/2] libcamera: device_enumerator_udev: Don't add media device twice X-BeenThere: libcamera-devel@lists.libcamera.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 20 Mar 2020 21:04:45 -0000 Commit 68daa9302f90 ("libcamera: device_enumerator: Don't stop if one device fails") introduced a bug in device enumeration. Previously, a media device would only be added when all its dependencies were present, as indicated by populateMediaDevice() returning 0. The commit changed the logic to propagate the populateMediaDevice() return code up, but mistakenly added the media device to the enumerator even when dependencies were missing. This causes media devices enumerated with missing dependencies to be added twice, once when enumerating the media device itself, and a second time when all the dependencies are found. Fix it by deferring addition of the media device when dependencies are missing, and add debug messages to track this process. Fixes: 68daa9302f90 ("libcamera: device_enumerator: Don't stop if one device fails") Reported-by: Andrey Konovalov Signed-off-by: Laurent Pinchart Reviewed-by: Niklas Söderlund Reviewed-by: Kieran Bingham --- src/libcamera/device_enumerator_udev.cpp | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/src/libcamera/device_enumerator_udev.cpp b/src/libcamera/device_enumerator_udev.cpp index 87638c59761c..e55350544feb 100644 --- a/src/libcamera/device_enumerator_udev.cpp +++ b/src/libcamera/device_enumerator_udev.cpp @@ -90,6 +90,13 @@ int DeviceEnumeratorUdev::addUdevDevice(struct udev_device *dev) return ret; } + if (ret) { + LOG(DeviceEnumerator, Debug) + << "Defer media device " << media->deviceNode() + << " due to " << ret << " missing dependencies"; + return 0; + } + addDevice(media); return 0; } @@ -313,6 +320,9 @@ int DeviceEnumeratorUdev::addV4L2Device(dev_t devnum) deps->deps_.erase(devnum); if (deps->deps_.empty()) { + LOG(DeviceEnumerator, Debug) + << "All dependencies for media device " + << deps->media_->deviceNode() << " found"; addDevice(deps->media_); pending_.remove(*deps); }