Searched hist:71390 (Results 1 - 11 of 11) sorted by last modified time

/freebsd-10.1-release/sys/dev/aic7xxx/
H A Dahc_eisa.cdiff 71390 Mon Jan 22 19:03:48 MST 2001 gibbs ahc_eisa.c:
Initialize rid to 0. This doesn't seem to make any difference
(the driver doesn't care what rid it gets and no-one seems to
check rid's value), but follows standard conventions.

Pass in our device_t to ahc_alloc(). We now use device_T
softc storage, so passing NULL results in a panic.

Set the unit number in our softc so that the driver core
can retrieve it.

ahc_pci.c:
Set the unit number in our softc so that the driver core
can retrieve it.

aic7770.c:
Insert our softc into the list of softcs when initialization
is successful.

aic7xxx.c:
Remove a workaround for an aic7895 bug we will never trigger.

Add additional diagnostic info to ahc_dump_card_state().

Always panic the system if a sequencer assertion fails.

AHC_SCB_BTT is a "flag" not a "feature". Check the right
field in the softc.

Replace a hard coded number with a constant.

Guard against looping forever in ahc_pause_and_flushwork().
A hot eject or card failure may make the intstat register
return 0xFF, so limit the number of interrupts we'll process.

Correct the code in ahc_search_qinfifo() that guarantees that
the sequencer will see an abort collision if the qinfifo is
modified when a DMA is in progress. We now do this fixup
after modifying the queue. This guarantees that the HSCB
we place at the head of the queue is not the same as the
old head. Using "next hscb" (guaranteed not to be the
same as the first SCB) before clearing the queue could free
up the original head hscb to be used during a remove operation
placing it again at the head of the qinfifo.

aic7xxx.h:
Reduce the maximum number of outstanding commands to 253 from
254. To handle our output queue correctly on machines that only
support 32bit stores, we must clear the array 4 bytes at a
time. To avoid colliding with a DMA write from the sequencer,
we must be sure that 4 slots are empty when we write to clear
the queue. This reduces us to 253 SCBs: 1 that just completed
and the known three additional empty slots in the queue that
preceed it. Yahoo was able to force this race on one of their
systems. Interrupts were disabled for such a time that the
entire output queue was filled (254 entries complete without
any processing), and our 32bit write to clear the status clobbered
one entry.

Add a feature tag for devices that are removable.

aic7xxx.reg:
Never use the sequencer interrupt value of 0xF0. We need
to guanrantee that an INTSTAT value of 0xFF can only occur
during card failure or a hot-eject.

Align the busy targets table with the begining of scratch
space. This seems to appease a chip bug in the aic7895.

aic7xxx.seq:
Be sure to disable select-out after a bus free event that occurs
early in a selection. If we don't disable select-out, we will
believe that it is enabled even though a new selection will never
occur.

Move the clearing of SELDI to just before a jump. This appeases
another chip bug of the aic7895.

Make the target mode command loop a bit more efficient.

AHC_SCB_BTT is a "flag" not a "feature". Check the right
field in the softc.

Properly cleanup the last SCB we tested against should we
fail to properly find an SCB for a reselection.

Add some additional sequencer debugging code.

aic7xxx_freebsd.c:
Limit the driver to 253 outstanding commands per adapter.

Guard against overflow in timeout handling.

aic7xxx_inline.h:
AHC_SCB_BTT is a "flag" not a "feature". Check the right
field in the softc.

aic7xxx_pci.c:
Set the removable feature for the apa1480 cardbus and the 29160C
Compact PCI card.

Don't report high byte termination information for narrow cards.

Use a PCI read rather than a questionable delay when fetching/setting
termination settings.
H A Dahc_pci.cdiff 71390 Mon Jan 22 19:03:48 MST 2001 gibbs ahc_eisa.c:
Initialize rid to 0. This doesn't seem to make any difference
(the driver doesn't care what rid it gets and no-one seems to
check rid's value), but follows standard conventions.

Pass in our device_t to ahc_alloc(). We now use device_T
softc storage, so passing NULL results in a panic.

Set the unit number in our softc so that the driver core
can retrieve it.

ahc_pci.c:
Set the unit number in our softc so that the driver core
can retrieve it.

aic7770.c:
Insert our softc into the list of softcs when initialization
is successful.

aic7xxx.c:
Remove a workaround for an aic7895 bug we will never trigger.

Add additional diagnostic info to ahc_dump_card_state().

Always panic the system if a sequencer assertion fails.

AHC_SCB_BTT is a "flag" not a "feature". Check the right
field in the softc.

Replace a hard coded number with a constant.

Guard against looping forever in ahc_pause_and_flushwork().
A hot eject or card failure may make the intstat register
return 0xFF, so limit the number of interrupts we'll process.

Correct the code in ahc_search_qinfifo() that guarantees that
the sequencer will see an abort collision if the qinfifo is
modified when a DMA is in progress. We now do this fixup
after modifying the queue. This guarantees that the HSCB
we place at the head of the queue is not the same as the
old head. Using "next hscb" (guaranteed not to be the
same as the first SCB) before clearing the queue could free
up the original head hscb to be used during a remove operation
placing it again at the head of the qinfifo.

aic7xxx.h:
Reduce the maximum number of outstanding commands to 253 from
254. To handle our output queue correctly on machines that only
support 32bit stores, we must clear the array 4 bytes at a
time. To avoid colliding with a DMA write from the sequencer,
we must be sure that 4 slots are empty when we write to clear
the queue. This reduces us to 253 SCBs: 1 that just completed
and the known three additional empty slots in the queue that
preceed it. Yahoo was able to force this race on one of their
systems. Interrupts were disabled for such a time that the
entire output queue was filled (254 entries complete without
any processing), and our 32bit write to clear the status clobbered
one entry.

Add a feature tag for devices that are removable.

aic7xxx.reg:
Never use the sequencer interrupt value of 0xF0. We need
to guanrantee that an INTSTAT value of 0xFF can only occur
during card failure or a hot-eject.

Align the busy targets table with the begining of scratch
space. This seems to appease a chip bug in the aic7895.

aic7xxx.seq:
Be sure to disable select-out after a bus free event that occurs
early in a selection. If we don't disable select-out, we will
believe that it is enabled even though a new selection will never
occur.

Move the clearing of SELDI to just before a jump. This appeases
another chip bug of the aic7895.

Make the target mode command loop a bit more efficient.

AHC_SCB_BTT is a "flag" not a "feature". Check the right
field in the softc.

Properly cleanup the last SCB we tested against should we
fail to properly find an SCB for a reselection.

Add some additional sequencer debugging code.

aic7xxx_freebsd.c:
Limit the driver to 253 outstanding commands per adapter.

Guard against overflow in timeout handling.

aic7xxx_inline.h:
AHC_SCB_BTT is a "flag" not a "feature". Check the right
field in the softc.

aic7xxx_pci.c:
Set the removable feature for the apa1480 cardbus and the 29160C
Compact PCI card.

Don't report high byte termination information for narrow cards.

Use a PCI read rather than a questionable delay when fetching/setting
termination settings.
H A Daic7770.cdiff 71390 Mon Jan 22 19:03:48 MST 2001 gibbs ahc_eisa.c:
Initialize rid to 0. This doesn't seem to make any difference
(the driver doesn't care what rid it gets and no-one seems to
check rid's value), but follows standard conventions.

Pass in our device_t to ahc_alloc(). We now use device_T
softc storage, so passing NULL results in a panic.

Set the unit number in our softc so that the driver core
can retrieve it.

ahc_pci.c:
Set the unit number in our softc so that the driver core
can retrieve it.

aic7770.c:
Insert our softc into the list of softcs when initialization
is successful.

aic7xxx.c:
Remove a workaround for an aic7895 bug we will never trigger.

Add additional diagnostic info to ahc_dump_card_state().

Always panic the system if a sequencer assertion fails.

AHC_SCB_BTT is a "flag" not a "feature". Check the right
field in the softc.

Replace a hard coded number with a constant.

Guard against looping forever in ahc_pause_and_flushwork().
A hot eject or card failure may make the intstat register
return 0xFF, so limit the number of interrupts we'll process.

Correct the code in ahc_search_qinfifo() that guarantees that
the sequencer will see an abort collision if the qinfifo is
modified when a DMA is in progress. We now do this fixup
after modifying the queue. This guarantees that the HSCB
we place at the head of the queue is not the same as the
old head. Using "next hscb" (guaranteed not to be the
same as the first SCB) before clearing the queue could free
up the original head hscb to be used during a remove operation
placing it again at the head of the qinfifo.

aic7xxx.h:
Reduce the maximum number of outstanding commands to 253 from
254. To handle our output queue correctly on machines that only
support 32bit stores, we must clear the array 4 bytes at a
time. To avoid colliding with a DMA write from the sequencer,
we must be sure that 4 slots are empty when we write to clear
the queue. This reduces us to 253 SCBs: 1 that just completed
and the known three additional empty slots in the queue that
preceed it. Yahoo was able to force this race on one of their
systems. Interrupts were disabled for such a time that the
entire output queue was filled (254 entries complete without
any processing), and our 32bit write to clear the status clobbered
one entry.

Add a feature tag for devices that are removable.

aic7xxx.reg:
Never use the sequencer interrupt value of 0xF0. We need
to guanrantee that an INTSTAT value of 0xFF can only occur
during card failure or a hot-eject.

Align the busy targets table with the begining of scratch
space. This seems to appease a chip bug in the aic7895.

aic7xxx.seq:
Be sure to disable select-out after a bus free event that occurs
early in a selection. If we don't disable select-out, we will
believe that it is enabled even though a new selection will never
occur.

Move the clearing of SELDI to just before a jump. This appeases
another chip bug of the aic7895.

Make the target mode command loop a bit more efficient.

AHC_SCB_BTT is a "flag" not a "feature". Check the right
field in the softc.

Properly cleanup the last SCB we tested against should we
fail to properly find an SCB for a reselection.

Add some additional sequencer debugging code.

aic7xxx_freebsd.c:
Limit the driver to 253 outstanding commands per adapter.

Guard against overflow in timeout handling.

aic7xxx_inline.h:
AHC_SCB_BTT is a "flag" not a "feature". Check the right
field in the softc.

aic7xxx_pci.c:
Set the removable feature for the apa1480 cardbus and the 29160C
Compact PCI card.

Don't report high byte termination information for narrow cards.

Use a PCI read rather than a questionable delay when fetching/setting
termination settings.
H A Daic7xxx.cdiff 71390 Mon Jan 22 19:03:48 MST 2001 gibbs ahc_eisa.c:
Initialize rid to 0. This doesn't seem to make any difference
(the driver doesn't care what rid it gets and no-one seems to
check rid's value), but follows standard conventions.

Pass in our device_t to ahc_alloc(). We now use device_T
softc storage, so passing NULL results in a panic.

Set the unit number in our softc so that the driver core
can retrieve it.

ahc_pci.c:
Set the unit number in our softc so that the driver core
can retrieve it.

aic7770.c:
Insert our softc into the list of softcs when initialization
is successful.

aic7xxx.c:
Remove a workaround for an aic7895 bug we will never trigger.

Add additional diagnostic info to ahc_dump_card_state().

Always panic the system if a sequencer assertion fails.

AHC_SCB_BTT is a "flag" not a "feature". Check the right
field in the softc.

Replace a hard coded number with a constant.

Guard against looping forever in ahc_pause_and_flushwork().
A hot eject or card failure may make the intstat register
return 0xFF, so limit the number of interrupts we'll process.

Correct the code in ahc_search_qinfifo() that guarantees that
the sequencer will see an abort collision if the qinfifo is
modified when a DMA is in progress. We now do this fixup
after modifying the queue. This guarantees that the HSCB
we place at the head of the queue is not the same as the
old head. Using "next hscb" (guaranteed not to be the
same as the first SCB) before clearing the queue could free
up the original head hscb to be used during a remove operation
placing it again at the head of the qinfifo.

aic7xxx.h:
Reduce the maximum number of outstanding commands to 253 from
254. To handle our output queue correctly on machines that only
support 32bit stores, we must clear the array 4 bytes at a
time. To avoid colliding with a DMA write from the sequencer,
we must be sure that 4 slots are empty when we write to clear
the queue. This reduces us to 253 SCBs: 1 that just completed
and the known three additional empty slots in the queue that
preceed it. Yahoo was able to force this race on one of their
systems. Interrupts were disabled for such a time that the
entire output queue was filled (254 entries complete without
any processing), and our 32bit write to clear the status clobbered
one entry.

Add a feature tag for devices that are removable.

aic7xxx.reg:
Never use the sequencer interrupt value of 0xF0. We need
to guanrantee that an INTSTAT value of 0xFF can only occur
during card failure or a hot-eject.

Align the busy targets table with the begining of scratch
space. This seems to appease a chip bug in the aic7895.

aic7xxx.seq:
Be sure to disable select-out after a bus free event that occurs
early in a selection. If we don't disable select-out, we will
believe that it is enabled even though a new selection will never
occur.

Move the clearing of SELDI to just before a jump. This appeases
another chip bug of the aic7895.

Make the target mode command loop a bit more efficient.

AHC_SCB_BTT is a "flag" not a "feature". Check the right
field in the softc.

Properly cleanup the last SCB we tested against should we
fail to properly find an SCB for a reselection.

Add some additional sequencer debugging code.

aic7xxx_freebsd.c:
Limit the driver to 253 outstanding commands per adapter.

Guard against overflow in timeout handling.

aic7xxx_inline.h:
AHC_SCB_BTT is a "flag" not a "feature". Check the right
field in the softc.

aic7xxx_pci.c:
Set the removable feature for the apa1480 cardbus and the 29160C
Compact PCI card.

Don't report high byte termination information for narrow cards.

Use a PCI read rather than a questionable delay when fetching/setting
termination settings.
H A Daic7xxx.hdiff 71390 Mon Jan 22 19:03:48 MST 2001 gibbs ahc_eisa.c:
Initialize rid to 0. This doesn't seem to make any difference
(the driver doesn't care what rid it gets and no-one seems to
check rid's value), but follows standard conventions.

Pass in our device_t to ahc_alloc(). We now use device_T
softc storage, so passing NULL results in a panic.

Set the unit number in our softc so that the driver core
can retrieve it.

ahc_pci.c:
Set the unit number in our softc so that the driver core
can retrieve it.

aic7770.c:
Insert our softc into the list of softcs when initialization
is successful.

aic7xxx.c:
Remove a workaround for an aic7895 bug we will never trigger.

Add additional diagnostic info to ahc_dump_card_state().

Always panic the system if a sequencer assertion fails.

AHC_SCB_BTT is a "flag" not a "feature". Check the right
field in the softc.

Replace a hard coded number with a constant.

Guard against looping forever in ahc_pause_and_flushwork().
A hot eject or card failure may make the intstat register
return 0xFF, so limit the number of interrupts we'll process.

Correct the code in ahc_search_qinfifo() that guarantees that
the sequencer will see an abort collision if the qinfifo is
modified when a DMA is in progress. We now do this fixup
after modifying the queue. This guarantees that the HSCB
we place at the head of the queue is not the same as the
old head. Using "next hscb" (guaranteed not to be the
same as the first SCB) before clearing the queue could free
up the original head hscb to be used during a remove operation
placing it again at the head of the qinfifo.

aic7xxx.h:
Reduce the maximum number of outstanding commands to 253 from
254. To handle our output queue correctly on machines that only
support 32bit stores, we must clear the array 4 bytes at a
time. To avoid colliding with a DMA write from the sequencer,
we must be sure that 4 slots are empty when we write to clear
the queue. This reduces us to 253 SCBs: 1 that just completed
and the known three additional empty slots in the queue that
preceed it. Yahoo was able to force this race on one of their
systems. Interrupts were disabled for such a time that the
entire output queue was filled (254 entries complete without
any processing), and our 32bit write to clear the status clobbered
one entry.

Add a feature tag for devices that are removable.

aic7xxx.reg:
Never use the sequencer interrupt value of 0xF0. We need
to guanrantee that an INTSTAT value of 0xFF can only occur
during card failure or a hot-eject.

Align the busy targets table with the begining of scratch
space. This seems to appease a chip bug in the aic7895.

aic7xxx.seq:
Be sure to disable select-out after a bus free event that occurs
early in a selection. If we don't disable select-out, we will
believe that it is enabled even though a new selection will never
occur.

Move the clearing of SELDI to just before a jump. This appeases
another chip bug of the aic7895.

Make the target mode command loop a bit more efficient.

AHC_SCB_BTT is a "flag" not a "feature". Check the right
field in the softc.

Properly cleanup the last SCB we tested against should we
fail to properly find an SCB for a reselection.

Add some additional sequencer debugging code.

aic7xxx_freebsd.c:
Limit the driver to 253 outstanding commands per adapter.

Guard against overflow in timeout handling.

aic7xxx_inline.h:
AHC_SCB_BTT is a "flag" not a "feature". Check the right
field in the softc.

aic7xxx_pci.c:
Set the removable feature for the apa1480 cardbus and the 29160C
Compact PCI card.

Don't report high byte termination information for narrow cards.

Use a PCI read rather than a questionable delay when fetching/setting
termination settings.
H A Daic7xxx.regdiff 71390 Mon Jan 22 19:03:48 MST 2001 gibbs ahc_eisa.c:
Initialize rid to 0. This doesn't seem to make any difference
(the driver doesn't care what rid it gets and no-one seems to
check rid's value), but follows standard conventions.

Pass in our device_t to ahc_alloc(). We now use device_T
softc storage, so passing NULL results in a panic.

Set the unit number in our softc so that the driver core
can retrieve it.

ahc_pci.c:
Set the unit number in our softc so that the driver core
can retrieve it.

aic7770.c:
Insert our softc into the list of softcs when initialization
is successful.

aic7xxx.c:
Remove a workaround for an aic7895 bug we will never trigger.

Add additional diagnostic info to ahc_dump_card_state().

Always panic the system if a sequencer assertion fails.

AHC_SCB_BTT is a "flag" not a "feature". Check the right
field in the softc.

Replace a hard coded number with a constant.

Guard against looping forever in ahc_pause_and_flushwork().
A hot eject or card failure may make the intstat register
return 0xFF, so limit the number of interrupts we'll process.

Correct the code in ahc_search_qinfifo() that guarantees that
the sequencer will see an abort collision if the qinfifo is
modified when a DMA is in progress. We now do this fixup
after modifying the queue. This guarantees that the HSCB
we place at the head of the queue is not the same as the
old head. Using "next hscb" (guaranteed not to be the
same as the first SCB) before clearing the queue could free
up the original head hscb to be used during a remove operation
placing it again at the head of the qinfifo.

aic7xxx.h:
Reduce the maximum number of outstanding commands to 253 from
254. To handle our output queue correctly on machines that only
support 32bit stores, we must clear the array 4 bytes at a
time. To avoid colliding with a DMA write from the sequencer,
we must be sure that 4 slots are empty when we write to clear
the queue. This reduces us to 253 SCBs: 1 that just completed
and the known three additional empty slots in the queue that
preceed it. Yahoo was able to force this race on one of their
systems. Interrupts were disabled for such a time that the
entire output queue was filled (254 entries complete without
any processing), and our 32bit write to clear the status clobbered
one entry.

Add a feature tag for devices that are removable.

aic7xxx.reg:
Never use the sequencer interrupt value of 0xF0. We need
to guanrantee that an INTSTAT value of 0xFF can only occur
during card failure or a hot-eject.

Align the busy targets table with the begining of scratch
space. This seems to appease a chip bug in the aic7895.

aic7xxx.seq:
Be sure to disable select-out after a bus free event that occurs
early in a selection. If we don't disable select-out, we will
believe that it is enabled even though a new selection will never
occur.

Move the clearing of SELDI to just before a jump. This appeases
another chip bug of the aic7895.

Make the target mode command loop a bit more efficient.

AHC_SCB_BTT is a "flag" not a "feature". Check the right
field in the softc.

Properly cleanup the last SCB we tested against should we
fail to properly find an SCB for a reselection.

Add some additional sequencer debugging code.

aic7xxx_freebsd.c:
Limit the driver to 253 outstanding commands per adapter.

Guard against overflow in timeout handling.

aic7xxx_inline.h:
AHC_SCB_BTT is a "flag" not a "feature". Check the right
field in the softc.

aic7xxx_pci.c:
Set the removable feature for the apa1480 cardbus and the 29160C
Compact PCI card.

Don't report high byte termination information for narrow cards.

Use a PCI read rather than a questionable delay when fetching/setting
termination settings.
H A Daic7xxx.seqdiff 71390 Mon Jan 22 19:03:48 MST 2001 gibbs ahc_eisa.c:
Initialize rid to 0. This doesn't seem to make any difference
(the driver doesn't care what rid it gets and no-one seems to
check rid's value), but follows standard conventions.

Pass in our device_t to ahc_alloc(). We now use device_T
softc storage, so passing NULL results in a panic.

Set the unit number in our softc so that the driver core
can retrieve it.

ahc_pci.c:
Set the unit number in our softc so that the driver core
can retrieve it.

aic7770.c:
Insert our softc into the list of softcs when initialization
is successful.

aic7xxx.c:
Remove a workaround for an aic7895 bug we will never trigger.

Add additional diagnostic info to ahc_dump_card_state().

Always panic the system if a sequencer assertion fails.

AHC_SCB_BTT is a "flag" not a "feature". Check the right
field in the softc.

Replace a hard coded number with a constant.

Guard against looping forever in ahc_pause_and_flushwork().
A hot eject or card failure may make the intstat register
return 0xFF, so limit the number of interrupts we'll process.

Correct the code in ahc_search_qinfifo() that guarantees that
the sequencer will see an abort collision if the qinfifo is
modified when a DMA is in progress. We now do this fixup
after modifying the queue. This guarantees that the HSCB
we place at the head of the queue is not the same as the
old head. Using "next hscb" (guaranteed not to be the
same as the first SCB) before clearing the queue could free
up the original head hscb to be used during a remove operation
placing it again at the head of the qinfifo.

aic7xxx.h:
Reduce the maximum number of outstanding commands to 253 from
254. To handle our output queue correctly on machines that only
support 32bit stores, we must clear the array 4 bytes at a
time. To avoid colliding with a DMA write from the sequencer,
we must be sure that 4 slots are empty when we write to clear
the queue. This reduces us to 253 SCBs: 1 that just completed
and the known three additional empty slots in the queue that
preceed it. Yahoo was able to force this race on one of their
systems. Interrupts were disabled for such a time that the
entire output queue was filled (254 entries complete without
any processing), and our 32bit write to clear the status clobbered
one entry.

Add a feature tag for devices that are removable.

aic7xxx.reg:
Never use the sequencer interrupt value of 0xF0. We need
to guanrantee that an INTSTAT value of 0xFF can only occur
during card failure or a hot-eject.

Align the busy targets table with the begining of scratch
space. This seems to appease a chip bug in the aic7895.

aic7xxx.seq:
Be sure to disable select-out after a bus free event that occurs
early in a selection. If we don't disable select-out, we will
believe that it is enabled even though a new selection will never
occur.

Move the clearing of SELDI to just before a jump. This appeases
another chip bug of the aic7895.

Make the target mode command loop a bit more efficient.

AHC_SCB_BTT is a "flag" not a "feature". Check the right
field in the softc.

Properly cleanup the last SCB we tested against should we
fail to properly find an SCB for a reselection.

Add some additional sequencer debugging code.

aic7xxx_freebsd.c:
Limit the driver to 253 outstanding commands per adapter.

Guard against overflow in timeout handling.

aic7xxx_inline.h:
AHC_SCB_BTT is a "flag" not a "feature". Check the right
field in the softc.

aic7xxx_pci.c:
Set the removable feature for the apa1480 cardbus and the 29160C
Compact PCI card.

Don't report high byte termination information for narrow cards.

Use a PCI read rather than a questionable delay when fetching/setting
termination settings.
H A Daic7xxx_93cx6.cdiff 71390 Mon Jan 22 19:03:48 MST 2001 gibbs ahc_eisa.c:
Initialize rid to 0. This doesn't seem to make any difference
(the driver doesn't care what rid it gets and no-one seems to
check rid's value), but follows standard conventions.

Pass in our device_t to ahc_alloc(). We now use device_T
softc storage, so passing NULL results in a panic.

Set the unit number in our softc so that the driver core
can retrieve it.

ahc_pci.c:
Set the unit number in our softc so that the driver core
can retrieve it.

aic7770.c:
Insert our softc into the list of softcs when initialization
is successful.

aic7xxx.c:
Remove a workaround for an aic7895 bug we will never trigger.

Add additional diagnostic info to ahc_dump_card_state().

Always panic the system if a sequencer assertion fails.

AHC_SCB_BTT is a "flag" not a "feature". Check the right
field in the softc.

Replace a hard coded number with a constant.

Guard against looping forever in ahc_pause_and_flushwork().
A hot eject or card failure may make the intstat register
return 0xFF, so limit the number of interrupts we'll process.

Correct the code in ahc_search_qinfifo() that guarantees that
the sequencer will see an abort collision if the qinfifo is
modified when a DMA is in progress. We now do this fixup
after modifying the queue. This guarantees that the HSCB
we place at the head of the queue is not the same as the
old head. Using "next hscb" (guaranteed not to be the
same as the first SCB) before clearing the queue could free
up the original head hscb to be used during a remove operation
placing it again at the head of the qinfifo.

aic7xxx.h:
Reduce the maximum number of outstanding commands to 253 from
254. To handle our output queue correctly on machines that only
support 32bit stores, we must clear the array 4 bytes at a
time. To avoid colliding with a DMA write from the sequencer,
we must be sure that 4 slots are empty when we write to clear
the queue. This reduces us to 253 SCBs: 1 that just completed
and the known three additional empty slots in the queue that
preceed it. Yahoo was able to force this race on one of their
systems. Interrupts were disabled for such a time that the
entire output queue was filled (254 entries complete without
any processing), and our 32bit write to clear the status clobbered
one entry.

Add a feature tag for devices that are removable.

aic7xxx.reg:
Never use the sequencer interrupt value of 0xF0. We need
to guanrantee that an INTSTAT value of 0xFF can only occur
during card failure or a hot-eject.

Align the busy targets table with the begining of scratch
space. This seems to appease a chip bug in the aic7895.

aic7xxx.seq:
Be sure to disable select-out after a bus free event that occurs
early in a selection. If we don't disable select-out, we will
believe that it is enabled even though a new selection will never
occur.

Move the clearing of SELDI to just before a jump. This appeases
another chip bug of the aic7895.

Make the target mode command loop a bit more efficient.

AHC_SCB_BTT is a "flag" not a "feature". Check the right
field in the softc.

Properly cleanup the last SCB we tested against should we
fail to properly find an SCB for a reselection.

Add some additional sequencer debugging code.

aic7xxx_freebsd.c:
Limit the driver to 253 outstanding commands per adapter.

Guard against overflow in timeout handling.

aic7xxx_inline.h:
AHC_SCB_BTT is a "flag" not a "feature". Check the right
field in the softc.

aic7xxx_pci.c:
Set the removable feature for the apa1480 cardbus and the 29160C
Compact PCI card.

Don't report high byte termination information for narrow cards.

Use a PCI read rather than a questionable delay when fetching/setting
termination settings.
H A Daic7xxx_inline.hdiff 71390 Mon Jan 22 19:03:48 MST 2001 gibbs ahc_eisa.c:
Initialize rid to 0. This doesn't seem to make any difference
(the driver doesn't care what rid it gets and no-one seems to
check rid's value), but follows standard conventions.

Pass in our device_t to ahc_alloc(). We now use device_T
softc storage, so passing NULL results in a panic.

Set the unit number in our softc so that the driver core
can retrieve it.

ahc_pci.c:
Set the unit number in our softc so that the driver core
can retrieve it.

aic7770.c:
Insert our softc into the list of softcs when initialization
is successful.

aic7xxx.c:
Remove a workaround for an aic7895 bug we will never trigger.

Add additional diagnostic info to ahc_dump_card_state().

Always panic the system if a sequencer assertion fails.

AHC_SCB_BTT is a "flag" not a "feature". Check the right
field in the softc.

Replace a hard coded number with a constant.

Guard against looping forever in ahc_pause_and_flushwork().
A hot eject or card failure may make the intstat register
return 0xFF, so limit the number of interrupts we'll process.

Correct the code in ahc_search_qinfifo() that guarantees that
the sequencer will see an abort collision if the qinfifo is
modified when a DMA is in progress. We now do this fixup
after modifying the queue. This guarantees that the HSCB
we place at the head of the queue is not the same as the
old head. Using "next hscb" (guaranteed not to be the
same as the first SCB) before clearing the queue could free
up the original head hscb to be used during a remove operation
placing it again at the head of the qinfifo.

aic7xxx.h:
Reduce the maximum number of outstanding commands to 253 from
254. To handle our output queue correctly on machines that only
support 32bit stores, we must clear the array 4 bytes at a
time. To avoid colliding with a DMA write from the sequencer,
we must be sure that 4 slots are empty when we write to clear
the queue. This reduces us to 253 SCBs: 1 that just completed
and the known three additional empty slots in the queue that
preceed it. Yahoo was able to force this race on one of their
systems. Interrupts were disabled for such a time that the
entire output queue was filled (254 entries complete without
any processing), and our 32bit write to clear the status clobbered
one entry.

Add a feature tag for devices that are removable.

aic7xxx.reg:
Never use the sequencer interrupt value of 0xF0. We need
to guanrantee that an INTSTAT value of 0xFF can only occur
during card failure or a hot-eject.

Align the busy targets table with the begining of scratch
space. This seems to appease a chip bug in the aic7895.

aic7xxx.seq:
Be sure to disable select-out after a bus free event that occurs
early in a selection. If we don't disable select-out, we will
believe that it is enabled even though a new selection will never
occur.

Move the clearing of SELDI to just before a jump. This appeases
another chip bug of the aic7895.

Make the target mode command loop a bit more efficient.

AHC_SCB_BTT is a "flag" not a "feature". Check the right
field in the softc.

Properly cleanup the last SCB we tested against should we
fail to properly find an SCB for a reselection.

Add some additional sequencer debugging code.

aic7xxx_freebsd.c:
Limit the driver to 253 outstanding commands per adapter.

Guard against overflow in timeout handling.

aic7xxx_inline.h:
AHC_SCB_BTT is a "flag" not a "feature". Check the right
field in the softc.

aic7xxx_pci.c:
Set the removable feature for the apa1480 cardbus and the 29160C
Compact PCI card.

Don't report high byte termination information for narrow cards.

Use a PCI read rather than a questionable delay when fetching/setting
termination settings.
H A Daic7xxx_osm.cdiff 71390 Mon Jan 22 19:03:48 MST 2001 gibbs ahc_eisa.c:
Initialize rid to 0. This doesn't seem to make any difference
(the driver doesn't care what rid it gets and no-one seems to
check rid's value), but follows standard conventions.

Pass in our device_t to ahc_alloc(). We now use device_T
softc storage, so passing NULL results in a panic.

Set the unit number in our softc so that the driver core
can retrieve it.

ahc_pci.c:
Set the unit number in our softc so that the driver core
can retrieve it.

aic7770.c:
Insert our softc into the list of softcs when initialization
is successful.

aic7xxx.c:
Remove a workaround for an aic7895 bug we will never trigger.

Add additional diagnostic info to ahc_dump_card_state().

Always panic the system if a sequencer assertion fails.

AHC_SCB_BTT is a "flag" not a "feature". Check the right
field in the softc.

Replace a hard coded number with a constant.

Guard against looping forever in ahc_pause_and_flushwork().
A hot eject or card failure may make the intstat register
return 0xFF, so limit the number of interrupts we'll process.

Correct the code in ahc_search_qinfifo() that guarantees that
the sequencer will see an abort collision if the qinfifo is
modified when a DMA is in progress. We now do this fixup
after modifying the queue. This guarantees that the HSCB
we place at the head of the queue is not the same as the
old head. Using "next hscb" (guaranteed not to be the
same as the first SCB) before clearing the queue could free
up the original head hscb to be used during a remove operation
placing it again at the head of the qinfifo.

aic7xxx.h:
Reduce the maximum number of outstanding commands to 253 from
254. To handle our output queue correctly on machines that only
support 32bit stores, we must clear the array 4 bytes at a
time. To avoid colliding with a DMA write from the sequencer,
we must be sure that 4 slots are empty when we write to clear
the queue. This reduces us to 253 SCBs: 1 that just completed
and the known three additional empty slots in the queue that
preceed it. Yahoo was able to force this race on one of their
systems. Interrupts were disabled for such a time that the
entire output queue was filled (254 entries complete without
any processing), and our 32bit write to clear the status clobbered
one entry.

Add a feature tag for devices that are removable.

aic7xxx.reg:
Never use the sequencer interrupt value of 0xF0. We need
to guanrantee that an INTSTAT value of 0xFF can only occur
during card failure or a hot-eject.

Align the busy targets table with the begining of scratch
space. This seems to appease a chip bug in the aic7895.

aic7xxx.seq:
Be sure to disable select-out after a bus free event that occurs
early in a selection. If we don't disable select-out, we will
believe that it is enabled even though a new selection will never
occur.

Move the clearing of SELDI to just before a jump. This appeases
another chip bug of the aic7895.

Make the target mode command loop a bit more efficient.

AHC_SCB_BTT is a "flag" not a "feature". Check the right
field in the softc.

Properly cleanup the last SCB we tested against should we
fail to properly find an SCB for a reselection.

Add some additional sequencer debugging code.

aic7xxx_freebsd.c:
Limit the driver to 253 outstanding commands per adapter.

Guard against overflow in timeout handling.

aic7xxx_inline.h:
AHC_SCB_BTT is a "flag" not a "feature". Check the right
field in the softc.

aic7xxx_pci.c:
Set the removable feature for the apa1480 cardbus and the 29160C
Compact PCI card.

Don't report high byte termination information for narrow cards.

Use a PCI read rather than a questionable delay when fetching/setting
termination settings.
H A Daic7xxx_pci.cdiff 71390 Mon Jan 22 19:03:48 MST 2001 gibbs ahc_eisa.c:
Initialize rid to 0. This doesn't seem to make any difference
(the driver doesn't care what rid it gets and no-one seems to
check rid's value), but follows standard conventions.

Pass in our device_t to ahc_alloc(). We now use device_T
softc storage, so passing NULL results in a panic.

Set the unit number in our softc so that the driver core
can retrieve it.

ahc_pci.c:
Set the unit number in our softc so that the driver core
can retrieve it.

aic7770.c:
Insert our softc into the list of softcs when initialization
is successful.

aic7xxx.c:
Remove a workaround for an aic7895 bug we will never trigger.

Add additional diagnostic info to ahc_dump_card_state().

Always panic the system if a sequencer assertion fails.

AHC_SCB_BTT is a "flag" not a "feature". Check the right
field in the softc.

Replace a hard coded number with a constant.

Guard against looping forever in ahc_pause_and_flushwork().
A hot eject or card failure may make the intstat register
return 0xFF, so limit the number of interrupts we'll process.

Correct the code in ahc_search_qinfifo() that guarantees that
the sequencer will see an abort collision if the qinfifo is
modified when a DMA is in progress. We now do this fixup
after modifying the queue. This guarantees that the HSCB
we place at the head of the queue is not the same as the
old head. Using "next hscb" (guaranteed not to be the
same as the first SCB) before clearing the queue could free
up the original head hscb to be used during a remove operation
placing it again at the head of the qinfifo.

aic7xxx.h:
Reduce the maximum number of outstanding commands to 253 from
254. To handle our output queue correctly on machines that only
support 32bit stores, we must clear the array 4 bytes at a
time. To avoid colliding with a DMA write from the sequencer,
we must be sure that 4 slots are empty when we write to clear
the queue. This reduces us to 253 SCBs: 1 that just completed
and the known three additional empty slots in the queue that
preceed it. Yahoo was able to force this race on one of their
systems. Interrupts were disabled for such a time that the
entire output queue was filled (254 entries complete without
any processing), and our 32bit write to clear the status clobbered
one entry.

Add a feature tag for devices that are removable.

aic7xxx.reg:
Never use the sequencer interrupt value of 0xF0. We need
to guanrantee that an INTSTAT value of 0xFF can only occur
during card failure or a hot-eject.

Align the busy targets table with the begining of scratch
space. This seems to appease a chip bug in the aic7895.

aic7xxx.seq:
Be sure to disable select-out after a bus free event that occurs
early in a selection. If we don't disable select-out, we will
believe that it is enabled even though a new selection will never
occur.

Move the clearing of SELDI to just before a jump. This appeases
another chip bug of the aic7895.

Make the target mode command loop a bit more efficient.

AHC_SCB_BTT is a "flag" not a "feature". Check the right
field in the softc.

Properly cleanup the last SCB we tested against should we
fail to properly find an SCB for a reselection.

Add some additional sequencer debugging code.

aic7xxx_freebsd.c:
Limit the driver to 253 outstanding commands per adapter.

Guard against overflow in timeout handling.

aic7xxx_inline.h:
AHC_SCB_BTT is a "flag" not a "feature". Check the right
field in the softc.

aic7xxx_pci.c:
Set the removable feature for the apa1480 cardbus and the 29160C
Compact PCI card.

Don't report high byte termination information for narrow cards.

Use a PCI read rather than a questionable delay when fetching/setting
termination settings.

Completed in 387 milliseconds