|
OpenBSD General Other questions regarding OpenBSD which do not fit in any of the categories below. |
|
Thread Tools | Display Modes |
|
|
|||
I took a quick glance at the supported hardware for openbsd and did not see the Marvell SATA controllers listed. I recently tried to get a Via VT 8237S controller to support more than one SATA drive in OpenBSD without sucess.
I had better luck putting FreeBSD on the machine and it looks like FreeBSD added Marvell SATA support recently (8,1 release) http://forums.freebsd.org/showthread.php?t=9533 |
|
||||
Any chance this will work? I found it here. http://www.webservertalk.com/message2133676.html
Code:
Index: dev/pci/ahci.c ======================================== =========================== RCS file: /cvs/src/sys/dev/pci/ahci.c,v retrieving revision 1.130 diff -u -p -r1.130 ahci.c --- dev/pci/ahci.c 2007/10/27 10:51:21 1.130 +++ dev/pci/ahci.c 2007/10/31 15:56:27 @@ -34,7 +34,7 @@ #include <dev/ata/atascsi.h> /* change to AHCI_DEBUG for dmesg spam */ -#define NO_AHCI_DEBUG +#define AHCI_DEBUG #ifdef AHCI_DEBUG #define DPRINTF(m, f...) do { if ((ahcidebug & (m)) == (m)) printf(f); } \ @@ -387,8 +387,9 @@ struct ahci_softc { bus_dma_tag_t sc_dmat; int sc_flags; -#define AHCI_F_NO_NCQ (1<<0) -#define AHCI_F_NO_FER (1<<1) +#define AHCI_F_NO_NCQ (1<<0) +#define AHCI_F_NO_FR (1<<1) +#define AHCI_F_NO_CR (1<<2) u_int sc_ncmds; @@ -419,12 +420,28 @@ int ahci_vt8251_attach(struct ahci_sof struct pci_attach_args *); int ahci_ati_ixp600_attach(struct ahci_softc *, struct pci_attach_args *); +int ahci_88se61xx_attach(struct ahci_softc *, + struct pci_attach_args *); static const struct ahci_device ahci_devices[] = { { PCI_VENDOR_VIATECH, PCI_PRODUCT_VIATECH_ VT8251_SATA, ahci_no_match, ahci_vt8251_attach }, { PCI_VENDOR_ATI, PCI_PRODUCT_ATI_IXP_SATA _600, - NULL, ahci_ati_ixp600_attach } + NULL, ahci_ati_ixp600_attach }, + { PCI_VENDOR_MARVELL, PCI_PRODUCT_MARVELL_ 88SE6111, + NULL, ahci_88se61xx_attach }, + { PCI_VENDOR_MARVELL, PCI_PRODUCT_MARVELL_ 88SE6120, + NULL, ahci_88se61xx_attach }, + { PCI_VENDOR_MARVELL, PCI_PRODUCT_MARVELL_ 88SE6121, + NULL, ahci_88se61xx_attach }, + { PCI_VENDOR_MARVELL, PCI_PRODUCT_MARVELL_ 88SE6122, + NULL, ahci_88se61xx_attach }, + { PCI_VENDOR_MARVELL, PCI_PRODUCT_MARVELL_ 88SE6140, + NULL, ahci_88se61xx_attach }, + { PCI_VENDOR_MARVELL, PCI_PRODUCT_MARVELL_ 88SE6141, + NULL, ahci_88se61xx_attach }, + { PCI_VENDOR_MARVELL, PCI_PRODUCT_MARVELL_ 88SE6145, + NULL, ahci_88se61xx_attach } }; int ahci_pci_match(struct device *, void *, void *); @@ -554,8 +571,16 @@ ahci_vt8251_attach(struct ahci_softc *sc int ahci_ati_ixp600_attach(struct ahci_softc *sc, struct pci_attach_args *pa) +{ + sc->sc_flags |= AHCI_F_NO_FR; + + return (0); +} + + int +ahci_88se61xx_attach(struct ahci_softc *sc, struct pci_attach_args *pa) { - sc->sc_flags |= AHCI_F_NO_FER; + sc->sc_flags |= AHCI_F_NO_FR | AHCI_F_NO_CR | AHCI_F_NO_NCQ; return (0); } @@ -911,6 +936,8 @@ ahci_port_alloc(struct ahci_softc *sc, u goto freeport; } + printf("preg=0x%x\n", cmd); + /* Allocate a CCB for each command slot */ ap->ap_ccbs = malloc(sizeof(struct ahci_ccb) * sc->sc_ncmds, M_DEVBUF, M_NOWAIT | M_ZERO); @@ -1014,6 +1041,9 @@ nomem: DPRINTF(AHCI_D_VERBOSE, "%s: detected device on port %d\n", DEVNAME(sc), port); + printf("preg=0x%x\n", + ahci_pread(ap, AHCI_PREG_CMD) & ~AHCI_PREG_CMD_ICC); + /* Enable command transfers on port */ if (ahci_port_start(ap, 0)) { printf("%s: failed to start command DMA on port %d, " @@ -1084,8 +1114,7 @@ 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 (!(ap->ap_sc->sc_flags & AHCI_F_NO_FER)) - r |= AHCI_PREG_CMD_FRE; + r |= AHCI_PREG_CMD_FRE; if (!fre_only) r |= AHCI_PREG_CMD_ST; ahci_pwrite(ap, AHCI_PREG_CMD, r); @@ -1098,16 +1127,22 @@ ahci_port_start(struct ahci_port *ap, in ap->ap_sc->sc_ccc_ports_cur); } #endif + + printf("preg=0x%x\n", + ahci_pread(ap, AHCI_PREG_CMD) & ~AHCI_PREG_CMD_ICC); - if (!(ap->ap_sc->sc_flags & AHCI_F_NO_FER)) { + if (!(ap->ap_sc->sc_flags & AHCI_F_NO_FR)) { /* Wait for FR to come on */ if (ahci_pwait_set(ap, AHCI_PREG_CMD, AHCI_PREG_CMD_FR)) return (2); } - /* Wait for CR to come on */ - if (!fre_only && ahci_pwait_set(ap, AHCI_PREG_CMD, AHCI_PREG_CMD_CR)) - return (1); + if (!(ap->ap_sc->sc_flags & AHCI_F_NO_CR)) { + /* Wait for CR to come on */ + if (!fre_only && ahci_pwait_set(ap, AHCI_PREG_CMD, + AHCI_PREG_CMD_CR)) + return (1); + } return (0); } |
|
|||
That is a mailing list post (tech@) archived on a forum, did you read it? the changes add support for 88SE* based devices.. not 88SX*.
If the controller in question does support AHCI (..but messed up the standardized way of indicating this) it may be possible to force the driver to attach in a similar fashion. I'd recommend checking the BIOS and seeing if the mode of the controller can be toggled, i.e: AHCI vs. IDE vs RAID mode.. if it's in RAID mode, OpenBSD usually won't attach to it. |
|
||||
Quote:
I also tried it with FreeBSD and it kernel panics with the card in. I tried FreeNAS and that just corrupts my gpt on install then won't boot (on my scsi RAID card). Starting to look like I will have to put debian |
|
||||
There was no follow up posting to this 3.5 year old tech@ thread. More importantly the Marvell product attachment code was never added to sys/dev/pci/ahci.c.
To put this into historical perspective, the request for testers was posted four weeks before 4.3 was locked down for -release testing. |
|
|||
Doing some digging it seems these SATA controllers are proprietary and don't support the standard AHCI/PCIIDE interfaces at all and requires a "native" driver.
You can try adding the following to OpenBSD's pciide.c and hoping some basic semblance of SATA support is to be found.. but it's highly unlikely. Code:
const struct pciide_product_desc pciide_marvell_products[] = { { PCI_PRODUCT_MARVELL_88SX5081, 0, sata_chip_map }, }; |
|
|||
When you buy a card, look for one that mentions PCIIDE/AHCI support.. or perhaps has marketing phrases like "plug and play" or "no drivers required", supporting Mac OS X may also be a good indicator.
You can get some simple cards for less then $20, and most places have return policies, you might have to buy a few different cards until you find one that works. |
|
||||
http://mail-index.netbsd.org/netbsd-...8/14/0010.html
This makes me think I could use netbsd but when I load it up its not detected. Is there any other steps I would need to take. Sorry I have never used NetBSD before. |
|
|||
No.. OpenBSD also has a similar file for PCI product ID's, it is required for more "humanized" output of detected devices.
That does not indicate support. |
Tags |
raid sata controller |
|
|
Similar Threads | ||||
Thread | Thread Starter | Forum | Replies | Last Post |
Marvell 88E8038 ethernet adaptor doesn't work with NetBSD 5, even with ACPI disabled | GullibleJones | NetBSD General | 2 | 13th December 2009 10:55 AM |
FreeBSD 8 and marvell yukon 88e8057 | latorion | FreeBSD General | 5 | 29th November 2009 11:35 PM |
E-SATA? | PatrickBaer | OpenBSD General | 28 | 5th October 2008 11:41 PM |
Marvell Yukon driver cannot load with ACPI enabled | GullibleJones | FreeBSD General | 2 | 15th September 2008 02:58 PM |
Using FreeBSD Marvell Driver | vi5in | FreeBSD General | 0 | 12th May 2008 11:16 PM |