aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJames Bottomley <JBottomley@Parallels.com>2013-07-24 15:43:18 -0400
committerJames Bottomley <JBottomley@Parallels.com>2013-07-24 17:18:12 -0400
commite1be09808e030d57bb743618eb41e2bc31dd464c (patch)
treed17034c79f22fbd304ab95146e8f9de22ad30f96
parent53a983c4f8b4246f5ff00567411be55967b0350a (diff)
[SCSI] isci: fix breakage caused by >16byte CDB patch
Oops, apparently no-one I cc'd at intel actually bothered to check this patch for the isci driver: commit e73823f7a2c921dcf068d34ea03bd682498d9e42 Author: James Bottomley <JBottomley@Parallels.com> Date: Tue May 7 15:38:18 2013 -0700 [SCSI] libsas: implement > 16 byte CDB support sci_swab32_cpy needs multiples of four, so for commands that aren't that, it's rounding the wrong way. fix by doing (len+3)/4 instead of len/4. Reported-by: Tony Luck <tony.luck@intel.com> Tested-by: Tony Luck <tony.luck@intel.com> Signed-off-by: James Bottomley <JBottomley@Parallels.com>
-rw-r--r--drivers/scsi/isci/request.c2
1 files changed, 1 insertions, 1 deletions
diff --git a/drivers/scsi/isci/request.c b/drivers/scsi/isci/request.c
index 7b082157eb79..99d2930b18c8 100644
--- a/drivers/scsi/isci/request.c
+++ b/drivers/scsi/isci/request.c
@@ -185,7 +185,7 @@ static void sci_io_request_build_ssp_command_iu(struct isci_request *ireq)
185 cmd_iu->_r_c = 0; 185 cmd_iu->_r_c = 0;
186 186
187 sci_swab32_cpy(&cmd_iu->cdb, task->ssp_task.cmd->cmnd, 187 sci_swab32_cpy(&cmd_iu->cdb, task->ssp_task.cmd->cmnd,
188 task->ssp_task.cmd->cmd_len / sizeof(u32)); 188 (task->ssp_task.cmd->cmd_len+3) / sizeof(u32));
189} 189}
190 190
191static void sci_task_request_build_ssp_task_iu(struct isci_request *ireq) 191static void sci_task_request_build_ssp_task_iu(struct isci_request *ireq)
mitter David Howells <dhowells@redhat.com> 2012-10-02 13:01:57 -0400 UAPI: Plumb the UAPI Kbuilds into the user header installation and checking' href='/cgit/cgit.cgi/litmus-rt-imx6.git/commit/scripts/Makefile.headersinst?id=10b63956fce7f369cc37fd4d994f09bd5203efe4'>10b63956fce7
7712401ae900
8d730cfb50cc
7712401ae900
10b63956fce7
de78912582bc
7712401ae900
684753599afc
7712401ae900

db1bec4f5271
10b63956fce7
d8ecc5cd8e22
10b63956fce7
d8ecc5cd8e22
db1bec4f5271
8d730cfb50cc
7712401ae900

8d730cfb50cc
7712401ae900
7211b8b90288


10b63956fce7
7211b8b90288

7712401ae900
de78912582bc
7712401ae900
de78912582bc
7712401ae900



de78912582bc
7712401ae900




de78912582bc
684753599afc
7712401ae900

8d730cfb50cc
7712401ae900


8d730cfb50cc
7712401ae900
de78912582bc
7712401ae900




8d730cfb50cc
7712401ae900


4e420aa94c9e
7712401ae900

8d730cfb50cc

7712401ae900


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131


                                                                            

                                                               
                                                            


                                                                            
                                                          
                                            
 


                                                                      

                                       
 



                                                           
 
                              
 
                                                            
 
                                    

                                                           
 
                                            

                                       
 



                                                                




                                                  
                                
                                                        
                                                         












                                                                               
 
                                   
                                                                            
                                                         
 
                                                        
                                                         
 
                                                         
 

                                                                
                     
                                                             
                                                                         
                                                                            
                                                                         
                
 

                                         
 
                                                                   


                                                                      
                                                                         

                                                                      
                          
 
                                     
 



                                         
 




                                                                
 
    

                                        
 


                                                             
 
     
 




                                                              
 


                                                                    
 

                            

     


                
# ==========================================================================
# Installing headers
#
# header-y  - list files to be installed. They are preprocessed
#             to remove __KERNEL__ section of the file
# genhdr-y  - Same as header-y but in a generated/ directory
#
# ==========================================================================

# called may set destination dir (when installing to asm/)
_dst := $(or $(destination-y),$(dst),$(obj))

# generated header directory
gen := $(if $(gen),$(gen),$(subst include/,include/generated/,$(obj)))

kbuild-file := $(srctree)/$(obj)/Kbuild
include $(kbuild-file)

old-kbuild-file := $(srctree)/$(subst uapi/,,$(obj))/Kbuild
ifneq ($(wildcard $(old-kbuild-file)),)
include $(old-kbuild-file)
endif

include scripts/Kbuild.include

installdir    := $(INSTALL_HDR_PATH)/$(subst uapi/,,$(_dst))

header-y      := $(sort $(header-y))
subdirs       := $(patsubst %/,%,$(filter %/, $(header-y)))
header-y      := $(filter-out %/, $(header-y))

# files used to track state of install/check
install-file  := $(installdir)/.install
check-file    := $(installdir)/.check

# generic-y list all files an architecture uses from asm-generic
# Use this to build a list of headers which require a wrapper
wrapper-files := $(filter $(header-y), $(generic-y))

srcdir        := $(srctree)/$(obj)
gendir        := $(objtree)/$(gen)

oldsrcdir     := $(srctree)/$(subst /uapi,,$(obj))

# all headers files for this dir
header-y      := $(filter-out $(generic-y), $(header-y))
all-files     := $(header-y) $(genhdr-y) $(wrapper-files)
output-files  := $(addprefix $(installdir)/, $(all-files))

input-files   := $(foreach hdr, $(header-y), \
		   $(or \
			$(wildcard $(srcdir)/$(hdr)), \
			$(wildcard $(oldsrcdir)/$(hdr)), \
			$(error Missing UAPI file $(srcdir)/$(hdr)) \
		   )) \
		 $(foreach hdr, $(genhdr-y), \
		   $(or \
			$(wildcard $(gendir)/$(hdr)), \
			$(error Missing generated UAPI file $(gendir)/$(hdr)) \
		   ))

# Work out what needs to be removed
oldheaders    := $(patsubst $(installdir)/%,%,$(wildcard $(installdir)/*.h))
unwanted      := $(filter-out $(all-files),$(oldheaders))

# Prefix unwanted with full paths to $(INSTALL_HDR_PATH)
unwanted-file := $(addprefix $(installdir)/, $(unwanted))

printdir = $(patsubst $(INSTALL_HDR_PATH)/%/,%,$(dir $@))

quiet_cmd_install = INSTALL $(printdir) ($(words $(all-files))\
                            file$(if $(word 2, $(all-files)),s))
      cmd_install = \
        $(PERL) $< $(installdir) $(SRCARCH) $(input-files); \
        for F in $(wrapper-files); do                                   \
                echo "\#include <asm-generic/$$F>" > $(installdir)/$$F;    \
        done;                                                           \
        touch $@

quiet_cmd_remove = REMOVE  $(unwanted)
      cmd_remove = rm -f $(unwanted-file)

quiet_cmd_check = CHECK   $(printdir) ($(words $(all-files)) files)
# Headers list can be pretty long, xargs helps to avoid
# the "Argument list too long" error.
      cmd_check = for f in $(all-files); do                          \
                  echo "$(installdir)/$${f}"; done                      \
                  | xargs                                            \
                  $(PERL) $< $(INSTALL_HDR_PATH)/include $(SRCARCH); \
	          touch $@

PHONY += __headersinst __headerscheck

ifndef HDRCHECK
# Rules for installing headers
__headersinst: $(subdirs) $(install-file)
	@:

targets += $(install-file)
$(install-file): scripts/headers_install.pl $(input-files) FORCE
	$(if $(unwanted),$(call cmd,remove),)
	$(if $(wildcard $(dir $@)),,$(shell mkdir -p $(dir $@)))
	$(call if_changed,install)

else
__headerscheck: $(subdirs) $(check-file)
	@:

targets += $(check-file)
$(check-file): scripts/headers_check.pl $(output-files) FORCE
	$(call if_changed,check)

endif

# Recursion
hdr-inst := -rR -f $(srctree)/scripts/Makefile.headersinst obj
.PHONY: $(subdirs)
$(subdirs):
	$(Q)$(MAKE) $(hdr-inst)=$(obj)/$@ dst=$(_dst)/$@

targets := $(wildcard $(sort $(targets)))
cmd_files := $(wildcard \
             $(foreach f,$(targets),$(dir $(f)).$(notdir $(f)).cmd))

ifneq ($(cmd_files),)
	include $(cmd_files)
endif

.PHONY: $(PHONY)
PHONY += FORCE
FORCE: ;