[CentOS] Who is responsible to load NIC driver when boot up

Mon Apr 29 01:05:15 UTC 2019
wuzhouhui <wuzhouhui14 at mails.ucas.ac.cn>

> -----Original Messages-----
> From: "Stephen John Smoogen" <smooge at gmail.com>
> Sent Time: 2019-04-28 21:54:13 (Sunday)
> To: "CentOS mailing list" <centos at centos.org>
> Cc: 
> Subject: Re: [CentOS] Who is responsible to load NIC driver when boot up
> 
> On Sun, 28 Apr 2019 at 01:22, wuzhouhui <wuzhouhui14 at mails.ucas.ac.cn>
> wrote:
> 
> > > -----Original Messages-----
> > > From: "Steven Tardy" <sjt5atra at gmail.com>
> > > Sent Time: 2019-04-28 13:02:18 (Sunday)
> > > To: "CentOS mailing list" <centos at centos.org>
> > > Cc:
> > > Subject: Re: [CentOS] Who is responsible to load NIC driver when boot up
> > >
> > > On Sat, Apr 27, 2019 at 11:44 PM wuzhouhui <wuzhouhui14 at mails.ucas.ac.cn
> > >
> > > wrote:
> > >
> > > > I have a small question about NIC driver (e.g. i40e) loading. Who is
> > > > responsible to load i40e driver? And how does he knows we should load
> > > > i40e, instead of ixgbe?
> > >
> > >
> > > `depmod` may put hardware/driver lists into initramfs when `mkinitrd` is
> > > called when a new kernel is installed.
> > > Also check file: /lib/modules/`uname-r`/modules.alias
> > > The modules.alias contains PCI vendor/device IDs which can be found via
> > > `lspci -n`.
> > >
> > > Also you can `modinfo i40e` and `modinfo ixgbe` to see a list of PCI
> > > vendor/device IDs which each driver supports.
> > >
> > > Most of the time “it just works” be can be confusing tracking down
> > exactly
> > > why one driver loads instead of another.
> >
> > Thanks for you explanation. But who loads (modprobe) drivers, udev, kernel,
> > or others?
> >
> >
> During the initial boot on EL7, the initial ramdisk which uses dracut to
> set up that. After the initial boot, I believe udev is what is doing the
> work. There are a  ton of pretty good manual pages for all the different

I think you are right. I add a dump_stack() and printk() in virtio_net
driver, and following infos printed when boot up:

kernel: Pid: 737, comm: modprobe Not tainted 2.6.32-279.22.1.el6.local.x86_64 #1
kernel: Call Trace:
kernel: [<ffffffff81096ea5>] ? __blocking_notifier_call_chain+0x65/0x80
kernel: [<ffffffffa0044009>] ? init+0x9/0x3c [virtio_net]
kernel: [<ffffffff8100204c>] ? do_one_initcall+0x3c/0x1d0
kernel: [<ffffffff810af701>] ? sys_init_module+0xe1/0x250
kernel: [<ffffffff8100b072>] ? system_call_fastpath+0x16/0x1b
kernel: parent: udevd

> parts of dracut which explain how it is loading things, what order and how
> to add/remove things.
> 
> -- 
> Stephen J Smoogen.
> _______________________________________________
> CentOS mailing list
> CentOS at centos.org
> https://lists.centos.org/mailman/listinfo/centos