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 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 smtp.lore.kernel.org (Postfix) with ESMTPS id 0912AC433F5 for ; Mon, 11 Apr 2022 14:16:27 +0000 (UTC) Received: from localhost ([::1] helo=shelob.surriel.com) by shelob.surriel.com with esmtp (Exim 4.94.2) (envelope-from ) id 1ndups-0004qQ-Si; Mon, 11 Apr 2022 10:16:08 -0400 Received: from mscreen.etri.re.kr ([129.254.9.16]) by shelob.surriel.com with esmtps (TLS1.2) tls TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA (Exim 4.94.2) (envelope-from ) id 1ndupp-0004pE-3T for kernelnewbies@kernelnewbies.org; Mon, 11 Apr 2022 10:16:05 -0400 Received: from unknown (HELO send001-relay.gov-dooray.com) (211.180.235.152) by 129.254.9.16 with ESMTP; 11 Apr 2022 23:15:59 +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 41e6111f6254381f; Mon, 11 Apr 2022 23:15:59 +0900 DKIM-Signature: a=rsa-sha256; b=D1xaR1varPDzMkaDlrLg+eNeBSSW26nerNxk05zMcvXfOi9GXJUlEjcQ/iV2ulA9GgwYCXLXDS /mVO3tkvdAmszGT66zYaNOzRGfhpThy5OFalIZ5hoYhHmJ/hGf5/xkFr2cnKCkDExa1KrpUzhqeU CN5o2WK+P+MF301JfCUNUwqJWbQy47+ytwm7kozMmJPXFi8h5oDEbEbzV8B9Qr73QqHP7fyi7y2Q s6JGbb8b44XQov5WrNFAstsvO9Tjzqhw8zOs3dSVY3ftMzRDCTfzSGsijefxBd8VFvs00rO1lZNs kJ+DVMJlaGCGon/j4+XLZwUjhWHikDuuk6evqGZA==; c=relaxed/relaxed; s=selector; d=dooray.com; v=1; bh=dxCLog2LI9k8HZsSpeciyEQqclUIobekFQLVNffzDEU=; 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 2cfc7e146254381f; Mon, 11 Apr 2022 23:15:59 +0900 From: "Chan Kim" To: "'Greg KH'" References: <049201d84b04$951cbab0$bf563010$@etri.re.kr> <06c401d84da0$bc1a5ca0$344f15e0$@etri.re.kr> <06cf01d84da5$f7a1fa80$e6e5ef80$@etri.re.kr> In-Reply-To: Subject: RE: Can't understand /proc/interrupts output for GICv3 case Date: Mon, 11 Apr 2022 23:15:57 +0900 Message-ID: <06fc01d84dae$a9e4ebf0$fdaec3d0$@etri.re.kr> MIME-Version: 1.0 X-Mailer: Microsoft Outlook 16.0 Content-Language: ko Thread-Index: AQKunJY+kgmmewJd0lkF9aO9YfiVjAIaT1gqAvLDBPgCO+ksNAHbZ20SqvT7fGA= Cc: kernelnewbies@kernelnewbies.org, 'qemu-discuss' 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 > > > What bus type is your driver written for? > > > > > That sounds very logical. In my case I added it to system bus. > > What exactly do you mean by "system bus"? > I meant 'sysbus' in qemu code that I showed in the qemu code. And I think it's the CPU bus. > > Where is your kernel code? > This is the init function of my char driver. I thought if the struct cdev contains struct device, maybe I could use the struct device's of_node to call of_irq_get but it doesn't. And I remember I've seen the cdev in usually contained in the driver data of platform driver(?). Can I implement platform driver in kernel module form? Below is the char driver init code. Currently it's request_irq(6, ... ) but I want to know out the number 6 using program. If you have any advice, please tell me. static int __init chr_driver_init(void) { int ret; /* Allocating Major number */ if ((alloc_chrdev_region(&dev, 0, 1, "axpu_Dev")) < 0) { printk(KERN_INFO"Cannot allocate the major number..\n"); return -1; } printk(KERN_INFO"Major = %d Minor = %d..\n",MAJOR(dev),MINOR(dev)); /* creating cdev structure */ cdev_init(&axpu_cdev, &fops); axpu_cdev.owner = THIS_MODULE; /* Adding character device to the system */ if ((cdev_add(&axpu_cdev,dev,1)) < 0) { printk(KERN_INFO "Cannot add the device to the system...\n"); goto r_class; } /* creating struct class */ if ((dev_class = class_create(THIS_MODULE, "axpu_class")) == NULL) { printk(KERN_INFO "cannot create the struct class...\n"); goto r_class; } /* for interrupt test !! */ /* for vanilla work-around.. already made by mkdev */ if ((device_create(dev_class, NULL, dev, NULL, "axpu_device")) == NULL) { printk(KERN_INFO "cannot create the device ..\n"); goto r_device; } else { printk(KERN_INFO "axpu_device created..\n"); } /**/ vaddr = ioremap(AXPU_BASE, 0x80000); if(!vaddr) { printk(KERN_INFO"Failed to map the address.\n"); release_mem_region(AXPU_BASE,AXPU_SIZE); return 1; } printk("----- AXPU_BASE mapped at vaddr = %px\n", vaddr); ret = request_irq(6, axpu_irq_handler, IRQF_SHARED, "axpu_irq", &axpu_cdev); printk("request_irq returned %d\n", ret); // -EINVAL printk(KERN_INFO "Device driver inserted ..done properly..\n"); return 0; r_device : class_destroy(dev_class); r_class : unregister_chrdev_region(dev,1); return -1; } Thank you. Chan Kim _______________________________________________ Kernelnewbies mailing list Kernelnewbies@kernelnewbies.org https://lists.kernelnewbies.org/mailman/listinfo/kernelnewbies