Received: by 2002:a25:8b91:0:0:0:0:0 with SMTP id j17csp13330951ybl; Sun, 29 Dec 2019 09:27:57 -0800 (PST) X-Google-Smtp-Source: APXvYqzHt3nbLmQ4ZlP7zU4AnctekFBDBuGoluwbt5LMvTA8YAeE9HZxCacNQyPHhR38vrMtyCU0 X-Received: by 2002:a05:6830:1607:: with SMTP id g7mr69716958otr.320.1577640477905; Sun, 29 Dec 2019 09:27:57 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1577640477; cv=none; d=google.com; s=arc-20160816; b=vYK9QZY8FslyQPr/2KTCq8MczxL013ztgKS89HmIX0Tk9JfoLwpGeeE7FDq4T8vf0t lxPWLCuxFe15h1DLM9qg/5FeMY4cgeYlSZuJLFjLPN6GrVojbUDJ/EE9N/xoIQHfZe3n 3BbkzFs+z/2nL+J06SAlPhA2A+GFba2YltuGTQeMglGrNPickTvKRXs+xqchgSyu65lB 7jnPRqjC2KDfoxJbel0y5tbMM+fAB8HWNTIAddnFTP5peBHEIZ8VPRrw0psw86QW4C1v +Cy3eRrlzpmFM7XW0BoFLdQTbjSYyhVRf+Wmdshhi/PnDMDEoxEzy5fWHo/THSP4QuEr eGcA== 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:mime-version :user-agent:references:in-reply-to:message-id:date:subject:cc:to :from:dkim-signature; bh=qLnDXibhWJVQhjLMwKanXS21F/b5O0Rmpq0aSkCq1fk=; b=Jbc14NsMAP6bPlMxyuNv5hny2fYW0hjLJOr2D3Niz+fGszUFTIbCZm2f6LCTos563V /2W5jnxJGmtRhq8N+3KFfstqDqUzM17aT2Bp22uCKLBMXg4inQVvS5bBfGdzYvqc/V+N snLhRcMwU28OQVQ1uQ0fpESyE0dEDqOFkZXiNg3GCpXT2Mv4My4CHKUn7zsW2ZUqXNG/ z+1StYwk6II9VJXwdt3/CZjkQCzbp+MQ1yAyJciNQDjCrNTjLHMwrTkSQyP/7r4tU1J4 pzsz0Cvaz0eYq3LZDwyGwLR/6LlxE7n0eSeSr6I4nucj2XGfzihE4c1v8v5CMBJQj3XW zLHw== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@kernel.org header.s=default header.b=2qiB4Rt8; 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 Return-Path: Received: from vger.kernel.org (vger.kernel.org. [209.132.180.67]) by mx.google.com with ESMTP id z10si22513957oto.36.2019.12.29.09.27.46; Sun, 29 Dec 2019 09:27:57 -0800 (PST) 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; dkim=pass header.i=@kernel.org header.s=default header.b=2qiB4Rt8; 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 Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1728047AbfL2RZp (ORCPT + 99 others); Sun, 29 Dec 2019 12:25:45 -0500 Received: from mail.kernel.org ([198.145.29.99]:45760 "EHLO mail.kernel.org" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1727687AbfL2RZk (ORCPT ); Sun, 29 Dec 2019 12:25:40 -0500 Received: from localhost (83-86-89-107.cable.dynamic.v4.ziggo.nl [83.86.89.107]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mail.kernel.org (Postfix) with ESMTPSA id 3A83520409; Sun, 29 Dec 2019 17:25:39 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=default; t=1577640339; bh=u1vbAAODFFibUTO2yMqM38STXoTtYukUrreTORXp/oo=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=2qiB4Rt8zVakqw5p/5MACHIJKN5YnjL8z9QW1SyKRl1geAYVkIJkLXMNLCj4qytaS NWhbuA6/E9BysF3xbTd7Sx8SG2YLrMRhop27O9F7iPBNPUvlUS/uxRUjiKHLOZ3Owj JjQlzN1IpX5yftFr+IF064G7Jtvykm7EgQoT/lSg= From: Greg Kroah-Hartman To: linux-kernel@vger.kernel.org Cc: Greg Kroah-Hartman , stable@vger.kernel.org, Sudip Mukherjee , Sasha Levin Subject: [PATCH 4.14 116/161] parport: load lowlevel driver if ports not found Date: Sun, 29 Dec 2019 18:19:24 +0100 Message-Id: <20191229162432.956449135@linuxfoundation.org> X-Mailer: git-send-email 2.24.1 In-Reply-To: <20191229162355.500086350@linuxfoundation.org> References: <20191229162355.500086350@linuxfoundation.org> User-Agent: quilt/0.66 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org From: Sudip Mukherjee [ Upstream commit 231ec2f24dad18d021b361045bbd618ba62a274e ] Usually all the distro will load the parport low level driver as part of their initialization. But we can get into a situation where all the parallel port drivers are built as module and we unload all the modules at a later time. Then if we just do "modprobe parport" it will only load the parport module and will not load the low level driver which will actually register the ports. So, check the bus if there is any parport registered, if not, load the low level driver. We can get into the above situation with all distro but only Suse has setup the alias for "parport_lowlevel" and so it only works in Suse. Users of Debian based distro will need to load the lowlevel module manually. Signed-off-by: Sudip Mukherjee Link: https://lore.kernel.org/r/20191016144540.18810-3-sudipm.mukherjee@gmail.com Signed-off-by: Greg Kroah-Hartman Signed-off-by: Sasha Levin --- drivers/parport/share.c | 21 +++++++++++++++++++++ 1 file changed, 21 insertions(+) diff --git a/drivers/parport/share.c b/drivers/parport/share.c index 7b4ee33c1935..15c81cffd2de 100644 --- a/drivers/parport/share.c +++ b/drivers/parport/share.c @@ -230,6 +230,18 @@ static int port_check(struct device *dev, void *dev_drv) return 0; } +/* + * Iterates through all the devices connected to the bus and return 1 + * if the device is a parallel port. + */ + +static int port_detect(struct device *dev, void *dev_drv) +{ + if (is_parport(dev)) + return 1; + return 0; +} + /** * parport_register_driver - register a parallel port device driver * @drv: structure describing the driver @@ -282,6 +294,15 @@ int __parport_register_driver(struct parport_driver *drv, struct module *owner, if (ret) return ret; + /* + * check if bus has any parallel port registered, if + * none is found then load the lowlevel driver. + */ + ret = bus_for_each_dev(&parport_bus_type, NULL, NULL, + port_detect); + if (!ret) + get_lowlevel_driver(); + mutex_lock(®istration_lock); if (drv->match_port) bus_for_each_dev(&parport_bus_type, NULL, drv, -- 2.20.1