From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-3.5 required=3.0 tests=BAYES_00,DKIM_INVALID, DKIM_SIGNED,HEADER_FROM_DIFFERENT_DOMAINS,MAILING_LIST_MULTI,SPF_HELO_NONE, SPF_PASS,URIBL_BLOCKED autolearn=no autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id DA646C433B4 for ; Thu, 29 Apr 2021 00:56:37 +0000 (UTC) Received: from shelob.surriel.com (shelob.surriel.com [96.67.55.147]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mail.kernel.org (Postfix) with ESMTPS id 2416C61423 for ; Thu, 29 Apr 2021 00:56:37 +0000 (UTC) DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org 2416C61423 Authentication-Results: mail.kernel.org; dmarc=fail (p=none dis=none) header.from=etri.re.kr Authentication-Results: mail.kernel.org; spf=pass smtp.mailfrom=kernelnewbies-bounces@kernelnewbies.org Received: from localhost ([::1] helo=shelob.surriel.com) by shelob.surriel.com with esmtp (Exim 4.94) (envelope-from ) id 1lbuyY-00067N-Bf; Wed, 28 Apr 2021 20:56:18 -0400 Received: from mscreen.etri.re.kr ([129.254.9.16]) by shelob.surriel.com with esmtps (TLS1.2) tls TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA (Exim 4.94) (envelope-from ) id 1lbuyV-00066U-P3 for kernelnewbies@kernelnewbies.org; Wed, 28 Apr 2021 20:56:16 -0400 Received: from unknown (HELO send001-relay.gov-dooray.com) (211.180.235.152) by 129.254.9.16 with ESMTP; 29 Apr 2021 09:56:07 +0900 X-Original-SENDERIP: 211.180.235.152 X-Original-MAILFROM: ckim@etri.re.kr X-Original-RCPTTO: kernelnewbies@kernelnewbies.org Received: from [10.162.225.112] (HELO smtp002-imp.gov-dooray.com) ([10.162.225.112]) by send001-relay.gov-dooray.com with SMTP id eab6f90e608a042a; Thu, 29 Apr 2021 09:56:10 +0900 DKIM-Signature: a=rsa-sha256; b=KF0fyFONMtipFFjgoze1mbM7c8cqT6pAJVqN/eyTygk4ULed9KRS4nKjTHFOinzKoU2jeTsWZN 3R4Tz/fsN5+bDdaVcqyog2xbeXqWQ9Coc+M7XN/rHe7xY2yOXhJ4lsHK4imTeZB5cXmCz2kLv9R+ FptwgbqaqZmHzFVMrpJAUhLlQKREzxShIVKTxOK/E3/2rU+1f8HHxbsCvsBEGCGKm1m2Wb2huf9A zubRzJBEkTaF8jCU2vvfcgWW5DBGqbOccyWo39C1E6wzUPjz8J0tbs/VkRu9WUEMWC4UCkm4LW77 cITwmeP0h/VEXd1DmBbnwvMYA2+QXhQ/BRD41Ojw==; c=relaxed/relaxed; s=selector; d=dooray.com; v=1; bh=9ATyGawzLOcxKJdwP8tJ3gI/ZlhGq8f0xas3sEQCaqc=; h=From:To:Subject:Message-ID; Received: from [129.254.132.39] (HELO CHANKIMPC) ([129.254.132.39]) by smtp002-imp.gov-dooray.com with SMTP id ae9850e7608a042a; Thu, 29 Apr 2021 09:56:10 +0900 From: To: "'Greg KH'" References: <014d01d73c34$df6dcd00$9e496700$@etri.re.kr> In-Reply-To: Subject: RE: can't find device_create funtion in a driver containing cdev (habanalabs) Date: Thu, 29 Apr 2021 09:56:09 +0900 Message-ID: <018201d73c92$7153fb60$53fbf220$@etri.re.kr> MIME-Version: 1.0 X-Mailer: Microsoft Outlook 16.0 Content-Language: ko Thread-Index: AQIq61fWlw8hCk/Icy9ZggSEq2SonAHsosr1qhPjT9A= Cc: kernelnewbies@kernelnewbies.org X-BeenThere: kernelnewbies@kernelnewbies.org X-Mailman-Version: 2.1.15 Precedence: list List-Id: Learn about the Linux kernel List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit Errors-To: kernelnewbies-bounces@kernelnewbies.org Hi, Greg KH, To me cdev_device_add seems to be calling only cdev_add(below). In this case since dev->devt already holds dev_t value ("hl%d"), it just sets cdev_set_parent and cdev_add. int cdev_device_add(struct cdev *cdev, struct device *dev) { int rc = 0; if (dev->devt) { cdev_set_parent(cdev, &dev->kobj); rc = cdev_add(cdev, dev->devt, 1); if (rc) return rc; } rc = device_add(dev); if (rc) cdev_del(cdev); return rc; } Are you sure cdev_device_add contains "device_create function"? Shouldn't device_create be called after class_create? Class_create is called much later inside the function device_cdev_sysfs_add later in hl_device_init function(line 1238). And device_cdev_sysfs_add contains this code. The hl_sysfs_init calls device_add_groups which calls sysfs_create_groups. Isn't this sysfs_create_groups function by any chance a group equivalent of device_create function? /* hl_sysfs_init() must be done after adding the device to the system */ rc = hl_sysfs_init(hdev); if (rc) { dev_err(hdev->dev, "failed to initialize sysfs\n"); goto delete_ctrl_cdev_device; } hdev->cdev_sysfs_created = true; Thanks for helps and regards, Chan Kim > -----Original Message----- > From: Greg KH > Sent: Thursday, April 29, 2021 3:32 AM > To: ckim@etri.re.kr > Cc: kernelnewbies@kernelnewbies.org > Subject: Re: can't find device_create funtion in a driver containing cdev > (habanalabs) > > On Wed, Apr 28, 2021 at 10:46:21PM +0900, ckim@etri.re.kr wrote: > > Hello list members, > > > > In habanalabs' goya chip driver, > > (https://elixir.bootlin.com/linux/v5.4.21/source/drivers/misc/habanala > > bs/dev > > ice.c#L1057) > > > > I can see cdev_init, cdev_add and class_create functions. > > > > Cdev_init is called insde device_init_cdev and cdev_add is called from > > device_cdev_sysfs_add -> cdev_device_add. > > > > I can see class_create being called too. But I couldn't find > > device_create function (which is used to make sysfs entry?) > > > > Can anyone tell me where device_create is called? (or where > > alternative method is being used?) > > Happens in the call to cdev_device_add() > _______________________________________________ Kernelnewbies mailing list Kernelnewbies@kernelnewbies.org https://lists.kernelnewbies.org/mailman/listinfo/kernelnewbies