mirror of
https://github.com/BobTheBlinker/android_kernel_motorola_sm6375.git
synced 2026-10-30 19:51:31 -04:00
Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/sparc
Pull sparc changes from David Miller: "Several bug fixes (from Kirill Tkhai, Geery Uytterhoeven, and Alexey Dobriyan) and some support for Fujitsu sparc64x chips (from Allen Pais)" * git://git.kernel.org/pub/scm/linux/kernel/git/davem/sparc: sparc64: Export flush_ptrace_access() (needed by lustre) sparc: fix PCI device proc file mmap(2) sparc64: Remove RWSEM export leftovers sparc64: Fix off by one in trampoline TLB mapping installation loop. sparc64: Fix ITLB handler of null page esp_scsi: Fix tag state corruption when autosensing. sparc64: Fix not SRA'ed %o5 in 32-bit traced syscall sparc64: cleanup: Rename ret_from_syscall to ret_from_fork sparc32: Fix exit flag passed from traced sys_sigreturn sparc64: Fix wrong syscall return value passed to trace_sys_exit() support sparc64x chip type in cpumap.c cpu hw caps support for sparc64x
This commit is contained in:
commit
b14662cae0
13 changed files with 49 additions and 35 deletions
|
|
@ -530,7 +530,7 @@ static int esp_need_to_nego_sync(struct esp_target_data *tp)
|
|||
static int esp_alloc_lun_tag(struct esp_cmd_entry *ent,
|
||||
struct esp_lun_data *lp)
|
||||
{
|
||||
if (!ent->tag[0]) {
|
||||
if (!ent->orig_tag[0]) {
|
||||
/* Non-tagged, slot already taken? */
|
||||
if (lp->non_tagged_cmd)
|
||||
return -EBUSY;
|
||||
|
|
@ -564,9 +564,9 @@ static int esp_alloc_lun_tag(struct esp_cmd_entry *ent,
|
|||
return -EBUSY;
|
||||
}
|
||||
|
||||
BUG_ON(lp->tagged_cmds[ent->tag[1]]);
|
||||
BUG_ON(lp->tagged_cmds[ent->orig_tag[1]]);
|
||||
|
||||
lp->tagged_cmds[ent->tag[1]] = ent;
|
||||
lp->tagged_cmds[ent->orig_tag[1]] = ent;
|
||||
lp->num_tagged++;
|
||||
|
||||
return 0;
|
||||
|
|
@ -575,9 +575,9 @@ static int esp_alloc_lun_tag(struct esp_cmd_entry *ent,
|
|||
static void esp_free_lun_tag(struct esp_cmd_entry *ent,
|
||||
struct esp_lun_data *lp)
|
||||
{
|
||||
if (ent->tag[0]) {
|
||||
BUG_ON(lp->tagged_cmds[ent->tag[1]] != ent);
|
||||
lp->tagged_cmds[ent->tag[1]] = NULL;
|
||||
if (ent->orig_tag[0]) {
|
||||
BUG_ON(lp->tagged_cmds[ent->orig_tag[1]] != ent);
|
||||
lp->tagged_cmds[ent->orig_tag[1]] = NULL;
|
||||
lp->num_tagged--;
|
||||
} else {
|
||||
BUG_ON(lp->non_tagged_cmd != ent);
|
||||
|
|
@ -667,6 +667,8 @@ static struct esp_cmd_entry *find_and_prep_issuable_command(struct esp *esp)
|
|||
ent->tag[0] = 0;
|
||||
ent->tag[1] = 0;
|
||||
}
|
||||
ent->orig_tag[0] = ent->tag[0];
|
||||
ent->orig_tag[1] = ent->tag[1];
|
||||
|
||||
if (esp_alloc_lun_tag(ent, lp) < 0)
|
||||
continue;
|
||||
|
|
|
|||
|
|
@ -271,6 +271,7 @@ struct esp_cmd_entry {
|
|||
#define ESP_CMD_FLAG_AUTOSENSE 0x04 /* Doing automatic REQUEST_SENSE */
|
||||
|
||||
u8 tag[2];
|
||||
u8 orig_tag[2];
|
||||
|
||||
u8 status;
|
||||
u8 message;
|
||||
|
|
|
|||
Loading…
Reference in a new issue