# ATA driver skipping ata0 and ata1 on SATA-only system?



## jem (Nov 17, 2009)

Having recently installed FreeBSD on new hardware, I've noticed that the ATA driver skips ata0 and ata1 when numbering the SATA controllers it finds (and also skips ad0-3 when numbering disks, due to the ATA_STATIC_ID kernel option).

I can only assume this is some kind of legacy thing to leave space for the dual channel PATA controller that nearly all motherboards used to have.  However this motherboard doesn't have any form of PATA controller so skipping ata0 and 1 seems unnecessary.

Is there anyway to disable this reservation of ata0-1 device names?  Is there any practical reason why the ATA drive can't just number controllers in the order that they are detected, starting from zero?

I realise this is only a cosmetic thing and doesn't cause any problems.  I'm just curious why it's done that way.

EDIT: Wondering if removing the ata related lines from /boot/device.hints will prevent this skipping.  I'll give it a try.


----------



## SirDice (Nov 17, 2009)

ad0-3 are IDE drives. Ata0 and ata1 are the IDE controllers.


----------



## jem (Nov 17, 2009)

I realise that's what the device names are reserved for, but on a system where IDE devices don't exist, why bother making that reservation?


----------



## SirDice (Nov 17, 2009)

Probably to avoid confusion.


----------



## fronclynne (Nov 21, 2009)

If it really bothers you, you might look into using the ahci(4) or siis(4) drivers if your SATA controller is compatible.

Edit: man pages links are dead ends.  Bah.


----------



## jem (Nov 23, 2009)

Thanks for the suggestion.  I hadn't noticed that a native AHCI driver exists.  I added ahci_load="YES" to loader.conf and rebooted and the driver took over in place of the ATA driver.

Now the devices detect as follows:


```
ahci0: <AHCI controller> port 0x3068-0x306f,0x3074-0x3077,
 0x3060-0x3067,0x3070-0x3073,0x3020-0x303f mem 0xe3121000-0xe31217ff irq
 19 at device 31.2 on pci0
ahci0: [ITHREAD]
ahci0: AHCI v1.30 with 6 3Gbps ports, Port Multiplier not supported
ahcich0: <AHCI channel> at channel 0 on ahci0
ahcich0: [ITHREAD]
ahcich1: <AHCI channel> at channel 1 on ahci0
ahcich1: [ITHREAD]
ahcich2: <AHCI channel> at channel 2 on ahci0
ahcich2: [ITHREAD]
ahcich3: <AHCI channel> at channel 3 on ahci0
ahcich3: [ITHREAD]
ahcich4: <AHCI channel> at channel 4 on ahci0
ahcich4: [ITHREAD]
ahcich5: <AHCI channel> at channel 5 on ahci0
ahcich5: [ITHREAD]
ada0 at ahcich0 bus 0 target 0 lun 0
ada0: <WDC WD6401AALS-00L3B2 01.03B01> ATA/ATAPI-8 SATA 2.x device
ada0: 300.000MB/s transfers
ada0: 610480MB (1250263728 512 byte sectors: 16H 63S/T 16383C)
ada0: Native Command Queueing enabled
ada1 at ahcich1 bus 0 target 0 lun 0
ada1: <WDC WD6401AALS-00J7B1 05.00K05> ATA/ATAPI-8 SATA 2.x device
ada1: 300.000MB/s transfers
ada1: 610480MB (1250263728 512 byte sectors: 16H 63S/T 16383C)
ada1: Native Command Queueing enabled
ada2 at ahcich2 bus 0 target 0 lun 0
ada2: <WDC WD15EADS-00P8B0 01.00A01> ATA/ATAPI-8 SATA 2.x device
ada2: 300.000MB/s transfers
ada2: 1430799MB (2930277168 512 byte sectors: 16H 63S/T 16383C)
ada2: Native Command Queueing enabled
ada3 at ahcich3 bus 0 target 0 lun 0
ada3: <WDC WD15EADS-00P8B0 01.00A01> ATA/ATAPI-8 SATA 2.x device
ada3: 300.000MB/s transfers
ada3: 1430799MB (2930277168 512 byte sectors: 16H 63S/T 16383C)
ada3: Native Command Queueing enabled
ada4 at ahcich4 bus 0 target 0 lun 0
ada4: <WDC WD15EADS-00P8B0 01.00A01> ATA/ATAPI-8 SATA 2.x device
ada4: 300.000MB/s transfers
ada4: 1430799MB (2930277168 512 byte sectors: 16H 63S/T 16383C)
ada4: Native Command Queueing enabled
ada5 at ahcich5 bus 0 target 0 lun 0
ada5: <WDC WD15EADS-00P8B0 01.00A01> ATA/ATAPI-8 SATA 2.x device
ada5: 300.000MB/s transfers
ada5: 1430799MB (2930277168 512 byte sectors: 16H 63S/T 16383C)
ada5: Native Command Queueing enabled
```

Because I'm running ZFS, I didn't need to change fstab and the box came straight back up.


----------

