mirror of https://lore.kernel.org/lkml/
 help / color / mirror / Atom feed
From: Sumit Saxena <sumit.saxena@avagotech.com>
To: Chen Gang <gang.chen.5i5j@gmail.com>,
	megaraidlinux@lsi.com, JBottomley@parallels.com
Cc: linux-scsi@vger.kernel.org, linux-kernel@vger.kernel.org
Subject: RE: [PATCH] drivers: scsi: megaraid: Add "megaraid_sas_internal.h" for internal shared functions using
Date: Mon, 17 Nov 2014 16:26:17 +0530	[thread overview]
Message-ID: <8a69defc3a5bf777a493e9b30b971c51@mail.gmail.com> (raw)
In-Reply-To: <545F3F2C.7060704@gmail.com>

>-----Original Message-----
>From: Chen Gang [mailto:gang.chen.5i5j@gmail.com]
>Sent: Sunday, November 09, 2014 3:47 PM
>To: megaraidlinux@lsi.com; JBottomley@parallels.com
>Cc: linux-scsi@vger.kernel.org; linux-kernel@vger.kernel.org
>Subject: [PATCH] drivers: scsi: megaraid: Add "megaraid_sas_internal.h"
for
>internal shared functions using
>
>For shared inline functions crossed source files, better to let it as
"static inline"
>in a header file. For extern functions, better to declare them in header
file.
>
>For the latest upstream gcc/binutiles (gcc 5 with ld 2.25.51), it will
cause
>building break (although it might be the gcc's or ld's issue), the
related error
>(with allmodconfig under tile):
>
>    MODPOST 4002 modules
>  ERROR: "megasas_return_cmd" [drivers/scsi/megaraid/megaraid_sas.ko]
>undefined!
>  ERROR: "megasas_is_ldio" [drivers/scsi/megaraid/megaraid_sas.ko]
>undefined!
>
>
>Signed-off-by: Chen Gang <gang.chen.5i5j@gmail.com>
>---
> drivers/scsi/megaraid/megaraid_sas_base.c     |  65 +----------------
> drivers/scsi/megaraid/megaraid_sas_fusion.c   |  38 +---------
> drivers/scsi/megaraid/megaraid_sas_internal.h | 100
>++++++++++++++++++++++++++
> 3 files changed, 102 insertions(+), 101 deletions(-)  create mode 100644
>drivers/scsi/megaraid/megaraid_sas_internal.h
>
>diff --git a/drivers/scsi/megaraid/megaraid_sas_base.c
>b/drivers/scsi/megaraid/megaraid_sas_base.c
>index f6a69a3..4a71c04 100644
>--- a/drivers/scsi/megaraid/megaraid_sas_base.c
>+++ b/drivers/scsi/megaraid/megaraid_sas_base.c
>@@ -57,6 +57,7 @@
> #include <scsi/scsi_tcq.h>
> #include "megaraid_sas_fusion.h"
> #include "megaraid_sas.h"
>+#include "megaraid_sas_internal.h"
>
> /*
>  * Number of sectors per IO command
>@@ -98,7 +99,6 @@ MODULE_VERSION(MEGASAS_VERSION);
>MODULE_AUTHOR("megaraidlinux@lsi.com");
> MODULE_DESCRIPTION("LSI MegaRAID SAS Driver");
>
>-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);
>@@ -155,9 +155,6 @@ static u32 support_device_change;
> /* define lock for aen poll */
> spinlock_t poll_aen_lock;
>
>-void
>-megasas_complete_cmd(struct megasas_instance *instance, struct
>megasas_cmd *cmd,
>-		     u8 alt_status);
> static u32
> megasas_read_fw_status_reg_gen2(struct megasas_register_set __iomem
>*regs);  static int @@ -170,26 +167,8 @@ u32
>megasas_build_and_issue_cmd(struct megasas_instance *instance,
> 			    struct scsi_cmnd *scmd);
> static void megasas_complete_cmd_dpc(unsigned long instance_addr); -void
>-megasas_release_fusion(struct megasas_instance *instance); -int -
>megasas_ioc_init_fusion(struct megasas_instance *instance); -void -
>megasas_free_cmds_fusion(struct megasas_instance *instance);
>-u8
>-megasas_get_map_info(struct megasas_instance *instance); -int -
>megasas_sync_map_info(struct megasas_instance *instance); -int -
>wait_and_poll(struct megasas_instance *instance, struct megasas_cmd
>*cmd,
>-	int seconds);
>-void megasas_reset_reply_desc(struct megasas_instance *instance); -int
>megasas_reset_fusion(struct Scsi_Host *shost, int iotimeout); -void
>megasas_fusion_ocr_wq(struct work_struct *work);  static int
>megasas_get_ld_vf_affiliation(struct megasas_instance *instance,
> 					 int initial);
>-int megasas_check_mpio_paths(struct megasas_instance *instance,
>-			     struct scsi_cmnd *scmd);
>
> void
> megasas_issue_dcmd(struct megasas_instance *instance, struct
>megasas_cmd *cmd) @@ -258,22 +237,6 @@ __megasas_return_cmd(struct
>megasas_instance *instance, struct megasas_cmd *cmd)  }
>
> /**
>- * megasas_return_cmd -	Return a cmd to free command pool
>- * @instance:		Adapter soft state
>- * @cmd:		Command packet to be returned to free command
>pool
>- */
>-inline void
>-megasas_return_cmd(struct megasas_instance *instance, struct
>megasas_cmd *cmd) -{
>-	unsigned long flags;
>-
>-	spin_lock_irqsave(&instance->mfi_pool_lock, flags);
>-	__megasas_return_cmd(instance, cmd);
>-	spin_unlock_irqrestore(&instance->mfi_pool_lock, flags);
>-}
>-
>-
>-/**
> *	The following functions are defined for xscale
> *	(deviceid : 1064R, PERC5) controllers
> */
>@@ -1417,32 +1380,6 @@ megasas_build_ldio(struct megasas_instance
>*instance, struct scsi_cmnd *scp,
> 	return cmd->frame_count;
> }
>
>-/**
>- * megasas_is_ldio -		Checks if the cmd is for logical drive
>- * @scmd:			SCSI command
>- *
>- * Called by megasas_queue_command to find out if the command to be
>queued
>- * is a logical drive command
>- */
>-inline int megasas_is_ldio(struct scsi_cmnd *cmd) -{
>-	if (!MEGASAS_IS_LOGICAL(cmd))
>-		return 0;
>-	switch (cmd->cmnd[0]) {
>-	case READ_10:
>-	case WRITE_10:
>-	case READ_12:
>-	case WRITE_12:
>-	case READ_6:
>-	case WRITE_6:
>-	case READ_16:
>-	case WRITE_16:
>-		return 1;
>-	default:
>-		return 0;
>-	}
>-}
>-
>  /**
>  * megasas_dump_pending_frames -	Dumps the frame address of all
>pending cmds
>  *                              	in FW
>diff --git a/drivers/scsi/megaraid/megaraid_sas_fusion.c
>b/drivers/scsi/megaraid/megaraid_sas_fusion.c
>index f37eed6..c2b8782 100644
>--- a/drivers/scsi/megaraid/megaraid_sas_fusion.c
>+++ b/drivers/scsi/megaraid/megaraid_sas_fusion.c
>@@ -54,43 +54,7 @@
>
> #include "megaraid_sas_fusion.h"
> #include "megaraid_sas.h"
>-
>-extern void megasas_free_cmds(struct megasas_instance *instance); -
>extern struct megasas_cmd *megasas_get_cmd(struct megasas_instance
>-					   *instance);
>-extern void
>-megasas_complete_cmd(struct megasas_instance *instance,
>-		     struct megasas_cmd *cmd, u8 alt_status);
>-int megasas_is_ldio(struct scsi_cmnd *cmd); -int -wait_and_poll(struct
>megasas_instance *instance, struct megasas_cmd *cmd,
>-	      int seconds);
>-
>-void
>-megasas_return_cmd(struct megasas_instance *instance, struct
>megasas_cmd *cmd); -int megasas_alloc_cmds(struct megasas_instance
>*instance); -int -megasas_clear_intr_fusion(struct megasas_register_set
>__iomem *regs); -int -megasas_issue_polled(struct megasas_instance
>*instance,
>-		     struct megasas_cmd *cmd);
>-void
>-megasas_check_and_restore_queue_depth(struct megasas_instance
>*instance);
>-
>-int megasas_transition_to_ready(struct megasas_instance *instance, int
>ocr); -void megaraid_sas_kill_hba(struct megasas_instance *instance);
>-
>-extern u32 megasas_dbg_lvl;
>-void megasas_sriov_heartbeat_handler(unsigned long instance_addr); -int
>megasas_sriov_start_heartbeat(struct megasas_instance *instance,
>-				  int initial);
>-void megasas_start_timer(struct megasas_instance *instance,
>-			struct timer_list *timer,
>-			 void *fn, unsigned long interval);
>-extern struct megasas_mgmt_info megasas_mgmt_info; -extern int
>resetwaittime;
>-
>-
>+#include "megaraid_sas_internal.h"
>
> /**
>  * megasas_enable_intr_fusion -	Enables interrupts
>diff --git a/drivers/scsi/megaraid/megaraid_sas_internal.h
>b/drivers/scsi/megaraid/megaraid_sas_internal.h
>new file mode 100644
>index 0000000..b2b0a55
>--- /dev/null
>+++ b/drivers/scsi/megaraid/megaraid_sas_internal.h
>@@ -0,0 +1,100 @@
>+#ifndef LSI_MEGARAID_SAS_INTERNAL_H
>+#define LSI_MEGARAID_SAS_INTERNAL_H
>+
>+/*
>+ * From base.
>+ */
>+
>+extern void megasas_free_cmds(struct megasas_instance *instance);
>+extern struct megasas_cmd *megasas_get_cmd(struct megasas_instance
>+					   *instance);
>+
>+extern void
>+megasas_complete_cmd(struct megasas_instance *instance,
>+		     struct megasas_cmd *cmd, u8 alt_status);
>+/**
>+ * megasas_is_ldio -		Checks if the cmd is for logical drive
>+ * @scmd:			SCSI command
>+ *
>+ * Called by megasas_queue_command to find out if the command to be
>+queued
>+ * is a logical drive command
>+ */
>+static inline int megasas_is_ldio(struct scsi_cmnd *cmd) {
>+	if (!MEGASAS_IS_LOGICAL(cmd))
>+		return 0;
>+	switch (cmd->cmnd[0]) {
>+	case READ_10:
>+	case WRITE_10:
>+	case READ_12:
>+	case WRITE_12:
>+	case READ_6:
>+	case WRITE_6:
>+	case READ_16:
>+	case WRITE_16:
>+		return 1;
>+	default:
>+		return 0;
>+	}
>+}
>+
>+/**
>+ * megasas_return_cmd -	Return a cmd to free command pool
>+ * @instance:		Adapter soft state
>+ * @cmd:		Command packet to be returned to free command
>pool
>+ */
>+static inline void
>+megasas_return_cmd(struct megasas_instance *instance, struct
>+megasas_cmd *cmd) {
>+	unsigned long flags;
>+
>+	spin_lock_irqsave(&instance->mfi_pool_lock, flags);
>+	__megasas_return_cmd(instance, cmd);
>+	spin_unlock_irqrestore(&instance->mfi_pool_lock, flags); }
>+
>+int megasas_alloc_cmds(struct megasas_instance *instance);
>+
>+int
>+megasas_issue_polled(struct megasas_instance *instance,
>+		     struct megasas_cmd *cmd);
>+void
>+megasas_check_and_restore_queue_depth(struct megasas_instance
>+*instance);
>+
>+int megasas_transition_to_ready(struct megasas_instance *instance, int
>+ocr); void megaraid_sas_kill_hba(struct megasas_instance *instance);
>+
>+extern u32 megasas_dbg_lvl;
>+void megasas_sriov_heartbeat_handler(unsigned long instance_addr); int
>+megasas_sriov_start_heartbeat(struct megasas_instance *instance,
>+				  int initial);
>+void megasas_start_timer(struct megasas_instance *instance,
>+			struct timer_list *timer,
>+			 void *fn, unsigned long interval);
>+extern struct megasas_mgmt_info megasas_mgmt_info; extern int
>+resetwaittime;
>+
>+/*
>+ * From fusion.
>+ */
>+
>+int megasas_check_mpio_paths(struct megasas_instance *instance,
>+			     struct scsi_cmnd *scmd);
>+int
>+wait_and_poll(struct megasas_instance *instance, struct megasas_cmd
>*cmd,
>+	      int seconds);
>+void
>+megasas_release_fusion(struct megasas_instance *instance); int
>+megasas_ioc_init_fusion(struct megasas_instance *instance); void
>+megasas_free_cmds_fusion(struct megasas_instance *instance);
>+u8
>+megasas_get_map_info(struct megasas_instance *instance); int
>+megasas_sync_map_info(struct megasas_instance *instance); void
>+megasas_reset_reply_desc(struct megasas_instance *instance); int
>+megasas_reset_fusion(struct Scsi_Host *shost, int iotimeout); void
>+megasas_fusion_ocr_wq(struct work_struct *work);
>+
>+#endif /* LSI_MEGARAID_SAS_INTERNAL_H */

Patch looks good to me. Can you please rebase this patch on top of latest
patch series sent by me?
>--
>1.9.3

  reply	other threads:[~2014-11-17 10:56 UTC|newest]

Thread overview: 8+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2014-11-09 10:17 Chen Gang
2014-11-17 10:56 ` Sumit Saxena [this message]
  -- strict thread matches above, loose matches on Subject: below --
2014-11-17 11:46 Chen Gang
2014-11-17 11:51 ` Sumit Saxena
2014-11-30  3:07   ` Chen Gang
2014-12-10  8:47     ` Sumit Saxena
2014-12-10  8:59       ` Chen Gang
2014-11-09 10:16 Chen Gang

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=8a69defc3a5bf777a493e9b30b971c51@mail.gmail.com \
    --to=sumit.saxena@avagotech.com \
    --cc=JBottomley@parallels.com \
    --cc=gang.chen.5i5j@gmail.com \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-scsi@vger.kernel.org \
    --cc=megaraidlinux@lsi.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox

Powered by JetHome