On Mon, 16 Apr 2007, alemao wrote:

I get the dmesg of ahci identifying my card. If you want to send me more
patchs to test it's ok.
I need to "set tty com0" at boot.conf and unplug my usb devices from it to
boot (kbd and mouse, this machine don't have PS/2). It's strange, after the
bootloader timeouts and start to load kernel, it stops at "entry point
xxxxxxx" and then i need to type something to load the kernel.. w/o usb
devices, it boot fine.

I have exactly the same problem and reported it already to pascoe@ and [EMAIL PROTECTED] This seems to be some quirk with the ati chipset. The following patch (more a hack) made it work for me, so that I could read the partition table of my hds. As the box is currently used in my company I can not check further to test if it "really" works.

Index: ahci.c
===================================================================
RCS file: /cvs/src/sys/dev/pci/ahci.c,v
retrieving revision 1.112
diff -u -p -r1.112 ahci.c
--- ahci.c      8 Apr 2007 09:13:31 -0000       1.112
+++ ahci.c      17 Apr 2007 11:19:01 -0000
@@ -1101,7 +1101,9 @@ ahci_port_start(struct ahci_port *ap, in

        /* Turn on FRE (and ST) */
        r = ahci_pread(ap, AHCI_PREG_CMD) & ~AHCI_PREG_CMD_ICC;
+#if 0
        r |= AHCI_PREG_CMD_FRE;
+#endif
        if (!fre_only)
                r |= AHCI_PREG_CMD_ST;
        ahci_pwrite(ap, AHCI_PREG_CMD, r);
@@ -1115,9 +1117,11 @@ ahci_port_start(struct ahci_port *ap, in
        }
 #endif

+#if 0
        /* Wait for FR to come on */
        if (ahci_pwait_set(ap, AHCI_PREG_CMD, AHCI_PREG_CMD_FR))
                return (2);
+#endif

        /* Wait for CR to come on */
        if (!fre_only && ahci_pwait_set(ap, AHCI_PREG_CMD, AHCI_PREG_CMD_CR))


The function is used with the fre_only set to 0 in the whole driver. But this may change in the future, so this is no permanent solution. For the initialization the FR bit is already set when the function is called, so no problems should occure there.

Greetings
  Markus

Reply via email to