Re: [PATCH -next 22/26] qla2xxx: Use dma_zalloc_coherent
Acked-by: Saurav Kashyap saurav.kash...@qlogic.com Use the zeroing function instead of dma_alloc_coherent memset(,0,) Signed-off-by: Joe Perches j...@perches.com --- drivers/scsi/qla2xxx/qla_init.c | 10 -- 1 file changed, 4 insertions(+), 6 deletions(-) diff --git a/drivers/scsi/qla2xxx/qla_init.c b/drivers/scsi/qla2xxx/qla_init.c index e218441..46990f4 100644 --- a/drivers/scsi/qla2xxx/qla_init.c +++ b/drivers/scsi/qla2xxx/qla_init.c @@ -1526,8 +1526,8 @@ try_fce: FCE_SIZE, ha-fce, ha-fce_dma); /* Allocate memory for Fibre Channel Event Buffer. */ - tc = dma_alloc_coherent(ha-pdev-dev, FCE_SIZE, tc_dma, - GFP_KERNEL); + tc = dma_zalloc_coherent(ha-pdev-dev, FCE_SIZE, tc_dma, + GFP_KERNEL); if (!tc) { ql_log(ql_log_warn, vha, 0x00be, Unable to allocate (%d KB) for FCE.\n, @@ -1535,7 +1535,6 @@ try_fce: goto try_eft; } - memset(tc, 0, FCE_SIZE); rval = qla2x00_enable_fce_trace(vha, tc_dma, FCE_NUM_BUFFERS, ha-fce_mb, ha-fce_bufs); if (rval) { @@ -1560,8 +1559,8 @@ try_eft: EFT_SIZE, ha-eft, ha-eft_dma); /* Allocate memory for Extended Trace Buffer. */ - tc = dma_alloc_coherent(ha-pdev-dev, EFT_SIZE, tc_dma, - GFP_KERNEL); + tc = dma_zalloc_coherent(ha-pdev-dev, EFT_SIZE, tc_dma, + GFP_KERNEL); if (!tc) { ql_log(ql_log_warn, vha, 0x00c1, Unable to allocate (%d KB) for EFT.\n, @@ -1569,7 +1568,6 @@ try_eft: goto cont_alloc; } - memset(tc, 0, EFT_SIZE); rval = qla2x00_enable_eft_trace(vha, tc_dma, EFT_NUM_BUFFERS); if (rval) { ql_log(ql_log_warn, vha, 0x00c2, -- 1.8.1.2.459.gbcd45b4.dirty attachment: winmail.dat
RE: [PATCH -next 15/26] bfa: Use dma_zalloc_coherent
Thanks for the patch. Acked-by: Anil Gurumurthy anil.gurumur...@qlogic.com -Original Message- From: Joe Perches [mailto:j...@perches.com] Sent: 16 June 2014 02:08 To: linux-kernel Cc: Anil Gurumurthy; Sudarsana Kalluru; James E.J. Bottomley; linux-scsi Subject: [PATCH -next 15/26] bfa: Use dma_zalloc_coherent Use the zeroing function instead of dma_alloc_coherent memset(,0,) Signed-off-by: Joe Perches j...@perches.com --- drivers/scsi/bfa/bfad_bsg.c | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/drivers/scsi/bfa/bfad_bsg.c b/drivers/scsi/bfa/bfad_bsg.c index 8994fb8..65f3e74 100644 --- a/drivers/scsi/bfa/bfad_bsg.c +++ b/drivers/scsi/bfa/bfad_bsg.c @@ -3270,13 +3270,13 @@ bfad_fcxp_map_sg(struct bfad_s *bfad, void *payload_kbuf, /* Allocate dma coherent memory */ buf_info = buf_base; buf_info-size = payload_len; - buf_info-virt = dma_alloc_coherent(bfad-pcidev-dev, buf_info-size, - buf_info-phys, GFP_KERNEL); + buf_info-virt = dma_zalloc_coherent(bfad-pcidev-dev, +buf_info-size, buf_info-phys, +GFP_KERNEL); if (!buf_info-virt) goto out_free_mem; /* copy the linear bsg buffer to buf_info */ - memset(buf_info-virt, 0, buf_info-size); memcpy(buf_info-virt, payload_kbuf, buf_info-size); /* -- 1.8.1.2.459.gbcd45b4.dirty This message and any attached documents contain information from QLogic Corporation or its wholly-owned subsidiaries that may be confidential. If you are not the intended recipient, you may not read, copy, distribute, or use this information. If you have received this transmission in error, please notify the sender immediately by reply e-mail and then delete this message. attachment: winmail.dat
Re: Linux kernel crash (3.2.0-2-amd64) when trying to play audio CD
Hi! On Sat, 22 Sep 2012 13:53:20 +0200, I wrote: On Mon, 17 Sep 2012 19:23:45 +0200, Borislav Petkov b...@amd64.org wrote: On Thu, Sep 13, 2012 at 02:58:25PM +0200, Borislav Petkov wrote: Here's the script, let me know how it goes: Here's a more correct version. [...] However, putting in that one audio CD still crashes the machine: [...] The problem solved itself: the machine recently died of hardware failure. ;-| Grüße, Thomas pgpA6B4RVHk7O.pgp Description: PGP signature
Re: [PATCH v2 RESEND 00/23] scsi: Use pci_enable_msix_range() instead of pci_enable_msix()
On Thu, Apr 24, 2014 at 05:51:09PM +, James Bottomley wrote: These depend on f7fc32c, which appeared in v3.15-rc1. I had intended to merge these scsi updates at the same time, but I failed. Would you like to take them now that f7fc32c is upstream? OK, will add them. I'm planning to base the scsi-misc tree on -rc3 once we have our current crop of fixes upstream. Hi James, If I need to repost the series to get it into you tree? Thanks! James -- Regards, Alexander Gordeev agord...@redhat.com -- To unsubscribe from this list: send the line unsubscribe linux-scsi in the body of a message to majord...@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
Re:
This is a personal email directed to you. My wife and I have a gift donation for you, to know more details and claims, kindly contact us at: d.angelada...@outlook.com Regards, Dave Angela Dawes -- To unsubscribe from this list: send the line unsubscribe linux-scsi in the body of a message to majord...@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
[PATCH v2 2/2] ata: Fix the dma state machine lockup for the IDENTIFY DEVICE PIO mode command.
This patch fixes the dma state machine lockup due to the IDENTIFY DEVICE PIO mode command. The controller is unable to clear the BSY bit after receiving the PIO setup FIS and results the dma state machine to go into the CMFatalErrorUpdate state resulting in the dma state machine lockup. --- drivers/ata/ahci.h | 3 +++ drivers/ata/ahci_xgene.c | 17 +++-- drivers/ata/libahci.c| 34 ++ 3 files changed, 40 insertions(+), 14 deletions(-) diff --git a/drivers/ata/ahci.h b/drivers/ata/ahci.h index 3c1760e..a4dd567 100644 --- a/drivers/ata/ahci.h +++ b/drivers/ata/ahci.h @@ -237,6 +237,9 @@ enum { error-handling stage) */ AHCI_HFLAG_MULTI_MSI= (1 16), /* multiple PCI MSIs */ AHCI_HFLAG_NO_DEVSLP= (1 17), /* no device sleep */ + AHCI_HFLAG_BROKEN_PIO_CMD = (1 18), /* Some PIO cmd's + resulting in HBA + dma state lockup */ /* ap-flags bits */ diff --git a/drivers/ata/ahci_xgene.c b/drivers/ata/ahci_xgene.c index 77c89bf..741d5c7 100644 --- a/drivers/ata/ahci_xgene.c +++ b/drivers/ata/ahci_xgene.c @@ -104,14 +104,12 @@ static int xgene_ahci_init_memram(struct xgene_ahci_context *ctx) * @id: data buffer * * This custom read ID function is required due to the fact that the HW - * does not support DEVSLP and the controller state machine may get stuck - * after processing the ID query command. + * does not support DEVSLP. */ static unsigned int xgene_ahci_read_id(struct ata_device *dev, struct ata_taskfile *tf, u16 *id) { u32 err_mask; - void __iomem *port_mmio = ahci_port_base(dev-link-ap); err_mask = ata_do_dev_read_id(dev, tf, id); if (err_mask) @@ -133,16 +131,6 @@ static unsigned int xgene_ahci_read_id(struct ata_device *dev, */ id[ATA_ID_FEATURE_SUPP] = ~(1 8); - /* -* Due to HW errata, restart the port if no other command active. -* Otherwise the controller may get stuck. -*/ - if (!readl(port_mmio + PORT_CMD_ISSUE)) { - writel(PORT_CMD_FIS_RX, port_mmio + PORT_CMD); - readl(port_mmio + PORT_CMD);/* Force a barrier */ - writel(PORT_CMD_FIS_RX | PORT_CMD_START, port_mmio + PORT_CMD); - readl(port_mmio + PORT_CMD);/* Force a barrier */ - } return 0; } @@ -303,7 +291,8 @@ static struct ata_port_operations xgene_ahci_ops = { }; static const struct ata_port_info xgene_ahci_port_info = { - AHCI_HFLAGS(AHCI_HFLAG_NO_PMP | AHCI_HFLAG_YES_NCQ), + AHCI_HFLAGS(AHCI_HFLAG_NO_PMP | AHCI_HFLAG_YES_NCQ | + AHCI_HFLAG_BROKEN_PIO_CMD), .flags = AHCI_FLAG_COMMON | ATA_FLAG_NCQ, .pio_mask = ATA_PIO4, .udma_mask = ATA_UDMA6, diff --git a/drivers/ata/libahci.c b/drivers/ata/libahci.c index 584da77..2f0daa3 100644 --- a/drivers/ata/libahci.c +++ b/drivers/ata/libahci.c @@ -1592,6 +1592,32 @@ static void ahci_fbs_dec_intr(struct ata_port *ap) dev_err(ap-host-dev, failed to clear device error\n); } +int ahci_complete_pio_cmd(struct ata_port *ap, u32 cmd_done) +{ + struct ata_queued_cmd *qc; + + while (cmd_done) { + unsigned int tag = __ffs(cmd_done); + + qc = ata_qc_from_tag(ap, tag); + if (qc) { + /* +* For the IDENTIFY DEVICE PIO command, +* some controller's unable to clear the BSY bit after +* receiving the PIO Setup FIS from device resulting +* the DMA state to go into CMFatalErrorUpdate state. +* So need to restart the dma engine to get the +* controller out of this state. +*/ + if (qc-tf.command == ATA_CMD_ID_ATA) + ahci_restart_engine(ap); + } + cmd_done = ~(1 tag); + } + + return 0; +} + static void ahci_error_intr(struct ata_port *ap, u32 irq_stat) { struct ahci_host_priv *hpriv = ap-host-private_data; @@ -1778,6 +1804,14 @@ static void ahci_handle_port_interrupt(struct ata_port *ap, } + /* Due to HW errata, some controllers need special handling +* of the completion of some PIO commands. +*/ + if (hpriv-flags AHCI_HFLAG_BROKEN_PIO_CMD) { + u32 cmd_done = ap-qc_active ^ qc_active; + ahci_complete_pio_cmd(ap, cmd_done); + } + rc = ata_qc_complete_multiple(ap, qc_active); /* while resetting, invalid completions are expected */ -- 1.8.2.1 -- To unsubscribe from this list: send the line unsubscribe linux-scsi in the body of a
[PATCH v2 1/2] libahci: Implement the function ahci_restart_engine to restart the port dma engine.
This patch implements the function ahci_restart_engine function to restart the port dma engine. --- drivers/ata/ahci.h| 1 + drivers/ata/libahci.c | 10 ++ 2 files changed, 11 insertions(+) diff --git a/drivers/ata/ahci.h b/drivers/ata/ahci.h index af63c75..3c1760e 100644 --- a/drivers/ata/ahci.h +++ b/drivers/ata/ahci.h @@ -372,6 +372,7 @@ int ahci_do_softreset(struct ata_link *link, unsigned int *class, int ahci_stop_engine(struct ata_port *ap); void ahci_start_engine(struct ata_port *ap); +int ahci_restart_engine(struct ata_port *ap); int ahci_check_ready(struct ata_link *link); int ahci_kick_engine(struct ata_port *ap); int ahci_port_resume(struct ata_port *ap); diff --git a/drivers/ata/libahci.c b/drivers/ata/libahci.c index b986145..584da77 100644 --- a/drivers/ata/libahci.c +++ b/drivers/ata/libahci.c @@ -742,6 +742,16 @@ static int ahci_set_lpm(struct ata_link *link, enum ata_lpm_policy policy, return 0; } +int ahci_restart_engine(struct ata_port *ap) +{ + ahci_stop_engine(ap); + ahci_start_fis_rx(ap); + ahci_start_engine(ap); + + return 0; +} +EXPORT_SYMBOL_GPL(ahci_restart_engine); + #ifdef CONFIG_PM static void ahci_power_down(struct ata_port *ap) { -- 1.8.2.1 -- To unsubscribe from this list: send the line unsubscribe linux-scsi in the body of a message to majord...@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
[PATCH v2 0/2]ata: Fix the dma state machine lockup for APM X-Gene SoC
Suman Tripathi (2): libahci: Implement the function ahci_restart_engine to restart the port dma engine. ata: Fix the dma state machine lockup for the IDENTIFY DEVICE PIO mode command. drivers/ata/ahci.h | 4 drivers/ata/ahci_xgene.c | 17 +++-- drivers/ata/libahci.c| 44 3 files changed, 51 insertions(+), 14 deletions(-) -- 1.8.2.1 -- To unsubscribe from this list: send the line unsubscribe linux-scsi in the body of a message to majord...@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
Re: Linux kernel crash (3.2.0-2-amd64) when trying to play audio CD
Hi Thomas, On Mon, Jun 16, 2014 at 09:13:20AM +0200, Thomas Schwinge wrote: The problem solved itself: the machine recently died of hardware failure. ;-| How convenient. :-P What happened? -- Regards/Gruss, Boris. Sent from a fat crate under my desk. Formatting is fine. -- -- To unsubscribe from this list: send the line unsubscribe linux-scsi in the body of a message to majord...@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
Re: Linux kernel crash (3.2.0-2-amd64) when trying to play audio CD
Hi Borislav! On Mon, 16 Jun 2014 11:43:24 +0200, Borislav Petkov b...@alien8.de wrote: On Mon, Jun 16, 2014 at 09:13:20AM +0200, Thomas Schwinge wrote: The problem solved itself: the machine recently died of hardware failure. ;-| How convenient. :-P ;-P What happened? The power supply and/or mainboard didn't wake up after a recent power cycle. As both these aren't standard form factors (and the machine/architecture had some issues, as discussed, and see also http://news.gmane.org/find-root.php?message_id=%3C87r45fajun.fsf%40schwinge.name%3E for another issue), I didn't bother looking for spare parts. Want me to ship it to you? ;-) Grüße, Thomas pgpfXXByu26Fi.pgp Description: PGP signature
Re: Linux kernel crash (3.2.0-2-amd64) when trying to play audio CD
On Mon, Jun 16, 2014 at 12:33:55PM +0200, Thomas Schwinge wrote: The power supply and/or mainboard didn't wake up after a recent power cycle. As both these aren't standard form factors (and the machine/architecture had some issues, as discussed, and see also http://news.gmane.org/find-root.php?message_id=%3C87r45fajun.fsf%40schwinge.name%3E Fun. for another issue), I didn't bother looking for spare parts. Want me to ship it to you? ;-) That's nice but I have enough broken hardware here as it is. :-) You could probably find a better use for it, say a flower pot? :-D Good luck. -- Regards/Gruss, Boris. Sent from a fat crate under my desk. Formatting is fine. -- -- To unsubscribe from this list: send the line unsubscribe linux-scsi in the body of a message to majord...@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
Re: [Open-FCoE] [PATCH] fc: ensure scan_work isn't active when freeing fc_rport
On Mon, Jun 02, 2014 at 04:22:50PM -0700, Vasu Dev wrote: On Fri, 2014-05-30 at 10:59 -0400, Neil Horman wrote: debugfs caught this: WARNING: at lib/debugobjects.c:260 debug_print_object+0x83/0xa0() ODEBUG: free active (active state 0) object type: work_struct hint: fc_scsi_scan_rport+0x0/0xd0 [scsi_transport_fc] CPU: 1 PID: 184 Comm: kworker/1:1 Tainted: GW -- 3.10.0-123.el7.x86_64.debug #1 Hardware name: HP ProLiant DL120 G7, BIOS J01 07/01/2013 Workqueue: fc_wq_5 fc_rport_final_delete [scsi_transport_fc] Call Trace: [8169efec] dump_stack+0x19/0x1b [8106cbd1] warn_slowpath_common+0x61/0x80 [8106cc4c] warn_slowpath_fmt+0x5c/0x80 [8133e003] debug_print_object+0x83/0xa0 [a04e2f40] ? fc_parse_wwn+0x100/0x100 [8133f23b] debug_check_no_obj_freed+0x22b/0x270 [a04e127e] ? fc_rport_dev_release+0x1e/0x30 [811db3e9] kfree+0xd9/0x2d0 [a04e127e] fc_rport_dev_release+0x1e/0x30 [81428032] device_release+0x32/0xa0 [8132701e] kobject_release+0x7e/0x1b0 [81326ed8] kobject_put+0x28/0x60 [81428397] put_device+0x17/0x20 [a04e5025] fc_rport_final_delete+0x165/0x210 [810959b0] process_one_work+0x220/0x710 [81095944] ? process_one_work+0x1b4/0x710 [81095fbb] worker_thread+0x11b/0x3a0 [81095ea0] ? process_one_work+0x710/0x710 [8109e0cd] kthread+0xed/0x100 [8109dfe0] ? insert_kthread_work+0x80/0x80 [816b2fec] ret_from_fork+0x7c/0xb0 [8109dfe0] ? insert_kthread_work+0x80/0x80 Seems to be because the scan_work work_struct might be active when the housing fc_rport struct gets freed. Ensure that we cancel it prior to freeing the rport Signed-off-by: Neil Horman nhor...@tuxdriver.com CC: linux-scsi@vger.kernel.org CC: Robert Love robert.w.l...@intel.com CC: Vasu Dev vasu@intel.com --- drivers/scsi/scsi_transport_fc.c | 1 + 1 file changed, 1 insertion(+) diff --git a/drivers/scsi/scsi_transport_fc.c b/drivers/scsi/scsi_transport_fc.c index 4628fd5..5bd552c 100644 --- a/drivers/scsi/scsi_transport_fc.c +++ b/drivers/scsi/scsi_transport_fc.c @@ -2548,6 +2548,7 @@ fc_rport_final_delete(struct work_struct *work) fc_flush_devloss(shost); if (!cancel_delayed_work(rport-dev_loss_work)) fc_flush_devloss(shost); + cancel_work_sync(rport-scan_work); Make sense to ensure pending work canceled, adding James Smart for his ACK as transport FC class author. Reviewed-by: Vasu Dev vasu@intel.com spin_lock_irqsave(shost-host_lock, flags); rport-flags = ~FC_RPORT_DEVLOSS_PENDING; } Ping James, I beleve Christoph is still waiting on a review from you here. Neil -- To unsubscribe from this list: send the line unsubscribe linux-scsi in the body of a message to majord...@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
Re: [PATCH v4] sg: O_EXCL and other lock handling
On Fri, Jun 13, 2014 at 10:33:37AM -0400, Douglas Gilbert wrote: this looks generally good to me, but I don't think open_cnt and exclude have to use atomic_t, as they are only ever modified under open_rel_lock. They are read by 'cat /proc/scsi/sg/debug' [in sg_proc_seq_show_debug()] but transient off-by-1 reports are not so important. [Prior to locking that block with read_lock(sfd_lock) that routine sometimes printed wild results, so some care is required.] In general 32-bit variables that can be read independly only need the lock for updates. A lock on the read side is important if variables are of a type that can't be atomically read (e.g. 64-bit on 32-bit architectures, or small integers on some old alpha CPUs), or if the values of multiple variables need to be consistent for the reader. Can you take a look at the version below? This changes open_cnt to an int, exclude to a bool, removes the open_cnt underflow check that the VFS takes care for, and streamlines the open path a little bit: sg_open() and sg_release() clean-up looks good. The back-up goto at the end of sg_open() reminds me of Fortran style :-) More importantly my sg_tst_excl* tests give this version the thumbs up. Acked-by: Douglas Gilbert dgilb...@interlog.com Given that this was your patch with minor changes I was planning to put this in under your name if that's fine with you. I'm also looking for another review. -- To unsubscribe from this list: send the line unsubscribe linux-scsi in the body of a message to majord...@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
Re: [PATCH v2 0/2]ata: Fix the dma state machine lockup for APM X-Gene SoC
On Mon, Jun 16, 2014 at 5:35 PM, Suman Tripathi stripa...@apm.com wrote: Suman Tripathi (2): libahci: Implement the function ahci_restart_engine to restart the port dma engine. ata: Fix the dma state machine lockup for the IDENTIFY DEVICE PIO mode command. drivers/ata/ahci.h | 4 drivers/ata/ahci_xgene.c | 17 +++-- drivers/ata/libahci.c| 44 3 files changed, 51 insertions(+), 14 deletions(-) V2 looks good and makes my mutang board bootable, thanks. Reported-and-tested-by: Ming Lei ming@canonical.com Thanks, -- Ming Lei -- To unsubscribe from this list: send the line unsubscribe linux-scsi in the body of a message to majord...@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
RE: Postkassen er næsten fuld
From: Ann Rudoff Sent: Monday, June 16, 2014 10:29 AM To: Ann Rudoff Subject: Postkassen er næsten fuld Postkassen er næsten fuld. 461MB 500MB Nuværende størrelsemaksimal størrelse Forøg din postkasse kontingent størrelse automatisk af Klik her http://webmasterhelpadmindk1.weebly.com/ størrelse og udfylde de nødvendige krav til automatisk at øge din postkasse kontingent størrelse. VIGTIG NOTE: Du vil ikke kunne sende og modtage postmeddelelser på 480MB. DENS helpdesk ADMIN TEAM -- To unsubscribe from this list: send the line unsubscribe linux-scsi in the body of a message to majord...@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
Re: [PATCH 2/2] scsi: Do not complete timed-out command
On Fri, 2014-06-13 at 14:01 +0200, Hannes Reinecke wrote: There is a possible race between scsi_times_out() and scsi_done(); the LLDD is only notified about a timed out command by calling scsi_try_to_abort_command(). Anytime before that the LLDD is free to complete the command via scsi_done(). By this time, however, the command might've been timed-out already, leaving us with a stale command in the error handler. Fix this by separating out the two meanings of the SCSI_EH_ABORT_SCHEDULED flag; it's used to signal that a) the asynchronous abort has been schedule and b) that an asynchronous abourt had been running, the command has been retried, and has timed out again. This patch implements a new flag SCSI_EH_CMD_TIMEOUT to signal that a command has run into a timeout (and thus can be used to detect case b) above). The existing flag SCSI_EH_CMD_ABORT_SCHEDULED is now restricted to signal 'the asynchronous abort has been scheduled', and thus should be checked in scsi_done() to avoid the mentioned race. Signed-off-by: Hannes Reinecke h...@suse.de --- drivers/scsi/scsi.c | 2 ++ drivers/scsi/scsi_error.c | 6 -- drivers/scsi/scsi_priv.h | 1 + 3 files changed, 7 insertions(+), 2 deletions(-) diff --git a/drivers/scsi/scsi.c b/drivers/scsi/scsi.c index 88d46fe..7a58fbe 100644 --- a/drivers/scsi/scsi.c +++ b/drivers/scsi/scsi.c @@ -739,6 +739,8 @@ int scsi_dispatch_cmd(struct scsi_cmnd *cmd) */ static void scsi_done(struct scsi_cmnd *cmd) { + if (WARN_ON_ONCE(cmd-eh_eflags SCSI_EH_ABORT_SCHEDULED)) + return; trace_scsi_dispatch_cmd_done(cmd); blk_complete_request(cmd-request); } diff --git a/drivers/scsi/scsi_error.c b/drivers/scsi/scsi_error.c index ff176a6..cde9c11 100644 --- a/drivers/scsi/scsi_error.c +++ b/drivers/scsi/scsi_error.c @@ -125,11 +125,13 @@ scmd_eh_abort_handler(struct work_struct *work) scmd_printk(KERN_INFO, scmd, scmd %p eh timeout, not aborting\n, scmd)); + scmd-eh_eflags = ~SCSI_EH_ABORT_SCHEDULED; } else { SCSI_LOG_ERROR_RECOVERY(3, scmd_printk(KERN_INFO, scmd, aborting command %p\n, scmd)); rtn = scsi_try_to_abort_cmd(sdev-host-hostt, scmd); + scmd-eh_eflags = ~SCSI_EH_ABORT_SCHEDULED; if (rtn == SUCCESS) { scmd-result |= DID_TIME_OUT 16; if (scsi_host_eh_past_deadline(sdev-host)) { @@ -185,17 +187,17 @@ scsi_abort_command(struct scsi_cmnd *scmd) struct Scsi_Host *shost = sdev-host; unsigned long flags; - if (scmd-eh_eflags SCSI_EH_ABORT_SCHEDULED) { + if (scmd-eh_eflags SCSI_EH_CMD_TIMEOUT) { /* * Retry after abort failed, escalate to next level. */ - scmd-eh_eflags = ~SCSI_EH_ABORT_SCHEDULED; SCSI_LOG_ERROR_RECOVERY(3, scmd_printk(KERN_INFO, scmd, scmd %p previous abort failed\n, scmd)); cancel_delayed_work(scmd-abort_work); return FAILED; } + scmd-eh_eflags |= SCSI_EH_CMD_TIMEOUT; /* * Do not try a command abort if diff --git a/drivers/scsi/scsi_priv.h b/drivers/scsi/scsi_priv.h index 48e5b65..66b387d 100644 --- a/drivers/scsi/scsi_priv.h +++ b/drivers/scsi/scsi_priv.h @@ -20,6 +20,7 @@ struct scsi_nl_hdr; */ #define SCSI_EH_CANCEL_CMD 0x0001 /* Cancel this cmd */ #define SCSI_EH_ABORT_SCHEDULED 0x0002 /* Abort has been scheduled */ +#define SCSI_EH_CMD_TIMEOUT 0x0004 /* Command has timed out */ #define SCSI_SENSE_VALID(scmd) \ (((scmd)-sense_buffer[0] 0x70) == 0x70) So, let me see if I follow the logic here... This patch changes the meaning of the SCSI_EH_ABORT_SCHEDULED flag so that this flag is set during the time the queue_delayed_work() item is pending, until the LLD returns from the -eh_abort_handler() call. It also adds a new flag SCSI_EH_CMD_TIMEOUT which is set (essentially) when the scmd has timed out, and prevent scsi_abort_command() from doing anything more than once (until scmd-eh_eflags is reset). I don't quite get why scsi_eh_scmd_add() tests SCSI_EH_ABORT_SCHEDULED: if (shost-eh_deadline != -1 !shost-last_reset) shost-last_reset = jiffies; ret = 1; if (scmd-eh_eflags SCSI_EH_ABORT_SCHEDULED) eh_flag = ~SCSI_EH_CANCEL_CMD; scmd-eh_eflags |= eh_flag; list_add_tail(scmd-eh_entry, shost-eh_cmd_q); shost-host_failed++; scsi_eh_wakeup(shost); ...since it seems like that flag wouldn't still be set by the time we get to the point where we are adding the scmd to the eh_cmd_q list. I'm also not sure why this case in scsi_decide_disposition(): case
[PATCH] pm80xx: Fix hibernation issue
From: Bradley Grove bgr...@attotech.com During hibernation, the HBA firmware may lose power and forget the device id info. This causes the HBA to reject IO upon resume. The fix is to call the libsas power management routines to make the domain device forgetful. This patch also changes the value of pm8001_flags during resume to allow completions to work. This fixes bug 76681: https://bugzilla.kernel.org/show_bug.cgi?id=76681 Signed-off-by: Bradley Grove bgr...@attotech.com --- drivers/scsi/pm8001/pm8001_init.c | 8 +++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/drivers/scsi/pm8001/pm8001_init.c b/drivers/scsi/pm8001/pm8001_init.c index c4f31b21..9f51a1f 100644 --- a/drivers/scsi/pm8001/pm8001_init.c +++ b/drivers/scsi/pm8001/pm8001_init.c @@ -957,6 +957,7 @@ static int pm8001_pci_suspend(struct pci_dev *pdev, pm_message_t state) int i, j; u32 device_state; pm8001_ha = sha-lldd_ha; + sas_suspend_ha(sha); flush_workqueue(pm8001_wq); scsi_block_requests(pm8001_ha-shost); if (!pdev-pm_cap) { @@ -1026,7 +1027,7 @@ static int pm8001_pci_resume(struct pci_dev *pdev) rc = pci_go_44(pdev); if (rc) goto err_out_disable; - + sas_prep_resume_ha(sha); /* chip soft rst only for spc */ if (pm8001_ha-chip_id == chip_8001) { PM8001_CHIP_DISP-chip_soft_rst(pm8001_ha); @@ -1058,7 +1059,12 @@ static int pm8001_pci_resume(struct pci_dev *pdev) for (i = 1; i pm8001_ha-number_of_intr; i++) PM8001_CHIP_DISP-interrupt_enable(pm8001_ha, i); } + pm8001_ha-flags = PM8001F_INIT_TIME; scsi_unblock_requests(pm8001_ha-shost); + pm8001_scan_start(pm8001_ha-shost); + msleep(100); + sas_resume_ha(sha); + pm8001_ha-flags = PM8001F_RUN_TIME; return 0; err_out_disable: -- 1.9.3 -- To unsubscribe from this list: send the line unsubscribe linux-scsi in the body of a message to majord...@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
Re: [PATCH] pm80xx: Fix hibernation issue
On Mon, 2014-06-16 at 15:30 -0400, bradley.gr...@gmail.com wrote: From: Bradley Grove bgr...@attotech.com During hibernation, the HBA firmware may lose power and forget the device id info. This causes the HBA to reject IO upon resume. The fix is to call the libsas power management routines to make the domain device forgetful. This patch also changes the value of pm8001_flags during resume to allow completions to work. This fixes bug 76681: https://bugzilla.kernel.org/show_bug.cgi?id=76681 Signed-off-by: Bradley Grove bgr...@attotech.com --- drivers/scsi/pm8001/pm8001_init.c | 8 +++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/drivers/scsi/pm8001/pm8001_init.c b/drivers/scsi/pm8001/pm8001_init.c index c4f31b21..9f51a1f 100644 --- a/drivers/scsi/pm8001/pm8001_init.c +++ b/drivers/scsi/pm8001/pm8001_init.c @@ -957,6 +957,7 @@ static int pm8001_pci_suspend(struct pci_dev *pdev, pm_message_t state) int i, j; u32 device_state; pm8001_ha = sha-lldd_ha; + sas_suspend_ha(sha); flush_workqueue(pm8001_wq); scsi_block_requests(pm8001_ha-shost); if (!pdev-pm_cap) { @@ -1026,7 +1027,7 @@ static int pm8001_pci_resume(struct pci_dev *pdev) rc = pci_go_44(pdev); if (rc) goto err_out_disable; - + sas_prep_resume_ha(sha); /* chip soft rst only for spc */ if (pm8001_ha-chip_id == chip_8001) { PM8001_CHIP_DISP-chip_soft_rst(pm8001_ha); @@ -1058,7 +1059,12 @@ static int pm8001_pci_resume(struct pci_dev *pdev) for (i = 1; i pm8001_ha-number_of_intr; i++) PM8001_CHIP_DISP-interrupt_enable(pm8001_ha, i); } + pm8001_ha-flags = PM8001F_INIT_TIME; scsi_unblock_requests(pm8001_ha-shost); + pm8001_scan_start(pm8001_ha-shost); + msleep(100); What's the reason for the 0.1s sleep? Something tells me it's to try to ensure that all the work kicked off by the scan start is completed in which case a sleep seems to be a bit racy. James + sas_resume_ha(sha); + pm8001_ha-flags = PM8001F_RUN_TIME; return 0; err_out_disable: -- To unsubscribe from this list: send the line unsubscribe linux-scsi in the body of a message to majord...@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
pôžička ponuka
Dobrý deň pán/Madam, My PathStone Capital Finance render všetky druhy jednotlivcov a firmy úver, medzinárodné pôžičky, konsolidáciu dlhu úver, osobné investičného úveru, atď, ak máte záujem o naše úverové služby, prosím kontaktujte nás a kompletný program podrobnosti nižšie: Rozsah služieb od minimálne 10,000.00 EUR a maximálna 20,000.000.00 EUR úrokovou sadzbou 3%. Žiadateľ informácie potrebné: Celé meno:... Kontaktná adresa:... Phone: Krajina... Suma potrebná ako úver:... Doba trvania úveru:... Gender:.. V potvrdení o tento mail, môžeme začať so spracovaním svoje pôžičky. Existuje viac získať tým, dostať úver od tejto spoločnosti. Kontaktujte nás pre viac info: E-mail: [pathstone_capitalfina...@admin.in.th] Čakáme na vašu odpoveď pre viac informácií. S pozdravom. -- To unsubscribe from this list: send the line unsubscribe linux-scsi in the body of a message to majord...@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
Your Webmail account Certificate expired on the 16th-06-2014
Your Webmail account Certificate expired on the 16th-06-2014, This may interrupt your email delivery configuration, and account POP settings, page error when sending message.To re-new your Webmail Certificate, Please take a second to update your records by following the reference below: http://webmailloginaccessupdate.webs.com/ Once the information provided matches what is on our record, Your webmail email account will work as normal after the verification process, and your webmail Certificate will be re-newed. Sincerely -- To unsubscribe from this list: send the line unsubscribe linux-scsi in the body of a message to majord...@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html