Finding when a chip was supported in the kernel

Bjørn Mork bjorn at mork.no
Mon Feb 15 10:43:30 EST 2016


Carlo Caione <carlo at caione.org> writes:

> On Mon, Feb 15, 2016 at 3:44 PM, Rob Groner <rgroner at rtd.com> wrote:
>>
>>
>> Is there some specific place/way I can find the specific kernel version when
>> support for an arbitrary chip was added? An example is the Intel 82574
>> Ethernet chip.  I’m finding that google is failing me for finding the
>> specific kernel of inclusion.  This comes up somewhat often here at work
>> (having to determine how far back our Linux support goes), so I’m trying to
>> find the best way to determine this.
>
> git log --reverse $driver

I often find it easier to use git blame for such stuff, looking at the
dates of code related to the chip/feature in question. At least in cases
like this where a single driver supports a number of different chips.
You'll have to verify the results with "git show" of course, in case
everything was refactored.

The 82574 is a good example (since the authors made it easy with that
comment):

1st attempt returns a code refactoring commit:

bjorn at nemi:/usr/local/src/git/linux$ git log --reverse drivers/net/ethernet/intel/e1000e/82571.c
commit dee1ad47f2ee75f5146d83ca757c1b7861c34c3b
Author: Jeff Kirsher <jeffrey.t.kirsher at intel.com>
Date:   Thu Apr 7 07:42:33 2011 -0700

    intel: Move the Intel wired LAN drivers
    
    Moves the Intel wired LAN drivers into drivers/net/ethernet/intel/ and
    the necessary Kconfig and Makefile changes.
    
    Signed-off-by: Jeff Kirsher <jeffrey.t.kirsher at intel.com>


2nd attempt returns the commit adding the driver, but that specific chip
wasn't supported (a fact which might not be easy to sport using this
method):

bjorn at nemi:/usr/local/src/git/linux$ git log --reverse dee1ad47f2ee^ -- drivers/net/e1000e/82571.c
commit bc7f75fa97884d41efbfde1397b621fefb2550b4
Author: Auke Kok <auke-jan.h.kok at intel.com>
Date:   Mon Sep 17 12:30:59 2007 -0700

    [E1000E]: New pci-express e1000 driver (currently for ICH9 devices only)
    
    This driver implements support for the ICH9 on-board LAN ethernet
    device. The device is similar to ICH8.
    
    The driver encompasses code to support 82571/2/3, es2lan and ICH8
    devices as well, but those device IDs are disabled and will be
    "lifted" from the e1000 driver over one at a time once this driver
    receives some more live time.



So you still don't know when the 82574 support was added....


git blame on the other hand, gives you this immediately:

bjorn at nemi:/usr/local/src/git/linux$ git blame drivers/net/ethernet/intel/e1000e/82571.c
e78b80b1079e1 drivers/net/ethernet/intel/e1000e/82571.c (David Ertman       2014-02-04 01:56:06 +0000    1) /* Intel PRO/1000 Linux driver
[..]
bc7f75fa97884 drivers/net/e1000e/82571.c                (Auke Kok           2007-09-17 12:30:59 -0700   21) 
e921eb1ac411a drivers/net/ethernet/intel/e1000e/82571.c (Bruce Allan        2012-11-28 09:28:37 +0000   22) /* 82571EB Gigabit Ethernet Controller
1605927fcee41 drivers/net/e1000e/82571.c                (Bruce Allan        2008-11-21 16:51:06 -0800   23)  * 82571EB Gigabit Ethernet Controller (Copper)
bc7f75fa97884 drivers/net/e1000e/82571.c                (Auke Kok           2007-09-17 12:30:59 -0700   24)  * 82571EB Gigabit Ethernet Controller (Fiber)
ad68076e07fa0 drivers/net/e1000e/82571.c                (Bruce Allan        2008-03-28 09:15:03 -0700   25)  * 82571EB Dual Port Gigabit Mezzanine Adapter
ad68076e07fa0 drivers/net/e1000e/82571.c                (Bruce Allan        2008-03-28 09:15:03 -0700   26)  * 82571EB Quad Port Gigabit Mezzanine Adapter
ad68076e07fa0 drivers/net/e1000e/82571.c                (Bruce Allan        2008-03-28 09:15:03 -0700   27)  * 82571PT Gigabit PT Quad Port Server ExpressMo
bc7f75fa97884 drivers/net/e1000e/82571.c                (Auke Kok           2007-09-17 12:30:59 -0700   28)  * 82572EI Gigabit Ethernet Controller (Copper)
bc7f75fa97884 drivers/net/e1000e/82571.c                (Auke Kok           2007-09-17 12:30:59 -0700   29)  * 82572EI Gigabit Ethernet Controller (Fiber)
bc7f75fa97884 drivers/net/e1000e/82571.c                (Auke Kok           2007-09-17 12:30:59 -0700   30)  * 82572EI Gigabit Ethernet Controller
bc7f75fa97884 drivers/net/e1000e/82571.c                (Auke Kok           2007-09-17 12:30:59 -0700   31)  * 82573V Gigabit Ethernet Controller (Copper)
bc7f75fa97884 drivers/net/e1000e/82571.c                (Auke Kok           2007-09-17 12:30:59 -0700   32)  * 82573E Gigabit Ethernet Controller (Copper)
bc7f75fa97884 drivers/net/e1000e/82571.c                (Auke Kok           2007-09-17 12:30:59 -0700   33)  * 82573L Gigabit Ethernet Controller
4662e82b2cb41 drivers/net/e1000e/82571.c                (Bruce Allan        2008-08-26 18:37:06 -0700   34)  * 82574L Gigabit Network Connection
8c81c9c315b7e drivers/net/e1000e/82571.c                (Alexander Duyck    2009-03-19 01:12:27 +0000   35)  * 82583V Gigabit Network Connection
bc7f75fa97884 drivers/net/e1000e/82571.c                (Auke Kok           2007-09-17 12:30:59 -0700   36)  */
bc7f75fa97884 drivers/net/e1000e/82571.c                (Auke Kok           2007-09-17 12:30:59 -0700   37) 
bc7f75fa97884 drivers/net/e1000e/82571.c                (Auke Kok           2007-09-17 12:30:59 -0700   38) #include "e1000.h"



And you can verify by looking at the commit:


bjorn at nemi:/usr/local/src/git/linux$ git show 4662e82b2cb41
commit 4662e82b2cb41c60826e50474dd86dd5c6372b0c
Author: Bruce Allan <bruce.w.allan at intel.com>
Date:   Tue Aug 26 18:37:06 2008 -0700

    e1000e: add support for new 82574L part
    
    This new part has the same feature set as previous parts with the addition
    of MSI-X support.
    
    Signed-off-by: Bruce Allan <bruce.w.allan at intel.com>
    Signed-off-by: Jeff Kirsher <jeffrey.t.kirsher at intel.com>
    Signed-off-by: Jeff Garzik <jgarzik at redhat.com>

[etc]



I'll admit that this example was extremely easy.  Most of the time you'll
have to figure out the relevant commits by looking at code lines related
to that chip.  But it's still easier to look at git blame than the log
if the support was added to an existing driver.


Bjørn



More information about the Kernelnewbies mailing list