I am looking for the basic kernel drivers to enable SATA support.

I have a Braswell (Intel SoC) setup and I would like to reduce the number of kernel drivers to a minimum. Does SATA support need the ATA drivers ? What about the SCSI drivers ? Or Device Mapper Support (from the RAID menu) ? It seems there is more than 10 different generic drivers needed to support SATA besides the manufacturer's driver.

I am using the linux kernel 4.4 and I could not find much information in the Documentation. It seems that the ATA, SATA and SCSI menuconfig options are scattered across multiple sections.

I guess the most important one is the libata driver, but it is unclear for me if they need the ATA or SCSI drivers

Device Drivers  --->
    Serial ATA and Parallel ATA drivers (libata)   --->

I searched the subject but didn't find a clear answer. I liked this answer about the historical perspective of ATA and SCSI and how they can talk to each other.

Also, would there be any major difference when enabling SATA for another SoC, like an ARM SoC, beside the vendor specific driver ? An ideal answer would refer to the specific options in menuconfig !

Thanks !

1 Answer 1


Partial answer:

The kernel layers are a bit complex, and I can't give you a complete picture. Today, nearly all storage devices use some kind of SCSI commands (which why they show up as /dev/sdX instead of /dev/hdX), though that can be transported over different mechanisms (ATA packets, or USB, or others). So you need at least:

  • The SATA driver for your particular hardware (possibly several modules, e.g. libahci)
  • The generic ATA layer (possibly several modules, including libata)
  • The generic SCSI layer, at least for the kind of storage devices you use (definitely several modules, including scsi_mod).

I think the kernel should be able to figure out the minimal dependencies itself in menuconfig: If you first disable everything, and then enable only the bottom driver (hardware specific) and the top driver (SCSI disk, CONFIG_BLK_DEV_SD, module sd_mod) you'll likely end up with a pretty minimal workable configuration.

  • Thanks for the confirmation, this is quite the picture that I had in mind: SATA modules depend on the basic ATA and SCSI modules. I also read that the eveolution of ATA to SATA brought more protocols to the ATA ecosystem (SFF, BMDMA, etc). I will try disabling these legacy modules and see how it works with this Braswell Soc. Commented May 29, 2017 at 18:12
  • I will accept your answer. Note that the SATA driver in menuconfig does not automatically select the necessary CONFIG_BLK_DEV_SD. Commented May 30, 2017 at 20:18
  • 1
    That's why I said bottom and top driver (which is sd_mod).
    – dirkt
    Commented May 30, 2017 at 20:54

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .