Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1755042AbbEVCHW (ORCPT ); Thu, 21 May 2015 22:07:22 -0400 Received: from mga01.intel.com ([192.55.52.88]:51275 "EHLO mga01.intel.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1752558AbbEVCHU (ORCPT ); Thu, 21 May 2015 22:07:20 -0400 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.13,473,1427785200"; d="scan'208";a="496835869" From: Lu Baolu To: Heikki Krogerus , Greg Kroah-Hartman Cc: David Cohen , linux-usb@vger.kernel.org, linux-kernel@vger.kernel.org, qiuxu.zhuo@intel.com, Lu Baolu Subject: [PATCH v2 1/1] usb: ulpi: ulpi_init should be executed in subsys_initcall Date: Fri, 22 May 2015 10:07:05 +0800 Message-Id: <1432260425-2350-1-git-send-email-baolu.lu@linux.intel.com> X-Mailer: git-send-email 2.1.4 Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Length: 1760 Lines: 49 Many drivers and modules depend on ULPI bus registeration to register ULPI interfaces and drivers. It's more appropriate to register ULPI bus in subsys_initcall instead of module_init. Kernel panic has been reported with some kind of kernel config. [0.746856] kernel BUG at drivers/base/driver.c:153! [0.752418] invalid opcode: 0000 [#1] PREEMPT SMP [0.757804] Modules linked in: [0.893985] Call Trace: [0.896729] [] ? ulpi_register_driver+0x21/0x30 [0.903654] [] tusb1210_driver_init+0x10/0x12 [0.910386] [] do_one_initcall+0xd8/0x200 [0.916729] [] kernel_init_freeable+0x196/0x21e [0.923655] [] ? rest_init+0x90/0x90 [0.929509] [] kernel_init+0xe/0xf0 [0.935266] [] ret_from_fork+0x42/0x70 [0.941315] [] ? rest_init+0x90/0x90 This patch fixes this kind of kernel panic by putting ulpi_init in subsys_initcall(). Reported-by: Zhuo Qiuxu Signed-off-by: Lu Baolu --- drivers/usb/common/ulpi.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/drivers/usb/common/ulpi.c b/drivers/usb/common/ulpi.c index 0e6f968..01c0c04 100644 --- a/drivers/usb/common/ulpi.c +++ b/drivers/usb/common/ulpi.c @@ -242,7 +242,7 @@ static int __init ulpi_init(void) { return bus_register(&ulpi_bus); } -module_init(ulpi_init); +subsys_initcall(ulpi_init); static void __exit ulpi_exit(void) { -- 2.1.4 -- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/