ATA/ACHI Jmicron broken up

Michael BlackHeart amdmiek at gmail.com
Tue Sep 22 15:02:45 UTC 2015


Thanks! Patch helped.



2015-09-22 12:27 GMT+03:00 Alexander Motin <mav at freebsd.org>:

> On 22.09.2015 12:19, Michael BlackHeart wrote:
> > dmesg from updated system is a little bit tricky right now. I can
> > provide working system dmesg and say what's missing in it's output when
> > I try to boot new kernel.
> >
> > Here goes pciconf
> >
> > atapci0 at pci0:2:0:0:     class=0x010400 card=0x75121462 chip=0x2363197b
> > rev=0x03 hdr=0x00
> >     vendor     = 'JMicron Technology Corp.'
> >     device     = 'JMB363 SATA/IDE Controller'
> >     class      = mass storage
> >     subclass   = RAID
> >     bar   [24] = type Memory, range 32, base 0xf7dfe000, size 8192,
> enabled
> >     cap 01[68] = powerspec 2  supports D0 D3  current D0
> >     cap 10[50] = PCI-Express 1 legacy endpoint IRQ 1 max data 128(128)
> > link x1(x1)
> >                  speed 2.5(2.5) ASPM disabled(L0s)
>
> OK, I see the problem -- it is reported as RAID, but not as AHCI, as
> devices that I had before, and so ahci(4) driver does not attach. Could
> you test the attached patch? I should allow driver attachment to such
> devices.
>
> --
> Alexander Motin
>



-- 
amd_miek
Think different.
Just superior.
-------------- next part --------------
Index: ahci_pci.c
===================================================================
--- ahci_pci.c	(revision 288021)
+++ ahci_pci.c	(working copy)
@@ -327,6 +327,9 @@ ahci_probe(device_t dev)
 	    pci_get_subclass(dev) == PCIS_STORAGE_SATA &&
 	    pci_get_progif(dev) == PCIP_STORAGE_SATA_AHCI_1_0)
 		valid = 1;
+	else if (pci_get_class(dev) == PCIC_STORAGE &&
+	    pci_get_subclass(dev) == PCIS_STORAGE_RAID)
+		valid = 2;
 	/* Is this a known AHCI chip? */
 	for (i = 0; ahci_ids[i].id != 0; i++) {
 		if (ahci_ids[i].id == devid &&
@@ -343,7 +346,7 @@ ahci_probe(device_t dev)
 			return (BUS_PROBE_DEFAULT);
 		}
 	}
-	if (!valid)
+	if (valid != 1)
 		return (ENXIO);
 	device_set_desc_copy(dev, "AHCI SATA controller");
 	return (BUS_PROBE_DEFAULT);


More information about the freebsd-stable mailing list