# powerpc64 has problems with ServerWorks SATA controller on Power Mac G5



## Ampera (Jan 29, 2020)

So I have a Power Mac G5, DP 1.8Ghz, with what FreeBSD reports as a ServerWorks K2 SATA150 controller.
This HBA connects my one and only system drive (a 250GB SATA WD Blue).

My problem is FreeBSD 12.1 powerpc64 seems to have a problem with my SATA controller.
 - The system boots normally from CD, and kernel messages run almost normally (more on this later) until the messages stop, and this is printed:


```
(aprobe1:ata2:0:0:0): ATA_IDENTIFY. ACB: ec 00 00 00 00 40 00 00 00 00 00 00
(aprobe1:ata2:0:0:0): CAM status: Command timeout
(aprobe1:ata2:0:0:0): Retrying command, 0 more tries remain
(aprobe1:ata2:0:0:0): ATA_IDENTIFY. ACB: ec 00 00 00 00 40 00 00 00 00 00 00
(aprobe1:ata2:0:0:0): CAM status: Command timeout
(aprobe1:ata2:0:0:0): Error 5, Retries exhausted
run_interrupt_driven_hooks: still waiting 60 seconds for xpt_config
```

- This message will repeat even into the installer, which is useless as the hard drive is not detected/present as a block device
- There is a message further up the kernel messages that might shed some light on this problem


```
pcib6: <OFW PCI-PCI bridge> at device 5.0 on pci1
pci6: <OFW PCI bus> on pcib6
atapci0: <ServerWorks K2 SATA150 controller> mem 0x80600000-0x80601fff irq 33554432 at device 12.0 on pci6
pcib1: failed to reserve resource for pcib6
atapci0: 0x10 bytes of rid 0x20 res 4 failed (0, 0xffffffffffffffff).
ata2: <ATA channel> at channel 0 on atapci0
ata3: <ATA channel> at channel 1 on atapci0
ata4: <ATA channel> at channel 2 on atapci0
ata5: <ATA channel> at channel 3 on atapci0
atapci1: <ServerWorks K2 SATA150 controller> at device 12.1 on pci6
pcib1: failed to reserve resource for pcib6
atapci1: 0x10 bytes of rid 0x20 res 4 failed (0, 0xffffffffffffffff).
atapci1: unable to map interrupt
device_attach: atapci1 attach returned 6
```

- This machine only has, as best as I can determine, only two SATA ports on it. It also has a PATA controller, with one channel, which is used for the optical drive (from which FreeBSD is booted)
- It almost seems like FreeBSD is trying to allocate peripheral memory for a controller larger than the one present, and then attempting to do it a second time. This is just a guess.

I can confirm that both the hard drive and controller work perfectly fine ordinarily, as this problem is not present on OpenBSD nor Linux. I am able to partition, format, install, and boot from the controller and the drive from both systems. It is also capable of booting OS X off the original system drive, which I have taken out and replaced with the one now present. I have also tried different cables and using different SATA ports. I have also attempted to use FreeBSD 11.3 (powerpc64), which has the exact same problem.

I don't doubt that this is a bug, and might be better put in the appropriate places, but I thought I'd check here and see if it's a known or common problem, and if any workaround exists. Thanks.


----------

