From: Luben Tuikov <luben_tuikov@adaptec.com>
To: SCSI Mailing List <linux-scsi@vger.kernel.org>
Subject: [patch 16/28] Sync up drivers/scsi/aic7xxx
Date: Tue, 28 Sep 2004 09:06:24 -0400 [thread overview]
Message-ID: <415961D0.4020409@adaptec.com> (raw)
Sync up drivers/scsi/aic7xxx/. (2603-2643)
Signed-off-by: Luben Tuikov <luben_tuikov@adaptec.com>
==== //depot/aic7xxx/aic7xxx/aic79xx.reg#70 - /home/luben/projects/linux/2.6/linux-2.5/drivers/scsi/aic7xxx/aic79xx.reg ====
--- /tmp/tmp.26963.0 2004-09-27 13:31:39.261144880 -0400
+++ /home/luben/projects/linux/2.6/linux-2.5/drivers/scsi/aic7xxx/aic79xx.reg 2004-01-23 14:37:51.000000000 -0500
@@ -39,7 +39,7 @@
*
* $FreeBSD$
*/
-VERSION = "$Id: //depot/aic7xxx/aic7xxx/aic79xx.reg#70 $"
+VERSION = "$Id: //depot/aic7xxx/aic7xxx/aic79xx.reg#72 $"
/*
* This file is processed by the aic7xxx_asm utility for use in assembling
@@ -65,13 +65,6 @@
mvi MODE_PTR, MK_MODE(src, dst); \
}
-#define TOGGLE_DFF_MODE \
- if ((ahd->bugs & AHD_SET_MODE_BUG) != 0) { \
- call toggle_dff_mode_work_around; \
- } else { \
- xor MODE_PTR, MK_MODE(M_DFF1, M_DFF1); \
- }
-
#define RESTORE_MODE(mode) \
if ((ahd->bugs & AHD_SET_MODE_BUG) != 0) { \
mov mode call set_mode_work_around; \
@@ -3542,6 +3535,15 @@
COMPLETE_DMA_SCB_HEAD {
size 2
}
+ /*
+ * head of list of SCBs that have
+ * been uploaded to the host, but cannot
+ * be completed until the QFREEZE is in
+ * full effect (i.e. no selections pending).
+ */
+ COMPLETE_ON_QFREEZE_HEAD {
+ size 2
+ }
/* Counting semaphore to prevent new select-outs */
QFREEZE_COUNT {
size 2
@@ -3625,6 +3627,17 @@
size 1
}
/*
+ * Kernel and sequencer offsets into the queue of
+ * incoming target mode command descriptors. The
+ * queue is full when the KERNEL_TQINPOS == TQINPOS.
+ */
+ KERNEL_TQINPOS {
+ size 1
+ }
+ TQINPOS {
+ size 1
+ }
+ /*
* Base address of our shared data with the kernel driver in host
* memory. This includes the qoutfifo and target mode
* incoming command queue.
@@ -3639,17 +3652,6 @@
QOUTFIFO_NEXT_ADDR {
size 4
}
- /*
- * Kernel and sequencer offsets into the queue of
- * incoming target mode command descriptors. The
- * queue is full when the KERNEL_TQINPOS == TQINPOS.
- */
- KERNEL_TQINPOS {
- size 1
- }
- TQINPOS {
- size 1
- }
ARG_1 {
size 1
mask SEND_MSG 0x80
==== //depot/aic7xxx/aic7xxx/aic79xx.seq#107 - /home/luben/projects/linux/2.6/linux-2.5/drivers/scsi/aic7xxx/aic79xx.seq ====
--- /tmp/tmp.26963.1 2004-09-27 13:31:39.613091376 -0400
+++ /home/luben/projects/linux/2.6/linux-2.5/drivers/scsi/aic7xxx/aic79xx.seq 2004-01-23 14:32:29.000000000 -0500
@@ -40,7 +40,7 @@
* $FreeBSD$
*/
-VERSION = "$Id: //depot/aic7xxx/aic7xxx/aic79xx.seq#107 $"
+VERSION = "$Id: //depot/aic7xxx/aic7xxx/aic79xx.seq#110 $"
PATCH_ARG_LIST = "struct ahd_softc *ahd"
PREFIX = "ahd_"
@@ -68,13 +68,36 @@
}
SET_MODE(M_SCSI, M_SCSI)
test SCSISEQ0, ENSELO|ENARBO jnz idle_loop_checkbus;
- test SEQ_FLAGS2, SELECTOUT_QFROZEN jnz idle_loop_checkbus;
+ test SEQ_FLAGS2, SELECTOUT_QFROZEN jz check_waiting_list;
+ test SSTAT0, SELDO|SELINGO jnz idle_loop_checkbus;
+BEGIN_CRITICAL;
+ /*
+ * If we have completions stalled waiting for the qfreeze
+ * to take effect, move them over to the complete_scb list
+ * now that no selections are pending.
+ */
+ cmp COMPLETE_ON_QFREEZE_HEAD[1],SCB_LIST_NULL je idle_loop_checkbus;
+ /*
+ * Find the end of the qfreeze list. The first element has
+ * to be treated specially.
+ */
+ bmov SCBPTR, COMPLETE_ON_QFREEZE_HEAD, 2;
+ cmp SCB_NEXT_COMPLETE[1], SCB_LIST_NULL je join_lists;
+ /*
+ * Now the normal loop.
+ */
+ bmov SCBPTR, SCB_NEXT_COMPLETE, 2;
+ cmp SCB_NEXT_COMPLETE[1], SCB_LIST_NULL jne . - 1;
+join_lists:
+ bmov SCB_NEXT_COMPLETE, COMPLETE_SCB_HEAD, 2;
+ bmov COMPLETE_SCB_HEAD, COMPLETE_ON_QFREEZE_HEAD, 2;
+ jmp idle_loop_checkbus;
+check_waiting_list:
cmp WAITING_TID_HEAD[1], SCB_LIST_NULL je idle_loop_checkbus;
/*
* ENSELO is cleared by a SELDO, so we must test for SELDO
* one last time.
*/
-BEGIN_CRITICAL;
test SSTAT0, SELDO jnz select_out;
END_CRITICAL;
call start_selection;
@@ -184,6 +207,7 @@
/* FALLTHROUGH */
scbdma_tohost_done:
test CCSCBCTL, CCARREN jz fill_qoutfifo_dmadone;
+ and CCSCBCTL, ~(CCARREN|CCSCBEN);
/*
* An SCB has been succesfully uploaded to the host.
* If the SCB was uploaded for some reason other than
@@ -193,13 +217,9 @@
* then queue the completion.
*/
test SCB_SCSI_STATUS, 0xff jz scbdma_queue_completion;
- SET_MODE(M_SCSI, M_SCSI)
- test SCSISEQ0, ENSELO jnz return;
- test SSTAT0, (SELDO|SELINGO) jnz return;
- SET_MODE(M_CCHAN, M_CCHAN)
+ bmov SCB_NEXT_COMPLETE, COMPLETE_ON_QFREEZE_HEAD, 2;
+ bmov COMPLETE_ON_QFREEZE_HEAD, SCB_NEXT_COMPLETE, 2 ret;
scbdma_queue_completion:
- and CCSCBCTL, ~(CCARREN|CCSCBEN);
- bmov COMPLETE_DMA_SCB_HEAD, SCB_NEXT_COMPLETE, 2;
bmov SCB_NEXT_COMPLETE, COMPLETE_SCB_HEAD, 2;
bmov COMPLETE_SCB_HEAD, SCBPTR, 2 ret;
fill_qoutfifo_dmadone:
@@ -355,9 +375,9 @@
mvi CCARREN|CCSCBEN|CCSCBDIR|CCSCBRESET jmp dma_scb;
dma_complete_scb:
bmov SCBPTR, COMPLETE_DMA_SCB_HEAD, 2;
+ bmov COMPLETE_DMA_SCB_HEAD, SCB_NEXT_COMPLETE, 2;
bmov SCBHADDR, SCB_BUSADDR, 4;
mvi CCARREN|CCSCBEN|CCSCBRESET jmp dma_scb;
-END_CRITICAL;
/*
* Either post or fetch an SCB from host memory. The caller
@@ -373,6 +393,7 @@
dma_scb:
mvi SCBHCNT, SCB_TRANSFER_SIZE;
mov CCSCBCTL, SINDEX ret;
+END_CRITICAL;
BEGIN_CRITICAL;
setjmp:
@@ -395,11 +416,6 @@
mvi SEQINTCTL, INTVEC1DSL;
mov MODE_PTR, SINDEX;
clr SEQINTCTL ret;
-
-toggle_dff_mode_work_around:
- mvi SEQINTCTL, INTVEC1DSL;
- xor MODE_PTR, MK_MODE(M_DFF1, M_DFF1);
- clr SEQINTCTL ret;
}
@@ -1033,15 +1049,9 @@
/*
* We received a "command complete" message. Put the SCB on the complete
* queue and trigger a completion interrupt via the idle loop. Before doing
- * so, check to see if there
- * is a residual or the status byte is something other than STATUS_GOOD (0).
- * In either of these conditions, we upload the SCB back to the host so it can
- * process this information. In the case of a non zero status byte, we
- * additionally interrupt the kernel driver synchronously, allowing it to
- * decide if sense should be retrieved. If the kernel driver wishes to request
- * sense, it will fill the kernel SCB with a request sense command, requeue
- * it to the QINFIFO and tell us not to post to the QOUTFIFO by setting
- * RETURN_1 to SEND_SENSE.
+ * so, check to see if there is a residual or the status byte is something
+ * other than STATUS_GOOD (0). In either of these conditions, we upload the
+ * SCB back to the host so it can process this information.
*/
mesgin_complete:
@@ -1086,6 +1096,7 @@
call queue_scb_completion;
jmp await_busfree;
+BEGIN_CRITICAL;
freeze_queue:
/* Cancel any pending select-out. */
test SSTAT0, SELDO|SELINGO jnz . + 2;
@@ -1096,6 +1107,7 @@
adc QFREEZE_COUNT[1], A;
or SEQ_FLAGS2, SELECTOUT_QFROZEN;
mov A, ACCUM_SAVE ret;
+END_CRITICAL;
/*
* Complete the current FIFO's SCB if data for this same
@@ -1340,6 +1352,47 @@
test CCSGCTL, CCSGENACK jnz return;
/*
+ * Should the other FIFO get the S/G cache first? If
+ * both FIFOs have been allocated since we last checked
+ * any FIFO, it is important that we service a FIFO
+ * that is not actively on the bus first. This guarantees
+ * that a FIFO will be freed to handle snapshot requests for
+ * any FIFO that is still on the bus. Chips with RTI do not
+ * perform snapshots, so don't bother with this test there.
+ */
+ if ((ahd->features & AHD_RTI) == 0) {
+ /*
+ * If we're not still receiving SCSI data,
+ * it is safe to allocate the S/G cache to
+ * this FIFO.
+ */
+ test DFCNTRL, SCSIEN jz idle_sgfetch_start;
+
+ /*
+ * Switch to the other FIFO. Non-RTI chips
+ * also have the "set mode" bug, so we must
+ * disable interrupts during the switch.
+ */
+ mvi SEQINTCTL, INTVEC1DSL;
+ xor MODE_PTR, MK_MODE(M_DFF1, M_DFF1);
+
+ /*
+ * If the other FIFO needs loading, then it
+ * must not have claimed the S/G cache yet
+ * (SG_CACHE_AVAIL would have been cleared in
+ * the orginal FIFO mode and we test this above).
+ * Return to the idle loop so we can process the
+ * FIFO not currently on the bus first.
+ */
+ test SG_STATE, LOADING_NEEDED jz idle_sgfetch_okay;
+ clr SEQINTCTL ret;
+idle_sgfetch_okay:
+ xor MODE_PTR, MK_MODE(M_DFF1, M_DFF1);
+ clr SEQINTCTL;
+ }
+
+idle_sgfetch_start:
+ /*
* We fetch a "cacheline aligned" and sized amount of data
* so we don't end up referencing a non-existant page.
* Cacheline aligned is in quotes because the kernel will
@@ -1350,7 +1403,7 @@
mvi SGHCNT, SG_PREFETCH_CNT;
if ((ahd->bugs & AHD_REG_SLOW_SETTLE_BUG) != 0) {
/*
- * Need two instruction between "touches" of SGHADDR.
+ * Need two instructions between "touches" of SGHADDR.
*/
nop;
}
==== //depot/aic7xxx/aic7xxx/aic79xx.c#225 - /home/luben/projects/linux/2.6/linux-2.5/drivers/scsi/aic7xxx/aic79xx_core.c ====
--- /tmp/tmp.26963.2 2004-09-27 13:31:40.829906392 -0400
+++ /home/luben/projects/linux/2.6/linux-2.5/drivers/scsi/aic7xxx/aic79xx_core.c 2004-01-20 05:16:39.000000000 -0500
@@ -37,7 +37,7 @@
* IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
* POSSIBILITY OF SUCH DAMAGES.
*
- * $Id: //depot/aic7xxx/aic7xxx/aic79xx.c#225 $
+ * $Id: //depot/aic7xxx/aic7xxx/aic79xx.c#226 $
*/
#ifdef __linux__
@@ -8011,6 +8011,7 @@
} else {
paused = 0;
ahd_pause(ahd);
+ ahd_clear_critical_section(ahd);
}
/* Freeze the queue until the client sees the error. */
==== //depot/aic7xxx/linux/drivers/scsi/aic7xxx/aic79xx_osm.c#195 - /home/luben/projects/linux/2.6/linux-2.5/drivers/scsi/aic7xxx/aic79xx_osm.c ====
--- /tmp/tmp.26963.3 2004-09-27 13:31:41.337829176 -0400
+++ /home/luben/projects/linux/2.6/linux-2.5/drivers/scsi/aic7xxx/aic79xx_osm.c 2004-01-23 13:15:14.000000000 -0500
@@ -1,7 +1,7 @@
/*
* Adaptec AIC79xx device driver for Linux.
*
- * $Id: //depot/aic7xxx/linux/drivers/scsi/aic7xxx/aic79xx_osm.c#195 $
+ * $Id: //depot/aic7xxx/linux/drivers/scsi/aic7xxx/aic79xx_osm.c#198 $
*
* --------------------------------------------------------------------------
* Copyright (c) 1994-2000 Justin T. Gibbs.
@@ -52,9 +52,7 @@
*/
#include "aiclib.c"
-#if LINUX_VERSION_CODE >= KERNEL_VERSION(2,3,0)
#include <linux/init.h> /* __setup */
-#endif
#if LINUX_VERSION_CODE < KERNEL_VERSION(2,5,0)
#include "sd.h" /* For geometry detection */
@@ -77,14 +75,6 @@
*/
spinlock_t ahd_list_spinlock;
-#if LINUX_VERSION_CODE < KERNEL_VERSION(2,3,0)
-struct proc_dir_entry proc_scsi_aic79xx = {
- PROC_SCSI_AIC79XX, 7, "aic79xx",
- S_IFDIR | S_IRUGO | S_IXUGO, 2,
- 0, 0, 0, NULL, NULL, NULL, NULL, NULL, NULL, NULL
-};
-#endif
-
#if LINUX_VERSION_CODE < KERNEL_VERSION(2,5,0)
/* For dynamic sglist size calculation. */
u_int ahd_linux_nseg;
@@ -958,11 +948,7 @@
"aic79xx: insmod or else it might trash certain memory areas.\n");
#endif
-#if LINUX_VERSION_CODE > KERNEL_VERSION(2,3,0)
template->proc_name = "aic79xx";
-#else
- template->proc_dir = &proc_scsi_aic79xx;
-#endif
/*
* Initialize our softc list lock prior to
@@ -1972,9 +1958,7 @@
return 1;
}
-#if LINUX_VERSION_CODE > KERNEL_VERSION(2,3,0)
__setup("aic79xx=", aic79xx_setup);
-#endif
uint32_t aic79xx_verbose;
@@ -2001,16 +1985,8 @@
*((struct ahd_softc **)host->hostdata) = ahd;
ahd_lock(ahd, &s);
-#if LINUX_VERSION_CODE >= KERNEL_VERSION(2,5,0)
- scsi_assign_lock(host, &ahd->platform_data->spin_lock);
-#elif AHD_SCSI_HAS_HOST_LOCK != 0
-#if LINUX_VERSION_CODE >= KERNEL_VERSION(2,4,21)
- host->host_lock = &ahd->platform_data->spin_lock;
-#else
- host->lock = &ahd->platform_data->spin_lock;
-#endif
-#endif
ahd->platform_data->host = host;
+ aic_assign_host_lock(ahd);
host->can_queue = AHD_MAX_QUEUE;
host->cmd_per_lun = 2;
host->sg_tablesize = AHD_NSEG;
@@ -2182,19 +2158,11 @@
ahd->platform_data->completeq_timer.data = (u_long)ahd;
ahd->platform_data->completeq_timer.function =
(aic_linux_callback_t *)ahd_linux_thread_run_complete_queue;
-#if LINUX_VERSION_CODE >= KERNEL_VERSION(2,3,0)
init_MUTEX_LOCKED(&ahd->platform_data->eh_sem);
init_MUTEX_LOCKED(&ahd->platform_data->dv_sem);
init_MUTEX_LOCKED(&ahd->platform_data->dv_cmd_sem);
init_MUTEX_LOCKED(&ahd->platform_data->recovery_sem);
init_MUTEX_LOCKED(&ahd->platform_data->recovery_ending_sem);
-#else
- ahd->platform_data->eh_sem = MUTEX_LOCKED;
- ahd->platform_data->dv_sem = MUTEX_LOCKED;
- ahd->platform_data->dv_cmd_sem = MUTEX_LOCKED;
- ahd->platform_data->recovery_sem = MUTEX_LOCKED;
- ahd->platform_data->recovery_ending_sem = MUTEX_LOCKED;
-#endif
aic_setup_tasklets(ahd);
ahd->seltime = (aic79xx_seltime & 0x3) << 4;
return (0);
@@ -2258,10 +2226,8 @@
base_addr = (u_long)ahd->bshs[0].maddr;
base_addr &= PAGE_MASK;
iounmap((void *)base_addr);
-#if LINUX_VERSION_CODE >= KERNEL_VERSION(2,4,0)
release_mem_region(ahd->platform_data->mem_busaddr,
0x1000);
-#endif
}
#if LINUX_VERSION_CODE >= KERNEL_VERSION(2,4,0) && \
LINUX_VERSION_CODE < KERNEL_VERSION(2,5,0)
@@ -2796,13 +2762,13 @@
* ahd host lock held. For other kernels, the
* io_request_lock must be held.
*/
-#if AHD_SCSI_HAS_HOST_LOCK != 0
+#if AIC_SCSI_HAS_HOST_LOCK != 0
ahd_lock(ahd, &s);
#else
spin_lock_irqsave(&io_request_lock, s);
#endif
ahd_linux_queue(cmd, ahd_linux_dv_complete);
-#if AHD_SCSI_HAS_HOST_LOCK != 0
+#if AIC_SCSI_HAS_HOST_LOCK != 0
ahd_unlock(ahd, &s);
#else
spin_unlock_irqrestore(&io_request_lock, s);
@@ -4039,6 +4005,30 @@
if ((tstate->auto_negotiate & mask) != 0) {
scb->flags |= SCB_AUTO_NEGOTIATE;
scb->hscb->control |= MK_MESSAGE;
+ } else if (cmd->cmnd[0] == INQUIRY
+ && (tinfo->curr.offset != 0
+ || tinfo->curr.width != MSG_EXT_WDTR_BUS_8_BIT
+ || tinfo->curr.ppr_options != 0)
+ && (tinfo->curr.ppr_options & MSG_EXT_PPR_IU_REQ)==0) {
+ /*
+ * The SCSI spec requires inquiry
+ * commands to complete without
+ * reporting unit attention conditions.
+ * Because of this, an inquiry command
+ * that occurs just after a device is
+ * reset will result in a data phase
+ * with mismatched negotiated rates.
+ * The core already forces a renegotiation
+ * for reset events that are visible to
+ * our controller or that we initiate,
+ * but a third party device reset or a
+ * hot-plug insertion can still cause this
+ * issue. Therefore, we force a re-negotiation
+ * for every inquiry command unless we
+ * are async.
+ */
+ scb->flags |= SCB_NEGOTIATE;
+ scb->hscb->control |= MK_MESSAGE;
}
if ((dev->flags & (AIC_DEV_Q_TAGGED|AIC_DEV_Q_BASIC)) != 0) {
@@ -4324,7 +4314,7 @@
WARN_ON(lun != CAM_LUN_WILDCARD);
scsi_report_device_reset(ahd->platform_data->host,
channel - 'A', target);
-#elif LINUX_VERSION_CODE >= KERNEL_VERSION(2,3,0)
+#elif LINUX_VERSION_CODE >= KERNEL_VERSION(2,4,0)
Scsi_Device *scsi_dev;
/*
@@ -4345,12 +4335,10 @@
break;
}
case AC_BUS_RESET:
-#if LINUX_VERSION_CODE >= KERNEL_VERSION(2,3,0)
if (ahd->platform_data->host != NULL) {
scsi_report_bus_reset(ahd->platform_data->host,
channel - 'A');
}
-#endif
/*
* Add a minimal bus settle delay for devices that are slow to
* respond after bus resets.
==== //depot/aic7xxx/linux/drivers/scsi/aic7xxx/aic79xx_reg.h#77 - /home/luben/projects/linux/2.6/linux-2.5/drivers/scsi/aic7xxx/aic79xx_reg.h_shipped ====
--- /tmp/tmp.26963.4 2004-09-27 13:31:41.833753784 -0400
+++ /home/luben/projects/linux/2.6/linux-2.5/drivers/scsi/aic7xxx/aic79xx_reg.h_shipped 2004-01-20 16:07:15.000000000 -0500
@@ -2,8 +2,8 @@
* DO NOT EDIT - This file is automatically generated
* from the following source files:
*
- * $Id: //depot/aic7xxx/aic7xxx/aic79xx.seq#107 $
- * $Id: //depot/aic7xxx/aic7xxx/aic79xx.reg#70 $
+ * $Id: //depot/aic7xxx/aic7xxx/aic79xx.seq#109 $
+ * $Id: //depot/aic7xxx/aic7xxx/aic79xx.reg#71 $
*/
typedef int (ahd_reg_print_t)(u_int, u_int *, u_int);
typedef struct ahd_reg_parse_entry {
@@ -3772,5 +3772,5 @@
/* Exported Labels */
-#define LABEL_seq_isr 0x269
-#define LABEL_timer_isr 0x265
+#define LABEL_seq_isr 0x26d
+#define LABEL_timer_isr 0x269
==== //depot/aic7xxx/linux/drivers/scsi/aic7xxx/aic79xx_reg_print.c#58 - /home/luben/projects/linux/2.6/linux-2.5/drivers/scsi/aic7xxx/aic79xx_reg_print.c_shipped ====
--- /tmp/tmp.26963.5 2004-09-27 13:31:42.203697544 -0400
+++ /home/luben/projects/linux/2.6/linux-2.5/drivers/scsi/aic7xxx/aic79xx_reg_print.c_shipped 2004-01-20 16:07:15.000000000 -0500
@@ -2,8 +2,8 @@
* DO NOT EDIT - This file is automatically generated
* from the following source files:
*
- * $Id: //depot/aic7xxx/aic7xxx/aic79xx.seq#107 $
- * $Id: //depot/aic7xxx/aic7xxx/aic79xx.reg#70 $
+ * $Id: //depot/aic7xxx/aic7xxx/aic79xx.seq#109 $
+ * $Id: //depot/aic7xxx/aic7xxx/aic79xx.reg#71 $
*/
#include "aic79xx_osm.h"
==== //depot/aic7xxx/linux/drivers/scsi/aic7xxx/aic79xx_seq.h#78 - /home/luben/projects/linux/2.6/linux-2.5/drivers/scsi/aic7xxx/aic79xx_seq.h_shipped ====
--- /tmp/tmp.26963.6 2004-09-27 13:31:42.295683560 -0400
+++ /home/luben/projects/linux/2.6/linux-2.5/drivers/scsi/aic7xxx/aic79xx_seq.h_shipped 2004-01-20 16:07:15.000000000 -0500
@@ -2,30 +2,30 @@
* DO NOT EDIT - This file is automatically generated
* from the following source files:
*
- * $Id: //depot/aic7xxx/aic7xxx/aic79xx.seq#107 $
- * $Id: //depot/aic7xxx/aic7xxx/aic79xx.reg#70 $
+ * $Id: //depot/aic7xxx/aic7xxx/aic79xx.seq#109 $
+ * $Id: //depot/aic7xxx/aic7xxx/aic79xx.reg#71 $
*/
static uint8_t seqprog[] = {
0xff, 0x02, 0x06, 0x78,
- 0x00, 0xea, 0x46, 0x59,
+ 0x00, 0xea, 0x40, 0x59,
0x01, 0xea, 0x04, 0x30,
0xff, 0x04, 0x0c, 0x78,
- 0x19, 0xea, 0x46, 0x59,
+ 0x19, 0xea, 0x40, 0x59,
0x19, 0xea, 0x04, 0x00,
0x33, 0xea, 0x3a, 0x59,
0x33, 0xea, 0x00, 0x00,
0x60, 0x3a, 0x1a, 0x68,
0x04, 0x47, 0x1b, 0x68,
0xff, 0x21, 0x1b, 0x70,
- 0x40, 0x4b, 0x8c, 0x69,
- 0x00, 0xe2, 0x4a, 0x59,
- 0x40, 0x4b, 0x8c, 0x69,
- 0x20, 0x4b, 0x78, 0x69,
+ 0x40, 0x4b, 0x86, 0x69,
+ 0x00, 0xe2, 0x44, 0x59,
+ 0x40, 0x4b, 0x86, 0x69,
+ 0x20, 0x4b, 0x72, 0x69,
0xfc, 0x42, 0x24, 0x78,
0x10, 0x40, 0x24, 0x78,
- 0x00, 0xe2, 0xc4, 0x5d,
+ 0x00, 0xe2, 0xcc, 0x5d,
0x20, 0x4d, 0x28, 0x78,
- 0x00, 0xe2, 0xc4, 0x5d,
+ 0x00, 0xe2, 0xcc, 0x5d,
0x30, 0x3f, 0xc0, 0x09,
0x30, 0xe0, 0x30, 0x60,
0x7f, 0x4a, 0x94, 0x08,
@@ -43,11 +43,11 @@
0xff, 0x97, 0x4f, 0x78,
0x50, 0x4b, 0x4a, 0x68,
0xbf, 0x3a, 0x74, 0x08,
- 0x14, 0xea, 0x46, 0x59,
+ 0x14, 0xea, 0x40, 0x59,
0x14, 0xea, 0x04, 0x00,
0x08, 0x92, 0x25, 0x03,
0xff, 0x90, 0x3f, 0x68,
- 0x00, 0xe2, 0x58, 0x5b,
+ 0x00, 0xe2, 0x52, 0x5b,
0x00, 0xe2, 0x3e, 0x40,
0x00, 0xea, 0x3a, 0x59,
0x01, 0xea, 0x00, 0x30,
@@ -166,16 +166,13 @@
0x80, 0xea, 0xb2, 0x01,
0x01, 0xe2, 0x00, 0x30,
0xff, 0xea, 0xb2, 0x0d,
- 0x80, 0xea, 0xb2, 0x01,
- 0x11, 0x00, 0x00, 0x10,
- 0xff, 0xea, 0xb2, 0x0d,
0x01, 0xe2, 0x04, 0x30,
0x01, 0xea, 0x04, 0x34,
0x02, 0x20, 0xbd, 0x30,
0x02, 0x20, 0xb9, 0x30,
0x02, 0x20, 0x51, 0x31,
0x4c, 0x93, 0xd7, 0x28,
- 0x10, 0x92, 0x59, 0x79,
+ 0x10, 0x92, 0x53, 0x79,
0x01, 0x6b, 0xc0, 0x30,
0x02, 0x64, 0xc8, 0x00,
0x40, 0x3a, 0x74, 0x04,
@@ -183,9 +180,9 @@
0x33, 0xea, 0x3a, 0x59,
0x33, 0xea, 0x00, 0x00,
0x30, 0x3f, 0xc0, 0x09,
- 0x30, 0xe0, 0x5a, 0x61,
- 0x20, 0x3f, 0x70, 0x69,
- 0x10, 0x3f, 0x5a, 0x79,
+ 0x30, 0xe0, 0x54, 0x61,
+ 0x20, 0x3f, 0x6a, 0x69,
+ 0x10, 0x3f, 0x54, 0x79,
0x02, 0xea, 0x7e, 0x00,
0x00, 0xea, 0x3a, 0x59,
0x01, 0xea, 0x00, 0x30,
@@ -195,7 +192,7 @@
0x11, 0xea, 0x00, 0x00,
0x02, 0x48, 0x51, 0x35,
0xc0, 0x4a, 0x94, 0x00,
- 0x04, 0x41, 0x7e, 0x79,
+ 0x04, 0x41, 0x78, 0x79,
0x08, 0xea, 0x98, 0x00,
0x08, 0x57, 0xae, 0x00,
0x08, 0x3c, 0x78, 0x00,
@@ -203,12 +200,12 @@
0x0f, 0x67, 0xc0, 0x09,
0x00, 0x34, 0x69, 0x02,
0x20, 0xea, 0x96, 0x00,
- 0x00, 0xe2, 0xf6, 0x41,
+ 0x00, 0xe2, 0xf0, 0x41,
0xc0, 0x4a, 0x94, 0x00,
- 0x40, 0x3a, 0xaa, 0x69,
+ 0x40, 0x3a, 0xa4, 0x69,
0x02, 0x55, 0x06, 0x68,
- 0x02, 0x56, 0xaa, 0x69,
- 0xff, 0x5b, 0xaa, 0x61,
+ 0x02, 0x56, 0xa4, 0x69,
+ 0xff, 0x5b, 0xa4, 0x61,
0x02, 0x20, 0x51, 0x31,
0x80, 0xea, 0xb2, 0x01,
0x44, 0xea, 0x00, 0x00,
@@ -216,40 +213,40 @@
0x33, 0xea, 0x00, 0x00,
0xff, 0xea, 0xb2, 0x09,
0xff, 0xe0, 0xc0, 0x19,
- 0xff, 0xe0, 0xac, 0x79,
+ 0xff, 0xe0, 0xa6, 0x79,
0x02, 0xac, 0x51, 0x31,
- 0x00, 0xe2, 0xa2, 0x41,
+ 0x00, 0xe2, 0x9c, 0x41,
0x02, 0x5e, 0x50, 0x31,
0x02, 0xa8, 0xb8, 0x30,
0x02, 0x5c, 0x50, 0x31,
- 0xff, 0xad, 0xbd, 0x71,
+ 0xff, 0xad, 0xb7, 0x71,
0x02, 0xac, 0x41, 0x31,
0x02, 0x22, 0x51, 0x31,
0x02, 0xa0, 0x5c, 0x33,
0x02, 0xa0, 0x44, 0x32,
- 0x00, 0xe2, 0xc6, 0x41,
- 0x10, 0x92, 0xc7, 0x69,
+ 0x00, 0xe2, 0xc0, 0x41,
+ 0x10, 0x92, 0xc1, 0x69,
0x3d, 0x93, 0xc9, 0x29,
0x01, 0xe4, 0xc8, 0x01,
0x01, 0xea, 0xca, 0x01,
0xff, 0xea, 0xda, 0x01,
0x02, 0x20, 0x51, 0x31,
0x02, 0xae, 0x41, 0x32,
- 0xff, 0x21, 0xcf, 0x61,
+ 0xff, 0x21, 0xc9, 0x61,
0xff, 0xea, 0x46, 0x02,
0x02, 0x5c, 0x50, 0x31,
0x40, 0xea, 0x96, 0x00,
- 0x02, 0x56, 0xcc, 0x6d,
- 0x01, 0x55, 0xcc, 0x6d,
- 0x10, 0x92, 0xdb, 0x79,
- 0x10, 0x40, 0xe4, 0x69,
- 0x01, 0x56, 0xe4, 0x79,
+ 0x02, 0x56, 0xd4, 0x6d,
+ 0x01, 0x55, 0xd4, 0x6d,
+ 0x10, 0x92, 0xd5, 0x79,
+ 0x10, 0x40, 0xde, 0x69,
+ 0x01, 0x56, 0xde, 0x79,
0xff, 0x97, 0x07, 0x78,
- 0x13, 0xea, 0x46, 0x59,
+ 0x13, 0xea, 0x40, 0x59,
0x13, 0xea, 0x04, 0x00,
0x00, 0xe2, 0x06, 0x40,
0xbf, 0x3a, 0x74, 0x08,
- 0x04, 0x41, 0xea, 0x79,
+ 0x04, 0x41, 0xe4, 0x79,
0x08, 0xea, 0x98, 0x00,
0x08, 0x57, 0xae, 0x00,
0x01, 0x93, 0x69, 0x32,
@@ -257,87 +254,87 @@
0x40, 0xea, 0x66, 0x02,
0x08, 0x3c, 0x78, 0x00,
0x80, 0xea, 0x62, 0x02,
- 0x00, 0xe2, 0xb8, 0x5b,
+ 0x00, 0xe2, 0xb2, 0x5b,
0x01, 0x36, 0xc1, 0x31,
- 0x9f, 0xe0, 0x4c, 0x7c,
- 0x80, 0xe0, 0x0a, 0x72,
- 0xa0, 0xe0, 0x46, 0x72,
- 0xc0, 0xe0, 0x3c, 0x72,
- 0xe0, 0xe0, 0x76, 0x72,
- 0x01, 0xea, 0x46, 0x59,
+ 0x9f, 0xe0, 0x54, 0x7c,
+ 0x80, 0xe0, 0x04, 0x72,
+ 0xa0, 0xe0, 0x40, 0x72,
+ 0xc0, 0xe0, 0x36, 0x72,
+ 0xe0, 0xe0, 0x70, 0x72,
+ 0x01, 0xea, 0x40, 0x59,
0x01, 0xea, 0x04, 0x00,
- 0x00, 0xe2, 0xf6, 0x41,
- 0x80, 0x33, 0x11, 0x7a,
- 0x03, 0xea, 0x46, 0x59,
+ 0x00, 0xe2, 0xf0, 0x41,
+ 0x80, 0x33, 0x0b, 0x7a,
+ 0x03, 0xea, 0x40, 0x59,
0x03, 0xea, 0x04, 0x00,
- 0xee, 0x00, 0x18, 0x6a,
+ 0xee, 0x00, 0x12, 0x6a,
0x05, 0xea, 0xb4, 0x00,
0x33, 0xea, 0x3a, 0x59,
0x33, 0xea, 0x00, 0x00,
0x02, 0xa8, 0x90, 0x32,
- 0x00, 0xe2, 0x60, 0x59,
+ 0x00, 0xe2, 0x5a, 0x59,
0xef, 0x96, 0xd5, 0x19,
- 0x00, 0xe2, 0x28, 0x52,
+ 0x00, 0xe2, 0x22, 0x52,
0x09, 0x80, 0xe1, 0x30,
0x02, 0xea, 0x36, 0x00,
0xa8, 0xea, 0x32, 0x00,
- 0x00, 0xe2, 0x2e, 0x42,
+ 0x00, 0xe2, 0x28, 0x42,
0x01, 0x96, 0xd1, 0x30,
0x10, 0x80, 0x89, 0x31,
0x20, 0xea, 0x32, 0x00,
0xbf, 0x33, 0x67, 0x0a,
- 0x10, 0x4c, 0x38, 0x6a,
- 0x20, 0x19, 0x30, 0x6a,
- 0x20, 0x19, 0x34, 0x6a,
- 0x02, 0x4d, 0xf6, 0x69,
+ 0x10, 0x4c, 0x32, 0x6a,
+ 0x20, 0x19, 0x2a, 0x6a,
+ 0x20, 0x19, 0x2e, 0x6a,
+ 0x02, 0x4d, 0xf0, 0x69,
0x40, 0x33, 0x67, 0x02,
- 0x00, 0xe2, 0xf6, 0x41,
- 0x80, 0x33, 0xb7, 0x6a,
+ 0x00, 0xe2, 0xf0, 0x41,
+ 0x80, 0x33, 0xb1, 0x6a,
0x01, 0x44, 0x10, 0x33,
0x08, 0x92, 0x25, 0x03,
- 0x00, 0xe2, 0xf6, 0x41,
+ 0x00, 0xe2, 0xf0, 0x41,
0x10, 0xea, 0x80, 0x00,
0x01, 0x31, 0xc5, 0x31,
- 0x80, 0xe2, 0x62, 0x62,
- 0x10, 0x92, 0x87, 0x6a,
+ 0x80, 0xe2, 0x5c, 0x62,
+ 0x10, 0x92, 0x81, 0x6a,
0xc0, 0x94, 0xc5, 0x01,
- 0x40, 0x92, 0x53, 0x6a,
+ 0x40, 0x92, 0x4d, 0x6a,
0xbf, 0xe2, 0xc4, 0x09,
- 0x20, 0x92, 0x67, 0x7a,
+ 0x20, 0x92, 0x61, 0x7a,
0x01, 0xe2, 0x88, 0x30,
- 0x00, 0xe2, 0xb8, 0x5b,
- 0xa0, 0x36, 0x6f, 0x62,
+ 0x00, 0xe2, 0xb2, 0x5b,
+ 0xa0, 0x36, 0x69, 0x62,
0x23, 0x92, 0x89, 0x08,
- 0x00, 0xe2, 0xb8, 0x5b,
- 0xa0, 0x36, 0x6f, 0x62,
- 0x00, 0xa8, 0x66, 0x42,
- 0xff, 0xe2, 0x66, 0x62,
- 0x00, 0xe2, 0x86, 0x42,
+ 0x00, 0xe2, 0xb2, 0x5b,
+ 0xa0, 0x36, 0x69, 0x62,
+ 0x00, 0xa8, 0x60, 0x42,
+ 0xff, 0xe2, 0x60, 0x62,
+ 0x00, 0xe2, 0x80, 0x42,
0x40, 0xea, 0x98, 0x00,
0x01, 0xe2, 0x88, 0x30,
- 0x00, 0xe2, 0xb8, 0x5b,
- 0xa0, 0x36, 0x45, 0x72,
+ 0x00, 0xe2, 0xb2, 0x5b,
+ 0xa0, 0x36, 0x3f, 0x72,
0x40, 0xea, 0x98, 0x00,
0x01, 0x31, 0x89, 0x32,
0x08, 0xea, 0x62, 0x02,
- 0x00, 0xe2, 0xf6, 0x41,
- 0xe0, 0xea, 0xd4, 0x5b,
- 0x80, 0xe0, 0xc2, 0x6a,
- 0x04, 0xe0, 0x68, 0x73,
- 0x02, 0xe0, 0x9a, 0x73,
- 0x00, 0xea, 0x20, 0x73,
- 0x03, 0xe0, 0xaa, 0x73,
- 0x23, 0xe0, 0x98, 0x72,
- 0x08, 0xe0, 0xbe, 0x72,
- 0x00, 0xe2, 0xb8, 0x5b,
- 0x07, 0xea, 0x46, 0x59,
+ 0x00, 0xe2, 0xf0, 0x41,
+ 0xe0, 0xea, 0xce, 0x5b,
+ 0x80, 0xe0, 0xbc, 0x6a,
+ 0x04, 0xe0, 0x62, 0x73,
+ 0x02, 0xe0, 0x94, 0x73,
+ 0x00, 0xea, 0x1a, 0x73,
+ 0x03, 0xe0, 0xa4, 0x73,
+ 0x23, 0xe0, 0x92, 0x72,
+ 0x08, 0xe0, 0xb8, 0x72,
+ 0x00, 0xe2, 0xb2, 0x5b,
+ 0x07, 0xea, 0x40, 0x59,
0x07, 0xea, 0x04, 0x00,
- 0x08, 0x42, 0xf7, 0x71,
- 0x04, 0x42, 0x95, 0x62,
+ 0x08, 0x42, 0xf1, 0x71,
+ 0x04, 0x42, 0x8f, 0x62,
0x01, 0x43, 0x89, 0x30,
- 0x00, 0xe2, 0x86, 0x42,
+ 0x00, 0xe2, 0x80, 0x42,
0x01, 0x44, 0xd4, 0x31,
- 0x00, 0xe2, 0x86, 0x42,
+ 0x00, 0xe2, 0x80, 0x42,
0x01, 0x00, 0x60, 0x32,
0x33, 0xea, 0x3a, 0x59,
0x33, 0xea, 0x00, 0x00,
@@ -345,20 +342,20 @@
0x01, 0x64, 0xc0, 0x31,
0x00, 0x30, 0x3b, 0x59,
0x01, 0x30, 0x01, 0x30,
- 0x01, 0xe0, 0xbc, 0x7a,
- 0xa0, 0xea, 0xca, 0x5b,
- 0x01, 0xa0, 0xbc, 0x62,
- 0x01, 0x84, 0xb1, 0x7a,
- 0x01, 0x95, 0xbf, 0x6a,
- 0x05, 0xea, 0x46, 0x59,
+ 0x01, 0xe0, 0xb6, 0x7a,
+ 0xa0, 0xea, 0xc4, 0x5b,
+ 0x01, 0xa0, 0xb6, 0x62,
+ 0x01, 0x84, 0xab, 0x7a,
+ 0x01, 0x95, 0xb9, 0x6a,
+ 0x05, 0xea, 0x40, 0x59,
0x05, 0xea, 0x04, 0x00,
- 0x00, 0xe2, 0xbe, 0x42,
- 0x03, 0xea, 0x46, 0x59,
+ 0x00, 0xe2, 0xb8, 0x42,
+ 0x03, 0xea, 0x40, 0x59,
0x03, 0xea, 0x04, 0x00,
- 0x00, 0xe2, 0xbe, 0x42,
- 0x07, 0xea, 0xdc, 0x5b,
+ 0x00, 0xe2, 0xb8, 0x42,
+ 0x07, 0xea, 0xd6, 0x5b,
0x01, 0x44, 0xd4, 0x31,
- 0x00, 0xe2, 0xf6, 0x41,
+ 0x00, 0xe2, 0xf0, 0x41,
0x3f, 0xe0, 0x6a, 0x0a,
0xc0, 0x34, 0xc1, 0x09,
0x00, 0x35, 0x51, 0x01,
@@ -369,54 +366,54 @@
0x01, 0xea, 0xc6, 0x01,
0x02, 0xe2, 0xc8, 0x31,
0x02, 0xec, 0x40, 0x31,
- 0xff, 0xa1, 0xde, 0x72,
+ 0xff, 0xa1, 0xd8, 0x72,
0x02, 0xe8, 0xda, 0x31,
0x02, 0xa0, 0x50, 0x31,
- 0x00, 0xe2, 0x00, 0x43,
+ 0x00, 0xe2, 0xfa, 0x42,
0x80, 0x33, 0x67, 0x02,
0x01, 0x44, 0xd4, 0x31,
- 0x00, 0xe2, 0xb8, 0x5b,
+ 0x00, 0xe2, 0xb2, 0x5b,
0x01, 0x33, 0x67, 0x02,
- 0xe0, 0x36, 0x1b, 0x63,
+ 0xe0, 0x36, 0x15, 0x63,
0x02, 0x33, 0x67, 0x02,
- 0x20, 0x46, 0x14, 0x63,
+ 0x20, 0x46, 0x0e, 0x63,
0xff, 0xea, 0x52, 0x09,
- 0xa8, 0xea, 0xca, 0x5b,
- 0x04, 0x92, 0xfb, 0x7a,
+ 0xa8, 0xea, 0xc4, 0x5b,
+ 0x04, 0x92, 0xf5, 0x7a,
0x01, 0x34, 0xc1, 0x31,
- 0x00, 0x93, 0xfb, 0x62,
+ 0x00, 0x93, 0xf5, 0x62,
0x01, 0x35, 0xc1, 0x31,
- 0x00, 0x94, 0x05, 0x73,
+ 0x00, 0x94, 0xff, 0x72,
0x01, 0xa9, 0x52, 0x11,
- 0xff, 0xa9, 0xf0, 0x6a,
- 0x00, 0xe2, 0x14, 0x43,
+ 0xff, 0xa9, 0xea, 0x6a,
+ 0x00, 0xe2, 0x0e, 0x43,
0x10, 0x33, 0x67, 0x02,
- 0x04, 0x92, 0x15, 0x7b,
+ 0x04, 0x92, 0x0f, 0x7b,
0xfb, 0x92, 0x25, 0x0b,
0xff, 0xea, 0x66, 0x0a,
- 0x01, 0xa4, 0x0f, 0x6b,
+ 0x01, 0xa4, 0x09, 0x6b,
0x02, 0xa8, 0x90, 0x32,
- 0x00, 0xe2, 0x60, 0x59,
- 0x10, 0x92, 0xbf, 0x7a,
- 0xff, 0xea, 0xdc, 0x5b,
- 0x00, 0xe2, 0xbe, 0x42,
- 0x04, 0xea, 0x46, 0x59,
+ 0x00, 0xe2, 0x5a, 0x59,
+ 0x10, 0x92, 0xb9, 0x7a,
+ 0xff, 0xea, 0xd6, 0x5b,
+ 0x00, 0xe2, 0xb8, 0x42,
+ 0x04, 0xea, 0x40, 0x59,
0x04, 0xea, 0x04, 0x00,
- 0x00, 0xe2, 0xbe, 0x42,
- 0x04, 0xea, 0x46, 0x59,
+ 0x00, 0xe2, 0xb8, 0x42,
+ 0x04, 0xea, 0x40, 0x59,
0x04, 0xea, 0x04, 0x00,
- 0x00, 0xe2, 0xf6, 0x41,
- 0x08, 0x92, 0xb7, 0x7a,
- 0xc0, 0x33, 0x2b, 0x7b,
- 0x80, 0x33, 0xb7, 0x6a,
- 0xff, 0x88, 0x2b, 0x6b,
- 0x40, 0x33, 0xb7, 0x6a,
- 0x10, 0x92, 0x31, 0x7b,
- 0x0a, 0xea, 0x46, 0x59,
+ 0x00, 0xe2, 0xf0, 0x41,
+ 0x08, 0x92, 0xb1, 0x7a,
+ 0xc0, 0x33, 0x25, 0x7b,
+ 0x80, 0x33, 0xb1, 0x6a,
+ 0xff, 0x88, 0x25, 0x6b,
+ 0x40, 0x33, 0xb1, 0x6a,
+ 0x10, 0x92, 0x2b, 0x7b,
+ 0x0a, 0xea, 0x40, 0x59,
0x0a, 0xea, 0x04, 0x00,
- 0x00, 0xe2, 0x50, 0x5b,
- 0x00, 0xe2, 0x84, 0x43,
- 0x50, 0x4b, 0x38, 0x6b,
+ 0x00, 0xe2, 0x4a, 0x5b,
+ 0x00, 0xe2, 0x7e, 0x43,
+ 0x50, 0x4b, 0x32, 0x6b,
0xbf, 0x3a, 0x74, 0x08,
0x01, 0xe0, 0xf4, 0x31,
0xff, 0xea, 0xc0, 0x09,
@@ -430,21 +427,21 @@
0x33, 0xea, 0x00, 0x00,
0x02, 0x42, 0x51, 0x31,
0xff, 0x90, 0x65, 0x68,
- 0xff, 0x88, 0x5d, 0x6b,
- 0x01, 0xa4, 0x59, 0x6b,
- 0x02, 0xa4, 0x61, 0x6b,
- 0x01, 0x84, 0x61, 0x7b,
+ 0xff, 0x88, 0x57, 0x6b,
+ 0x01, 0xa4, 0x53, 0x6b,
+ 0x02, 0xa4, 0x5b, 0x6b,
+ 0x01, 0x84, 0x5b, 0x7b,
0x02, 0x28, 0x19, 0x33,
0x02, 0xa8, 0x50, 0x36,
- 0xff, 0x88, 0x61, 0x73,
- 0x00, 0xe2, 0x34, 0x5b,
+ 0xff, 0x88, 0x5b, 0x73,
+ 0x00, 0xe2, 0x2e, 0x5b,
0x02, 0xa8, 0x20, 0x33,
0x02, 0x2c, 0x19, 0x33,
0x02, 0xa8, 0x58, 0x32,
0x04, 0xa4, 0x49, 0x07,
- 0xc0, 0x33, 0xb7, 0x6a,
+ 0xc0, 0x33, 0xb1, 0x6a,
0x04, 0x92, 0x25, 0x03,
- 0x20, 0x92, 0x85, 0x6b,
+ 0x20, 0x92, 0x7f, 0x6b,
0x02, 0xa8, 0x40, 0x31,
0xc0, 0x34, 0xc1, 0x09,
0x00, 0x35, 0x51, 0x01,
@@ -459,56 +456,63 @@
0xf7, 0x57, 0xae, 0x08,
0x08, 0xea, 0x98, 0x00,
0x01, 0x44, 0xd4, 0x31,
- 0xee, 0x00, 0x8e, 0x6b,
+ 0xee, 0x00, 0x88, 0x6b,
0x02, 0xea, 0xb4, 0x00,
0xc0, 0xea, 0x66, 0x02,
- 0x09, 0x4c, 0x90, 0x7b,
+ 0x09, 0x4c, 0x8a, 0x7b,
0x01, 0xea, 0x6c, 0x02,
0x08, 0x4c, 0x06, 0x68,
- 0x0b, 0xea, 0x46, 0x59,
+ 0x0b, 0xea, 0x40, 0x59,
0x0b, 0xea, 0x04, 0x00,
0x01, 0x44, 0xd4, 0x31,
- 0x20, 0x33, 0xf7, 0x79,
- 0x00, 0xe2, 0xa2, 0x5b,
- 0x00, 0xe2, 0xf6, 0x41,
- 0x01, 0x84, 0xa7, 0x7b,
+ 0x20, 0x33, 0xf1, 0x79,
+ 0x00, 0xe2, 0x9c, 0x5b,
+ 0x00, 0xe2, 0xf0, 0x41,
+ 0x01, 0x84, 0xa1, 0x7b,
0x01, 0xa4, 0x49, 0x07,
0x08, 0x60, 0x30, 0x33,
0x08, 0x80, 0x41, 0x37,
0xdf, 0x33, 0x67, 0x0a,
- 0xee, 0x00, 0xb4, 0x6b,
+ 0xee, 0x00, 0xae, 0x6b,
0x05, 0xea, 0xb4, 0x00,
0x33, 0xea, 0x3a, 0x59,
0x33, 0xea, 0x00, 0x00,
- 0x00, 0xe2, 0x60, 0x59,
- 0x00, 0xe2, 0xbe, 0x42,
- 0xff, 0x42, 0xc4, 0x6b,
- 0x01, 0x41, 0xb8, 0x6b,
- 0x02, 0x41, 0xb8, 0x7b,
- 0xff, 0x42, 0xc4, 0x6b,
- 0x01, 0x41, 0xb8, 0x6b,
- 0x02, 0x41, 0xb8, 0x7b,
- 0xff, 0x42, 0xc4, 0x7b,
- 0x04, 0x4c, 0xb8, 0x6b,
+ 0x00, 0xe2, 0x5a, 0x59,
+ 0x00, 0xe2, 0xb8, 0x42,
+ 0xff, 0x42, 0xbe, 0x6b,
+ 0x01, 0x41, 0xb2, 0x6b,
+ 0x02, 0x41, 0xb2, 0x7b,
+ 0xff, 0x42, 0xbe, 0x6b,
+ 0x01, 0x41, 0xb2, 0x6b,
+ 0x02, 0x41, 0xb2, 0x7b,
+ 0xff, 0x42, 0xbe, 0x7b,
+ 0x04, 0x4c, 0xb2, 0x6b,
0xe0, 0x41, 0x6c, 0x0e,
0x01, 0x44, 0xd4, 0x31,
- 0xff, 0x42, 0xcc, 0x7b,
- 0x04, 0x4c, 0xcc, 0x6b,
+ 0xff, 0x42, 0xc6, 0x7b,
+ 0x04, 0x4c, 0xc6, 0x6b,
0xe0, 0x41, 0x6c, 0x0a,
- 0xe0, 0x36, 0xf7, 0x61,
+ 0xe0, 0x36, 0xf1, 0x61,
0xff, 0xea, 0xca, 0x09,
0x01, 0xe2, 0xc8, 0x31,
0x01, 0x46, 0xda, 0x35,
0x01, 0x44, 0xd4, 0x35,
0x10, 0xea, 0x80, 0x00,
0x01, 0xe2, 0x62, 0x36,
- 0x04, 0xa6, 0xe4, 0x7b,
+ 0x04, 0xa6, 0xde, 0x7b,
0xff, 0xea, 0x5a, 0x09,
0xff, 0xea, 0x4c, 0x0d,
- 0x01, 0xa6, 0x02, 0x6c,
+ 0x01, 0xa6, 0x0a, 0x6c,
0x10, 0xad, 0x64, 0x78,
- 0x80, 0xad, 0xfa, 0x6b,
+ 0x80, 0xad, 0x02, 0x6c,
0x08, 0xad, 0x64, 0x68,
+ 0x20, 0x19, 0xf6, 0x7b,
+ 0x80, 0xea, 0xb2, 0x01,
+ 0x11, 0x00, 0x00, 0x10,
+ 0x02, 0xa6, 0xf2, 0x7b,
+ 0xff, 0xea, 0xb2, 0x0d,
+ 0x11, 0x00, 0x00, 0x10,
+ 0xff, 0xea, 0xb2, 0x09,
0x04, 0x84, 0xf9, 0x30,
0x00, 0xea, 0x08, 0x81,
0xff, 0xea, 0xd4, 0x09,
@@ -533,7 +537,7 @@
0x00, 0x86, 0x0d, 0x23,
0x00, 0x87, 0x0f, 0x23,
0x01, 0x84, 0xc5, 0x31,
- 0x80, 0x83, 0x25, 0x7c,
+ 0x80, 0x83, 0x2d, 0x7c,
0x02, 0xe2, 0xc4, 0x01,
0xff, 0xea, 0x4c, 0x09,
0x01, 0xe2, 0x36, 0x30,
@@ -544,75 +548,75 @@
0xfe, 0xa6, 0x4c, 0x0d,
0x0b, 0x98, 0xe1, 0x30,
0xfd, 0xa4, 0x49, 0x09,
- 0x80, 0xa3, 0x39, 0x7c,
+ 0x80, 0xa3, 0x41, 0x7c,
0x02, 0xa4, 0x48, 0x01,
0x01, 0xa4, 0x36, 0x30,
0xa8, 0xea, 0x32, 0x00,
0xfd, 0xa4, 0x49, 0x0b,
0x05, 0xa3, 0x07, 0x33,
- 0x80, 0x83, 0x45, 0x6c,
+ 0x80, 0x83, 0x4d, 0x6c,
0x02, 0xea, 0x4c, 0x05,
0xff, 0xea, 0x4c, 0x0d,
0x00, 0xe2, 0x34, 0x59,
- 0x02, 0xa6, 0xe6, 0x6b,
+ 0x02, 0xa6, 0xe0, 0x6b,
0x80, 0xf9, 0xf2, 0x05,
- 0xc0, 0x33, 0x53, 0x7c,
- 0x03, 0xea, 0x46, 0x59,
+ 0xc0, 0x33, 0x5b, 0x7c,
+ 0x03, 0xea, 0x40, 0x59,
0x03, 0xea, 0x04, 0x00,
- 0x20, 0x33, 0x77, 0x7c,
- 0x01, 0x84, 0x5d, 0x6c,
- 0x06, 0xea, 0x46, 0x59,
+ 0x20, 0x33, 0x7f, 0x7c,
+ 0x01, 0x84, 0x65, 0x6c,
+ 0x06, 0xea, 0x40, 0x59,
0x06, 0xea, 0x04, 0x00,
- 0x00, 0xe2, 0x7a, 0x44,
+ 0x00, 0xe2, 0x82, 0x44,
0x01, 0x00, 0x60, 0x32,
- 0xee, 0x00, 0x66, 0x6c,
+ 0xee, 0x00, 0x6e, 0x6c,
0x05, 0xea, 0xb4, 0x00,
0x33, 0xea, 0x3a, 0x59,
0x33, 0xea, 0x00, 0x00,
0x80, 0x3d, 0x7a, 0x00,
- 0xfc, 0x42, 0x68, 0x7c,
+ 0xfc, 0x42, 0x70, 0x7c,
0x7f, 0x3d, 0x7a, 0x08,
0x00, 0x30, 0x3b, 0x59,
0x01, 0x30, 0x01, 0x30,
- 0x09, 0xea, 0x46, 0x59,
+ 0x09, 0xea, 0x40, 0x59,
0x09, 0xea, 0x04, 0x00,
- 0x00, 0xe2, 0xf6, 0x41,
- 0x01, 0xa4, 0x5d, 0x6c,
- 0x00, 0xe2, 0x30, 0x5c,
+ 0x00, 0xe2, 0xf0, 0x41,
+ 0x01, 0xa4, 0x65, 0x6c,
+ 0x00, 0xe2, 0x38, 0x5c,
0x20, 0x33, 0x67, 0x02,
0x01, 0x00, 0x60, 0x32,
- 0x02, 0xa6, 0x82, 0x7c,
- 0x00, 0xe2, 0x46, 0x5c,
+ 0x02, 0xa6, 0x8a, 0x7c,
+ 0x00, 0xe2, 0x4e, 0x5c,
0x00, 0xe2, 0x56, 0x58,
0x00, 0xe2, 0x66, 0x58,
0x00, 0xe2, 0x3a, 0x58,
0x00, 0x30, 0x3b, 0x59,
0x01, 0x30, 0x01, 0x30,
- 0x20, 0x19, 0x82, 0x6c,
- 0x00, 0xe2, 0xb2, 0x5c,
- 0x04, 0x19, 0x9c, 0x6c,
+ 0x20, 0x19, 0x8a, 0x6c,
+ 0x00, 0xe2, 0xba, 0x5c,
+ 0x04, 0x19, 0xa4, 0x6c,
0x02, 0x19, 0x32, 0x00,
- 0x01, 0x84, 0x9d, 0x7c,
- 0x01, 0x1b, 0x96, 0x7c,
- 0x01, 0x1a, 0x9c, 0x6c,
- 0x00, 0xe2, 0x4c, 0x44,
- 0x80, 0x4b, 0xa2, 0x6c,
- 0x01, 0x4c, 0x9e, 0x7c,
- 0x03, 0x42, 0x4c, 0x6c,
- 0x00, 0xe2, 0xe0, 0x5b,
+ 0x01, 0x84, 0xa5, 0x7c,
+ 0x01, 0x1b, 0x9e, 0x7c,
+ 0x01, 0x1a, 0xa4, 0x6c,
+ 0x00, 0xe2, 0x54, 0x44,
+ 0x80, 0x4b, 0xaa, 0x6c,
+ 0x01, 0x4c, 0xa6, 0x7c,
+ 0x03, 0x42, 0x54, 0x6c,
+ 0x00, 0xe2, 0xda, 0x5b,
0x80, 0xf9, 0xf2, 0x01,
- 0x04, 0x33, 0xf7, 0x79,
- 0x00, 0xe2, 0xf6, 0x41,
- 0x08, 0x5d, 0xba, 0x6c,
+ 0x04, 0x33, 0xf1, 0x79,
+ 0x00, 0xe2, 0xf0, 0x41,
+ 0x08, 0x5d, 0xc2, 0x6c,
0x00, 0xe2, 0x56, 0x58,
0x00, 0x30, 0x3b, 0x59,
0x01, 0x30, 0x01, 0x30,
- 0x02, 0x1b, 0xaa, 0x7c,
- 0x08, 0x5d, 0xb8, 0x7c,
+ 0x02, 0x1b, 0xb2, 0x7c,
+ 0x08, 0x5d, 0xc0, 0x7c,
0x03, 0x68, 0x00, 0x37,
0x01, 0x84, 0x09, 0x07,
- 0x80, 0x1b, 0xc4, 0x7c,
- 0x80, 0x84, 0xc5, 0x6c,
+ 0x80, 0x1b, 0xcc, 0x7c,
+ 0x80, 0x84, 0xcd, 0x6c,
0xff, 0x85, 0x0b, 0x1b,
0xff, 0x86, 0x0d, 0x23,
0xff, 0x87, 0x0f, 0x23,
@@ -624,161 +628,161 @@
0xf9, 0xd9, 0xb2, 0x0d,
0x01, 0xd9, 0xb2, 0x05,
0x01, 0x52, 0x48, 0x31,
- 0x20, 0xa4, 0xee, 0x7c,
- 0x20, 0x5b, 0xee, 0x7c,
- 0x80, 0xf9, 0xfc, 0x7c,
+ 0x20, 0xa4, 0xf6, 0x7c,
+ 0x20, 0x5b, 0xf6, 0x7c,
+ 0x80, 0xf9, 0x04, 0x7d,
0x02, 0xea, 0xb4, 0x00,
0x11, 0x00, 0x00, 0x10,
- 0x04, 0x19, 0x08, 0x7d,
+ 0x04, 0x19, 0x10, 0x7d,
0xdf, 0x19, 0x32, 0x08,
- 0x60, 0x5b, 0x08, 0x6d,
- 0x01, 0x4c, 0xe2, 0x7c,
+ 0x60, 0x5b, 0x10, 0x6d,
+ 0x01, 0x4c, 0xea, 0x7c,
0x20, 0x19, 0x32, 0x00,
0x01, 0xd9, 0xb2, 0x05,
0x02, 0xea, 0xb4, 0x00,
0x01, 0xd9, 0xb2, 0x05,
- 0x10, 0x5b, 0x00, 0x6d,
- 0x08, 0x5b, 0x0a, 0x6d,
- 0x20, 0x5b, 0xfa, 0x6c,
- 0x02, 0x5b, 0x2a, 0x6d,
- 0x0e, 0xea, 0x46, 0x59,
+ 0x10, 0x5b, 0x08, 0x6d,
+ 0x08, 0x5b, 0x12, 0x6d,
+ 0x20, 0x5b, 0x02, 0x6d,
+ 0x02, 0x5b, 0x32, 0x6d,
+ 0x0e, 0xea, 0x40, 0x59,
0x0e, 0xea, 0x04, 0x00,
- 0x80, 0xf9, 0xea, 0x6c,
+ 0x80, 0xf9, 0xf2, 0x6c,
0xdf, 0x5c, 0xb8, 0x08,
0x01, 0xd9, 0xb2, 0x05,
- 0x01, 0xa4, 0xe5, 0x6d,
- 0x00, 0xe2, 0x30, 0x5c,
- 0x00, 0xe2, 0x34, 0x5d,
+ 0x01, 0xa4, 0xed, 0x6d,
+ 0x00, 0xe2, 0x38, 0x5c,
+ 0x00, 0xe2, 0x3c, 0x5d,
0x01, 0x90, 0x21, 0x1b,
0x01, 0xd9, 0xb2, 0x05,
- 0x00, 0xe2, 0x34, 0x5b,
+ 0x00, 0xe2, 0x2e, 0x5b,
0xf3, 0x96, 0xd5, 0x19,
- 0x00, 0xe2, 0x18, 0x55,
- 0x80, 0x96, 0x19, 0x6d,
- 0x0f, 0xea, 0x46, 0x59,
+ 0x00, 0xe2, 0x20, 0x55,
+ 0x80, 0x96, 0x21, 0x6d,
+ 0x0f, 0xea, 0x40, 0x59,
0x0f, 0xea, 0x04, 0x00,
- 0x00, 0xe2, 0x20, 0x45,
+ 0x00, 0xe2, 0x28, 0x45,
0x04, 0x8c, 0xe1, 0x30,
0x01, 0xea, 0xf2, 0x00,
0x02, 0xea, 0x36, 0x00,
0xa8, 0xea, 0x32, 0x00,
- 0xff, 0x97, 0x27, 0x7d,
- 0x14, 0xea, 0x46, 0x59,
+ 0xff, 0x97, 0x2f, 0x7d,
+ 0x14, 0xea, 0x40, 0x59,
0x14, 0xea, 0x04, 0x00,
- 0x00, 0xe2, 0x96, 0x5d,
+ 0x00, 0xe2, 0x9e, 0x5d,
0x01, 0xd9, 0xb2, 0x05,
0x09, 0x80, 0xe1, 0x30,
0x02, 0xea, 0x36, 0x00,
0xa8, 0xea, 0x32, 0x00,
- 0x00, 0xe2, 0x8e, 0x5d,
+ 0x00, 0xe2, 0x96, 0x5d,
0x01, 0xd9, 0xb2, 0x05,
- 0x02, 0xa6, 0x44, 0x7d,
+ 0x02, 0xa6, 0x4c, 0x7d,
0x00, 0xe2, 0x34, 0x59,
- 0x20, 0x5b, 0x52, 0x6d,
- 0xfc, 0x42, 0x3e, 0x7d,
- 0x10, 0x40, 0x40, 0x6d,
- 0x20, 0x4d, 0x42, 0x7d,
- 0x08, 0x5d, 0x52, 0x6d,
- 0x02, 0xa6, 0xe6, 0x6b,
+ 0x20, 0x5b, 0x5a, 0x6d,
+ 0xfc, 0x42, 0x46, 0x7d,
+ 0x10, 0x40, 0x48, 0x6d,
+ 0x20, 0x4d, 0x4a, 0x7d,
+ 0x08, 0x5d, 0x5a, 0x6d,
+ 0x02, 0xa6, 0xe0, 0x6b,
0x00, 0xe2, 0x34, 0x59,
- 0x20, 0x5b, 0x52, 0x6d,
- 0x01, 0x1b, 0x72, 0x6d,
- 0xfc, 0x42, 0x4e, 0x7d,
- 0x10, 0x40, 0x50, 0x6d,
+ 0x20, 0x5b, 0x5a, 0x6d,
+ 0x01, 0x1b, 0x7a, 0x6d,
+ 0xfc, 0x42, 0x56, 0x7d,
+ 0x10, 0x40, 0x58, 0x6d,
0x20, 0x4d, 0x64, 0x78,
0x08, 0x5d, 0x64, 0x78,
0x02, 0x19, 0x32, 0x00,
0x01, 0x5b, 0x40, 0x31,
- 0x00, 0xe2, 0xb2, 0x5c,
- 0x00, 0xe2, 0xa2, 0x5b,
+ 0x00, 0xe2, 0xba, 0x5c,
+ 0x00, 0xe2, 0x9c, 0x5b,
0x20, 0xea, 0xb6, 0x00,
- 0x00, 0xe2, 0xe0, 0x5b,
+ 0x00, 0xe2, 0xda, 0x5b,
0x20, 0x5c, 0xb8, 0x00,
- 0x04, 0x19, 0x68, 0x6d,
- 0x01, 0x1a, 0x68, 0x6d,
+ 0x04, 0x19, 0x70, 0x6d,
+ 0x01, 0x1a, 0x70, 0x6d,
0x00, 0xe2, 0x34, 0x59,
0x01, 0x1a, 0x64, 0x78,
0x80, 0xf9, 0xf2, 0x01,
- 0x20, 0xa0, 0xcc, 0x7d,
+ 0x20, 0xa0, 0xd4, 0x7d,
0xff, 0x90, 0x21, 0x1b,
- 0x08, 0x92, 0x45, 0x6b,
+ 0x08, 0x92, 0x3f, 0x6b,
0x02, 0xea, 0xb4, 0x04,
0x01, 0xa4, 0x49, 0x03,
- 0x40, 0x5b, 0x82, 0x6d,
+ 0x40, 0x5b, 0x8a, 0x6d,
0x00, 0xe2, 0x34, 0x59,
- 0x40, 0x5b, 0x82, 0x6d,
- 0x04, 0x5d, 0xe6, 0x7d,
- 0x01, 0x1a, 0xe6, 0x7d,
+ 0x40, 0x5b, 0x8a, 0x6d,
+ 0x04, 0x5d, 0xee, 0x7d,
+ 0x01, 0x1a, 0xee, 0x7d,
0x20, 0x4d, 0x64, 0x78,
- 0x40, 0x5b, 0xcc, 0x7d,
- 0x04, 0x5d, 0xe6, 0x7d,
- 0x01, 0x1a, 0xe6, 0x7d,
+ 0x40, 0x5b, 0xd4, 0x7d,
+ 0x04, 0x5d, 0xee, 0x7d,
+ 0x01, 0x1a, 0xee, 0x7d,
0x80, 0xf9, 0xf2, 0x01,
0xff, 0x90, 0x21, 0x1b,
- 0x08, 0x92, 0x45, 0x6b,
+ 0x08, 0x92, 0x3f, 0x6b,
0x02, 0xea, 0xb4, 0x04,
0x00, 0xe2, 0x34, 0x59,
0x01, 0x1b, 0x64, 0x78,
0x80, 0xf9, 0xf2, 0x01,
0x02, 0xea, 0xb4, 0x04,
0x00, 0xe2, 0x34, 0x59,
- 0x01, 0x1b, 0xaa, 0x6d,
- 0x40, 0x5b, 0xb8, 0x7d,
- 0x01, 0x1b, 0xaa, 0x6d,
+ 0x01, 0x1b, 0xb2, 0x6d,
+ 0x40, 0x5b, 0xc0, 0x7d,
+ 0x01, 0x1b, 0xb2, 0x6d,
0x02, 0x19, 0x32, 0x00,
0x01, 0x1a, 0x64, 0x78,
0x80, 0xf9, 0xf2, 0x01,
0xff, 0xea, 0x10, 0x03,
0x08, 0x92, 0x25, 0x03,
- 0x00, 0xe2, 0x44, 0x43,
- 0x01, 0x1a, 0xb4, 0x7d,
- 0x40, 0x5b, 0xb0, 0x7d,
- 0x01, 0x1a, 0x9e, 0x6d,
+ 0x00, 0xe2, 0x3e, 0x43,
+ 0x01, 0x1a, 0xbc, 0x7d,
+ 0x40, 0x5b, 0xb8, 0x7d,
+ 0x01, 0x1a, 0xa6, 0x6d,
0xfc, 0x42, 0x64, 0x78,
- 0x01, 0x1a, 0xb8, 0x6d,
- 0x10, 0xea, 0x46, 0x59,
+ 0x01, 0x1a, 0xc0, 0x6d,
+ 0x10, 0xea, 0x40, 0x59,
0x10, 0xea, 0x04, 0x00,
0xfc, 0x42, 0x64, 0x78,
- 0x10, 0x40, 0xbe, 0x6d,
+ 0x10, 0x40, 0xc6, 0x6d,
0x20, 0x4d, 0x64, 0x78,
- 0x40, 0x5b, 0x9e, 0x6d,
+ 0x40, 0x5b, 0xa6, 0x6d,
0x01, 0x1a, 0x64, 0x78,
0x01, 0x90, 0x21, 0x1b,
0x30, 0x3f, 0xc0, 0x09,
0x30, 0xe0, 0x64, 0x60,
0x40, 0x4b, 0x64, 0x68,
0xff, 0xea, 0x52, 0x01,
- 0xee, 0x00, 0xd4, 0x6d,
+ 0xee, 0x00, 0xdc, 0x6d,
0x80, 0xf9, 0xf2, 0x01,
0xff, 0x90, 0x21, 0x1b,
0x02, 0xea, 0xb4, 0x00,
0x20, 0xea, 0x9a, 0x00,
- 0xf3, 0x42, 0xde, 0x6d,
- 0x12, 0xea, 0x46, 0x59,
+ 0xf3, 0x42, 0xe6, 0x6d,
+ 0x12, 0xea, 0x40, 0x59,
0x12, 0xea, 0x04, 0x00,
- 0x00, 0xe2, 0xf6, 0x41,
- 0x0d, 0xea, 0x46, 0x59,
+ 0x00, 0xe2, 0xf0, 0x41,
+ 0x0d, 0xea, 0x40, 0x59,
0x0d, 0xea, 0x04, 0x00,
- 0x00, 0xe2, 0xf6, 0x41,
+ 0x00, 0xe2, 0xf0, 0x41,
0x01, 0x90, 0x21, 0x1b,
- 0x11, 0xea, 0x46, 0x59,
+ 0x11, 0xea, 0x40, 0x59,
0x11, 0xea, 0x04, 0x00,
- 0x00, 0xe2, 0x34, 0x5b,
+ 0x00, 0xe2, 0x2e, 0x5b,
0x08, 0x5a, 0xb4, 0x00,
- 0x00, 0xe2, 0x0c, 0x5e,
+ 0x00, 0xe2, 0x14, 0x5e,
0xa8, 0xea, 0x32, 0x00,
0x00, 0xe2, 0x34, 0x59,
- 0x80, 0x1a, 0xfa, 0x7d,
- 0x00, 0xe2, 0x0c, 0x5e,
+ 0x80, 0x1a, 0x02, 0x7e,
+ 0x00, 0xe2, 0x14, 0x5e,
0x80, 0x19, 0x32, 0x00,
- 0x40, 0x5b, 0x00, 0x6e,
- 0x08, 0x5a, 0x00, 0x7e,
+ 0x40, 0x5b, 0x08, 0x6e,
+ 0x08, 0x5a, 0x08, 0x7e,
0x20, 0x4d, 0x64, 0x78,
0x02, 0x84, 0x09, 0x03,
- 0x40, 0x5b, 0xcc, 0x7d,
+ 0x40, 0x5b, 0xd4, 0x7d,
0xff, 0x90, 0x21, 0x1b,
0x80, 0xf9, 0xf2, 0x01,
- 0x08, 0x92, 0x45, 0x6b,
+ 0x08, 0x92, 0x3f, 0x6b,
0x02, 0xea, 0xb4, 0x04,
0x01, 0x38, 0xe1, 0x30,
0x05, 0x39, 0xe3, 0x98,
@@ -815,7 +819,7 @@
static int
ahd_patch21_func(struct ahd_softc *ahd)
{
- return ((ahd->features & AHD_RTI) == 0);
+ return ((ahd->flags & AHD_INITIATORROLE) != 0);
}
static ahd_patch_func_t ahd_patch20_func;
@@ -823,7 +827,7 @@
static int
ahd_patch20_func(struct ahd_softc *ahd)
{
- return ((ahd->flags & AHD_INITIATORROLE) != 0);
+ return ((ahd->flags & AHD_TARGETROLE) != 0);
}
static ahd_patch_func_t ahd_patch19_func;
@@ -831,7 +835,7 @@
static int
ahd_patch19_func(struct ahd_softc *ahd)
{
- return ((ahd->flags & AHD_TARGETROLE) != 0);
+ return ((ahd->bugs & AHD_AUTOFLUSH_BUG) != 0);
}
static ahd_patch_func_t ahd_patch18_func;
@@ -839,7 +843,7 @@
static int
ahd_patch18_func(struct ahd_softc *ahd)
{
- return ((ahd->bugs & AHD_AUTOFLUSH_BUG) != 0);
+ return ((ahd->features & AHD_NEW_DFCNTRL_OPTS) != 0);
}
static ahd_patch_func_t ahd_patch17_func;
@@ -847,7 +851,7 @@
static int
ahd_patch17_func(struct ahd_softc *ahd)
{
- return ((ahd->features & AHD_NEW_DFCNTRL_OPTS) != 0);
+ return ((ahd->flags & AHD_39BIT_ADDRESSING) != 0);
}
static ahd_patch_func_t ahd_patch16_func;
@@ -855,7 +859,7 @@
static int
ahd_patch16_func(struct ahd_softc *ahd)
{
- return ((ahd->flags & AHD_39BIT_ADDRESSING) != 0);
+ return ((ahd->flags & AHD_64BIT_ADDRESSING) != 0);
}
static ahd_patch_func_t ahd_patch15_func;
@@ -863,7 +867,7 @@
static int
ahd_patch15_func(struct ahd_softc *ahd)
{
- return ((ahd->flags & AHD_64BIT_ADDRESSING) != 0);
+ return ((ahd->features & AHD_NEW_DFCNTRL_OPTS) == 0);
}
static ahd_patch_func_t ahd_patch14_func;
@@ -871,7 +875,7 @@
static int
ahd_patch14_func(struct ahd_softc *ahd)
{
- return ((ahd->features & AHD_NEW_DFCNTRL_OPTS) == 0);
+ return ((ahd->bugs & AHD_REG_SLOW_SETTLE_BUG) != 0);
}
static ahd_patch_func_t ahd_patch13_func;
@@ -879,7 +883,7 @@
static int
ahd_patch13_func(struct ahd_softc *ahd)
{
- return ((ahd->bugs & AHD_REG_SLOW_SETTLE_BUG) != 0);
+ return ((ahd->features & AHD_RTI) == 0);
}
static ahd_patch_func_t ahd_patch12_func;
@@ -1016,136 +1020,138 @@
{ ahd_patch2_func, 65, 1, 2 },
{ ahd_patch0_func, 66, 1, 1 },
{ ahd_patch4_func, 102, 1, 1 },
- { ahd_patch2_func, 157, 6, 1 },
- { ahd_patch1_func, 163, 2, 1 },
- { ahd_patch5_func, 165, 1, 1 },
- { ahd_patch2_func, 174, 1, 2 },
- { ahd_patch0_func, 175, 1, 1 },
- { ahd_patch6_func, 176, 2, 2 },
- { ahd_patch0_func, 178, 6, 3 },
- { ahd_patch2_func, 181, 1, 2 },
- { ahd_patch0_func, 182, 1, 1 },
- { ahd_patch2_func, 185, 1, 2 },
- { ahd_patch0_func, 186, 1, 1 },
- { ahd_patch3_func, 188, 1, 1 },
- { ahd_patch7_func, 189, 3, 1 },
- { ahd_patch3_func, 198, 1, 1 },
- { ahd_patch5_func, 199, 16, 2 },
- { ahd_patch0_func, 215, 1, 1 },
- { ahd_patch8_func, 235, 2, 1 },
- { ahd_patch1_func, 239, 1, 2 },
- { ahd_patch0_func, 240, 1, 1 },
- { ahd_patch7_func, 243, 3, 1 },
- { ahd_patch1_func, 258, 1, 2 },
- { ahd_patch0_func, 259, 1, 1 },
- { ahd_patch1_func, 262, 1, 2 },
- { ahd_patch0_func, 263, 1, 1 },
- { ahd_patch2_func, 266, 1, 2 },
- { ahd_patch0_func, 267, 1, 1 },
- { ahd_patch9_func, 280, 2, 2 },
- { ahd_patch0_func, 282, 1, 1 },
- { ahd_patch1_func, 324, 1, 2 },
- { ahd_patch0_func, 325, 1, 1 },
- { ahd_patch2_func, 333, 1, 2 },
- { ahd_patch0_func, 334, 1, 1 },
- { ahd_patch2_func, 337, 1, 2 },
- { ahd_patch0_func, 338, 1, 1 },
+ { ahd_patch2_func, 157, 3, 1 },
+ { ahd_patch1_func, 160, 2, 1 },
+ { ahd_patch5_func, 162, 1, 1 },
+ { ahd_patch2_func, 171, 1, 2 },
+ { ahd_patch0_func, 172, 1, 1 },
+ { ahd_patch6_func, 173, 2, 2 },
+ { ahd_patch0_func, 175, 6, 3 },
+ { ahd_patch2_func, 178, 1, 2 },
+ { ahd_patch0_func, 179, 1, 1 },
+ { ahd_patch2_func, 182, 1, 2 },
+ { ahd_patch0_func, 183, 1, 1 },
+ { ahd_patch3_func, 185, 1, 1 },
+ { ahd_patch7_func, 186, 3, 1 },
+ { ahd_patch3_func, 195, 1, 1 },
+ { ahd_patch5_func, 196, 16, 2 },
+ { ahd_patch0_func, 212, 1, 1 },
+ { ahd_patch8_func, 232, 2, 1 },
+ { ahd_patch1_func, 236, 1, 2 },
+ { ahd_patch0_func, 237, 1, 1 },
+ { ahd_patch7_func, 240, 3, 1 },
+ { ahd_patch1_func, 255, 1, 2 },
+ { ahd_patch0_func, 256, 1, 1 },
+ { ahd_patch1_func, 259, 1, 2 },
+ { ahd_patch0_func, 260, 1, 1 },
+ { ahd_patch2_func, 263, 1, 2 },
+ { ahd_patch0_func, 264, 1, 1 },
+ { ahd_patch9_func, 277, 2, 2 },
+ { ahd_patch0_func, 279, 1, 1 },
+ { ahd_patch1_func, 321, 1, 2 },
+ { ahd_patch0_func, 322, 1, 1 },
+ { ahd_patch2_func, 330, 1, 2 },
+ { ahd_patch0_func, 331, 1, 1 },
+ { ahd_patch2_func, 334, 1, 2 },
+ { ahd_patch0_func, 335, 1, 1 },
+ { ahd_patch1_func, 341, 1, 2 },
+ { ahd_patch0_func, 342, 1, 1 },
{ ahd_patch1_func, 344, 1, 2 },
{ ahd_patch0_func, 345, 1, 1 },
- { ahd_patch1_func, 347, 1, 2 },
- { ahd_patch0_func, 348, 1, 1 },
+ { ahd_patch10_func, 364, 1, 1 },
{ ahd_patch10_func, 367, 1, 1 },
- { ahd_patch10_func, 370, 1, 1 },
- { ahd_patch10_func, 372, 1, 1 },
- { ahd_patch10_func, 384, 1, 1 },
+ { ahd_patch10_func, 369, 1, 1 },
+ { ahd_patch10_func, 381, 1, 1 },
+ { ahd_patch1_func, 391, 1, 2 },
+ { ahd_patch0_func, 392, 1, 1 },
{ ahd_patch1_func, 394, 1, 2 },
{ ahd_patch0_func, 395, 1, 1 },
- { ahd_patch1_func, 397, 1, 2 },
- { ahd_patch0_func, 398, 1, 1 },
- { ahd_patch1_func, 406, 1, 2 },
- { ahd_patch0_func, 407, 1, 1 },
- { ahd_patch2_func, 420, 1, 2 },
- { ahd_patch0_func, 421, 1, 1 },
- { ahd_patch11_func, 451, 1, 1 },
- { ahd_patch1_func, 459, 1, 2 },
- { ahd_patch0_func, 460, 1, 1 },
- { ahd_patch2_func, 472, 1, 2 },
- { ahd_patch0_func, 473, 1, 1 },
- { ahd_patch12_func, 476, 6, 2 },
- { ahd_patch0_func, 482, 1, 1 },
- { ahd_patch13_func, 505, 1, 1 },
- { ahd_patch14_func, 514, 1, 1 },
- { ahd_patch15_func, 515, 1, 2 },
- { ahd_patch0_func, 516, 1, 1 },
- { ahd_patch16_func, 519, 1, 1 },
- { ahd_patch15_func, 520, 1, 1 },
- { ahd_patch17_func, 531, 1, 2 },
- { ahd_patch0_func, 532, 1, 1 },
- { ahd_patch1_func, 551, 1, 2 },
- { ahd_patch0_func, 552, 1, 1 },
+ { ahd_patch1_func, 403, 1, 2 },
+ { ahd_patch0_func, 404, 1, 1 },
+ { ahd_patch2_func, 417, 1, 2 },
+ { ahd_patch0_func, 418, 1, 1 },
+ { ahd_patch11_func, 448, 1, 1 },
+ { ahd_patch1_func, 456, 1, 2 },
+ { ahd_patch0_func, 457, 1, 1 },
+ { ahd_patch2_func, 469, 1, 2 },
+ { ahd_patch0_func, 470, 1, 1 },
+ { ahd_patch12_func, 473, 6, 2 },
+ { ahd_patch0_func, 479, 1, 1 },
+ { ahd_patch13_func, 500, 7, 1 },
+ { ahd_patch14_func, 509, 1, 1 },
+ { ahd_patch15_func, 518, 1, 1 },
+ { ahd_patch16_func, 519, 1, 2 },
+ { ahd_patch0_func, 520, 1, 1 },
+ { ahd_patch17_func, 523, 1, 1 },
+ { ahd_patch16_func, 524, 1, 1 },
+ { ahd_patch18_func, 535, 1, 2 },
+ { ahd_patch0_func, 536, 1, 1 },
{ ahd_patch1_func, 555, 1, 2 },
{ ahd_patch0_func, 556, 1, 1 },
- { ahd_patch2_func, 561, 1, 2 },
- { ahd_patch0_func, 562, 1, 1 },
- { ahd_patch2_func, 566, 1, 2 },
- { ahd_patch0_func, 567, 1, 1 },
- { ahd_patch1_func, 568, 1, 2 },
- { ahd_patch0_func, 569, 1, 1 },
- { ahd_patch2_func, 580, 1, 2 },
- { ahd_patch0_func, 581, 1, 1 },
- { ahd_patch18_func, 585, 1, 1 },
- { ahd_patch19_func, 590, 1, 1 },
- { ahd_patch20_func, 591, 2, 1 },
- { ahd_patch19_func, 595, 1, 2 },
- { ahd_patch0_func, 596, 1, 1 },
- { ahd_patch2_func, 599, 1, 2 },
+ { ahd_patch1_func, 559, 1, 2 },
+ { ahd_patch0_func, 560, 1, 1 },
+ { ahd_patch2_func, 565, 1, 2 },
+ { ahd_patch0_func, 566, 1, 1 },
+ { ahd_patch2_func, 570, 1, 2 },
+ { ahd_patch0_func, 571, 1, 1 },
+ { ahd_patch1_func, 572, 1, 2 },
+ { ahd_patch0_func, 573, 1, 1 },
+ { ahd_patch2_func, 584, 1, 2 },
+ { ahd_patch0_func, 585, 1, 1 },
+ { ahd_patch19_func, 589, 1, 1 },
+ { ahd_patch20_func, 594, 1, 1 },
+ { ahd_patch21_func, 595, 2, 1 },
+ { ahd_patch20_func, 599, 1, 2 },
{ ahd_patch0_func, 600, 1, 1 },
- { ahd_patch2_func, 615, 1, 2 },
- { ahd_patch0_func, 616, 1, 1 },
- { ahd_patch21_func, 617, 14, 1 },
- { ahd_patch1_func, 635, 1, 2 },
- { ahd_patch0_func, 636, 1, 1 },
- { ahd_patch21_func, 637, 1, 1 },
- { ahd_patch1_func, 649, 1, 2 },
- { ahd_patch0_func, 650, 1, 1 },
- { ahd_patch1_func, 657, 1, 2 },
- { ahd_patch0_func, 658, 1, 1 },
- { ahd_patch18_func, 681, 1, 1 },
- { ahd_patch18_func, 719, 1, 1 },
- { ahd_patch1_func, 730, 1, 2 },
- { ahd_patch0_func, 731, 1, 1 },
- { ahd_patch1_func, 748, 1, 2 },
- { ahd_patch0_func, 749, 1, 1 },
- { ahd_patch1_func, 751, 1, 2 },
- { ahd_patch0_func, 752, 1, 1 },
+ { ahd_patch2_func, 603, 1, 2 },
+ { ahd_patch0_func, 604, 1, 1 },
+ { ahd_patch2_func, 619, 1, 2 },
+ { ahd_patch0_func, 620, 1, 1 },
+ { ahd_patch13_func, 621, 14, 1 },
+ { ahd_patch1_func, 639, 1, 2 },
+ { ahd_patch0_func, 640, 1, 1 },
+ { ahd_patch13_func, 641, 1, 1 },
+ { ahd_patch1_func, 653, 1, 2 },
+ { ahd_patch0_func, 654, 1, 1 },
+ { ahd_patch1_func, 661, 1, 2 },
+ { ahd_patch0_func, 662, 1, 1 },
+ { ahd_patch19_func, 685, 1, 1 },
+ { ahd_patch19_func, 723, 1, 1 },
+ { ahd_patch1_func, 734, 1, 2 },
+ { ahd_patch0_func, 735, 1, 1 },
+ { ahd_patch1_func, 752, 1, 2 },
+ { ahd_patch0_func, 753, 1, 1 },
{ ahd_patch1_func, 755, 1, 2 },
{ ahd_patch0_func, 756, 1, 1 },
- { ahd_patch22_func, 758, 1, 2 },
- { ahd_patch0_func, 759, 2, 1 },
- { ahd_patch23_func, 762, 4, 2 },
- { ahd_patch0_func, 766, 1, 1 },
- { ahd_patch23_func, 774, 11, 1 }
+ { ahd_patch1_func, 759, 1, 2 },
+ { ahd_patch0_func, 760, 1, 1 },
+ { ahd_patch22_func, 762, 1, 2 },
+ { ahd_patch0_func, 763, 2, 1 },
+ { ahd_patch23_func, 766, 4, 2 },
+ { ahd_patch0_func, 770, 1, 1 },
+ { ahd_patch23_func, 778, 11, 1 }
};
static struct cs {
uint16_t begin;
uint16_t end;
} critical_sections[] = {
- { 11, 12 },
+ { 10, 12 },
{ 13, 14 },
{ 31, 42 },
{ 45, 47 },
{ 49, 50 },
{ 56, 78 },
{ 96, 123 },
- { 124, 152 },
+ { 124, 154 },
{ 154, 157 },
- { 165, 173 },
- { 198, 249 },
- { 428, 430 },
- { 433, 436 },
- { 681, 711 },
- { 721, 725 }
+ { 162, 170 },
+ { 195, 246 },
+ { 407, 415 },
+ { 425, 427 },
+ { 430, 433 },
+ { 685, 715 },
+ { 725, 729 }
};
static const int num_critical_sections = sizeof(critical_sections)
==== //depot/aic7xxx/aic7xxx/aic7xxx.c#147 - /home/luben/projects/linux/2.6/linux-2.5/drivers/scsi/aic7xxx/aic7xxx_core.c ====
--- /tmp/tmp.26963.7 2004-09-27 13:31:43.736464528 -0400
+++ /home/luben/projects/linux/2.6/linux-2.5/drivers/scsi/aic7xxx/aic7xxx_core.c 2004-01-16 17:59:19.000000000 -0500
@@ -37,7 +37,7 @@
* IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
* POSSIBILITY OF SUCH DAMAGES.
*
- * $Id: //depot/aic7xxx/aic7xxx/aic7xxx.c#147 $
+ * $Id: //depot/aic7xxx/aic7xxx/aic7xxx.c#148 $
*/
#ifdef __linux__
@@ -5525,7 +5525,7 @@
if (cstat != CAM_REQ_CMP)
aic_freeze_scb(scb);
if ((scb->flags & SCB_ACTIVE) == 0)
- printf("Inactive SCB in Waiting List\n");
+ printf("Inactive SCB in Wait List\n");
ahc_done(ahc, scb);
/* FALLTHROUGH */
}
@@ -5631,8 +5631,6 @@
cstat = aic_get_transaction_status(scb);
if (cstat != CAM_REQ_CMP)
aic_freeze_scb(scb);
- if ((scb->flags & SCB_ACTIVE) == 0)
- printf("Inactive SCB in untaggedQ\n");
ahc_done(ahc, scb);
break;
}
==== //depot/aic7xxx/linux/drivers/scsi/aic7xxx/aic7xxx_osm.c#259 - /home/luben/projects/linux/2.6/linux-2.5/drivers/scsi/aic7xxx/aic7xxx_osm.c ====
--- /tmp/tmp.26963.8 2004-09-27 13:31:44.410362080 -0400
+++ /home/luben/projects/linux/2.6/linux-2.5/drivers/scsi/aic7xxx/aic7xxx_osm.c 2004-01-23 13:16:04.000000000 -0500
@@ -1,7 +1,7 @@
/*
* Adaptec AIC7xxx device driver for Linux.
*
- * $Id: //depot/aic7xxx/linux/drivers/scsi/aic7xxx/aic7xxx_osm.c#259 $
+ * $Id: //depot/aic7xxx/linux/drivers/scsi/aic7xxx/aic7xxx_osm.c#262 $
*
* Copyright (c) 1994 John Aycock
* The University of Calgary Department of Computer Science.
@@ -1635,16 +1635,8 @@
*((struct ahc_softc **)host->hostdata) = ahc;
ahc_lock(ahc, &s);
-#if LINUX_VERSION_CODE >= KERNEL_VERSION(2,5,0)
- scsi_assign_lock(host, &ahc->platform_data->spin_lock);
-#elif AHC_SCSI_HAS_HOST_LOCK != 0
-#if LINUX_VERSION_CODE >= KERNEL_VERSION(2,4,21)
- host->host_lock = &ahc->platform_data->spin_lock;
-#else
- host->lock = &ahc->platform_data->spin_lock;
-#endif
-#endif
ahc->platform_data->host = host;
+ aic_assign_host_lock(ahc);
host->can_queue = AHC_MAX_QUEUE;
host->cmd_per_lun = 2;
/* XXX No way to communicate the ID for multiple channels */
@@ -2450,13 +2442,13 @@
* ahc host lock held. For other kernels, the
* io_request_lock must be held.
*/
-#if AHC_SCSI_HAS_HOST_LOCK != 0
+#if AIC_SCSI_HAS_HOST_LOCK != 0
ahc_lock(ahc, &s);
#else
spin_lock_irqsave(&io_request_lock, s);
#endif
ahc_linux_queue(cmd, ahc_linux_dv_complete);
-#if AHC_SCSI_HAS_HOST_LOCK != 0
+#if AIC_SCSI_HAS_HOST_LOCK != 0
ahc_unlock(ahc, &s);
#else
spin_unlock_irqrestore(&io_request_lock, s);
@@ -3643,6 +3635,28 @@
if ((tstate->auto_negotiate & mask) != 0) {
scb->flags |= SCB_AUTO_NEGOTIATE;
scb->hscb->control |= MK_MESSAGE;
+ } else if (cmd->cmnd[0] == INQUIRY
+ && (tinfo->curr.offset != 0
+ || tinfo->curr.width != MSG_EXT_WDTR_BUS_8_BIT)) {
+ /*
+ * The SCSI spec requires inquiry
+ * commands to complete without
+ * reporting unit attention conditions.
+ * Because of this, an inquiry command
+ * that occurs just after a device is
+ * reset will result in a data phase
+ * with mismatched negotiated rates.
+ * The core already forces a renegotiation
+ * for reset events that are visible to
+ * our controller or that we initiate,
+ * but a third party device reset or a
+ * hot-plug insertion can still cause this
+ * issue. Therefore, we force a re-negotiation
+ * for every inquiry command unless we
+ * are async.
+ */
+ scb->flags |= SCB_NEGOTIATE;
+ scb->hscb->control |= MK_MESSAGE;
}
if ((dev->flags & (AIC_DEV_Q_TAGGED|AIC_DEV_Q_BASIC)) != 0) {
@@ -4068,13 +4082,17 @@
untagged_q = &(ahc->untagged_queues[target_offset]);
TAILQ_REMOVE(untagged_q, scb, links.tqe);
ahc_run_untagged_queue(ahc, untagged_q);
- }
-
- if ((scb->flags & SCB_ACTIVE) == 0) {
+ } else if ((scb->flags & SCB_ACTIVE) == 0) {
+ /*
+ * Transactions aborted from the untagged queue may
+ * not have been dispatched to the controller, so
+ * only check the SCB_ACTIVE flag for tagged transactions.
+ */
printf("SCB %d done'd twice\n", scb->hscb->tag);
ahc_dump_card_state(ahc);
panic("Stopping for safety");
}
+
cmd = scb->io_ctx;
dev = scb->platform_data->dev;
dev->active--;
==== //depot/aic7xxx/linux/drivers/scsi/aic7xxx/aiclib.h#31 - /home/luben/projects/linux/2.6/linux-2.5/drivers/scsi/aic7xxx/aiclib.h ====
--- /tmp/tmp.26963.9 2004-09-27 13:31:44.733312984 -0400
+++ /home/luben/projects/linux/2.6/linux-2.5/drivers/scsi/aic7xxx/aiclib.h 2004-01-23 13:30:13.000000000 -0500
@@ -357,13 +357,14 @@
#define AIC_SCSI_HAS_HOST_LOCK 1
#if LINUX_VERSION_CODE >= KERNEL_VERSION(2,5,0)
-#define aic_assign_host_lock(aic) \
- scsi_assign_lock((aic)->host, &(aic)->spin_lock);
+#define aic_assign_host_lock(aic) \
+ scsi_assign_lock((aic)->platform_data->host, \
+ &(aic)->platform_data->spin_lock);
#elif LINUX_VERSION_CODE >= KERNEL_VERSION(2,4,21) \
&& defined(RED_HAT_LINUX_KERNEL)
-#define aic_assign_host_lock(aic) \
-do { \
- (aic)->host->host_lock = &(aic)->spin_lock; \
+#define aic_assign_host_lock(aic) \
+do { \
+ (aic)->host->host_lock = &(aic)->platform_data->spin_lock; \
} while (0)
#else
#define aic_assign_host_lock(aic) \
reply other threads:[~2004-09-28 13:06 UTC|newest]
Thread overview: [no followups] expand[flat|nested] mbox.gz Atom feed
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=415961D0.4020409@adaptec.com \
--to=luben_tuikov@adaptec.com \
--cc=linux-scsi@vger.kernel.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.