To Understand the SATA device enumeration process I was studying the driver/ata/ata_piix.c which is showing as SATA host driver for my system in the output of lspci command.

00:1f.2 IDE interface: Intel Corporation NM10/ICH7 Family SATA Controller [IDE mode] (rev 01)
Subsystem: Elitegroup Computer Systems Device 2672
Kernel driver in use: ata_piix
Kernel modules: pata_acpi

AFAIK ,SATA Host controller is a PCI device connected on the PCI Bus. Now when the probe method of ata_piix.c executes it will initialize the Host controller and many other initialization sequence will be done in the probe call. In the end of the probe method below code execute :

/* perform each probe asynchronously */                                 
for (i = 0; i < host->n_ports; i++) {                                   
            struct ata_port *ap = host->ports[i];                           
            async_schedule(async_port_probe, ap);                           

So As per my understanding call to aync_schedule()will call to probe method of the SATA devices connected to the HOST ports one by one.Below are few of my queries

  1. Is my above understanding correct? This is how the SATA device enumeration works if no then suggest how the enumaration process of SATA device is handled by the Linux kernel.
  2. Please suggest how exactly aync_schedule()works?
  3. If ata_piix.c was used as kernel driver for the SATA Host controller then why the Kernel module used for device is showing as pata_acpi in the lspci command output?

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Browse other questions tagged or ask your own question.