Re: [linux-pm] Re: [PATCH] Remove process freezer from suspend to RAM pathway

2007-07-06 Thread Daniel Pittman
Matthew Garrett <[EMAIL PROTECTED]> writes:
> On Thu, Jul 05, 2007 at 04:09:24PM +0200, Rafael J. Wysocki wrote:
>> On Thursday, 5 July 2007 15:46, Matthew Garrett wrote:
>> > I have a model for STD that avoids the need to freeze the entirity of 
>> > userspace, but I need to find some more time to flesh it out.
>> 
>> You can just describe it, as far as I'm concerned. :-)
>
> The basic model is that nobody's really described a use-case where we 
> actually care about restoring system state. What people want is to be 
> able to restore application state. So, arguably, what we want isn't to 
> save the entire kernel state and application state in one go because we 
> can reconstruct a huge amount of that afterwards.

[...]

> I've mocked up a basic implementation using cryopid, but it's somewhat
> limited by the lack of support for sockets. I'd like to move more of
> the smarts into the kernel (Hurray, checkpointing!) and then see how
> much hardware support ends up horifically broken.

You might want to look at the checkpoint / migration support in the
OpenVZ kernel in relation to this.  That does work to dump the state of
a running "virtual environment" complete with applications to disk, move
it to another running kernel and restore the content.

That might, perhaps, help with the prototype of this?

Regards,
Daniel
-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to [EMAIL PROTECTED]
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/


Re: [linux-pm] Re: [PATCH] Remove process freezer from suspend to RAM pathway

2007-07-06 Thread Daniel Pittman
Matthew Garrett [EMAIL PROTECTED] writes:
 On Thu, Jul 05, 2007 at 04:09:24PM +0200, Rafael J. Wysocki wrote:
 On Thursday, 5 July 2007 15:46, Matthew Garrett wrote:
  I have a model for STD that avoids the need to freeze the entirity of 
  userspace, but I need to find some more time to flesh it out.
 
 You can just describe it, as far as I'm concerned. :-)

 The basic model is that nobody's really described a use-case where we 
 actually care about restoring system state. What people want is to be 
 able to restore application state. So, arguably, what we want isn't to 
 save the entire kernel state and application state in one go because we 
 can reconstruct a huge amount of that afterwards.

[...]

 I've mocked up a basic implementation using cryopid, but it's somewhat
 limited by the lack of support for sockets. I'd like to move more of
 the smarts into the kernel (Hurray, checkpointing!) and then see how
 much hardware support ends up horifically broken.

You might want to look at the checkpoint / migration support in the
OpenVZ kernel in relation to this.  That does work to dump the state of
a running virtual environment complete with applications to disk, move
it to another running kernel and restore the content.

That might, perhaps, help with the prototype of this?

Regards,
Daniel
-
To unsubscribe from this list: send the line unsubscribe linux-kernel in
the body of a message to [EMAIL PROTECTED]
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/


Re: Back to the future.

2007-04-27 Thread Daniel Pittman
Olivier Galibert <[EMAIL PROTECTED]> writes:
> On Fri, Apr 27, 2007 at 06:50:56AM +1000, Nigel Cunningham wrote:
>
>> I'm perfectly willing to think through some alternate approach if you
>> suggest something or prod my thinking in a new direction, but I'm
>> afraid I just can't see right now how we can achieve what you're
>> after.
>
> Ok, what about this approach I've been mulling about for a while:
>
> Suspend-to-disk is pretty much an exercise in state saving.  There are
> multiple ways to do state saving, but they tend to end up in two
> categories: implicit and explicit.

[...]

> In explicit state saving each object saves what is needed from its
> state to an independently defined format (instead of "whatever the
> memory organization happens to be at that point").  When reloading the
> state you have to parse it, and it usually requires
> rebuilding/relocating all references/pointers/etc.  

If you are looking seriously at this you might want to start with the
code in the OpenVZ kernel (http://openvz.org) that allows a VE to
"checkpoint" to disk and "restore" on the same or a different machine.

This is, as far as I can tell, a portable implementation of this that
already handles real live userspace applications moving transparently
between two machines.

It has the advantage that it lives in an orderly world where most
devices and the file system are virtual but, hey, it works right now.

Regards,
Daniel
-- 
Digital Infrastructure Solutions -- making IT simple, stable and secure
Phone: 0401 155 707email: [EMAIL PROTECTED]
 http://digital-infrastructure.com.au/
-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to [EMAIL PROTECTED]
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/


Re: Back to the future.

2007-04-27 Thread Daniel Pittman
Olivier Galibert [EMAIL PROTECTED] writes:
 On Fri, Apr 27, 2007 at 06:50:56AM +1000, Nigel Cunningham wrote:

 I'm perfectly willing to think through some alternate approach if you
 suggest something or prod my thinking in a new direction, but I'm
 afraid I just can't see right now how we can achieve what you're
 after.

 Ok, what about this approach I've been mulling about for a while:

 Suspend-to-disk is pretty much an exercise in state saving.  There are
 multiple ways to do state saving, but they tend to end up in two
 categories: implicit and explicit.

[...]

 In explicit state saving each object saves what is needed from its
 state to an independently defined format (instead of whatever the
 memory organization happens to be at that point).  When reloading the
 state you have to parse it, and it usually requires
 rebuilding/relocating all references/pointers/etc.  

If you are looking seriously at this you might want to start with the
code in the OpenVZ kernel (http://openvz.org) that allows a VE to
checkpoint to disk and restore on the same or a different machine.

This is, as far as I can tell, a portable implementation of this that
already handles real live userspace applications moving transparently
between two machines.

It has the advantage that it lives in an orderly world where most
devices and the file system are virtual but, hey, it works right now.

Regards,
Daniel
-- 
Digital Infrastructure Solutions -- making IT simple, stable and secure
Phone: 0401 155 707email: [EMAIL PROTECTED]
 http://digital-infrastructure.com.au/
-
To unsubscribe from this list: send the line unsubscribe linux-kernel in
the body of a message to [EMAIL PROTECTED]
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/


AIC79XX abort -- hardware fault?

2006-12-11 Thread Daniel Pittman
G'day.  One of the machines I maintain is having real trouble with the
AIC79XX HBA or the tape drive attached to it.  I believe this is a
hardware fault, but I am not certain where the problem lies.

Normally I would blame the cable or, maybe, the tape drive, but the
early stage of the fault and the reported SCSI driver state make me
wonder if this is perhaps an HBA fault?

Regards,
Daniel

scsi0 : Adaptec AIC79XX PCI-X SCSI HBA DRIVER, Rev 3.0

aic7901: Ultra320 Wide Channel A, SCSI Id=7, PCI-X 101-133Mhz, 512 SCBs

 target0:0:0: asynchronous
scsi 0:0:0:0: Attempting to queue an ABORT message:CDB: 0x12 0x0 0x0 0x0 0x24 
0x0
scsi0: At time of recovery, card was not paused
>> Dump Card State Begins <
scsi0: Dumping Card State at program address 0x1b1 Mode 0x11
Card was paused
INTSTAT[0x0] SELOID[0x0] SELID[0x0] HS_MAILBOX[0x0]
INTCTL[0x0] SEQINTSTAT[0x0] SAVED_MODE[0x0] DFFSTAT[0x19]
SCSISIGI[0xa4] SCSIPHASE[0x0] SCSIBUS[0x0] LASTPHASE[0xa0]
SCSISEQ0[0x0] SCSISEQ1[0x12] SEQCTL0[0x0] SEQINTCTL[0x0]
SEQ_FLAGS[0x0] SEQ_FLAGS2[0x4] QFREEZE_COUNT[0x0]
KERNEL_QFREEZE_COUNT[0x0] MK_MESSAGE_SCB[0xff00]
MK_MESSAGE_SCSIID[0xff] SSTAT0[0x0] SSTAT1[0x0]
SSTAT2[0x0] SSTAT3[0x0] PERRDIAG[0xc0] SIMODE1[0xac]
LQISTAT0[0x0] LQISTAT1[0x0] LQISTAT2[0x0] LQOSTAT0[0x0]
LQOSTAT1[0x0] LQOSTAT2[0x0]

SCB Count = 4 CMDS_PENDING = 1 LASTSCB 0x CURRSCB 0x3 NEXTSCB 0x0
qinstart = 1 qinfifonext = 1
QINFIFO:
WAITING_TID_QUEUES:
Pending list:
  3 FIFO_USE[0x0] SCB_CONTROL[0x40] SCB_SCSIID[0x7]
Total 1
Kernel Free SCB list: 2 1 0
Sequencer Complete DMA-inprog list:
Sequencer Complete list:
Sequencer DMA-Up and Complete list:
Sequencer On QFreeze and Complete list:


scsi0: FIFO0 Free, LONGJMP == 0x80ff, SCB 0x0
SEQIMODE[0x3f] SEQINTSRC[0x0] DFCNTRL[0x0] DFSTATUS[0x89]
SG_CACHE_SHADOW[0x2] SG_STATE[0x0] DFFSXFRCTL[0x0]
SOFFCNT[0x0] MDFFSTAT[0x5] SHADDR = 0x00, SHCNT = 0x0
HADDR = 0x00, HCNT = 0x0 CCSGCTL[0x10]

scsi0: FIFO1 Active, LONGJMP == 0x8063, SCB 0x3
SEQIMODE[0x3f] SEQINTSRC[0x0] DFCNTRL[0x4] DFSTATUS[0x89]
SG_CACHE_SHADOW[0x2] SG_STATE[0x0] DFFSXFRCTL[0x0]
SOFFCNT[0x0] MDFFSTAT[0x14] SHADDR = 0x06, SHCNT = 0x0
HADDR = 0x00, HCNT = 0x0 CCSGCTL[0x10]
LQIN: 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 
0x0 0x0
scsi0: LQISTATE = 0x0, LQOSTATE = 0x0, OPTIONMODE = 0x52
scsi0: OS_SPACE_CNT = 0x20 MAXCMDCNT = 0x0
scsi0: SAVED_SCSIID = 0x0 SAVED_LUN = 0x0
SIMODE0[0xc]
CCSCBCTL[0x4]
scsi0: REG0 == 0x3, SINDEX = 0x1e0, DINDEX = 0xe1
scsi0: SCBPTR == 0x3, SCB_NEXT == 0xffc0, SCB_NEXT2 == 0xffed
CDB 12 0 0 0 24 0
STACK: 0x121 0x0 0x0 0x0 0x0 0x0 0x0 0x0
< Dump Card State Ends >>
scsi 0:0:0:0: Device is active, asserting ATN
scsi0: Recovery code sleeping
scsi0: Timer Expired (active 1)
Recovery code awake
scsi0: Command abort returning 0x2003
scsi 0:0:0:0: Attempting to queue a TARGET RESET message:CDB: 0x12 0x0 0x0 0x0 
0x24 0x
0
scsi0: Device reset code sleeping
scsi0: Device reset timer expired (active 2)
scsi0: Device reset returning 0x2003
Recovery SCB completes
Recovery SCB completes
scsi 0:0:0:0: Attempting to queue an ABORT message:CDB: 0x0 0x0 0x0 0x0 0x0 0x0
scsi0: At time of recovery, card was not paused
>> Dump Card State Begins <
scsi0: Dumping Card State at program address 0x1b2 Mode 0x11
Card was paused
INTSTAT[0x0] SELOID[0x0] SELID[0x0] HS_MAILBOX[0x0]
INTCTL[0x0] SEQINTSTAT[0x0] SAVED_MODE[0x0] DFFSTAT[0x19]
SCSISIGI[0xa4] SCSIPHASE[0x0] SCSIBUS[0x0] LASTPHASE[0xa0]
SCSISEQ0[0x0] SCSISEQ1[0x12] SEQCTL0[0x0] SEQINTCTL[0x0]
SEQ_FLAGS[0x0] SEQ_FLAGS2[0x4] QFREEZE_COUNT[0x0]
KERNEL_QFREEZE_COUNT[0x0] MK_MESSAGE_SCB[0xff00]
MK_MESSAGE_SCSIID[0xff] SSTAT0[0x0] SSTAT1[0x0]
SSTAT2[0x0] SSTAT3[0x0] PERRDIAG[0xc0] SIMODE1[0xac]
LQISTAT0[0x0] LQISTAT1[0x0] LQISTAT2[0x0] LQOSTAT0[0x0]
LQOSTAT1[0x0] LQOSTAT2[0x0]

SCB Count = 4 CMDS_PENDING = 1 LASTSCB 0x CURRSCB 0x3 NEXTSCB 0x0
qinstart = 2 qinfifonext = 2
QINFIFO:
WAITING_TID_QUEUES:
Pending list:
  3 FIFO_USE[0x0] SCB_CONTROL[0x40] SCB_SCSIID[0x7]
Total 1
Kernel Free SCB list: 2 1 0
Sequencer Complete DMA-inprog list:
Sequencer Complete list:
Sequencer DMA-Up and Complete list:
Sequencer On QFreeze and Complete list:


scsi0: FIFO0 Free, LONGJMP == 0x80ff, SCB 0x0
SEQIMODE[0x3f] SEQINTSRC[0x0] DFCNTRL[0x0] DFSTATUS[0x89]
SG_CACHE_SHADOW[0x2] SG_STATE[0x0] DFFSXFRCTL[0x0]
SOFFCNT[0x0] MDFFSTAT[0x5] SHADDR = 0x00, SHCNT = 0x0
HADDR = 0x00, HCNT = 0x0 CCSGCTL[0x10]

scsi0: FIFO1 Active, LONGJMP == 0x8063, SCB 0x3
SEQIMODE[0x3f] SEQINTSRC[0x0] DFCNTRL[0x4] DFSTATUS[0x89]
SG_CACHE_SHADOW[0x2] SG_STATE[0x0] DFFSXFRCTL[0x0]
SOFFCNT[0x0] MDFFSTAT[0x14] SHADDR = 0x06, SHCNT = 0x0
HADDR = 0x00, HCNT = 0x0 CCSGCTL[0x10]
LQIN: 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 
0x0 0x0
scsi0: LQISTATE = 0x0, LQOSTATE = 0x0, OPTIONMODE = 0x52
scsi0: OS_SPACE_CNT = 0x20 MAXCMDCNT = 0x0
scsi0: SAVED_SCSIID = 0x0 SAVED_LUN = 0x0

AIC79XX abort -- hardware fault?

2006-12-11 Thread Daniel Pittman
G'day.  One of the machines I maintain is having real trouble with the
AIC79XX HBA or the tape drive attached to it.  I believe this is a
hardware fault, but I am not certain where the problem lies.

Normally I would blame the cable or, maybe, the tape drive, but the
early stage of the fault and the reported SCSI driver state make me
wonder if this is perhaps an HBA fault?

Regards,
Daniel

scsi0 : Adaptec AIC79XX PCI-X SCSI HBA DRIVER, Rev 3.0
Adaptec 29320ALP Ultra320 SCSI adapter
aic7901: Ultra320 Wide Channel A, SCSI Id=7, PCI-X 101-133Mhz, 512 SCBs

 target0:0:0: asynchronous
scsi 0:0:0:0: Attempting to queue an ABORT message:CDB: 0x12 0x0 0x0 0x0 0x24 
0x0
scsi0: At time of recovery, card was not paused
 Dump Card State Begins 
scsi0: Dumping Card State at program address 0x1b1 Mode 0x11
Card was paused
INTSTAT[0x0] SELOID[0x0] SELID[0x0] HS_MAILBOX[0x0]
INTCTL[0x0] SEQINTSTAT[0x0] SAVED_MODE[0x0] DFFSTAT[0x19]
SCSISIGI[0xa4] SCSIPHASE[0x0] SCSIBUS[0x0] LASTPHASE[0xa0]
SCSISEQ0[0x0] SCSISEQ1[0x12] SEQCTL0[0x0] SEQINTCTL[0x0]
SEQ_FLAGS[0x0] SEQ_FLAGS2[0x4] QFREEZE_COUNT[0x0]
KERNEL_QFREEZE_COUNT[0x0] MK_MESSAGE_SCB[0xff00]
MK_MESSAGE_SCSIID[0xff] SSTAT0[0x0] SSTAT1[0x0]
SSTAT2[0x0] SSTAT3[0x0] PERRDIAG[0xc0] SIMODE1[0xac]
LQISTAT0[0x0] LQISTAT1[0x0] LQISTAT2[0x0] LQOSTAT0[0x0]
LQOSTAT1[0x0] LQOSTAT2[0x0]

SCB Count = 4 CMDS_PENDING = 1 LASTSCB 0x CURRSCB 0x3 NEXTSCB 0x0
qinstart = 1 qinfifonext = 1
QINFIFO:
WAITING_TID_QUEUES:
Pending list:
  3 FIFO_USE[0x0] SCB_CONTROL[0x40] SCB_SCSIID[0x7]
Total 1
Kernel Free SCB list: 2 1 0
Sequencer Complete DMA-inprog list:
Sequencer Complete list:
Sequencer DMA-Up and Complete list:
Sequencer On QFreeze and Complete list:


scsi0: FIFO0 Free, LONGJMP == 0x80ff, SCB 0x0
SEQIMODE[0x3f] SEQINTSRC[0x0] DFCNTRL[0x0] DFSTATUS[0x89]
SG_CACHE_SHADOW[0x2] SG_STATE[0x0] DFFSXFRCTL[0x0]
SOFFCNT[0x0] MDFFSTAT[0x5] SHADDR = 0x00, SHCNT = 0x0
HADDR = 0x00, HCNT = 0x0 CCSGCTL[0x10]

scsi0: FIFO1 Active, LONGJMP == 0x8063, SCB 0x3
SEQIMODE[0x3f] SEQINTSRC[0x0] DFCNTRL[0x4] DFSTATUS[0x89]
SG_CACHE_SHADOW[0x2] SG_STATE[0x0] DFFSXFRCTL[0x0]
SOFFCNT[0x0] MDFFSTAT[0x14] SHADDR = 0x06, SHCNT = 0x0
HADDR = 0x00, HCNT = 0x0 CCSGCTL[0x10]
LQIN: 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 
0x0 0x0
scsi0: LQISTATE = 0x0, LQOSTATE = 0x0, OPTIONMODE = 0x52
scsi0: OS_SPACE_CNT = 0x20 MAXCMDCNT = 0x0
scsi0: SAVED_SCSIID = 0x0 SAVED_LUN = 0x0
SIMODE0[0xc]
CCSCBCTL[0x4]
scsi0: REG0 == 0x3, SINDEX = 0x1e0, DINDEX = 0xe1
scsi0: SCBPTR == 0x3, SCB_NEXT == 0xffc0, SCB_NEXT2 == 0xffed
CDB 12 0 0 0 24 0
STACK: 0x121 0x0 0x0 0x0 0x0 0x0 0x0 0x0
 Dump Card State Ends 
scsi 0:0:0:0: Device is active, asserting ATN
scsi0: Recovery code sleeping
scsi0: Timer Expired (active 1)
Recovery code awake
scsi0: Command abort returning 0x2003
scsi 0:0:0:0: Attempting to queue a TARGET RESET message:CDB: 0x12 0x0 0x0 0x0 
0x24 0x
0
scsi0: Device reset code sleeping
scsi0: Device reset timer expired (active 2)
scsi0: Device reset returning 0x2003
Recovery SCB completes
Recovery SCB completes
scsi 0:0:0:0: Attempting to queue an ABORT message:CDB: 0x0 0x0 0x0 0x0 0x0 0x0
scsi0: At time of recovery, card was not paused
 Dump Card State Begins 
scsi0: Dumping Card State at program address 0x1b2 Mode 0x11
Card was paused
INTSTAT[0x0] SELOID[0x0] SELID[0x0] HS_MAILBOX[0x0]
INTCTL[0x0] SEQINTSTAT[0x0] SAVED_MODE[0x0] DFFSTAT[0x19]
SCSISIGI[0xa4] SCSIPHASE[0x0] SCSIBUS[0x0] LASTPHASE[0xa0]
SCSISEQ0[0x0] SCSISEQ1[0x12] SEQCTL0[0x0] SEQINTCTL[0x0]
SEQ_FLAGS[0x0] SEQ_FLAGS2[0x4] QFREEZE_COUNT[0x0]
KERNEL_QFREEZE_COUNT[0x0] MK_MESSAGE_SCB[0xff00]
MK_MESSAGE_SCSIID[0xff] SSTAT0[0x0] SSTAT1[0x0]
SSTAT2[0x0] SSTAT3[0x0] PERRDIAG[0xc0] SIMODE1[0xac]
LQISTAT0[0x0] LQISTAT1[0x0] LQISTAT2[0x0] LQOSTAT0[0x0]
LQOSTAT1[0x0] LQOSTAT2[0x0]

SCB Count = 4 CMDS_PENDING = 1 LASTSCB 0x CURRSCB 0x3 NEXTSCB 0x0
qinstart = 2 qinfifonext = 2
QINFIFO:
WAITING_TID_QUEUES:
Pending list:
  3 FIFO_USE[0x0] SCB_CONTROL[0x40] SCB_SCSIID[0x7]
Total 1
Kernel Free SCB list: 2 1 0
Sequencer Complete DMA-inprog list:
Sequencer Complete list:
Sequencer DMA-Up and Complete list:
Sequencer On QFreeze and Complete list:


scsi0: FIFO0 Free, LONGJMP == 0x80ff, SCB 0x0
SEQIMODE[0x3f] SEQINTSRC[0x0] DFCNTRL[0x0] DFSTATUS[0x89]
SG_CACHE_SHADOW[0x2] SG_STATE[0x0] DFFSXFRCTL[0x0]
SOFFCNT[0x0] MDFFSTAT[0x5] SHADDR = 0x00, SHCNT = 0x0
HADDR = 0x00, HCNT = 0x0 CCSGCTL[0x10]

scsi0: FIFO1 Active, LONGJMP == 0x8063, SCB 0x3
SEQIMODE[0x3f] SEQINTSRC[0x0] DFCNTRL[0x4] DFSTATUS[0x89]
SG_CACHE_SHADOW[0x2] SG_STATE[0x0] DFFSXFRCTL[0x0]
SOFFCNT[0x0] MDFFSTAT[0x14] SHADDR = 0x06, SHCNT = 0x0
HADDR = 0x00, HCNT = 0x0 CCSGCTL[0x10]
LQIN: 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 
0x0 0x0
scsi0: LQISTATE = 0x0, LQOSTATE = 0x0, OPTIONMODE = 0x52
scsi0: OS_SPACE_CNT = 0x20 MAXCMDCNT = 0x0
scsi0: SAVED_SCSIID = 0x0 SAVED_LUN = 0x0
SIMODE0[0xc]
CCSCBCTL[0x4]
scsi0: REG0 == 0x3, SINDEX = 0x1e0, 

Re: Adaptec AHA-2940U2W "Data Parity Error Dectected" messages

2005-08-09 Thread Daniel Pittman
Lee Revell <[EMAIL PROTECTED]> writes:
> On Tue, 2005-08-09 at 17:19 +1000, Daniel Pittman wrote:
>> I recently installed a SCSI tape drive and Adaptec AHA-2940U2W SCSI
>> controller into my server to run backups.
>> 
>> Since then, the driver issues these warnings on a semi-regular basis
>> while the drive is busy:
>> 
>> Aug  9 17:00:26 anu kernel: scsi0: Data Parity Error Detected during address 
>> or write data phase
>> Aug  9 17:00:26 anu kernel: scsi0: PCI error Interrupt at seqaddr = 0x8
>
> Make sure the hardware is all installed correctly.  Check that the card
> is fully seated, or try it in another PCI slot.  

Thanks.  I will take the server down shortly and give that a shot.

> Also check your cabling and termination.

Could SCSI cabling and/or termination cause the card to report *PCI*
errors, or am I misunderstanding these messages?

I guess that the fact that the "PCI" bit kept showing up in them is
what confuses me.  I didn't except a SCSI card to report PCI bus issues
through the Linux driver, and since it claimed to be a victim, not a
cause, I didn't know quite how to trace the problem down...

Thanks,
  Daniel
-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to [EMAIL PROTECTED]
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/


Adaptec AHA-2940U2W "Data Parity Error Dectected" messages

2005-08-09 Thread Daniel Pittman
I recently installed a SCSI tape drive and Adaptec AHA-2940U2W SCSI
controller into my server to run backups.

Since then, the driver issues these warnings on a semi-regular basis
while the drive is busy:

Aug  9 17:00:26 anu kernel: scsi0: Data Parity Error Detected during address or 
write data phase
Aug  9 17:00:26 anu kernel: scsi0: PCI error Interrupt at seqaddr = 0x8

[...]

Aug  9 17:03:34 anu kernel: scsi0: Data Parity Error Detected during address or 
write data phase

[...]

Aug  9 17:04:36 anu kernel: scsi0: PCI parity error checking has been disabled.
Aug  9 17:04:36 anu kernel: scsi0: Some device on this bus is generating bad 
parity.
Aug  9 17:04:36 anu kernel: scsi0: This is an error *observed by*, not 
*generated by*, this controller.
Aug  9 17:04:36 anu kernel: scsi0: Too many PCI parity errors observed as a 
target.
Aug  9 17:04:36 anu kernel: scsi0: WARNING WARNING WARNING WARNING


Now, the log message claims that the SCSI controller is not responsible
for these parity errors, so my questions are:

* should I panic about this?
* should I have seen this before the SCSI controller was installed?
* can I do anything about it, or identifying the cause?

Thanks,
  Daniel
-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to [EMAIL PROTECTED]
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/


Adaptec AHA-2940U2W Data Parity Error Dectected messages

2005-08-09 Thread Daniel Pittman
I recently installed a SCSI tape drive and Adaptec AHA-2940U2W SCSI
controller into my server to run backups.

Since then, the driver issues these warnings on a semi-regular basis
while the drive is busy:

Aug  9 17:00:26 anu kernel: scsi0: Data Parity Error Detected during address or 
write data phase
Aug  9 17:00:26 anu kernel: scsi0: PCI error Interrupt at seqaddr = 0x8

[...]

Aug  9 17:03:34 anu kernel: scsi0: Data Parity Error Detected during address or 
write data phase

[...]

Aug  9 17:04:36 anu kernel: scsi0: PCI parity error checking has been disabled.
Aug  9 17:04:36 anu kernel: scsi0: Some device on this bus is generating bad 
parity.
Aug  9 17:04:36 anu kernel: scsi0: This is an error *observed by*, not 
*generated by*, this controller.
Aug  9 17:04:36 anu kernel: scsi0: Too many PCI parity errors observed as a 
target.
Aug  9 17:04:36 anu kernel: scsi0: WARNING WARNING WARNING WARNING


Now, the log message claims that the SCSI controller is not responsible
for these parity errors, so my questions are:

* should I panic about this?
* should I have seen this before the SCSI controller was installed?
* can I do anything about it, or identifying the cause?

Thanks,
  Daniel
-
To unsubscribe from this list: send the line unsubscribe linux-kernel in
the body of a message to [EMAIL PROTECTED]
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/


Re: Adaptec AHA-2940U2W Data Parity Error Dectected messages

2005-08-09 Thread Daniel Pittman
Lee Revell [EMAIL PROTECTED] writes:
 On Tue, 2005-08-09 at 17:19 +1000, Daniel Pittman wrote:
 I recently installed a SCSI tape drive and Adaptec AHA-2940U2W SCSI
 controller into my server to run backups.
 
 Since then, the driver issues these warnings on a semi-regular basis
 while the drive is busy:
 
 Aug  9 17:00:26 anu kernel: scsi0: Data Parity Error Detected during address 
 or write data phase
 Aug  9 17:00:26 anu kernel: scsi0: PCI error Interrupt at seqaddr = 0x8

 Make sure the hardware is all installed correctly.  Check that the card
 is fully seated, or try it in another PCI slot.  

Thanks.  I will take the server down shortly and give that a shot.

 Also check your cabling and termination.

Could SCSI cabling and/or termination cause the card to report *PCI*
errors, or am I misunderstanding these messages?

I guess that the fact that the PCI bit kept showing up in them is
what confuses me.  I didn't except a SCSI card to report PCI bus issues
through the Linux driver, and since it claimed to be a victim, not a
cause, I didn't know quite how to trace the problem down...

Thanks,
  Daniel
-
To unsubscribe from this list: send the line unsubscribe linux-kernel in
the body of a message to [EMAIL PROTECTED]
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/


[PATCH] Updates to Maestro{1,2,2E} driver -- multiple open of dsp, persistent buffers.

2001-07-06 Thread Daniel Pittman
STRO_CHANNELS 1
+   bool 'Persistent Maestro dsp buffers' CONFIG_MAESTRO_PERSIST
+fi
 dep_tristate '  ESS Maestro3/Allegro driver (EXPERIMENTAL)' CONFIG_SOUND_MAESTRO3 $CONFIG_SOUND $CONFIG_PCI $CONFIG_EXPERIMENTAL
 dep_tristate '  Intel ICH (i8xx) audio support' CONFIG_SOUND_ICH $CONFIG_PCI
 dep_tristate '  S3 SonicVibes' CONFIG_SOUND_SONICVIBES $CONFIG_SOUND
diff -ru linux/drivers/sound/maestro.c linux.maestro/drivers/sound/maestro.c
--- linux/drivers/sound/maestro.c	Fri Jul  6 17:16:21 2001
+++ linux.maestro/drivers/sound/maestro.c	Thu Jul  5 15:42:42 2001
@@ -1,6 +1,6 @@
 /*
  *
- *  ESS Maestro/Maestro-2/Maestro-2E driver for Linux 2.[23].x
+ *  ESS Maestro/Maestro-2/Maestro-2E driver for Linux 2.[234].x
  *
  *  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
@@ -28,7 +28,7 @@
  *	proprietors of Hack Central for fine lodging.
  *
  *  Supported devices:
- *  /dev/dsp0-3standard /dev/dsp device, (mostly) OSS compatible
+ *  /dev/dspstandard /dev/dsp device, (mostly) OSS compatible
  *  /dev/mixer  standard /dev/mixer device, (mostly) OSS compatible
  *
  *  Hardware Description
@@ -39,7 +39,7 @@
  *	channels.  They can take data from a number of sources and perform
  *	basic encodings of the data.  The wavecache is a storehouse for
  *	PCM data.  Typically it deals with PCI and interracts with the
- *	APUs.  The ASSP is a wacky DSP like device that ESS is loth
+ *	APUs.  The ASSP is a wacky DSP like device that ESS is loath
  *	to release docs on.  Thankfully it isn't required on the Maestro
  *	until you start doing insane things like FM emulation and surround
  *	encoding.  The codecs are almost always AC-97 compliant codecs, 
@@ -69,20 +69,19 @@
  *	software.  The pass between the 2 APUs is supposedly what requires us
  *	to have a 512 byte buffer sitting around in wavecache/memory.
  *
- *	The wavecache makes our life even more fun.  First off, it can
- *	only address the first 28 bits of PCI address space, making it
- *	useless on quite a few architectures.  Secondly, its insane.
- *	It claims to fetch from 4 regions of PCI space, each 4 meg in length.
- *	But that doesn't really work.  You can only use 1 region.  So all our
- *	allocations have to be in 4meg of each other.  Booo.  Hiss.
- *	So we have a module parameter, dsps_order, that is the order of
- *	the number of dsps to provide.  All their buffer space is allocated
- *	on open time.  The sonicvibes OSS routines we inherited really want
- *	power of 2 buffers, so we have all those next to each other, then
- *	512 byte regions for the recording wavecaches.  This ends up
- *	wasting quite a bit of memory.  The only fixes I can see would be 
- *	getting a kernel allocator that could work in zones, or figuring out
- *	just how to coerce the WP into doing what we want.
+ *  The wavecache makes our life even more fun. First off, it can only address
+ *  the first 28 bits of PCI address space, making it useless on quite a
+ *  few architectures. Secondly, its insane. It claims to fetch from 4
+ *  regions of PCI space, each 4 meg in length. But that doesn't really
+ *  work. You can only use 1 region. So all our allocations have to be in
+ *  4meg of each other. Booo. Hiss. So we have a module parameter,
+ *  channels, that is the number of dsps to provide. All their buffer
+ *  space is allocated on open time. The sonicvibes OSS routines we
+ *  inherited really want power of 2 buffers, so we have all those next to
+ *  each other, then 512 byte regions for the recording wavecaches. This
+ *  ends up wasting quite a bit of memory. The only fixes I can see would
+ *  be getting a kernel allocator that could work in zones, or figuring
+ *  out just how to coerce the WP into doing what we want.
  *
  *	The indirection of the various registers means we have to spinlock
  *	nearly all register accesses.  We have the main register indirection
@@ -115,6 +114,15 @@
  *	themselves, but we'll see.  
  *	
  * History
+ *  v0.15 - Jul 05 2001 - Daniel Pittman <[EMAIL PROTECTED]>
+ *  Support multiple open of /dev/dsp, not multiple dsp devices.
+ *  Parse the kernel command line for arguments.
+ *  Add module parameter descriptions.
+ *  Added configure time support for setting default number of dsp
+ *  channels to use. This is not the dsps_order value, because that's
+ *  totally, like, impossible to explain to anyone who isn't a math geek.
+ *  Added support for persistent sound buffer allocation for a card so
+ *  that my laptop will still be able to play sound after a compile.
  *  v0.15 - May 21 2001 - Marcus Meissner <[EMAIL PROTECTED]>
  *  Ported to Linux 2.4 PCI API. Some clean ups, global devs list
  *  removed (now using pci device driver data).
@@ -246

[PATCH] Updates to Maestro{1,2,2E} driver -- multiple open of dsp, persistent buffers.

2001-07-06 Thread Daniel Pittman
 'Persistent Maestro dsp buffers' CONFIG_MAESTRO_PERSIST
+fi
 dep_tristate '  ESS Maestro3/Allegro driver (EXPERIMENTAL)' CONFIG_SOUND_MAESTRO3 $CONFIG_SOUND $CONFIG_PCI $CONFIG_EXPERIMENTAL
 dep_tristate '  Intel ICH (i8xx) audio support' CONFIG_SOUND_ICH $CONFIG_PCI
 dep_tristate '  S3 SonicVibes' CONFIG_SOUND_SONICVIBES $CONFIG_SOUND
diff -ru linux/drivers/sound/maestro.c linux.maestro/drivers/sound/maestro.c
--- linux/drivers/sound/maestro.c	Fri Jul  6 17:16:21 2001
+++ linux.maestro/drivers/sound/maestro.c	Thu Jul  5 15:42:42 2001
@@ -1,6 +1,6 @@
 /*
  *
- *  ESS Maestro/Maestro-2/Maestro-2E driver for Linux 2.[23].x
+ *  ESS Maestro/Maestro-2/Maestro-2E driver for Linux 2.[234].x
  *
  *  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
@@ -28,7 +28,7 @@
  *	proprietors of Hack Central for fine lodging.
  *
  *  Supported devices:
- *  /dev/dsp0-3standard /dev/dsp device, (mostly) OSS compatible
+ *  /dev/dspstandard /dev/dsp device, (mostly) OSS compatible
  *  /dev/mixer  standard /dev/mixer device, (mostly) OSS compatible
  *
  *  Hardware Description
@@ -39,7 +39,7 @@
  *	channels.  They can take data from a number of sources and perform
  *	basic encodings of the data.  The wavecache is a storehouse for
  *	PCM data.  Typically it deals with PCI and interracts with the
- *	APUs.  The ASSP is a wacky DSP like device that ESS is loth
+ *	APUs.  The ASSP is a wacky DSP like device that ESS is loath
  *	to release docs on.  Thankfully it isn't required on the Maestro
  *	until you start doing insane things like FM emulation and surround
  *	encoding.  The codecs are almost always AC-97 compliant codecs, 
@@ -69,20 +69,19 @@
  *	software.  The pass between the 2 APUs is supposedly what requires us
  *	to have a 512 byte buffer sitting around in wavecache/memory.
  *
- *	The wavecache makes our life even more fun.  First off, it can
- *	only address the first 28 bits of PCI address space, making it
- *	useless on quite a few architectures.  Secondly, its insane.
- *	It claims to fetch from 4 regions of PCI space, each 4 meg in length.
- *	But that doesn't really work.  You can only use 1 region.  So all our
- *	allocations have to be in 4meg of each other.  Booo.  Hiss.
- *	So we have a module parameter, dsps_order, that is the order of
- *	the number of dsps to provide.  All their buffer space is allocated
- *	on open time.  The sonicvibes OSS routines we inherited really want
- *	power of 2 buffers, so we have all those next to each other, then
- *	512 byte regions for the recording wavecaches.  This ends up
- *	wasting quite a bit of memory.  The only fixes I can see would be 
- *	getting a kernel allocator that could work in zones, or figuring out
- *	just how to coerce the WP into doing what we want.
+ *  The wavecache makes our life even more fun. First off, it can only address
+ *  the first 28 bits of PCI address space, making it useless on quite a
+ *  few architectures. Secondly, its insane. It claims to fetch from 4
+ *  regions of PCI space, each 4 meg in length. But that doesn't really
+ *  work. You can only use 1 region. So all our allocations have to be in
+ *  4meg of each other. Booo. Hiss. So we have a module parameter,
+ *  channels, that is the number of dsps to provide. All their buffer
+ *  space is allocated on open time. The sonicvibes OSS routines we
+ *  inherited really want power of 2 buffers, so we have all those next to
+ *  each other, then 512 byte regions for the recording wavecaches. This
+ *  ends up wasting quite a bit of memory. The only fixes I can see would
+ *  be getting a kernel allocator that could work in zones, or figuring
+ *  out just how to coerce the WP into doing what we want.
  *
  *	The indirection of the various registers means we have to spinlock
  *	nearly all register accesses.  We have the main register indirection
@@ -115,6 +114,15 @@
  *	themselves, but we'll see.  
  *	
  * History
+ *  v0.15 - Jul 05 2001 - Daniel Pittman [EMAIL PROTECTED]
+ *  Support multiple open of /dev/dsp, not multiple dsp devices.
+ *  Parse the kernel command line for arguments.
+ *  Add module parameter descriptions.
+ *  Added configure time support for setting default number of dsp
+ *  channels to use. This is not the dsps_order value, because that's
+ *  totally, like, impossible to explain to anyone who isn't a math geek.
+ *  Added support for persistent sound buffer allocation for a card so
+ *  that my laptop will still be able to play sound after a compile.
  *  v0.15 - May 21 2001 - Marcus Meissner [EMAIL PROTECTED]
  *  Ported to Linux 2.4 PCI API. Some clean ups, global devs list
  *  removed (now using pci device driver data).
@@ -246,26 +254,48 @@
 #define M_printk(x

Re: What does "NAT: dropping untracked packet" mean?

2001-02-01 Thread Daniel Pittman

dmeyer  <[EMAIL PROTECTED]> writes:
>
> In article <[EMAIL PROTECTED]> you write:
>> On Thu, 01 Feb 2001, Nils Rennebarth wrote:
>> > Feb 1 12:58:56 obelix kernel: NAT: 0 dropping untracked packet
>> ce767600 1 129.69.22.21 -> 224.0.0.2
>>
>> It means that your box drops multicast administrative packets on the
>> floor.
>
> I'm getting the occasional
>
> Feb 1 13:17:08 yendi kernel: NAT: 0 dropping untracked packet c3ea4da0
> 1 146.188.249.73 -> 209.220.232.240
>
> syslog message. What exactly does it mean? 146.188.249.73 isn't my
> machine at all, and 209.220.232.240 is my firewall. I assume I'm
> dropping someone's packets on the floor, but what can cause a packet
> to get dropped like that?

The one big thing I know of that causes these messages is a
long-standing bug in the FreeBSD and OpenBSD (and presumably NetBSD, I
don't know about that one, though) network stacks.

When sending an ICMP host unreachable response to a DF packet, some of
the packet was byte-swapped.

The bytes were *only* in the segment of the original IP packet appended
to the ICMP message for identification purposes.

Under normal conditions this packet works fine with Linux. The
connection is killed, all is fine.

When running netfilter and connection tracking, netfilter uses these
byte-swapped fields to associate the ICMP message with the original TCP
or UDP packets.

Because the fields are out-of-order, this match fails. netfilter then
drops the packet on the floor and generates the 'untracked packet'
message.

FreeBSD have fixes their network stack not that long ago. I believe that
their 5.0 release corrects the bug, but I am not sure of that. Check
with them if you really care.

I don't believe that OpenBSD have corrected this problem at this stage
but, again, I have not checked recently. Check with them if you really
care.


This bug is *only* triggered when the packet has DF set. Normal packets
don't trigger that particular buggy code path.

Daniel

-- 
The truth knocks on the door and you say, 'Go away, I'm looking for
the truth,' and so it goes away. Puzzling...
-- Robert Pirsig
-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to [EMAIL PROTECTED]
Please read the FAQ at http://www.tux.org/lkml/



Re: What does NAT: dropping untracked packet mean?

2001-02-01 Thread Daniel Pittman

dmeyer  [EMAIL PROTECTED] writes:

 In article [EMAIL PROTECTED] you write:
 On Thu, 01 Feb 2001, Nils Rennebarth wrote:
  Feb 1 12:58:56 obelix kernel: NAT: 0 dropping untracked packet
 ce767600 1 129.69.22.21 - 224.0.0.2

 It means that your box drops multicast administrative packets on the
 floor.

 I'm getting the occasional

 Feb 1 13:17:08 yendi kernel: NAT: 0 dropping untracked packet c3ea4da0
 1 146.188.249.73 - 209.220.232.240

 syslog message. What exactly does it mean? 146.188.249.73 isn't my
 machine at all, and 209.220.232.240 is my firewall. I assume I'm
 dropping someone's packets on the floor, but what can cause a packet
 to get dropped like that?

The one big thing I know of that causes these messages is a
long-standing bug in the FreeBSD and OpenBSD (and presumably NetBSD, I
don't know about that one, though) network stacks.

When sending an ICMP host unreachable response to a DF packet, some of
the packet was byte-swapped.

The bytes were *only* in the segment of the original IP packet appended
to the ICMP message for identification purposes.

Under normal conditions this packet works fine with Linux. The
connection is killed, all is fine.

When running netfilter and connection tracking, netfilter uses these
byte-swapped fields to associate the ICMP message with the original TCP
or UDP packets.

Because the fields are out-of-order, this match fails. netfilter then
drops the packet on the floor and generates the 'untracked packet'
message.

FreeBSD have fixes their network stack not that long ago. I believe that
their 5.0 release corrects the bug, but I am not sure of that. Check
with them if you really care.

I don't believe that OpenBSD have corrected this problem at this stage
but, again, I have not checked recently. Check with them if you really
care.


This bug is *only* triggered when the packet has DF set. Normal packets
don't trigger that particular buggy code path.

Daniel

-- 
The truth knocks on the door and you say, 'Go away, I'm looking for
the truth,' and so it goes away. Puzzling...
-- Robert Pirsig
-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to [EMAIL PROTECTED]
Please read the FAQ at http://www.tux.org/lkml/



[PATCH] Maestro 2 sound driver update.

2000-12-13 Thread Daniel Pittman
; = "y" -o "$CONFIG_SOUND_MAESTRO" = "m" ]; then
+   int  'Number of channels (1,2,4)' CONFIG_MAESTRO_CHANNELS 1
+   bool 'Persistent Maestro dsp buffers' CONFIG_MAESTRO_PERSIST
+fi
 dep_tristate '  S3 SonicVibes' CONFIG_SOUND_SONICVIBES $CONFIG_SOUND
 if [ "$CONFIG_VISWS" = "y" ]; then
 dep_tristate '  SGI Visual Workstation Sound' CONFIG_SOUND_VWSND $CONFIG_SOUND
Only in linux.dp/drivers/sound: Config.in~
diff -u --recursive linux/drivers/sound/maestro.c linux.dp/drivers/sound/maestro.c
--- linux/drivers/sound/maestro.c	Tue Dec 12 15:17:44 2000
+++ linux.dp/drivers/sound/maestro.c	Tue Dec 12 14:58:45 2000
@@ -1,6 +1,6 @@
 /*
  *
- *  ESS Maestro/Maestro-2/Maestro-2E driver for Linux 2.[23].x
+ *  ESS Maestro/Maestro-2/Maestro-2E driver for Linux 2.[234].x
  *
  *  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
@@ -28,7 +28,7 @@
  *	proprietors of Hack Central for fine lodging.
  *
  *  Supported devices:
- *  /dev/dsp0-3standard /dev/dsp device, (mostly) OSS compatible
+ *  /dev/dspstandard /dev/dsp device, (mostly) OSS compatible
  *  /dev/mixer  standard /dev/mixer device, (mostly) OSS compatible
  *
  *  Hardware Description
@@ -39,7 +39,7 @@
  *	channels.  They can take data from a number of sources and perform
  *	basic encodings of the data.  The wavecache is a storehouse for
  *	PCM data.  Typically it deals with PCI and interracts with the
- *	APUs.  The ASSP is a wacky DSP like device that ESS is loth
+ *	APUs.  The ASSP is a wacky DSP like device that ESS is loath
  *	to release docs on.  Thankfully it isn't required on the Maestro
  *	until you start doing insane things like FM emulation and surround
  *	encoding.  The codecs are almost always AC-97 compliant codecs, 
@@ -69,20 +69,19 @@
  *	software.  The pass between the 2 APUs is supposedly what requires us
  *	to have a 512 byte buffer sitting around in wavecache/memory.
  *
- *	The wavecache makes our life even more fun.  First off, it can
- *	only address the first 28 bits of PCI address space, making it
- *	useless on quite a few architectures.  Secondly, its insane.
- *	It claims to fetch from 4 regions of PCI space, each 4 meg in length.
- *	But that doesn't really work.  You can only use 1 region.  So all our
- *	allocations have to be in 4meg of each other.  Booo.  Hiss.
- *	So we have a module parameter, dsps_order, that is the order of
- *	the number of dsps to provide.  All their buffer space is allocated
- *	on open time.  The sonicvibes OSS routines we inherited really want
- *	power of 2 buffers, so we have all those next to each other, then
- *	512 byte regions for the recording wavecaches.  This ends up
- *	wasting quite a bit of memory.  The only fixes I can see would be 
- *	getting a kernel allocator that could work in zones, or figuring out
- *	just how to coerce the WP into doing what we want.
+ *  The wavecache makes our life even more fun. First off, it can only address
+ *  the first 28 bits of PCI address space, making it useless on quite a
+ *  few architectures. Secondly, its insane. It claims to fetch from 4
+ *  regions of PCI space, each 4 meg in length. But that doesn't really
+ *  work. You can only use 1 region. So all our allocations have to be in
+ *  4meg of each other. Booo. Hiss. So we have a module parameter,
+ *  channels, that is the number of dsps to provide. All their buffer
+ *  space is allocated on open time. The sonicvibes OSS routines we
+ *  inherited really want power of 2 buffers, so we have all those next to
+ *  each other, then 512 byte regions for the recording wavecaches. This
+ *  ends up wasting quite a bit of memory. The only fixes I can see would
+ *  be getting a kernel allocator that could work in zones, or figuring
+ *  out just how to coerce the WP into doing what we want.
  *
  *	The indirection of the various registers means we have to spinlock
  *	nearly all register accesses.  We have the main register indirection
@@ -115,6 +114,16 @@
  *	themselves, but we'll see.  
  *	
  * History
+ *  v0.16 - Sep 20 2000 - Daniel Pittman <[EMAIL PROTECTED]>
+ *  Support multiple open of /dev/dsp, not multiple dsp devices.
+ *  Parse the kernel command line for arguments.
+ *  Add module parameter descriptions.
+ *  v0.15 - Sep 14 2000 - Daniel Pittman <[EMAIL PROTECTED]>
+ *  Added configure time support for setting default number of dsp
+ *  channels to use. This is not the dsps_order value, because that's
+ *  totally, like, impossible to explain to anyone who isn't a math geek.
+ *  Added support for persistent sound buffer allocation for a card so
+ *  that my laptop will still be able to play sound after a compile.
  *  (still kind of v

[PATCH] Maestro 2 sound driver update.

2000-12-13 Thread Daniel Pittman
+if [ "$CONFIG_SOUND_MAESTRO" = "y" -o "$CONFIG_SOUND_MAESTRO" = "m" ]; then
+   int  'Number of channels (1,2,4)' CONFIG_MAESTRO_CHANNELS 1
+   bool 'Persistent Maestro dsp buffers' CONFIG_MAESTRO_PERSIST
+fi
 dep_tristate '  S3 SonicVibes' CONFIG_SOUND_SONICVIBES $CONFIG_SOUND
 if [ "$CONFIG_VISWS" = "y" ]; then
 dep_tristate '  SGI Visual Workstation Sound' CONFIG_SOUND_VWSND $CONFIG_SOUND
Only in linux.dp/drivers/sound: Config.in~
diff -u --recursive linux/drivers/sound/maestro.c linux.dp/drivers/sound/maestro.c
--- linux/drivers/sound/maestro.c	Tue Dec 12 15:17:44 2000
+++ linux.dp/drivers/sound/maestro.c	Tue Dec 12 14:58:45 2000
@@ -1,6 +1,6 @@
 /*
  *
- *  ESS Maestro/Maestro-2/Maestro-2E driver for Linux 2.[23].x
+ *  ESS Maestro/Maestro-2/Maestro-2E driver for Linux 2.[234].x
  *
  *  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
@@ -28,7 +28,7 @@
  *	proprietors of Hack Central for fine lodging.
  *
  *  Supported devices:
- *  /dev/dsp0-3standard /dev/dsp device, (mostly) OSS compatible
+ *  /dev/dspstandard /dev/dsp device, (mostly) OSS compatible
  *  /dev/mixer  standard /dev/mixer device, (mostly) OSS compatible
  *
  *  Hardware Description
@@ -39,7 +39,7 @@
  *	channels.  They can take data from a number of sources and perform
  *	basic encodings of the data.  The wavecache is a storehouse for
  *	PCM data.  Typically it deals with PCI and interracts with the
- *	APUs.  The ASSP is a wacky DSP like device that ESS is loth
+ *	APUs.  The ASSP is a wacky DSP like device that ESS is loath
  *	to release docs on.  Thankfully it isn't required on the Maestro
  *	until you start doing insane things like FM emulation and surround
  *	encoding.  The codecs are almost always AC-97 compliant codecs, 
@@ -69,20 +69,19 @@
  *	software.  The pass between the 2 APUs is supposedly what requires us
  *	to have a 512 byte buffer sitting around in wavecache/memory.
  *
- *	The wavecache makes our life even more fun.  First off, it can
- *	only address the first 28 bits of PCI address space, making it
- *	useless on quite a few architectures.  Secondly, its insane.
- *	It claims to fetch from 4 regions of PCI space, each 4 meg in length.
- *	But that doesn't really work.  You can only use 1 region.  So all our
- *	allocations have to be in 4meg of each other.  Booo.  Hiss.
- *	So we have a module parameter, dsps_order, that is the order of
- *	the number of dsps to provide.  All their buffer space is allocated
- *	on open time.  The sonicvibes OSS routines we inherited really want
- *	power of 2 buffers, so we have all those next to each other, then
- *	512 byte regions for the recording wavecaches.  This ends up
- *	wasting quite a bit of memory.  The only fixes I can see would be 
- *	getting a kernel allocator that could work in zones, or figuring out
- *	just how to coerce the WP into doing what we want.
+ *  The wavecache makes our life even more fun. First off, it can only address
+ *  the first 28 bits of PCI address space, making it useless on quite a
+ *  few architectures. Secondly, its insane. It claims to fetch from 4
+ *  regions of PCI space, each 4 meg in length. But that doesn't really
+ *  work. You can only use 1 region. So all our allocations have to be in
+ *  4meg of each other. Booo. Hiss. So we have a module parameter,
+ *  channels, that is the number of dsps to provide. All their buffer
+ *  space is allocated on open time. The sonicvibes OSS routines we
+ *  inherited really want power of 2 buffers, so we have all those next to
+ *  each other, then 512 byte regions for the recording wavecaches. This
+ *  ends up wasting quite a bit of memory. The only fixes I can see would
+ *  be getting a kernel allocator that could work in zones, or figuring
+ *  out just how to coerce the WP into doing what we want.
  *
  *	The indirection of the various registers means we have to spinlock
  *	nearly all register accesses.  We have the main register indirection
@@ -115,6 +114,16 @@
  *	themselves, but we'll see.  
  *	
  * History
+ *  v0.16 - Sep 20 2000 - Daniel Pittman [EMAIL PROTECTED]
+ *  Support multiple open of /dev/dsp, not multiple dsp devices.
+ *  Parse the kernel command line for arguments.
+ *  Add module parameter descriptions.
+ *  v0.15 - Sep 14 2000 - Daniel Pittman [EMAIL PROTECTED]
+ *  Added configure time support for setting default number of dsp
+ *  channels to use. This is not the dsps_order value, because that's
+ *  totally, like, impossible to explain to anyone who isn't a math geek.
+ *  Added support for persistent sound buffer allocation for a card so
+ *  that my laptop will still be able to play sound after a compile.
  *  (stil