* TX4000 RAID and sata_promise @ 2005-08-28 13:33 Yuri Kirsanov 2005-08-29 8:52 ` Erik Slagter 2005-08-29 9:10 ` [PATCH] " Jeff Garzik 0 siblings, 2 replies; 4+ messages in thread From: Yuri Kirsanov @ 2005-08-28 13:33 UTC (permalink / raw) To: linux-ide Good day. I've tried latest kernel 2.6.13-rc7, TX4000 support seems to be in sata_promise already. After startup I see following in dmesg: libata version 1.12 loaded. sata_promise version 1.02 PCI: Found IRQ 5 for device 0000:01:09.0 ata1: PATA max UDMA/133 cmd 0xCC81C200 ctl 0xCC81C238 bmdma 0x0 irq 5 ata2: PATA max UDMA/133 cmd 0xCC81C280 ctl 0xCC81C2B8 bmdma 0x0 irq 5 ata3: PATA max UDMA/133 cmd 0xCC81C300 ctl 0xCC81C338 bmdma 0x0 irq 5 ata4: PATA max UDMA/133 cmd 0xCC81C380 ctl 0xCC81C3B8 bmdma 0x0 irq 5 ata1: no device found (phy stat 00000000) scsi0 : sata_promise ata2: no device found (phy stat 00000000) scsi1 : sata_promise ata3: no device found (phy stat 00000000) scsi2 : sata_promise ata4: no device found (phy stat 00000000) scsi3 : sata_promise Anybody has any ideas? As I can see, my TX4000 is found by sata_promise, it even detects it's UDMA modes, but it still can't find any of my hard drives, while TX4000 BIOS shows all of them ok. Jeff, please, can you comment this situation??? ^ permalink raw reply [flat|nested] 4+ messages in thread
* Re: TX4000 RAID and sata_promise 2005-08-28 13:33 TX4000 RAID and sata_promise Yuri Kirsanov @ 2005-08-29 8:52 ` Erik Slagter 2005-08-29 9:10 ` [PATCH] " Jeff Garzik 1 sibling, 0 replies; 4+ messages in thread From: Erik Slagter @ 2005-08-29 8:52 UTC (permalink / raw) To: Yuri Kirsanov; +Cc: linux-ide [-- Attachment #1: Type: text/plain, Size: 1150 bytes --] On Sun, 2005-08-28 at 17:33 +0400, Yuri Kirsanov wrote: > Good day. I've tried latest kernel 2.6.13-rc7, TX4000 support seems to > be in sata_promise already. After startup I see following in dmesg: > > libata version 1.12 loaded. > sata_promise version 1.02 > PCI: Found IRQ 5 for device 0000:01:09.0 > ata1: PATA max UDMA/133 cmd 0xCC81C200 ctl 0xCC81C238 bmdma 0x0 irq 5 > ata2: PATA max UDMA/133 cmd 0xCC81C280 ctl 0xCC81C2B8 bmdma 0x0 irq 5 > ata3: PATA max UDMA/133 cmd 0xCC81C300 ctl 0xCC81C338 bmdma 0x0 irq 5 > ata4: PATA max UDMA/133 cmd 0xCC81C380 ctl 0xCC81C3B8 bmdma 0x0 irq 5 > ata1: no device found (phy stat 00000000) > scsi0 : sata_promise > ata2: no device found (phy stat 00000000) > scsi1 : sata_promise > ata3: no device found (phy stat 00000000) > scsi2 : sata_promise > ata4: no device found (phy stat 00000000) > scsi3 : sata_promise > > > Anybody has any ideas? As I can see, my TX4000 is found by > sata_promise, it even detects it's UDMA modes, but it still can't find > any of my hard drives, while TX4000 BIOS shows all of them ok. Maybe you have to enable PATA support in include/libata.h? [-- Attachment #2: smime.p7s --] [-- Type: application/x-pkcs7-signature, Size: 2115 bytes --] ^ permalink raw reply [flat|nested] 4+ messages in thread
* [PATCH] TX4000 RAID and sata_promise 2005-08-28 13:33 TX4000 RAID and sata_promise Yuri Kirsanov 2005-08-29 8:52 ` Erik Slagter @ 2005-08-29 9:10 ` Jeff Garzik 1 sibling, 0 replies; 4+ messages in thread From: Jeff Garzik @ 2005-08-29 9:10 UTC (permalink / raw) To: Yuri Kirsanov; +Cc: linux-ide [-- Attachment #1: Type: text/plain, Size: 981 bytes --] Yuri Kirsanov wrote: > Good day. I've tried latest kernel 2.6.13-rc7, TX4000 support seems to > be in sata_promise already. After startup I see following in dmesg: > > libata version 1.12 loaded. > sata_promise version 1.02 > PCI: Found IRQ 5 for device 0000:01:09.0 > ata1: PATA max UDMA/133 cmd 0xCC81C200 ctl 0xCC81C238 bmdma 0x0 irq 5 > ata2: PATA max UDMA/133 cmd 0xCC81C280 ctl 0xCC81C2B8 bmdma 0x0 irq 5 > ata3: PATA max UDMA/133 cmd 0xCC81C300 ctl 0xCC81C338 bmdma 0x0 irq 5 > ata4: PATA max UDMA/133 cmd 0xCC81C380 ctl 0xCC81C3B8 bmdma 0x0 irq 5 > ata1: no device found (phy stat 00000000) > scsi0 : sata_promise > ata2: no device found (phy stat 00000000) > scsi1 : sata_promise > ata3: no device found (phy stat 00000000) > scsi2 : sata_promise > ata4: no device found (phy stat 00000000) > scsi3 : sata_promise Well, sata_promise definitely should not be attempting to call sata_phy_reset(), since this is a PATA board. Maybe the attached patch will help? Jeff [-- Attachment #2: patch --] [-- Type: text/plain, Size: 3577 bytes --] diff --git a/drivers/scsi/sata_promise.c b/drivers/scsi/sata_promise.c --- a/drivers/scsi/sata_promise.c +++ b/drivers/scsi/sata_promise.c @@ -79,7 +79,8 @@ static irqreturn_t pdc_interrupt (int ir static void pdc_eng_timeout(struct ata_port *ap); static int pdc_port_start(struct ata_port *ap); static void pdc_port_stop(struct ata_port *ap); -static void pdc_phy_reset(struct ata_port *ap); +static void pdc_pata_phy_reset(struct ata_port *ap); +static void pdc_sata_phy_reset(struct ata_port *ap); static void pdc_qc_prep(struct ata_queued_cmd *qc); static void pdc_tf_load_mmio(struct ata_port *ap, struct ata_taskfile *tf); static void pdc_exec_command_mmio(struct ata_port *ap, struct ata_taskfile *tf); @@ -106,19 +107,22 @@ static Scsi_Host_Template pdc_ata_sht = .ordered_flush = 1, }; -static struct ata_port_operations pdc_ata_ops = { +static struct ata_port_operations pdc_sata_ops = { .port_disable = ata_port_disable, .tf_load = pdc_tf_load_mmio, .tf_read = ata_tf_read, .check_status = ata_check_status, .exec_command = pdc_exec_command_mmio, .dev_select = ata_std_dev_select, - .phy_reset = pdc_phy_reset, + + .phy_reset = pdc_sata_phy_reset, + .qc_prep = pdc_qc_prep, .qc_issue = pdc_qc_issue_prot, .eng_timeout = pdc_eng_timeout, .irq_handler = pdc_interrupt, .irq_clear = pdc_irq_clear, + .scr_read = pdc_sata_scr_read, .scr_write = pdc_sata_scr_write, .port_start = pdc_port_start, @@ -126,6 +130,27 @@ static struct ata_port_operations pdc_at .host_stop = ata_host_stop, }; +static struct ata_port_operations pdc_pata_ops = { + .port_disable = ata_port_disable, + .tf_load = pdc_tf_load_mmio, + .tf_read = ata_tf_read, + .check_status = ata_check_status, + .exec_command = pdc_exec_command_mmio, + .dev_select = ata_std_dev_select, + + .phy_reset = pdc_pata_phy_reset, + + .qc_prep = pdc_qc_prep, + .qc_issue = pdc_qc_issue_prot, + .eng_timeout = pdc_eng_timeout, + .irq_handler = pdc_interrupt, + .irq_clear = pdc_irq_clear, + + .port_start = pdc_port_start, + .port_stop = pdc_port_stop, + .host_stop = ata_host_stop, +}; + static struct ata_port_info pdc_port_info[] = { /* board_2037x */ { @@ -135,7 +160,7 @@ static struct ata_port_info pdc_port_inf .pio_mask = 0x1f, /* pio0-4 */ .mwdma_mask = 0x07, /* mwdma0-2 */ .udma_mask = 0x7f, /* udma0-6 ; FIXME */ - .port_ops = &pdc_ata_ops, + .port_ops = &pdc_sata_ops, }, /* board_20319 */ @@ -146,7 +171,7 @@ static struct ata_port_info pdc_port_inf .pio_mask = 0x1f, /* pio0-4 */ .mwdma_mask = 0x07, /* mwdma0-2 */ .udma_mask = 0x7f, /* udma0-6 ; FIXME */ - .port_ops = &pdc_ata_ops, + .port_ops = &pdc_sata_ops, }, /* board_20619 */ @@ -157,7 +182,7 @@ static struct ata_port_info pdc_port_inf .pio_mask = 0x1f, /* pio0-4 */ .mwdma_mask = 0x07, /* mwdma0-2 */ .udma_mask = 0x7f, /* udma0-6 ; FIXME */ - .port_ops = &pdc_ata_ops, + .port_ops = &pdc_pata_ops, }, }; @@ -268,12 +293,23 @@ static void pdc_reset_port(struct ata_po readl(mmio); /* flush */ } -static void pdc_phy_reset(struct ata_port *ap) +static void pdc_sata_phy_reset(struct ata_port *ap) { pdc_reset_port(ap); sata_phy_reset(ap); } +static void pdc_pata_phy_reset(struct ata_port *ap) +{ + /* FIXME: add cable detect. Don't assume 40-pin cable */ + ap->cbl = ATA_CBL_PATA40; + ap->udma_mask &= ATA_UDMA_MASK_40C; + + pdc_reset_port(ap); + ata_port_probe(ap); + ata_bus_reset(ap); +} + static u32 pdc_sata_scr_read (struct ata_port *ap, unsigned int sc_reg) { if (sc_reg > SCR_CONTROL) ^ permalink raw reply [flat|nested] 4+ messages in thread
[parent not found: <00a701c5acba$4653f8d0$6f0aa8c0@rgkb.local>]
* Re: [PATCH] TX4000 RAID and sata_promise [not found] <00a701c5acba$4653f8d0$6f0aa8c0@rgkb.local> @ 2005-08-29 18:10 ` Yuri Kirsanov 0 siblings, 0 replies; 4+ messages in thread From: Yuri Kirsanov @ 2005-08-29 18:10 UTC (permalink / raw) To: linux-ide; +Cc: jgarzik Wonderful, Jeff! Thanks a lot, now my TX4000 can be used under Linux just ok! :) Without hacking libata-core.c. So, I suggest you to include your patch for correct TX4000 work into further kernel releases. Now, only two small things disturbs me: 1. My hard drives are now online, but on any other free ports I see error message like these: libata version 1.11 loaded. sata_promise version 1.01 PCI: Found IRQ 5 for device 0000:01:0a.0 ata1: PATA max UDMA/133 cmd 0xCC802200 ctl 0xCC802238 bmdma 0x0 irq 5 ata2: PATA max UDMA/133 cmd 0xCC802280 ctl 0xCC8022B8 bmdma 0x0 irq 5 ata3: PATA max UDMA/133 cmd 0xCC802300 ctl 0xCC802338 bmdma 0x0 irq 5 ata4: PATA max UDMA/133 cmd 0xCC802380 ctl 0xCC8023B8 bmdma 0x0 irq 5 ata1: dev 0 cfg 49:0f00 82:346b 83:5b01 84:4003 85:3469 86:1a01 87:4003 88:407f ata1: dev 0 ATA, max UDMA/133, 40132503 sectors: ata1: dev 0 configured for UDMA/33 scsi0 : sata_promise ATA: abnormal status 0x8 on port 0xCC80229C ata2: disabling port scsi1 : sata_promise ATA: abnormal status 0x8 on port 0xCC80231C ata3: disabling port scsi2 : sata_promise ATA: abnormal status 0x8 on port 0xCC80239C ata4: disabling port scsi3 : sata_promise Vendor: ATA Model: MAXTOR 6L020J1 Rev: A93. Type: Direct-Access ANSI SCSI revision: 05 SCSI device sda: 40132503 512-byte hdwr sectors (20548 MB) SCSI device sda: drive cache: write back SCSI device sda: 40132503 512-byte hdwr sectors (20548 MB) SCSI device sda: drive cache: write back /dev/scsi/host0/bus0/target0/lun0: unknown partition table Attached scsi disk sda at scsi0, channel 0, id 0, lun 0 Attached scsi generic sg0 at scsi0, channel 0, id 0, lun 0, type 0 Maybe I should apply some additional patch to correct "Abnormal status 0x8 on port", or this is correct behaviour and I can just ignore it? 2. Module sata_promise only starts when I include SCSI disk support with sata_promise as a built-in into a kernel. (and only together, when I've tried to include SCSI disk support WITHOUT built-in sata_promise - it doesn't work at all.) What should I include into my /etc/modules.conf to auto-start libata with sata_promise? Doing modprobe sata_promise works just fine, but I prefer all TX4000 related modules to be loaded automatically at boot-time. And why didn't my kernel automatically setup all necessary modules into modprobe.conf? Thanks a lot for your help! >> Well, sata_promise definitely should not be attempting to call >> sata_phy_reset(), since this is a PATA board. >> >> Maybe the attached patch will help? >> >> Jeff >> >> >> ^ permalink raw reply [flat|nested] 4+ messages in thread
end of thread, other threads:[~2005-08-29 18:10 UTC | newest]
Thread overview: 4+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2005-08-28 13:33 TX4000 RAID and sata_promise Yuri Kirsanov
2005-08-29 8:52 ` Erik Slagter
2005-08-29 9:10 ` [PATCH] " Jeff Garzik
[not found] <00a701c5acba$4653f8d0$6f0aa8c0@rgkb.local>
2005-08-29 18:10 ` Yuri Kirsanov
This is a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox; as well as URLs for NNTP newsgroup(s).