Re: Regression: kernel 2.6.24{,.1} ahci problem, does not boot

From: Piter PUNK
Date: Sun Jun 15 2008 - 00:01:28 EST



Hi,

I have a notebook with SiS968. It works with 2.6.23.x
kernels but not with 2.6.24+ kernels. Probably my
problem is the same of this old thread:

http://lkml.org/lkml/2008/2/14/263

The error is exactly the same.

Looking the changes from 2.6.23 to 2.6.24 in

http://kernelnewbies.org/Linux_2_6_24#head-f29764e7ef293be84e2f8aa1b08b8816b15ebfca

I try to revert two commits to see which one brokes
my SATA device support. The guilt is this one:

http://git.kernel.org/?p=linux/kernel/git/torvalds/linux-2.6.git;a=commit;h=7d50b60b5e38f910ad69f0187af00f5d6a8970d4

It implements PMP support. In attached patch, I
disable PMP support in ahci.c to SiS SATA controllers.

I hope i am sending the patch to correct place and
it works fine to others (well, it's working to me).

The patch is against 2.6.24.5, but i think it's easy
to adapt to 2.6.25+

Thanks

Piter PUNK --- linux-2.6.24.5/drivers/ata/ahci.c 2008-04-18 22:53:39.000000000 -0300
+++ linux-2.6.24.5_sis-fixed/drivers/ata/ahci.c 2008-06-14 22:58:22.000000000 -0300
@@ -85,6 +85,7 @@
board_ahci_ign_iferr = 2,
board_ahci_sb600 = 3,
board_ahci_mv = 4,
+ board_ahci_sis = 5,

/* global controller registers */
HOST_CAP = 0x00, /* host capabilities */
@@ -442,6 +443,15 @@
.udma_mask = ATA_UDMA6,
.port_ops = &ahci_ops,
},
+ /* board_ahci_sis */
+ {
+ AHCI_HFLAGS (AHCI_HFLAG_NO_PMP),
+ .flags = AHCI_FLAG_COMMON,
+ .link_flags = AHCI_LFLAG_COMMON | ATA_LFLAG_HRST_TO_RESUME,
+ .pio_mask = 0x1f, /* pio0-4 */
+ .udma_mask = ATA_UDMA6,
+ .port_ops = &ahci_vt8251_ops,
+ },
};

static const struct pci_device_id ahci_pci_tbl[] = {
@@ -552,9 +562,9 @@
{ PCI_VDEVICE(NVIDIA, 0x0abf), board_ahci }, /* MCP79 */

/* SiS */
- { PCI_VDEVICE(SI, 0x1184), board_ahci }, /* SiS 966 */
- { PCI_VDEVICE(SI, 0x1185), board_ahci }, /* SiS 966 */
- { PCI_VDEVICE(SI, 0x0186), board_ahci }, /* SiS 968 */
+ { PCI_VDEVICE(SI, 0x1184), board_ahci_sis }, /* SiS 966 */
+ { PCI_VDEVICE(SI, 0x1185), board_ahci_sis }, /* SiS 968 */
+ { PCI_VDEVICE(SI, 0x0186), board_ahci_sis }, /* SiS 968 */

/* Marvell */
{ PCI_VDEVICE(MARVELL, 0x6145), board_ahci_mv }, /* 6145 */