PERFORCE change 98170 for review
Warner Losh
imp at FreeBSD.org
Tue May 30 16:39:41 PDT 2006
http://perforce.freebsd.org/chv.cgi?CH=98170
Change 98170 by imp at imp_harmony on 2006/05/30 23:37:34
IFC @98168
Affected files ...
.. //depot/projects/arm/src/sys/Makefile#6 integrate
.. //depot/projects/arm/src/sys/amd64/amd64/busdma_machdep.c#8 integrate
.. //depot/projects/arm/src/sys/arm/arm/elf_trampoline.c#6 integrate
.. //depot/projects/arm/src/sys/arm/arm/pmap.c#16 integrate
.. //depot/projects/arm/src/sys/arm/sa11x0/assabet_machdep.c#4 integrate
.. //depot/projects/arm/src/sys/arm/sa11x0/sa11x0_var.h#3 integrate
.. //depot/projects/arm/src/sys/cam/cam_xpt.c#5 integrate
.. //depot/projects/arm/src/sys/cam/scsi/scsi_all.h#2 integrate
.. //depot/projects/arm/src/sys/conf/Makefile.arm#11 integrate
.. //depot/projects/arm/src/sys/conf/kern.mk#5 integrate
.. //depot/projects/arm/src/sys/dev/bfe/if_bfe.c#7 integrate
.. //depot/projects/arm/src/sys/dev/bfe/if_bfereg.h#4 integrate
.. //depot/projects/arm/src/sys/dev/ciss/ciss.c#8 integrate
.. //depot/projects/arm/src/sys/dev/isp/isp_freebsd.c#10 integrate
.. //depot/projects/arm/src/sys/dev/mpt/mpt.c#13 integrate
.. //depot/projects/arm/src/sys/dev/mpt/mpt.h#12 integrate
.. //depot/projects/arm/src/sys/dev/mpt/mpt_cam.c#15 integrate
.. //depot/projects/arm/src/sys/dev/mpt/mpt_cam.h#3 integrate
.. //depot/projects/arm/src/sys/dev/mpt/mpt_debug.c#9 integrate
.. //depot/projects/arm/src/sys/dev/mpt/mpt_pci.c#10 integrate
.. //depot/projects/arm/src/sys/dev/mpt/mpt_raid.c#7 integrate
.. //depot/projects/arm/src/sys/dev/mpt/mpt_raid.h#4 integrate
.. //depot/projects/arm/src/sys/dev/mpt/mpt_reg.h#4 integrate
.. //depot/projects/arm/src/sys/dev/ofw/ofw_console.c#4 integrate
.. //depot/projects/arm/src/sys/dev/pci/pcireg.h#5 integrate
.. //depot/projects/arm/src/sys/dev/sound/midi/midi.c#2 integrate
.. //depot/projects/arm/src/sys/dev/sound/midi/sequencer.c#2 integrate
.. //depot/projects/arm/src/sys/dev/usb/ehci.c#10 integrate
.. //depot/projects/arm/src/sys/dev/usb/ehci_pci.c#5 integrate
.. //depot/projects/arm/src/sys/dev/usb/if_axe.c#5 integrate
.. //depot/projects/arm/src/sys/dev/usb/if_axereg.h#3 integrate
.. //depot/projects/arm/src/sys/dev/usb/ohci.c#11 integrate
.. //depot/projects/arm/src/sys/dev/usb/ohci_pci.c#7 integrate
.. //depot/projects/arm/src/sys/dev/usb/ohcireg.h#2 integrate
.. //depot/projects/arm/src/sys/dev/usb/ohcivar.h#6 integrate
.. //depot/projects/arm/src/sys/dev/usb/sl811hs.c#3 integrate
.. //depot/projects/arm/src/sys/dev/usb/sl811hsvar.h#2 integrate
.. //depot/projects/arm/src/sys/dev/usb/uhci.c#6 integrate
.. //depot/projects/arm/src/sys/dev/usb/uhci_pci.c#3 integrate
.. //depot/projects/arm/src/sys/dev/usb/uhcivar.h#3 integrate
.. //depot/projects/arm/src/sys/dev/usb/usb_mem.c#3 integrate
.. //depot/projects/arm/src/sys/dev/usb/usbdi.c#5 integrate
.. //depot/projects/arm/src/sys/dev/usb/usbdivar.h#3 integrate
.. //depot/projects/arm/src/sys/doc/subsys/Doxyfile-cam#2 integrate
.. //depot/projects/arm/src/sys/doc/subsys/Doxyfile-crypto#2 integrate
.. //depot/projects/arm/src/sys/doc/subsys/Doxyfile-dev_pci#2 integrate
.. //depot/projects/arm/src/sys/doc/subsys/Doxyfile-dev_sound#2 integrate
.. //depot/projects/arm/src/sys/doc/subsys/Doxyfile-dev_usb#2 integrate
.. //depot/projects/arm/src/sys/doc/subsys/Doxyfile-geom#2 integrate
.. //depot/projects/arm/src/sys/doc/subsys/Doxyfile-i4b#2 integrate
.. //depot/projects/arm/src/sys/doc/subsys/Doxyfile-kern#2 integrate
.. //depot/projects/arm/src/sys/doc/subsys/Doxyfile-libkern#2 integrate
.. //depot/projects/arm/src/sys/doc/subsys/Doxyfile-linux#2 integrate
.. //depot/projects/arm/src/sys/doc/subsys/Doxyfile-net80211#2 integrate
.. //depot/projects/arm/src/sys/doc/subsys/Doxyfile-netgraph#2 integrate
.. //depot/projects/arm/src/sys/doc/subsys/Doxyfile-netinet#2 integrate
.. //depot/projects/arm/src/sys/doc/subsys/Doxyfile-netinet6#2 integrate
.. //depot/projects/arm/src/sys/doc/subsys/Doxyfile-netipsec#2 integrate
.. //depot/projects/arm/src/sys/doc/subsys/Doxyfile-opencrypto#2 integrate
.. //depot/projects/arm/src/sys/doc/subsys/Doxyfile-vm#2 integrate
.. //depot/projects/arm/src/sys/doc/subsys/Makefile#2 integrate
.. //depot/projects/arm/src/sys/doc/subsys/notreviewed.dox#1 branch
.. //depot/projects/arm/src/sys/fs/nullfs/null_vfsops.c#6 integrate
.. //depot/projects/arm/src/sys/i386/i386/busdma_machdep.c#7 integrate
.. //depot/projects/arm/src/sys/i386/i386/machdep.c#12 integrate
.. //depot/projects/arm/src/sys/i386/i386/ptrace_machdep.c#2 integrate
.. //depot/projects/arm/src/sys/i386/i386/vm_machdep.c#5 integrate
.. //depot/projects/arm/src/sys/i386/include/npx.h#3 integrate
.. //depot/projects/arm/src/sys/i386/isa/npx.c#8 integrate
.. //depot/projects/arm/src/sys/kern/kern_exec.c#10 integrate
.. //depot/projects/arm/src/sys/kern/kern_exit.c#16 integrate
.. //depot/projects/arm/src/sys/kern/subr_disk.c#4 integrate
.. //depot/projects/arm/src/sys/kern/subr_stack.c#2 integrate
.. //depot/projects/arm/src/sys/kern/vnode_if.src#5 integrate
.. //depot/projects/arm/src/sys/modules/acpi/acpi/Makefile#4 integrate
.. //depot/projects/arm/src/sys/modules/acpi/acpi_asus/Makefile#2 integrate
.. //depot/projects/arm/src/sys/modules/acpi/acpi_panasonic/Makefile#2 integrate
.. //depot/projects/arm/src/sys/modules/acpi/acpi_toshiba/Makefile#2 integrate
.. //depot/projects/arm/src/sys/modules/acpi/acpi_video/Makefile#3 integrate
.. //depot/projects/arm/src/sys/modules/cpufreq/Makefile#4 integrate
.. //depot/projects/arm/src/sys/modules/fdc/Makefile#3 integrate
.. //depot/projects/arm/src/sys/modules/geom/geom_eli/Makefile#3 integrate
.. //depot/projects/arm/src/sys/modules/mfi/Makefile#3 integrate
.. //depot/projects/arm/src/sys/net/bpf.c#7 integrate
.. //depot/projects/arm/src/sys/net/bpf_filter.c#4 integrate
.. //depot/projects/arm/src/sys/net/if_tap.c#5 integrate
.. //depot/projects/arm/src/sys/nfsclient/nfs_vfsops.c#7 integrate
.. //depot/projects/arm/src/sys/pci/agp_amd64.c#5 integrate
.. //depot/projects/arm/src/sys/pci/agp_sis.c#4 integrate
.. //depot/projects/arm/src/sys/sparc64/include/pmap.h#3 integrate
.. //depot/projects/arm/src/sys/sparc64/sparc64/pmap.c#7 integrate
.. //depot/projects/arm/src/sys/tools/vnode_if.awk#5 integrate
.. //depot/projects/arm/src/sys/vm/vm_extern.h#4 integrate
.. //depot/projects/arm/src/sys/vm/vm_glue.c#4 integrate
.. //depot/projects/arm/src/sys/vm/vm_map.c#7 integrate
.. //depot/projects/arm/src/sys/vm/vm_map.h#3 integrate
.. //depot/projects/arm/src/sys/vm/vm_meter.c#3 integrate
Differences ...
==== //depot/projects/arm/src/sys/Makefile#6 (text+ko) ====
@@ -1,4 +1,4 @@
-# $FreeBSD: src/sys/Makefile,v 1.35 2006/03/17 18:54:34 ru Exp $
+# $FreeBSD: src/sys/Makefile,v 1.36 2006/05/29 19:29:41 maxim Exp $
.include <bsd.own.mk>
@@ -11,10 +11,10 @@
# Directories to include in cscope name file and TAGS.
CSCOPEDIRS= coda compat conf contrib crypto ddb dev fs gnu i4b isa \
- isofs kern libkern modules net netatalk netatm netgraph \
- netinet netinet6 netipx netkey netnatm netncp netsmb nfs \
- nfsclient nfs4client rpc pccard pci posix4 sys ufs vm \
- ${ARCHDIR}
+ isofs kern libkern modules net net80211 netatalk netatm \
+ netgraph netinet netinet6 netipx netkey netnatm netncp \
+ netsmb nfs nfsclient nfs4client rpc pccard pci posix4 sys \
+ ufs vm ${ARCHDIR}
ARCHDIR ?= ${MACHINE}
==== //depot/projects/arm/src/sys/amd64/amd64/busdma_machdep.c#8 (text+ko) ====
@@ -25,7 +25,7 @@
*/
#include <sys/cdefs.h>
-__FBSDID("$FreeBSD: src/sys/amd64/amd64/busdma_machdep.c,v 1.74 2006/05/03 04:14:17 scottl Exp $");
+__FBSDID("$FreeBSD: src/sys/amd64/amd64/busdma_machdep.c,v 1.75 2006/05/28 18:31:32 silby Exp $");
#include <sys/param.h>
#include <sys/systm.h>
@@ -492,7 +492,16 @@
}
}
+ /*
+ * XXX:
+ * (dmat->alignment < dmat->maxsize) is just a quick hack; the exact
+ * alignment guarantees of malloc need to be nailed down, and the
+ * code below should be rewritten to take that into account.
+ *
+ * In the meantime, we'll panic if malloc gets it wrong.
+ */
if ((dmat->maxsize <= PAGE_SIZE) &&
+ (dmat->alignment < dmat->maxsize) &&
dmat->lowaddr >= ptoa((vm_paddr_t)Maxmem)) {
*vaddr = malloc(dmat->maxsize, M_DEVBUF, mflags);
} else {
@@ -510,6 +519,8 @@
CTR4(KTR_BUSDMA, "%s: tag %p tag flags 0x%x error %d",
__func__, dmat, dmat->flags, ENOMEM);
return (ENOMEM);
+ } else if ((uintptr_t)*vaddr & (dmat->alignment - 1)) {
+ panic("bus_dmamem_alloc failed to align memory properly.");
}
CTR4(KTR_BUSDMA, "%s: tag %p tag flags 0x%x error %d",
__func__, dmat, dmat->flags, ENOMEM);
@@ -529,8 +540,9 @@
*/
if (map != NULL)
panic("bus_dmamem_free: Invalid map freed\n");
- if ((dmat->maxsize <= PAGE_SIZE)
- && dmat->lowaddr >= ptoa((vm_paddr_t)Maxmem))
+ if ((dmat->maxsize <= PAGE_SIZE) &&
+ (dmat->alignment < dmat->maxsize) &&
+ dmat->lowaddr >= ptoa((vm_paddr_t)Maxmem))
free(vaddr, M_DEVBUF);
else {
contigfree(vaddr, dmat->maxsize, M_DEVBUF);
==== //depot/projects/arm/src/sys/arm/arm/elf_trampoline.c#6 (text+ko) ====
@@ -23,7 +23,7 @@
*/
#include <sys/cdefs.h>
-__FBSDID("$FreeBSD: src/sys/arm/arm/elf_trampoline.c,v 1.5 2006/01/20 00:46:44 cognet Exp $");
+__FBSDID("$FreeBSD: src/sys/arm/arm/elf_trampoline.c,v 1.6 2006/05/30 21:13:47 cognet Exp $");
#include <machine/asm.h>
#include <sys/types.h>
#include <sys/elf32.h>
@@ -31,6 +31,7 @@
#include <sys/inflate.h>
#include <machine/elf.h>
#include <machine/pte.h>
+#include <machine/cpufunc.h>
#include <stdlib.h>
@@ -44,6 +45,24 @@
#define GZ_HEAD 0xa
+#ifdef CPU_ARM7TDMI
+#define cpu_idcache_wbinv_all arm7tdmi_cache_flushID
+#elif defined(CPU_ARM8)
+#define cpu_idcache_wbinv_all arm8_cache_purgeID
+#elif defined(CPU_ARM9)
+#define cpu_idcache_wbinv_all arm9_dcache_wbinv_all
+#elif defined(CPU_ARM10)
+#define cpu_idcache_wbinv_all arm10_idcache_wbinv_all
+#elif defined(CPU_SA110) || defined(CPU_SA1110) || defined(CPU_SA1100) || \
+ defined(CPU_IXP12X0)
+#define cpu_idcache_wbinv_all sa1_cache_purgeID
+#elif defined(CPU_XSCALE_80200) || defined(CPU_XSCALE_80321) || \
+ defined(CPU_XSCALE_PXA2X0) || defined(CPU_XSCALE_IXP425)
+#define cpu_idcache_wbinv_all xscale_cache_purgeID
+#endif
+int arm_pdcache_line_size = 32;
+int block_userspace_access = 0;
+
static __inline void *
memcpy(void *dst, const void *src, int len)
{
@@ -160,7 +179,7 @@
static int
input(void *dummy)
{
- if ((size_t)(i_input - orig_input) >= KERNSIZE) {
+ if ((size_t)(i_input - orig_input) >= KERNCOMPSIZE) {
return (GZ_EOF);
}
return *i_input++;
@@ -383,7 +402,7 @@
__start(void)
{
void *curaddr;
- void *dst;
+ void *dst, *altdst;
char *kernel = (char *)&kernel_start;
__asm __volatile("mov %0, pc" :
@@ -393,11 +412,22 @@
if (*kernel == 0x1f && kernel[1] == 0x8b) {
int pt_addr = (((int)&_end + KERNSIZE + 0x100) &
~(L1_TABLE_SIZE - 1)) + L1_TABLE_SIZE;
+
setup_pagetables(pt_addr, (vm_paddr_t)curaddr,
(vm_paddr_t)curaddr + 0x10000000);
/* Gzipped kernel */
dst = inflate_kernel(kernel, &_end);
kernel = (char *)&_end;
+ altdst = 4 + load_kernel((unsigned int)kernel,
+ (unsigned int)curaddr,
+ (unsigned int)&func_end , 0);
+ if (altdst > dst)
+ dst = altdst;
+ cpu_idcache_wbinv_all();
+ __asm __volatile("mrc p15, 0, %0, c1, c0, 0\n"
+ "bic %0, %0, #1\n" /* MMU_ENABLE */
+ "mcr p15, 0, %0, c1, c0, 0\n"
+ : "=r" (pt_addr));
} else
#endif
dst = 4 + load_kernel((unsigned int)&kernel_start,
==== //depot/projects/arm/src/sys/arm/arm/pmap.c#16 (text+ko) ====
@@ -147,7 +147,7 @@
#include "opt_vm.h"
#include <sys/cdefs.h>
-__FBSDID("$FreeBSD: src/sys/arm/arm/pmap.c,v 1.47 2006/04/22 22:51:32 cognet Exp $");
+__FBSDID("$FreeBSD: src/sys/arm/arm/pmap.c,v 1.49 2006/05/30 16:55:38 cognet Exp $");
#include <sys/param.h>
#include <sys/systm.h>
#include <sys/kernel.h>
@@ -3073,6 +3073,7 @@
if (!pmap_get_pde_pte(pmap, addr, &pde, &pte))
return (FALSE);
+ KASSERT(pte != NULL, ("Valid mapping but no pte ?"));
if (*pte == 0)
return (TRUE);
return (FALSE);
@@ -4480,7 +4481,7 @@
pa += PAGE_SIZE;
}
- return ((void *)(va));
+ return ((void *)(va + offset));
}
#define BOOTSTRAP_DEBUG
==== //depot/projects/arm/src/sys/arm/sa11x0/assabet_machdep.c#4 (text+ko) ====
@@ -47,7 +47,7 @@
#include <sys/cdefs.h>
-__FBSDID("$FreeBSD: src/sys/arm/sa11x0/assabet_machdep.c,v 1.13 2006/05/26 01:41:47 cognet Exp $");
+__FBSDID("$FreeBSD: src/sys/arm/sa11x0/assabet_machdep.c,v 1.15 2006/05/30 15:47:55 cognet Exp $");
#include "opt_md.h"
@@ -221,6 +221,7 @@
vm_size_t pt_size;
int i = 0;
uint32_t fake_preload[35];
+ uint32_t memsize = 32 * 1024 * 1024;
boothowto = RB_VERBOSE | RB_SINGLE;
cninit();
@@ -257,7 +258,7 @@
fake_preload[i] = 0;
preload_metadata = (void *)fake_preload;
- physmem =( 16 * 1024 * 1024) / PAGE_SIZE;
+ physmem = memsize / PAGE_SIZE;
pc = &__pcpu;
pcpu_init(pc, 0, sizeof(struct pcpu));
PCPU_SET(curthread, &thread0);
@@ -405,7 +406,7 @@
* After booting there are no gross reloations of the kernel thus
* this problem will not occur after initarm().
*/
-/* cpu_idcache_wbinv_all();*/
+ cpu_idcache_wbinv_all();
bootverbose = 1;
@@ -444,7 +445,7 @@
init_param1();
init_param2(physmem);
kdb_init();
- avail_end = 0xc0000000 + 0x02000000 - 1;
+ avail_end = 0xc0000000 + memsize - 1;
return ((void *)(kernelstack.pv_va + USPACE_SVC_STACK_TOP -
sizeof(struct pcb)));
}
==== //depot/projects/arm/src/sys/arm/sa11x0/sa11x0_var.h#3 (text+ko) ====
@@ -34,7 +34,7 @@
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
* SUCH DAMAGE.
*
- * $FreeBSD: src/sys/arm/sa11x0/sa11x0_var.h,v 1.2 2005/09/25 21:06:50 cognet Exp $
+ * $FreeBSD: src/sys/arm/sa11x0/sa11x0_var.h,v 1.3 2006/05/29 19:32:32 cognet Exp $
*
*/
@@ -64,15 +64,6 @@
typedef void *sa11x0_chipset_tag_t;
extern struct bus_space sa11x0_bs_tag;
-struct sa11x0_attach_args {
- sa11x0_chipset_tag_t sa_sc;
- bus_space_tag_t sa_iot; /* Bus tag */
- bus_addr_t sa_addr; /* i/o address */
- bus_size_t sa_size;
-
- int sa_intr;
- int sa_gpio;
-};
void *sa11x0_intr_establish(sa11x0_chipset_tag_t, int, int, int,
int (*)(void *), void *);
==== //depot/projects/arm/src/sys/cam/cam_xpt.c#5 (text+ko) ====
@@ -28,7 +28,7 @@
*/
#include <sys/cdefs.h>
-__FBSDID("$FreeBSD: src/sys/cam/cam_xpt.c,v 1.158 2006/01/20 19:21:38 mjacob Exp $");
+__FBSDID("$FreeBSD: src/sys/cam/cam_xpt.c,v 1.159 2006/05/30 22:44:00 mjacob Exp $");
#include <sys/param.h>
#include <sys/bus.h>
@@ -3502,8 +3502,7 @@
if ((crs->release_flags & RELSIM_ADJUST_OPENINGS) != 0) {
- if ((dev->inq_data.flags & SID_CmdQue) != 0) {
-
+ if (INQ_DATA_TQ_ENABLED(&dev->inq_data)) {
/* Don't ever go below one opening */
if (crs->openings > 0) {
xpt_dev_ccbq_resize(crs->ccb_h.path,
@@ -5991,7 +5990,7 @@
#ifdef CAM_NEW_TRAN_CODE
xpt_devise_transport(path);
#endif /* CAM_NEW_TRAN_CODE */
- if ((inq_buf->flags & SID_CmdQue) != 0)
+ if (INQ_DATA_TQ_ENABLED(inq_buf))
softc->action = PROBE_MODE_SENSE;
else
softc->action = PROBE_SERIAL_NUM;
@@ -6416,7 +6415,7 @@
/* SCSI specific sanity checking */
if ((cpi.hba_inquiry & PI_TAG_ABLE) == 0
- || (inq_data->flags & SID_CmdQue) == 0
+ || (INQ_DATA_TQ_ENABLED(inq_data)) == 0
|| (device->queue_flags & SCP_QUEUE_DQUE) != 0
|| (device->quirk->mintags == 0)) {
/*
@@ -6712,7 +6711,7 @@
}
if ((cpi.hba_inquiry & PI_TAG_ABLE) == 0
- || (inq_data->flags & SID_CmdQue) == 0
+ || (INQ_DATA_TQ_ENABLED(inq_data)) == 0
|| (device->queue_flags & SCP_QUEUE_DQUE) != 0
|| (device->quirk->mintags == 0)) {
/*
==== //depot/projects/arm/src/sys/cam/scsi/scsi_all.h#2 (text+ko) ====
@@ -14,7 +14,7 @@
*
* Ported to run under 386BSD by Julian Elischer (julian at tfs.com) Sept 1992
*
- * $FreeBSD: src/sys/cam/scsi/scsi_all.h,v 1.24 2005/01/05 22:34:34 imp Exp $
+ * $FreeBSD: src/sys/cam/scsi/scsi_all.h,v 1.25 2006/05/30 22:44:00 mjacob Exp $
*/
/*
@@ -599,7 +599,19 @@
#define SID_AENC 0x80
#define SID_TrmIOP 0x40
u_int8_t additional_length;
- u_int8_t reserved[2];
+ u_int8_t reserved;
+ u_int8_t spc2_flags;
+#define SPC2_SID_MChngr 0x08
+#define SPC2_SID_MultiP 0x10
+#define SPC2_SID_EncServ 0x40
+#define SPC2_SID_BQueue 0x80
+
+#define INQ_DATA_TQ_ENABLED(iqd) \
+ ((SID_ANSI_REV(iqd) < SCSI_REV_SPC2)? ((iqd)->flags & SID_CmdQue) : \
+ (((iqd)->flags & SID_CmdQue) && !((iqd)->spc2_flags & SPC2_SID_BQueue)) || \
+ (!((iqd)->flags & SID_CmdQue) && ((iqd)->spc2_flags & SPC2_SID_BQueue)))
+
+
u_int8_t flags;
#define SID_SftRe 0x01
#define SID_CmdQue 0x02
==== //depot/projects/arm/src/sys/conf/Makefile.arm#11 (text+ko) ====
@@ -1,7 +1,7 @@
# Makefile.arm -- with config changes.
# Copyright 1990 W. Jolitz
# from: @(#)Makefile.i386 7.1 5/10/91
-# $FreeBSD: src/sys/conf/Makefile.arm,v 1.26 2006/03/27 00:32:46 cognet Exp $
+# $FreeBSD: src/sys/conf/Makefile.arm,v 1.27 2006/05/30 21:13:47 cognet Exp $
#
# Makefile for FreeBSD
#
@@ -59,6 +59,10 @@
${KERNEL_KO}.bin; \
rm ${FULLKERNEL}.noheader
+FILES_CPU_FUNC = $S/$M/$M/cpufunc_asm_arm7tdmi.S \
+ $S/$M/$M/cpufunc_asm_arm8.S $S/$M/$M/cpufunc_asm_arm9.S \
+ $S/$M/$M/cpufunc_asm_sa1.S $S/$M/$M/cpufunc_asm_arm10.S \
+ $S/$M/$M/cpufunc_asm_xscale.S
trampoline: ${KERNEL_KO}.tramp
${KERNEL_KO}.tramp: ${KERNEL_KO}
echo "#define KERNNAME \"${KERNEL_KO}.tmp\"" >opt_kernname.h
@@ -85,10 +89,10 @@
${CC} -O2 -DKZIP -I. -c $S/kern/inflate.c -o inflate-tramp.o
${CC} -O -nostdlib -I. -Xlinker -T -Xlinker ldscript.$M.tramp \
-DKZIP $S/$M/$M/elf_trampoline.c inflate-tramp.o $S/$M/$M/inckern.S \
- -o ${KERNEL_KO}.gz.tramp
+ ${FILES_CPU_FUNC} -o ${KERNEL_KO}.gz.tramp
${CC} -O -nostdlib -I. -Xlinker -T -Xlinker ldscript.$M.tramp.noheader \
-DKZIP $S/$M/$M/elf_trampoline.c inflate-tramp.o $S/$M/$M/inckern.S \
- -o ${KERNEL_KO}.tramp.noheader
+ ${FILES_CPU_FUNC} -o ${KERNEL_KO}.tramp.noheader
${OBJCOPY} -S -O binary ${KERNEL_KO}.tramp.noheader \
${KERNEL_KO}.gz.tramp.bin
rm ${KERNEL_KO}.tmp.gz ${KERNEL_KO}.tramp.noheader opt_kernname.h \
==== //depot/projects/arm/src/sys/conf/kern.mk#5 (text+ko) ====
@@ -1,4 +1,4 @@
-# $FreeBSD: src/sys/conf/kern.mk,v 1.47 2006/05/11 22:25:26 jhb Exp $
+# $FreeBSD: src/sys/conf/kern.mk,v 1.48 2006/05/30 19:18:01 ru Exp $
#
# Warning flags for compiling the kernel and components of the kernel.
@@ -12,7 +12,10 @@
.else
CWARNFLAGS?= -Wall -Wredundant-decls -Wnested-externs -Wstrict-prototypes \
-Wmissing-prototypes -Wpointer-arith -Winline -Wcast-qual \
- -fformat-extensions -std=c99
+ ${_wundef} -fformat-extensions -std=c99
+.if !defined(NO_UNDEF)
+_wundef= -Wundef
+.endif
.endif
#
# The following flags are next up for working on:
==== //depot/projects/arm/src/sys/dev/bfe/if_bfe.c#7 (text+ko) ====
@@ -26,7 +26,7 @@
#include <sys/cdefs.h>
-__FBSDID("$FreeBSD: src/sys/dev/bfe/if_bfe.c,v 1.38 2006/05/16 14:36:23 phk Exp $");
+__FBSDID("$FreeBSD: src/sys/dev/bfe/if_bfe.c,v 1.40 2006/05/28 20:35:39 silby Exp $");
#include <sys/param.h>
#include <sys/systm.h>
@@ -201,7 +201,7 @@
* greater than 1GB.
*/
error = bus_dma_tag_create(NULL, /* parent */
- PAGE_SIZE, 0, /* alignment, boundary */
+ 4096, 0, /* alignment, boundary */
0x3FFFFFFF, /* lowaddr */
BUS_SPACE_MAXADDR, /* highaddr */
NULL, NULL, /* filter, filterarg */
@@ -214,7 +214,7 @@
/* tag for TX ring */
error = bus_dma_tag_create(sc->bfe_parent_tag,
- 1, 0,
+ 4096, 0,
BUS_SPACE_MAXADDR,
BUS_SPACE_MAXADDR,
NULL, NULL,
@@ -232,7 +232,7 @@
/* tag for RX ring */
error = bus_dma_tag_create(sc->bfe_parent_tag,
- 1, 0,
+ 4096, 0,
BUS_SPACE_MAXADDR,
BUS_SPACE_MAXADDR,
NULL, NULL,
@@ -1212,6 +1212,21 @@
}
if(istat & BFE_ISTAT_ERRORS) {
+
+ if (istat & BFE_ISTAT_DSCE) {
+ printf("if_bfe Descriptor Error\n");
+ bfe_stop(sc);
+ BFE_UNLOCK(sc);
+ return;
+ }
+
+ if (istat & BFE_ISTAT_DPE) {
+ printf("if_bfe Descriptor Protocol Error\n");
+ bfe_stop(sc);
+ BFE_UNLOCK(sc);
+ return;
+ }
+
flag = CSR_READ_4(sc, BFE_DMATX_STAT);
if(flag & BFE_STAT_EMASK)
ifp->if_oerrors++;
==== //depot/projects/arm/src/sys/dev/bfe/if_bfereg.h#4 (text+ko) ====
@@ -22,7 +22,7 @@
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
* SUCH DAMAGE.
*/
-/* $FreeBSD: src/sys/dev/bfe/if_bfereg.h,v 1.9 2006/05/11 17:39:06 silby Exp $ */
+/* $FreeBSD: src/sys/dev/bfe/if_bfereg.h,v 1.10 2006/05/28 18:44:39 silby Exp $ */
#ifndef _BFE_H
#define _BFE_H
@@ -427,8 +427,8 @@
#define BFE_RX_RING_SIZE 512
#define BFE_TX_RING_SIZE 512
#define BFE_LINK_DOWN 5
-#define BFE_TX_LIST_CNT 511
-#define BFE_RX_LIST_CNT 511
+#define BFE_TX_LIST_CNT 128
+#define BFE_RX_LIST_CNT 128
#define BFE_TX_LIST_SIZE BFE_TX_LIST_CNT * sizeof(struct bfe_desc)
#define BFE_RX_LIST_SIZE BFE_RX_LIST_CNT * sizeof(struct bfe_desc)
#define BFE_RX_OFFSET 30
==== //depot/projects/arm/src/sys/dev/ciss/ciss.c#8 (text+ko) ====
@@ -24,7 +24,7 @@
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
* SUCH DAMAGE.
*
- * $FreeBSD: src/sys/dev/ciss/ciss.c,v 1.70 2006/05/16 14:36:23 phk Exp $
+ * $FreeBSD: src/sys/dev/ciss/ciss.c,v 1.71 2006/05/30 06:42:02 ps Exp $
*/
/*
@@ -2261,8 +2261,8 @@
/*
* Get a request.
*/
- if ((error = ciss_get_request(sc, &cr)) != 0)
- goto out;
+ while (ciss_get_request(sc, &cr) != 0)
+ tsleep(sc, PPAUSE, "cissREQ", hz);
cc = CISS_FIND_COMMAND(cr);
/*
==== //depot/projects/arm/src/sys/dev/isp/isp_freebsd.c#10 (text+ko) ====
@@ -27,7 +27,7 @@
*/
#include <sys/cdefs.h>
-__FBSDID("$FreeBSD: src/sys/dev/isp/isp_freebsd.c,v 1.116 2006/05/22 07:07:30 mjacob Exp $");
+__FBSDID("$FreeBSD: src/sys/dev/isp/isp_freebsd.c,v 1.117 2006/05/30 17:43:04 mjacob Exp $");
#include <dev/isp/isp_freebsd.h>
#include <sys/unistd.h>
@@ -1899,7 +1899,7 @@
inot->message_args[0] = MSG_ABORT_TAG;
inot->message_args[1] = inp->in_seqid & 0xff;
inot->message_args[2] = (inp->in_seqid >> 8) & 0xff;
- inot->ccb_h.status = CAM_MESSAGE_RECV|CAM_DEV_QFRZN;
+ inot->ccb_h.status = CAM_MESSAGE_RECV;
xpt_done((union ccb *)inot);
}
break;
==== //depot/projects/arm/src/sys/dev/mpt/mpt.c#13 (text+ko) ====
@@ -57,6 +57,10 @@
*
* Support from Chris Ellsworth in order to make SAS adapters work
* is gratefully acknowledged.
+ *
+ *
+ * Support from LSI-Logic has also gone a great deal toward making this a
+ * workable subsystem and is gratefully acknowledged.
*/
/*-
* Copyright (c) 2004, Avid Technology, Inc. and its contributors.
@@ -92,7 +96,7 @@
*/
#include <sys/cdefs.h>
-__FBSDID("$FreeBSD: src/sys/dev/mpt/mpt.c,v 1.29 2006/05/27 17:26:57 mjacob Exp $");
+__FBSDID("$FreeBSD: src/sys/dev/mpt/mpt.c,v 1.30 2006/05/29 20:34:28 mjacob Exp $");
#include <dev/mpt/mpt.h>
#include <dev/mpt/mpt_cam.h> /* XXX For static handler registration */
==== //depot/projects/arm/src/sys/dev/mpt/mpt.h#12 (text+ko) ====
@@ -1,4 +1,4 @@
-/* $FreeBSD: src/sys/dev/mpt/mpt.h,v 1.20 2006/05/27 17:26:57 mjacob Exp $ */
+/* $FreeBSD: src/sys/dev/mpt/mpt.h,v 1.22 2006/05/29 20:34:28 mjacob Exp $ */
/*-
* Generic defines for LSI '909 FC adapters.
* FreeBSD Version.
@@ -58,6 +58,10 @@
*
* Support from Chris Ellsworth in order to make SAS adapters work
* is gratefully acknowledged.
+ *
+ *
+ * Support from LSI-Logic has also gone a great deal toward making this a
+ * workable subsystem and is gratefully acknowledged.
*/
/*
* Copyright (c) 2004, Avid Technology, Inc. and its contributors.
@@ -942,6 +946,7 @@
MPT_PRT_ERROR,
MPT_PRT_WARN,
MPT_PRT_INFO,
+ MPT_PRT_NEGOTIATION,
MPT_PRT_DEBUG,
MPT_PRT_DEBUG1,
MPT_PRT_DEBUG2,
==== //depot/projects/arm/src/sys/dev/mpt/mpt_cam.c#15 (text+ko) ====
@@ -57,6 +57,9 @@
*
* Support from Chris Ellsworth in order to make SAS adapters work
* is gratefully acknowledged.
+ *
+ * Support from LSI-Logic has also gone a great deal toward making this a
+ * workable subsystem and is gratefully acknowledged.
*/
/*-
* Copyright (c) 2004, Avid Technology, Inc. and its contributors.
@@ -91,7 +94,7 @@
* OWNER OR CONTRIBUTOR IS ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/
#include <sys/cdefs.h>
-__FBSDID("$FreeBSD: src/sys/dev/mpt/mpt_cam.c,v 1.19 2006/05/27 17:26:57 mjacob Exp $");
+__FBSDID("$FreeBSD: src/sys/dev/mpt/mpt_cam.c,v 1.21 2006/05/29 20:34:28 mjacob Exp $");
#include <dev/mpt/mpt.h>
#include <dev/mpt/mpt_cam.h>
@@ -647,7 +650,7 @@
static int
mpt_set_initial_config_spi(struct mpt_softc *mpt)
{
- int i, pp1val = ((1 << mpt->mpt_ini_id) << 16) | mpt->mpt_ini_id;
+ int i, j, pp1val = ((1 << mpt->mpt_ini_id) << 16) | mpt->mpt_ini_id;
int error;
mpt->mpt_disc_enable = 0xff;
@@ -682,12 +685,17 @@
* The purpose of this exercise is to get
* all targets back to async/narrow.
*
- * We skip this if the BIOS has already negotiated speeds with targets.
+ * We skip this step if the BIOS has already negotiated
+ * speeds with the targets and does not require us to
+ * do Domain Validation.
*/
i = mpt->mpt_port_page2.PortSettings &
MPI_SCSIPORTPAGE2_PORT_MASK_NEGO_MASTER_SETTINGS;
- if (i == MPI_SCSIPORTPAGE2_PORT_ALL_MASTER_SETTINGS) {
- mpt_lprt(mpt, /* MPT_PRT_INFO */ MPT_PRT_ALWAYS,
+ j = mpt->mpt_port_page2.PortFlags &
+ MPI_SCSIPORTPAGE2_PORT_FLAGS_DV_MASK;
+ if (i == MPI_SCSIPORTPAGE2_PORT_ALL_MASTER_SETTINGS &&
+ j == MPI_SCSIPORTPAGE2_PORT_FLAGS_OFF_DV) {
+ mpt_lprt(mpt, MPT_PRT_NEGOTIATION,
"honoring BIOS transfer negotiations\n");
return (0);
}
@@ -2782,7 +2790,7 @@
uint8_t dval;
u_int period;
u_int offset;
- int m;
+ int i, j;
cts = &ccb->cts;
if (!IS_CURRENT_SETTINGS(cts)) {
@@ -2790,27 +2798,37 @@
mpt_set_ccb_status(ccb, CAM_REQ_INVALID);
break;
}
+
if (mpt->is_fc || mpt->is_sas) {
mpt_set_ccb_status(ccb, CAM_REQ_CMP);
break;
}
- if (mpt->ioc_page2 && mpt->ioc_page2->MaxPhysDisks != 0 &&
- raid_passthru == 0) {
+ /*
+ * Skip attempting settings on RAID volume disks.
+ * Other devices on the bus get the normal treatment.
+ */
+ if (mpt->phydisk_sim && raid_passthru == 0 &&
+ mpt_is_raid_volume(mpt, tgt) != 0) {
+ mpt_lprt(mpt, MPT_PRT_ALWAYS,
+ "skipping transfer settings for RAID volumes\n");
mpt_set_ccb_status(ccb, CAM_REQ_CMP);
break;
}
- m = mpt->mpt_port_page2.PortSettings;
- if ((m & MPI_SCSIPORTPAGE2_PORT_MASK_NEGO_MASTER_SETTINGS) ==
- MPI_SCSIPORTPAGE2_PORT_ALL_MASTER_SETTINGS) {
-mpt_prt(mpt, "master settings\n");
-if (raid_passthru == 0) {
+ i = mpt->mpt_port_page2.PortSettings &
+ MPI_SCSIPORTPAGE2_PORT_MASK_NEGO_MASTER_SETTINGS;
+ j = mpt->mpt_port_page2.PortFlags &
+ MPI_SCSIPORTPAGE2_PORT_FLAGS_DV_MASK;
+ if (i == MPI_SCSIPORTPAGE2_PORT_ALL_MASTER_SETTINGS &&
+ j == MPI_SCSIPORTPAGE2_PORT_FLAGS_OFF_DV) {
+ mpt_lprt(mpt, MPT_PRT_ALWAYS,
+ "honoring BIOS transfer negotiations\n");
mpt_set_ccb_status(ccb, CAM_REQ_CMP);
break;
-}
}
+
dval = 0;
period = 0;
offset = 0;
@@ -2846,24 +2864,27 @@
spi = &cts->xport_specific.spi;
if ((spi->valid & CTS_SPI_VALID_DISC) != 0) {
- if ((spi->flags & CTS_SPI_FLAGS_DISC_ENB) != 0)
+ if ((spi->flags & CTS_SPI_FLAGS_DISC_ENB) != 0) {
dval |= DP_DISC_ENABLE;
- else
+ } else {
dval |= DP_DISC_DISABL;
+ }
}
if ((scsi->valid & CTS_SCSI_VALID_TQ) != 0) {
- if ((scsi->flags & CTS_SCSI_FLAGS_TAG_ENB) != 0)
+ if ((scsi->flags & CTS_SCSI_FLAGS_TAG_ENB) != 0) {
dval |= DP_TQING_ENABLE;
- else
+ } else {
dval |= DP_TQING_DISABL;
+ }
}
if ((spi->valid & CTS_SPI_VALID_BUS_WIDTH) != 0) {
- if (spi->bus_width == MSG_EXT_WDTR_BUS_16_BIT)
+ if (spi->bus_width == MSG_EXT_WDTR_BUS_16_BIT) {
dval |= DP_WIDE;
- else
+ } else {
dval |= DP_NARROW;
+ }
}
if ((spi->valid & CTS_SPI_VALID_SYNC_OFFSET) &&
@@ -2874,6 +2895,9 @@
offset = spi->sync_offset;
}
#endif
+ mpt_lprt(mpt, MPT_PRT_NEGOTIATION,
+ "mpt_action: SET tgt %d flags %x period %x off %x\n",
+ tgt, dval, period, offset);
CAMLOCK_2_MPTLOCK(mpt);
if (dval & DP_DISC_ENABLE) {
mpt->mpt_disc_enable |= (1 << tgt);
@@ -2891,10 +2915,12 @@
if (dval & DP_SYNC) {
mpt_setsync(mpt, tgt, period, offset);
}
+ if (mpt_update_spi_config(mpt, tgt)) {
+ MPTLOCK_2_CAMLOCK(mpt);
+ mpt_set_ccb_status(ccb, CAM_REQ_CMP_ERR);
+ break;
+ }
MPTLOCK_2_CAMLOCK(mpt);
- mpt_lprt(mpt, MPT_PRT_DEBUG,
- "SET tgt %d flags %x period %x off %x\n",
- tgt, dval, period, offset);
mpt_set_ccb_status(ccb, CAM_REQ_CMP);
break;
}
@@ -2952,11 +2978,9 @@
sas->valid = CTS_SAS_VALID_SPEED;
sas->bitrate = 300000; /* XXX: Default 3Gbps */
#endif
- } else {
- if (mpt_get_spi_settings(mpt, cts) != 0) {
- mpt_set_ccb_status(ccb, CAM_REQ_CMP_ERR);
- break;
- }
+ } else if (mpt_get_spi_settings(mpt, cts) != 0) {
+ mpt_set_ccb_status(ccb, CAM_REQ_CMP_ERR);
+ break;
}
mpt_set_ccb_status(ccb, CAM_REQ_CMP);
break;
@@ -3005,10 +3029,17 @@
cpi->base_transfer_speed = 3300;
cpi->hba_inquiry = PI_SDTR_ABLE|PI_TAG_ABLE|PI_WIDE_16;
}
+
+ /*
+ * We give our fake RAID passhtru bus a width that is MaxVolumes
+ * wide, restrict it to one lun and have it *not* be a bus
+ * that can have a SCSI bus reset.
+ */
if (raid_passthru) {
+ cpi->max_target = mpt->ioc_page2->MaxPhysDisks - 1;
+ cpi->initiator_id = cpi->max_target+1;
cpi->max_lun = 0;
cpi->hba_misc = PIM_NOBUSRESET;
- cpi->initiator_id = cpi->max_target+1;
}
if ((mpt->role & MPT_ROLE_INITIATOR) == 0) {
@@ -3109,30 +3140,12 @@
uint8_t dval, pval, oval;
int rv;
- /*
- * Check to see if this is an Integrated Raid card.
- *
- * If it is, and we're the RAID bus side, both current
- * and goal settings are synthesized as we only look at
- * or change actual settings for the physical disk side.
- *
- * NB: In the future we can just do this on the blacked out
- * NB: portion that the RAID volume covers- there may be
- * NB: other entities on this bus as well.
- */
-
- if (mpt->phydisk_sim) {
- if (xpt_path_sim(cts->ccb_h.path) != mpt->phydisk_sim) {
- dval = DP_WIDE|DP_DISC|DP_TQING;
- oval = (mpt->mpt_port_page0.Capabilities >> 16);
- pval = (mpt->mpt_port_page0.Capabilities >> 8);
- tgt = cts->ccb_h.target_id;
- goto skip;
+ if (xpt_path_sim(cts->ccb_h.path) == mpt->phydisk_sim) {
+ if (mpt_map_physdisk(mpt, (union ccb *)cts, &tgt)) {
+ return (-1);
}
- }
-
- if (mpt_map_physdisk(mpt, (union ccb *)cts, &tgt) != 0) {
- return (-1);
+ } else {
+ tgt = cts->ccb_h.target_id;
}
/*
@@ -3156,10 +3169,6 @@
return (rv);
}
MPTLOCK_2_CAMLOCK(mpt);
-
- mpt_lprt(mpt, MPT_PRT_DEBUG,
- "mpt_get_spi: SPI Tgt %d Page 0: NParms %x Info %x\n",
- tgt, tmp.NegotiatedParameters, tmp.Information);
if (tmp.NegotiatedParameters & MPI_SCSIDEVPAGE0_NP_WIDE) {
dval |= DP_WIDE;
}
@@ -3181,7 +3190,6 @@
oval = (mpt->mpt_port_page0.Capabilities >> 16);
pval = (mpt->mpt_port_page0.Capabilities >> 8);
}
- skip:
#ifndef CAM_NEW_TRAN_CODE
cts->flags &= ~(CCB_TRANS_DISC_ENB|CCB_TRANS_TAG_ENB);
if (dval & DP_DISC_ENABLE) {
@@ -3236,9 +3244,9 @@
scsi->valid = 0;
}
#endif
- mpt_lprt(mpt, MPT_PRT_DEBUG,
- "mpt_get_spi: tgt %d %s settings flags %x period %x offset %x\n",
- tgt, IS_CURRENT_SETTINGS(cts)? "ACTIVE" : "NVRAM",
+ mpt_lprt(mpt, MPT_PRT_NEGOTIATION,
+ "mpt_get_spi_settings: tgt %d %s settings flags 0x%x period 0x%x "
+ "offset %x\n", tgt, IS_CURRENT_SETTINGS(cts)? "ACTIVE" : "NVRAM ",
dval, pval, oval);
return (0);
}
@@ -3246,27 +3254,27 @@
static void
mpt_setwidth(struct mpt_softc *mpt, int tgt, int onoff)
{
- PTR_CONFIG_PAGE_SCSI_DEVICE_1 tmp;
+ PTR_CONFIG_PAGE_SCSI_DEVICE_1 ptr;
- tmp = &mpt->mpt_dev_page1[tgt];
+ ptr = &mpt->mpt_dev_page1[tgt];
if (onoff) {
- tmp->RequestedParameters |= MPI_SCSIDEVPAGE1_RP_WIDE;
+ ptr->RequestedParameters |= MPI_SCSIDEVPAGE1_RP_WIDE;
} else {
- tmp->RequestedParameters &= ~MPI_SCSIDEVPAGE1_RP_WIDE;
+ ptr->RequestedParameters &= ~MPI_SCSIDEVPAGE1_RP_WIDE;
}
}
static void
mpt_setsync(struct mpt_softc *mpt, int tgt, int period, int offset)
{
- PTR_CONFIG_PAGE_SCSI_DEVICE_1 tmp;
+ PTR_CONFIG_PAGE_SCSI_DEVICE_1 ptr;
- tmp = &mpt->mpt_dev_page1[tgt];
- tmp->RequestedParameters &= ~MPI_SCSIDEVPAGE1_RP_MIN_SYNC_PERIOD_MASK;
- tmp->RequestedParameters &= ~MPI_SCSIDEVPAGE1_RP_MAX_SYNC_OFFSET_MASK;
- tmp->RequestedParameters &= ~MPI_SCSIDEVPAGE1_RP_DT;
- tmp->RequestedParameters &= ~MPI_SCSIDEVPAGE1_RP_QAS;
- tmp->RequestedParameters &= ~MPI_SCSIDEVPAGE1_RP_IU;
+ ptr = &mpt->mpt_dev_page1[tgt];
+ ptr->RequestedParameters &= ~MPI_SCSIDEVPAGE1_RP_MIN_SYNC_PERIOD_MASK;
+ ptr->RequestedParameters &= ~MPI_SCSIDEVPAGE1_RP_MAX_SYNC_OFFSET_MASK;
+ ptr->RequestedParameters &= ~MPI_SCSIDEVPAGE1_RP_DT;
+ ptr->RequestedParameters &= ~MPI_SCSIDEVPAGE1_RP_QAS;
+ ptr->RequestedParameters &= ~MPI_SCSIDEVPAGE1_RP_IU;
/*
* XXX: For now, we're ignoring specific settings
@@ -3284,7 +3292,7 @@
np |= MPI_SCSIDEVPAGE1_RP_DT;
}
np |= (factor << 8) | (offset << 16);
- tmp->RequestedParameters |= np;
>>> TRUNCATED FOR MAIL (1000 lines) <<<
More information about the p4-projects
mailing list