xref: /illumos-gate/usr/src/uts/sun4u/io/pci/pci_space.c (revision 825808ce)
17c478bd9Sstevel@tonic-gate /*
27c478bd9Sstevel@tonic-gate  * CDDL HEADER START
37c478bd9Sstevel@tonic-gate  *
47c478bd9Sstevel@tonic-gate  * The contents of this file are subject to the terms of the
521011ea1Sdanice  * Common Development and Distribution License (the "License").
621011ea1Sdanice  * You may not use this file except in compliance with the License.
77c478bd9Sstevel@tonic-gate  *
87c478bd9Sstevel@tonic-gate  * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
97c478bd9Sstevel@tonic-gate  * or http://www.opensolaris.org/os/licensing.
107c478bd9Sstevel@tonic-gate  * See the License for the specific language governing permissions
117c478bd9Sstevel@tonic-gate  * and limitations under the License.
127c478bd9Sstevel@tonic-gate  *
137c478bd9Sstevel@tonic-gate  * When distributing Covered Code, include this CDDL HEADER in each
147c478bd9Sstevel@tonic-gate  * file and include the License file at usr/src/OPENSOLARIS.LICENSE.
157c478bd9Sstevel@tonic-gate  * If applicable, add the following below this CDDL HEADER, with the
167c478bd9Sstevel@tonic-gate  * fields enclosed by brackets "[]" replaced with your own identifying
177c478bd9Sstevel@tonic-gate  * information: Portions Copyright [yyyy] [name of copyright owner]
187c478bd9Sstevel@tonic-gate  *
197c478bd9Sstevel@tonic-gate  * CDDL HEADER END
207c478bd9Sstevel@tonic-gate  */
217c478bd9Sstevel@tonic-gate /*
22*825808ceSdduvall  * Copyright 2006 Sun Microsystems, Inc.  All rights reserved.
237c478bd9Sstevel@tonic-gate  * Use is subject to license terms.
247c478bd9Sstevel@tonic-gate  */
257c478bd9Sstevel@tonic-gate 
267c478bd9Sstevel@tonic-gate #pragma ident	"%Z%%M%	%I%	%E% SMI"
277c478bd9Sstevel@tonic-gate 
287c478bd9Sstevel@tonic-gate /*
297c478bd9Sstevel@tonic-gate  * PCI nexus driver tunables
307c478bd9Sstevel@tonic-gate  */
317c478bd9Sstevel@tonic-gate 
327c478bd9Sstevel@tonic-gate #include <sys/types.h>
337c478bd9Sstevel@tonic-gate #include <sys/cmn_err.h>
347c478bd9Sstevel@tonic-gate #include <sys/time.h>
357c478bd9Sstevel@tonic-gate #include <sys/thread.h>
367c478bd9Sstevel@tonic-gate #include <sys/ksynch.h>
377c478bd9Sstevel@tonic-gate #include <sys/pci.h>
387c478bd9Sstevel@tonic-gate #include <sys/pci/pci_space.h>
397c478bd9Sstevel@tonic-gate 
407c478bd9Sstevel@tonic-gate 
417c478bd9Sstevel@tonic-gate /*LINTLIBRARY*/
427c478bd9Sstevel@tonic-gate 
437c478bd9Sstevel@tonic-gate /*
447c478bd9Sstevel@tonic-gate  * Used to disallow bypass requests for tomatillos ver <= 2.3
457c478bd9Sstevel@tonic-gate  * 0 allow bypass, 1 disallow it. errata #75
467c478bd9Sstevel@tonic-gate  */
477c478bd9Sstevel@tonic-gate uint_t tomatillo_disallow_bypass = 0;
487c478bd9Sstevel@tonic-gate 
497c478bd9Sstevel@tonic-gate /*
507c478bd9Sstevel@tonic-gate  * The three variables below enable a workround for
517c478bd9Sstevel@tonic-gate  * tomatillo's micro TLB bug. errata #82
527c478bd9Sstevel@tonic-gate  */
537c478bd9Sstevel@tonic-gate uint_t tm_mtlb_maxpgs = 20;
547c478bd9Sstevel@tonic-gate uint_t tm_mtlb_gc = 0; /* for garbage collection */
557c478bd9Sstevel@tonic-gate uint_t tm_mtlb_gc_manual = 0; /* for manual tuning */
567c478bd9Sstevel@tonic-gate 
577c478bd9Sstevel@tonic-gate /*
587c478bd9Sstevel@tonic-gate  * By initializing pci_interrupt_priorities_property to 1, the priority
597c478bd9Sstevel@tonic-gate  * level of the interrupt handler for a PCI device can be defined via an
607c478bd9Sstevel@tonic-gate  * "interrupt-priorities" property.  This property is an array of integer
617c478bd9Sstevel@tonic-gate  * values that have a one to one mapping the the "interrupts" property.
627c478bd9Sstevel@tonic-gate  * For example, if a device's "interrupts" property was (1, 2) and its
637c478bd9Sstevel@tonic-gate  * "interrupt-priorities" value was (5, 12), the handler for the first
647c478bd9Sstevel@tonic-gate  * interrupt would run at cpu priority 5 and the second at priority 12.
657c478bd9Sstevel@tonic-gate  * This would override the drivers standard mechanism for assigning
667c478bd9Sstevel@tonic-gate  * priorities to interrupt handlers.
677c478bd9Sstevel@tonic-gate  */
687c478bd9Sstevel@tonic-gate uint_t pci_interrupt_priorities_property = 1;
697c478bd9Sstevel@tonic-gate 
707c478bd9Sstevel@tonic-gate /*
717c478bd9Sstevel@tonic-gate  * By initializing pci_config_space_size_zero to 1, the driver will
727c478bd9Sstevel@tonic-gate  * tolerate mapping requests for configuration space "reg" entries whose
737c478bd9Sstevel@tonic-gate  * size is not zero.
747c478bd9Sstevel@tonic-gate  */
757c478bd9Sstevel@tonic-gate uint_t pci_config_space_size_zero = 1;
767c478bd9Sstevel@tonic-gate 
777c478bd9Sstevel@tonic-gate int pci_dvma_sync_before_unmap = 0;
787c478bd9Sstevel@tonic-gate int pci_sync_lock = 0;
797c478bd9Sstevel@tonic-gate 
807c478bd9Sstevel@tonic-gate int tomatillo_store_store_wrka = 0;
817c478bd9Sstevel@tonic-gate uint32_t pci_spurintr_duration = 60000000; /* One minute */
827c478bd9Sstevel@tonic-gate uint64_t pci_spurintr_msgs = PCI_SPURINTR_MSG_DEFAULT;
837c478bd9Sstevel@tonic-gate 
847c478bd9Sstevel@tonic-gate /*
857c478bd9Sstevel@tonic-gate  * The variable controls the default setting of the command register
867c478bd9Sstevel@tonic-gate  * for pci devices.  See init_child() for details.
877c478bd9Sstevel@tonic-gate  *
887c478bd9Sstevel@tonic-gate  * This flags also controls the setting of bits in the bridge control
897c478bd9Sstevel@tonic-gate  * register pci to pci bridges.  See init_child() for details.
907c478bd9Sstevel@tonic-gate  */
917c478bd9Sstevel@tonic-gate ushort_t pci_command_default = PCI_COMM_SERR_ENABLE |
927c478bd9Sstevel@tonic-gate 				PCI_COMM_WAIT_CYC_ENAB |
937c478bd9Sstevel@tonic-gate 				PCI_COMM_PARITY_DETECT |
947c478bd9Sstevel@tonic-gate 				PCI_COMM_ME |
957c478bd9Sstevel@tonic-gate 				PCI_COMM_MAE |
967c478bd9Sstevel@tonic-gate 				PCI_COMM_IO;
977c478bd9Sstevel@tonic-gate /*
987c478bd9Sstevel@tonic-gate  * The following variable enables a workaround for the following obp bug:
997c478bd9Sstevel@tonic-gate  *
1007c478bd9Sstevel@tonic-gate  *	1234181 - obp should set latency timer registers in pci
1017c478bd9Sstevel@tonic-gate  *		configuration header
1027c478bd9Sstevel@tonic-gate  *
1037c478bd9Sstevel@tonic-gate  * Until this bug gets fixed in the obp, the following workaround should
1047c478bd9Sstevel@tonic-gate  * be enabled.
1057c478bd9Sstevel@tonic-gate  */
1067c478bd9Sstevel@tonic-gate uint_t pci_set_latency_timer_register = 1;
1077c478bd9Sstevel@tonic-gate 
1087c478bd9Sstevel@tonic-gate /*
1097c478bd9Sstevel@tonic-gate  * The following variable enables a workaround for an obp bug to be
1107c478bd9Sstevel@tonic-gate  * submitted.  A bug requesting a workaround fof this problem has
1117c478bd9Sstevel@tonic-gate  * been filed:
1127c478bd9Sstevel@tonic-gate  *
1137c478bd9Sstevel@tonic-gate  *	1235094 - need workarounds on positron nexus drivers to set cache
1147c478bd9Sstevel@tonic-gate  *		line size registers
1157c478bd9Sstevel@tonic-gate  *
1167c478bd9Sstevel@tonic-gate  * Until this bug gets fixed in the obp, the following workaround should
1177c478bd9Sstevel@tonic-gate  * be enabled.
1187c478bd9Sstevel@tonic-gate  */
1197c478bd9Sstevel@tonic-gate uint_t pci_set_cache_line_size_register = 1;
1207c478bd9Sstevel@tonic-gate 
1217c478bd9Sstevel@tonic-gate /*
1227c478bd9Sstevel@tonic-gate  * The following driver parameters are defined as variables to allow
1237c478bd9Sstevel@tonic-gate  * patching for debugging and tuning.  Flags that can be set on a per
1247c478bd9Sstevel@tonic-gate  * PBM basis are bit fields where the PBM device instance number maps
1257c478bd9Sstevel@tonic-gate  * to the bit position.
1267c478bd9Sstevel@tonic-gate  */
1277c478bd9Sstevel@tonic-gate #ifdef DEBUG
1287c478bd9Sstevel@tonic-gate uint64_t pci_debug_flags = 0;
1297c478bd9Sstevel@tonic-gate uint_t pci_warn_pp0 = 0;
1307c478bd9Sstevel@tonic-gate #endif
1317c478bd9Sstevel@tonic-gate uint_t pci_disable_pass1_workarounds = 0;
1327c478bd9Sstevel@tonic-gate uint_t pci_disable_pass2_workarounds = 0;
1337c478bd9Sstevel@tonic-gate uint_t pci_disable_pass3_workarounds = 0;
1347c478bd9Sstevel@tonic-gate uint_t pci_disable_plus_workarounds = 0;
1357c478bd9Sstevel@tonic-gate uint_t pci_disable_default_workarounds = 0;
1367c478bd9Sstevel@tonic-gate uint_t ecc_error_intr_enable = 1;
1377c478bd9Sstevel@tonic-gate uint_t pci_sbh_error_intr_enable = (uint_t)-1;
1387c478bd9Sstevel@tonic-gate uint_t pci_mmu_error_intr_enable = (uint_t)-1;
1397c478bd9Sstevel@tonic-gate uint_t pci_stream_buf_enable = (uint_t)-1;
1407c478bd9Sstevel@tonic-gate uint_t pci_stream_buf_exists = 1;
1417c478bd9Sstevel@tonic-gate uint_t pci_rerun_disable = 0;
1427c478bd9Sstevel@tonic-gate 
1437c478bd9Sstevel@tonic-gate uint_t pci_enable_retry_arb = (uint_t)-1;
1447c478bd9Sstevel@tonic-gate 
1457c478bd9Sstevel@tonic-gate uint_t pci_bus_parking_enable = (uint_t)-1;
1467c478bd9Sstevel@tonic-gate uint_t pci_error_intr_enable = (uint_t)-1;
1477c478bd9Sstevel@tonic-gate uint_t pci_retry_disable = 0;
1487c478bd9Sstevel@tonic-gate uint_t pci_retry_enable = 0;
1497c478bd9Sstevel@tonic-gate uint_t pci_dwsync_disable = 0;
1507c478bd9Sstevel@tonic-gate uint_t pci_intsync_disable = 0;
1517c478bd9Sstevel@tonic-gate uint_t pci_b_arb_enable = 0xf;
1527c478bd9Sstevel@tonic-gate uint_t pci_a_arb_enable = 0xf;
1537c478bd9Sstevel@tonic-gate uint_t pci_ecc_afsr_retries = 100;	/* XXX - what's a good value? */
1547c478bd9Sstevel@tonic-gate 
1557c478bd9Sstevel@tonic-gate uint_t pci_intr_retry_intv = 5;		/* for interrupt retry reg */
1567c478bd9Sstevel@tonic-gate uint8_t pci_latency_timer = 0x40;	/* for pci latency timer reg */
1577c478bd9Sstevel@tonic-gate uint_t pci_panic_on_sbh_errors = 0;
1587c478bd9Sstevel@tonic-gate uint_t pci_panic_on_fatal_errors = 1;	/* should be 1 at beta */
1597c478bd9Sstevel@tonic-gate uint_t pci_thermal_intr_fatal = 1;	/* thermal interrupts fatal */
1607c478bd9Sstevel@tonic-gate uint_t pci_buserr_interrupt = 1;	/* safari buserr interrupt */
1617c478bd9Sstevel@tonic-gate uint_t pci_set_dto_value = 0;		/* overwrite the prom settings? */
1627c478bd9Sstevel@tonic-gate uint_t pci_dto_value = 1;		/* schizo consistent buf timeout PTO */
1637c478bd9Sstevel@tonic-gate uint_t pci_lock_sbuf = 0;
1647c478bd9Sstevel@tonic-gate 
1657c478bd9Sstevel@tonic-gate uint_t pci_use_contexts = 1;
1667c478bd9Sstevel@tonic-gate uint_t pci_sc_use_contexts = 1;
1677c478bd9Sstevel@tonic-gate uint_t pci_context_minpages = 2;
1687c478bd9Sstevel@tonic-gate uint_t pci_ctx_flush_warn = CE_IGNORE;
1697c478bd9Sstevel@tonic-gate uint_t pci_ctx_unsuccess_count = 0;	/* unsuccessful ctx flush count */
1707c478bd9Sstevel@tonic-gate uint_t pci_ctx_no_active_flush = 0;	/* cannot handle active ctx flush */
1717c478bd9Sstevel@tonic-gate uint_t pci_ctx_no_compat = 0;		/* maintain compatibility */
1727c478bd9Sstevel@tonic-gate 
1737c478bd9Sstevel@tonic-gate uint64_t pci_perr_enable = -1ull;
1747c478bd9Sstevel@tonic-gate uint64_t pci_serr_enable = -1ull;
1757c478bd9Sstevel@tonic-gate uint64_t pci_perr_fatal = -1ull;
1767c478bd9Sstevel@tonic-gate uint64_t pci_serr_fatal = -1ull;
1777c478bd9Sstevel@tonic-gate hrtime_t pci_intrpend_timeout = 5ll * NANOSEC;	/* 5 seconds in nanoseconds */
1787c478bd9Sstevel@tonic-gate hrtime_t pci_sync_buf_timeout = 1ll * NANOSEC;	/* 1 second  in nanoseconds */
1797c478bd9Sstevel@tonic-gate hrtime_t pci_cdma_intr_timeout = 1ll * NANOSEC; /* consistent sync trigger */
1807c478bd9Sstevel@tonic-gate uint32_t pci_cdma_intr_count = 15; /* num of pci_cdma_intr_timeout cycles */
1817c478bd9Sstevel@tonic-gate 
1827c478bd9Sstevel@tonic-gate uint32_t pci_dto_fault_warn = CE_WARN; /* set to CE_IGNORE for no messages */
1837c478bd9Sstevel@tonic-gate uint64_t pci_dto_intr_enable = 0;
1847c478bd9Sstevel@tonic-gate uint64_t pci_dto_count = 0;
1857c478bd9Sstevel@tonic-gate uint64_t pci_errtrig_pa = 0x0;
1867c478bd9Sstevel@tonic-gate 
1877c478bd9Sstevel@tonic-gate /*
1887c478bd9Sstevel@tonic-gate  * The following flag controls behavior of the ino handler routine
1897c478bd9Sstevel@tonic-gate  * when multiple interrupts are attached to a single ino.  Typically
1907c478bd9Sstevel@tonic-gate  * this case would occur for the ino's assigned to the PCI bus slots
1917c478bd9Sstevel@tonic-gate  * with multi-function devices or bus bridges.
1927c478bd9Sstevel@tonic-gate  *
1937c478bd9Sstevel@tonic-gate  * Setting the flag to zero causes the ino handler routine to return
1947c478bd9Sstevel@tonic-gate  * after finding the first interrupt handler to claim the interrupt.
1957c478bd9Sstevel@tonic-gate  *
1967c478bd9Sstevel@tonic-gate  * Setting the flag to non-zero causes the ino handler routine to
1977c478bd9Sstevel@tonic-gate  * return after making one complete pass through the interrupt
1987c478bd9Sstevel@tonic-gate  * handlers.
1997c478bd9Sstevel@tonic-gate  */
2007c478bd9Sstevel@tonic-gate uint_t pci_check_all_handlers = 1;
2017c478bd9Sstevel@tonic-gate 
2027c478bd9Sstevel@tonic-gate /*
2037c478bd9Sstevel@tonic-gate  * The following value is the number of consecutive unclaimed interrupts that
2047c478bd9Sstevel@tonic-gate  * will be tolerated for a particular ino_p before the interrupt is deemed to
2057c478bd9Sstevel@tonic-gate  * be jabbering and is blocked.
2067c478bd9Sstevel@tonic-gate  */
2077c478bd9Sstevel@tonic-gate uint_t pci_unclaimed_intr_max = 20;
2087c478bd9Sstevel@tonic-gate 
2097c478bd9Sstevel@tonic-gate ulong_t pci_iommu_dvma_end = 0xfffffffful;
2107c478bd9Sstevel@tonic-gate uint_t pci_lock_tlb = 0;
2117c478bd9Sstevel@tonic-gate uint64_t pci_dvma_debug_on = 0;
2127c478bd9Sstevel@tonic-gate uint64_t pci_dvma_debug_off = 0;
2137c478bd9Sstevel@tonic-gate uint32_t pci_dvma_debug_rec = 512;
2147c478bd9Sstevel@tonic-gate 
2157c478bd9Sstevel@tonic-gate /*
2167c478bd9Sstevel@tonic-gate  * dvma address space allocation cache variables
2177c478bd9Sstevel@tonic-gate  */
2187c478bd9Sstevel@tonic-gate uint_t pci_dvma_page_cache_entries = 0x200;	/* # of chunks (1 << bits) */
2197c478bd9Sstevel@tonic-gate uint_t pci_dvma_page_cache_clustsz = 0x8;	/* # of pages per chunk */
2207c478bd9Sstevel@tonic-gate #ifdef PCI_DMA_PROF
2217c478bd9Sstevel@tonic-gate uint_t pci_dvmaft_npages = 0;			/* FT fail due npages */
2227c478bd9Sstevel@tonic-gate uint_t pci_dvmaft_limit = 0;			/* FT fail due limits */
2237c478bd9Sstevel@tonic-gate uint_t pci_dvmaft_free = 0;			/* FT free */
2247c478bd9Sstevel@tonic-gate uint_t pci_dvmaft_success = 0;			/* FT success */
2257c478bd9Sstevel@tonic-gate uint_t pci_dvmaft_exhaust = 0;			/* FT vmem fallback */
2267c478bd9Sstevel@tonic-gate uint_t pci_dvma_vmem_alloc = 0;			/* vmem alloc */
2277c478bd9Sstevel@tonic-gate uint_t pci_dvma_vmem_xalloc = 0;		/* vmem xalloc */
2287c478bd9Sstevel@tonic-gate uint_t pci_dvma_vmem_xfree = 0;			/* vmem xfree */
2297c478bd9Sstevel@tonic-gate uint_t pci_dvma_vmem_free = 0;			/* vmem free */
2307c478bd9Sstevel@tonic-gate #endif
2317c478bd9Sstevel@tonic-gate uint_t pci_disable_fdvma = 0;
2327c478bd9Sstevel@tonic-gate 
2337c478bd9Sstevel@tonic-gate uint_t pci_iommu_ctx_lock_failure = 0;
2347c478bd9Sstevel@tonic-gate 
2357c478bd9Sstevel@tonic-gate /*
2367c478bd9Sstevel@tonic-gate  * This flag preserves prom iommu settings by copying prom TSB entries
2377c478bd9Sstevel@tonic-gate  * to corresponding kernel TSB entry locations. It should be removed
2387c478bd9Sstevel@tonic-gate  * after the interface properties from obp have become default.
2397c478bd9Sstevel@tonic-gate  */
2407c478bd9Sstevel@tonic-gate uint_t pci_preserve_iommu_tsb = 1;
2417c478bd9Sstevel@tonic-gate 
2427c478bd9Sstevel@tonic-gate /*
2437c478bd9Sstevel@tonic-gate  * memory callback list id callback list for kmem_alloc failure clients
2447c478bd9Sstevel@tonic-gate  */
2457c478bd9Sstevel@tonic-gate uintptr_t pci_kmem_clid = 0;
2467c478bd9Sstevel@tonic-gate 
2477c478bd9Sstevel@tonic-gate /*
2487c478bd9Sstevel@tonic-gate  * Perform a consistent-mode sync/flush during interrupt.
2497c478bd9Sstevel@tonic-gate  */
2507c478bd9Sstevel@tonic-gate uint_t pci_intr_dma_sync = 0;
2517c478bd9Sstevel@tonic-gate 
2527c478bd9Sstevel@tonic-gate /*
2537c478bd9Sstevel@tonic-gate  * This flag is used to enable max prefetch streaming cache mode
2547c478bd9Sstevel@tonic-gate  * feature of XMITS.
2557c478bd9Sstevel@tonic-gate  */
2567c478bd9Sstevel@tonic-gate uint_t pci_xmits_sc_max_prf = 0;
2577c478bd9Sstevel@tonic-gate 
2587c478bd9Sstevel@tonic-gate /*
2597c478bd9Sstevel@tonic-gate  * This flag is used to enable pcix error reporting in XMITS.
2607c478bd9Sstevel@tonic-gate  */
2617c478bd9Sstevel@tonic-gate uint64_t xmits_error_intr_enable = -1ull;
2627c478bd9Sstevel@tonic-gate 
2637c478bd9Sstevel@tonic-gate /*
2647c478bd9Sstevel@tonic-gate  * Enable parity error recovery for xmits
2657c478bd9Sstevel@tonic-gate  */
2667c478bd9Sstevel@tonic-gate uint_t xmits_perr_recov_int_enable = 0;
2677c478bd9Sstevel@tonic-gate 
2687c478bd9Sstevel@tonic-gate /*
2697c478bd9Sstevel@tonic-gate  * This flag controls whether or not DVMA remap support is
2707c478bd9Sstevel@tonic-gate  * enabled (currently, Schizo/XMITS only).
2717c478bd9Sstevel@tonic-gate  */
2727c478bd9Sstevel@tonic-gate int pci_dvma_remap_enabled = 0;
2737c478bd9Sstevel@tonic-gate 
2747c478bd9Sstevel@tonic-gate /*
2757c478bd9Sstevel@tonic-gate  * Serialize PCI relocations, since they are time critical.
2767c478bd9Sstevel@tonic-gate  */
2777c478bd9Sstevel@tonic-gate kthread_t *pci_reloc_thread = NULL;
2787c478bd9Sstevel@tonic-gate kmutex_t pci_reloc_mutex;
2797c478bd9Sstevel@tonic-gate kcondvar_t pci_reloc_cv;
2807c478bd9Sstevel@tonic-gate int pci_reloc_presuspend = 0;
2817c478bd9Sstevel@tonic-gate int pci_reloc_suspend = 0;
2827c478bd9Sstevel@tonic-gate id_t pci_dvma_cbid;
2837c478bd9Sstevel@tonic-gate id_t pci_fast_dvma_cbid;
2847c478bd9Sstevel@tonic-gate int pci_dma_panic_on_leak = 0;
2857c478bd9Sstevel@tonic-gate 
2867c478bd9Sstevel@tonic-gate /*
2877c478bd9Sstevel@tonic-gate  * Set Outstanding Maximum Split Transactions.  Legal settings are:
2887c478bd9Sstevel@tonic-gate  * 0 = 1 Outstanding Transacation, 1 = 2, 2 = 3, 3 = 4, 4 = 8, 5 = 12,
2897c478bd9Sstevel@tonic-gate  * 6 = 16, 7 = 32.
2907c478bd9Sstevel@tonic-gate  */
2917c478bd9Sstevel@tonic-gate uint_t xmits_max_transactions = 0;
2927c478bd9Sstevel@tonic-gate 
2937c478bd9Sstevel@tonic-gate /*
2947c478bd9Sstevel@tonic-gate  * Set Max Memory Read Byte Count. Legal settings are:
2957c478bd9Sstevel@tonic-gate  * 0 = 512 Max Memory Read Bytes, 1 = 1024, 2 = 2048, 3 = 4096.
2967c478bd9Sstevel@tonic-gate  */
2977c478bd9Sstevel@tonic-gate uint_t xmits_max_read_bytes = 0;
298810a4a70Sdanice 
299810a4a70Sdanice /*
300810a4a70Sdanice  * Bits 15:0 increase the maximum PIO retries allowed by XMITS.
301810a4a70Sdanice  */
30221011ea1Sdanice uint_t xmits_upper_retry_counter = 0x3E8;
30357026b47Sdanice 
30457026b47Sdanice /*
30557026b47Sdanice  * default values for xmits pcix diag BUG_FIX_CNTL bits 47:32
30657026b47Sdanice  * depending on mode: pcix or pci.
30757026b47Sdanice  */
30857026b47Sdanice uint_t xmits_pcix_diag_bugcntl_pcix = 0xA0;
30957026b47Sdanice uint_t xmits_pcix_diag_bugcntl_pci =  0xFF;
310