Skip to content

Commit

Permalink
---
Browse files Browse the repository at this point in the history
yaml
---
r: 73125
b: refs/heads/master
c: 9b56fdb
h: refs/heads/master
i:
  73123: 11b3422
v: v3
  • Loading branch information
Adrian Bunk authored and Rusty Russell committed Nov 5, 2007
1 parent 4b011be commit c9c1854
Show file tree
Hide file tree
Showing 10 changed files with 48 additions and 49 deletions.
2 changes: 1 addition & 1 deletion [refs]
Original file line number Diff line number Diff line change
@@ -1,2 +1,2 @@
---
refs/heads/master: 4d20826ffb6fa80c71b85d2cb858ae400a59a4d5
refs/heads/master: 9b56fdb458b014bdda974b43a3e59721032898bb
6 changes: 2 additions & 4 deletions trunk/MAINTAINERS
Original file line number Diff line number Diff line change
Expand Up @@ -2549,7 +2549,7 @@ S: Supported

MISCELLANEOUS MCA-SUPPORT
P: James Bottomley
M: James.Bottomley@HansenPartnership.com
M: jejb@steeleye.com
L: linux-kernel@vger.kernel.org
S: Maintained

Expand Down Expand Up @@ -3301,11 +3301,9 @@ S: Maintained

SCSI SUBSYSTEM
P: James E.J. Bottomley
M: James.Bottomley@HansenPartnership.com
M: James.Bottomley@SteelEye.com
L: linux-scsi@vger.kernel.org
T: git kernel.org:/pub/scm/linux/kernel/git/jejb/scsi-misc-2.6.git
T: git kernel.org:/pub/scm/linux/kernel/git/jejb/scsi-rc-fixes-2.6.git
T: git kernel.org:/pub/scm/linux/kernel/git/jejb/scsi-pending-2.6.git
S: Maintained

SCSI TAPE DRIVER
Expand Down
8 changes: 3 additions & 5 deletions trunk/arch/x86/boot/pmjump.S
Original file line number Diff line number Diff line change
Expand Up @@ -28,19 +28,17 @@
* void protected_mode_jump(u32 entrypoint, u32 bootparams);
*/
protected_mode_jump:
xorl %ebx, %ebx # Flag to indicate this is a boot
movl %edx, %esi # Pointer to boot_params table
movl %eax, 2f # Patch ljmpl instruction
jmp 1f # Short jump to flush instruction q.

1:
movw $__BOOT_DS, %cx
xorl %ebx, %ebx # Per the 32-bit boot protocol
xorl %ebp, %ebp # Per the 32-bit boot protocol
xorl %edi, %edi # Per the 32-bit boot protocol

movl %cr0, %edx
orb $1, %dl # Protected mode (PE) bit
movl %edx, %cr0
jmp 1f # Short jump to serialize on 386/486
1:

movw %cx, %ds
movw %cx, %es
Expand Down
26 changes: 13 additions & 13 deletions trunk/arch/x86/lguest/boot.c
Original file line number Diff line number Diff line change
Expand Up @@ -113,17 +113,6 @@ static void lguest_leave_lazy_mode(void)
hcall(LHCALL_FLUSH_ASYNC, 0, 0, 0);
}

static void lazy_hcall(unsigned long call,
unsigned long arg1,
unsigned long arg2,
unsigned long arg3)
{
if (paravirt_get_lazy_mode() == PARAVIRT_LAZY_NONE)
hcall(call, arg1, arg2, arg3);
else
async_hcall(call, arg1, arg2, arg3);
}

/* async_hcall() is pretty simple: I'm quite proud of it really. We have a
* ring buffer of stored hypercalls which the Host will run though next time we
* do a normal hypercall. Each entry in the ring has 4 slots for the hypercall
Expand All @@ -134,8 +123,8 @@ static void lazy_hcall(unsigned long call,
* full and we just make the hypercall directly. This has the nice side
* effect of causing the Host to run all the stored calls in the ring buffer
* which empties it for next time! */
void async_hcall(unsigned long call,
unsigned long arg1, unsigned long arg2, unsigned long arg3)
static void async_hcall(unsigned long call, unsigned long arg1,
unsigned long arg2, unsigned long arg3)
{
/* Note: This code assumes we're uniprocessor. */
static unsigned int next_call;
Expand All @@ -161,6 +150,17 @@ void async_hcall(unsigned long call,
}
local_irq_restore(flags);
}

static void lazy_hcall(unsigned long call,
unsigned long arg1,
unsigned long arg2,
unsigned long arg3)
{
if (paravirt_get_lazy_mode() == PARAVIRT_LAZY_NONE)
hcall(call, arg1, arg2, arg3);
else
async_hcall(call, arg1, arg2, arg3);
}
/*:*/

/*G:033
Expand Down
19 changes: 5 additions & 14 deletions trunk/drivers/scsi/ibmvscsi/ibmvscsi.c
Original file line number Diff line number Diff line change
Expand Up @@ -556,7 +556,7 @@ static int ibmvscsi_send_srp_event(struct srp_event_struct *evt_struct,
unsigned long timeout)
{
u64 *crq_as_u64 = (u64 *) &evt_struct->crq;
int request_status = 0;
int request_status;
int rc;

/* If we have exhausted our request limit, just fail this request,
Expand All @@ -574,13 +574,6 @@ static int ibmvscsi_send_srp_event(struct srp_event_struct *evt_struct,
if (request_status < -1)
goto send_error;
/* Otherwise, we may have run out of requests. */
/* If request limit was 0 when we started the adapter is in the
* process of performing a login with the server adapter, or
* we may have run out of requests.
*/
else if (request_status == -1 &&
evt_struct->iu.srp.login_req.opcode != SRP_LOGIN_REQ)
goto send_busy;
/* Abort and reset calls should make it through.
* Nothing except abort and reset should use the last two
* slots unless we had two or less to begin with.
Expand Down Expand Up @@ -640,8 +633,7 @@ static int ibmvscsi_send_srp_event(struct srp_event_struct *evt_struct,
unmap_cmd_data(&evt_struct->iu.srp.cmd, evt_struct, hostdata->dev);

free_event_struct(&hostdata->pool, evt_struct);
if (request_status != -1)
atomic_inc(&hostdata->request_limit);
atomic_inc(&hostdata->request_limit);
return SCSI_MLQUEUE_HOST_BUSY;

send_error:
Expand Down Expand Up @@ -935,11 +927,10 @@ static int send_srp_login(struct ibmvscsi_host_data *hostdata)
login->req_buf_fmt = SRP_BUF_FORMAT_DIRECT | SRP_BUF_FORMAT_INDIRECT;

spin_lock_irqsave(hostdata->host->host_lock, flags);
/* Start out with a request limit of 0, since this is negotiated in
* the login request we are just sending and login requests always
* get sent by the driver regardless of request_limit.
/* Start out with a request limit of 1, since this is negotiated in
* the login request we are just sending
*/
atomic_set(&hostdata->request_limit, 0);
atomic_set(&hostdata->request_limit, 1);

rc = ibmvscsi_send_srp_event(evt_struct, hostdata, init_timeout * 2);
spin_unlock_irqrestore(hostdata->host->host_lock, flags);
Expand Down
5 changes: 2 additions & 3 deletions trunk/drivers/scsi/lpfc/lpfc_scsi.c
Original file line number Diff line number Diff line change
Expand Up @@ -682,7 +682,6 @@ lpfc_scsi_prep_cmnd(struct lpfc_vport *vport, struct lpfc_scsi_buf *lpfc_cmd,
IOCB_t *iocb_cmd = &lpfc_cmd->cur_iocbq.iocb;
struct lpfc_iocbq *piocbq = &(lpfc_cmd->cur_iocbq);
int datadir = scsi_cmnd->sc_data_direction;
char tag[2];

lpfc_cmd->fcp_rsp->rspSnsLen = 0;
/* clear task management bits */
Expand All @@ -693,8 +692,8 @@ lpfc_scsi_prep_cmnd(struct lpfc_vport *vport, struct lpfc_scsi_buf *lpfc_cmd,

memcpy(&fcp_cmnd->fcpCdb[0], scsi_cmnd->cmnd, 16);

if (scsi_populate_tag_msg(scsi_cmnd, tag)) {
switch (tag[0]) {
if (scsi_cmnd->device->tagged_supported) {
switch (scsi_cmnd->tag) {
case HEAD_OF_QUEUE_TAG:
fcp_cmnd->fcpCntl1 = HEAD_OF_Q;
break;
Expand Down
6 changes: 2 additions & 4 deletions trunk/drivers/scsi/osst.c
Original file line number Diff line number Diff line change
Expand Up @@ -593,11 +593,10 @@ static int osst_verify_frame(struct osst_tape * STp, int frame_seq_number, int q
if (aux->frame_type != OS_FRAME_TYPE_DATA &&
aux->frame_type != OS_FRAME_TYPE_EOD &&
aux->frame_type != OS_FRAME_TYPE_MARKER) {
if (!quiet) {
if (!quiet)
#if DEBUG
printk(OSST_DEB_MSG "%s:D: Skipping frame, frame type %x\n", name, aux->frame_type);
#endif
}
goto err_out;
}
if (aux->frame_type == OS_FRAME_TYPE_EOD &&
Expand All @@ -607,12 +606,11 @@ static int osst_verify_frame(struct osst_tape * STp, int frame_seq_number, int q
goto err_out;
}
if (frame_seq_number != -1 && ntohl(aux->frame_seq_num) != frame_seq_number) {
if (!quiet) {
if (!quiet)
#if DEBUG
printk(OSST_DEB_MSG "%s:D: Skipping frame, sequence number %u (expected %d)\n",
name, ntohl(aux->frame_seq_num), frame_seq_number);
#endif
}
goto err_out;
}
if (aux->frame_type == OS_FRAME_TYPE_MARKER) {
Expand Down
2 changes: 1 addition & 1 deletion trunk/include/asm-powerpc/commproc.h
Original file line number Diff line number Diff line change
Expand Up @@ -91,7 +91,7 @@ extern uint m8xx_cpm_hostalloc(uint size);
extern int m8xx_cpm_hostfree(uint start);
extern void m8xx_cpm_hostdump(void);

extern void cpm_load_patch(cpm8xx_t *cp);
extern void cpm_load_patch(volatile immap_t *immr);

/* Buffer descriptors used by many of the CPM protocols.
*/
Expand Down
3 changes: 0 additions & 3 deletions trunk/include/asm-x86/lguest_hcall.h
Original file line number Diff line number Diff line change
Expand Up @@ -54,9 +54,6 @@ hcall(unsigned long call,
}
/*:*/

void async_hcall(unsigned long call,
unsigned long arg1, unsigned long arg2, unsigned long arg3);

/* Can't use our min() macro here: needs to be a constant */
#define LGUEST_IRQS (NR_IRQS < 32 ? NR_IRQS: 32)

Expand Down
20 changes: 19 additions & 1 deletion trunk/mm/slub.c
Original file line number Diff line number Diff line change
Expand Up @@ -1511,8 +1511,26 @@ static void *__slab_alloc(struct kmem_cache *s,

if (new) {
c = get_cpu_slab(s, smp_processor_id());
if (c->page)
if (c->page) {
/*
* Someone else populated the cpu_slab while we
* enabled interrupts, or we have gotten scheduled
* on another cpu. The page may not be on the
* requested node even if __GFP_THISNODE was
* specified. So we need to recheck.
*/
if (node_match(c, node)) {
/*
* Current cpuslab is acceptable and we
* want the current one since its cache hot
*/
discard_slab(s, new);
slab_lock(c->page);
goto load_freelist;
}
/* New slab does not fit our expectations */
flush_slab(s, c);
}
slab_lock(new);
SetSlabFrozen(new);
c->page = new;
Expand Down

0 comments on commit c9c1854

Please sign in to comment.