[Bug 60758] module scsi_wait_scan not found kernel panic on boot

2013-08-31 Thread bugzilla-daemon
https://bugzilla.kernel.org/show_bug.cgi?id=60758

--- Comment #7 from Alan Bartlett a...@elrepo.org ---
(In reply to Jeff Zhou from comment #5)
 If your system fails by module scsi_wait_scan not found, then it could be
 the init script issue in your CentOS box.
 
 The last kernel with scsi_wait_scan.ko is v3.5.7, it has been removed ever
 since v3.6. Any init script for 3.10 should not use that module.
 
 
 Another point is in your config, the CONFIG_SCSI_SCAN_ASYNC is not set, try
 to turn it into Y and see what's happening.

Jeff, 

For the fuller picture please see --

http://elrepo.org/bugs/view.php?id=401

This non-booting issue only occurs with one system. The reporter has other
systems which do boot correctly using the same kernel(s).

As was explained in the referenced bug report (note 3235), the mention of
module scsi_wait_scan not found is a red-herring.

Note the following section from the 3.10.10 drivers/scsi/Kconfig file --

[quote]
config SCSI_SCAN_ASYNC
bool Asynchronous SCSI scanning
depends on SCSI
help
  The SCSI subsystem can probe for devices while the rest of the
  system continues booting, and even probe devices on different
  busses in parallel, leading to a significant speed-up.

  If you have built SCSI as modules, enabling this option can
  be a problem as the devices may not have been found by the
  time your system expects them to have been.  You can load the
  scsi_wait_scan module to ensure that all scans have completed.
  If you build your SCSI drivers into the kernel, then everything
  will work fine if you say Y here.

  You can override this choice by specifying scsi_mod.scan=sync
  or async on the kernel's command line.
[/quote]

It still makes a reference to the scsi_wait_scan module and advises against
setting SCSI_SCAN_ASYNC=y when scsi drivers have been built as modules.

It is unnecessary to build a new kernel to test, as per your last point. Just
appending scsi_mod.scan=async to the kernel boot line will be sufficient.

Perhaps the reporter will test with that and then report back?

Alan / burakkucat.

-- 
You are receiving this mail because:
You are the assignee for the bug.
--
To unsubscribe from this list: send the line unsubscribe linux-scsi in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html


[PATCH 0/6] scsi: ufs: ufshcd updates and fixes

2013-08-31 Thread Santosh Y
Hi James,

Please apply the following patches to 'misc' branch.

Thanks,
Santosh

Seungwon Jeon (6):
  scsi: ufs: find out sense data over scsi status values
  scsi: ufs: fix the setting interrupt aggregation counter
  scsi: ufs: add dme configuration primitives
  scsi: ufs: add unipro attribute IDs
  scsi: ufs: add operation for the uic power mode change
  scsi: ufs: configure the attribute for power mode

 drivers/scsi/ufs/ufs.h|   1 +
 drivers/scsi/ufs/ufshcd.c | 328 +++---
 drivers/scsi/ufs/ufshcd.h |  54 
 drivers/scsi/ufs/ufshci.h |  22 +++-
 drivers/scsi/ufs/unipro.h | 151 +
 5 files changed, 507 insertions(+), 49 deletions(-)
 create mode 100644 drivers/scsi/ufs/unipro.h

-- 
1.8.4

--
To unsubscribe from this list: send the line unsubscribe linux-scsi in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html


[PATCH 2/6] scsi: ufs: fix the setting interrupt aggregation counter

2013-08-31 Thread Santosh Y
From: Seungwon Jeon tgih@samsung.com

IACTH(Interrupt aggregation counter threshold) value is allowed
up to 0x1F and current setting value is the maximum.
This value is related with NUTRS(max:0x20) of HCI's capability.
Considering HCI controller doesn't support the maximum, IACTH
setting should be adjusted with possible value.
For that, existing 'ufshcd_config_int_aggr' is split into two part
[reset, configure].

Signed-off-by: Seungwon Jeon tgih@samsung.com
Reviewed-by: Subhash Jadavani subha...@codeaurora.org
Tested-by: Yaniv Gardi yga...@codeaurora.org
Signed-off-by: Santosh Y santos...@gmail.com

diff --git a/drivers/scsi/ufs/ufshcd.c b/drivers/scsi/ufs/ufshcd.c
index ac3d56b..86d7286 100644
--- a/drivers/scsi/ufs/ufshcd.c
+++ b/drivers/scsi/ufs/ufshcd.c
@@ -59,6 +59,9 @@
 /* Expose the flag value from utp_upiu_query.value */
 #define MASK_QUERY_UPIU_FLAG_LOC 0xFF
 
+/* Interrupt aggregation default timeout, unit: 40us */
+#define INT_AGGR_DEF_TO0x02
+
 enum {
UFSHCD_MAX_CHANNEL  = 0,
UFSHCD_MAX_ID   = 1,
@@ -94,12 +97,6 @@ enum {
UFSHCD_INT_CLEAR,
 };
 
-/* Interrupt aggregation options */
-enum {
-   INT_AGGR_RESET,
-   INT_AGGR_CONFIG,
-};
-
 #define ufshcd_set_eh_in_progress(h) \
(h-eh_flags |= UFSHCD_EH_IN_PROGRESS)
 #define ufshcd_eh_in_progress(h) \
@@ -340,30 +337,30 @@ static inline bool ufshcd_is_exception_event(struct 
utp_upiu_rsp *ucd_rsp_ptr)
 }
 
 /**
- * ufshcd_config_int_aggr - Configure interrupt aggregation values.
- * Currently there is no use case where we want to configure
- * interrupt aggregation dynamically. So to configure interrupt
- * aggregation, #define INT_AGGR_COUNTER_THRESHOLD_VALUE and
- * INT_AGGR_TIMEOUT_VALUE are used.
+ * ufshcd_reset_intr_aggr - Reset interrupt aggregation values.
  * @hba: per adapter instance
- * @option: Interrupt aggregation option
  */
 static inline void
-ufshcd_config_int_aggr(struct ufs_hba *hba, int option)
+ufshcd_reset_intr_aggr(struct ufs_hba *hba)
 {
-   switch (option) {
-   case INT_AGGR_RESET:
-   ufshcd_writel(hba, INT_AGGR_ENABLE |
- INT_AGGR_COUNTER_AND_TIMER_RESET,
- REG_UTP_TRANSFER_REQ_INT_AGG_CONTROL);
-   break;
-   case INT_AGGR_CONFIG:
-   ufshcd_writel(hba, INT_AGGR_ENABLE | INT_AGGR_PARAM_WRITE |
- INT_AGGR_COUNTER_THRESHOLD_VALUE |
- INT_AGGR_TIMEOUT_VALUE,
- REG_UTP_TRANSFER_REQ_INT_AGG_CONTROL);
-   break;
-   }
+   ufshcd_writel(hba, INT_AGGR_ENABLE |
+ INT_AGGR_COUNTER_AND_TIMER_RESET,
+ REG_UTP_TRANSFER_REQ_INT_AGG_CONTROL);
+}
+
+/**
+ * ufshcd_config_intr_aggr - Configure interrupt aggregation values.
+ * @hba: per adapter instance
+ * @cnt: Interrupt aggregation counter threshold
+ * @tmout: Interrupt aggregation timeout value
+ */
+static inline void
+ufshcd_config_intr_aggr(struct ufs_hba *hba, u8 cnt, u8 tmout)
+{
+   ufshcd_writel(hba, INT_AGGR_ENABLE | INT_AGGR_PARAM_WRITE |
+ INT_AGGR_COUNTER_THLD_VAL(cnt) |
+ INT_AGGR_TIMEOUT_VAL(tmout),
+ REG_UTP_TRANSFER_REQ_INT_AGG_CONTROL);
 }
 
 /**
@@ -1523,7 +1520,7 @@ static int ufshcd_make_hba_operational(struct ufs_hba 
*hba)
ufshcd_enable_intr(hba, UFSHCD_ENABLE_INTRS);
 
/* Configure interrupt aggregation */
-   ufshcd_config_int_aggr(hba, INT_AGGR_CONFIG);
+   ufshcd_config_intr_aggr(hba, hba-nutrs - 1, INT_AGGR_DEF_TO);
 
/* Configure UTRL and UTMRL base address registers */
ufshcd_writel(hba, lower_32_bits(hba-utrdl_dma_addr),
@@ -1971,7 +1968,7 @@ static void ufshcd_transfer_req_compl(struct ufs_hba *hba)
 
/* Reset interrupt aggregation counters */
if (int_aggr_reset)
-   ufshcd_config_int_aggr(hba, INT_AGGR_RESET);
+   ufshcd_reset_intr_aggr(hba);
 }
 
 /**
diff --git a/drivers/scsi/ufs/ufshci.h b/drivers/scsi/ufs/ufshci.h
index f1e1b74..739ae3a 100644
--- a/drivers/scsi/ufs/ufshci.h
+++ b/drivers/scsi/ufs/ufshci.h
@@ -226,8 +226,8 @@ enum {
 
 #define MASK_UIC_COMMAND_RESULT0xFF
 
-#define INT_AGGR_COUNTER_THRESHOLD_VALUE   (0x1F  8)
-#define INT_AGGR_TIMEOUT_VALUE (0x02)
+#define INT_AGGR_COUNTER_THLD_VAL(c)   (((c)  0x1F)  8)
+#define INT_AGGR_TIMEOUT_VAL(t)(((t)  0xFF)  0)
 
 /* Interrupt disable masks */
 enum {
-- 
1.8.4

--
To unsubscribe from this list: send the line unsubscribe linux-scsi in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html


[PATCH 4/6] scsi: ufs: add unipro attribute IDs

2013-08-31 Thread Santosh Y
From: Seungwon Jeon tgih@samsung.com

'drivers/scsi/ufs/unipro.h' is added.
Attributes in the layers of the UNIPRO stack can be
read and written via the DME.

Signed-off-by: Seungwon Jeon tgih@samsung.com
Reviewed-by: Subhash Jadavani subha...@codeaurora.org
Tested-by: Yaniv Gardi yga...@codeaurora.org
Signed-off-by: Santosh Y santos...@gmail.com

diff --git a/drivers/scsi/ufs/unipro.h b/drivers/scsi/ufs/unipro.h
new file mode 100644
index 000..3a710eb
--- /dev/null
+++ b/drivers/scsi/ufs/unipro.h
@@ -0,0 +1,130 @@
+/*
+ * drivers/scsi/ufs/unipro.h
+ *
+ * Copyright (C) 2013 Samsung Electronics Co., Ltd.
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ */
+
+#ifndef _UNIPRO_H_
+#define _UNIPRO_H_
+
+/*
+ * PHY Adpater attributes
+ */
+#define PA_ACTIVETXDATALANES   0x1560
+#define PA_ACTIVERXDATALANES   0x1580
+#define PA_TXTRAILINGCLOCKS0x1564
+#define PA_PHY_TYPE0x1500
+#define PA_AVAILTXDATALANES0x1520
+#define PA_AVAILRXDATALANES0x1540
+#define PA_MINRXTRAILINGCLOCKS 0x1543
+#define PA_TXPWRSTATUS 0x1567
+#define PA_RXPWRSTATUS 0x1582
+#define PA_TXFORCECLOCK0x1562
+#define PA_TXPWRMODE   0x1563
+#define PA_LEGACYDPHYESCDL 0x1570
+#define PA_MAXTXSPEEDFAST  0x1521
+#define PA_MAXTXSPEEDSLOW  0x1522
+#define PA_MAXRXSPEEDFAST  0x1541
+#define PA_MAXRXSPEEDSLOW  0x1542
+#define PA_TXLINKSTARTUPHS 0x1544
+#define PA_TXSPEEDFAST 0x1565
+#define PA_TXSPEEDSLOW 0x1566
+#define PA_REMOTEVERINFO   0x15A0
+#define PA_TXGEAR  0x1568
+#define PA_TXTERMINATION   0x1569
+#define PA_HSSERIES0x156A
+#define PA_PWRMODE 0x1571
+#define PA_RXGEAR  0x1583
+#define PA_RXTERMINATION   0x1584
+#define PA_MAXRXPWMGEAR0x1586
+#define PA_MAXRXHSGEAR 0x1587
+#define PA_RXHSUNTERMCAP   0x15A5
+#define PA_RXLSTERMCAP 0x15A6
+#define PA_PACPREQTIMEOUT  0x1590
+#define PA_PACPREQEOBTIMEOUT   0x1591
+#define PA_HIBERN8TIME 0x15A7
+#define PA_LOCALVERINFO0x15A9
+#define PA_TACTIVATE   0x15A8
+#define PA_PACPFRAMECOUNT  0x15C0
+#define PA_PACPERRORCOUNT  0x15C1
+#define PA_PHYTESTCONTROL  0x15C2
+#define PA_PWRMODEUSERDATA00x15B0
+#define PA_PWRMODEUSERDATA10x15B1
+#define PA_PWRMODEUSERDATA20x15B2
+#define PA_PWRMODEUSERDATA30x15B3
+#define PA_PWRMODEUSERDATA40x15B4
+#define PA_PWRMODEUSERDATA50x15B5
+#define PA_PWRMODEUSERDATA60x15B6
+#define PA_PWRMODEUSERDATA70x15B7
+#define PA_PWRMODEUSERDATA80x15B8
+#define PA_PWRMODEUSERDATA90x15B9
+#define PA_PWRMODEUSERDATA10   0x15BA
+#define PA_PWRMODEUSERDATA11   0x15BB
+#define PA_CONNECTEDTXDATALANES0x1561
+#define PA_CONNECTEDRXDATALANES0x1581
+#define PA_LOGICALLANEMAP  0x15A1
+#define PA_SLEEPNOCONFIGTIME   0x15A2
+#define PA_STALLNOCONFIGTIME   0x15A3
+#define PA_SAVECONFIGTIME  0x15A4
+
+/*
+ * Data Link Layer Attributes
+ */
+#define DL_TC0TXFCTHRESHOLD0x2040
+#define DL_FC0PROTTIMEOUTVAL   0x2041
+#define DL_TC0REPLAYTIMEOUTVAL 0x2042
+#define DL_AFC0REQTIMEOUTVAL   0x2043
+#define DL_AFC0CREDITTHRESHOLD 0x2044
+#define DL_TC0OUTACKTHRESHOLD  0x2045
+#define DL_TC1TXFCTHRESHOLD0x2060
+#define DL_FC1PROTTIMEOUTVAL   0x2061
+#define DL_TC1REPLAYTIMEOUTVAL 0x2062
+#define DL_AFC1REQTIMEOUTVAL   0x2063
+#define DL_AFC1CREDITTHRESHOLD 0x2064
+#define DL_TC1OUTACKTHRESHOLD  0x2065
+#define DL_TXPREEMPTIONCAP 0x2000
+#define DL_TC0TXMAXSDUSIZE 0x2001
+#define DL_TC0RXINITCREDITVAL  0x2002
+#define DL_TC0TXBUFFERSIZE 0x2005
+#define DL_PEERTC0PRESENT  0x2046
+#define DL_PEERTC0RXINITCREVAL 0x2047
+#define DL_TC1TXMAXSDUSIZE 0x2003
+#define DL_TC1RXINITCREDITVAL  0x2004
+#define DL_TC1TXBUFFERSIZE 0x2006
+#define DL_PEERTC1PRESENT  0x2066
+#define DL_PEERTC1RXINITCREVAL 0x2067
+
+/*
+ * Network Layer Attributes
+ */
+#define N_DEVICEID 0x3000
+#define N_DEVICEID_VALID   0x3001
+#define N_TC0TXMAXSDUSIZE  0x3020
+#define N_TC1TXMAXSDUSIZE  0x3021
+
+/*
+ * Transport Layer Attributes
+ */
+#define T_NUMCPORTS0x4000
+#define T_NUMTESTFEATURES  0x4001
+#define T_CONNECTIONSTATE  0x4020
+#define T_PEERDEVICEID 0x4021
+#define T_PEERCPORTID  0x4022
+#define T_TRAFFICCLASS 0x4023
+#define T_PROTOCOLID   0x4024
+#define T_CPORTFLAGS   0x4025
+#define T_TXTOKENVALUE 0x4026
+#define T_RXTOKENVALUE 0x4027
+#define T_LOCALBUFFERSPACE 0x4028
+#define T_PEERBUFFERSPACE  0x4029
+#define T_CREDITSTOSEND0x402A
+#define T_CPORTMODE0x402B
+#define T_TC0TXMAXSDUSIZE  0x4060
+#define T_TC1TXMAXSDUSIZE  

[PATCH 1/6] scsi: ufs: find out sense data over scsi status values

2013-08-31 Thread Santosh Y
From: Seungwon Jeon tgih@samsung.com

Unlike 'GOOD' and 'CHECK CONDITION', other status values in
Response UPIU may or may not contain sense data. That is returning
sense data isn't obvious. So, in this case the Data Segment Length
field should be checked. If a non-zero value, it means that UPIU
has Sense Data in the Data Segment area.

Signed-off-by: Seungwon Jeon tgih@samsung.com
Reviewed-by: Subhash Jadavani subha...@codeaurora.org
Tested-by: Yaniv Gardi yga...@codeaurora.org
Signed-off-by: Santosh Y santos...@gmail.com

diff --git a/drivers/scsi/ufs/ufs.h b/drivers/scsi/ufs/ufs.h
index bce09a6..7210500 100644
--- a/drivers/scsi/ufs/ufs.h
+++ b/drivers/scsi/ufs/ufs.h
@@ -177,6 +177,7 @@ enum {
MASK_TASK_RESPONSE  = 0xFF00,
MASK_RSP_UPIU_RESULT= 0x,
MASK_QUERY_DATA_SEG_LEN = 0x,
+   MASK_RSP_UPIU_DATA_SEG_LEN  = 0x,
MASK_RSP_EXCEPTION_EVENT= 0x1,
 };
 
diff --git a/drivers/scsi/ufs/ufshcd.c b/drivers/scsi/ufs/ufshcd.c
index a0f5ac2..ac3d56b 100644
--- a/drivers/scsi/ufs/ufshcd.c
+++ b/drivers/scsi/ufs/ufshcd.c
@@ -310,6 +310,20 @@ ufshcd_get_rsp_upiu_result(struct utp_upiu_rsp 
*ucd_rsp_ptr)
return be32_to_cpu(ucd_rsp_ptr-header.dword_1)  MASK_RSP_UPIU_RESULT;
 }
 
+/*
+ * ufshcd_get_rsp_upiu_data_seg_len - Get the data segment length
+ * from response UPIU
+ * @ucd_rsp_ptr: pointer to response UPIU
+ *
+ * Return the data segment length.
+ */
+static inline unsigned int
+ufshcd_get_rsp_upiu_data_seg_len(struct utp_upiu_rsp *ucd_rsp_ptr)
+{
+   return be32_to_cpu(ucd_rsp_ptr-header.dword_2) 
+   MASK_RSP_UPIU_DATA_SEG_LEN;
+}
+
 /**
  * ufshcd_is_exception_event - Check if the device raised an exception event
  * @ucd_rsp_ptr: pointer to response UPIU
@@ -405,7 +419,8 @@ void ufshcd_send_command(struct ufs_hba *hba, unsigned int 
task_tag)
 static inline void ufshcd_copy_sense_data(struct ufshcd_lrb *lrbp)
 {
int len;
-   if (lrbp-sense_buffer) {
+   if (lrbp-sense_buffer 
+   ufshcd_get_rsp_upiu_data_seg_len(lrbp-ucd_rsp_ptr)) {
len = be16_to_cpu(lrbp-ucd_rsp_ptr-sr.sense_data_len);
memcpy(lrbp-sense_buffer,
lrbp-ucd_rsp_ptr-sr.sense_data,
@@ -1789,32 +1804,24 @@ ufshcd_scsi_cmd_status(struct ufshcd_lrb *lrbp, int 
scsi_status)
int result = 0;
 
switch (scsi_status) {
-   case SAM_STAT_GOOD:
-   result |= DID_OK  16 |
- COMMAND_COMPLETE  8 |
- SAM_STAT_GOOD;
-   break;
case SAM_STAT_CHECK_CONDITION:
+   ufshcd_copy_sense_data(lrbp);
+   case SAM_STAT_GOOD:
result |= DID_OK  16 |
  COMMAND_COMPLETE  8 |
- SAM_STAT_CHECK_CONDITION;
-   ufshcd_copy_sense_data(lrbp);
-   break;
-   case SAM_STAT_BUSY:
-   result |= SAM_STAT_BUSY;
+ scsi_status;
break;
case SAM_STAT_TASK_SET_FULL:
-
/*
 * If a LUN reports SAM_STAT_TASK_SET_FULL, then the LUN queue
 * depth needs to be adjusted to the exact number of
 * outstanding commands the LUN can handle at any given time.
 */
ufshcd_adjust_lun_qdepth(lrbp-cmd);
-   result |= SAM_STAT_TASK_SET_FULL;
-   break;
+   case SAM_STAT_BUSY:
case SAM_STAT_TASK_ABORTED:
-   result |= SAM_STAT_TASK_ABORTED;
+   ufshcd_copy_sense_data(lrbp);
+   result |= scsi_status;
break;
default:
result |= DID_ERROR  16;
-- 
1.8.4

--
To unsubscribe from this list: send the line unsubscribe linux-scsi in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html


[PATCH 3/6] scsi: ufs: add dme configuration primitives

2013-08-31 Thread Santosh Y
From: Seungwon Jeon tgih@samsung.com

Implements to support GET and SET operations of the DME.
These operations are used to configure the behavior of
the UNIPRO. Along with basic operation, {Peer/AttrSetType}
can be mixed.

Signed-off-by: Seungwon Jeon tgih@samsung.com
Reviewed-by: Subhash Jadavani subha...@codeaurora.org
Tested-by: Yaniv Gardi yga...@codeaurora.org
Signed-off-by: Santosh Y santos...@gmail.com

diff --git a/drivers/scsi/ufs/ufshcd.c b/drivers/scsi/ufs/ufshcd.c
index 86d7286..03ff4da 100644
--- a/drivers/scsi/ufs/ufshcd.c
+++ b/drivers/scsi/ufs/ufshcd.c
@@ -285,6 +285,18 @@ static inline int ufshcd_get_uic_cmd_result(struct ufs_hba 
*hba)
 }
 
 /**
+ * ufshcd_get_dme_attr_val - Get the value of attribute returned by UIC command
+ * @hba: Pointer to adapter instance
+ *
+ * This function gets UIC command argument3
+ * Returns 0 on success, non zero value on error
+ */
+static inline u32 ufshcd_get_dme_attr_val(struct ufs_hba *hba)
+{
+   return ufshcd_readl(hba, REG_UIC_COMMAND_ARG_3);
+}
+
+/**
  * ufshcd_get_req_rsp - returns the TR response transaction type
  * @ucd_rsp_ptr: pointer to response UPIU
  */
@@ -1440,6 +1452,80 @@ static int ufshcd_dme_link_startup(struct ufs_hba *hba)
 }
 
 /**
+ * ufshcd_dme_set_attr - UIC command for DME_SET, DME_PEER_SET
+ * @hba: per adapter instance
+ * @attr_sel: uic command argument1
+ * @attr_set: attribute set type as uic command argument2
+ * @mib_val: setting value as uic command argument3
+ * @peer: indicate whether peer or local
+ *
+ * Returns 0 on success, non-zero value on failure
+ */
+int ufshcd_dme_set_attr(struct ufs_hba *hba, u32 attr_sel,
+   u8 attr_set, u32 mib_val, u8 peer)
+{
+   struct uic_command uic_cmd = {0};
+   static const char *const action[] = {
+   dme-set,
+   dme-peer-set
+   };
+   const char *set = action[!!peer];
+   int ret;
+
+   uic_cmd.command = peer ?
+   UIC_CMD_DME_PEER_SET : UIC_CMD_DME_SET;
+   uic_cmd.argument1 = attr_sel;
+   uic_cmd.argument2 = UIC_ARG_ATTR_TYPE(attr_set);
+   uic_cmd.argument3 = mib_val;
+
+   ret = ufshcd_send_uic_cmd(hba, uic_cmd);
+   if (ret)
+   dev_err(hba-dev, %s: attr-id 0x%x val 0x%x error code %d\n,
+   set, UIC_GET_ATTR_ID(attr_sel), mib_val, ret);
+
+   return ret;
+}
+EXPORT_SYMBOL_GPL(ufshcd_dme_set_attr);
+
+/**
+ * ufshcd_dme_get_attr - UIC command for DME_GET, DME_PEER_GET
+ * @hba: per adapter instance
+ * @attr_sel: uic command argument1
+ * @mib_val: the value of the attribute as returned by the UIC command
+ * @peer: indicate whether peer or local
+ *
+ * Returns 0 on success, non-zero value on failure
+ */
+int ufshcd_dme_get_attr(struct ufs_hba *hba, u32 attr_sel,
+   u32 *mib_val, u8 peer)
+{
+   struct uic_command uic_cmd = {0};
+   static const char *const action[] = {
+   dme-get,
+   dme-peer-get
+   };
+   const char *get = action[!!peer];
+   int ret;
+
+   uic_cmd.command = peer ?
+   UIC_CMD_DME_PEER_GET : UIC_CMD_DME_GET;
+   uic_cmd.argument1 = attr_sel;
+
+   ret = ufshcd_send_uic_cmd(hba, uic_cmd);
+   if (ret) {
+   dev_err(hba-dev, %s: attr-id 0x%x error code %d\n,
+   get, UIC_GET_ATTR_ID(attr_sel), ret);
+   goto out;
+   }
+
+   if (mib_val)
+   *mib_val = uic_cmd.argument3;
+out:
+   return ret;
+}
+EXPORT_SYMBOL_GPL(ufshcd_dme_get_attr);
+
+/**
  * ufshcd_complete_dev_init() - checks device readiness
  * hba: per-adapter instance
  *
@@ -1912,6 +1998,8 @@ static void ufshcd_uic_cmd_compl(struct ufs_hba *hba)
if (hba-active_uic_cmd) {
hba-active_uic_cmd-argument2 |=
ufshcd_get_uic_cmd_result(hba);
+   hba-active_uic_cmd-argument3 =
+   ufshcd_get_dme_attr_val(hba);
complete(hba-active_uic_cmd-done);
}
 }
diff --git a/drivers/scsi/ufs/ufshcd.h b/drivers/scsi/ufs/ufshcd.h
index 8f5624e..ab1518d 100644
--- a/drivers/scsi/ufs/ufshcd.h
+++ b/drivers/scsi/ufs/ufshcd.h
@@ -275,4 +275,55 @@ static inline void check_upiu_size(void)
 extern int ufshcd_runtime_suspend(struct ufs_hba *hba);
 extern int ufshcd_runtime_resume(struct ufs_hba *hba);
 extern int ufshcd_runtime_idle(struct ufs_hba *hba);
+extern int ufshcd_dme_set_attr(struct ufs_hba *hba, u32 attr_sel,
+  u8 attr_set, u32 mib_val, u8 peer);
+extern int ufshcd_dme_get_attr(struct ufs_hba *hba, u32 attr_sel,
+  u32 *mib_val, u8 peer);
+
+/* UIC command interfaces for DME primitives */
+#define DME_LOCAL  0
+#define DME_PEER   1
+#define ATTR_SET_NOR   0   /* NORMAL */
+#define ATTR_SET_ST1   /* STATIC */
+
+static inline int ufshcd_dme_set(struct ufs_hba *hba, u32 attr_sel,
+u32 mib_val)

[PATCH 5/6] scsi: ufs: add operation for the uic power mode change

2013-08-31 Thread Santosh Y
From: Seungwon Jeon tgih@samsung.com

Setting PA_PWRMode using DME_SET triggers the power mode
change. And then the result will be given by the HCS.UPMCRS.
This operation should be done atomically.

Signed-off-by: Seungwon Jeon tgih@samsung.com
Reviewed-by: Subhash Jadavani subha...@codeaurora.org
Tested-by: Yaniv Gardi yga...@codeaurora.org
Signed-off-by: Santosh Y santos...@gmail.com

diff --git a/drivers/scsi/ufs/ufshcd.c b/drivers/scsi/ufs/ufshcd.c
index 03ff4da..4c6d891 100644
--- a/drivers/scsi/ufs/ufshcd.c
+++ b/drivers/scsi/ufs/ufshcd.c
@@ -36,9 +36,11 @@
 #include linux/async.h
 
 #include ufshcd.h
+#include unipro.h
 
 #define UFSHCD_ENABLE_INTRS(UTP_TRANSFER_REQ_COMPL |\
 UTP_TASK_REQ_COMPL |\
+UIC_POWER_MODE |\
 UFSHCD_ERROR_MASK)
 /* UIC command timeout, unit: ms */
 #define UIC_CMD_TIMEOUT500
@@ -520,6 +522,18 @@ static inline bool ufshcd_ready_for_uic_cmd(struct ufs_hba 
*hba)
 }
 
 /**
+ * ufshcd_get_upmcrs - Get the power mode change request status
+ * @hba: Pointer to adapter instance
+ *
+ * This function gets the UPMCRS field of HCS register
+ * Returns value of UPMCRS field
+ */
+static inline u8 ufshcd_get_upmcrs(struct ufs_hba *hba)
+{
+   return (ufshcd_readl(hba, REG_CONTROLLER_STATUS)  8)  0x7;
+}
+
+/**
  * ufshcd_dispatch_uic_cmd - Dispatch UIC commands to unipro layers
  * @hba: per adapter instance
  * @uic_cmd: UIC command
@@ -1526,6 +1540,64 @@ out:
 EXPORT_SYMBOL_GPL(ufshcd_dme_get_attr);
 
 /**
+ * ufshcd_uic_change_pwr_mode - Perform the UIC power mode chage
+ * using DME_SET primitives.
+ * @hba: per adapter instance
+ * @mode: powr mode value
+ *
+ * Returns 0 on success, non-zero value on failure
+ */
+int ufshcd_uic_change_pwr_mode(struct ufs_hba *hba, u8 mode)
+{
+   struct uic_command uic_cmd = {0};
+   struct completion pwr_done;
+   unsigned long flags;
+   u8 status;
+   int ret;
+
+   uic_cmd.command = UIC_CMD_DME_SET;
+   uic_cmd.argument1 = UIC_ARG_MIB(PA_PWRMODE);
+   uic_cmd.argument3 = mode;
+   init_completion(pwr_done);
+
+   mutex_lock(hba-uic_cmd_mutex);
+
+   spin_lock_irqsave(hba-host-host_lock, flags);
+   hba-pwr_done = pwr_done;
+   spin_unlock_irqrestore(hba-host-host_lock, flags);
+   ret = __ufshcd_send_uic_cmd(hba, uic_cmd);
+   if (ret) {
+   dev_err(hba-dev,
+   pwr mode change with mode 0x%x uic error %d\n,
+   mode, ret);
+   goto out;
+   }
+
+   if (!wait_for_completion_timeout(hba-pwr_done,
+msecs_to_jiffies(UIC_CMD_TIMEOUT))) {
+   dev_err(hba-dev,
+   pwr mode change with mode 0x%x completion timeout\n,
+   mode);
+   ret = -ETIMEDOUT;
+   goto out;
+   }
+
+   status = ufshcd_get_upmcrs(hba);
+   if (status != PWR_LOCAL) {
+   dev_err(hba-dev,
+   pwr mode change failed, host umpcrs:0x%x\n,
+   status);
+   ret = (status != PWR_OK) ? status : -1;
+   }
+out:
+   spin_lock_irqsave(hba-host-host_lock, flags);
+   hba-pwr_done = NULL;
+   spin_unlock_irqrestore(hba-host-host_lock, flags);
+   mutex_unlock(hba-uic_cmd_mutex);
+   return ret;
+}
+
+/**
  * ufshcd_complete_dev_init() - checks device readiness
  * hba: per-adapter instance
  *
@@ -1992,16 +2064,20 @@ ufshcd_transfer_rsp_status(struct ufs_hba *hba, struct 
ufshcd_lrb *lrbp)
 /**
  * ufshcd_uic_cmd_compl - handle completion of uic command
  * @hba: per adapter instance
+ * @intr_status: interrupt status generated by the controller
  */
-static void ufshcd_uic_cmd_compl(struct ufs_hba *hba)
+static void ufshcd_uic_cmd_compl(struct ufs_hba *hba, u32 intr_status)
 {
-   if (hba-active_uic_cmd) {
+   if ((intr_status  UIC_COMMAND_COMPL)  hba-active_uic_cmd) {
hba-active_uic_cmd-argument2 |=
ufshcd_get_uic_cmd_result(hba);
hba-active_uic_cmd-argument3 =
ufshcd_get_dme_attr_val(hba);
complete(hba-active_uic_cmd-done);
}
+
+   if ((intr_status  UIC_POWER_MODE)  hba-pwr_done)
+   complete(hba-pwr_done);
 }
 
 /**
@@ -2451,8 +2527,8 @@ static void ufshcd_sl_intr(struct ufs_hba *hba, u32 
intr_status)
if (hba-errors)
ufshcd_check_errors(hba);
 
-   if (intr_status  UIC_COMMAND_COMPL)
-   ufshcd_uic_cmd_compl(hba);
+   if (intr_status  UFSHCD_UIC_MASK)
+   ufshcd_uic_cmd_compl(hba, intr_status);
 
if (intr_status  UTP_TASK_REQ_COMPL)
ufshcd_tmc_handler(hba);
diff --git a/drivers/scsi/ufs/ufshcd.h b/drivers/scsi/ufs/ufshcd.h
index ab1518d..ecff83d 100644
--- a/drivers/scsi/ufs/ufshcd.h
+++ 

[PATCH 6/6] scsi: ufs: configure the attribute for power mode

2013-08-31 Thread Santosh Y
From: Seungwon Jeon tgih@samsung.com

UIC attributes can be set with using DME_SET command for
power mode change. For configuration the link capability
attributes are used, which is updated after successful
link startup.

Signed-off-by: Seungwon Jeon tgih@samsung.com
Reviewed-by: Subhash Jadavani subha...@codeaurora.org
Signed-off-by: Santosh Y santos...@gmail.com

diff --git a/drivers/scsi/ufs/ufshcd.c b/drivers/scsi/ufs/ufshcd.c
index 4c6d891..d7a373f 100644
--- a/drivers/scsi/ufs/ufshcd.c
+++ b/drivers/scsi/ufs/ufshcd.c
@@ -1598,6 +1598,70 @@ out:
 }
 
 /**
+ * ufshcd_config_max_pwr_mode - Set  Change power mode with
+ * maximum capability attribute information.
+ * @hba: per adapter instance
+ *
+ * Returns 0 on success, non-zero value on failure
+ */
+static int ufshcd_config_max_pwr_mode(struct ufs_hba *hba)
+{
+   enum {RX = 0, TX = 1};
+   u32 lanes[] = {1, 1};
+   u32 gear[] = {1, 1};
+   u8 pwr[] = {FASTAUTO_MODE, FASTAUTO_MODE};
+   int ret;
+
+   /* Get the connected lane count */
+   ufshcd_dme_get(hba, UIC_ARG_MIB(PA_CONNECTEDRXDATALANES), lanes[RX]);
+   ufshcd_dme_get(hba, UIC_ARG_MIB(PA_CONNECTEDTXDATALANES), lanes[TX]);
+
+   /*
+* First, get the maximum gears of HS speed.
+* If a zero value, it means there is no HSGEAR capability.
+* Then, get the maximum gears of PWM speed.
+*/
+   ufshcd_dme_get(hba, UIC_ARG_MIB(PA_MAXRXHSGEAR), gear[RX]);
+   if (!gear[RX]) {
+   ufshcd_dme_get(hba, UIC_ARG_MIB(PA_MAXRXPWMGEAR), gear[RX]);
+   pwr[RX] = SLOWAUTO_MODE;
+   }
+
+   ufshcd_dme_peer_get(hba, UIC_ARG_MIB(PA_MAXRXHSGEAR), gear[TX]);
+   if (!gear[TX]) {
+   ufshcd_dme_peer_get(hba, UIC_ARG_MIB(PA_MAXRXPWMGEAR),
+   gear[TX]);
+   pwr[TX] = SLOWAUTO_MODE;
+   }
+
+   /*
+* Configure attributes for power mode change with below.
+* - PA_RXGEAR, PA_ACTIVERXDATALANES, PA_RXTERMINATION,
+* - PA_TXGEAR, PA_ACTIVETXDATALANES, PA_TXTERMINATION,
+* - PA_HSSERIES
+*/
+   ufshcd_dme_set(hba, UIC_ARG_MIB(PA_RXGEAR), gear[RX]);
+   ufshcd_dme_set(hba, UIC_ARG_MIB(PA_ACTIVERXDATALANES), lanes[RX]);
+   if (pwr[RX] == FASTAUTO_MODE)
+   ufshcd_dme_set(hba, UIC_ARG_MIB(PA_RXTERMINATION), TRUE);
+
+   ufshcd_dme_set(hba, UIC_ARG_MIB(PA_TXGEAR), gear[TX]);
+   ufshcd_dme_set(hba, UIC_ARG_MIB(PA_ACTIVETXDATALANES), lanes[TX]);
+   if (pwr[TX] == FASTAUTO_MODE)
+   ufshcd_dme_set(hba, UIC_ARG_MIB(PA_TXTERMINATION), TRUE);
+
+   if (pwr[RX] == FASTAUTO_MODE || pwr[TX] == FASTAUTO_MODE)
+   ufshcd_dme_set(hba, UIC_ARG_MIB(PA_HSSERIES), PA_HS_MODE_B);
+
+   ret = ufshcd_uic_change_pwr_mode(hba, pwr[RX]  4 | pwr[TX]);
+   if (ret)
+   dev_err(hba-dev,
+   pwr_mode: power mode change failed %d\n, ret);
+
+   return ret;
+}
+
+/**
  * ufshcd_complete_dev_init() - checks device readiness
  * hba: per-adapter instance
  *
@@ -2942,6 +3006,8 @@ static void ufshcd_async_scan(void *data, async_cookie_t 
cookie)
if (ret)
goto out;
 
+   ufshcd_config_max_pwr_mode(hba);
+
ret = ufshcd_verify_dev_init(hba);
if (ret)
goto out;
diff --git a/drivers/scsi/ufs/unipro.h b/drivers/scsi/ufs/unipro.h
index 3a710eb..0bb8041 100644
--- a/drivers/scsi/ufs/unipro.h
+++ b/drivers/scsi/ufs/unipro.h
@@ -72,6 +72,21 @@
 #define PA_STALLNOCONFIGTIME   0x15A3
 #define PA_SAVECONFIGTIME  0x15A4
 
+/* PA power modes */
+enum {
+   FAST_MODE   = 1,
+   SLOW_MODE   = 2,
+   FASTAUTO_MODE   = 4,
+   SLOWAUTO_MODE   = 5,
+   UNCHANGED   = 7,
+};
+
+/* PA TX/RX Frequency Series */
+enum {
+   PA_HS_MODE_A= 1,
+   PA_HS_MODE_B= 2,
+};
+
 /*
  * Data Link Layer Attributes
  */
@@ -127,4 +142,10 @@
 #define T_TC0TXMAXSDUSIZE  0x4060
 #define T_TC1TXMAXSDUSIZE  0x4061
 
+/* Boolean attribute values */
+enum {
+   FALSE = 0,
+   TRUE,
+};
+
 #endif /* _UNIPRO_H_ */
-- 
1.8.4

--
To unsubscribe from this list: send the line unsubscribe linux-scsi in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html


[Bug 60758] module scsi_wait_scan not found kernel panic on boot

2013-08-31 Thread bugzilla-daemon
https://bugzilla.kernel.org/show_bug.cgi?id=60758

--- Comment #8 from zakrzews...@wp.pl ---
Yes, I can test ;)

-- 
You are receiving this mail because:
You are the assignee for the bug.
--
To unsubscribe from this list: send the line unsubscribe linux-scsi in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html


[GIT PULL] SCSI fixes for 3.11-rc7

2013-08-31 Thread James Bottomley
This is a bug fix for the pm80xx driver.  It turns out that when the new
hardware support was added in 3.10 the IO command size was kept at the
old hard coded value.  This means that the driver attaches to some new
cards and then simply hangs the system.

The patch is available here:

git://git.kernel.org/pub/scm/linux/kernel/git/jejb/scsi.git scsi-fixes

The short changelog is:

Hans Verkuil (1):
  pm80xx: fix Adaptec 71605H hang

And the diffstat

 drivers/scsi/pm8001/pm8001_hwi.c | 4 ++--
 drivers/scsi/pm8001/pm80xx_hwi.c | 4 ++--
 2 files changed, 4 insertions(+), 4 deletions(-)

With full diff attached below.

James

---

diff --git a/drivers/scsi/pm8001/pm8001_hwi.c b/drivers/scsi/pm8001/pm8001_hwi.c
index 5456f5c..4a21957 100644
--- a/drivers/scsi/pm8001/pm8001_hwi.c
+++ b/drivers/scsi/pm8001/pm8001_hwi.c
@@ -221,7 +221,7 @@ static void init_default_table_values(struct 
pm8001_hba_info *pm8001_ha)
pm8001_ha-main_cfg_tbl.pm8001_tbl.fatal_err_interrupt  = 0x01;
for (i = 0; i  PM8001_MAX_INB_NUM; i++) {
pm8001_ha-inbnd_q_tbl[i].element_pri_size_cnt  =
-   PM8001_MPI_QUEUE | (64  16) | (0x0030);
+   PM8001_MPI_QUEUE | (pm8001_ha-iomb_size  16) | 
(0x0030);
pm8001_ha-inbnd_q_tbl[i].upper_base_addr   =
pm8001_ha-memoryMap.region[IB + i].phys_addr_hi;
pm8001_ha-inbnd_q_tbl[i].lower_base_addr   =
@@ -247,7 +247,7 @@ static void init_default_table_values(struct 
pm8001_hba_info *pm8001_ha)
}
for (i = 0; i  PM8001_MAX_OUTB_NUM; i++) {
pm8001_ha-outbnd_q_tbl[i].element_size_cnt =
-   PM8001_MPI_QUEUE | (64  16) | (0x0130);
+   PM8001_MPI_QUEUE | (pm8001_ha-iomb_size  16) | 
(0x0130);
pm8001_ha-outbnd_q_tbl[i].upper_base_addr  =
pm8001_ha-memoryMap.region[OB + i].phys_addr_hi;
pm8001_ha-outbnd_q_tbl[i].lower_base_addr  =
diff --git a/drivers/scsi/pm8001/pm80xx_hwi.c b/drivers/scsi/pm8001/pm80xx_hwi.c
index 7f77210..9f91030 100644
--- a/drivers/scsi/pm8001/pm80xx_hwi.c
+++ b/drivers/scsi/pm8001/pm80xx_hwi.c
@@ -275,7 +275,7 @@ static void init_default_table_values(struct 
pm8001_hba_info *pm8001_ha)
 
for (i = 0; i  PM8001_MAX_SPCV_INB_NUM; i++) {
pm8001_ha-inbnd_q_tbl[i].element_pri_size_cnt  =
-   PM8001_MPI_QUEUE | (64  16) | (0x0030);
+   PM8001_MPI_QUEUE | (pm8001_ha-iomb_size  16) | 
(0x0030);
pm8001_ha-inbnd_q_tbl[i].upper_base_addr   =
pm8001_ha-memoryMap.region[IB + i].phys_addr_hi;
pm8001_ha-inbnd_q_tbl[i].lower_base_addr   =
@@ -301,7 +301,7 @@ static void init_default_table_values(struct 
pm8001_hba_info *pm8001_ha)
}
for (i = 0; i  PM8001_MAX_SPCV_OUTB_NUM; i++) {
pm8001_ha-outbnd_q_tbl[i].element_size_cnt =
-   PM8001_MPI_QUEUE | (64  16) | (0x0130);
+   PM8001_MPI_QUEUE | (pm8001_ha-iomb_size  16) | 
(0x0130);
pm8001_ha-outbnd_q_tbl[i].upper_base_addr  =
pm8001_ha-memoryMap.region[OB + i].phys_addr_hi;
pm8001_ha-outbnd_q_tbl[i].lower_base_addr  =


--
To unsubscribe from this list: send the line unsubscribe linux-scsi in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html


[Bug 60758] module scsi_wait_scan not found kernel panic on boot

2013-08-31 Thread bugzilla-daemon
https://bugzilla.kernel.org/show_bug.cgi?id=60758

--- Comment #9 from zakrzews...@wp.pl ---
I will booting with these options:

timeout 0
default 0

title CentOS (3.10.10-1.el6.elrepo.x86_64)
root (hd0,1)
kernel /vmlinuz-3.10.10-1.el6.elrepo.x86_64 ro root=/dev/md2 rd_NO_LUKS
rd_NO_DM nomodeset crashkernel=auto SYSFONT=latarcyrheb-sun16 LANG=en_US.UTF-8
KEYTABLE=de scsi_mod.scan=sync
initrd /initramfs-3.10.10-1.el6.elrepo.x86_64.img

-- 
You are receiving this mail because:
You are the assignee for the bug.
--
To unsubscribe from this list: send the line unsubscribe linux-scsi in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html


[Bug 60758] module scsi_wait_scan not found kernel panic on boot

2013-08-31 Thread bugzilla-daemon
https://bugzilla.kernel.org/show_bug.cgi?id=60758

--- Comment #10 from zakrzews...@wp.pl ---
Made a mistake, so once again:

timeout 0
default 0

title CentOS (3.10.10-1.el6.elrepo.x86_64)
root (hd0,1)
kernel /vmlinuz-3.10.10-1.el6.elrepo.x86_64 ro root=/dev/md2 rd_NO_LUKS
rd_NO_DM nomodeset crashkernel=auto SYSFONT=latarcyrheb-sun16 LANG=en_US.UTF-8
KEYTABLE=de scsi_mod.scan=async
initrd /initramfs-3.10.10-1.el6.elrepo.x86_64.img

-- 
You are receiving this mail because:
You are the assignee for the bug.
--
To unsubscribe from this list: send the line unsubscribe linux-scsi in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html


[PATCH] scsi: bfa: Use ARRAY_SIZE

2013-08-31 Thread Christoph Jaeger
Use ARRAY_SIZE to calculate the size of an array.

Signed-off-by: Christoph Jaeger christophjae...@linux.com
---
 drivers/scsi/bfa/bfa_core.c |  2 +-
 drivers/scsi/bfa/bfa_fcs.c  | 10 --
 2 files changed, 5 insertions(+), 7 deletions(-)

diff --git a/drivers/scsi/bfa/bfa_core.c b/drivers/scsi/bfa/bfa_core.c
index 520540a..4cc8763 100644
--- a/drivers/scsi/bfa/bfa_core.c
+++ b/drivers/scsi/bfa/bfa_core.c
@@ -1941,7 +1941,7 @@ bfa_get_pciids(struct bfa_pciid_s **pciids, int *npciids)
{BFA_PCI_VENDOR_ID_BROCADE, BFA_PCI_DEVICE_ID_CT_FC},
};
 
-   *npciids = sizeof(__pciids) / sizeof(__pciids[0]);
+   *npciids = ARRAY_SIZE(__pciids);
*pciids = __pciids;
 }
 
diff --git a/drivers/scsi/bfa/bfa_fcs.c b/drivers/scsi/bfa/bfa_fcs.c
index a3ab5cc..6a8 100644
--- a/drivers/scsi/bfa/bfa_fcs.c
+++ b/drivers/scsi/bfa/bfa_fcs.c
@@ -81,7 +81,7 @@ bfa_fcs_attach(struct bfa_fcs_s *fcs, struct bfa_s *bfa, 
struct bfad_s *bfad,
bfa-fcs = BFA_TRUE;
fcbuild_init();
 
-   for (i = 0; i  sizeof(fcs_modules) / sizeof(fcs_modules[0]); i++) {
+   for (i = 0; i  ARRAY_SIZE(fcs_modules); i++) {
mod = fcs_modules[i];
if (mod-attach)
mod-attach(fcs);
@@ -97,7 +97,7 @@ bfa_fcs_init(struct bfa_fcs_s *fcs)
int i;
struct bfa_fcs_mod_s  *mod;
 
-   for (i = 0; i  sizeof(fcs_modules) / sizeof(fcs_modules[0]); i++) {
+   for (i = 0; i  ARRAY_SIZE(fcs_modules); i++) {
mod = fcs_modules[i];
if (mod-modinit)
mod-modinit(fcs);
@@ -180,13 +180,11 @@ void
 bfa_fcs_exit(struct bfa_fcs_s *fcs)
 {
struct bfa_fcs_mod_s  *mod;
-   int nmods, i;
+   int i;
 
bfa_wc_init(fcs-wc, bfa_fcs_exit_comp, fcs);
 
-   nmods = sizeof(fcs_modules) / sizeof(fcs_modules[0]);
-
-   for (i = 0; i  nmods; i++) {
+   for (i = 0; i  ARRAY_SIZE(fcs_modules); i++) {
 
mod = fcs_modules[i];
if (mod-modexit) {
-- 
1.8.3.1

--
To unsubscribe from this list: send the line unsubscribe linux-scsi in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html


Re: [PATCH] scsi disk: Use its own buffer for the vpd request

2013-08-31 Thread Nix
On 31 Aug 2013, Greg KH said:
 On Fri, Aug 30, 2013 at 11:01:56AM +0100, Nix wrote:
 On 1 Aug 2013, Bernd Schubert said:
 
  Once I noticed that scsi_get_vpd_page() works fine from other function
  calls and that it is not 0x89, but already 0x0 that fails fixing it became
  easy.
 
  Nix, any chance you could verify it also works for you?
 
 As an aside, this commit does indeed fix the bug I reported, but it
 doesn't seem to have gone anywhere, not even into -stable.
 
 Is it held up somehow?
 
 (stable has
 
 commit 0ac10bd036f0f3b8ce7ac2390446eab9531c72eb
 Author: Martin K. Petersen martin.peter...@oracle.com
 Date:   Tue Jul 30 22:58:34 2013 -0400
 
 SCSI: Don't attempt to send extended INQUIRY command if skip_vpd_pages 
 is set
 
 which IIRC was eventually found not to be necessary, because this fix
 works fine instead?)
 
 Possibly I'm misremembering the order of month-old events and Martin's
 fix was eventually considered better... in which case, sorry for the noise.

 Is that other patch even needed anymore, now that Martin's patch is in
 the tree?

My understanding is that this patch is rather better, since Martin's
patch prevents sending of the extended INQUIRY command at all: this one
just uses a reduced buffer size, but can still issue the command. (But I
may be misunderstanding everything.)

-- 
NULL  (void)
--
To unsubscribe from this list: send the line unsubscribe linux-scsi in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html


[Bug 60758] module scsi_wait_scan not found kernel panic on boot

2013-08-31 Thread bugzilla-daemon
https://bugzilla.kernel.org/show_bug.cgi?id=60758

--- Comment #11 from Jeff Zhou jz.researc...@yahoo.com ---
Thanks. I am a bit curious about the description in Kconfig,
since the scsi_wait_scan.ko was built from scsi_wait_scan.c, which was removed
in v.3.6.
How to refer a non-exist module, as described in the section of config
SCSI_SCAN_ASYNC

From v.3.5.7 to v.3.6.1, there is a change in source code, but it seems the
documentation in Kconfig has not been updated.




(In reply to Alan Bartlett from comment #7)
 (In reply to Jeff Zhou from comment #5)
  If your system fails by module scsi_wait_scan not found, then it could be
  the init script issue in your CentOS box.
  
  The last kernel with scsi_wait_scan.ko is v3.5.7, it has been removed ever
  since v3.6. Any init script for 3.10 should not use that module.
  
  
  Another point is in your config, the CONFIG_SCSI_SCAN_ASYNC is not set, try
  to turn it into Y and see what's happening.
 
 Jeff, 
 
 For the fuller picture please see --
 
 http://elrepo.org/bugs/view.php?id=401
 
 This non-booting issue only occurs with one system. The reporter has other
 systems which do boot correctly using the same kernel(s).
 
 As was explained in the referenced bug report (note 3235), the mention of
 module scsi_wait_scan not found is a red-herring.
 
 Note the following section from the 3.10.10 drivers/scsi/Kconfig file --
 
 [quote]
 config SCSI_SCAN_ASYNC
 bool Asynchronous SCSI scanning
 depends on SCSI
 help
   The SCSI subsystem can probe for devices while the rest of the
   system continues booting, and even probe devices on different
   busses in parallel, leading to a significant speed-up.
 
   If you have built SCSI as modules, enabling this option can
   be a problem as the devices may not have been found by the
   time your system expects them to have been.  You can load the
   scsi_wait_scan module to ensure that all scans have completed.
   If you build your SCSI drivers into the kernel, then everything
   will work fine if you say Y here.
 
   You can override this choice by specifying scsi_mod.scan=sync
   or async on the kernel's command line.
 [/quote]
 
 It still makes a reference to the scsi_wait_scan module and advises against
 setting SCSI_SCAN_ASYNC=y when scsi drivers have been built as modules.
 
 It is unnecessary to build a new kernel to test, as per your last point.
 Just appending scsi_mod.scan=async to the kernel boot line will be
 sufficient.
 
 Perhaps the reporter will test with that and then report back?
 
 Alan / burakkucat.

-- 
You are receiving this mail because:
You are the assignee for the bug.
--
To unsubscribe from this list: send the line unsubscribe linux-scsi in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html


[Bug 60758] module scsi_wait_scan not found kernel panic on boot

2013-08-31 Thread bugzilla-daemon
https://bugzilla.kernel.org/show_bug.cgi?id=60758

--- Comment #12 from Jeff Zhou jz.researc...@yahoo.com ---
(In reply to zakrzewskim from comment #10)
 Made a mistake, so once again:
 
 timeout 0
 default 0
 
 title CentOS (3.10.10-1.el6.elrepo.x86_64)
 root (hd0,1)
 kernel /vmlinuz-3.10.10-1.el6.elrepo.x86_64 ro root=/dev/md2 rd_NO_LUKS
 rd_NO_DM nomodeset crashkernel=auto SYSFONT=latarcyrheb-sun16
 LANG=en_US.UTF-8 KEYTABLE=de scsi_mod.scan=async
 initrd /initramfs-3.10.10-1.el6.elrepo.x86_64.img

In thread
http://elrepo.org/bugs/view.php?id=401

says 3.10.4-1 boots fine, would you run lsinitramfs to see if scsi_scan_wait
module is there? From changelog 3.10.4 to 3.10.5, I did not see any
modifications to that.

-- 
You are receiving this mail because:
You are the assignee for the bug.
--
To unsubscribe from this list: send the line unsubscribe linux-scsi in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html


[Bug 60758] module scsi_wait_scan not found kernel panic on boot

2013-08-31 Thread bugzilla-daemon
https://bugzilla.kernel.org/show_bug.cgi?id=60758

--- Comment #13 from zakrzews...@wp.pl ---
lsinitramfs
-bash: lsinitramfs: command not found

What do I need to install ?

-- 
You are receiving this mail because:
You are the assignee for the bug.
--
To unsubscribe from this list: send the line unsubscribe linux-scsi in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html


[Bug 60758] module scsi_wait_scan not found kernel panic on boot

2013-08-31 Thread bugzilla-daemon
https://bugzilla.kernel.org/show_bug.cgi?id=60758

--- Comment #14 from zakrzews...@wp.pl ---
The server does not boot with kernel 3.10.10-1.el6.elrepo.x86_64 :/

-- 
You are receiving this mail because:
You are the assignee for the bug.
--
To unsubscribe from this list: send the line unsubscribe linux-scsi in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html


[Bug 60758] module scsi_wait_scan not found kernel panic on boot

2013-08-31 Thread bugzilla-daemon
https://bugzilla.kernel.org/show_bug.cgi?id=60758

--- Comment #15 from Akemi Yagi tora...@elrepo.org ---
(In reply to zakrzewskim from comment #13)
 lsinitramfs
 -bash: lsinitramfs: command not found
 
 What do I need to install ?

You can use lsinitrd that is included in the dracut package.

-- 
You are receiving this mail because:
You are the assignee for the bug.
--
To unsubscribe from this list: send the line unsubscribe linux-scsi in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html


Re: [GIT PULL -v2] target fixes for v3.11

2013-08-31 Thread Nicholas A. Bellinger
Hi again Linus,

On Fri, 2013-08-30 at 20:53 -0700, Nicholas A. Bellinger wrote:
 Hi Linus,
 
 Here is a -v2 PULL request for the current set of target-pending fixes
 for v3.11.  These fixes have not hit mainline yet, so I'm resending them
 now to be sure they hit v3.11 before the merge window opens.  Please let
 me know if you have any concerns with the series.
 
 The original PULL request from last Saturday is here:
 
 http://marc.info/?l=linux-kernelm=137737916904812w=2
 
 Please go ahead and pull from:
 
   git://git.kernel.org/pub/scm/linux/kernel/git/nab/target-pending.git master
 
 The first patch is to address a long standing issue where INQUIRY vendor
 + model response data was not correctly padded with ASCII spaces,
 causing MSFT and Falconstor multipath stacks to not function with our
 LUNs.
 
 The remaining patches are additional iscsi-target regression fixes for
 the post = v3.10 iser-target changes.  The second and third are failure
 cases that have appeared during further testing, and the forth is only
 reproducible with malformed NOP packets.
 
 The last three patches are CC'ed to stable, and the first one will be
 sent to Greg-KH separately.
 

One more late v3.11 specific regression fix has been pushed into
target-pending/master for this series.

The updated diffstat should read:

Nicholas Bellinger (5):
  target: Fix trailing ASCII space usage in INQUIRY vendor+model
  iscsi-target: Fix ImmediateData=Yes failure regression in = v3.10
  iscsi-target: Fix iscsit_transport reference leak during NP thread
reset
  iscsi-target: Fix potential NULL pointer in solicited NOPOUT reject
  target: Fix se_cmd-state_list leak regression during WRITE failure

 drivers/target/iscsi/iscsi_target.c   |   17 ++---
 drivers/target/iscsi/iscsi_target_login.c |9 -
 drivers/target/target_core_spc.c  |9 ++---
 drivers/target/target_core_transport.c|   11 +++
 4 files changed, 31 insertions(+), 15 deletions(-)

The full diff is included below.

Please PULL.

Thank you,

--nab

diff --git a/drivers/target/iscsi/iscsi_target.c 
b/drivers/target/iscsi/iscsi_target.c
index f73da43..3a17930 100644
--- a/drivers/target/iscsi/iscsi_target.c
+++ b/drivers/target/iscsi/iscsi_target.c
@@ -1086,7 +1086,6 @@ int iscsit_process_scsi_cmd(struct iscsi_conn *conn, 
struct iscsi_cmd *cmd,
if (cmd-reject_reason)
return 0;
 
-   target_put_sess_cmd(conn-sess-se_sess, cmd-se_cmd);
return 1;
}
/*
@@ -1124,14 +1123,10 @@ after_immediate_data:
 */
cmdsn_ret = iscsit_sequence_cmd(cmd-conn, cmd,
(unsigned char *)hdr, hdr-cmdsn);
-   if (cmdsn_ret == CMDSN_ERROR_CANNOT_RECOVER) {
+   if (cmdsn_ret == CMDSN_ERROR_CANNOT_RECOVER)
return -1;
-   } else if (cmdsn_ret == CMDSN_LOWER_THAN_EXP) {
-   target_put_sess_cmd(conn-sess-se_sess, cmd-se_cmd);
-   return 0;
-   }
 
-   if (cmd-sense_reason) {
+   if (cmd-sense_reason || cmdsn_ret == CMDSN_LOWER_THAN_EXP) {
int rc;
 
rc = iscsit_dump_data_payload(cmd-conn,
@@ -1527,6 +1522,10 @@ int iscsit_setup_nop_out(struct iscsi_conn *conn, struct 
iscsi_cmd *cmd,
if (hdr-itt == RESERVED_ITT  !(hdr-opcode  ISCSI_OP_IMMEDIATE)) {
pr_err(NOPOUT ITT is reserved, but Immediate Bit is
 not set, protocol error.\n);
+   if (!cmd)
+   return iscsit_add_reject(conn, 
ISCSI_REASON_PROTOCOL_ERROR,
+(unsigned char *)hdr);
+
return iscsit_reject_cmd(cmd, ISCSI_REASON_PROTOCOL_ERROR,
 (unsigned char *)hdr);
}
@@ -1536,6 +1535,10 @@ int iscsit_setup_nop_out(struct iscsi_conn *conn, struct 
iscsi_cmd *cmd,
 greater than MaxXmitDataSegmentLength: %u, protocol
 error.\n, payload_length,
conn-conn_ops-MaxXmitDataSegmentLength);
+   if (!cmd)
+   return iscsit_add_reject(conn, 
ISCSI_REASON_PROTOCOL_ERROR,
+(unsigned char *)hdr);
+
return iscsit_reject_cmd(cmd, ISCSI_REASON_PROTOCOL_ERROR,
 (unsigned char *)hdr);
}
diff --git a/drivers/target/iscsi/iscsi_target_login.c 
b/drivers/target/iscsi/iscsi_target_login.c
index 3402241..bc788c5 100644
--- a/drivers/target/iscsi/iscsi_target_login.c
+++ b/drivers/target/iscsi/iscsi_target_login.c
@@ -1163,12 +1163,11 @@ static int __iscsi_target_login_thread(struct iscsi_np 
*np)
if (np-np_thread_state == ISCSI_NP_THREAD_RESET) {

[PATCH 1/2] megaraid_sas: Add High Availability clustering support using shared Logical Disks

2013-08-31 Thread adam radford
James/linux-scsi,

The following patch for megaraid_sas will add support for High
Availability (HA)/clustering using shared Logical Disks.

Signed-off-by: Adam Radford aradf...@gmail.com

diff -Naur scsi-misc.old/drivers/scsi/megaraid/megaraid_sas_base.c
scsi-misc.new/drivers/scsi/megaraid/megaraid_sas_base.c
--- scsi-misc.old/drivers/scsi/megaraid/megaraid_sas_base.c 2013-08-31
16:17:56.907172388 -0700
+++ scsi-misc.new/drivers/scsi/megaraid/megaraid_sas_base.c 2013-08-31
16:23:31.077143117 -0700
@@ -92,6 +92,8 @@

 int megasas_transition_to_ready(struct megasas_instance *instance, int ocr);
 static int megasas_get_pd_list(struct megasas_instance *instance);
+static int megasas_ld_list_query(struct megasas_instance *instance,
+ u8 query_type);
 static int megasas_issue_init_mfi(struct megasas_instance *instance);
 static int megasas_register_aen(struct megasas_instance *instance,
  u32 seq_num, u32 class_locale_word);
@@ -3271,6 +3273,84 @@
 }

 /**
+ * megasas_ld_list_query - Returns FW's ld_list structure
+ * @instance: Adapter soft state
+ * @ld_list: ld_list structure
+ *
+ * Issues an internal command (DCMD) to get the FW's controller PD
+ * list structure.  This information is mainly used to find out SYSTEM
+ * supported by the FW.
+ */
+static int
+megasas_ld_list_query(struct megasas_instance *instance, u8 query_type)
+{
+ int ret = 0, ld_index = 0, ids = 0;
+ struct megasas_cmd *cmd;
+ struct megasas_dcmd_frame *dcmd;
+ struct MR_LD_TARGETID_LIST *ci;
+ dma_addr_t ci_h = 0;
+
+ cmd = megasas_get_cmd(instance);
+
+ if (!cmd) {
+ printk(KERN_WARNING
+   megasas:(megasas_ld_list_query): Failed to get cmd\n);
+ return -ENOMEM;
+ }
+
+ dcmd = cmd-frame-dcmd;
+
+ ci = pci_alloc_consistent(instance-pdev,
+  sizeof(struct MR_LD_TARGETID_LIST), ci_h);
+
+ if (!ci) {
+ printk(KERN_WARNING
+   megasas: Failed to alloc mem for ld_list_query\n);
+ megasas_return_cmd(instance, cmd);
+ return -ENOMEM;
+ }
+
+ memset(ci, 0, sizeof(*ci));
+ memset(dcmd-mbox.b, 0, MFI_MBOX_SIZE);
+
+ dcmd-mbox.b[0] = query_type;
+
+ dcmd-cmd = MFI_CMD_DCMD;
+ dcmd-cmd_status = 0xFF;
+ dcmd-sge_count = 1;
+ dcmd-flags = MFI_FRAME_DIR_READ;
+ dcmd-timeout = 0;
+ dcmd-data_xfer_len = sizeof(struct MR_LD_TARGETID_LIST);
+ dcmd-opcode = MR_DCMD_LD_LIST_QUERY;
+ dcmd-sgl.sge32[0].phys_addr = ci_h;
+ dcmd-sgl.sge32[0].length = sizeof(struct MR_LD_TARGETID_LIST);
+ dcmd-pad_0  = 0;
+
+ if (!megasas_issue_polled(instance, cmd)  !dcmd-cmd_status) {
+ ret = 0;
+ } else {
+ /* On failure, call older LD list DCMD */
+ ret = 1;
+ }
+
+ if ((ret == 0)  (ci-count = (MAX_LOGICAL_DRIVES))) {
+ memset(instance-ld_ids, 0xff, MEGASAS_MAX_LD_IDS);
+ for (ld_index = 0; ld_index  ci-count; ld_index++) {
+ ids = ci-targetId[ld_index];
+ instance-ld_ids[ids] = ci-targetId[ld_index];
+ }
+
+ }
+
+ pci_free_consistent(instance-pdev, sizeof(struct MR_LD_TARGETID_LIST),
+ci, ci_h);
+
+ megasas_return_cmd(instance, cmd);
+
+ return ret;
+}
+
+/**
  * megasas_get_controller_info - Returns FW's controller structure
  * @instance: Adapter soft state
  * @ctrl_info: Controller information structure
@@ -3648,7 +3728,9 @@
  megasas_get_pd_list(instance);

  memset(instance-ld_ids, 0xff, MEGASAS_MAX_LD_IDS);
- megasas_get_ld_list(instance);
+ if (megasas_ld_list_query(instance,
+  MR_LD_QUERY_TYPE_EXPOSED_TO_HOST))
+ megasas_get_ld_list(instance);

  ctrl_info = kmalloc(sizeof(struct megasas_ctrl_info), GFP_KERNEL);

@@ -5389,7 +5471,9 @@
  case MR_EVT_LD_OFFLINE:
  case MR_EVT_CFG_CLEARED:
  case MR_EVT_LD_DELETED:
- megasas_get_ld_list(instance);
+ if (megasas_ld_list_query(instance,
+ MR_LD_QUERY_TYPE_EXPOSED_TO_HOST))
+ megasas_get_ld_list(instance);
  for (i = 0; i  MEGASAS_MAX_LD_CHANNELS; i++) {
  for (j = 0;
  j  MEGASAS_MAX_DEV_PER_CHANNEL;
@@ -5399,7 +5483,7 @@
  (i * MEGASAS_MAX_DEV_PER_CHANNEL) + j;

  sdev1 = scsi_device_lookup(host,
- i + MEGASAS_MAX_LD_CHANNELS,
+ MEGASAS_MAX_PD_CHANNELS + i,
  j,
  0);

@@ -5418,7 +5502,9 @@
  doscan = 0;
  break;
  case MR_EVT_LD_CREATED:
- megasas_get_ld_list(instance);
+ if (megasas_ld_list_query(instance,
+ MR_LD_QUERY_TYPE_EXPOSED_TO_HOST))
+ megasas_get_ld_list(instance);
  for (i = 0; i  MEGASAS_MAX_LD_CHANNELS; i++) {
  for (j = 0;
  j  MEGASAS_MAX_DEV_PER_CHANNEL;
@@ -5427,14 +5513,14 @@
  (i * MEGASAS_MAX_DEV_PER_CHANNEL) + j;

  sdev1 = scsi_device_lookup(host,
- i+MEGASAS_MAX_LD_CHANNELS,
+ MEGASAS_MAX_PD_CHANNELS + i,
  j, 0);

  if (instance-ld_ids[ld_index] !=
  0xff) {
  if (!sdev1) {
  scsi_add_device(host,
- i + 2,
+ MEGASAS_MAX_PD_CHANNELS + i,
  j, 0);
  }
  }
@@ -5483,18 +5569,20 @@
  }
  }

- megasas_get_ld_list(instance);
+ if (megasas_ld_list_query(instance,
+  MR_LD_QUERY_TYPE_EXPOSED_TO_HOST))
+ megasas_get_ld_list(instance);
  for (i = 0; i  MEGASAS_MAX_LD_CHANNELS; i++) {
  for (j = 0; j  MEGASAS_MAX_DEV_PER_CHANNEL; j++) {
  ld_index =
  (i * MEGASAS_MAX_DEV_PER_CHANNEL) + j;

  sdev1 = scsi_device_lookup(host,
- i+MEGASAS_MAX_LD_CHANNELS, j, 0);
+ MEGASAS_MAX_PD_CHANNELS + i, 

[PATCH 0/2] megaraid_sas: Updates for scsi-misc

2013-08-31 Thread adam radford
James/linux-scsi,

The following small patch series for megaraid_sas brings the driver up
to v06.700.06.00-rc1:

1. Add High Availability clustering support using shared Logical Disks.
2. Version and Changelog update.

-Adam
--
To unsubscribe from this list: send the line unsubscribe linux-scsi in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html


[PATCH 2/2] megaraid_sas: Version and Changelog update

2013-08-31 Thread adam radford
James/linux-scsi,

This patch updates the megaraid_sas driver version and updates
Documentation/ChangeLog.megaraid_sas

Signed-off-by: Adam Radford aradf...@gmail.com

diff -Naur scsi-misc.old/Documentation/scsi/ChangeLog.megaraid_sas
scsi-misc.new/Documentation/scsi/ChangeLog.megaraid_sas
--- scsi-misc.old/Documentation/scsi/ChangeLog.megaraid_sas 2013-08-25
17:43:22.0 -0700
+++ scsi-misc.new/Documentation/scsi/ChangeLog.megaraid_sas 2013-08-31
16:09:54.273079869 -0700
@@ -1,3 +1,13 @@
+Release Date: Sat. Aug 31, 2013 17:00:00 PST 2013 -
+ (emaild-id:megaraidli...@lsi.com)
+ Adam Radford
+ Kashyap Desai
+ Sumit Saxena
+Current Version : 06.700.06.00-rc1
+Old Version : 06.600.18.00-rc1
+1. Add High Availability clustering support using shared Logical Disks.
+2. Version and Changelog update.
+---
 Release Date: Wed. May 15, 2013 17:00:00 PST 2013 -
  (emaild-id:megaraidli...@lsi.com)
  Adam Radford
diff -Naur scsi-misc.old/drivers/scsi/megaraid/megaraid_sas_base.c
scsi-misc.new/drivers/scsi/megaraid/megaraid_sas_base.c
--- scsi-misc.old/drivers/scsi/megaraid/megaraid_sas_base.c 2013-08-31
16:05:24.341172944 -0700
+++ scsi-misc.new/drivers/scsi/megaraid/megaraid_sas_base.c 2013-08-31
16:07:04.985077563 -0700
@@ -18,7 +18,7 @@
  *  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
  *
  *  FILE: megaraid_sas_base.c
- *  Version : 06.600.18.00-rc1
+ *  Version : 06.700.06.00-rc1
  *
  *  Authors: LSI Corporation
  *   Sreenivas Bagalkote
diff -Naur scsi-misc.old/drivers/scsi/megaraid/megaraid_sas.h
scsi-misc.new/drivers/scsi/megaraid/megaraid_sas.h
--- scsi-misc.old/drivers/scsi/megaraid/megaraid_sas.h 2013-08-31
16:05:24.394079466 -0700
+++ scsi-misc.new/drivers/scsi/megaraid/megaraid_sas.h 2013-08-31
16:06:48.461080925 -0700
@@ -33,9 +33,9 @@
 /*
  * MegaRAID SAS Driver meta data
  */
-#define MEGASAS_VERSION 06.600.18.00-rc1
-#define MEGASAS_RELDATE May. 15, 2013
-#define MEGASAS_EXT_VERSION Wed. May. 15 17:00:00 PDT 2013
+#define MEGASAS_VERSION 06.700.06.00-rc1
+#define MEGASAS_RELDATE Aug. 31, 2013
+#define MEGASAS_EXT_VERSION Sat. Aug. 31 17:00:00 PDT 2013

 /*
  * Device IDs


megaraid_sas.patch2
Description: Binary data


[Bug 60758] module scsi_wait_scan not found kernel panic on boot

2013-08-31 Thread bugzilla-daemon
https://bugzilla.kernel.org/show_bug.cgi?id=60758

--- Comment #16 from Alan Bartlett a...@elrepo.org ---
For completeness (so that we cover 'every angle') I have built a version of our
kernel-ml-3.10.10 package (64-bit) with CONFIG_SCSI_SCAN_ASYNC=y, as Jeff has
suggested. It is available to download from --

http://elrepo.org/people/ajb/tmp/

However I do not expect that will make any difference.

-- 
You are receiving this mail because:
You are the assignee for the bug.
--
To unsubscribe from this list: send the line unsubscribe linux-scsi in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html


[Bug 60758] module scsi_wait_scan not found kernel panic on boot

2013-08-31 Thread bugzilla-daemon
https://bugzilla.kernel.org/show_bug.cgi?id=60758

--- Comment #17 from zakrzews...@wp.pl ---
It doesn't work too. I don't know what's wrong. Only 3.10.4-1 works fine and I
need to stick with it :/

-- 
You are receiving this mail because:
You are the assignee for the bug.
--
To unsubscribe from this list: send the line unsubscribe linux-scsi in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html


[Bug 60758] module scsi_wait_scan not found kernel panic on boot

2013-08-31 Thread bugzilla-daemon
https://bugzilla.kernel.org/show_bug.cgi?id=60758

--- Comment #18 from Jeff Zhou jz.researc...@yahoo.com ---
(In reply to zakrzewskim from comment #17)
 It doesn't work too. I don't know what's wrong. Only 3.10.4-1 works fine and
 I need to stick with it :/

[1] May I know, do you have separate directories for each version of kernel
source during building/installation, or unpack different versions of kernel
source to the same folder to save some space while upgrading?

[2] Would you like to show a more complete booting log?

-- 
You are receiving this mail because:
You are the assignee for the bug.
--
To unsubscribe from this list: send the line unsubscribe linux-scsi in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html