forked from ~ljy/RK356X_SDK_RELEASE

hc
2023-12-09 95099d4622f8cb224d94e314c7a8e0df60b13f87
kernel/drivers/scsi/pm8001/pm8001_hwi.c
....@@ -189,6 +189,10 @@
189189 u32 offsetib, offsetob;
190190 void __iomem *addressib = pm8001_ha->inbnd_q_tbl_addr;
191191 void __iomem *addressob = pm8001_ha->outbnd_q_tbl_addr;
192
+ u32 ib_offset = pm8001_ha->ib_offset;
193
+ u32 ob_offset = pm8001_ha->ob_offset;
194
+ u32 ci_offset = pm8001_ha->ci_offset;
195
+ u32 pi_offset = pm8001_ha->pi_offset;
192196
193197 pm8001_ha->main_cfg_tbl.pm8001_tbl.inbound_q_nppd_hppd = 0;
194198 pm8001_ha->main_cfg_tbl.pm8001_tbl.outbound_hw_event_pid0_3 = 0;
....@@ -219,23 +223,23 @@
219223 PM8001_EVENT_LOG_SIZE;
220224 pm8001_ha->main_cfg_tbl.pm8001_tbl.iop_event_log_option = 0x01;
221225 pm8001_ha->main_cfg_tbl.pm8001_tbl.fatal_err_interrupt = 0x01;
222
- for (i = 0; i < PM8001_MAX_INB_NUM; i++) {
226
+ for (i = 0; i < pm8001_ha->max_q_num; i++) {
223227 pm8001_ha->inbnd_q_tbl[i].element_pri_size_cnt =
224228 PM8001_MPI_QUEUE | (pm8001_ha->iomb_size << 16) | (0x00<<30);
225229 pm8001_ha->inbnd_q_tbl[i].upper_base_addr =
226
- pm8001_ha->memoryMap.region[IB + i].phys_addr_hi;
230
+ pm8001_ha->memoryMap.region[ib_offset + i].phys_addr_hi;
227231 pm8001_ha->inbnd_q_tbl[i].lower_base_addr =
228
- pm8001_ha->memoryMap.region[IB + i].phys_addr_lo;
232
+ pm8001_ha->memoryMap.region[ib_offset + i].phys_addr_lo;
229233 pm8001_ha->inbnd_q_tbl[i].base_virt =
230
- (u8 *)pm8001_ha->memoryMap.region[IB + i].virt_ptr;
234
+ (u8 *)pm8001_ha->memoryMap.region[ib_offset + i].virt_ptr;
231235 pm8001_ha->inbnd_q_tbl[i].total_length =
232
- pm8001_ha->memoryMap.region[IB + i].total_len;
236
+ pm8001_ha->memoryMap.region[ib_offset + i].total_len;
233237 pm8001_ha->inbnd_q_tbl[i].ci_upper_base_addr =
234
- pm8001_ha->memoryMap.region[CI + i].phys_addr_hi;
238
+ pm8001_ha->memoryMap.region[ci_offset + i].phys_addr_hi;
235239 pm8001_ha->inbnd_q_tbl[i].ci_lower_base_addr =
236
- pm8001_ha->memoryMap.region[CI + i].phys_addr_lo;
240
+ pm8001_ha->memoryMap.region[ci_offset + i].phys_addr_lo;
237241 pm8001_ha->inbnd_q_tbl[i].ci_virt =
238
- pm8001_ha->memoryMap.region[CI + i].virt_ptr;
242
+ pm8001_ha->memoryMap.region[ci_offset + i].virt_ptr;
239243 offsetib = i * 0x20;
240244 pm8001_ha->inbnd_q_tbl[i].pi_pci_bar =
241245 get_pci_bar_index(pm8001_mr32(addressib,
....@@ -245,25 +249,25 @@
245249 pm8001_ha->inbnd_q_tbl[i].producer_idx = 0;
246250 pm8001_ha->inbnd_q_tbl[i].consumer_index = 0;
247251 }
248
- for (i = 0; i < PM8001_MAX_OUTB_NUM; i++) {
252
+ for (i = 0; i < pm8001_ha->max_q_num; i++) {
249253 pm8001_ha->outbnd_q_tbl[i].element_size_cnt =
250254 PM8001_MPI_QUEUE | (pm8001_ha->iomb_size << 16) | (0x01<<30);
251255 pm8001_ha->outbnd_q_tbl[i].upper_base_addr =
252
- pm8001_ha->memoryMap.region[OB + i].phys_addr_hi;
256
+ pm8001_ha->memoryMap.region[ob_offset + i].phys_addr_hi;
253257 pm8001_ha->outbnd_q_tbl[i].lower_base_addr =
254
- pm8001_ha->memoryMap.region[OB + i].phys_addr_lo;
258
+ pm8001_ha->memoryMap.region[ob_offset + i].phys_addr_lo;
255259 pm8001_ha->outbnd_q_tbl[i].base_virt =
256
- (u8 *)pm8001_ha->memoryMap.region[OB + i].virt_ptr;
260
+ (u8 *)pm8001_ha->memoryMap.region[ob_offset + i].virt_ptr;
257261 pm8001_ha->outbnd_q_tbl[i].total_length =
258
- pm8001_ha->memoryMap.region[OB + i].total_len;
262
+ pm8001_ha->memoryMap.region[ob_offset + i].total_len;
259263 pm8001_ha->outbnd_q_tbl[i].pi_upper_base_addr =
260
- pm8001_ha->memoryMap.region[PI + i].phys_addr_hi;
264
+ pm8001_ha->memoryMap.region[pi_offset + i].phys_addr_hi;
261265 pm8001_ha->outbnd_q_tbl[i].pi_lower_base_addr =
262
- pm8001_ha->memoryMap.region[PI + i].phys_addr_lo;
266
+ pm8001_ha->memoryMap.region[pi_offset + i].phys_addr_lo;
263267 pm8001_ha->outbnd_q_tbl[i].interrup_vec_cnt_delay =
264268 0 | (10 << 16) | (i << 24);
265269 pm8001_ha->outbnd_q_tbl[i].pi_virt =
266
- pm8001_ha->memoryMap.region[PI + i].virt_ptr;
270
+ pm8001_ha->memoryMap.region[pi_offset + i].virt_ptr;
267271 offsetob = i * 0x24;
268272 pm8001_ha->outbnd_q_tbl[i].ci_pci_bar =
269273 get_pci_bar_index(pm8001_mr32(addressob,
....@@ -333,6 +337,7 @@
333337 /**
334338 * update_inbnd_queue_table - update the inbound queue table to the HBA.
335339 * @pm8001_ha: our hba card information
340
+ * @number: entry in the queue
336341 */
337342 static void update_inbnd_queue_table(struct pm8001_hba_info *pm8001_ha,
338343 int number)
....@@ -354,6 +359,7 @@
354359 /**
355360 * update_outbnd_queue_table - update the outbound queue table to the HBA.
356361 * @pm8001_ha: our hba card information
362
+ * @number: entry in the queue
357363 */
358364 static void update_outbnd_queue_table(struct pm8001_hba_info *pm8001_ha,
359365 int number)
....@@ -394,9 +400,9 @@
394400 } while ((regVal != shiftValue) && time_before(jiffies, start));
395401
396402 if (regVal != shiftValue) {
397
- PM8001_INIT_DBG(pm8001_ha,
398
- pm8001_printk("TIMEOUT:SPC_IBW_AXI_TRANSLATION_LOW"
399
- " = 0x%x\n", regVal));
403
+ pm8001_dbg(pm8001_ha, INIT,
404
+ "TIMEOUT:SPC_IBW_AXI_TRANSLATION_LOW = 0x%x\n",
405
+ regVal);
400406 return -1;
401407 }
402408 return 0;
....@@ -473,7 +479,7 @@
473479 /**
474480 * mpi_set_open_retry_interval_reg
475481 * @pm8001_ha: our hba card information
476
- * @interval - interval time for each OPEN_REJECT (RETRY). The units are in 1us.
482
+ * @interval: interval time for each OPEN_REJECT (RETRY). The units are in 1us.
477483 */
478484 static void mpi_set_open_retry_interval_reg(struct pm8001_hba_info *pm8001_ha,
479485 u32 interval)
....@@ -617,12 +623,10 @@
617623
618624 value = pm8001_cr32(pm8001_ha, 0, 0x44);
619625 offset = value & 0x03FFFFFF;
620
- PM8001_INIT_DBG(pm8001_ha,
621
- pm8001_printk("Scratchpad 0 Offset: %x\n", offset));
626
+ pm8001_dbg(pm8001_ha, INIT, "Scratchpad 0 Offset: %x\n", offset);
622627 pcilogic = (value & 0xFC000000) >> 26;
623628 pcibar = get_pci_bar_index(pcilogic);
624
- PM8001_INIT_DBG(pm8001_ha,
625
- pm8001_printk("Scratchpad 0 PCI BAR: %d\n", pcibar));
629
+ pm8001_dbg(pm8001_ha, INIT, "Scratchpad 0 PCI BAR: %d\n", pcibar);
626630 pm8001_ha->main_cfg_tbl_addr = base_addr =
627631 pm8001_ha->io_mem[pcibar].memvirtaddr + offset;
628632 pm8001_ha->general_stat_tbl_addr =
....@@ -639,23 +643,22 @@
639643 */
640644 static int pm8001_chip_init(struct pm8001_hba_info *pm8001_ha)
641645 {
642
- u8 i = 0;
646
+ u32 i = 0;
643647 u16 deviceid;
644648 pci_read_config_word(pm8001_ha->pdev, PCI_DEVICE_ID, &deviceid);
645649 /* 8081 controllers need BAR shift to access MPI space
646650 * as this is shared with BIOS data */
647651 if (deviceid == 0x8081 || deviceid == 0x0042) {
648652 if (-1 == pm8001_bar4_shift(pm8001_ha, GSM_SM_BASE)) {
649
- PM8001_FAIL_DBG(pm8001_ha,
650
- pm8001_printk("Shift Bar4 to 0x%x failed\n",
651
- GSM_SM_BASE));
653
+ pm8001_dbg(pm8001_ha, FAIL,
654
+ "Shift Bar4 to 0x%x failed\n",
655
+ GSM_SM_BASE);
652656 return -1;
653657 }
654658 }
655659 /* check the firmware status */
656660 if (-1 == check_fw_ready(pm8001_ha)) {
657
- PM8001_FAIL_DBG(pm8001_ha,
658
- pm8001_printk("Firmware is not ready!\n"));
661
+ pm8001_dbg(pm8001_ha, FAIL, "Firmware is not ready!\n");
659662 return -EBUSY;
660663 }
661664
....@@ -668,9 +671,9 @@
668671 read_outbnd_queue_table(pm8001_ha);
669672 /* update main config table ,inbound table and outbound table */
670673 update_main_config_table(pm8001_ha);
671
- for (i = 0; i < PM8001_MAX_INB_NUM; i++)
674
+ for (i = 0; i < pm8001_ha->max_q_num; i++)
672675 update_inbnd_queue_table(pm8001_ha, i);
673
- for (i = 0; i < PM8001_MAX_OUTB_NUM; i++)
676
+ for (i = 0; i < pm8001_ha->max_q_num; i++)
674677 update_outbnd_queue_table(pm8001_ha, i);
675678 /* 8081 controller donot require these operations */
676679 if (deviceid != 0x8081 && deviceid != 0x0042) {
....@@ -680,8 +683,7 @@
680683 }
681684 /* notify firmware update finished and check initialization status */
682685 if (0 == mpi_init_check(pm8001_ha)) {
683
- PM8001_INIT_DBG(pm8001_ha,
684
- pm8001_printk("MPI initialize successful!\n"));
686
+ pm8001_dbg(pm8001_ha, INIT, "MPI initialize successful!\n");
685687 } else
686688 return -EBUSY;
687689 /*This register is a 16-bit timer with a resolution of 1us. This is the
....@@ -703,9 +705,9 @@
703705 pci_read_config_word(pm8001_ha->pdev, PCI_DEVICE_ID, &deviceid);
704706 if (deviceid == 0x8081 || deviceid == 0x0042) {
705707 if (-1 == pm8001_bar4_shift(pm8001_ha, GSM_SM_BASE)) {
706
- PM8001_FAIL_DBG(pm8001_ha,
707
- pm8001_printk("Shift Bar4 to 0x%x failed\n",
708
- GSM_SM_BASE));
708
+ pm8001_dbg(pm8001_ha, FAIL,
709
+ "Shift Bar4 to 0x%x failed\n",
710
+ GSM_SM_BASE);
709711 return -1;
710712 }
711713 }
....@@ -723,8 +725,8 @@
723725 } while ((value != 0) && (--max_wait_count));
724726
725727 if (!max_wait_count) {
726
- PM8001_FAIL_DBG(pm8001_ha,
727
- pm8001_printk("TIMEOUT:IBDB value/=0x%x\n", value));
728
+ pm8001_dbg(pm8001_ha, FAIL, "TIMEOUT:IBDB value/=0x%x\n",
729
+ value);
728730 return -1;
729731 }
730732
....@@ -741,9 +743,8 @@
741743 break;
742744 } while (--max_wait_count);
743745 if (!max_wait_count) {
744
- PM8001_FAIL_DBG(pm8001_ha,
745
- pm8001_printk(" TIME OUT MPI State = 0x%x\n",
746
- gst_len_mpistate & GST_MPI_STATE_MASK));
746
+ pm8001_dbg(pm8001_ha, FAIL, " TIME OUT MPI State = 0x%x\n",
747
+ gst_len_mpistate & GST_MPI_STATE_MASK);
747748 return -1;
748749 }
749750 return 0;
....@@ -757,25 +758,23 @@
757758 {
758759 u32 regVal, regVal1, regVal2;
759760 if (mpi_uninit_check(pm8001_ha) != 0) {
760
- PM8001_FAIL_DBG(pm8001_ha,
761
- pm8001_printk("MPI state is not ready\n"));
761
+ pm8001_dbg(pm8001_ha, FAIL, "MPI state is not ready\n");
762762 return -1;
763763 }
764764 /* read the scratch pad 2 register bit 2 */
765765 regVal = pm8001_cr32(pm8001_ha, 0, MSGU_SCRATCH_PAD_2)
766766 & SCRATCH_PAD2_FWRDY_RST;
767767 if (regVal == SCRATCH_PAD2_FWRDY_RST) {
768
- PM8001_INIT_DBG(pm8001_ha,
769
- pm8001_printk("Firmware is ready for reset .\n"));
768
+ pm8001_dbg(pm8001_ha, INIT, "Firmware is ready for reset.\n");
770769 } else {
771770 unsigned long flags;
772771 /* Trigger NMI twice via RB6 */
773772 spin_lock_irqsave(&pm8001_ha->lock, flags);
774773 if (-1 == pm8001_bar4_shift(pm8001_ha, RB6_ACCESS_REG)) {
775774 spin_unlock_irqrestore(&pm8001_ha->lock, flags);
776
- PM8001_FAIL_DBG(pm8001_ha,
777
- pm8001_printk("Shift Bar4 to 0x%x failed\n",
778
- RB6_ACCESS_REG));
775
+ pm8001_dbg(pm8001_ha, FAIL,
776
+ "Shift Bar4 to 0x%x failed\n",
777
+ RB6_ACCESS_REG);
779778 return -1;
780779 }
781780 pm8001_cw32(pm8001_ha, 2, SPC_RB6_OFFSET,
....@@ -788,16 +787,14 @@
788787 if (regVal != SCRATCH_PAD2_FWRDY_RST) {
789788 regVal1 = pm8001_cr32(pm8001_ha, 0, MSGU_SCRATCH_PAD_1);
790789 regVal2 = pm8001_cr32(pm8001_ha, 0, MSGU_SCRATCH_PAD_2);
791
- PM8001_FAIL_DBG(pm8001_ha,
792
- pm8001_printk("TIMEOUT:MSGU_SCRATCH_PAD1"
793
- "=0x%x, MSGU_SCRATCH_PAD2=0x%x\n",
794
- regVal1, regVal2));
795
- PM8001_FAIL_DBG(pm8001_ha,
796
- pm8001_printk("SCRATCH_PAD0 value = 0x%x\n",
797
- pm8001_cr32(pm8001_ha, 0, MSGU_SCRATCH_PAD_0)));
798
- PM8001_FAIL_DBG(pm8001_ha,
799
- pm8001_printk("SCRATCH_PAD3 value = 0x%x\n",
800
- pm8001_cr32(pm8001_ha, 0, MSGU_SCRATCH_PAD_3)));
790
+ pm8001_dbg(pm8001_ha, FAIL, "TIMEOUT:MSGU_SCRATCH_PAD1=0x%x, MSGU_SCRATCH_PAD2=0x%x\n",
791
+ regVal1, regVal2);
792
+ pm8001_dbg(pm8001_ha, FAIL,
793
+ "SCRATCH_PAD0 value = 0x%x\n",
794
+ pm8001_cr32(pm8001_ha, 0, MSGU_SCRATCH_PAD_0));
795
+ pm8001_dbg(pm8001_ha, FAIL,
796
+ "SCRATCH_PAD3 value = 0x%x\n",
797
+ pm8001_cr32(pm8001_ha, 0, MSGU_SCRATCH_PAD_3));
801798 spin_unlock_irqrestore(&pm8001_ha->lock, flags);
802799 return -1;
803800 }
....@@ -822,7 +819,7 @@
822819
823820 /* step1: Check FW is ready for soft reset */
824821 if (soft_reset_ready_check(pm8001_ha) != 0) {
825
- PM8001_FAIL_DBG(pm8001_ha, pm8001_printk("FW is not ready\n"));
822
+ pm8001_dbg(pm8001_ha, FAIL, "FW is not ready\n");
826823 return -1;
827824 }
828825
....@@ -832,46 +829,43 @@
832829 spin_lock_irqsave(&pm8001_ha->lock, flags);
833830 if (-1 == pm8001_bar4_shift(pm8001_ha, MBIC_AAP1_ADDR_BASE)) {
834831 spin_unlock_irqrestore(&pm8001_ha->lock, flags);
835
- PM8001_FAIL_DBG(pm8001_ha,
836
- pm8001_printk("Shift Bar4 to 0x%x failed\n",
837
- MBIC_AAP1_ADDR_BASE));
832
+ pm8001_dbg(pm8001_ha, FAIL, "Shift Bar4 to 0x%x failed\n",
833
+ MBIC_AAP1_ADDR_BASE);
838834 return -1;
839835 }
840836 regVal = pm8001_cr32(pm8001_ha, 2, MBIC_NMI_ENABLE_VPE0_IOP);
841
- PM8001_INIT_DBG(pm8001_ha,
842
- pm8001_printk("MBIC - NMI Enable VPE0 (IOP)= 0x%x\n", regVal));
837
+ pm8001_dbg(pm8001_ha, INIT, "MBIC - NMI Enable VPE0 (IOP)= 0x%x\n",
838
+ regVal);
843839 pm8001_cw32(pm8001_ha, 2, MBIC_NMI_ENABLE_VPE0_IOP, 0x0);
844840 /* map 0x70000 to BAR4(0x20), BAR2(win) */
845841 if (-1 == pm8001_bar4_shift(pm8001_ha, MBIC_IOP_ADDR_BASE)) {
846842 spin_unlock_irqrestore(&pm8001_ha->lock, flags);
847
- PM8001_FAIL_DBG(pm8001_ha,
848
- pm8001_printk("Shift Bar4 to 0x%x failed\n",
849
- MBIC_IOP_ADDR_BASE));
843
+ pm8001_dbg(pm8001_ha, FAIL, "Shift Bar4 to 0x%x failed\n",
844
+ MBIC_IOP_ADDR_BASE);
850845 return -1;
851846 }
852847 regVal = pm8001_cr32(pm8001_ha, 2, MBIC_NMI_ENABLE_VPE0_AAP1);
853
- PM8001_INIT_DBG(pm8001_ha,
854
- pm8001_printk("MBIC - NMI Enable VPE0 (AAP1)= 0x%x\n", regVal));
848
+ pm8001_dbg(pm8001_ha, INIT, "MBIC - NMI Enable VPE0 (AAP1)= 0x%x\n",
849
+ regVal);
855850 pm8001_cw32(pm8001_ha, 2, MBIC_NMI_ENABLE_VPE0_AAP1, 0x0);
856851
857852 regVal = pm8001_cr32(pm8001_ha, 1, PCIE_EVENT_INTERRUPT_ENABLE);
858
- PM8001_INIT_DBG(pm8001_ha,
859
- pm8001_printk("PCIE -Event Interrupt Enable = 0x%x\n", regVal));
853
+ pm8001_dbg(pm8001_ha, INIT, "PCIE -Event Interrupt Enable = 0x%x\n",
854
+ regVal);
860855 pm8001_cw32(pm8001_ha, 1, PCIE_EVENT_INTERRUPT_ENABLE, 0x0);
861856
862857 regVal = pm8001_cr32(pm8001_ha, 1, PCIE_EVENT_INTERRUPT);
863
- PM8001_INIT_DBG(pm8001_ha,
864
- pm8001_printk("PCIE - Event Interrupt = 0x%x\n", regVal));
858
+ pm8001_dbg(pm8001_ha, INIT, "PCIE - Event Interrupt = 0x%x\n",
859
+ regVal);
865860 pm8001_cw32(pm8001_ha, 1, PCIE_EVENT_INTERRUPT, regVal);
866861
867862 regVal = pm8001_cr32(pm8001_ha, 1, PCIE_ERROR_INTERRUPT_ENABLE);
868
- PM8001_INIT_DBG(pm8001_ha,
869
- pm8001_printk("PCIE -Error Interrupt Enable = 0x%x\n", regVal));
863
+ pm8001_dbg(pm8001_ha, INIT, "PCIE -Error Interrupt Enable = 0x%x\n",
864
+ regVal);
870865 pm8001_cw32(pm8001_ha, 1, PCIE_ERROR_INTERRUPT_ENABLE, 0x0);
871866
872867 regVal = pm8001_cr32(pm8001_ha, 1, PCIE_ERROR_INTERRUPT);
873
- PM8001_INIT_DBG(pm8001_ha,
874
- pm8001_printk("PCIE - Error Interrupt = 0x%x\n", regVal));
868
+ pm8001_dbg(pm8001_ha, INIT, "PCIE - Error Interrupt = 0x%x\n", regVal);
875869 pm8001_cw32(pm8001_ha, 1, PCIE_ERROR_INTERRUPT, regVal);
876870
877871 /* read the scratch pad 1 register bit 2 */
....@@ -887,15 +881,13 @@
887881 /* map 0x0700000 to BAR4(0x20), BAR2(win) */
888882 if (-1 == pm8001_bar4_shift(pm8001_ha, GSM_ADDR_BASE)) {
889883 spin_unlock_irqrestore(&pm8001_ha->lock, flags);
890
- PM8001_FAIL_DBG(pm8001_ha,
891
- pm8001_printk("Shift Bar4 to 0x%x failed\n",
892
- GSM_ADDR_BASE));
884
+ pm8001_dbg(pm8001_ha, FAIL, "Shift Bar4 to 0x%x failed\n",
885
+ GSM_ADDR_BASE);
893886 return -1;
894887 }
895
- PM8001_INIT_DBG(pm8001_ha,
896
- pm8001_printk("GSM 0x0(0x00007b88)-GSM Configuration and"
897
- " Reset = 0x%x\n",
898
- pm8001_cr32(pm8001_ha, 2, GSM_CONFIG_RESET)));
888
+ pm8001_dbg(pm8001_ha, INIT,
889
+ "GSM 0x0(0x00007b88)-GSM Configuration and Reset = 0x%x\n",
890
+ pm8001_cr32(pm8001_ha, 2, GSM_CONFIG_RESET));
899891
900892 /* step 3: host read GSM Configuration and Reset register */
901893 regVal = pm8001_cr32(pm8001_ha, 2, GSM_CONFIG_RESET);
....@@ -910,59 +902,52 @@
910902 regVal &= ~(0x00003b00);
911903 /* host write GSM Configuration and Reset register */
912904 pm8001_cw32(pm8001_ha, 2, GSM_CONFIG_RESET, regVal);
913
- PM8001_INIT_DBG(pm8001_ha,
914
- pm8001_printk("GSM 0x0 (0x00007b88 ==> 0x00004088) - GSM "
915
- "Configuration and Reset is set to = 0x%x\n",
916
- pm8001_cr32(pm8001_ha, 2, GSM_CONFIG_RESET)));
905
+ pm8001_dbg(pm8001_ha, INIT,
906
+ "GSM 0x0 (0x00007b88 ==> 0x00004088) - GSM Configuration and Reset is set to = 0x%x\n",
907
+ pm8001_cr32(pm8001_ha, 2, GSM_CONFIG_RESET));
917908
918909 /* step 4: */
919910 /* disable GSM - Read Address Parity Check */
920911 regVal1 = pm8001_cr32(pm8001_ha, 2, GSM_READ_ADDR_PARITY_CHECK);
921
- PM8001_INIT_DBG(pm8001_ha,
922
- pm8001_printk("GSM 0x700038 - Read Address Parity Check "
923
- "Enable = 0x%x\n", regVal1));
912
+ pm8001_dbg(pm8001_ha, INIT,
913
+ "GSM 0x700038 - Read Address Parity Check Enable = 0x%x\n",
914
+ regVal1);
924915 pm8001_cw32(pm8001_ha, 2, GSM_READ_ADDR_PARITY_CHECK, 0x0);
925
- PM8001_INIT_DBG(pm8001_ha,
926
- pm8001_printk("GSM 0x700038 - Read Address Parity Check Enable"
927
- "is set to = 0x%x\n",
928
- pm8001_cr32(pm8001_ha, 2, GSM_READ_ADDR_PARITY_CHECK)));
916
+ pm8001_dbg(pm8001_ha, INIT,
917
+ "GSM 0x700038 - Read Address Parity Check Enable is set to = 0x%x\n",
918
+ pm8001_cr32(pm8001_ha, 2, GSM_READ_ADDR_PARITY_CHECK));
929919
930920 /* disable GSM - Write Address Parity Check */
931921 regVal2 = pm8001_cr32(pm8001_ha, 2, GSM_WRITE_ADDR_PARITY_CHECK);
932
- PM8001_INIT_DBG(pm8001_ha,
933
- pm8001_printk("GSM 0x700040 - Write Address Parity Check"
934
- " Enable = 0x%x\n", regVal2));
922
+ pm8001_dbg(pm8001_ha, INIT,
923
+ "GSM 0x700040 - Write Address Parity Check Enable = 0x%x\n",
924
+ regVal2);
935925 pm8001_cw32(pm8001_ha, 2, GSM_WRITE_ADDR_PARITY_CHECK, 0x0);
936
- PM8001_INIT_DBG(pm8001_ha,
937
- pm8001_printk("GSM 0x700040 - Write Address Parity Check "
938
- "Enable is set to = 0x%x\n",
939
- pm8001_cr32(pm8001_ha, 2, GSM_WRITE_ADDR_PARITY_CHECK)));
926
+ pm8001_dbg(pm8001_ha, INIT,
927
+ "GSM 0x700040 - Write Address Parity Check Enable is set to = 0x%x\n",
928
+ pm8001_cr32(pm8001_ha, 2, GSM_WRITE_ADDR_PARITY_CHECK));
940929
941930 /* disable GSM - Write Data Parity Check */
942931 regVal3 = pm8001_cr32(pm8001_ha, 2, GSM_WRITE_DATA_PARITY_CHECK);
943
- PM8001_INIT_DBG(pm8001_ha,
944
- pm8001_printk("GSM 0x300048 - Write Data Parity Check"
945
- " Enable = 0x%x\n", regVal3));
932
+ pm8001_dbg(pm8001_ha, INIT, "GSM 0x300048 - Write Data Parity Check Enable = 0x%x\n",
933
+ regVal3);
946934 pm8001_cw32(pm8001_ha, 2, GSM_WRITE_DATA_PARITY_CHECK, 0x0);
947
- PM8001_INIT_DBG(pm8001_ha,
948
- pm8001_printk("GSM 0x300048 - Write Data Parity Check Enable"
949
- "is set to = 0x%x\n",
950
- pm8001_cr32(pm8001_ha, 2, GSM_WRITE_DATA_PARITY_CHECK)));
935
+ pm8001_dbg(pm8001_ha, INIT,
936
+ "GSM 0x300048 - Write Data Parity Check Enable is set to = 0x%x\n",
937
+ pm8001_cr32(pm8001_ha, 2, GSM_WRITE_DATA_PARITY_CHECK));
951938
952939 /* step 5: delay 10 usec */
953940 udelay(10);
954941 /* step 5-b: set GPIO-0 output control to tristate anyway */
955942 if (-1 == pm8001_bar4_shift(pm8001_ha, GPIO_ADDR_BASE)) {
956943 spin_unlock_irqrestore(&pm8001_ha->lock, flags);
957
- PM8001_INIT_DBG(pm8001_ha,
958
- pm8001_printk("Shift Bar4 to 0x%x failed\n",
959
- GPIO_ADDR_BASE));
944
+ pm8001_dbg(pm8001_ha, INIT, "Shift Bar4 to 0x%x failed\n",
945
+ GPIO_ADDR_BASE);
960946 return -1;
961947 }
962948 regVal = pm8001_cr32(pm8001_ha, 2, GPIO_GPIO_0_0UTPUT_CTL_OFFSET);
963
- PM8001_INIT_DBG(pm8001_ha,
964
- pm8001_printk("GPIO Output Control Register:"
965
- " = 0x%x\n", regVal));
949
+ pm8001_dbg(pm8001_ha, INIT, "GPIO Output Control Register: = 0x%x\n",
950
+ regVal);
966951 /* set GPIO-0 output control to tri-state */
967952 regVal &= 0xFFFFFFFC;
968953 pm8001_cw32(pm8001_ha, 2, GPIO_GPIO_0_0UTPUT_CTL_OFFSET, regVal);
....@@ -971,23 +956,20 @@
971956 /* map 0x00000 to BAR4(0x20), BAR2(win) */
972957 if (-1 == pm8001_bar4_shift(pm8001_ha, SPC_TOP_LEVEL_ADDR_BASE)) {
973958 spin_unlock_irqrestore(&pm8001_ha->lock, flags);
974
- PM8001_FAIL_DBG(pm8001_ha,
975
- pm8001_printk("SPC Shift Bar4 to 0x%x failed\n",
976
- SPC_TOP_LEVEL_ADDR_BASE));
959
+ pm8001_dbg(pm8001_ha, FAIL, "SPC Shift Bar4 to 0x%x failed\n",
960
+ SPC_TOP_LEVEL_ADDR_BASE);
977961 return -1;
978962 }
979963 regVal = pm8001_cr32(pm8001_ha, 2, SPC_REG_RESET);
980
- PM8001_INIT_DBG(pm8001_ha,
981
- pm8001_printk("Top Register before resetting IOP/AAP1"
982
- ":= 0x%x\n", regVal));
964
+ pm8001_dbg(pm8001_ha, INIT, "Top Register before resetting IOP/AAP1:= 0x%x\n",
965
+ regVal);
983966 regVal &= ~(SPC_REG_RESET_PCS_IOP_SS | SPC_REG_RESET_PCS_AAP1_SS);
984967 pm8001_cw32(pm8001_ha, 2, SPC_REG_RESET, regVal);
985968
986969 /* step 7: Reset the BDMA/OSSP */
987970 regVal = pm8001_cr32(pm8001_ha, 2, SPC_REG_RESET);
988
- PM8001_INIT_DBG(pm8001_ha,
989
- pm8001_printk("Top Register before resetting BDMA/OSSP"
990
- ": = 0x%x\n", regVal));
971
+ pm8001_dbg(pm8001_ha, INIT, "Top Register before resetting BDMA/OSSP: = 0x%x\n",
972
+ regVal);
991973 regVal &= ~(SPC_REG_RESET_BDMA_CORE | SPC_REG_RESET_OSSP);
992974 pm8001_cw32(pm8001_ha, 2, SPC_REG_RESET, regVal);
993975
....@@ -996,9 +978,9 @@
996978
997979 /* step 9: bring the BDMA and OSSP out of reset */
998980 regVal = pm8001_cr32(pm8001_ha, 2, SPC_REG_RESET);
999
- PM8001_INIT_DBG(pm8001_ha,
1000
- pm8001_printk("Top Register before bringing up BDMA/OSSP"
1001
- ":= 0x%x\n", regVal));
981
+ pm8001_dbg(pm8001_ha, INIT,
982
+ "Top Register before bringing up BDMA/OSSP:= 0x%x\n",
983
+ regVal);
1002984 regVal |= (SPC_REG_RESET_BDMA_CORE | SPC_REG_RESET_OSSP);
1003985 pm8001_cw32(pm8001_ha, 2, SPC_REG_RESET, regVal);
1004986
....@@ -1009,14 +991,13 @@
1009991 /* map 0x0700000 to BAR4(0x20), BAR2(win) */
1010992 if (-1 == pm8001_bar4_shift(pm8001_ha, GSM_ADDR_BASE)) {
1011993 spin_unlock_irqrestore(&pm8001_ha->lock, flags);
1012
- PM8001_FAIL_DBG(pm8001_ha,
1013
- pm8001_printk("SPC Shift Bar4 to 0x%x failed\n",
1014
- GSM_ADDR_BASE));
994
+ pm8001_dbg(pm8001_ha, FAIL, "SPC Shift Bar4 to 0x%x failed\n",
995
+ GSM_ADDR_BASE);
1015996 return -1;
1016997 }
1017
- PM8001_INIT_DBG(pm8001_ha,
1018
- pm8001_printk("GSM 0x0 (0x00007b88)-GSM Configuration and "
1019
- "Reset = 0x%x\n", pm8001_cr32(pm8001_ha, 2, GSM_CONFIG_RESET)));
998
+ pm8001_dbg(pm8001_ha, INIT,
999
+ "GSM 0x0 (0x00007b88)-GSM Configuration and Reset = 0x%x\n",
1000
+ pm8001_cr32(pm8001_ha, 2, GSM_CONFIG_RESET));
10201001 regVal = pm8001_cr32(pm8001_ha, 2, GSM_CONFIG_RESET);
10211002 /* Put those bits to high */
10221003 /* GSM XCBI offset = 0x70 0000
....@@ -1028,44 +1009,37 @@
10281009 */
10291010 regVal |= (GSM_CONFIG_RESET_VALUE);
10301011 pm8001_cw32(pm8001_ha, 2, GSM_CONFIG_RESET, regVal);
1031
- PM8001_INIT_DBG(pm8001_ha,
1032
- pm8001_printk("GSM (0x00004088 ==> 0x00007b88) - GSM"
1033
- " Configuration and Reset is set to = 0x%x\n",
1034
- pm8001_cr32(pm8001_ha, 2, GSM_CONFIG_RESET)));
1012
+ pm8001_dbg(pm8001_ha, INIT, "GSM (0x00004088 ==> 0x00007b88) - GSM Configuration and Reset is set to = 0x%x\n",
1013
+ pm8001_cr32(pm8001_ha, 2, GSM_CONFIG_RESET));
10351014
10361015 /* step 12: Restore GSM - Read Address Parity Check */
10371016 regVal = pm8001_cr32(pm8001_ha, 2, GSM_READ_ADDR_PARITY_CHECK);
10381017 /* just for debugging */
1039
- PM8001_INIT_DBG(pm8001_ha,
1040
- pm8001_printk("GSM 0x700038 - Read Address Parity Check Enable"
1041
- " = 0x%x\n", regVal));
1018
+ pm8001_dbg(pm8001_ha, INIT,
1019
+ "GSM 0x700038 - Read Address Parity Check Enable = 0x%x\n",
1020
+ regVal);
10421021 pm8001_cw32(pm8001_ha, 2, GSM_READ_ADDR_PARITY_CHECK, regVal1);
1043
- PM8001_INIT_DBG(pm8001_ha,
1044
- pm8001_printk("GSM 0x700038 - Read Address Parity"
1045
- " Check Enable is set to = 0x%x\n",
1046
- pm8001_cr32(pm8001_ha, 2, GSM_READ_ADDR_PARITY_CHECK)));
1022
+ pm8001_dbg(pm8001_ha, INIT, "GSM 0x700038 - Read Address Parity Check Enable is set to = 0x%x\n",
1023
+ pm8001_cr32(pm8001_ha, 2, GSM_READ_ADDR_PARITY_CHECK));
10471024 /* Restore GSM - Write Address Parity Check */
10481025 regVal = pm8001_cr32(pm8001_ha, 2, GSM_WRITE_ADDR_PARITY_CHECK);
10491026 pm8001_cw32(pm8001_ha, 2, GSM_WRITE_ADDR_PARITY_CHECK, regVal2);
1050
- PM8001_INIT_DBG(pm8001_ha,
1051
- pm8001_printk("GSM 0x700040 - Write Address Parity Check"
1052
- " Enable is set to = 0x%x\n",
1053
- pm8001_cr32(pm8001_ha, 2, GSM_WRITE_ADDR_PARITY_CHECK)));
1027
+ pm8001_dbg(pm8001_ha, INIT,
1028
+ "GSM 0x700040 - Write Address Parity Check Enable is set to = 0x%x\n",
1029
+ pm8001_cr32(pm8001_ha, 2, GSM_WRITE_ADDR_PARITY_CHECK));
10541030 /* Restore GSM - Write Data Parity Check */
10551031 regVal = pm8001_cr32(pm8001_ha, 2, GSM_WRITE_DATA_PARITY_CHECK);
10561032 pm8001_cw32(pm8001_ha, 2, GSM_WRITE_DATA_PARITY_CHECK, regVal3);
1057
- PM8001_INIT_DBG(pm8001_ha,
1058
- pm8001_printk("GSM 0x700048 - Write Data Parity Check Enable"
1059
- "is set to = 0x%x\n",
1060
- pm8001_cr32(pm8001_ha, 2, GSM_WRITE_DATA_PARITY_CHECK)));
1033
+ pm8001_dbg(pm8001_ha, INIT,
1034
+ "GSM 0x700048 - Write Data Parity Check Enableis set to = 0x%x\n",
1035
+ pm8001_cr32(pm8001_ha, 2, GSM_WRITE_DATA_PARITY_CHECK));
10611036
10621037 /* step 13: bring the IOP and AAP1 out of reset */
10631038 /* map 0x00000 to BAR4(0x20), BAR2(win) */
10641039 if (-1 == pm8001_bar4_shift(pm8001_ha, SPC_TOP_LEVEL_ADDR_BASE)) {
10651040 spin_unlock_irqrestore(&pm8001_ha->lock, flags);
1066
- PM8001_FAIL_DBG(pm8001_ha,
1067
- pm8001_printk("Shift Bar4 to 0x%x failed\n",
1068
- SPC_TOP_LEVEL_ADDR_BASE));
1041
+ pm8001_dbg(pm8001_ha, FAIL, "Shift Bar4 to 0x%x failed\n",
1042
+ SPC_TOP_LEVEL_ADDR_BASE);
10691043 return -1;
10701044 }
10711045 regVal = pm8001_cr32(pm8001_ha, 2, SPC_REG_RESET);
....@@ -1088,22 +1062,20 @@
10881062 if (!max_wait_count) {
10891063 regVal = pm8001_cr32(pm8001_ha, 0,
10901064 MSGU_SCRATCH_PAD_1);
1091
- PM8001_FAIL_DBG(pm8001_ha,
1092
- pm8001_printk("TIMEOUT : ToggleVal 0x%x,"
1093
- "MSGU_SCRATCH_PAD1 = 0x%x\n",
1094
- toggleVal, regVal));
1095
- PM8001_FAIL_DBG(pm8001_ha,
1096
- pm8001_printk("SCRATCH_PAD0 value = 0x%x\n",
1097
- pm8001_cr32(pm8001_ha, 0,
1098
- MSGU_SCRATCH_PAD_0)));
1099
- PM8001_FAIL_DBG(pm8001_ha,
1100
- pm8001_printk("SCRATCH_PAD2 value = 0x%x\n",
1101
- pm8001_cr32(pm8001_ha, 0,
1102
- MSGU_SCRATCH_PAD_2)));
1103
- PM8001_FAIL_DBG(pm8001_ha,
1104
- pm8001_printk("SCRATCH_PAD3 value = 0x%x\n",
1105
- pm8001_cr32(pm8001_ha, 0,
1106
- MSGU_SCRATCH_PAD_3)));
1065
+ pm8001_dbg(pm8001_ha, FAIL, "TIMEOUT : ToggleVal 0x%x,MSGU_SCRATCH_PAD1 = 0x%x\n",
1066
+ toggleVal, regVal);
1067
+ pm8001_dbg(pm8001_ha, FAIL,
1068
+ "SCRATCH_PAD0 value = 0x%x\n",
1069
+ pm8001_cr32(pm8001_ha, 0,
1070
+ MSGU_SCRATCH_PAD_0));
1071
+ pm8001_dbg(pm8001_ha, FAIL,
1072
+ "SCRATCH_PAD2 value = 0x%x\n",
1073
+ pm8001_cr32(pm8001_ha, 0,
1074
+ MSGU_SCRATCH_PAD_2));
1075
+ pm8001_dbg(pm8001_ha, FAIL,
1076
+ "SCRATCH_PAD3 value = 0x%x\n",
1077
+ pm8001_cr32(pm8001_ha, 0,
1078
+ MSGU_SCRATCH_PAD_3));
11071079 spin_unlock_irqrestore(&pm8001_ha->lock, flags);
11081080 return -1;
11091081 }
....@@ -1118,22 +1090,22 @@
11181090 if (check_fw_ready(pm8001_ha) == -1) {
11191091 regVal = pm8001_cr32(pm8001_ha, 0, MSGU_SCRATCH_PAD_1);
11201092 /* return error if MPI Configuration Table not ready */
1121
- PM8001_INIT_DBG(pm8001_ha,
1122
- pm8001_printk("FW not ready SCRATCH_PAD1"
1123
- " = 0x%x\n", regVal));
1093
+ pm8001_dbg(pm8001_ha, INIT,
1094
+ "FW not ready SCRATCH_PAD1 = 0x%x\n",
1095
+ regVal);
11241096 regVal = pm8001_cr32(pm8001_ha, 0, MSGU_SCRATCH_PAD_2);
11251097 /* return error if MPI Configuration Table not ready */
1126
- PM8001_INIT_DBG(pm8001_ha,
1127
- pm8001_printk("FW not ready SCRATCH_PAD2"
1128
- " = 0x%x\n", regVal));
1129
- PM8001_INIT_DBG(pm8001_ha,
1130
- pm8001_printk("SCRATCH_PAD0 value = 0x%x\n",
1131
- pm8001_cr32(pm8001_ha, 0,
1132
- MSGU_SCRATCH_PAD_0)));
1133
- PM8001_INIT_DBG(pm8001_ha,
1134
- pm8001_printk("SCRATCH_PAD3 value = 0x%x\n",
1135
- pm8001_cr32(pm8001_ha, 0,
1136
- MSGU_SCRATCH_PAD_3)));
1098
+ pm8001_dbg(pm8001_ha, INIT,
1099
+ "FW not ready SCRATCH_PAD2 = 0x%x\n",
1100
+ regVal);
1101
+ pm8001_dbg(pm8001_ha, INIT,
1102
+ "SCRATCH_PAD0 value = 0x%x\n",
1103
+ pm8001_cr32(pm8001_ha, 0,
1104
+ MSGU_SCRATCH_PAD_0));
1105
+ pm8001_dbg(pm8001_ha, INIT,
1106
+ "SCRATCH_PAD3 value = 0x%x\n",
1107
+ pm8001_cr32(pm8001_ha, 0,
1108
+ MSGU_SCRATCH_PAD_3));
11371109 spin_unlock_irqrestore(&pm8001_ha->lock, flags);
11381110 return -1;
11391111 }
....@@ -1141,8 +1113,7 @@
11411113 pm8001_bar4_shift(pm8001_ha, 0);
11421114 spin_unlock_irqrestore(&pm8001_ha->lock, flags);
11431115
1144
- PM8001_INIT_DBG(pm8001_ha,
1145
- pm8001_printk("SPC soft reset Complete\n"));
1116
+ pm8001_dbg(pm8001_ha, INIT, "SPC soft reset Complete\n");
11461117 return 0;
11471118 }
11481119
....@@ -1150,8 +1121,7 @@
11501121 {
11511122 u32 i;
11521123 u32 regVal;
1153
- PM8001_INIT_DBG(pm8001_ha,
1154
- pm8001_printk("chip reset start\n"));
1124
+ pm8001_dbg(pm8001_ha, INIT, "chip reset start\n");
11551125
11561126 /* do SPC chip reset. */
11571127 regVal = pm8001_cr32(pm8001_ha, 1, SPC_REG_RESET);
....@@ -1175,8 +1145,7 @@
11751145 mdelay(1);
11761146 } while ((--i) != 0);
11771147
1178
- PM8001_INIT_DBG(pm8001_ha,
1179
- pm8001_printk("chip reset finished\n"));
1148
+ pm8001_dbg(pm8001_ha, INIT, "chip reset finished\n");
11801149 }
11811150
11821151 /**
....@@ -1186,7 +1155,7 @@
11861155 void pm8001_chip_iounmap(struct pm8001_hba_info *pm8001_ha)
11871156 {
11881157 s8 bar, logical = 0;
1189
- for (bar = 0; bar < 6; bar++) {
1158
+ for (bar = 0; bar < PCI_STD_NUM_BARS; bar++) {
11901159 /*
11911160 ** logical BARs for SPC:
11921161 ** bar 0 and 1 - logical BAR0
....@@ -1204,6 +1173,7 @@
12041173 }
12051174 }
12061175
1176
+#ifndef PM8001_USE_MSIX
12071177 /**
12081178 * pm8001_chip_interrupt_enable - enable PM8001 chip interrupt
12091179 * @pm8001_ha: our hba card information
....@@ -1225,9 +1195,12 @@
12251195 pm8001_cw32(pm8001_ha, 0, MSGU_ODMR, ODMR_MASK_ALL);
12261196 }
12271197
1198
+#else
1199
+
12281200 /**
12291201 * pm8001_chip_msix_interrupt_enable - enable PM8001 chip interrupt
12301202 * @pm8001_ha: our hba card information
1203
+ * @int_vec_idx: interrupt number to enable
12311204 */
12321205 static void
12331206 pm8001_chip_msix_interrupt_enable(struct pm8001_hba_info *pm8001_ha,
....@@ -1246,6 +1219,7 @@
12461219 /**
12471220 * pm8001_chip_msix_interrupt_disable - disable PM8001 chip interrupt
12481221 * @pm8001_ha: our hba card information
1222
+ * @int_vec_idx: interrupt number to disable
12491223 */
12501224 static void
12511225 pm8001_chip_msix_interrupt_disable(struct pm8001_hba_info *pm8001_ha,
....@@ -1256,35 +1230,36 @@
12561230 msi_index += MSIX_TABLE_BASE;
12571231 pm8001_cw32(pm8001_ha, 0, msi_index, MSIX_INTERRUPT_DISABLE);
12581232 }
1233
+#endif
12591234
12601235 /**
12611236 * pm8001_chip_interrupt_enable - enable PM8001 chip interrupt
12621237 * @pm8001_ha: our hba card information
1238
+ * @vec: unused
12631239 */
12641240 static void
12651241 pm8001_chip_interrupt_enable(struct pm8001_hba_info *pm8001_ha, u8 vec)
12661242 {
12671243 #ifdef PM8001_USE_MSIX
12681244 pm8001_chip_msix_interrupt_enable(pm8001_ha, 0);
1269
- return;
1270
-#endif
1245
+#else
12711246 pm8001_chip_intx_interrupt_enable(pm8001_ha);
1272
-
1247
+#endif
12731248 }
12741249
12751250 /**
12761251 * pm8001_chip_intx_interrupt_disable- disable PM8001 chip interrupt
12771252 * @pm8001_ha: our hba card information
1253
+ * @vec: unused
12781254 */
12791255 static void
12801256 pm8001_chip_interrupt_disable(struct pm8001_hba_info *pm8001_ha, u8 vec)
12811257 {
12821258 #ifdef PM8001_USE_MSIX
12831259 pm8001_chip_msix_interrupt_disable(pm8001_ha, 0);
1284
- return;
1285
-#endif
1260
+#else
12861261 pm8001_chip_intx_interrupt_disable(pm8001_ha);
1287
-
1262
+#endif
12881263 }
12891264
12901265 /**
....@@ -1334,24 +1309,38 @@
13341309 * @circularQ: the inbound queue we want to transfer to HBA.
13351310 * @opCode: the operation code represents commands which LLDD and fw recognized.
13361311 * @payload: the command payload of each operation command.
1312
+ * @nb: size in bytes of the command payload
1313
+ * @responseQueue: queue to interrupt on w/ command response (if any)
13371314 */
13381315 int pm8001_mpi_build_cmd(struct pm8001_hba_info *pm8001_ha,
13391316 struct inbound_queue_table *circularQ,
1340
- u32 opCode, void *payload, u32 responseQueue)
1317
+ u32 opCode, void *payload, size_t nb,
1318
+ u32 responseQueue)
13411319 {
13421320 u32 Header = 0, hpriority = 0, bc = 1, category = 0x02;
13431321 void *pMessage;
1322
+ unsigned long flags;
1323
+ int q_index = circularQ - pm8001_ha->inbnd_q_tbl;
1324
+ int rv = -1;
13441325
1345
- if (pm8001_mpi_msg_free_get(circularQ, pm8001_ha->iomb_size,
1346
- &pMessage) < 0) {
1347
- PM8001_IO_DBG(pm8001_ha,
1348
- pm8001_printk("No free mpi buffer\n"));
1349
- return -ENOMEM;
1326
+ if (WARN_ON(q_index >= pm8001_ha->max_q_num))
1327
+ return -EINVAL;
1328
+
1329
+ spin_lock_irqsave(&circularQ->iq_lock, flags);
1330
+ rv = pm8001_mpi_msg_free_get(circularQ, pm8001_ha->iomb_size,
1331
+ &pMessage);
1332
+ if (rv < 0) {
1333
+ pm8001_dbg(pm8001_ha, IO, "No free mpi buffer\n");
1334
+ rv = -ENOMEM;
1335
+ goto done;
13501336 }
1351
- BUG_ON(!payload);
1352
- /*Copy to the payload*/
1353
- memcpy(pMessage, payload, (pm8001_ha->iomb_size -
1354
- sizeof(struct mpi_msg_hdr)));
1337
+
1338
+ if (nb > (pm8001_ha->iomb_size - sizeof(struct mpi_msg_hdr)))
1339
+ nb = pm8001_ha->iomb_size - sizeof(struct mpi_msg_hdr);
1340
+ memcpy(pMessage, payload, nb);
1341
+ if (nb + sizeof(struct mpi_msg_hdr) < pm8001_ha->iomb_size)
1342
+ memset(pMessage + nb, 0, pm8001_ha->iomb_size -
1343
+ (nb + sizeof(struct mpi_msg_hdr)));
13551344
13561345 /*Build the header*/
13571346 Header = ((1 << 31) | (hpriority << 30) | ((bc & 0x1f) << 24)
....@@ -1362,11 +1351,13 @@
13621351 /*Update the PI to the firmware*/
13631352 pm8001_cw32(pm8001_ha, circularQ->pi_pci_bar,
13641353 circularQ->pi_offset, circularQ->producer_idx);
1365
- PM8001_IO_DBG(pm8001_ha,
1366
- pm8001_printk("INB Q %x OPCODE:%x , UPDATED PI=%d CI=%d\n",
1367
- responseQueue, opCode, circularQ->producer_idx,
1368
- circularQ->consumer_index));
1369
- return 0;
1354
+ pm8001_dbg(pm8001_ha, DEVIO,
1355
+ "INB Q %x OPCODE:%x , UPDATED PI=%d CI=%d\n",
1356
+ responseQueue, opCode, circularQ->producer_idx,
1357
+ circularQ->consumer_index);
1358
+done:
1359
+ spin_unlock_irqrestore(&circularQ->iq_lock, flags);
1360
+ return rv;
13701361 }
13711362
13721363 u32 pm8001_mpi_msg_free_set(struct pm8001_hba_info *pm8001_ha, void *pMsg,
....@@ -1380,17 +1371,17 @@
13801371 pOutBoundMsgHeader = (struct mpi_msg_hdr *)(circularQ->base_virt +
13811372 circularQ->consumer_idx * pm8001_ha->iomb_size);
13821373 if (pOutBoundMsgHeader != msgHeader) {
1383
- PM8001_FAIL_DBG(pm8001_ha,
1384
- pm8001_printk("consumer_idx = %d msgHeader = %p\n",
1385
- circularQ->consumer_idx, msgHeader));
1374
+ pm8001_dbg(pm8001_ha, FAIL,
1375
+ "consumer_idx = %d msgHeader = %p\n",
1376
+ circularQ->consumer_idx, msgHeader);
13861377
13871378 /* Update the producer index from SPC */
13881379 producer_index = pm8001_read_32(circularQ->pi_virt);
13891380 circularQ->producer_index = cpu_to_le32(producer_index);
1390
- PM8001_FAIL_DBG(pm8001_ha,
1391
- pm8001_printk("consumer_idx = %d producer_index = %d"
1392
- "msgHeader = %p\n", circularQ->consumer_idx,
1393
- circularQ->producer_index, msgHeader));
1381
+ pm8001_dbg(pm8001_ha, FAIL,
1382
+ "consumer_idx = %d producer_index = %dmsgHeader = %p\n",
1383
+ circularQ->consumer_idx,
1384
+ circularQ->producer_index, msgHeader);
13941385 return 0;
13951386 }
13961387 /* free the circular queue buffer elements associated with the message*/
....@@ -1402,9 +1393,8 @@
14021393 /* Update the producer index from SPC*/
14031394 producer_index = pm8001_read_32(circularQ->pi_virt);
14041395 circularQ->producer_index = cpu_to_le32(producer_index);
1405
- PM8001_IO_DBG(pm8001_ha,
1406
- pm8001_printk(" CI=%d PI=%d\n", circularQ->consumer_idx,
1407
- circularQ->producer_index));
1396
+ pm8001_dbg(pm8001_ha, IO, " CI=%d PI=%d\n",
1397
+ circularQ->consumer_idx, circularQ->producer_index);
14081398 return 0;
14091399 }
14101400
....@@ -1434,6 +1424,10 @@
14341424 /* read header */
14351425 header_tmp = pm8001_read_32(msgHeader);
14361426 msgHeader_tmp = cpu_to_le32(header_tmp);
1427
+ pm8001_dbg(pm8001_ha, DEVIO,
1428
+ "outbound opcode msgheader:%x ci=%d pi=%d\n",
1429
+ msgHeader_tmp, circularQ->consumer_idx,
1430
+ circularQ->producer_index);
14371431 if (0 != (le32_to_cpu(msgHeader_tmp) & 0x80000000)) {
14381432 if (OPC_OUB_SKIP_ENTRY !=
14391433 (le32_to_cpu(msgHeader_tmp) & 0xfff)) {
....@@ -1442,12 +1436,11 @@
14421436 sizeof(struct mpi_msg_hdr);
14431437 *pBC = (u8)((le32_to_cpu(msgHeader_tmp)
14441438 >> 24) & 0x1f);
1445
- PM8001_IO_DBG(pm8001_ha,
1446
- pm8001_printk(": CI=%d PI=%d "
1447
- "msgHeader=%x\n",
1448
- circularQ->consumer_idx,
1449
- circularQ->producer_index,
1450
- msgHeader_tmp));
1439
+ pm8001_dbg(pm8001_ha, IO,
1440
+ ": CI=%d PI=%d msgHeader=%x\n",
1441
+ circularQ->consumer_idx,
1442
+ circularQ->producer_index,
1443
+ msgHeader_tmp);
14511444 return MPI_IO_STATUS_SUCCESS;
14521445 } else {
14531446 circularQ->consumer_idx =
....@@ -1556,17 +1549,15 @@
15561549 ts->stat = SAS_QUEUE_FULL;
15571550 pm8001_dev = ccb->device;
15581551 if (pm8001_dev)
1559
- pm8001_dev->running_req--;
1552
+ atomic_dec(&pm8001_dev->running_req);
15601553 spin_lock_irqsave(&t->task_state_lock, flags1);
15611554 t->task_state_flags &= ~SAS_TASK_STATE_PENDING;
15621555 t->task_state_flags &= ~SAS_TASK_AT_INITIATOR;
15631556 t->task_state_flags |= SAS_TASK_STATE_DONE;
15641557 if (unlikely((t->task_state_flags & SAS_TASK_STATE_ABORTED))) {
15651558 spin_unlock_irqrestore(&t->task_state_lock, flags1);
1566
- PM8001_FAIL_DBG(pm8001_ha, pm8001_printk("task 0x%p"
1567
- " done with event 0x%x resp 0x%x stat 0x%x but"
1568
- " aborted by upper layer!\n",
1569
- t, pw->handler, ts->resp, ts->stat));
1559
+ pm8001_dbg(pm8001_ha, FAIL, "task 0x%p done with event 0x%x resp 0x%x stat 0x%x but aborted by upper layer!\n",
1560
+ t, pw->handler, ts->resp, ts->stat);
15701561 pm8001_ccb_task_free(pm8001_ha, t, ccb, tag);
15711562 spin_unlock_irqrestore(&pm8001_ha->lock, flags);
15721563 } else {
....@@ -1586,25 +1577,16 @@
15861577 unsigned long flags, flags1;
15871578 int i, ret = 0;
15881579
1589
- PM8001_IO_DBG(pm8001_ha,
1590
- pm8001_printk("IO_XFER_OPEN_RETRY_TIMEOUT\n"));
1580
+ pm8001_dbg(pm8001_ha, IO, "IO_XFER_OPEN_RETRY_TIMEOUT\n");
15911581
15921582 ret = pm8001_query_task(t);
15931583
1594
- PM8001_IO_DBG(pm8001_ha,
1595
- switch (ret) {
1596
- case TMF_RESP_FUNC_SUCC:
1597
- pm8001_printk("...Task on lu\n");
1598
- break;
1599
-
1600
- case TMF_RESP_FUNC_COMPLETE:
1601
- pm8001_printk("...Task NOT on lu\n");
1602
- break;
1603
-
1604
- default:
1605
- pm8001_printk("...query task failed!!!\n");
1606
- break;
1607
- });
1584
+ if (ret == TMF_RESP_FUNC_SUCC)
1585
+ pm8001_dbg(pm8001_ha, IO, "...Task on lu\n");
1586
+ else if (ret == TMF_RESP_FUNC_COMPLETE)
1587
+ pm8001_dbg(pm8001_ha, IO, "...Task NOT on lu\n");
1588
+ else
1589
+ pm8001_dbg(pm8001_ha, DEVIO, "...query task failed!!!\n");
16081590
16091591 spin_lock_irqsave(&pm8001_ha->lock, flags);
16101592
....@@ -1649,8 +1631,7 @@
16491631 break;
16501632 default: /* device misbehavior */
16511633 ret = TMF_RESP_FUNC_FAILED;
1652
- PM8001_IO_DBG(pm8001_ha,
1653
- pm8001_printk("...Reset phy\n"));
1634
+ pm8001_dbg(pm8001_ha, IO, "...Reset phy\n");
16541635 pm8001_I_T_nexus_reset(dev);
16551636 break;
16561637 }
....@@ -1664,15 +1645,14 @@
16641645 default: /* device misbehavior */
16651646 spin_unlock_irqrestore(&pm8001_ha->lock, flags);
16661647 ret = TMF_RESP_FUNC_FAILED;
1667
- PM8001_IO_DBG(pm8001_ha,
1668
- pm8001_printk("...Reset phy\n"));
1648
+ pm8001_dbg(pm8001_ha, IO, "...Reset phy\n");
16691649 pm8001_I_T_nexus_reset(dev);
16701650 }
16711651
16721652 if (ret == TMF_RESP_FUNC_FAILED)
16731653 t = NULL;
16741654 pm8001_open_reject_retry(pm8001_ha, t, pm8001_dev);
1675
- PM8001_IO_DBG(pm8001_ha, pm8001_printk("...Complete\n"));
1655
+ pm8001_dbg(pm8001_ha, IO, "...Complete\n");
16761656 } break;
16771657 case IO_OPEN_CNX_ERROR_IT_NEXUS_LOSS:
16781658 dev = pm8001_dev->sas_device;
....@@ -1726,28 +1706,29 @@
17261706 int ret;
17271707
17281708 if (!pm8001_ha_dev) {
1729
- PM8001_FAIL_DBG(pm8001_ha, pm8001_printk("dev is null\n"));
1709
+ pm8001_dbg(pm8001_ha, FAIL, "dev is null\n");
17301710 return;
17311711 }
17321712
17331713 task = sas_alloc_slow_task(GFP_ATOMIC);
1734
-
17351714 if (!task) {
1736
- PM8001_FAIL_DBG(pm8001_ha, pm8001_printk("cannot "
1737
- "allocate task\n"));
1715
+ pm8001_dbg(pm8001_ha, FAIL, "cannot allocate task\n");
17381716 return;
17391717 }
17401718
17411719 task->task_done = pm8001_task_done;
17421720
17431721 res = pm8001_tag_alloc(pm8001_ha, &ccb_tag);
1744
- if (res)
1722
+ if (res) {
1723
+ sas_free_task(task);
17451724 return;
1725
+ }
17461726
17471727 ccb = &pm8001_ha->ccb_info[ccb_tag];
17481728 ccb->device = pm8001_ha_dev;
17491729 ccb->ccb_tag = ccb_tag;
17501730 ccb->task = task;
1731
+ ccb->n_elem = 0;
17511732
17521733 circularQ = &pm8001_ha->inbnd_q_tbl[0];
17531734
....@@ -1756,9 +1737,12 @@
17561737 task_abort.device_id = cpu_to_le32(pm8001_ha_dev->device_id);
17571738 task_abort.tag = cpu_to_le32(ccb_tag);
17581739
1759
- ret = pm8001_mpi_build_cmd(pm8001_ha, circularQ, opc, &task_abort, 0);
1760
- if (ret)
1740
+ ret = pm8001_mpi_build_cmd(pm8001_ha, circularQ, opc, &task_abort,
1741
+ sizeof(task_abort), 0);
1742
+ if (ret) {
1743
+ sas_free_task(task);
17611744 pm8001_tag_free(pm8001_ha, ccb_tag);
1745
+ }
17621746
17631747 }
17641748
....@@ -1778,8 +1762,7 @@
17781762 task = sas_alloc_slow_task(GFP_ATOMIC);
17791763
17801764 if (!task) {
1781
- PM8001_FAIL_DBG(pm8001_ha,
1782
- pm8001_printk("cannot allocate task !!!\n"));
1765
+ pm8001_dbg(pm8001_ha, FAIL, "cannot allocate task !!!\n");
17831766 return;
17841767 }
17851768 task->task_done = pm8001_task_done;
....@@ -1787,8 +1770,7 @@
17871770 res = pm8001_tag_alloc(pm8001_ha, &ccb_tag);
17881771 if (res) {
17891772 sas_free_task(task);
1790
- PM8001_FAIL_DBG(pm8001_ha,
1791
- pm8001_printk("cannot allocate tag !!!\n"));
1773
+ pm8001_dbg(pm8001_ha, FAIL, "cannot allocate tag !!!\n");
17921774 return;
17931775 }
17941776
....@@ -1799,8 +1781,8 @@
17991781 if (!dev) {
18001782 sas_free_task(task);
18011783 pm8001_tag_free(pm8001_ha, ccb_tag);
1802
- PM8001_FAIL_DBG(pm8001_ha,
1803
- pm8001_printk("Domain device cannot be allocated\n"));
1784
+ pm8001_dbg(pm8001_ha, FAIL,
1785
+ "Domain device cannot be allocated\n");
18041786 return;
18051787 }
18061788 task->dev = dev;
....@@ -1810,6 +1792,7 @@
18101792 ccb->device = pm8001_ha_dev;
18111793 ccb->ccb_tag = ccb_tag;
18121794 ccb->task = task;
1795
+ ccb->n_elem = 0;
18131796 pm8001_ha_dev->id |= NCQ_READ_LOG_FLAG;
18141797 pm8001_ha_dev->id |= NCQ_2ND_RLE_FLAG;
18151798
....@@ -1826,10 +1809,11 @@
18261809
18271810 sata_cmd.tag = cpu_to_le32(ccb_tag);
18281811 sata_cmd.device_id = cpu_to_le32(pm8001_ha_dev->device_id);
1829
- sata_cmd.ncqtag_atap_dir_m |= ((0x1 << 7) | (0x5 << 9));
1812
+ sata_cmd.ncqtag_atap_dir_m = cpu_to_le32((0x1 << 7) | (0x5 << 9));
18301813 memcpy(&sata_cmd.sata_fis, &fis, sizeof(struct host_to_dev_fis));
18311814
1832
- res = pm8001_mpi_build_cmd(pm8001_ha, circularQ, opc, &sata_cmd, 0);
1815
+ res = pm8001_mpi_build_cmd(pm8001_ha, circularQ, opc, &sata_cmd,
1816
+ sizeof(sata_cmd), 0);
18331817 if (res) {
18341818 sas_free_task(task);
18351819 pm8001_tag_free(pm8001_ha, ccb_tag);
....@@ -1876,22 +1860,25 @@
18761860 t = ccb->task;
18771861
18781862 if (status && status != IO_UNDERFLOW)
1879
- PM8001_FAIL_DBG(pm8001_ha,
1880
- pm8001_printk("sas IO status 0x%x\n", status));
1863
+ pm8001_dbg(pm8001_ha, FAIL, "sas IO status 0x%x\n", status);
18811864 if (unlikely(!t || !t->lldd_task || !t->dev))
18821865 return;
18831866 ts = &t->task_status;
18841867 /* Print sas address of IO failed device */
18851868 if ((status != IO_SUCCESS) && (status != IO_OVERFLOW) &&
18861869 (status != IO_UNDERFLOW))
1887
- PM8001_FAIL_DBG(pm8001_ha,
1888
- pm8001_printk("SAS Address of IO Failure Drive:"
1889
- "%016llx", SAS_ADDR(t->dev->sas_addr)));
1870
+ pm8001_dbg(pm8001_ha, FAIL, "SAS Address of IO Failure Drive:%016llx\n",
1871
+ SAS_ADDR(t->dev->sas_addr));
1872
+
1873
+ if (status)
1874
+ pm8001_dbg(pm8001_ha, IOERR,
1875
+ "status:0x%x, tag:0x%x, task:0x%p\n",
1876
+ status, tag, t);
18901877
18911878 switch (status) {
18921879 case IO_SUCCESS:
1893
- PM8001_IO_DBG(pm8001_ha, pm8001_printk("IO_SUCCESS"
1894
- ",param = %d\n", param));
1880
+ pm8001_dbg(pm8001_ha, IO, "IO_SUCCESS,param = %d\n",
1881
+ param);
18951882 if (param == 0) {
18961883 ts->resp = SAS_TASK_COMPLETE;
18971884 ts->stat = SAM_STAT_GOOD;
....@@ -1903,69 +1890,63 @@
19031890 sas_ssp_task_response(pm8001_ha->dev, t, iu);
19041891 }
19051892 if (pm8001_dev)
1906
- pm8001_dev->running_req--;
1893
+ atomic_dec(&pm8001_dev->running_req);
19071894 break;
19081895 case IO_ABORTED:
1909
- PM8001_IO_DBG(pm8001_ha,
1910
- pm8001_printk("IO_ABORTED IOMB Tag\n"));
1896
+ pm8001_dbg(pm8001_ha, IO, "IO_ABORTED IOMB Tag\n");
19111897 ts->resp = SAS_TASK_COMPLETE;
19121898 ts->stat = SAS_ABORTED_TASK;
19131899 break;
19141900 case IO_UNDERFLOW:
19151901 /* SSP Completion with error */
1916
- PM8001_IO_DBG(pm8001_ha, pm8001_printk("IO_UNDERFLOW"
1917
- ",param = %d\n", param));
1902
+ pm8001_dbg(pm8001_ha, IO, "IO_UNDERFLOW,param = %d\n",
1903
+ param);
19181904 ts->resp = SAS_TASK_COMPLETE;
19191905 ts->stat = SAS_DATA_UNDERRUN;
19201906 ts->residual = param;
19211907 if (pm8001_dev)
1922
- pm8001_dev->running_req--;
1908
+ atomic_dec(&pm8001_dev->running_req);
19231909 break;
19241910 case IO_NO_DEVICE:
1925
- PM8001_IO_DBG(pm8001_ha,
1926
- pm8001_printk("IO_NO_DEVICE\n"));
1911
+ pm8001_dbg(pm8001_ha, IO, "IO_NO_DEVICE\n");
19271912 ts->resp = SAS_TASK_UNDELIVERED;
19281913 ts->stat = SAS_PHY_DOWN;
19291914 break;
19301915 case IO_XFER_ERROR_BREAK:
1931
- PM8001_IO_DBG(pm8001_ha,
1932
- pm8001_printk("IO_XFER_ERROR_BREAK\n"));
1916
+ pm8001_dbg(pm8001_ha, IO, "IO_XFER_ERROR_BREAK\n");
19331917 ts->resp = SAS_TASK_COMPLETE;
19341918 ts->stat = SAS_OPEN_REJECT;
19351919 /* Force the midlayer to retry */
19361920 ts->open_rej_reason = SAS_OREJ_RSVD_RETRY;
19371921 break;
19381922 case IO_XFER_ERROR_PHY_NOT_READY:
1939
- PM8001_IO_DBG(pm8001_ha,
1940
- pm8001_printk("IO_XFER_ERROR_PHY_NOT_READY\n"));
1923
+ pm8001_dbg(pm8001_ha, IO, "IO_XFER_ERROR_PHY_NOT_READY\n");
19411924 ts->resp = SAS_TASK_COMPLETE;
19421925 ts->stat = SAS_OPEN_REJECT;
19431926 ts->open_rej_reason = SAS_OREJ_RSVD_RETRY;
19441927 break;
19451928 case IO_OPEN_CNX_ERROR_PROTOCOL_NOT_SUPPORTED:
1946
- PM8001_IO_DBG(pm8001_ha,
1947
- pm8001_printk("IO_OPEN_CNX_ERROR_PROTOCOL_NOT_SUPPORTED\n"));
1929
+ pm8001_dbg(pm8001_ha, IO,
1930
+ "IO_OPEN_CNX_ERROR_PROTOCOL_NOT_SUPPORTED\n");
19481931 ts->resp = SAS_TASK_COMPLETE;
19491932 ts->stat = SAS_OPEN_REJECT;
19501933 ts->open_rej_reason = SAS_OREJ_EPROTO;
19511934 break;
19521935 case IO_OPEN_CNX_ERROR_ZONE_VIOLATION:
1953
- PM8001_IO_DBG(pm8001_ha,
1954
- pm8001_printk("IO_OPEN_CNX_ERROR_ZONE_VIOLATION\n"));
1936
+ pm8001_dbg(pm8001_ha, IO,
1937
+ "IO_OPEN_CNX_ERROR_ZONE_VIOLATION\n");
19551938 ts->resp = SAS_TASK_COMPLETE;
19561939 ts->stat = SAS_OPEN_REJECT;
19571940 ts->open_rej_reason = SAS_OREJ_UNKNOWN;
19581941 break;
19591942 case IO_OPEN_CNX_ERROR_BREAK:
1960
- PM8001_IO_DBG(pm8001_ha,
1961
- pm8001_printk("IO_OPEN_CNX_ERROR_BREAK\n"));
1943
+ pm8001_dbg(pm8001_ha, IO, "IO_OPEN_CNX_ERROR_BREAK\n");
19621944 ts->resp = SAS_TASK_COMPLETE;
19631945 ts->stat = SAS_OPEN_REJECT;
19641946 ts->open_rej_reason = SAS_OREJ_RSVD_RETRY;
19651947 break;
19661948 case IO_OPEN_CNX_ERROR_IT_NEXUS_LOSS:
1967
- PM8001_IO_DBG(pm8001_ha,
1968
- pm8001_printk("IO_OPEN_CNX_ERROR_IT_NEXUS_LOSS\n"));
1949
+ pm8001_dbg(pm8001_ha, IO, "IO_OPEN_CNX_ERROR_IT_NEXUS_LOSS\n");
19691950 ts->resp = SAS_TASK_COMPLETE;
19701951 ts->stat = SAS_OPEN_REJECT;
19711952 ts->open_rej_reason = SAS_OREJ_UNKNOWN;
....@@ -1975,68 +1956,59 @@
19751956 IO_OPEN_CNX_ERROR_IT_NEXUS_LOSS);
19761957 break;
19771958 case IO_OPEN_CNX_ERROR_BAD_DESTINATION:
1978
- PM8001_IO_DBG(pm8001_ha,
1979
- pm8001_printk("IO_OPEN_CNX_ERROR_BAD_DESTINATION\n"));
1959
+ pm8001_dbg(pm8001_ha, IO,
1960
+ "IO_OPEN_CNX_ERROR_BAD_DESTINATION\n");
19801961 ts->resp = SAS_TASK_COMPLETE;
19811962 ts->stat = SAS_OPEN_REJECT;
19821963 ts->open_rej_reason = SAS_OREJ_BAD_DEST;
19831964 break;
19841965 case IO_OPEN_CNX_ERROR_CONNECTION_RATE_NOT_SUPPORTED:
1985
- PM8001_IO_DBG(pm8001_ha,
1986
- pm8001_printk("IO_OPEN_CNX_ERROR_CONNECTION_RATE_"
1987
- "NOT_SUPPORTED\n"));
1966
+ pm8001_dbg(pm8001_ha, IO, "IO_OPEN_CNX_ERROR_CONNECTION_RATE_NOT_SUPPORTED\n");
19881967 ts->resp = SAS_TASK_COMPLETE;
19891968 ts->stat = SAS_OPEN_REJECT;
19901969 ts->open_rej_reason = SAS_OREJ_CONN_RATE;
19911970 break;
19921971 case IO_OPEN_CNX_ERROR_WRONG_DESTINATION:
1993
- PM8001_IO_DBG(pm8001_ha,
1994
- pm8001_printk("IO_OPEN_CNX_ERROR_WRONG_DESTINATION\n"));
1972
+ pm8001_dbg(pm8001_ha, IO,
1973
+ "IO_OPEN_CNX_ERROR_WRONG_DESTINATION\n");
19951974 ts->resp = SAS_TASK_UNDELIVERED;
19961975 ts->stat = SAS_OPEN_REJECT;
19971976 ts->open_rej_reason = SAS_OREJ_WRONG_DEST;
19981977 break;
19991978 case IO_XFER_ERROR_NAK_RECEIVED:
2000
- PM8001_IO_DBG(pm8001_ha,
2001
- pm8001_printk("IO_XFER_ERROR_NAK_RECEIVED\n"));
1979
+ pm8001_dbg(pm8001_ha, IO, "IO_XFER_ERROR_NAK_RECEIVED\n");
20021980 ts->resp = SAS_TASK_COMPLETE;
20031981 ts->stat = SAS_OPEN_REJECT;
20041982 ts->open_rej_reason = SAS_OREJ_RSVD_RETRY;
20051983 break;
20061984 case IO_XFER_ERROR_ACK_NAK_TIMEOUT:
2007
- PM8001_IO_DBG(pm8001_ha,
2008
- pm8001_printk("IO_XFER_ERROR_ACK_NAK_TIMEOUT\n"));
1985
+ pm8001_dbg(pm8001_ha, IO, "IO_XFER_ERROR_ACK_NAK_TIMEOUT\n");
20091986 ts->resp = SAS_TASK_COMPLETE;
20101987 ts->stat = SAS_NAK_R_ERR;
20111988 break;
20121989 case IO_XFER_ERROR_DMA:
2013
- PM8001_IO_DBG(pm8001_ha,
2014
- pm8001_printk("IO_XFER_ERROR_DMA\n"));
1990
+ pm8001_dbg(pm8001_ha, IO, "IO_XFER_ERROR_DMA\n");
20151991 ts->resp = SAS_TASK_COMPLETE;
20161992 ts->stat = SAS_OPEN_REJECT;
20171993 break;
20181994 case IO_XFER_OPEN_RETRY_TIMEOUT:
2019
- PM8001_IO_DBG(pm8001_ha,
2020
- pm8001_printk("IO_XFER_OPEN_RETRY_TIMEOUT\n"));
1995
+ pm8001_dbg(pm8001_ha, IO, "IO_XFER_OPEN_RETRY_TIMEOUT\n");
20211996 ts->resp = SAS_TASK_COMPLETE;
20221997 ts->stat = SAS_OPEN_REJECT;
20231998 ts->open_rej_reason = SAS_OREJ_RSVD_RETRY;
20241999 break;
20252000 case IO_XFER_ERROR_OFFSET_MISMATCH:
2026
- PM8001_IO_DBG(pm8001_ha,
2027
- pm8001_printk("IO_XFER_ERROR_OFFSET_MISMATCH\n"));
2001
+ pm8001_dbg(pm8001_ha, IO, "IO_XFER_ERROR_OFFSET_MISMATCH\n");
20282002 ts->resp = SAS_TASK_COMPLETE;
20292003 ts->stat = SAS_OPEN_REJECT;
20302004 break;
20312005 case IO_PORT_IN_RESET:
2032
- PM8001_IO_DBG(pm8001_ha,
2033
- pm8001_printk("IO_PORT_IN_RESET\n"));
2006
+ pm8001_dbg(pm8001_ha, IO, "IO_PORT_IN_RESET\n");
20342007 ts->resp = SAS_TASK_COMPLETE;
20352008 ts->stat = SAS_OPEN_REJECT;
20362009 break;
20372010 case IO_DS_NON_OPERATIONAL:
2038
- PM8001_IO_DBG(pm8001_ha,
2039
- pm8001_printk("IO_DS_NON_OPERATIONAL\n"));
2011
+ pm8001_dbg(pm8001_ha, IO, "IO_DS_NON_OPERATIONAL\n");
20402012 ts->resp = SAS_TASK_COMPLETE;
20412013 ts->stat = SAS_OPEN_REJECT;
20422014 if (!t->uldd_task)
....@@ -2045,51 +2017,44 @@
20452017 IO_DS_NON_OPERATIONAL);
20462018 break;
20472019 case IO_DS_IN_RECOVERY:
2048
- PM8001_IO_DBG(pm8001_ha,
2049
- pm8001_printk("IO_DS_IN_RECOVERY\n"));
2020
+ pm8001_dbg(pm8001_ha, IO, "IO_DS_IN_RECOVERY\n");
20502021 ts->resp = SAS_TASK_COMPLETE;
20512022 ts->stat = SAS_OPEN_REJECT;
20522023 break;
20532024 case IO_TM_TAG_NOT_FOUND:
2054
- PM8001_IO_DBG(pm8001_ha,
2055
- pm8001_printk("IO_TM_TAG_NOT_FOUND\n"));
2025
+ pm8001_dbg(pm8001_ha, IO, "IO_TM_TAG_NOT_FOUND\n");
20562026 ts->resp = SAS_TASK_COMPLETE;
20572027 ts->stat = SAS_OPEN_REJECT;
20582028 break;
20592029 case IO_SSP_EXT_IU_ZERO_LEN_ERROR:
2060
- PM8001_IO_DBG(pm8001_ha,
2061
- pm8001_printk("IO_SSP_EXT_IU_ZERO_LEN_ERROR\n"));
2030
+ pm8001_dbg(pm8001_ha, IO, "IO_SSP_EXT_IU_ZERO_LEN_ERROR\n");
20622031 ts->resp = SAS_TASK_COMPLETE;
20632032 ts->stat = SAS_OPEN_REJECT;
20642033 break;
20652034 case IO_OPEN_CNX_ERROR_HW_RESOURCE_BUSY:
2066
- PM8001_IO_DBG(pm8001_ha,
2067
- pm8001_printk("IO_OPEN_CNX_ERROR_HW_RESOURCE_BUSY\n"));
2035
+ pm8001_dbg(pm8001_ha, IO,
2036
+ "IO_OPEN_CNX_ERROR_HW_RESOURCE_BUSY\n");
20682037 ts->resp = SAS_TASK_COMPLETE;
20692038 ts->stat = SAS_OPEN_REJECT;
20702039 ts->open_rej_reason = SAS_OREJ_RSVD_RETRY;
20712040 break;
20722041 default:
2073
- PM8001_IO_DBG(pm8001_ha,
2074
- pm8001_printk("Unknown status 0x%x\n", status));
2042
+ pm8001_dbg(pm8001_ha, DEVIO, "Unknown status 0x%x\n", status);
20752043 /* not allowed case. Therefore, return failed status */
20762044 ts->resp = SAS_TASK_COMPLETE;
20772045 ts->stat = SAS_OPEN_REJECT;
20782046 break;
20792047 }
2080
- PM8001_IO_DBG(pm8001_ha,
2081
- pm8001_printk("scsi_status = %x\n ",
2082
- psspPayload->ssp_resp_iu.status));
2048
+ pm8001_dbg(pm8001_ha, IO, "scsi_status = %x\n",
2049
+ psspPayload->ssp_resp_iu.status);
20832050 spin_lock_irqsave(&t->task_state_lock, flags);
20842051 t->task_state_flags &= ~SAS_TASK_STATE_PENDING;
20852052 t->task_state_flags &= ~SAS_TASK_AT_INITIATOR;
20862053 t->task_state_flags |= SAS_TASK_STATE_DONE;
20872054 if (unlikely((t->task_state_flags & SAS_TASK_STATE_ABORTED))) {
20882055 spin_unlock_irqrestore(&t->task_state_lock, flags);
2089
- PM8001_FAIL_DBG(pm8001_ha, pm8001_printk("task 0x%p done with"
2090
- " io_status 0x%x resp 0x%x "
2091
- "stat 0x%x but aborted by upper layer!\n",
2092
- t, status, ts->resp, ts->stat));
2056
+ pm8001_dbg(pm8001_ha, FAIL, "task 0x%p done with io_status 0x%x resp 0x%x stat 0x%x but aborted by upper layer!\n",
2057
+ t, status, ts->resp, ts->stat);
20932058 pm8001_ccb_task_free(pm8001_ha, t, ccb, tag);
20942059 } else {
20952060 spin_unlock_irqrestore(&t->task_state_lock, flags);
....@@ -2118,60 +2083,52 @@
21182083 t = ccb->task;
21192084 pm8001_dev = ccb->device;
21202085 if (event)
2121
- PM8001_FAIL_DBG(pm8001_ha,
2122
- pm8001_printk("sas IO status 0x%x\n", event));
2086
+ pm8001_dbg(pm8001_ha, FAIL, "sas IO status 0x%x\n", event);
21232087 if (unlikely(!t || !t->lldd_task || !t->dev))
21242088 return;
21252089 ts = &t->task_status;
2126
- PM8001_IO_DBG(pm8001_ha,
2127
- pm8001_printk("port_id = %x,device_id = %x\n",
2128
- port_id, dev_id));
2090
+ pm8001_dbg(pm8001_ha, DEVIO, "port_id = %x,device_id = %x\n",
2091
+ port_id, dev_id);
21292092 switch (event) {
21302093 case IO_OVERFLOW:
2131
- PM8001_IO_DBG(pm8001_ha, pm8001_printk("IO_UNDERFLOW\n");)
2094
+ pm8001_dbg(pm8001_ha, IO, "IO_UNDERFLOW\n");
21322095 ts->resp = SAS_TASK_COMPLETE;
21332096 ts->stat = SAS_DATA_OVERRUN;
21342097 ts->residual = 0;
21352098 if (pm8001_dev)
2136
- pm8001_dev->running_req--;
2099
+ atomic_dec(&pm8001_dev->running_req);
21372100 break;
21382101 case IO_XFER_ERROR_BREAK:
2139
- PM8001_IO_DBG(pm8001_ha,
2140
- pm8001_printk("IO_XFER_ERROR_BREAK\n"));
2102
+ pm8001_dbg(pm8001_ha, IO, "IO_XFER_ERROR_BREAK\n");
21412103 pm8001_handle_event(pm8001_ha, t, IO_XFER_ERROR_BREAK);
21422104 return;
21432105 case IO_XFER_ERROR_PHY_NOT_READY:
2144
- PM8001_IO_DBG(pm8001_ha,
2145
- pm8001_printk("IO_XFER_ERROR_PHY_NOT_READY\n"));
2106
+ pm8001_dbg(pm8001_ha, IO, "IO_XFER_ERROR_PHY_NOT_READY\n");
21462107 ts->resp = SAS_TASK_COMPLETE;
21472108 ts->stat = SAS_OPEN_REJECT;
21482109 ts->open_rej_reason = SAS_OREJ_RSVD_RETRY;
21492110 break;
21502111 case IO_OPEN_CNX_ERROR_PROTOCOL_NOT_SUPPORTED:
2151
- PM8001_IO_DBG(pm8001_ha,
2152
- pm8001_printk("IO_OPEN_CNX_ERROR_PROTOCOL_NOT"
2153
- "_SUPPORTED\n"));
2112
+ pm8001_dbg(pm8001_ha, IO, "IO_OPEN_CNX_ERROR_PROTOCOL_NOT_SUPPORTED\n");
21542113 ts->resp = SAS_TASK_COMPLETE;
21552114 ts->stat = SAS_OPEN_REJECT;
21562115 ts->open_rej_reason = SAS_OREJ_EPROTO;
21572116 break;
21582117 case IO_OPEN_CNX_ERROR_ZONE_VIOLATION:
2159
- PM8001_IO_DBG(pm8001_ha,
2160
- pm8001_printk("IO_OPEN_CNX_ERROR_ZONE_VIOLATION\n"));
2118
+ pm8001_dbg(pm8001_ha, IO,
2119
+ "IO_OPEN_CNX_ERROR_ZONE_VIOLATION\n");
21612120 ts->resp = SAS_TASK_COMPLETE;
21622121 ts->stat = SAS_OPEN_REJECT;
21632122 ts->open_rej_reason = SAS_OREJ_UNKNOWN;
21642123 break;
21652124 case IO_OPEN_CNX_ERROR_BREAK:
2166
- PM8001_IO_DBG(pm8001_ha,
2167
- pm8001_printk("IO_OPEN_CNX_ERROR_BREAK\n"));
2125
+ pm8001_dbg(pm8001_ha, IO, "IO_OPEN_CNX_ERROR_BREAK\n");
21682126 ts->resp = SAS_TASK_COMPLETE;
21692127 ts->stat = SAS_OPEN_REJECT;
21702128 ts->open_rej_reason = SAS_OREJ_RSVD_RETRY;
21712129 break;
21722130 case IO_OPEN_CNX_ERROR_IT_NEXUS_LOSS:
2173
- PM8001_IO_DBG(pm8001_ha,
2174
- pm8001_printk("IO_OPEN_CNX_ERROR_IT_NEXUS_LOSS\n"));
2131
+ pm8001_dbg(pm8001_ha, IO, "IO_OPEN_CNX_ERROR_IT_NEXUS_LOSS\n");
21752132 ts->resp = SAS_TASK_COMPLETE;
21762133 ts->stat = SAS_OPEN_REJECT;
21772134 ts->open_rej_reason = SAS_OREJ_UNKNOWN;
....@@ -2181,88 +2138,78 @@
21812138 IO_OPEN_CNX_ERROR_IT_NEXUS_LOSS);
21822139 break;
21832140 case IO_OPEN_CNX_ERROR_BAD_DESTINATION:
2184
- PM8001_IO_DBG(pm8001_ha,
2185
- pm8001_printk("IO_OPEN_CNX_ERROR_BAD_DESTINATION\n"));
2141
+ pm8001_dbg(pm8001_ha, IO,
2142
+ "IO_OPEN_CNX_ERROR_BAD_DESTINATION\n");
21862143 ts->resp = SAS_TASK_COMPLETE;
21872144 ts->stat = SAS_OPEN_REJECT;
21882145 ts->open_rej_reason = SAS_OREJ_BAD_DEST;
21892146 break;
21902147 case IO_OPEN_CNX_ERROR_CONNECTION_RATE_NOT_SUPPORTED:
2191
- PM8001_IO_DBG(pm8001_ha,
2192
- pm8001_printk("IO_OPEN_CNX_ERROR_CONNECTION_RATE_"
2193
- "NOT_SUPPORTED\n"));
2148
+ pm8001_dbg(pm8001_ha, IO, "IO_OPEN_CNX_ERROR_CONNECTION_RATE_NOT_SUPPORTED\n");
21942149 ts->resp = SAS_TASK_COMPLETE;
21952150 ts->stat = SAS_OPEN_REJECT;
21962151 ts->open_rej_reason = SAS_OREJ_CONN_RATE;
21972152 break;
21982153 case IO_OPEN_CNX_ERROR_WRONG_DESTINATION:
2199
- PM8001_IO_DBG(pm8001_ha,
2200
- pm8001_printk("IO_OPEN_CNX_ERROR_WRONG_DESTINATION\n"));
2154
+ pm8001_dbg(pm8001_ha, IO,
2155
+ "IO_OPEN_CNX_ERROR_WRONG_DESTINATION\n");
22012156 ts->resp = SAS_TASK_COMPLETE;
22022157 ts->stat = SAS_OPEN_REJECT;
22032158 ts->open_rej_reason = SAS_OREJ_WRONG_DEST;
22042159 break;
22052160 case IO_XFER_ERROR_NAK_RECEIVED:
2206
- PM8001_IO_DBG(pm8001_ha,
2207
- pm8001_printk("IO_XFER_ERROR_NAK_RECEIVED\n"));
2161
+ pm8001_dbg(pm8001_ha, IO, "IO_XFER_ERROR_NAK_RECEIVED\n");
22082162 ts->resp = SAS_TASK_COMPLETE;
22092163 ts->stat = SAS_OPEN_REJECT;
22102164 ts->open_rej_reason = SAS_OREJ_RSVD_RETRY;
22112165 break;
22122166 case IO_XFER_ERROR_ACK_NAK_TIMEOUT:
2213
- PM8001_IO_DBG(pm8001_ha,
2214
- pm8001_printk("IO_XFER_ERROR_ACK_NAK_TIMEOUT\n"));
2167
+ pm8001_dbg(pm8001_ha, IO, "IO_XFER_ERROR_ACK_NAK_TIMEOUT\n");
22152168 ts->resp = SAS_TASK_COMPLETE;
22162169 ts->stat = SAS_NAK_R_ERR;
22172170 break;
22182171 case IO_XFER_OPEN_RETRY_TIMEOUT:
2219
- PM8001_IO_DBG(pm8001_ha,
2220
- pm8001_printk("IO_XFER_OPEN_RETRY_TIMEOUT\n"));
2172
+ pm8001_dbg(pm8001_ha, IO, "IO_XFER_OPEN_RETRY_TIMEOUT\n");
22212173 pm8001_handle_event(pm8001_ha, t, IO_XFER_OPEN_RETRY_TIMEOUT);
22222174 return;
22232175 case IO_XFER_ERROR_UNEXPECTED_PHASE:
2224
- PM8001_IO_DBG(pm8001_ha,
2225
- pm8001_printk("IO_XFER_ERROR_UNEXPECTED_PHASE\n"));
2176
+ pm8001_dbg(pm8001_ha, IO, "IO_XFER_ERROR_UNEXPECTED_PHASE\n");
22262177 ts->resp = SAS_TASK_COMPLETE;
22272178 ts->stat = SAS_DATA_OVERRUN;
22282179 break;
22292180 case IO_XFER_ERROR_XFER_RDY_OVERRUN:
2230
- PM8001_IO_DBG(pm8001_ha,
2231
- pm8001_printk("IO_XFER_ERROR_XFER_RDY_OVERRUN\n"));
2181
+ pm8001_dbg(pm8001_ha, IO, "IO_XFER_ERROR_XFER_RDY_OVERRUN\n");
22322182 ts->resp = SAS_TASK_COMPLETE;
22332183 ts->stat = SAS_DATA_OVERRUN;
22342184 break;
22352185 case IO_XFER_ERROR_XFER_RDY_NOT_EXPECTED:
2236
- PM8001_IO_DBG(pm8001_ha,
2237
- pm8001_printk("IO_XFER_ERROR_XFER_RDY_NOT_EXPECTED\n"));
2186
+ pm8001_dbg(pm8001_ha, IO,
2187
+ "IO_XFER_ERROR_XFER_RDY_NOT_EXPECTED\n");
22382188 ts->resp = SAS_TASK_COMPLETE;
22392189 ts->stat = SAS_DATA_OVERRUN;
22402190 break;
22412191 case IO_XFER_ERROR_CMD_ISSUE_ACK_NAK_TIMEOUT:
2242
- PM8001_IO_DBG(pm8001_ha,
2243
- pm8001_printk("IO_XFER_ERROR_CMD_ISSUE_ACK_NAK_TIMEOUT\n"));
2192
+ pm8001_dbg(pm8001_ha, IO,
2193
+ "IO_XFER_ERROR_CMD_ISSUE_ACK_NAK_TIMEOUT\n");
22442194 ts->resp = SAS_TASK_COMPLETE;
22452195 ts->stat = SAS_DATA_OVERRUN;
22462196 break;
22472197 case IO_XFER_ERROR_OFFSET_MISMATCH:
2248
- PM8001_IO_DBG(pm8001_ha,
2249
- pm8001_printk("IO_XFER_ERROR_OFFSET_MISMATCH\n"));
2198
+ pm8001_dbg(pm8001_ha, IO, "IO_XFER_ERROR_OFFSET_MISMATCH\n");
22502199 ts->resp = SAS_TASK_COMPLETE;
22512200 ts->stat = SAS_DATA_OVERRUN;
22522201 break;
22532202 case IO_XFER_ERROR_XFER_ZERO_DATA_LEN:
2254
- PM8001_IO_DBG(pm8001_ha,
2255
- pm8001_printk("IO_XFER_ERROR_XFER_ZERO_DATA_LEN\n"));
2203
+ pm8001_dbg(pm8001_ha, IO,
2204
+ "IO_XFER_ERROR_XFER_ZERO_DATA_LEN\n");
22562205 ts->resp = SAS_TASK_COMPLETE;
22572206 ts->stat = SAS_DATA_OVERRUN;
22582207 break;
22592208 case IO_XFER_CMD_FRAME_ISSUED:
2260
- PM8001_IO_DBG(pm8001_ha,
2261
- pm8001_printk(" IO_XFER_CMD_FRAME_ISSUED\n"));
2209
+ pm8001_dbg(pm8001_ha, IO, "IO_XFER_CMD_FRAME_ISSUED\n");
22622210 return;
22632211 default:
2264
- PM8001_IO_DBG(pm8001_ha,
2265
- pm8001_printk("Unknown status 0x%x\n", event));
2212
+ pm8001_dbg(pm8001_ha, DEVIO, "Unknown status 0x%x\n", event);
22662213 /* not allowed case. Therefore, return failed status */
22672214 ts->resp = SAS_TASK_COMPLETE;
22682215 ts->stat = SAS_DATA_OVERRUN;
....@@ -2274,10 +2221,8 @@
22742221 t->task_state_flags |= SAS_TASK_STATE_DONE;
22752222 if (unlikely((t->task_state_flags & SAS_TASK_STATE_ABORTED))) {
22762223 spin_unlock_irqrestore(&t->task_state_lock, flags);
2277
- PM8001_FAIL_DBG(pm8001_ha, pm8001_printk("task 0x%p done with"
2278
- " event 0x%x resp 0x%x "
2279
- "stat 0x%x but aborted by upper layer!\n",
2280
- t, event, ts->resp, ts->stat));
2224
+ pm8001_dbg(pm8001_ha, FAIL, "task 0x%p done with event 0x%x resp 0x%x stat 0x%x but aborted by upper layer!\n",
2225
+ t, event, ts->resp, ts->stat);
22812226 pm8001_ccb_task_free(pm8001_ha, t, ccb, tag);
22822227 } else {
22832228 spin_unlock_irqrestore(&t->task_state_lock, flags);
....@@ -2313,8 +2258,7 @@
23132258 tag = le32_to_cpu(psataPayload->tag);
23142259
23152260 if (!tag) {
2316
- PM8001_FAIL_DBG(pm8001_ha,
2317
- pm8001_printk("tag null\n"));
2261
+ pm8001_dbg(pm8001_ha, FAIL, "tag null\n");
23182262 return;
23192263 }
23202264 ccb = &pm8001_ha->ccb_info[tag];
....@@ -2323,8 +2267,7 @@
23232267 t = ccb->task;
23242268 pm8001_dev = ccb->device;
23252269 } else {
2326
- PM8001_FAIL_DBG(pm8001_ha,
2327
- pm8001_printk("ccb null\n"));
2270
+ pm8001_dbg(pm8001_ha, FAIL, "ccb null\n");
23282271 return;
23292272 }
23302273
....@@ -2332,29 +2275,32 @@
23322275 if (t->dev && (t->dev->lldd_dev))
23332276 pm8001_dev = t->dev->lldd_dev;
23342277 } else {
2335
- PM8001_FAIL_DBG(pm8001_ha,
2336
- pm8001_printk("task null\n"));
2278
+ pm8001_dbg(pm8001_ha, FAIL, "task null\n");
23372279 return;
23382280 }
23392281
23402282 if ((pm8001_dev && !(pm8001_dev->id & NCQ_READ_LOG_FLAG))
23412283 && unlikely(!t || !t->lldd_task || !t->dev)) {
2342
- PM8001_FAIL_DBG(pm8001_ha,
2343
- pm8001_printk("task or dev null\n"));
2284
+ pm8001_dbg(pm8001_ha, FAIL, "task or dev null\n");
23442285 return;
23452286 }
23462287
23472288 ts = &t->task_status;
23482289 if (!ts) {
2349
- PM8001_FAIL_DBG(pm8001_ha,
2350
- pm8001_printk("ts null\n"));
2290
+ pm8001_dbg(pm8001_ha, FAIL, "ts null\n");
23512291 return;
23522292 }
2293
+
2294
+ if (status)
2295
+ pm8001_dbg(pm8001_ha, IOERR,
2296
+ "status:0x%x, tag:0x%x, task::0x%p\n",
2297
+ status, tag, t);
2298
+
23532299 /* Print sas address of IO failed device */
23542300 if ((status != IO_SUCCESS) && (status != IO_OVERFLOW) &&
23552301 (status != IO_UNDERFLOW)) {
23562302 if (!((t->dev->parent) &&
2357
- (DEV_IS_EXPANDER(t->dev->parent->dev_type)))) {
2303
+ (dev_is_expander(t->dev->parent->dev_type)))) {
23582304 for (i = 0 , j = 4; j <= 7 && i <= 3; i++ , j++)
23592305 sata_addr_low[i] = pm8001_ha->sas_addr[j];
23602306 for (i = 0 , j = 0; j <= 3 && i <= 3; i++ , j++)
....@@ -2380,19 +2326,19 @@
23802326 & 0xff000000)) +
23812327 pm8001_dev->attached_phy +
23822328 0x10);
2383
- PM8001_FAIL_DBG(pm8001_ha,
2384
- pm8001_printk("SAS Address of IO Failure Drive:"
2385
- "%08x%08x", temp_sata_addr_hi,
2386
- temp_sata_addr_low));
2329
+ pm8001_dbg(pm8001_ha, FAIL,
2330
+ "SAS Address of IO Failure Drive:%08x%08x\n",
2331
+ temp_sata_addr_hi,
2332
+ temp_sata_addr_low);
23872333 } else {
2388
- PM8001_FAIL_DBG(pm8001_ha,
2389
- pm8001_printk("SAS Address of IO Failure Drive:"
2390
- "%016llx", SAS_ADDR(t->dev->sas_addr)));
2334
+ pm8001_dbg(pm8001_ha, FAIL,
2335
+ "SAS Address of IO Failure Drive:%016llx\n",
2336
+ SAS_ADDR(t->dev->sas_addr));
23912337 }
23922338 }
23932339 switch (status) {
23942340 case IO_SUCCESS:
2395
- PM8001_IO_DBG(pm8001_ha, pm8001_printk("IO_SUCCESS\n"));
2341
+ pm8001_dbg(pm8001_ha, IO, "IO_SUCCESS\n");
23962342 if (param == 0) {
23972343 ts->resp = SAS_TASK_COMPLETE;
23982344 ts->stat = SAM_STAT_GOOD;
....@@ -2414,99 +2360,103 @@
24142360 ts->resp = SAS_TASK_COMPLETE;
24152361 ts->stat = SAS_PROTO_RESPONSE;
24162362 ts->residual = param;
2417
- PM8001_IO_DBG(pm8001_ha,
2418
- pm8001_printk("SAS_PROTO_RESPONSE len = %d\n",
2419
- param));
2363
+ pm8001_dbg(pm8001_ha, IO,
2364
+ "SAS_PROTO_RESPONSE len = %d\n",
2365
+ param);
24202366 sata_resp = &psataPayload->sata_resp[0];
24212367 resp = (struct ata_task_resp *)ts->buf;
24222368 if (t->ata_task.dma_xfer == 0 &&
2423
- t->data_dir == PCI_DMA_FROMDEVICE) {
2369
+ t->data_dir == DMA_FROM_DEVICE) {
24242370 len = sizeof(struct pio_setup_fis);
2425
- PM8001_IO_DBG(pm8001_ha,
2426
- pm8001_printk("PIO read len = %d\n", len));
2427
- } else if (t->ata_task.use_ncq) {
2371
+ pm8001_dbg(pm8001_ha, IO,
2372
+ "PIO read len = %d\n", len);
2373
+ } else if (t->ata_task.use_ncq &&
2374
+ t->data_dir != DMA_NONE) {
24282375 len = sizeof(struct set_dev_bits_fis);
2429
- PM8001_IO_DBG(pm8001_ha,
2430
- pm8001_printk("FPDMA len = %d\n", len));
2376
+ pm8001_dbg(pm8001_ha, IO, "FPDMA len = %d\n",
2377
+ len);
24312378 } else {
24322379 len = sizeof(struct dev_to_host_fis);
2433
- PM8001_IO_DBG(pm8001_ha,
2434
- pm8001_printk("other len = %d\n", len));
2380
+ pm8001_dbg(pm8001_ha, IO, "other len = %d\n",
2381
+ len);
24352382 }
24362383 if (SAS_STATUS_BUF_SIZE >= sizeof(*resp)) {
24372384 resp->frame_len = len;
24382385 memcpy(&resp->ending_fis[0], sata_resp, len);
24392386 ts->buf_valid_size = sizeof(*resp);
24402387 } else
2441
- PM8001_IO_DBG(pm8001_ha,
2442
- pm8001_printk("response to large\n"));
2388
+ pm8001_dbg(pm8001_ha, IO,
2389
+ "response too large\n");
24432390 }
24442391 if (pm8001_dev)
2445
- pm8001_dev->running_req--;
2392
+ atomic_dec(&pm8001_dev->running_req);
24462393 break;
24472394 case IO_ABORTED:
2448
- PM8001_IO_DBG(pm8001_ha,
2449
- pm8001_printk("IO_ABORTED IOMB Tag\n"));
2395
+ pm8001_dbg(pm8001_ha, IO, "IO_ABORTED IOMB Tag\n");
24502396 ts->resp = SAS_TASK_COMPLETE;
24512397 ts->stat = SAS_ABORTED_TASK;
24522398 if (pm8001_dev)
2453
- pm8001_dev->running_req--;
2399
+ atomic_dec(&pm8001_dev->running_req);
24542400 break;
24552401 /* following cases are to do cases */
24562402 case IO_UNDERFLOW:
24572403 /* SATA Completion with error */
2458
- PM8001_IO_DBG(pm8001_ha,
2459
- pm8001_printk("IO_UNDERFLOW param = %d\n", param));
2404
+ pm8001_dbg(pm8001_ha, IO, "IO_UNDERFLOW param = %d\n", param);
24602405 ts->resp = SAS_TASK_COMPLETE;
24612406 ts->stat = SAS_DATA_UNDERRUN;
24622407 ts->residual = param;
24632408 if (pm8001_dev)
2464
- pm8001_dev->running_req--;
2409
+ atomic_dec(&pm8001_dev->running_req);
24652410 break;
24662411 case IO_NO_DEVICE:
2467
- PM8001_IO_DBG(pm8001_ha,
2468
- pm8001_printk("IO_NO_DEVICE\n"));
2412
+ pm8001_dbg(pm8001_ha, IO, "IO_NO_DEVICE\n");
24692413 ts->resp = SAS_TASK_UNDELIVERED;
24702414 ts->stat = SAS_PHY_DOWN;
2415
+ if (pm8001_dev)
2416
+ atomic_dec(&pm8001_dev->running_req);
24712417 break;
24722418 case IO_XFER_ERROR_BREAK:
2473
- PM8001_IO_DBG(pm8001_ha,
2474
- pm8001_printk("IO_XFER_ERROR_BREAK\n"));
2419
+ pm8001_dbg(pm8001_ha, IO, "IO_XFER_ERROR_BREAK\n");
24752420 ts->resp = SAS_TASK_COMPLETE;
24762421 ts->stat = SAS_INTERRUPTED;
2422
+ if (pm8001_dev)
2423
+ atomic_dec(&pm8001_dev->running_req);
24772424 break;
24782425 case IO_XFER_ERROR_PHY_NOT_READY:
2479
- PM8001_IO_DBG(pm8001_ha,
2480
- pm8001_printk("IO_XFER_ERROR_PHY_NOT_READY\n"));
2426
+ pm8001_dbg(pm8001_ha, IO, "IO_XFER_ERROR_PHY_NOT_READY\n");
24812427 ts->resp = SAS_TASK_COMPLETE;
24822428 ts->stat = SAS_OPEN_REJECT;
24832429 ts->open_rej_reason = SAS_OREJ_RSVD_RETRY;
2430
+ if (pm8001_dev)
2431
+ atomic_dec(&pm8001_dev->running_req);
24842432 break;
24852433 case IO_OPEN_CNX_ERROR_PROTOCOL_NOT_SUPPORTED:
2486
- PM8001_IO_DBG(pm8001_ha,
2487
- pm8001_printk("IO_OPEN_CNX_ERROR_PROTOCOL_NOT"
2488
- "_SUPPORTED\n"));
2434
+ pm8001_dbg(pm8001_ha, IO, "IO_OPEN_CNX_ERROR_PROTOCOL_NOT_SUPPORTED\n");
24892435 ts->resp = SAS_TASK_COMPLETE;
24902436 ts->stat = SAS_OPEN_REJECT;
24912437 ts->open_rej_reason = SAS_OREJ_EPROTO;
2438
+ if (pm8001_dev)
2439
+ atomic_dec(&pm8001_dev->running_req);
24922440 break;
24932441 case IO_OPEN_CNX_ERROR_ZONE_VIOLATION:
2494
- PM8001_IO_DBG(pm8001_ha,
2495
- pm8001_printk("IO_OPEN_CNX_ERROR_ZONE_VIOLATION\n"));
2442
+ pm8001_dbg(pm8001_ha, IO,
2443
+ "IO_OPEN_CNX_ERROR_ZONE_VIOLATION\n");
24962444 ts->resp = SAS_TASK_COMPLETE;
24972445 ts->stat = SAS_OPEN_REJECT;
24982446 ts->open_rej_reason = SAS_OREJ_UNKNOWN;
2447
+ if (pm8001_dev)
2448
+ atomic_dec(&pm8001_dev->running_req);
24992449 break;
25002450 case IO_OPEN_CNX_ERROR_BREAK:
2501
- PM8001_IO_DBG(pm8001_ha,
2502
- pm8001_printk("IO_OPEN_CNX_ERROR_BREAK\n"));
2451
+ pm8001_dbg(pm8001_ha, IO, "IO_OPEN_CNX_ERROR_BREAK\n");
25032452 ts->resp = SAS_TASK_COMPLETE;
25042453 ts->stat = SAS_OPEN_REJECT;
25052454 ts->open_rej_reason = SAS_OREJ_RSVD_CONT0;
2455
+ if (pm8001_dev)
2456
+ atomic_dec(&pm8001_dev->running_req);
25062457 break;
25072458 case IO_OPEN_CNX_ERROR_IT_NEXUS_LOSS:
2508
- PM8001_IO_DBG(pm8001_ha,
2509
- pm8001_printk("IO_OPEN_CNX_ERROR_IT_NEXUS_LOSS\n"));
2459
+ pm8001_dbg(pm8001_ha, IO, "IO_OPEN_CNX_ERROR_IT_NEXUS_LOSS\n");
25102460 ts->resp = SAS_TASK_COMPLETE;
25112461 ts->stat = SAS_DEV_NO_RESPONSE;
25122462 if (!t->uldd_task) {
....@@ -2520,8 +2470,8 @@
25202470 }
25212471 break;
25222472 case IO_OPEN_CNX_ERROR_BAD_DESTINATION:
2523
- PM8001_IO_DBG(pm8001_ha,
2524
- pm8001_printk("IO_OPEN_CNX_ERROR_BAD_DESTINATION\n"));
2473
+ pm8001_dbg(pm8001_ha, IO,
2474
+ "IO_OPEN_CNX_ERROR_BAD_DESTINATION\n");
25252475 ts->resp = SAS_TASK_UNDELIVERED;
25262476 ts->stat = SAS_OPEN_REJECT;
25272477 ts->open_rej_reason = SAS_OREJ_BAD_DEST;
....@@ -2536,17 +2486,15 @@
25362486 }
25372487 break;
25382488 case IO_OPEN_CNX_ERROR_CONNECTION_RATE_NOT_SUPPORTED:
2539
- PM8001_IO_DBG(pm8001_ha,
2540
- pm8001_printk("IO_OPEN_CNX_ERROR_CONNECTION_RATE_"
2541
- "NOT_SUPPORTED\n"));
2489
+ pm8001_dbg(pm8001_ha, IO, "IO_OPEN_CNX_ERROR_CONNECTION_RATE_NOT_SUPPORTED\n");
25422490 ts->resp = SAS_TASK_COMPLETE;
25432491 ts->stat = SAS_OPEN_REJECT;
25442492 ts->open_rej_reason = SAS_OREJ_CONN_RATE;
2493
+ if (pm8001_dev)
2494
+ atomic_dec(&pm8001_dev->running_req);
25452495 break;
25462496 case IO_OPEN_CNX_ERROR_STP_RESOURCES_BUSY:
2547
- PM8001_IO_DBG(pm8001_ha,
2548
- pm8001_printk("IO_OPEN_CNX_ERROR_STP_RESOURCES"
2549
- "_BUSY\n"));
2497
+ pm8001_dbg(pm8001_ha, IO, "IO_OPEN_CNX_ERROR_STP_RESOURCES_BUSY\n");
25502498 ts->resp = SAS_TASK_COMPLETE;
25512499 ts->stat = SAS_DEV_NO_RESPONSE;
25522500 if (!t->uldd_task) {
....@@ -2560,57 +2508,65 @@
25602508 }
25612509 break;
25622510 case IO_OPEN_CNX_ERROR_WRONG_DESTINATION:
2563
- PM8001_IO_DBG(pm8001_ha,
2564
- pm8001_printk("IO_OPEN_CNX_ERROR_WRONG_DESTINATION\n"));
2511
+ pm8001_dbg(pm8001_ha, IO,
2512
+ "IO_OPEN_CNX_ERROR_WRONG_DESTINATION\n");
25652513 ts->resp = SAS_TASK_COMPLETE;
25662514 ts->stat = SAS_OPEN_REJECT;
25672515 ts->open_rej_reason = SAS_OREJ_WRONG_DEST;
2516
+ if (pm8001_dev)
2517
+ atomic_dec(&pm8001_dev->running_req);
25682518 break;
25692519 case IO_XFER_ERROR_NAK_RECEIVED:
2570
- PM8001_IO_DBG(pm8001_ha,
2571
- pm8001_printk("IO_XFER_ERROR_NAK_RECEIVED\n"));
2520
+ pm8001_dbg(pm8001_ha, IO, "IO_XFER_ERROR_NAK_RECEIVED\n");
25722521 ts->resp = SAS_TASK_COMPLETE;
25732522 ts->stat = SAS_NAK_R_ERR;
2523
+ if (pm8001_dev)
2524
+ atomic_dec(&pm8001_dev->running_req);
25742525 break;
25752526 case IO_XFER_ERROR_ACK_NAK_TIMEOUT:
2576
- PM8001_IO_DBG(pm8001_ha,
2577
- pm8001_printk("IO_XFER_ERROR_ACK_NAK_TIMEOUT\n"));
2527
+ pm8001_dbg(pm8001_ha, IO, "IO_XFER_ERROR_ACK_NAK_TIMEOUT\n");
25782528 ts->resp = SAS_TASK_COMPLETE;
25792529 ts->stat = SAS_NAK_R_ERR;
2530
+ if (pm8001_dev)
2531
+ atomic_dec(&pm8001_dev->running_req);
25802532 break;
25812533 case IO_XFER_ERROR_DMA:
2582
- PM8001_IO_DBG(pm8001_ha,
2583
- pm8001_printk("IO_XFER_ERROR_DMA\n"));
2534
+ pm8001_dbg(pm8001_ha, IO, "IO_XFER_ERROR_DMA\n");
25842535 ts->resp = SAS_TASK_COMPLETE;
25852536 ts->stat = SAS_ABORTED_TASK;
2537
+ if (pm8001_dev)
2538
+ atomic_dec(&pm8001_dev->running_req);
25862539 break;
25872540 case IO_XFER_ERROR_SATA_LINK_TIMEOUT:
2588
- PM8001_IO_DBG(pm8001_ha,
2589
- pm8001_printk("IO_XFER_ERROR_SATA_LINK_TIMEOUT\n"));
2541
+ pm8001_dbg(pm8001_ha, IO, "IO_XFER_ERROR_SATA_LINK_TIMEOUT\n");
25902542 ts->resp = SAS_TASK_UNDELIVERED;
25912543 ts->stat = SAS_DEV_NO_RESPONSE;
2544
+ if (pm8001_dev)
2545
+ atomic_dec(&pm8001_dev->running_req);
25922546 break;
25932547 case IO_XFER_ERROR_REJECTED_NCQ_MODE:
2594
- PM8001_IO_DBG(pm8001_ha,
2595
- pm8001_printk("IO_XFER_ERROR_REJECTED_NCQ_MODE\n"));
2548
+ pm8001_dbg(pm8001_ha, IO, "IO_XFER_ERROR_REJECTED_NCQ_MODE\n");
25962549 ts->resp = SAS_TASK_COMPLETE;
25972550 ts->stat = SAS_DATA_UNDERRUN;
2551
+ if (pm8001_dev)
2552
+ atomic_dec(&pm8001_dev->running_req);
25982553 break;
25992554 case IO_XFER_OPEN_RETRY_TIMEOUT:
2600
- PM8001_IO_DBG(pm8001_ha,
2601
- pm8001_printk("IO_XFER_OPEN_RETRY_TIMEOUT\n"));
2555
+ pm8001_dbg(pm8001_ha, IO, "IO_XFER_OPEN_RETRY_TIMEOUT\n");
26022556 ts->resp = SAS_TASK_COMPLETE;
26032557 ts->stat = SAS_OPEN_TO;
2558
+ if (pm8001_dev)
2559
+ atomic_dec(&pm8001_dev->running_req);
26042560 break;
26052561 case IO_PORT_IN_RESET:
2606
- PM8001_IO_DBG(pm8001_ha,
2607
- pm8001_printk("IO_PORT_IN_RESET\n"));
2562
+ pm8001_dbg(pm8001_ha, IO, "IO_PORT_IN_RESET\n");
26082563 ts->resp = SAS_TASK_COMPLETE;
26092564 ts->stat = SAS_DEV_NO_RESPONSE;
2565
+ if (pm8001_dev)
2566
+ atomic_dec(&pm8001_dev->running_req);
26102567 break;
26112568 case IO_DS_NON_OPERATIONAL:
2612
- PM8001_IO_DBG(pm8001_ha,
2613
- pm8001_printk("IO_DS_NON_OPERATIONAL\n"));
2569
+ pm8001_dbg(pm8001_ha, IO, "IO_DS_NON_OPERATIONAL\n");
26142570 ts->resp = SAS_TASK_COMPLETE;
26152571 ts->stat = SAS_DEV_NO_RESPONSE;
26162572 if (!t->uldd_task) {
....@@ -2623,14 +2579,14 @@
26232579 }
26242580 break;
26252581 case IO_DS_IN_RECOVERY:
2626
- PM8001_IO_DBG(pm8001_ha,
2627
- pm8001_printk(" IO_DS_IN_RECOVERY\n"));
2582
+ pm8001_dbg(pm8001_ha, IO, " IO_DS_IN_RECOVERY\n");
26282583 ts->resp = SAS_TASK_COMPLETE;
26292584 ts->stat = SAS_DEV_NO_RESPONSE;
2585
+ if (pm8001_dev)
2586
+ atomic_dec(&pm8001_dev->running_req);
26302587 break;
26312588 case IO_DS_IN_ERROR:
2632
- PM8001_IO_DBG(pm8001_ha,
2633
- pm8001_printk("IO_DS_IN_ERROR\n"));
2589
+ pm8001_dbg(pm8001_ha, IO, "IO_DS_IN_ERROR\n");
26342590 ts->resp = SAS_TASK_COMPLETE;
26352591 ts->stat = SAS_DEV_NO_RESPONSE;
26362592 if (!t->uldd_task) {
....@@ -2643,18 +2599,21 @@
26432599 }
26442600 break;
26452601 case IO_OPEN_CNX_ERROR_HW_RESOURCE_BUSY:
2646
- PM8001_IO_DBG(pm8001_ha,
2647
- pm8001_printk("IO_OPEN_CNX_ERROR_HW_RESOURCE_BUSY\n"));
2602
+ pm8001_dbg(pm8001_ha, IO,
2603
+ "IO_OPEN_CNX_ERROR_HW_RESOURCE_BUSY\n");
26482604 ts->resp = SAS_TASK_COMPLETE;
26492605 ts->stat = SAS_OPEN_REJECT;
26502606 ts->open_rej_reason = SAS_OREJ_RSVD_RETRY;
2607
+ if (pm8001_dev)
2608
+ atomic_dec(&pm8001_dev->running_req);
26512609 break;
26522610 default:
2653
- PM8001_IO_DBG(pm8001_ha,
2654
- pm8001_printk("Unknown status 0x%x\n", status));
2611
+ pm8001_dbg(pm8001_ha, DEVIO, "Unknown status 0x%x\n", status);
26552612 /* not allowed case. Therefore, return failed status */
26562613 ts->resp = SAS_TASK_COMPLETE;
26572614 ts->stat = SAS_DEV_NO_RESPONSE;
2615
+ if (pm8001_dev)
2616
+ atomic_dec(&pm8001_dev->running_req);
26582617 break;
26592618 }
26602619 spin_lock_irqsave(&t->task_state_lock, flags);
....@@ -2663,10 +2622,9 @@
26632622 t->task_state_flags |= SAS_TASK_STATE_DONE;
26642623 if (unlikely((t->task_state_flags & SAS_TASK_STATE_ABORTED))) {
26652624 spin_unlock_irqrestore(&t->task_state_lock, flags);
2666
- PM8001_FAIL_DBG(pm8001_ha,
2667
- pm8001_printk("task 0x%p done with io_status 0x%x"
2668
- " resp 0x%x stat 0x%x but aborted by upper layer!\n",
2669
- t, status, ts->resp, ts->stat));
2625
+ pm8001_dbg(pm8001_ha, FAIL,
2626
+ "task 0x%p done with io_status 0x%x resp 0x%x stat 0x%x but aborted by upper layer!\n",
2627
+ t, status, ts->resp, ts->stat);
26702628 pm8001_ccb_task_free(pm8001_ha, t, ccb, tag);
26712629 } else {
26722630 spin_unlock_irqrestore(&t->task_state_lock, flags);
....@@ -2695,12 +2653,10 @@
26952653 t = ccb->task;
26962654 pm8001_dev = ccb->device;
26972655 } else {
2698
- PM8001_FAIL_DBG(pm8001_ha,
2699
- pm8001_printk("No CCB !!!. returning\n"));
2656
+ pm8001_dbg(pm8001_ha, FAIL, "No CCB !!!. returning\n");
27002657 }
27012658 if (event)
2702
- PM8001_FAIL_DBG(pm8001_ha,
2703
- pm8001_printk("SATA EVENT 0x%x\n", event));
2659
+ pm8001_dbg(pm8001_ha, FAIL, "SATA EVENT 0x%x\n", event);
27042660
27052661 /* Check if this is NCQ error */
27062662 if (event == IO_XFER_ERROR_ABORTED_NCQ_MODE) {
....@@ -2716,61 +2672,54 @@
27162672 t = ccb->task;
27172673 pm8001_dev = ccb->device;
27182674 if (event)
2719
- PM8001_FAIL_DBG(pm8001_ha,
2720
- pm8001_printk("sata IO status 0x%x\n", event));
2675
+ pm8001_dbg(pm8001_ha, FAIL, "sata IO status 0x%x\n", event);
27212676 if (unlikely(!t || !t->lldd_task || !t->dev))
27222677 return;
27232678 ts = &t->task_status;
2724
- PM8001_IO_DBG(pm8001_ha, pm8001_printk(
2725
- "port_id:0x%x, device_id:0x%x, tag:0x%x, event:0x%x\n",
2726
- port_id, dev_id, tag, event));
2679
+ pm8001_dbg(pm8001_ha, DEVIO,
2680
+ "port_id:0x%x, device_id:0x%x, tag:0x%x, event:0x%x\n",
2681
+ port_id, dev_id, tag, event);
27272682 switch (event) {
27282683 case IO_OVERFLOW:
2729
- PM8001_IO_DBG(pm8001_ha, pm8001_printk("IO_UNDERFLOW\n"));
2684
+ pm8001_dbg(pm8001_ha, IO, "IO_UNDERFLOW\n");
27302685 ts->resp = SAS_TASK_COMPLETE;
27312686 ts->stat = SAS_DATA_OVERRUN;
27322687 ts->residual = 0;
27332688 if (pm8001_dev)
2734
- pm8001_dev->running_req--;
2689
+ atomic_dec(&pm8001_dev->running_req);
27352690 break;
27362691 case IO_XFER_ERROR_BREAK:
2737
- PM8001_IO_DBG(pm8001_ha,
2738
- pm8001_printk("IO_XFER_ERROR_BREAK\n"));
2692
+ pm8001_dbg(pm8001_ha, IO, "IO_XFER_ERROR_BREAK\n");
27392693 ts->resp = SAS_TASK_COMPLETE;
27402694 ts->stat = SAS_INTERRUPTED;
27412695 break;
27422696 case IO_XFER_ERROR_PHY_NOT_READY:
2743
- PM8001_IO_DBG(pm8001_ha,
2744
- pm8001_printk("IO_XFER_ERROR_PHY_NOT_READY\n"));
2697
+ pm8001_dbg(pm8001_ha, IO, "IO_XFER_ERROR_PHY_NOT_READY\n");
27452698 ts->resp = SAS_TASK_COMPLETE;
27462699 ts->stat = SAS_OPEN_REJECT;
27472700 ts->open_rej_reason = SAS_OREJ_RSVD_RETRY;
27482701 break;
27492702 case IO_OPEN_CNX_ERROR_PROTOCOL_NOT_SUPPORTED:
2750
- PM8001_IO_DBG(pm8001_ha,
2751
- pm8001_printk("IO_OPEN_CNX_ERROR_PROTOCOL_NOT"
2752
- "_SUPPORTED\n"));
2703
+ pm8001_dbg(pm8001_ha, IO, "IO_OPEN_CNX_ERROR_PROTOCOL_NOT_SUPPORTED\n");
27532704 ts->resp = SAS_TASK_COMPLETE;
27542705 ts->stat = SAS_OPEN_REJECT;
27552706 ts->open_rej_reason = SAS_OREJ_EPROTO;
27562707 break;
27572708 case IO_OPEN_CNX_ERROR_ZONE_VIOLATION:
2758
- PM8001_IO_DBG(pm8001_ha,
2759
- pm8001_printk("IO_OPEN_CNX_ERROR_ZONE_VIOLATION\n"));
2709
+ pm8001_dbg(pm8001_ha, IO,
2710
+ "IO_OPEN_CNX_ERROR_ZONE_VIOLATION\n");
27602711 ts->resp = SAS_TASK_COMPLETE;
27612712 ts->stat = SAS_OPEN_REJECT;
27622713 ts->open_rej_reason = SAS_OREJ_UNKNOWN;
27632714 break;
27642715 case IO_OPEN_CNX_ERROR_BREAK:
2765
- PM8001_IO_DBG(pm8001_ha,
2766
- pm8001_printk("IO_OPEN_CNX_ERROR_BREAK\n"));
2716
+ pm8001_dbg(pm8001_ha, IO, "IO_OPEN_CNX_ERROR_BREAK\n");
27672717 ts->resp = SAS_TASK_COMPLETE;
27682718 ts->stat = SAS_OPEN_REJECT;
27692719 ts->open_rej_reason = SAS_OREJ_RSVD_CONT0;
27702720 break;
27712721 case IO_OPEN_CNX_ERROR_IT_NEXUS_LOSS:
2772
- PM8001_IO_DBG(pm8001_ha,
2773
- pm8001_printk("IO_OPEN_CNX_ERROR_IT_NEXUS_LOSS\n"));
2722
+ pm8001_dbg(pm8001_ha, IO, "IO_OPEN_CNX_ERROR_IT_NEXUS_LOSS\n");
27742723 ts->resp = SAS_TASK_UNDELIVERED;
27752724 ts->stat = SAS_DEV_NO_RESPONSE;
27762725 if (!t->uldd_task) {
....@@ -2784,94 +2733,82 @@
27842733 }
27852734 break;
27862735 case IO_OPEN_CNX_ERROR_BAD_DESTINATION:
2787
- PM8001_IO_DBG(pm8001_ha,
2788
- pm8001_printk("IO_OPEN_CNX_ERROR_BAD_DESTINATION\n"));
2736
+ pm8001_dbg(pm8001_ha, IO,
2737
+ "IO_OPEN_CNX_ERROR_BAD_DESTINATION\n");
27892738 ts->resp = SAS_TASK_UNDELIVERED;
27902739 ts->stat = SAS_OPEN_REJECT;
27912740 ts->open_rej_reason = SAS_OREJ_BAD_DEST;
27922741 break;
27932742 case IO_OPEN_CNX_ERROR_CONNECTION_RATE_NOT_SUPPORTED:
2794
- PM8001_IO_DBG(pm8001_ha,
2795
- pm8001_printk("IO_OPEN_CNX_ERROR_CONNECTION_RATE_"
2796
- "NOT_SUPPORTED\n"));
2743
+ pm8001_dbg(pm8001_ha, IO, "IO_OPEN_CNX_ERROR_CONNECTION_RATE_NOT_SUPPORTED\n");
27972744 ts->resp = SAS_TASK_COMPLETE;
27982745 ts->stat = SAS_OPEN_REJECT;
27992746 ts->open_rej_reason = SAS_OREJ_CONN_RATE;
28002747 break;
28012748 case IO_OPEN_CNX_ERROR_WRONG_DESTINATION:
2802
- PM8001_IO_DBG(pm8001_ha,
2803
- pm8001_printk("IO_OPEN_CNX_ERROR_WRONG_DESTINATION\n"));
2749
+ pm8001_dbg(pm8001_ha, IO,
2750
+ "IO_OPEN_CNX_ERROR_WRONG_DESTINATION\n");
28042751 ts->resp = SAS_TASK_COMPLETE;
28052752 ts->stat = SAS_OPEN_REJECT;
28062753 ts->open_rej_reason = SAS_OREJ_WRONG_DEST;
28072754 break;
28082755 case IO_XFER_ERROR_NAK_RECEIVED:
2809
- PM8001_IO_DBG(pm8001_ha,
2810
- pm8001_printk("IO_XFER_ERROR_NAK_RECEIVED\n"));
2756
+ pm8001_dbg(pm8001_ha, IO, "IO_XFER_ERROR_NAK_RECEIVED\n");
28112757 ts->resp = SAS_TASK_COMPLETE;
28122758 ts->stat = SAS_NAK_R_ERR;
28132759 break;
28142760 case IO_XFER_ERROR_PEER_ABORTED:
2815
- PM8001_IO_DBG(pm8001_ha,
2816
- pm8001_printk("IO_XFER_ERROR_PEER_ABORTED\n"));
2761
+ pm8001_dbg(pm8001_ha, IO, "IO_XFER_ERROR_PEER_ABORTED\n");
28172762 ts->resp = SAS_TASK_COMPLETE;
28182763 ts->stat = SAS_NAK_R_ERR;
28192764 break;
28202765 case IO_XFER_ERROR_REJECTED_NCQ_MODE:
2821
- PM8001_IO_DBG(pm8001_ha,
2822
- pm8001_printk("IO_XFER_ERROR_REJECTED_NCQ_MODE\n"));
2766
+ pm8001_dbg(pm8001_ha, IO, "IO_XFER_ERROR_REJECTED_NCQ_MODE\n");
28232767 ts->resp = SAS_TASK_COMPLETE;
28242768 ts->stat = SAS_DATA_UNDERRUN;
28252769 break;
28262770 case IO_XFER_OPEN_RETRY_TIMEOUT:
2827
- PM8001_IO_DBG(pm8001_ha,
2828
- pm8001_printk("IO_XFER_OPEN_RETRY_TIMEOUT\n"));
2771
+ pm8001_dbg(pm8001_ha, IO, "IO_XFER_OPEN_RETRY_TIMEOUT\n");
28292772 ts->resp = SAS_TASK_COMPLETE;
28302773 ts->stat = SAS_OPEN_TO;
28312774 break;
28322775 case IO_XFER_ERROR_UNEXPECTED_PHASE:
2833
- PM8001_IO_DBG(pm8001_ha,
2834
- pm8001_printk("IO_XFER_ERROR_UNEXPECTED_PHASE\n"));
2776
+ pm8001_dbg(pm8001_ha, IO, "IO_XFER_ERROR_UNEXPECTED_PHASE\n");
28352777 ts->resp = SAS_TASK_COMPLETE;
28362778 ts->stat = SAS_OPEN_TO;
28372779 break;
28382780 case IO_XFER_ERROR_XFER_RDY_OVERRUN:
2839
- PM8001_IO_DBG(pm8001_ha,
2840
- pm8001_printk("IO_XFER_ERROR_XFER_RDY_OVERRUN\n"));
2781
+ pm8001_dbg(pm8001_ha, IO, "IO_XFER_ERROR_XFER_RDY_OVERRUN\n");
28412782 ts->resp = SAS_TASK_COMPLETE;
28422783 ts->stat = SAS_OPEN_TO;
28432784 break;
28442785 case IO_XFER_ERROR_XFER_RDY_NOT_EXPECTED:
2845
- PM8001_IO_DBG(pm8001_ha,
2846
- pm8001_printk("IO_XFER_ERROR_XFER_RDY_NOT_EXPECTED\n"));
2786
+ pm8001_dbg(pm8001_ha, IO,
2787
+ "IO_XFER_ERROR_XFER_RDY_NOT_EXPECTED\n");
28472788 ts->resp = SAS_TASK_COMPLETE;
28482789 ts->stat = SAS_OPEN_TO;
28492790 break;
28502791 case IO_XFER_ERROR_OFFSET_MISMATCH:
2851
- PM8001_IO_DBG(pm8001_ha,
2852
- pm8001_printk("IO_XFER_ERROR_OFFSET_MISMATCH\n"));
2792
+ pm8001_dbg(pm8001_ha, IO, "IO_XFER_ERROR_OFFSET_MISMATCH\n");
28532793 ts->resp = SAS_TASK_COMPLETE;
28542794 ts->stat = SAS_OPEN_TO;
28552795 break;
28562796 case IO_XFER_ERROR_XFER_ZERO_DATA_LEN:
2857
- PM8001_IO_DBG(pm8001_ha,
2858
- pm8001_printk("IO_XFER_ERROR_XFER_ZERO_DATA_LEN\n"));
2797
+ pm8001_dbg(pm8001_ha, IO,
2798
+ "IO_XFER_ERROR_XFER_ZERO_DATA_LEN\n");
28592799 ts->resp = SAS_TASK_COMPLETE;
28602800 ts->stat = SAS_OPEN_TO;
28612801 break;
28622802 case IO_XFER_CMD_FRAME_ISSUED:
2863
- PM8001_IO_DBG(pm8001_ha,
2864
- pm8001_printk("IO_XFER_CMD_FRAME_ISSUED\n"));
2803
+ pm8001_dbg(pm8001_ha, IO, "IO_XFER_CMD_FRAME_ISSUED\n");
28652804 break;
28662805 case IO_XFER_PIO_SETUP_ERROR:
2867
- PM8001_IO_DBG(pm8001_ha,
2868
- pm8001_printk("IO_XFER_PIO_SETUP_ERROR\n"));
2806
+ pm8001_dbg(pm8001_ha, IO, "IO_XFER_PIO_SETUP_ERROR\n");
28692807 ts->resp = SAS_TASK_COMPLETE;
28702808 ts->stat = SAS_OPEN_TO;
28712809 break;
28722810 default:
2873
- PM8001_IO_DBG(pm8001_ha,
2874
- pm8001_printk("Unknown status 0x%x\n", event));
2811
+ pm8001_dbg(pm8001_ha, DEVIO, "Unknown status 0x%x\n", event);
28752812 /* not allowed case. Therefore, return failed status */
28762813 ts->resp = SAS_TASK_COMPLETE;
28772814 ts->stat = SAS_OPEN_TO;
....@@ -2883,10 +2820,9 @@
28832820 t->task_state_flags |= SAS_TASK_STATE_DONE;
28842821 if (unlikely((t->task_state_flags & SAS_TASK_STATE_ABORTED))) {
28852822 spin_unlock_irqrestore(&t->task_state_lock, flags);
2886
- PM8001_FAIL_DBG(pm8001_ha,
2887
- pm8001_printk("task 0x%p done with io_status 0x%x"
2888
- " resp 0x%x stat 0x%x but aborted by upper layer!\n",
2889
- t, event, ts->resp, ts->stat));
2823
+ pm8001_dbg(pm8001_ha, FAIL,
2824
+ "task 0x%p done with io_status 0x%x resp 0x%x stat 0x%x but aborted by upper layer!\n",
2825
+ t, event, ts->resp, ts->stat);
28902826 pm8001_ccb_task_free(pm8001_ha, t, ccb, tag);
28912827 } else {
28922828 spin_unlock_irqrestore(&t->task_state_lock, flags);
....@@ -2898,7 +2834,6 @@
28982834 static void
28992835 mpi_smp_completion(struct pm8001_hba_info *pm8001_ha, void *piomb)
29002836 {
2901
- u32 param;
29022837 struct sas_task *t;
29032838 struct pm8001_ccb_info *ccb;
29042839 unsigned long flags;
....@@ -2913,87 +2848,83 @@
29132848 tag = le32_to_cpu(psmpPayload->tag);
29142849
29152850 ccb = &pm8001_ha->ccb_info[tag];
2916
- param = le32_to_cpu(psmpPayload->param);
29172851 t = ccb->task;
29182852 ts = &t->task_status;
29192853 pm8001_dev = ccb->device;
2920
- if (status)
2921
- PM8001_FAIL_DBG(pm8001_ha,
2922
- pm8001_printk("smp IO status 0x%x\n", status));
2854
+ if (status) {
2855
+ pm8001_dbg(pm8001_ha, FAIL, "smp IO status 0x%x\n", status);
2856
+ pm8001_dbg(pm8001_ha, IOERR,
2857
+ "status:0x%x, tag:0x%x, task:0x%p\n",
2858
+ status, tag, t);
2859
+ }
29232860 if (unlikely(!t || !t->lldd_task || !t->dev))
29242861 return;
29252862
29262863 switch (status) {
29272864 case IO_SUCCESS:
2928
- PM8001_IO_DBG(pm8001_ha, pm8001_printk("IO_SUCCESS\n"));
2865
+ pm8001_dbg(pm8001_ha, IO, "IO_SUCCESS\n");
29292866 ts->resp = SAS_TASK_COMPLETE;
29302867 ts->stat = SAM_STAT_GOOD;
2931
- if (pm8001_dev)
2932
- pm8001_dev->running_req--;
2868
+ if (pm8001_dev)
2869
+ atomic_dec(&pm8001_dev->running_req);
29332870 break;
29342871 case IO_ABORTED:
2935
- PM8001_IO_DBG(pm8001_ha,
2936
- pm8001_printk("IO_ABORTED IOMB\n"));
2872
+ pm8001_dbg(pm8001_ha, IO, "IO_ABORTED IOMB\n");
29372873 ts->resp = SAS_TASK_COMPLETE;
29382874 ts->stat = SAS_ABORTED_TASK;
29392875 if (pm8001_dev)
2940
- pm8001_dev->running_req--;
2876
+ atomic_dec(&pm8001_dev->running_req);
29412877 break;
29422878 case IO_OVERFLOW:
2943
- PM8001_IO_DBG(pm8001_ha, pm8001_printk("IO_UNDERFLOW\n"));
2879
+ pm8001_dbg(pm8001_ha, IO, "IO_UNDERFLOW\n");
29442880 ts->resp = SAS_TASK_COMPLETE;
29452881 ts->stat = SAS_DATA_OVERRUN;
29462882 ts->residual = 0;
29472883 if (pm8001_dev)
2948
- pm8001_dev->running_req--;
2884
+ atomic_dec(&pm8001_dev->running_req);
29492885 break;
29502886 case IO_NO_DEVICE:
2951
- PM8001_IO_DBG(pm8001_ha, pm8001_printk("IO_NO_DEVICE\n"));
2887
+ pm8001_dbg(pm8001_ha, IO, "IO_NO_DEVICE\n");
29522888 ts->resp = SAS_TASK_COMPLETE;
29532889 ts->stat = SAS_PHY_DOWN;
29542890 break;
29552891 case IO_ERROR_HW_TIMEOUT:
2956
- PM8001_IO_DBG(pm8001_ha,
2957
- pm8001_printk("IO_ERROR_HW_TIMEOUT\n"));
2892
+ pm8001_dbg(pm8001_ha, IO, "IO_ERROR_HW_TIMEOUT\n");
29582893 ts->resp = SAS_TASK_COMPLETE;
29592894 ts->stat = SAM_STAT_BUSY;
29602895 break;
29612896 case IO_XFER_ERROR_BREAK:
2962
- PM8001_IO_DBG(pm8001_ha,
2963
- pm8001_printk("IO_XFER_ERROR_BREAK\n"));
2897
+ pm8001_dbg(pm8001_ha, IO, "IO_XFER_ERROR_BREAK\n");
29642898 ts->resp = SAS_TASK_COMPLETE;
29652899 ts->stat = SAM_STAT_BUSY;
29662900 break;
29672901 case IO_XFER_ERROR_PHY_NOT_READY:
2968
- PM8001_IO_DBG(pm8001_ha,
2969
- pm8001_printk("IO_XFER_ERROR_PHY_NOT_READY\n"));
2902
+ pm8001_dbg(pm8001_ha, IO, "IO_XFER_ERROR_PHY_NOT_READY\n");
29702903 ts->resp = SAS_TASK_COMPLETE;
29712904 ts->stat = SAM_STAT_BUSY;
29722905 break;
29732906 case IO_OPEN_CNX_ERROR_PROTOCOL_NOT_SUPPORTED:
2974
- PM8001_IO_DBG(pm8001_ha,
2975
- pm8001_printk("IO_OPEN_CNX_ERROR_PROTOCOL_NOT_SUPPORTED\n"));
2907
+ pm8001_dbg(pm8001_ha, IO,
2908
+ "IO_OPEN_CNX_ERROR_PROTOCOL_NOT_SUPPORTED\n");
29762909 ts->resp = SAS_TASK_COMPLETE;
29772910 ts->stat = SAS_OPEN_REJECT;
29782911 ts->open_rej_reason = SAS_OREJ_UNKNOWN;
29792912 break;
29802913 case IO_OPEN_CNX_ERROR_ZONE_VIOLATION:
2981
- PM8001_IO_DBG(pm8001_ha,
2982
- pm8001_printk("IO_OPEN_CNX_ERROR_ZONE_VIOLATION\n"));
2914
+ pm8001_dbg(pm8001_ha, IO,
2915
+ "IO_OPEN_CNX_ERROR_ZONE_VIOLATION\n");
29832916 ts->resp = SAS_TASK_COMPLETE;
29842917 ts->stat = SAS_OPEN_REJECT;
29852918 ts->open_rej_reason = SAS_OREJ_UNKNOWN;
29862919 break;
29872920 case IO_OPEN_CNX_ERROR_BREAK:
2988
- PM8001_IO_DBG(pm8001_ha,
2989
- pm8001_printk("IO_OPEN_CNX_ERROR_BREAK\n"));
2921
+ pm8001_dbg(pm8001_ha, IO, "IO_OPEN_CNX_ERROR_BREAK\n");
29902922 ts->resp = SAS_TASK_COMPLETE;
29912923 ts->stat = SAS_OPEN_REJECT;
29922924 ts->open_rej_reason = SAS_OREJ_RSVD_CONT0;
29932925 break;
29942926 case IO_OPEN_CNX_ERROR_IT_NEXUS_LOSS:
2995
- PM8001_IO_DBG(pm8001_ha,
2996
- pm8001_printk("IO_OPEN_CNX_ERROR_IT_NEXUS_LOSS\n"));
2927
+ pm8001_dbg(pm8001_ha, IO, "IO_OPEN_CNX_ERROR_IT_NEXUS_LOSS\n");
29972928 ts->resp = SAS_TASK_COMPLETE;
29982929 ts->stat = SAS_OPEN_REJECT;
29992930 ts->open_rej_reason = SAS_OREJ_UNKNOWN;
....@@ -3002,76 +2933,67 @@
30022933 IO_OPEN_CNX_ERROR_IT_NEXUS_LOSS);
30032934 break;
30042935 case IO_OPEN_CNX_ERROR_BAD_DESTINATION:
3005
- PM8001_IO_DBG(pm8001_ha,
3006
- pm8001_printk("IO_OPEN_CNX_ERROR_BAD_DESTINATION\n"));
2936
+ pm8001_dbg(pm8001_ha, IO,
2937
+ "IO_OPEN_CNX_ERROR_BAD_DESTINATION\n");
30072938 ts->resp = SAS_TASK_COMPLETE;
30082939 ts->stat = SAS_OPEN_REJECT;
30092940 ts->open_rej_reason = SAS_OREJ_BAD_DEST;
30102941 break;
30112942 case IO_OPEN_CNX_ERROR_CONNECTION_RATE_NOT_SUPPORTED:
3012
- PM8001_IO_DBG(pm8001_ha,
3013
- pm8001_printk("IO_OPEN_CNX_ERROR_CONNECTION_RATE_"
3014
- "NOT_SUPPORTED\n"));
2943
+ pm8001_dbg(pm8001_ha, IO, "IO_OPEN_CNX_ERROR_CONNECTION_RATE_NOT_SUPPORTED\n");
30152944 ts->resp = SAS_TASK_COMPLETE;
30162945 ts->stat = SAS_OPEN_REJECT;
30172946 ts->open_rej_reason = SAS_OREJ_CONN_RATE;
30182947 break;
30192948 case IO_OPEN_CNX_ERROR_WRONG_DESTINATION:
3020
- PM8001_IO_DBG(pm8001_ha,
3021
- pm8001_printk("IO_OPEN_CNX_ERROR_WRONG_DESTINATION\n"));
2949
+ pm8001_dbg(pm8001_ha, IO,
2950
+ "IO_OPEN_CNX_ERROR_WRONG_DESTINATION\n");
30222951 ts->resp = SAS_TASK_COMPLETE;
30232952 ts->stat = SAS_OPEN_REJECT;
30242953 ts->open_rej_reason = SAS_OREJ_WRONG_DEST;
30252954 break;
30262955 case IO_XFER_ERROR_RX_FRAME:
3027
- PM8001_IO_DBG(pm8001_ha,
3028
- pm8001_printk("IO_XFER_ERROR_RX_FRAME\n"));
2956
+ pm8001_dbg(pm8001_ha, IO, "IO_XFER_ERROR_RX_FRAME\n");
30292957 ts->resp = SAS_TASK_COMPLETE;
30302958 ts->stat = SAS_DEV_NO_RESPONSE;
30312959 break;
30322960 case IO_XFER_OPEN_RETRY_TIMEOUT:
3033
- PM8001_IO_DBG(pm8001_ha,
3034
- pm8001_printk("IO_XFER_OPEN_RETRY_TIMEOUT\n"));
2961
+ pm8001_dbg(pm8001_ha, IO, "IO_XFER_OPEN_RETRY_TIMEOUT\n");
30352962 ts->resp = SAS_TASK_COMPLETE;
30362963 ts->stat = SAS_OPEN_REJECT;
30372964 ts->open_rej_reason = SAS_OREJ_RSVD_RETRY;
30382965 break;
30392966 case IO_ERROR_INTERNAL_SMP_RESOURCE:
3040
- PM8001_IO_DBG(pm8001_ha,
3041
- pm8001_printk("IO_ERROR_INTERNAL_SMP_RESOURCE\n"));
2967
+ pm8001_dbg(pm8001_ha, IO, "IO_ERROR_INTERNAL_SMP_RESOURCE\n");
30422968 ts->resp = SAS_TASK_COMPLETE;
30432969 ts->stat = SAS_QUEUE_FULL;
30442970 break;
30452971 case IO_PORT_IN_RESET:
3046
- PM8001_IO_DBG(pm8001_ha,
3047
- pm8001_printk("IO_PORT_IN_RESET\n"));
2972
+ pm8001_dbg(pm8001_ha, IO, "IO_PORT_IN_RESET\n");
30482973 ts->resp = SAS_TASK_COMPLETE;
30492974 ts->stat = SAS_OPEN_REJECT;
30502975 ts->open_rej_reason = SAS_OREJ_RSVD_RETRY;
30512976 break;
30522977 case IO_DS_NON_OPERATIONAL:
3053
- PM8001_IO_DBG(pm8001_ha,
3054
- pm8001_printk("IO_DS_NON_OPERATIONAL\n"));
2978
+ pm8001_dbg(pm8001_ha, IO, "IO_DS_NON_OPERATIONAL\n");
30552979 ts->resp = SAS_TASK_COMPLETE;
30562980 ts->stat = SAS_DEV_NO_RESPONSE;
30572981 break;
30582982 case IO_DS_IN_RECOVERY:
3059
- PM8001_IO_DBG(pm8001_ha,
3060
- pm8001_printk("IO_DS_IN_RECOVERY\n"));
2983
+ pm8001_dbg(pm8001_ha, IO, "IO_DS_IN_RECOVERY\n");
30612984 ts->resp = SAS_TASK_COMPLETE;
30622985 ts->stat = SAS_OPEN_REJECT;
30632986 ts->open_rej_reason = SAS_OREJ_RSVD_RETRY;
30642987 break;
30652988 case IO_OPEN_CNX_ERROR_HW_RESOURCE_BUSY:
3066
- PM8001_IO_DBG(pm8001_ha,
3067
- pm8001_printk("IO_OPEN_CNX_ERROR_HW_RESOURCE_BUSY\n"));
2989
+ pm8001_dbg(pm8001_ha, IO,
2990
+ "IO_OPEN_CNX_ERROR_HW_RESOURCE_BUSY\n");
30682991 ts->resp = SAS_TASK_COMPLETE;
30692992 ts->stat = SAS_OPEN_REJECT;
30702993 ts->open_rej_reason = SAS_OREJ_RSVD_RETRY;
30712994 break;
30722995 default:
3073
- PM8001_IO_DBG(pm8001_ha,
3074
- pm8001_printk("Unknown status 0x%x\n", status));
2996
+ pm8001_dbg(pm8001_ha, DEVIO, "Unknown status 0x%x\n", status);
30752997 ts->resp = SAS_TASK_COMPLETE;
30762998 ts->stat = SAS_DEV_NO_RESPONSE;
30772999 /* not allowed case. Therefore, return failed status */
....@@ -3083,10 +3005,8 @@
30833005 t->task_state_flags |= SAS_TASK_STATE_DONE;
30843006 if (unlikely((t->task_state_flags & SAS_TASK_STATE_ABORTED))) {
30853007 spin_unlock_irqrestore(&t->task_state_lock, flags);
3086
- PM8001_FAIL_DBG(pm8001_ha, pm8001_printk("task 0x%p done with"
3087
- " io_status 0x%x resp 0x%x "
3088
- "stat 0x%x but aborted by upper layer!\n",
3089
- t, status, ts->resp, ts->stat));
3008
+ pm8001_dbg(pm8001_ha, FAIL, "task 0x%p done with io_status 0x%x resp 0x%x stat 0x%x but aborted by upper layer!\n",
3009
+ t, status, ts->resp, ts->stat);
30903010 pm8001_ccb_task_free(pm8001_ha, t, ccb, tag);
30913011 } else {
30923012 spin_unlock_irqrestore(&t->task_state_lock, flags);
....@@ -3108,9 +3028,8 @@
31083028 u32 device_id = le32_to_cpu(pPayload->device_id);
31093029 u8 pds = le32_to_cpu(pPayload->pds_nds) & PDS_BITS;
31103030 u8 nds = le32_to_cpu(pPayload->pds_nds) & NDS_BITS;
3111
- PM8001_MSG_DBG(pm8001_ha, pm8001_printk("Set device id = 0x%x state "
3112
- "from 0x%x to 0x%x status = 0x%x!\n",
3113
- device_id, pds, nds, status));
3031
+ pm8001_dbg(pm8001_ha, MSG, "Set device id = 0x%x state from 0x%x to 0x%x status = 0x%x!\n",
3032
+ device_id, pds, nds, status);
31143033 complete(pm8001_dev->setds_completion);
31153034 ccb->task = NULL;
31163035 ccb->ccb_tag = 0xFFFFFFFF;
....@@ -3125,10 +3044,9 @@
31253044 struct pm8001_ccb_info *ccb = &pm8001_ha->ccb_info[tag];
31263045 u32 dlen_status = le32_to_cpu(pPayload->dlen_status);
31273046 complete(pm8001_ha->nvmd_completion);
3128
- PM8001_MSG_DBG(pm8001_ha, pm8001_printk("Set nvm data complete!\n"));
3047
+ pm8001_dbg(pm8001_ha, MSG, "Set nvm data complete!\n");
31293048 if ((dlen_status & NVMD_STAT) != 0) {
3130
- PM8001_FAIL_DBG(pm8001_ha,
3131
- pm8001_printk("Set nvm data error!\n"));
3049
+ pm8001_dbg(pm8001_ha, FAIL, "Set nvm data error!\n");
31323050 return;
31333051 }
31343052 ccb->task = NULL;
....@@ -3150,26 +3068,22 @@
31503068 void *virt_addr = pm8001_ha->memoryMap.region[NVMD].virt_ptr;
31513069 fw_control_context = ccb->fw_control_context;
31523070
3153
- PM8001_MSG_DBG(pm8001_ha, pm8001_printk("Get nvm data complete!\n"));
3071
+ pm8001_dbg(pm8001_ha, MSG, "Get nvm data complete!\n");
31543072 if ((dlen_status & NVMD_STAT) != 0) {
3155
- PM8001_FAIL_DBG(pm8001_ha,
3156
- pm8001_printk("Get nvm data error!\n"));
3073
+ pm8001_dbg(pm8001_ha, FAIL, "Get nvm data error!\n");
31573074 complete(pm8001_ha->nvmd_completion);
31583075 return;
31593076 }
31603077
31613078 if (ir_tds_bn_dps_das_nvm & IPMode) {
31623079 /* indirect mode - IR bit set */
3163
- PM8001_MSG_DBG(pm8001_ha,
3164
- pm8001_printk("Get NVMD success, IR=1\n"));
3080
+ pm8001_dbg(pm8001_ha, MSG, "Get NVMD success, IR=1\n");
31653081 if ((ir_tds_bn_dps_das_nvm & NVMD_TYPE) == TWI_DEVICE) {
31663082 if (ir_tds_bn_dps_das_nvm == 0x80a80200) {
31673083 memcpy(pm8001_ha->sas_addr,
31683084 ((u8 *)virt_addr + 4),
31693085 SAS_ADDR_SIZE);
3170
- PM8001_MSG_DBG(pm8001_ha,
3171
- pm8001_printk("Get SAS address"
3172
- " from VPD successfully!\n"));
3086
+ pm8001_dbg(pm8001_ha, MSG, "Get SAS address from VPD successfully!\n");
31733087 }
31743088 } else if (((ir_tds_bn_dps_das_nvm & NVMD_TYPE) == C_SEEPROM)
31753089 || ((ir_tds_bn_dps_das_nvm & NVMD_TYPE) == VPD_FLASH) ||
....@@ -3180,14 +3094,14 @@
31803094 ;
31813095 } else {
31823096 /* Should not be happened*/
3183
- PM8001_MSG_DBG(pm8001_ha,
3184
- pm8001_printk("(IR=1)Wrong Device type 0x%x\n",
3185
- ir_tds_bn_dps_das_nvm));
3097
+ pm8001_dbg(pm8001_ha, MSG,
3098
+ "(IR=1)Wrong Device type 0x%x\n",
3099
+ ir_tds_bn_dps_das_nvm);
31863100 }
31873101 } else /* direct mode */{
3188
- PM8001_MSG_DBG(pm8001_ha,
3189
- pm8001_printk("Get NVMD success, IR=0, dataLen=%d\n",
3190
- (dlen_status & NVMD_LEN) >> 24));
3102
+ pm8001_dbg(pm8001_ha, MSG,
3103
+ "Get NVMD success, IR=0, dataLen=%d\n",
3104
+ (dlen_status & NVMD_LEN) >> 24);
31913105 }
31923106 /* Though fw_control_context is freed below, usrAddr still needs
31933107 * to be updated as this holds the response to the request function
....@@ -3196,10 +3110,15 @@
31963110 pm8001_ha->memoryMap.region[NVMD].virt_ptr,
31973111 fw_control_context->len);
31983112 kfree(ccb->fw_control_context);
3113
+ /* To avoid race condition, complete should be
3114
+ * called after the message is copied to
3115
+ * fw_control_context->usrAddr
3116
+ */
3117
+ complete(pm8001_ha->nvmd_completion);
3118
+ pm8001_dbg(pm8001_ha, MSG, "Get nvmd data complete!\n");
31993119 ccb->task = NULL;
32003120 ccb->ccb_tag = 0xFFFFFFFF;
32013121 pm8001_tag_free(pm8001_ha, tag);
3202
- complete(pm8001_ha->nvmd_completion);
32033122 }
32043123
32053124 int pm8001_mpi_local_phy_ctl(struct pm8001_hba_info *pm8001_ha, void *piomb)
....@@ -3212,13 +3131,13 @@
32123131 u32 phy_op = le32_to_cpu(pPayload->phyop_phyid) & OP_BITS;
32133132 tag = le32_to_cpu(pPayload->tag);
32143133 if (status != 0) {
3215
- PM8001_MSG_DBG(pm8001_ha,
3216
- pm8001_printk("%x phy execute %x phy op failed!\n",
3217
- phy_id, phy_op));
3134
+ pm8001_dbg(pm8001_ha, MSG,
3135
+ "%x phy execute %x phy op failed!\n",
3136
+ phy_id, phy_op);
32183137 } else {
3219
- PM8001_MSG_DBG(pm8001_ha,
3220
- pm8001_printk("%x phy execute %x phy op success!\n",
3221
- phy_id, phy_op));
3138
+ pm8001_dbg(pm8001_ha, MSG,
3139
+ "%x phy execute %x phy op success!\n",
3140
+ phy_id, phy_op);
32223141 pm8001_ha->phy[phy_id].reset_success = true;
32233142 }
32243143 if (pm8001_ha->phy[phy_id].enable_completion) {
....@@ -3244,11 +3163,9 @@
32443163 {
32453164 struct pm8001_phy *phy = &pm8001_ha->phy[i];
32463165 struct asd_sas_phy *sas_phy = &phy->sas_phy;
3247
- struct sas_ha_struct *sas_ha;
32483166 if (!phy->phy_attached)
32493167 return;
32503168
3251
- sas_ha = pm8001_ha->sas;
32523169 if (sas_phy->phy) {
32533170 struct sas_phy *sphy = sas_phy->phy;
32543171 sphy->negotiated_linkrate = sas_phy->linkrate;
....@@ -3267,10 +3184,10 @@
32673184 } else if (phy->phy_type & PORT_TYPE_SATA) {
32683185 /*Nothing*/
32693186 }
3270
- PM8001_MSG_DBG(pm8001_ha, pm8001_printk("phy %d byte dmaded.\n", i));
3187
+ pm8001_dbg(pm8001_ha, MSG, "phy %d byte dmaded.\n", i);
32713188
32723189 sas_phy->frame_rcvd_size = phy->frame_rcvd_size;
3273
- pm8001_ha->sas->notify_port_event(sas_phy, PORTE_BYTES_DMAED);
3190
+ sas_notify_port_event(sas_phy, PORTE_BYTES_DMAED);
32743191 }
32753192
32763193 /* Get the link rate speed */
....@@ -3357,7 +3274,8 @@
33573274 ((phyId & 0x0F) << 4) | (port_id & 0x0F));
33583275 payload.param0 = cpu_to_le32(param0);
33593276 payload.param1 = cpu_to_le32(param1);
3360
- pm8001_mpi_build_cmd(pm8001_ha, circularQ, opc, &payload, 0);
3277
+ pm8001_mpi_build_cmd(pm8001_ha, circularQ, opc, &payload,
3278
+ sizeof(payload), 0);
33613279 }
33623280
33633281 static int pm8001_chip_phy_ctl_req(struct pm8001_hba_info *pm8001_ha,
....@@ -3383,43 +3301,39 @@
33833301 u32 npip_portstate = le32_to_cpu(pPayload->npip_portstate);
33843302 u8 portstate = (u8)(npip_portstate & 0x0000000F);
33853303 struct pm8001_port *port = &pm8001_ha->port[port_id];
3386
- struct sas_ha_struct *sas_ha = pm8001_ha->sas;
33873304 struct pm8001_phy *phy = &pm8001_ha->phy[phy_id];
33883305 unsigned long flags;
33893306 u8 deviceType = pPayload->sas_identify.dev_type;
33903307 port->port_state = portstate;
33913308 phy->phy_state = PHY_STATE_LINK_UP_SPC;
3392
- PM8001_MSG_DBG(pm8001_ha,
3393
- pm8001_printk("HW_EVENT_SAS_PHY_UP port id = %d, phy id = %d\n",
3394
- port_id, phy_id));
3309
+ pm8001_dbg(pm8001_ha, MSG,
3310
+ "HW_EVENT_SAS_PHY_UP port id = %d, phy id = %d\n",
3311
+ port_id, phy_id);
33953312
33963313 switch (deviceType) {
33973314 case SAS_PHY_UNUSED:
3398
- PM8001_MSG_DBG(pm8001_ha,
3399
- pm8001_printk("device type no device.\n"));
3315
+ pm8001_dbg(pm8001_ha, MSG, "device type no device.\n");
34003316 break;
34013317 case SAS_END_DEVICE:
3402
- PM8001_MSG_DBG(pm8001_ha, pm8001_printk("end device.\n"));
3318
+ pm8001_dbg(pm8001_ha, MSG, "end device.\n");
34033319 pm8001_chip_phy_ctl_req(pm8001_ha, phy_id,
34043320 PHY_NOTIFY_ENABLE_SPINUP);
34053321 port->port_attached = 1;
34063322 pm8001_get_lrate_mode(phy, link_rate);
34073323 break;
34083324 case SAS_EDGE_EXPANDER_DEVICE:
3409
- PM8001_MSG_DBG(pm8001_ha,
3410
- pm8001_printk("expander device.\n"));
3325
+ pm8001_dbg(pm8001_ha, MSG, "expander device.\n");
34113326 port->port_attached = 1;
34123327 pm8001_get_lrate_mode(phy, link_rate);
34133328 break;
34143329 case SAS_FANOUT_EXPANDER_DEVICE:
3415
- PM8001_MSG_DBG(pm8001_ha,
3416
- pm8001_printk("fanout expander device.\n"));
3330
+ pm8001_dbg(pm8001_ha, MSG, "fanout expander device.\n");
34173331 port->port_attached = 1;
34183332 pm8001_get_lrate_mode(phy, link_rate);
34193333 break;
34203334 default:
3421
- PM8001_MSG_DBG(pm8001_ha,
3422
- pm8001_printk("unknown device type(%x)\n", deviceType));
3335
+ pm8001_dbg(pm8001_ha, DEVIO, "unknown device type(%x)\n",
3336
+ deviceType);
34233337 break;
34243338 }
34253339 phy->phy_type |= PORT_TYPE_SAS;
....@@ -3430,7 +3344,7 @@
34303344 else if (phy->identify.device_type != SAS_PHY_UNUSED)
34313345 phy->identify.target_port_protocols = SAS_PROTOCOL_SMP;
34323346 phy->sas_phy.oob_mode = SAS_OOB_MODE;
3433
- sas_ha->notify_phy_event(&phy->sas_phy, PHYE_OOB_DONE);
3347
+ sas_notify_phy_event(&phy->sas_phy, PHYE_OOB_DONE);
34343348 spin_lock_irqsave(&phy->sas_phy.frame_rcvd_lock, flags);
34353349 memcpy(phy->frame_rcvd, &pPayload->sas_identify,
34363350 sizeof(struct sas_identify_frame)-4);
....@@ -3462,12 +3376,10 @@
34623376 u32 npip_portstate = le32_to_cpu(pPayload->npip_portstate);
34633377 u8 portstate = (u8)(npip_portstate & 0x0000000F);
34643378 struct pm8001_port *port = &pm8001_ha->port[port_id];
3465
- struct sas_ha_struct *sas_ha = pm8001_ha->sas;
34663379 struct pm8001_phy *phy = &pm8001_ha->phy[phy_id];
34673380 unsigned long flags;
3468
- PM8001_MSG_DBG(pm8001_ha,
3469
- pm8001_printk("HW_EVENT_SATA_PHY_UP port id = %d,"
3470
- " phy id = %d\n", port_id, phy_id));
3381
+ pm8001_dbg(pm8001_ha, DEVIO, "HW_EVENT_SATA_PHY_UP port id = %d, phy id = %d\n",
3382
+ port_id, phy_id);
34713383 port->port_state = portstate;
34723384 phy->phy_state = PHY_STATE_LINK_UP_SPC;
34733385 port->port_attached = 1;
....@@ -3475,7 +3387,7 @@
34753387 phy->phy_type |= PORT_TYPE_SATA;
34763388 phy->phy_attached = 1;
34773389 phy->sas_phy.oob_mode = SATA_OOB_MODE;
3478
- sas_ha->notify_phy_event(&phy->sas_phy, PHYE_OOB_DONE);
3390
+ sas_notify_phy_event(&phy->sas_phy, PHYE_OOB_DONE);
34793391 spin_lock_irqsave(&phy->sas_phy.frame_rcvd_lock, flags);
34803392 memcpy(phy->frame_rcvd, ((u8 *)&pPayload->sata_fis - 4),
34813393 sizeof(struct dev_to_host_fis));
....@@ -3515,37 +3427,35 @@
35153427 case PORT_VALID:
35163428 break;
35173429 case PORT_INVALID:
3518
- PM8001_MSG_DBG(pm8001_ha,
3519
- pm8001_printk(" PortInvalid portID %d\n", port_id));
3520
- PM8001_MSG_DBG(pm8001_ha,
3521
- pm8001_printk(" Last phy Down and port invalid\n"));
3430
+ pm8001_dbg(pm8001_ha, MSG, " PortInvalid portID %d\n",
3431
+ port_id);
3432
+ pm8001_dbg(pm8001_ha, MSG,
3433
+ " Last phy Down and port invalid\n");
35223434 port->port_attached = 0;
35233435 pm8001_hw_event_ack_req(pm8001_ha, 0, HW_EVENT_PHY_DOWN,
35243436 port_id, phy_id, 0, 0);
35253437 break;
35263438 case PORT_IN_RESET:
3527
- PM8001_MSG_DBG(pm8001_ha,
3528
- pm8001_printk(" Port In Reset portID %d\n", port_id));
3439
+ pm8001_dbg(pm8001_ha, MSG, " Port In Reset portID %d\n",
3440
+ port_id);
35293441 break;
35303442 case PORT_NOT_ESTABLISHED:
3531
- PM8001_MSG_DBG(pm8001_ha,
3532
- pm8001_printk(" phy Down and PORT_NOT_ESTABLISHED\n"));
3443
+ pm8001_dbg(pm8001_ha, MSG,
3444
+ " phy Down and PORT_NOT_ESTABLISHED\n");
35333445 port->port_attached = 0;
35343446 break;
35353447 case PORT_LOSTCOMM:
3536
- PM8001_MSG_DBG(pm8001_ha,
3537
- pm8001_printk(" phy Down and PORT_LOSTCOMM\n"));
3538
- PM8001_MSG_DBG(pm8001_ha,
3539
- pm8001_printk(" Last phy Down and port invalid\n"));
3448
+ pm8001_dbg(pm8001_ha, MSG, " phy Down and PORT_LOSTCOMM\n");
3449
+ pm8001_dbg(pm8001_ha, MSG,
3450
+ " Last phy Down and port invalid\n");
35403451 port->port_attached = 0;
35413452 pm8001_hw_event_ack_req(pm8001_ha, 0, HW_EVENT_PHY_DOWN,
35423453 port_id, phy_id, 0, 0);
35433454 break;
35443455 default:
35453456 port->port_attached = 0;
3546
- PM8001_MSG_DBG(pm8001_ha,
3547
- pm8001_printk(" phy Down and(default) = %x\n",
3548
- portstate));
3457
+ pm8001_dbg(pm8001_ha, DEVIO, " phy Down and(default) = %x\n",
3458
+ portstate);
35493459 break;
35503460
35513461 }
....@@ -3576,44 +3486,42 @@
35763486 pm8001_dev = ccb->device;
35773487 status = le32_to_cpu(registerRespPayload->status);
35783488 device_id = le32_to_cpu(registerRespPayload->device_id);
3579
- PM8001_MSG_DBG(pm8001_ha,
3580
- pm8001_printk(" register device is status = %d\n", status));
3489
+ pm8001_dbg(pm8001_ha, MSG, " register device is status = %d\n",
3490
+ status);
35813491 switch (status) {
35823492 case DEVREG_SUCCESS:
3583
- PM8001_MSG_DBG(pm8001_ha, pm8001_printk("DEVREG_SUCCESS\n"));
3493
+ pm8001_dbg(pm8001_ha, MSG, "DEVREG_SUCCESS\n");
35843494 pm8001_dev->device_id = device_id;
35853495 break;
35863496 case DEVREG_FAILURE_OUT_OF_RESOURCE:
3587
- PM8001_MSG_DBG(pm8001_ha,
3588
- pm8001_printk("DEVREG_FAILURE_OUT_OF_RESOURCE\n"));
3497
+ pm8001_dbg(pm8001_ha, MSG, "DEVREG_FAILURE_OUT_OF_RESOURCE\n");
35893498 break;
35903499 case DEVREG_FAILURE_DEVICE_ALREADY_REGISTERED:
3591
- PM8001_MSG_DBG(pm8001_ha,
3592
- pm8001_printk("DEVREG_FAILURE_DEVICE_ALREADY_REGISTERED\n"));
3500
+ pm8001_dbg(pm8001_ha, MSG,
3501
+ "DEVREG_FAILURE_DEVICE_ALREADY_REGISTERED\n");
35933502 break;
35943503 case DEVREG_FAILURE_INVALID_PHY_ID:
3595
- PM8001_MSG_DBG(pm8001_ha,
3596
- pm8001_printk("DEVREG_FAILURE_INVALID_PHY_ID\n"));
3504
+ pm8001_dbg(pm8001_ha, MSG, "DEVREG_FAILURE_INVALID_PHY_ID\n");
35973505 break;
35983506 case DEVREG_FAILURE_PHY_ID_ALREADY_REGISTERED:
3599
- PM8001_MSG_DBG(pm8001_ha,
3600
- pm8001_printk("DEVREG_FAILURE_PHY_ID_ALREADY_REGISTERED\n"));
3507
+ pm8001_dbg(pm8001_ha, MSG,
3508
+ "DEVREG_FAILURE_PHY_ID_ALREADY_REGISTERED\n");
36013509 break;
36023510 case DEVREG_FAILURE_PORT_ID_OUT_OF_RANGE:
3603
- PM8001_MSG_DBG(pm8001_ha,
3604
- pm8001_printk("DEVREG_FAILURE_PORT_ID_OUT_OF_RANGE\n"));
3511
+ pm8001_dbg(pm8001_ha, MSG,
3512
+ "DEVREG_FAILURE_PORT_ID_OUT_OF_RANGE\n");
36053513 break;
36063514 case DEVREG_FAILURE_PORT_NOT_VALID_STATE:
3607
- PM8001_MSG_DBG(pm8001_ha,
3608
- pm8001_printk("DEVREG_FAILURE_PORT_NOT_VALID_STATE\n"));
3515
+ pm8001_dbg(pm8001_ha, MSG,
3516
+ "DEVREG_FAILURE_PORT_NOT_VALID_STATE\n");
36093517 break;
36103518 case DEVREG_FAILURE_DEVICE_TYPE_NOT_VALID:
3611
- PM8001_MSG_DBG(pm8001_ha,
3612
- pm8001_printk("DEVREG_FAILURE_DEVICE_TYPE_NOT_VALID\n"));
3519
+ pm8001_dbg(pm8001_ha, MSG,
3520
+ "DEVREG_FAILURE_DEVICE_TYPE_NOT_VALID\n");
36133521 break;
36143522 default:
3615
- PM8001_MSG_DBG(pm8001_ha,
3616
- pm8001_printk("DEVREG_FAILURE_DEVICE_TYPE_NOT_SUPPORTED\n"));
3523
+ pm8001_dbg(pm8001_ha, MSG,
3524
+ "DEVREG_FAILURE_DEVICE_TYPE_NOT_SUPPORTED\n");
36173525 break;
36183526 }
36193527 complete(pm8001_dev->dcompletion);
....@@ -3633,9 +3541,9 @@
36333541 status = le32_to_cpu(registerRespPayload->status);
36343542 device_id = le32_to_cpu(registerRespPayload->device_id);
36353543 if (status != 0)
3636
- PM8001_MSG_DBG(pm8001_ha,
3637
- pm8001_printk(" deregister device failed ,status = %x"
3638
- ", device_id = %x\n", status, device_id));
3544
+ pm8001_dbg(pm8001_ha, MSG,
3545
+ " deregister device failed ,status = %x, device_id = %x\n",
3546
+ status, device_id);
36393547 return 0;
36403548 }
36413549
....@@ -3655,44 +3563,37 @@
36553563 status = le32_to_cpu(ppayload->status);
36563564 switch (status) {
36573565 case FLASH_UPDATE_COMPLETE_PENDING_REBOOT:
3658
- PM8001_MSG_DBG(pm8001_ha,
3659
- pm8001_printk(": FLASH_UPDATE_COMPLETE_PENDING_REBOOT\n"));
3566
+ pm8001_dbg(pm8001_ha, MSG,
3567
+ ": FLASH_UPDATE_COMPLETE_PENDING_REBOOT\n");
36603568 break;
36613569 case FLASH_UPDATE_IN_PROGRESS:
3662
- PM8001_MSG_DBG(pm8001_ha,
3663
- pm8001_printk(": FLASH_UPDATE_IN_PROGRESS\n"));
3570
+ pm8001_dbg(pm8001_ha, MSG, ": FLASH_UPDATE_IN_PROGRESS\n");
36643571 break;
36653572 case FLASH_UPDATE_HDR_ERR:
3666
- PM8001_MSG_DBG(pm8001_ha,
3667
- pm8001_printk(": FLASH_UPDATE_HDR_ERR\n"));
3573
+ pm8001_dbg(pm8001_ha, MSG, ": FLASH_UPDATE_HDR_ERR\n");
36683574 break;
36693575 case FLASH_UPDATE_OFFSET_ERR:
3670
- PM8001_MSG_DBG(pm8001_ha,
3671
- pm8001_printk(": FLASH_UPDATE_OFFSET_ERR\n"));
3576
+ pm8001_dbg(pm8001_ha, MSG, ": FLASH_UPDATE_OFFSET_ERR\n");
36723577 break;
36733578 case FLASH_UPDATE_CRC_ERR:
3674
- PM8001_MSG_DBG(pm8001_ha,
3675
- pm8001_printk(": FLASH_UPDATE_CRC_ERR\n"));
3579
+ pm8001_dbg(pm8001_ha, MSG, ": FLASH_UPDATE_CRC_ERR\n");
36763580 break;
36773581 case FLASH_UPDATE_LENGTH_ERR:
3678
- PM8001_MSG_DBG(pm8001_ha,
3679
- pm8001_printk(": FLASH_UPDATE_LENGTH_ERR\n"));
3582
+ pm8001_dbg(pm8001_ha, MSG, ": FLASH_UPDATE_LENGTH_ERR\n");
36803583 break;
36813584 case FLASH_UPDATE_HW_ERR:
3682
- PM8001_MSG_DBG(pm8001_ha,
3683
- pm8001_printk(": FLASH_UPDATE_HW_ERR\n"));
3585
+ pm8001_dbg(pm8001_ha, MSG, ": FLASH_UPDATE_HW_ERR\n");
36843586 break;
36853587 case FLASH_UPDATE_DNLD_NOT_SUPPORTED:
3686
- PM8001_MSG_DBG(pm8001_ha,
3687
- pm8001_printk(": FLASH_UPDATE_DNLD_NOT_SUPPORTED\n"));
3588
+ pm8001_dbg(pm8001_ha, MSG,
3589
+ ": FLASH_UPDATE_DNLD_NOT_SUPPORTED\n");
36883590 break;
36893591 case FLASH_UPDATE_DISABLED:
3690
- PM8001_MSG_DBG(pm8001_ha,
3691
- pm8001_printk(": FLASH_UPDATE_DISABLED\n"));
3592
+ pm8001_dbg(pm8001_ha, MSG, ": FLASH_UPDATE_DISABLED\n");
36923593 break;
36933594 default:
3694
- PM8001_MSG_DBG(pm8001_ha,
3695
- pm8001_printk("No matched status = %d\n", status));
3595
+ pm8001_dbg(pm8001_ha, DEVIO, "No matched status = %d\n",
3596
+ status);
36963597 break;
36973598 }
36983599 kfree(ccb->fw_control_context);
....@@ -3710,12 +3611,11 @@
37103611 struct general_event_resp *pPayload =
37113612 (struct general_event_resp *)(piomb + 4);
37123613 status = le32_to_cpu(pPayload->status);
3713
- PM8001_MSG_DBG(pm8001_ha,
3714
- pm8001_printk(" status = 0x%x\n", status));
3614
+ pm8001_dbg(pm8001_ha, MSG, " status = 0x%x\n", status);
37153615 for (i = 0; i < GENERAL_EVENT_PAYLOAD; i++)
3716
- PM8001_MSG_DBG(pm8001_ha,
3717
- pm8001_printk("inb_IOMB_payload[0x%x] 0x%x,\n", i,
3718
- pPayload->inb_IOMB_payload[i]));
3616
+ pm8001_dbg(pm8001_ha, MSG, "inb_IOMB_payload[0x%x] 0x%x,\n",
3617
+ i,
3618
+ pPayload->inb_IOMB_payload[i]);
37193619 return 0;
37203620 }
37213621
....@@ -3735,8 +3635,7 @@
37353635 status = le32_to_cpu(pPayload->status);
37363636 tag = le32_to_cpu(pPayload->tag);
37373637 if (!tag) {
3738
- PM8001_FAIL_DBG(pm8001_ha,
3739
- pm8001_printk(" TAG NULL. RETURNING !!!"));
3638
+ pm8001_dbg(pm8001_ha, FAIL, " TAG NULL. RETURNING !!!\n");
37403639 return -1;
37413640 }
37423641
....@@ -3746,23 +3645,21 @@
37463645 pm8001_dev = ccb->device; /* retrieve device */
37473646
37483647 if (!t) {
3749
- PM8001_FAIL_DBG(pm8001_ha,
3750
- pm8001_printk(" TASK NULL. RETURNING !!!"));
3648
+ pm8001_dbg(pm8001_ha, FAIL, " TASK NULL. RETURNING !!!\n");
37513649 return -1;
37523650 }
37533651 ts = &t->task_status;
37543652 if (status != 0)
3755
- PM8001_FAIL_DBG(pm8001_ha,
3756
- pm8001_printk("task abort failed status 0x%x ,"
3757
- "tag = 0x%x, scp= 0x%x\n", status, tag, scp));
3653
+ pm8001_dbg(pm8001_ha, FAIL, "task abort failed status 0x%x ,tag = 0x%x, scp= 0x%x\n",
3654
+ status, tag, scp);
37583655 switch (status) {
37593656 case IO_SUCCESS:
3760
- PM8001_EH_DBG(pm8001_ha, pm8001_printk("IO_SUCCESS\n"));
3657
+ pm8001_dbg(pm8001_ha, EH, "IO_SUCCESS\n");
37613658 ts->resp = SAS_TASK_COMPLETE;
37623659 ts->stat = SAM_STAT_GOOD;
37633660 break;
37643661 case IO_NOT_VALID:
3765
- PM8001_EH_DBG(pm8001_ha, pm8001_printk("IO_NOT_VALID\n"));
3662
+ pm8001_dbg(pm8001_ha, EH, "IO_NOT_VALID\n");
37663663 ts->resp = TMF_RESP_FUNC_FAILED;
37673664 break;
37683665 }
....@@ -3775,12 +3672,11 @@
37753672 mb();
37763673
37773674 if (pm8001_dev->id & NCQ_ABORT_ALL_FLAG) {
3778
- pm8001_tag_free(pm8001_ha, tag);
37793675 sas_free_task(t);
3780
- /* clear the flag */
3781
- pm8001_dev->id &= 0xBFFFFFFF;
3782
- } else
3676
+ pm8001_dev->id &= ~NCQ_ABORT_ALL_FLAG;
3677
+ } else {
37833678 t->task_done(t);
3679
+ }
37843680
37853681 return 0;
37863682 }
....@@ -3807,192 +3703,177 @@
38073703 struct sas_ha_struct *sas_ha = pm8001_ha->sas;
38083704 struct pm8001_phy *phy = &pm8001_ha->phy[phy_id];
38093705 struct asd_sas_phy *sas_phy = sas_ha->sas_phy[phy_id];
3810
- PM8001_MSG_DBG(pm8001_ha,
3811
- pm8001_printk("outbound queue HW event & event type : "));
3706
+ pm8001_dbg(pm8001_ha, DEVIO,
3707
+ "SPC HW event for portid:%d, phyid:%d, event:%x, status:%x\n",
3708
+ port_id, phy_id, eventType, status);
38123709 switch (eventType) {
38133710 case HW_EVENT_PHY_START_STATUS:
3814
- PM8001_MSG_DBG(pm8001_ha,
3815
- pm8001_printk("HW_EVENT_PHY_START_STATUS"
3816
- " status = %x\n", status));
3817
- if (status == 0) {
3711
+ pm8001_dbg(pm8001_ha, MSG, "HW_EVENT_PHY_START_STATUS status = %x\n",
3712
+ status);
3713
+ if (status == 0)
38183714 phy->phy_state = 1;
3819
- if (pm8001_ha->flags == PM8001F_RUN_TIME)
3820
- complete(phy->enable_completion);
3715
+
3716
+ if (pm8001_ha->flags == PM8001F_RUN_TIME &&
3717
+ phy->enable_completion != NULL) {
3718
+ complete(phy->enable_completion);
3719
+ phy->enable_completion = NULL;
38213720 }
38223721 break;
38233722 case HW_EVENT_SAS_PHY_UP:
3824
- PM8001_MSG_DBG(pm8001_ha,
3825
- pm8001_printk("HW_EVENT_PHY_START_STATUS\n"));
3723
+ pm8001_dbg(pm8001_ha, MSG, "HW_EVENT_PHY_START_STATUS\n");
38263724 hw_event_sas_phy_up(pm8001_ha, piomb);
38273725 break;
38283726 case HW_EVENT_SATA_PHY_UP:
3829
- PM8001_MSG_DBG(pm8001_ha,
3830
- pm8001_printk("HW_EVENT_SATA_PHY_UP\n"));
3727
+ pm8001_dbg(pm8001_ha, MSG, "HW_EVENT_SATA_PHY_UP\n");
38313728 hw_event_sata_phy_up(pm8001_ha, piomb);
38323729 break;
38333730 case HW_EVENT_PHY_STOP_STATUS:
3834
- PM8001_MSG_DBG(pm8001_ha,
3835
- pm8001_printk("HW_EVENT_PHY_STOP_STATUS "
3836
- "status = %x\n", status));
3731
+ pm8001_dbg(pm8001_ha, MSG, "HW_EVENT_PHY_STOP_STATUS status = %x\n",
3732
+ status);
38373733 if (status == 0)
38383734 phy->phy_state = 0;
38393735 break;
38403736 case HW_EVENT_SATA_SPINUP_HOLD:
3841
- PM8001_MSG_DBG(pm8001_ha,
3842
- pm8001_printk("HW_EVENT_SATA_SPINUP_HOLD\n"));
3843
- sas_ha->notify_phy_event(&phy->sas_phy, PHYE_SPINUP_HOLD);
3737
+ pm8001_dbg(pm8001_ha, MSG, "HW_EVENT_SATA_SPINUP_HOLD\n");
3738
+ sas_notify_phy_event(&phy->sas_phy, PHYE_SPINUP_HOLD);
38443739 break;
38453740 case HW_EVENT_PHY_DOWN:
3846
- PM8001_MSG_DBG(pm8001_ha,
3847
- pm8001_printk("HW_EVENT_PHY_DOWN\n"));
3848
- sas_ha->notify_phy_event(&phy->sas_phy, PHYE_LOSS_OF_SIGNAL);
3741
+ pm8001_dbg(pm8001_ha, MSG, "HW_EVENT_PHY_DOWN\n");
3742
+ sas_notify_phy_event(&phy->sas_phy, PHYE_LOSS_OF_SIGNAL);
38493743 phy->phy_attached = 0;
38503744 phy->phy_state = 0;
38513745 hw_event_phy_down(pm8001_ha, piomb);
38523746 break;
38533747 case HW_EVENT_PORT_INVALID:
3854
- PM8001_MSG_DBG(pm8001_ha,
3855
- pm8001_printk("HW_EVENT_PORT_INVALID\n"));
3748
+ pm8001_dbg(pm8001_ha, MSG, "HW_EVENT_PORT_INVALID\n");
38563749 sas_phy_disconnected(sas_phy);
38573750 phy->phy_attached = 0;
3858
- sas_ha->notify_port_event(sas_phy, PORTE_LINK_RESET_ERR);
3751
+ sas_notify_port_event(sas_phy, PORTE_LINK_RESET_ERR);
38593752 break;
38603753 /* the broadcast change primitive received, tell the LIBSAS this event
38613754 to revalidate the sas domain*/
38623755 case HW_EVENT_BROADCAST_CHANGE:
3863
- PM8001_MSG_DBG(pm8001_ha,
3864
- pm8001_printk("HW_EVENT_BROADCAST_CHANGE\n"));
3756
+ pm8001_dbg(pm8001_ha, MSG, "HW_EVENT_BROADCAST_CHANGE\n");
38653757 pm8001_hw_event_ack_req(pm8001_ha, 0, HW_EVENT_BROADCAST_CHANGE,
38663758 port_id, phy_id, 1, 0);
38673759 spin_lock_irqsave(&sas_phy->sas_prim_lock, flags);
38683760 sas_phy->sas_prim = HW_EVENT_BROADCAST_CHANGE;
38693761 spin_unlock_irqrestore(&sas_phy->sas_prim_lock, flags);
3870
- sas_ha->notify_port_event(sas_phy, PORTE_BROADCAST_RCVD);
3762
+ sas_notify_port_event(sas_phy, PORTE_BROADCAST_RCVD);
38713763 break;
38723764 case HW_EVENT_PHY_ERROR:
3873
- PM8001_MSG_DBG(pm8001_ha,
3874
- pm8001_printk("HW_EVENT_PHY_ERROR\n"));
3765
+ pm8001_dbg(pm8001_ha, MSG, "HW_EVENT_PHY_ERROR\n");
38753766 sas_phy_disconnected(&phy->sas_phy);
38763767 phy->phy_attached = 0;
3877
- sas_ha->notify_phy_event(&phy->sas_phy, PHYE_OOB_ERROR);
3768
+ sas_notify_phy_event(&phy->sas_phy, PHYE_OOB_ERROR);
38783769 break;
38793770 case HW_EVENT_BROADCAST_EXP:
3880
- PM8001_MSG_DBG(pm8001_ha,
3881
- pm8001_printk("HW_EVENT_BROADCAST_EXP\n"));
3771
+ pm8001_dbg(pm8001_ha, MSG, "HW_EVENT_BROADCAST_EXP\n");
38823772 spin_lock_irqsave(&sas_phy->sas_prim_lock, flags);
38833773 sas_phy->sas_prim = HW_EVENT_BROADCAST_EXP;
38843774 spin_unlock_irqrestore(&sas_phy->sas_prim_lock, flags);
3885
- sas_ha->notify_port_event(sas_phy, PORTE_BROADCAST_RCVD);
3775
+ sas_notify_port_event(sas_phy, PORTE_BROADCAST_RCVD);
38863776 break;
38873777 case HW_EVENT_LINK_ERR_INVALID_DWORD:
3888
- PM8001_MSG_DBG(pm8001_ha,
3889
- pm8001_printk("HW_EVENT_LINK_ERR_INVALID_DWORD\n"));
3778
+ pm8001_dbg(pm8001_ha, MSG,
3779
+ "HW_EVENT_LINK_ERR_INVALID_DWORD\n");
38903780 pm8001_hw_event_ack_req(pm8001_ha, 0,
38913781 HW_EVENT_LINK_ERR_INVALID_DWORD, port_id, phy_id, 0, 0);
38923782 sas_phy_disconnected(sas_phy);
38933783 phy->phy_attached = 0;
3894
- sas_ha->notify_port_event(sas_phy, PORTE_LINK_RESET_ERR);
3784
+ sas_notify_port_event(sas_phy, PORTE_LINK_RESET_ERR);
38953785 break;
38963786 case HW_EVENT_LINK_ERR_DISPARITY_ERROR:
3897
- PM8001_MSG_DBG(pm8001_ha,
3898
- pm8001_printk("HW_EVENT_LINK_ERR_DISPARITY_ERROR\n"));
3787
+ pm8001_dbg(pm8001_ha, MSG,
3788
+ "HW_EVENT_LINK_ERR_DISPARITY_ERROR\n");
38993789 pm8001_hw_event_ack_req(pm8001_ha, 0,
39003790 HW_EVENT_LINK_ERR_DISPARITY_ERROR,
39013791 port_id, phy_id, 0, 0);
39023792 sas_phy_disconnected(sas_phy);
39033793 phy->phy_attached = 0;
3904
- sas_ha->notify_port_event(sas_phy, PORTE_LINK_RESET_ERR);
3794
+ sas_notify_port_event(sas_phy, PORTE_LINK_RESET_ERR);
39053795 break;
39063796 case HW_EVENT_LINK_ERR_CODE_VIOLATION:
3907
- PM8001_MSG_DBG(pm8001_ha,
3908
- pm8001_printk("HW_EVENT_LINK_ERR_CODE_VIOLATION\n"));
3797
+ pm8001_dbg(pm8001_ha, MSG,
3798
+ "HW_EVENT_LINK_ERR_CODE_VIOLATION\n");
39093799 pm8001_hw_event_ack_req(pm8001_ha, 0,
39103800 HW_EVENT_LINK_ERR_CODE_VIOLATION,
39113801 port_id, phy_id, 0, 0);
39123802 sas_phy_disconnected(sas_phy);
39133803 phy->phy_attached = 0;
3914
- sas_ha->notify_port_event(sas_phy, PORTE_LINK_RESET_ERR);
3804
+ sas_notify_port_event(sas_phy, PORTE_LINK_RESET_ERR);
39153805 break;
39163806 case HW_EVENT_LINK_ERR_LOSS_OF_DWORD_SYNCH:
3917
- PM8001_MSG_DBG(pm8001_ha,
3918
- pm8001_printk("HW_EVENT_LINK_ERR_LOSS_OF_DWORD_SYNCH\n"));
3807
+ pm8001_dbg(pm8001_ha, MSG,
3808
+ "HW_EVENT_LINK_ERR_LOSS_OF_DWORD_SYNCH\n");
39193809 pm8001_hw_event_ack_req(pm8001_ha, 0,
39203810 HW_EVENT_LINK_ERR_LOSS_OF_DWORD_SYNCH,
39213811 port_id, phy_id, 0, 0);
39223812 sas_phy_disconnected(sas_phy);
39233813 phy->phy_attached = 0;
3924
- sas_ha->notify_port_event(sas_phy, PORTE_LINK_RESET_ERR);
3814
+ sas_notify_port_event(sas_phy, PORTE_LINK_RESET_ERR);
39253815 break;
39263816 case HW_EVENT_MALFUNCTION:
3927
- PM8001_MSG_DBG(pm8001_ha,
3928
- pm8001_printk("HW_EVENT_MALFUNCTION\n"));
3817
+ pm8001_dbg(pm8001_ha, MSG, "HW_EVENT_MALFUNCTION\n");
39293818 break;
39303819 case HW_EVENT_BROADCAST_SES:
3931
- PM8001_MSG_DBG(pm8001_ha,
3932
- pm8001_printk("HW_EVENT_BROADCAST_SES\n"));
3820
+ pm8001_dbg(pm8001_ha, MSG, "HW_EVENT_BROADCAST_SES\n");
39333821 spin_lock_irqsave(&sas_phy->sas_prim_lock, flags);
39343822 sas_phy->sas_prim = HW_EVENT_BROADCAST_SES;
39353823 spin_unlock_irqrestore(&sas_phy->sas_prim_lock, flags);
3936
- sas_ha->notify_port_event(sas_phy, PORTE_BROADCAST_RCVD);
3824
+ sas_notify_port_event(sas_phy, PORTE_BROADCAST_RCVD);
39373825 break;
39383826 case HW_EVENT_INBOUND_CRC_ERROR:
3939
- PM8001_MSG_DBG(pm8001_ha,
3940
- pm8001_printk("HW_EVENT_INBOUND_CRC_ERROR\n"));
3827
+ pm8001_dbg(pm8001_ha, MSG, "HW_EVENT_INBOUND_CRC_ERROR\n");
39413828 pm8001_hw_event_ack_req(pm8001_ha, 0,
39423829 HW_EVENT_INBOUND_CRC_ERROR,
39433830 port_id, phy_id, 0, 0);
39443831 break;
39453832 case HW_EVENT_HARD_RESET_RECEIVED:
3946
- PM8001_MSG_DBG(pm8001_ha,
3947
- pm8001_printk("HW_EVENT_HARD_RESET_RECEIVED\n"));
3948
- sas_ha->notify_port_event(sas_phy, PORTE_HARD_RESET);
3833
+ pm8001_dbg(pm8001_ha, MSG, "HW_EVENT_HARD_RESET_RECEIVED\n");
3834
+ sas_notify_port_event(sas_phy, PORTE_HARD_RESET);
39493835 break;
39503836 case HW_EVENT_ID_FRAME_TIMEOUT:
3951
- PM8001_MSG_DBG(pm8001_ha,
3952
- pm8001_printk("HW_EVENT_ID_FRAME_TIMEOUT\n"));
3837
+ pm8001_dbg(pm8001_ha, MSG, "HW_EVENT_ID_FRAME_TIMEOUT\n");
39533838 sas_phy_disconnected(sas_phy);
39543839 phy->phy_attached = 0;
3955
- sas_ha->notify_port_event(sas_phy, PORTE_LINK_RESET_ERR);
3840
+ sas_notify_port_event(sas_phy, PORTE_LINK_RESET_ERR);
39563841 break;
39573842 case HW_EVENT_LINK_ERR_PHY_RESET_FAILED:
3958
- PM8001_MSG_DBG(pm8001_ha,
3959
- pm8001_printk("HW_EVENT_LINK_ERR_PHY_RESET_FAILED\n"));
3843
+ pm8001_dbg(pm8001_ha, MSG,
3844
+ "HW_EVENT_LINK_ERR_PHY_RESET_FAILED\n");
39603845 pm8001_hw_event_ack_req(pm8001_ha, 0,
39613846 HW_EVENT_LINK_ERR_PHY_RESET_FAILED,
39623847 port_id, phy_id, 0, 0);
39633848 sas_phy_disconnected(sas_phy);
39643849 phy->phy_attached = 0;
3965
- sas_ha->notify_port_event(sas_phy, PORTE_LINK_RESET_ERR);
3850
+ sas_notify_port_event(sas_phy, PORTE_LINK_RESET_ERR);
39663851 break;
39673852 case HW_EVENT_PORT_RESET_TIMER_TMO:
3968
- PM8001_MSG_DBG(pm8001_ha,
3969
- pm8001_printk("HW_EVENT_PORT_RESET_TIMER_TMO\n"));
3853
+ pm8001_dbg(pm8001_ha, MSG, "HW_EVENT_PORT_RESET_TIMER_TMO\n");
39703854 sas_phy_disconnected(sas_phy);
39713855 phy->phy_attached = 0;
3972
- sas_ha->notify_port_event(sas_phy, PORTE_LINK_RESET_ERR);
3856
+ sas_notify_port_event(sas_phy, PORTE_LINK_RESET_ERR);
39733857 break;
39743858 case HW_EVENT_PORT_RECOVERY_TIMER_TMO:
3975
- PM8001_MSG_DBG(pm8001_ha,
3976
- pm8001_printk("HW_EVENT_PORT_RECOVERY_TIMER_TMO\n"));
3859
+ pm8001_dbg(pm8001_ha, MSG,
3860
+ "HW_EVENT_PORT_RECOVERY_TIMER_TMO\n");
39773861 sas_phy_disconnected(sas_phy);
39783862 phy->phy_attached = 0;
3979
- sas_ha->notify_port_event(sas_phy, PORTE_LINK_RESET_ERR);
3863
+ sas_notify_port_event(sas_phy, PORTE_LINK_RESET_ERR);
39803864 break;
39813865 case HW_EVENT_PORT_RECOVER:
3982
- PM8001_MSG_DBG(pm8001_ha,
3983
- pm8001_printk("HW_EVENT_PORT_RECOVER\n"));
3866
+ pm8001_dbg(pm8001_ha, MSG, "HW_EVENT_PORT_RECOVER\n");
39843867 break;
39853868 case HW_EVENT_PORT_RESET_COMPLETE:
3986
- PM8001_MSG_DBG(pm8001_ha,
3987
- pm8001_printk("HW_EVENT_PORT_RESET_COMPLETE\n"));
3869
+ pm8001_dbg(pm8001_ha, MSG, "HW_EVENT_PORT_RESET_COMPLETE\n");
39883870 break;
39893871 case EVENT_BROADCAST_ASYNCH_EVENT:
3990
- PM8001_MSG_DBG(pm8001_ha,
3991
- pm8001_printk("EVENT_BROADCAST_ASYNCH_EVENT\n"));
3872
+ pm8001_dbg(pm8001_ha, MSG, "EVENT_BROADCAST_ASYNCH_EVENT\n");
39923873 break;
39933874 default:
3994
- PM8001_MSG_DBG(pm8001_ha,
3995
- pm8001_printk("Unknown event type = %x\n", eventType));
3875
+ pm8001_dbg(pm8001_ha, DEVIO, "Unknown event type = %x\n",
3876
+ eventType);
39963877 break;
39973878 }
39983879 return 0;
....@@ -4008,163 +3889,132 @@
40083889 __le32 pHeader = *(__le32 *)piomb;
40093890 u8 opc = (u8)((le32_to_cpu(pHeader)) & 0xFFF);
40103891
4011
- PM8001_MSG_DBG(pm8001_ha, pm8001_printk("process_one_iomb:"));
3892
+ pm8001_dbg(pm8001_ha, MSG, "process_one_iomb:\n");
40123893
40133894 switch (opc) {
40143895 case OPC_OUB_ECHO:
4015
- PM8001_MSG_DBG(pm8001_ha, pm8001_printk("OPC_OUB_ECHO\n"));
3896
+ pm8001_dbg(pm8001_ha, MSG, "OPC_OUB_ECHO\n");
40163897 break;
40173898 case OPC_OUB_HW_EVENT:
4018
- PM8001_MSG_DBG(pm8001_ha,
4019
- pm8001_printk("OPC_OUB_HW_EVENT\n"));
3899
+ pm8001_dbg(pm8001_ha, MSG, "OPC_OUB_HW_EVENT\n");
40203900 mpi_hw_event(pm8001_ha, piomb);
40213901 break;
40223902 case OPC_OUB_SSP_COMP:
4023
- PM8001_MSG_DBG(pm8001_ha,
4024
- pm8001_printk("OPC_OUB_SSP_COMP\n"));
3903
+ pm8001_dbg(pm8001_ha, MSG, "OPC_OUB_SSP_COMP\n");
40253904 mpi_ssp_completion(pm8001_ha, piomb);
40263905 break;
40273906 case OPC_OUB_SMP_COMP:
4028
- PM8001_MSG_DBG(pm8001_ha,
4029
- pm8001_printk("OPC_OUB_SMP_COMP\n"));
3907
+ pm8001_dbg(pm8001_ha, MSG, "OPC_OUB_SMP_COMP\n");
40303908 mpi_smp_completion(pm8001_ha, piomb);
40313909 break;
40323910 case OPC_OUB_LOCAL_PHY_CNTRL:
4033
- PM8001_MSG_DBG(pm8001_ha,
4034
- pm8001_printk("OPC_OUB_LOCAL_PHY_CNTRL\n"));
3911
+ pm8001_dbg(pm8001_ha, MSG, "OPC_OUB_LOCAL_PHY_CNTRL\n");
40353912 pm8001_mpi_local_phy_ctl(pm8001_ha, piomb);
40363913 break;
40373914 case OPC_OUB_DEV_REGIST:
4038
- PM8001_MSG_DBG(pm8001_ha,
4039
- pm8001_printk("OPC_OUB_DEV_REGIST\n"));
3915
+ pm8001_dbg(pm8001_ha, MSG, "OPC_OUB_DEV_REGIST\n");
40403916 pm8001_mpi_reg_resp(pm8001_ha, piomb);
40413917 break;
40423918 case OPC_OUB_DEREG_DEV:
4043
- PM8001_MSG_DBG(pm8001_ha,
4044
- pm8001_printk("unregister the device\n"));
3919
+ pm8001_dbg(pm8001_ha, MSG, "unregister the device\n");
40453920 pm8001_mpi_dereg_resp(pm8001_ha, piomb);
40463921 break;
40473922 case OPC_OUB_GET_DEV_HANDLE:
4048
- PM8001_MSG_DBG(pm8001_ha,
4049
- pm8001_printk("OPC_OUB_GET_DEV_HANDLE\n"));
3923
+ pm8001_dbg(pm8001_ha, MSG, "OPC_OUB_GET_DEV_HANDLE\n");
40503924 break;
40513925 case OPC_OUB_SATA_COMP:
4052
- PM8001_MSG_DBG(pm8001_ha,
4053
- pm8001_printk("OPC_OUB_SATA_COMP\n"));
3926
+ pm8001_dbg(pm8001_ha, MSG, "OPC_OUB_SATA_COMP\n");
40543927 mpi_sata_completion(pm8001_ha, piomb);
40553928 break;
40563929 case OPC_OUB_SATA_EVENT:
4057
- PM8001_MSG_DBG(pm8001_ha,
4058
- pm8001_printk("OPC_OUB_SATA_EVENT\n"));
3930
+ pm8001_dbg(pm8001_ha, MSG, "OPC_OUB_SATA_EVENT\n");
40593931 mpi_sata_event(pm8001_ha, piomb);
40603932 break;
40613933 case OPC_OUB_SSP_EVENT:
4062
- PM8001_MSG_DBG(pm8001_ha,
4063
- pm8001_printk("OPC_OUB_SSP_EVENT\n"));
3934
+ pm8001_dbg(pm8001_ha, MSG, "OPC_OUB_SSP_EVENT\n");
40643935 mpi_ssp_event(pm8001_ha, piomb);
40653936 break;
40663937 case OPC_OUB_DEV_HANDLE_ARRIV:
4067
- PM8001_MSG_DBG(pm8001_ha,
4068
- pm8001_printk("OPC_OUB_DEV_HANDLE_ARRIV\n"));
3938
+ pm8001_dbg(pm8001_ha, MSG, "OPC_OUB_DEV_HANDLE_ARRIV\n");
40693939 /*This is for target*/
40703940 break;
40713941 case OPC_OUB_SSP_RECV_EVENT:
4072
- PM8001_MSG_DBG(pm8001_ha,
4073
- pm8001_printk("OPC_OUB_SSP_RECV_EVENT\n"));
3942
+ pm8001_dbg(pm8001_ha, MSG, "OPC_OUB_SSP_RECV_EVENT\n");
40743943 /*This is for target*/
40753944 break;
40763945 case OPC_OUB_DEV_INFO:
4077
- PM8001_MSG_DBG(pm8001_ha,
4078
- pm8001_printk("OPC_OUB_DEV_INFO\n"));
3946
+ pm8001_dbg(pm8001_ha, MSG, "OPC_OUB_DEV_INFO\n");
40793947 break;
40803948 case OPC_OUB_FW_FLASH_UPDATE:
4081
- PM8001_MSG_DBG(pm8001_ha,
4082
- pm8001_printk("OPC_OUB_FW_FLASH_UPDATE\n"));
3949
+ pm8001_dbg(pm8001_ha, MSG, "OPC_OUB_FW_FLASH_UPDATE\n");
40833950 pm8001_mpi_fw_flash_update_resp(pm8001_ha, piomb);
40843951 break;
40853952 case OPC_OUB_GPIO_RESPONSE:
4086
- PM8001_MSG_DBG(pm8001_ha,
4087
- pm8001_printk("OPC_OUB_GPIO_RESPONSE\n"));
3953
+ pm8001_dbg(pm8001_ha, MSG, "OPC_OUB_GPIO_RESPONSE\n");
40883954 break;
40893955 case OPC_OUB_GPIO_EVENT:
4090
- PM8001_MSG_DBG(pm8001_ha,
4091
- pm8001_printk("OPC_OUB_GPIO_EVENT\n"));
3956
+ pm8001_dbg(pm8001_ha, MSG, "OPC_OUB_GPIO_EVENT\n");
40923957 break;
40933958 case OPC_OUB_GENERAL_EVENT:
4094
- PM8001_MSG_DBG(pm8001_ha,
4095
- pm8001_printk("OPC_OUB_GENERAL_EVENT\n"));
3959
+ pm8001_dbg(pm8001_ha, MSG, "OPC_OUB_GENERAL_EVENT\n");
40963960 pm8001_mpi_general_event(pm8001_ha, piomb);
40973961 break;
40983962 case OPC_OUB_SSP_ABORT_RSP:
4099
- PM8001_MSG_DBG(pm8001_ha,
4100
- pm8001_printk("OPC_OUB_SSP_ABORT_RSP\n"));
3963
+ pm8001_dbg(pm8001_ha, MSG, "OPC_OUB_SSP_ABORT_RSP\n");
41013964 pm8001_mpi_task_abort_resp(pm8001_ha, piomb);
41023965 break;
41033966 case OPC_OUB_SATA_ABORT_RSP:
4104
- PM8001_MSG_DBG(pm8001_ha,
4105
- pm8001_printk("OPC_OUB_SATA_ABORT_RSP\n"));
3967
+ pm8001_dbg(pm8001_ha, MSG, "OPC_OUB_SATA_ABORT_RSP\n");
41063968 pm8001_mpi_task_abort_resp(pm8001_ha, piomb);
41073969 break;
41083970 case OPC_OUB_SAS_DIAG_MODE_START_END:
4109
- PM8001_MSG_DBG(pm8001_ha,
4110
- pm8001_printk("OPC_OUB_SAS_DIAG_MODE_START_END\n"));
3971
+ pm8001_dbg(pm8001_ha, MSG,
3972
+ "OPC_OUB_SAS_DIAG_MODE_START_END\n");
41113973 break;
41123974 case OPC_OUB_SAS_DIAG_EXECUTE:
4113
- PM8001_MSG_DBG(pm8001_ha,
4114
- pm8001_printk("OPC_OUB_SAS_DIAG_EXECUTE\n"));
3975
+ pm8001_dbg(pm8001_ha, MSG, "OPC_OUB_SAS_DIAG_EXECUTE\n");
41153976 break;
41163977 case OPC_OUB_GET_TIME_STAMP:
4117
- PM8001_MSG_DBG(pm8001_ha,
4118
- pm8001_printk("OPC_OUB_GET_TIME_STAMP\n"));
3978
+ pm8001_dbg(pm8001_ha, MSG, "OPC_OUB_GET_TIME_STAMP\n");
41193979 break;
41203980 case OPC_OUB_SAS_HW_EVENT_ACK:
4121
- PM8001_MSG_DBG(pm8001_ha,
4122
- pm8001_printk("OPC_OUB_SAS_HW_EVENT_ACK\n"));
3981
+ pm8001_dbg(pm8001_ha, MSG, "OPC_OUB_SAS_HW_EVENT_ACK\n");
41233982 break;
41243983 case OPC_OUB_PORT_CONTROL:
4125
- PM8001_MSG_DBG(pm8001_ha,
4126
- pm8001_printk("OPC_OUB_PORT_CONTROL\n"));
3984
+ pm8001_dbg(pm8001_ha, MSG, "OPC_OUB_PORT_CONTROL\n");
41273985 break;
41283986 case OPC_OUB_SMP_ABORT_RSP:
4129
- PM8001_MSG_DBG(pm8001_ha,
4130
- pm8001_printk("OPC_OUB_SMP_ABORT_RSP\n"));
3987
+ pm8001_dbg(pm8001_ha, MSG, "OPC_OUB_SMP_ABORT_RSP\n");
41313988 pm8001_mpi_task_abort_resp(pm8001_ha, piomb);
41323989 break;
41333990 case OPC_OUB_GET_NVMD_DATA:
4134
- PM8001_MSG_DBG(pm8001_ha,
4135
- pm8001_printk("OPC_OUB_GET_NVMD_DATA\n"));
3991
+ pm8001_dbg(pm8001_ha, MSG, "OPC_OUB_GET_NVMD_DATA\n");
41363992 pm8001_mpi_get_nvmd_resp(pm8001_ha, piomb);
41373993 break;
41383994 case OPC_OUB_SET_NVMD_DATA:
4139
- PM8001_MSG_DBG(pm8001_ha,
4140
- pm8001_printk("OPC_OUB_SET_NVMD_DATA\n"));
3995
+ pm8001_dbg(pm8001_ha, MSG, "OPC_OUB_SET_NVMD_DATA\n");
41413996 pm8001_mpi_set_nvmd_resp(pm8001_ha, piomb);
41423997 break;
41433998 case OPC_OUB_DEVICE_HANDLE_REMOVAL:
4144
- PM8001_MSG_DBG(pm8001_ha,
4145
- pm8001_printk("OPC_OUB_DEVICE_HANDLE_REMOVAL\n"));
3999
+ pm8001_dbg(pm8001_ha, MSG, "OPC_OUB_DEVICE_HANDLE_REMOVAL\n");
41464000 break;
41474001 case OPC_OUB_SET_DEVICE_STATE:
4148
- PM8001_MSG_DBG(pm8001_ha,
4149
- pm8001_printk("OPC_OUB_SET_DEVICE_STATE\n"));
4002
+ pm8001_dbg(pm8001_ha, MSG, "OPC_OUB_SET_DEVICE_STATE\n");
41504003 pm8001_mpi_set_dev_state_resp(pm8001_ha, piomb);
41514004 break;
41524005 case OPC_OUB_GET_DEVICE_STATE:
4153
- PM8001_MSG_DBG(pm8001_ha,
4154
- pm8001_printk("OPC_OUB_GET_DEVICE_STATE\n"));
4006
+ pm8001_dbg(pm8001_ha, MSG, "OPC_OUB_GET_DEVICE_STATE\n");
41554007 break;
41564008 case OPC_OUB_SET_DEV_INFO:
4157
- PM8001_MSG_DBG(pm8001_ha,
4158
- pm8001_printk("OPC_OUB_SET_DEV_INFO\n"));
4009
+ pm8001_dbg(pm8001_ha, MSG, "OPC_OUB_SET_DEV_INFO\n");
41594010 break;
41604011 case OPC_OUB_SAS_RE_INITIALIZE:
4161
- PM8001_MSG_DBG(pm8001_ha,
4162
- pm8001_printk("OPC_OUB_SAS_RE_INITIALIZE\n"));
4012
+ pm8001_dbg(pm8001_ha, MSG, "OPC_OUB_SAS_RE_INITIALIZE\n");
41634013 break;
41644014 default:
4165
- PM8001_MSG_DBG(pm8001_ha,
4166
- pm8001_printk("Unknown outbound Queue IOMB OPC = %x\n",
4167
- opc));
4015
+ pm8001_dbg(pm8001_ha, DEVIO,
4016
+ "Unknown outbound Queue IOMB OPC = %x\n",
4017
+ opc);
41684018 break;
41694019 }
41704020 }
....@@ -4173,7 +4023,7 @@
41734023 {
41744024 struct outbound_queue_table *circularQ;
41754025 void *pMsg1 = NULL;
4176
- u8 uninitialized_var(bc);
4026
+ u8 bc;
41774027 u32 ret = MPI_IO_STATUS_FAIL;
41784028 unsigned long flags;
41794029
....@@ -4202,12 +4052,12 @@
42024052 return ret;
42034053 }
42044054
4205
-/* PCI_DMA_... to our direction translation. */
4055
+/* DMA_... to our direction translation. */
42064056 static const u8 data_dir_flags[] = {
4207
- [PCI_DMA_BIDIRECTIONAL] = DATA_DIR_BYRECIPIENT,/* UNSPECIFIED */
4208
- [PCI_DMA_TODEVICE] = DATA_DIR_OUT,/* OUTBOUND */
4209
- [PCI_DMA_FROMDEVICE] = DATA_DIR_IN,/* INBOUND */
4210
- [PCI_DMA_NONE] = DATA_DIR_NONE,/* NO TRANSFER */
4057
+ [DMA_BIDIRECTIONAL] = DATA_DIR_BYRECIPIENT, /* UNSPECIFIED */
4058
+ [DMA_TO_DEVICE] = DATA_DIR_OUT, /* OUTBOUND */
4059
+ [DMA_FROM_DEVICE] = DATA_DIR_IN, /* INBOUND */
4060
+ [DMA_NONE] = DATA_DIR_NONE, /* NO TRANSFER */
42114061 };
42124062 void
42134063 pm8001_chip_make_sg(struct scatterlist *scatter, int nr, void *prd)
....@@ -4254,13 +4104,13 @@
42544104 * DMA-map SMP request, response buffers
42554105 */
42564106 sg_req = &task->smp_task.smp_req;
4257
- elem = dma_map_sg(pm8001_ha->dev, sg_req, 1, PCI_DMA_TODEVICE);
4107
+ elem = dma_map_sg(pm8001_ha->dev, sg_req, 1, DMA_TO_DEVICE);
42584108 if (!elem)
42594109 return -ENOMEM;
42604110 req_len = sg_dma_len(sg_req);
42614111
42624112 sg_resp = &task->smp_task.smp_resp;
4263
- elem = dma_map_sg(pm8001_ha->dev, sg_resp, 1, PCI_DMA_FROMDEVICE);
4113
+ elem = dma_map_sg(pm8001_ha->dev, sg_resp, 1, DMA_FROM_DEVICE);
42644114 if (!elem) {
42654115 rc = -ENOMEM;
42664116 goto err_out;
....@@ -4285,7 +4135,7 @@
42854135 cpu_to_le32((u32)sg_dma_len(&task->smp_task.smp_resp)-4);
42864136 build_smp_cmd(pm8001_dev->device_id, smp_cmd.tag, &smp_cmd);
42874137 rc = pm8001_mpi_build_cmd(pm8001_ha, circularQ, opc,
4288
- (u32 *)&smp_cmd, 0);
4138
+ &smp_cmd, sizeof(smp_cmd), 0);
42894139 if (rc)
42904140 goto err_out_2;
42914141
....@@ -4293,10 +4143,10 @@
42934143
42944144 err_out_2:
42954145 dma_unmap_sg(pm8001_ha->dev, &ccb->task->smp_task.smp_resp, 1,
4296
- PCI_DMA_FROMDEVICE);
4146
+ DMA_FROM_DEVICE);
42974147 err_out:
42984148 dma_unmap_sg(pm8001_ha->dev, &ccb->task->smp_task.smp_req, 1,
4299
- PCI_DMA_TODEVICE);
4149
+ DMA_TO_DEVICE);
43004150 return rc;
43014151 }
43024152
....@@ -4336,8 +4186,7 @@
43364186 /* fill in PRD (scatter/gather) table, if any */
43374187 if (task->num_scatter > 1) {
43384188 pm8001_chip_make_sg(task->scatter, ccb->n_elem, ccb->buf_prd);
4339
- phys_addr = ccb->ccb_dma_handle +
4340
- offsetof(struct pm8001_ccb_info, buf_prd[0]);
4189
+ phys_addr = ccb->ccb_dma_handle;
43414190 ssp_cmd.addr_low = cpu_to_le32(lower_32_bits(phys_addr));
43424191 ssp_cmd.addr_high = cpu_to_le32(upper_32_bits(phys_addr));
43434192 ssp_cmd.esgl = cpu_to_le32(1<<31);
....@@ -4353,7 +4202,8 @@
43534202 ssp_cmd.len = cpu_to_le32(task->total_xfer_len);
43544203 ssp_cmd.esgl = 0;
43554204 }
4356
- ret = pm8001_mpi_build_cmd(pm8001_ha, circularQ, opc, &ssp_cmd, 0);
4205
+ ret = pm8001_mpi_build_cmd(pm8001_ha, circularQ, opc, &ssp_cmd,
4206
+ sizeof(ssp_cmd), 0);
43574207 return ret;
43584208 }
43594209
....@@ -4375,21 +4225,21 @@
43754225 u32 opc = OPC_INB_SATA_HOST_OPSTART;
43764226 memset(&sata_cmd, 0, sizeof(sata_cmd));
43774227 circularQ = &pm8001_ha->inbnd_q_tbl[0];
4378
- if (task->data_dir == PCI_DMA_NONE) {
4228
+
4229
+ if (task->data_dir == DMA_NONE && !task->ata_task.use_ncq) {
43794230 ATAP = 0x04; /* no data*/
4380
- PM8001_IO_DBG(pm8001_ha, pm8001_printk("no data\n"));
4231
+ pm8001_dbg(pm8001_ha, IO, "no data\n");
43814232 } else if (likely(!task->ata_task.device_control_reg_update)) {
4382
- if (task->ata_task.dma_xfer) {
4233
+ if (task->ata_task.use_ncq &&
4234
+ dev->sata_dev.class != ATA_DEV_ATAPI) {
4235
+ ATAP = 0x07; /* FPDMA */
4236
+ pm8001_dbg(pm8001_ha, IO, "FPDMA\n");
4237
+ } else if (task->ata_task.dma_xfer) {
43834238 ATAP = 0x06; /* DMA */
4384
- PM8001_IO_DBG(pm8001_ha, pm8001_printk("DMA\n"));
4239
+ pm8001_dbg(pm8001_ha, IO, "DMA\n");
43854240 } else {
43864241 ATAP = 0x05; /* PIO*/
4387
- PM8001_IO_DBG(pm8001_ha, pm8001_printk("PIO\n"));
4388
- }
4389
- if (task->ata_task.use_ncq &&
4390
- dev->sata_dev.class != ATA_DEV_ATAPI) {
4391
- ATAP = 0x07; /* FPDMA */
4392
- PM8001_IO_DBG(pm8001_ha, pm8001_printk("FPDMA\n"));
4242
+ pm8001_dbg(pm8001_ha, IO, "PIO\n");
43934243 }
43944244 }
43954245 if (task->ata_task.use_ncq && pm8001_get_ncq_tag(task, &hdr_tag)) {
....@@ -4409,8 +4259,7 @@
44094259 /* fill in PRD (scatter/gather) table, if any */
44104260 if (task->num_scatter > 1) {
44114261 pm8001_chip_make_sg(task->scatter, ccb->n_elem, ccb->buf_prd);
4412
- phys_addr = ccb->ccb_dma_handle +
4413
- offsetof(struct pm8001_ccb_info, buf_prd[0]);
4262
+ phys_addr = ccb->ccb_dma_handle;
44144263 sata_cmd.addr_low = lower_32_bits(phys_addr);
44154264 sata_cmd.addr_high = upper_32_bits(phys_addr);
44164265 sata_cmd.esgl = cpu_to_le32(1 << 31);
....@@ -4447,10 +4296,10 @@
44474296 SAS_TASK_STATE_ABORTED))) {
44484297 spin_unlock_irqrestore(&task->task_state_lock,
44494298 flags);
4450
- PM8001_FAIL_DBG(pm8001_ha,
4451
- pm8001_printk("task 0x%p resp 0x%x "
4452
- " stat 0x%x but aborted by upper layer "
4453
- "\n", task, ts->resp, ts->stat));
4299
+ pm8001_dbg(pm8001_ha, FAIL,
4300
+ "task 0x%p resp 0x%x stat 0x%x but aborted by upper layer\n",
4301
+ task, ts->resp,
4302
+ ts->stat);
44544303 pm8001_ccb_task_free(pm8001_ha, task, ccb, tag);
44554304 } else {
44564305 spin_unlock_irqrestore(&task->task_state_lock,
....@@ -4462,14 +4311,14 @@
44624311 }
44634312 }
44644313
4465
- ret = pm8001_mpi_build_cmd(pm8001_ha, circularQ, opc, &sata_cmd, 0);
4314
+ ret = pm8001_mpi_build_cmd(pm8001_ha, circularQ, opc, &sata_cmd,
4315
+ sizeof(sata_cmd), 0);
44664316 return ret;
44674317 }
44684318
44694319 /**
44704320 * pm8001_chip_phy_start_req - start phy via PHY_START COMMAND
44714321 * @pm8001_ha: our hba card information.
4472
- * @num: the inbound queue number
44734322 * @phy_id: the phy id which we wanted to start up.
44744323 */
44754324 static int
....@@ -4497,14 +4346,14 @@
44974346 memcpy(payload.sas_identify.sas_addr,
44984347 pm8001_ha->sas_addr, SAS_ADDR_SIZE);
44994348 payload.sas_identify.phy_id = phy_id;
4500
- ret = pm8001_mpi_build_cmd(pm8001_ha, circularQ, opcode, &payload, 0);
4349
+ ret = pm8001_mpi_build_cmd(pm8001_ha, circularQ, opcode, &payload,
4350
+ sizeof(payload), 0);
45014351 return ret;
45024352 }
45034353
45044354 /**
45054355 * pm8001_chip_phy_stop_req - start phy via PHY_STOP COMMAND
45064356 * @pm8001_ha: our hba card information.
4507
- * @num: the inbound queue number
45084357 * @phy_id: the phy id which we wanted to start up.
45094358 */
45104359 static int pm8001_chip_phy_stop_req(struct pm8001_hba_info *pm8001_ha,
....@@ -4519,11 +4368,12 @@
45194368 memset(&payload, 0, sizeof(payload));
45204369 payload.tag = cpu_to_le32(tag);
45214370 payload.phy_id = cpu_to_le32(phy_id);
4522
- ret = pm8001_mpi_build_cmd(pm8001_ha, circularQ, opcode, &payload, 0);
4371
+ ret = pm8001_mpi_build_cmd(pm8001_ha, circularQ, opcode, &payload,
4372
+ sizeof(payload), 0);
45234373 return ret;
45244374 }
45254375
4526
-/**
4376
+/*
45274377 * see comments on pm8001_mpi_reg_resp.
45284378 */
45294379 static int pm8001_chip_reg_dev_req(struct pm8001_hba_info *pm8001_ha,
....@@ -4561,7 +4411,7 @@
45614411 pm8001_dev->dev_type == SAS_FANOUT_EXPANDER_DEVICE)
45624412 stp_sspsmp_sata = 0x01; /*ssp or smp*/
45634413 }
4564
- if (parent_dev && DEV_IS_EXPANDER(parent_dev->dev_type))
4414
+ if (parent_dev && dev_is_expander(parent_dev->dev_type))
45654415 phy_id = parent_dev->ex_dev.ex_phy->phy_id;
45664416 else
45674417 phy_id = pm8001_dev->attached_phy;
....@@ -4578,11 +4428,15 @@
45784428 cpu_to_le32(ITNT | (firstBurstSize * 0x10000));
45794429 memcpy(payload.sas_addr, pm8001_dev->sas_device->sas_addr,
45804430 SAS_ADDR_SIZE);
4581
- rc = pm8001_mpi_build_cmd(pm8001_ha, circularQ, opc, &payload, 0);
4431
+ rc = pm8001_mpi_build_cmd(pm8001_ha, circularQ, opc, &payload,
4432
+ sizeof(payload), 0);
4433
+ if (rc)
4434
+ pm8001_tag_free(pm8001_ha, tag);
4435
+
45824436 return rc;
45834437 }
45844438
4585
-/**
4439
+/*
45864440 * see comments on pm8001_mpi_reg_resp.
45874441 */
45884442 int pm8001_chip_dereg_dev_req(struct pm8001_hba_info *pm8001_ha,
....@@ -4597,18 +4451,18 @@
45974451 memset(&payload, 0, sizeof(payload));
45984452 payload.tag = cpu_to_le32(1);
45994453 payload.device_id = cpu_to_le32(device_id);
4600
- PM8001_MSG_DBG(pm8001_ha,
4601
- pm8001_printk("unregister device device_id = %d\n", device_id));
4602
- ret = pm8001_mpi_build_cmd(pm8001_ha, circularQ, opc, &payload, 0);
4454
+ pm8001_dbg(pm8001_ha, MSG, "unregister device device_id = %d\n",
4455
+ device_id);
4456
+ ret = pm8001_mpi_build_cmd(pm8001_ha, circularQ, opc, &payload,
4457
+ sizeof(payload), 0);
46034458 return ret;
46044459 }
46054460
46064461 /**
46074462 * pm8001_chip_phy_ctl_req - support the local phy operation
46084463 * @pm8001_ha: our hba card information.
4609
- * @num: the inbound queue number
4610
- * @phy_id: the phy id which we wanted to operate
4611
- * @phy_op:
4464
+ * @phyId: the phy id which we wanted to operate
4465
+ * @phy_op: the phy operation to request
46124466 */
46134467 static int pm8001_chip_phy_ctl_req(struct pm8001_hba_info *pm8001_ha,
46144468 u32 phyId, u32 phy_op)
....@@ -4622,33 +4476,37 @@
46224476 payload.tag = cpu_to_le32(1);
46234477 payload.phyop_phyid =
46244478 cpu_to_le32(((phy_op & 0xff) << 8) | (phyId & 0x0F));
4625
- ret = pm8001_mpi_build_cmd(pm8001_ha, circularQ, opc, &payload, 0);
4479
+ ret = pm8001_mpi_build_cmd(pm8001_ha, circularQ, opc, &payload,
4480
+ sizeof(payload), 0);
46264481 return ret;
46274482 }
46284483
4629
-static u32 pm8001_chip_is_our_interupt(struct pm8001_hba_info *pm8001_ha)
4484
+static u32 pm8001_chip_is_our_interrupt(struct pm8001_hba_info *pm8001_ha)
46304485 {
4631
- u32 value;
46324486 #ifdef PM8001_USE_MSIX
46334487 return 1;
4634
-#endif
4488
+#else
4489
+ u32 value;
4490
+
46354491 value = pm8001_cr32(pm8001_ha, 0, MSGU_ODR);
46364492 if (value)
46374493 return 1;
46384494 return 0;
4639
-
4495
+#endif
46404496 }
46414497
46424498 /**
46434499 * pm8001_chip_isr - PM8001 isr handler.
46444500 * @pm8001_ha: our hba card information.
4645
- * @irq: irq number.
4646
- * @stat: stat.
4501
+ * @vec: IRQ number
46474502 */
46484503 static irqreturn_t
46494504 pm8001_chip_isr(struct pm8001_hba_info *pm8001_ha, u8 vec)
46504505 {
46514506 pm8001_chip_interrupt_disable(pm8001_ha, vec);
4507
+ pm8001_dbg(pm8001_ha, DEVIO,
4508
+ "irq vec %d, ODMR:0x%x\n",
4509
+ vec, pm8001_cr32(pm8001_ha, 0, 0x30));
46524510 process_oq(pm8001_ha, vec);
46534511 pm8001_chip_interrupt_enable(pm8001_ha, vec);
46544512 return IRQ_HANDLED;
....@@ -4672,23 +4530,21 @@
46724530 task_abort.device_id = cpu_to_le32(dev_id);
46734531 task_abort.tag = cpu_to_le32(cmd_tag);
46744532 }
4675
- ret = pm8001_mpi_build_cmd(pm8001_ha, circularQ, opc, &task_abort, 0);
4533
+ ret = pm8001_mpi_build_cmd(pm8001_ha, circularQ, opc, &task_abort,
4534
+ sizeof(task_abort), 0);
46764535 return ret;
46774536 }
46784537
4679
-/**
4538
+/*
46804539 * pm8001_chip_abort_task - SAS abort task when error or exception happened.
4681
- * @task: the task we wanted to aborted.
4682
- * @flag: the abort flag.
46834540 */
46844541 int pm8001_chip_abort_task(struct pm8001_hba_info *pm8001_ha,
46854542 struct pm8001_device *pm8001_dev, u8 flag, u32 task_tag, u32 cmd_tag)
46864543 {
46874544 u32 opc, device_id;
46884545 int rc = TMF_RESP_FUNC_FAILED;
4689
- PM8001_EH_DBG(pm8001_ha,
4690
- pm8001_printk("cmd_tag = %x, abort task tag = 0x%x",
4691
- cmd_tag, task_tag));
4546
+ pm8001_dbg(pm8001_ha, EH, "cmd_tag = %x, abort task tag = 0x%x\n",
4547
+ cmd_tag, task_tag);
46924548 if (pm8001_dev->dev_type == SAS_END_DEVICE)
46934549 opc = OPC_INB_SSP_ABORT;
46944550 else if (pm8001_dev->dev_type == SAS_SATA_DEV)
....@@ -4699,7 +4555,7 @@
46994555 rc = send_task_abort(pm8001_ha, opc, device_id, flag,
47004556 task_tag, cmd_tag);
47014557 if (rc != TMF_RESP_FUNC_COMPLETE)
4702
- PM8001_EH_DBG(pm8001_ha, pm8001_printk("rc= %d\n", rc));
4558
+ pm8001_dbg(pm8001_ha, EH, "rc= %d\n", rc);
47034559 return rc;
47044560 }
47054561
....@@ -4727,9 +4583,10 @@
47274583 memcpy(sspTMCmd.lun, task->ssp_task.LUN, 8);
47284584 sspTMCmd.tag = cpu_to_le32(ccb->ccb_tag);
47294585 if (pm8001_ha->chip_id != chip_8001)
4730
- sspTMCmd.ds_ads_m = 0x08;
4586
+ sspTMCmd.ds_ads_m = cpu_to_le32(0x08);
47314587 circularQ = &pm8001_ha->inbnd_q_tbl[0];
4732
- ret = pm8001_mpi_build_cmd(pm8001_ha, circularQ, opc, &sspTMCmd, 0);
4588
+ ret = pm8001_mpi_build_cmd(pm8001_ha, circularQ, opc, &sspTMCmd,
4589
+ sizeof(sspTMCmd), 0);
47334590 return ret;
47344591 }
47354592
....@@ -4751,7 +4608,7 @@
47514608 if (!fw_control_context)
47524609 return -ENOMEM;
47534610 fw_control_context->usrAddr = (u8 *)ioctl_payload->func_specific;
4754
- fw_control_context->len = ioctl_payload->length;
4611
+ fw_control_context->len = ioctl_payload->rd_length;
47554612 circularQ = &pm8001_ha->inbnd_q_tbl[0];
47564613 memset(&nvmd_req, 0, sizeof(nvmd_req));
47574614 rc = pm8001_tag_alloc(pm8001_ha, &tag);
....@@ -4772,7 +4629,7 @@
47724629
47734630 nvmd_req.len_ir_vpdd = cpu_to_le32(IPMode | twi_addr << 16 |
47744631 twi_page_size << 8 | TWI_DEVICE);
4775
- nvmd_req.resp_len = cpu_to_le32(ioctl_payload->length);
4632
+ nvmd_req.resp_len = cpu_to_le32(ioctl_payload->rd_length);
47764633 nvmd_req.resp_addr_hi =
47774634 cpu_to_le32(pm8001_ha->memoryMap.region[NVMD].phys_addr_hi);
47784635 nvmd_req.resp_addr_lo =
....@@ -4781,7 +4638,7 @@
47814638 }
47824639 case C_SEEPROM: {
47834640 nvmd_req.len_ir_vpdd = cpu_to_le32(IPMode | C_SEEPROM);
4784
- nvmd_req.resp_len = cpu_to_le32(ioctl_payload->length);
4641
+ nvmd_req.resp_len = cpu_to_le32(ioctl_payload->rd_length);
47854642 nvmd_req.resp_addr_hi =
47864643 cpu_to_le32(pm8001_ha->memoryMap.region[NVMD].phys_addr_hi);
47874644 nvmd_req.resp_addr_lo =
....@@ -4790,7 +4647,7 @@
47904647 }
47914648 case VPD_FLASH: {
47924649 nvmd_req.len_ir_vpdd = cpu_to_le32(IPMode | VPD_FLASH);
4793
- nvmd_req.resp_len = cpu_to_le32(ioctl_payload->length);
4650
+ nvmd_req.resp_len = cpu_to_le32(ioctl_payload->rd_length);
47944651 nvmd_req.resp_addr_hi =
47954652 cpu_to_le32(pm8001_ha->memoryMap.region[NVMD].phys_addr_hi);
47964653 nvmd_req.resp_addr_lo =
....@@ -4799,7 +4656,7 @@
47994656 }
48004657 case EXPAN_ROM: {
48014658 nvmd_req.len_ir_vpdd = cpu_to_le32(IPMode | EXPAN_ROM);
4802
- nvmd_req.resp_len = cpu_to_le32(ioctl_payload->length);
4659
+ nvmd_req.resp_len = cpu_to_le32(ioctl_payload->rd_length);
48034660 nvmd_req.resp_addr_hi =
48044661 cpu_to_le32(pm8001_ha->memoryMap.region[NVMD].phys_addr_hi);
48054662 nvmd_req.resp_addr_lo =
....@@ -4808,7 +4665,7 @@
48084665 }
48094666 case IOP_RDUMP: {
48104667 nvmd_req.len_ir_vpdd = cpu_to_le32(IPMode | IOP_RDUMP);
4811
- nvmd_req.resp_len = cpu_to_le32(ioctl_payload->length);
4668
+ nvmd_req.resp_len = cpu_to_le32(ioctl_payload->rd_length);
48124669 nvmd_req.vpd_offset = cpu_to_le32(ioctl_payload->offset);
48134670 nvmd_req.resp_addr_hi =
48144671 cpu_to_le32(pm8001_ha->memoryMap.region[NVMD].phys_addr_hi);
....@@ -4819,7 +4676,8 @@
48194676 default:
48204677 break;
48214678 }
4822
- rc = pm8001_mpi_build_cmd(pm8001_ha, circularQ, opc, &nvmd_req, 0);
4679
+ rc = pm8001_mpi_build_cmd(pm8001_ha, circularQ, opc, &nvmd_req,
4680
+ sizeof(nvmd_req), 0);
48234681 if (rc) {
48244682 kfree(fw_control_context);
48254683 pm8001_tag_free(pm8001_ha, tag);
....@@ -4847,7 +4705,7 @@
48474705 circularQ = &pm8001_ha->inbnd_q_tbl[0];
48484706 memcpy(pm8001_ha->memoryMap.region[NVMD].virt_ptr,
48494707 &ioctl_payload->func_specific,
4850
- ioctl_payload->length);
4708
+ ioctl_payload->wr_length);
48514709 memset(&nvmd_req, 0, sizeof(nvmd_req));
48524710 rc = pm8001_tag_alloc(pm8001_ha, &tag);
48534711 if (rc) {
....@@ -4866,7 +4724,7 @@
48664724 nvmd_req.reserved[0] = cpu_to_le32(0xFEDCBA98);
48674725 nvmd_req.len_ir_vpdd = cpu_to_le32(IPMode | twi_addr << 16 |
48684726 twi_page_size << 8 | TWI_DEVICE);
4869
- nvmd_req.resp_len = cpu_to_le32(ioctl_payload->length);
4727
+ nvmd_req.resp_len = cpu_to_le32(ioctl_payload->wr_length);
48704728 nvmd_req.resp_addr_hi =
48714729 cpu_to_le32(pm8001_ha->memoryMap.region[NVMD].phys_addr_hi);
48724730 nvmd_req.resp_addr_lo =
....@@ -4875,7 +4733,7 @@
48754733 }
48764734 case C_SEEPROM:
48774735 nvmd_req.len_ir_vpdd = cpu_to_le32(IPMode | C_SEEPROM);
4878
- nvmd_req.resp_len = cpu_to_le32(ioctl_payload->length);
4736
+ nvmd_req.resp_len = cpu_to_le32(ioctl_payload->wr_length);
48794737 nvmd_req.reserved[0] = cpu_to_le32(0xFEDCBA98);
48804738 nvmd_req.resp_addr_hi =
48814739 cpu_to_le32(pm8001_ha->memoryMap.region[NVMD].phys_addr_hi);
....@@ -4884,7 +4742,7 @@
48844742 break;
48854743 case VPD_FLASH:
48864744 nvmd_req.len_ir_vpdd = cpu_to_le32(IPMode | VPD_FLASH);
4887
- nvmd_req.resp_len = cpu_to_le32(ioctl_payload->length);
4745
+ nvmd_req.resp_len = cpu_to_le32(ioctl_payload->wr_length);
48884746 nvmd_req.reserved[0] = cpu_to_le32(0xFEDCBA98);
48894747 nvmd_req.resp_addr_hi =
48904748 cpu_to_le32(pm8001_ha->memoryMap.region[NVMD].phys_addr_hi);
....@@ -4893,7 +4751,7 @@
48934751 break;
48944752 case EXPAN_ROM:
48954753 nvmd_req.len_ir_vpdd = cpu_to_le32(IPMode | EXPAN_ROM);
4896
- nvmd_req.resp_len = cpu_to_le32(ioctl_payload->length);
4754
+ nvmd_req.resp_len = cpu_to_le32(ioctl_payload->wr_length);
48974755 nvmd_req.reserved[0] = cpu_to_le32(0xFEDCBA98);
48984756 nvmd_req.resp_addr_hi =
48994757 cpu_to_le32(pm8001_ha->memoryMap.region[NVMD].phys_addr_hi);
....@@ -4903,7 +4761,8 @@
49034761 default:
49044762 break;
49054763 }
4906
- rc = pm8001_mpi_build_cmd(pm8001_ha, circularQ, opc, &nvmd_req, 0);
4764
+ rc = pm8001_mpi_build_cmd(pm8001_ha, circularQ, opc, &nvmd_req,
4765
+ sizeof(nvmd_req), 0);
49074766 if (rc) {
49084767 kfree(fw_control_context);
49094768 pm8001_tag_free(pm8001_ha, tag);
....@@ -4915,6 +4774,7 @@
49154774 * pm8001_chip_fw_flash_update_build - support the firmware update operation
49164775 * @pm8001_ha: our hba card information.
49174776 * @fw_flash_updata_info: firmware flash update param
4777
+ * @tag: Tag to apply to the payload
49184778 */
49194779 int
49204780 pm8001_chip_fw_flash_update_build(struct pm8001_hba_info *pm8001_ha,
....@@ -4938,7 +4798,8 @@
49384798 cpu_to_le32(lower_32_bits(le64_to_cpu(info->sgl.addr)));
49394799 payload.sgl_addr_hi =
49404800 cpu_to_le32(upper_32_bits(le64_to_cpu(info->sgl.addr)));
4941
- ret = pm8001_mpi_build_cmd(pm8001_ha, circularQ, opc, &payload, 0);
4801
+ ret = pm8001_mpi_build_cmd(pm8001_ha, circularQ, opc, &payload,
4802
+ sizeof(payload), 0);
49424803 return ret;
49434804 }
49444805
....@@ -4960,6 +4821,9 @@
49604821 if (!fw_control_context)
49614822 return -ENOMEM;
49624823 fw_control = (struct fw_control_info *)&ioctl_payload->func_specific;
4824
+ pm8001_dbg(pm8001_ha, DEVIO,
4825
+ "dma fw_control context input length :%x\n",
4826
+ fw_control->len);
49634827 memcpy(buffer, fw_control->buffer, fw_control->len);
49644828 flash_update_info.sgl.addr = cpu_to_le64(phys_addr);
49654829 flash_update_info.sgl.im_len.len = cpu_to_le32(fw_control->len);
....@@ -4981,6 +4845,11 @@
49814845 ccb->ccb_tag = tag;
49824846 rc = pm8001_chip_fw_flash_update_build(pm8001_ha, &flash_update_info,
49834847 tag);
4848
+ if (rc) {
4849
+ kfree(fw_control_context);
4850
+ pm8001_tag_free(pm8001_ha, tag);
4851
+ }
4852
+
49844853 return rc;
49854854 }
49864855
....@@ -5083,7 +4952,11 @@
50834952 payload.tag = cpu_to_le32(tag);
50844953 payload.device_id = cpu_to_le32(pm8001_dev->device_id);
50854954 payload.nds = cpu_to_le32(state);
5086
- rc = pm8001_mpi_build_cmd(pm8001_ha, circularQ, opc, &payload, 0);
4955
+ rc = pm8001_mpi_build_cmd(pm8001_ha, circularQ, opc, &payload,
4956
+ sizeof(payload), 0);
4957
+ if (rc)
4958
+ pm8001_tag_free(pm8001_ha, tag);
4959
+
50874960 return rc;
50884961
50894962 }
....@@ -5108,7 +4981,8 @@
51084981 payload.SSAHOLT = cpu_to_le32(0xd << 25);
51094982 payload.sata_hol_tmo = cpu_to_le32(80);
51104983 payload.open_reject_cmdretries_data_retries = cpu_to_le32(0xff00ff);
5111
- rc = pm8001_mpi_build_cmd(pm8001_ha, circularQ, opc, &payload, 0);
4984
+ rc = pm8001_mpi_build_cmd(pm8001_ha, circularQ, opc, &payload,
4985
+ sizeof(payload), 0);
51124986 if (rc)
51134987 pm8001_tag_free(pm8001_ha, tag);
51144988 return rc;
....@@ -5122,7 +4996,7 @@
51224996 .chip_rst = pm8001_hw_chip_rst,
51234997 .chip_iounmap = pm8001_chip_iounmap,
51244998 .isr = pm8001_chip_isr,
5125
- .is_our_interupt = pm8001_chip_is_our_interupt,
4999
+ .is_our_interrupt = pm8001_chip_is_our_interrupt,
51265000 .isr_process_oq = process_oq,
51275001 .interrupt_enable = pm8001_chip_interrupt_enable,
51285002 .interrupt_disable = pm8001_chip_interrupt_disable,