[head tinderbox] failure on i386/i386

Garrett Cooper gcooper at FreeBSD.org
Sun Nov 14 01:46:54 UTC 2010


On Sat, Nov 13, 2010 at 3:38 PM, FreeBSD Tinderbox
<tinderbox at freebsd.org> wrote:
> TB --- 2010-11-13 21:00:00 - tinderbox 2.6 running on freebsd-current.sentex.ca
> TB --- 2010-11-13 21:00:00 - starting HEAD tinderbox run for i386/i386
> TB --- 2010-11-13 21:00:00 - cleaning the object tree
> TB --- 2010-11-13 21:00:24 - cvsupping the source tree
> TB --- 2010-11-13 21:00:24 - /usr/bin/csup -z -r 3 -g -L 1 -h cvsup.sentex.ca /tinderbox/HEAD/i386/i386/supfile
> TB --- 2010-11-13 21:00:51 - building world
> TB --- 2010-11-13 21:00:51 - MAKEOBJDIRPREFIX=/obj
> TB --- 2010-11-13 21:00:51 - PATH=/usr/bin:/usr/sbin:/bin:/sbin
> TB --- 2010-11-13 21:00:51 - TARGET=i386
> TB --- 2010-11-13 21:00:51 - TARGET_ARCH=i386
> TB --- 2010-11-13 21:00:51 - TZ=UTC
> TB --- 2010-11-13 21:00:51 - __MAKE_CONF=/dev/null
> TB --- 2010-11-13 21:00:51 - cd /src
> TB --- 2010-11-13 21:00:51 - /usr/bin/make -B buildworld
>>>> World build started on Sat Nov 13 21:00:51 UTC 2010
>>>> Rebuilding the temporary build tree
>>>> stage 1.1: legacy release compatibility shims
>>>> stage 1.2: bootstrap tools
>>>> stage 2.1: cleaning up the object tree
>>>> stage 2.2: rebuilding the object tree
>>>> stage 2.3: build tools
>>>> stage 3: cross tools
>>>> stage 4.1: building includes
>>>> stage 4.2: building libraries
>>>> stage 4.3: make dependencies
>>>> stage 4.4: building everything
>>>> World build completed on Sat Nov 13 22:46:32 UTC 2010
> TB --- 2010-11-13 22:46:32 - generating LINT kernel config
> TB --- 2010-11-13 22:46:32 - cd /src/sys/i386/conf
> TB --- 2010-11-13 22:46:32 - /usr/bin/make -B LINT
> TB --- 2010-11-13 22:46:32 - building LINT kernel
> TB --- 2010-11-13 22:46:32 - MAKEOBJDIRPREFIX=/obj
> TB --- 2010-11-13 22:46:32 - PATH=/usr/bin:/usr/sbin:/bin:/sbin
> TB --- 2010-11-13 22:46:32 - TARGET=i386
> TB --- 2010-11-13 22:46:32 - TARGET_ARCH=i386
> TB --- 2010-11-13 22:46:32 - TZ=UTC
> TB --- 2010-11-13 22:46:32 - __MAKE_CONF=/dev/null
> TB --- 2010-11-13 22:46:32 - cd /src
> TB --- 2010-11-13 22:46:32 - /usr/bin/make -B buildkernel KERNCONF=LINT
>>>> Kernel build for LINT started on Sat Nov 13 22:46:32 UTC 2010
>>>> stage 1: configuring the kernel
>>>> stage 2.1: cleaning up the object tree
>>>> stage 2.2: rebuilding the object tree
>>>> stage 2.3: build tools
>>>> stage 3.1: making dependencies
>>>> stage 3.2: building everything
>>>> Kernel build for LINT completed on Sat Nov 13 23:13:00 UTC 2010
> TB --- 2010-11-13 23:13:00 - building GENERIC kernel
> TB --- 2010-11-13 23:13:00 - MAKEOBJDIRPREFIX=/obj
> TB --- 2010-11-13 23:13:00 - PATH=/usr/bin:/usr/sbin:/bin:/sbin
> TB --- 2010-11-13 23:13:00 - TARGET=i386
> TB --- 2010-11-13 23:13:00 - TARGET_ARCH=i386
> TB --- 2010-11-13 23:13:00 - TZ=UTC
> TB --- 2010-11-13 23:13:00 - __MAKE_CONF=/dev/null
> TB --- 2010-11-13 23:13:00 - cd /src
> TB --- 2010-11-13 23:13:00 - /usr/bin/make -B buildkernel KERNCONF=GENERIC
>>>> Kernel build for GENERIC started on Sat Nov 13 23:13:00 UTC 2010
>>>> stage 1: configuring the kernel
>>>> stage 2.1: cleaning up the object tree
>>>> stage 2.2: rebuilding the object tree
>>>> stage 2.3: build tools
>>>> stage 3.1: making dependencies
>>>> stage 3.2: building everything
>>>> Kernel build for GENERIC completed on Sat Nov 13 23:33:39 UTC 2010
> TB --- 2010-11-13 23:33:39 - WARNING: no kernel config for GENERIC64
> TB --- 2010-11-13 23:33:39 - building PAE kernel
> TB --- 2010-11-13 23:33:39 - MAKEOBJDIRPREFIX=/obj
> TB --- 2010-11-13 23:33:39 - PATH=/usr/bin:/usr/sbin:/bin:/sbin
> TB --- 2010-11-13 23:33:39 - TARGET=i386
> TB --- 2010-11-13 23:33:39 - TARGET_ARCH=i386
> TB --- 2010-11-13 23:33:39 - TZ=UTC
> TB --- 2010-11-13 23:33:39 - __MAKE_CONF=/dev/null
> TB --- 2010-11-13 23:33:39 - cd /src
> TB --- 2010-11-13 23:33:39 - /usr/bin/make -B buildkernel KERNCONF=PAE
>>>> Kernel build for PAE started on Sat Nov 13 23:33:40 UTC 2010
>>>> stage 1: configuring the kernel
>>>> stage 2.1: cleaning up the object tree
>>>> stage 2.2: rebuilding the object tree
>>>> stage 2.3: build tools
>>>> stage 3.1: making dependencies
>>>> stage 3.2: building everything
> [...]
> cc -c -O -pipe  -std=c99 -g -Wall -Wredundant-decls -Wnested-externs -Wstrict-prototypes  -Wmissing-prototypes -Wpointer-arith -Winline -Wcast-qual  -Wundef -Wno-pointer-sign -fformat-extensions -nostdinc  -I. -I/src/sys -I/src/sys/contrib/altq -D_KERNEL -DHAVE_KERNEL_OPTION_HEADERS -include opt_global.h -fno-common -finline-limit=8000 --param inline-unit-growth=100 --param large-function-growth=1000  -mno-align-long-strings -mpreferred-stack-boundary=2 -mno-mmx -mno-3dnow -mno-sse -mno-sse2 -mno-sse3 -ffreestanding -fstack-protector -Werror  /src/sys/xdr/xdr_mbuf.c
> cc -c -O -pipe  -std=c99 -g -Wall -Wredundant-decls -Wnested-externs -Wstrict-prototypes  -Wmissing-prototypes -Wpointer-arith -Winline -Wcast-qual  -Wundef -Wno-pointer-sign -fformat-extensions -nostdinc  -I. -I/src/sys -I/src/sys/contrib/altq -D_KERNEL -DHAVE_KERNEL_OPTION_HEADERS -include opt_global.h -fno-common -finline-limit=8000 --param inline-unit-growth=100 --param large-function-growth=1000  -mno-align-long-strings -mpreferred-stack-boundary=2 -mno-mmx -mno-3dnow -mno-sse -mno-sse2 -mno-sse3 -ffreestanding -fstack-protector -Werror  /src/sys/xdr/xdr_mem.c
> cc -c -O -pipe  -std=c99 -g -Wall -Wredundant-decls -Wnested-externs -Wstrict-prototypes  -Wmissing-prototypes -Wpointer-arith -Winline -Wcast-qual  -Wundef -Wno-pointer-sign -fformat-extensions -nostdinc  -I. -I/src/sys -I/src/sys/contrib/altq -D_KERNEL -DHAVE_KERNEL_OPTION_HEADERS -include opt_global.h -fno-common -finline-limit=8000 --param inline-unit-growth=100 --param large-function-growth=1000  -mno-align-long-strings -mpreferred-stack-boundary=2 -mno-mmx -mno-3dnow -mno-sse -mno-sse2 -mno-sse3 -ffreestanding -fstack-protector -Werror  /src/sys/xdr/xdr_reference.c
> cc -c -O -pipe  -std=c99 -g -Wall -Wredundant-decls -Wnested-externs -Wstrict-prototypes  -Wmissing-prototypes -Wpointer-arith -Winline -Wcast-qual  -Wundef -Wno-pointer-sign -fformat-extensions -nostdinc  -I. -I/src/sys -I/src/sys/contrib/altq -D_KERNEL -DHAVE_KERNEL_OPTION_HEADERS -include opt_global.h -fno-common -finline-limit=8000 --param inline-unit-growth=100 --param large-function-growth=1000  -mno-align-long-strings -mpreferred-stack-boundary=2 -mno-mmx -mno-3dnow -mno-sse -mno-sse2 -mno-sse3 -ffreestanding -fstack-protector -Werror  /src/sys/xdr/xdr_sizeof.c
> cc -c -O -pipe  -std=c99 -g -Wall -Wredundant-decls -Wnested-externs -Wstrict-prototypes  -Wmissing-prototypes -Wpointer-arith -Winline -Wcast-qual  -Wundef -Wno-pointer-sign -fformat-extensions -nostdinc  -I. -I/src/sys -I/src/sys/contrib/altq -D_KERNEL -DHAVE_KERNEL_OPTION_HEADERS -include opt_global.h -fno-common -finline-limit=8000 --param inline-unit-growth=100 --param large-function-growth=1000  -mno-align-long-strings -mpreferred-stack-boundary=2 -mno-mmx -mno-3dnow -mno-sse -mno-sse2 -mno-sse3 -ffreestanding -fstack-protector -Werror  /src/sys/dev/arcmsr/arcmsr.c
> cc1: warnings being treated as errors
> /src/sys/dev/arcmsr/arcmsr.c: In function 'arcmsr_action':
> /src/sys/dev/arcmsr/arcmsr.c:2475: warning: cast from pointer to integer of different size
> *** Error code 1
>
> Stop in /obj/i386.i386/src/sys/PAE.
> *** Error code 1
>
> Stop in /src.
> *** Error code 1

Hi Xin Li!
	There's some bad casting being done for PAE's _bus.h vs this driver;
the target data type is an 32-bit integer for non-PAE and 64-bit for
PAE [1]:

   37 #ifdef PAE
   38 typedef uint64_t bus_addr_t;
   39 #else
   40 typedef uint32_t bus_addr_t;

	But the type that it's trying to assign the value to is an 8-byte
integer (address) (!):

  630 struct ccb_scsiio {
  631         struct     ccb_hdr ccb_h;
  632         union      ccb *next_ccb;       /* Ptr for next CCB for action */
  633         u_int8_t   *req_map;            /* Ptr to mapping info */
  634         u_int8_t   *data_ptr;           /* Ptr to the data buf/SG list */
  635         u_int32_t  dxfer_len;           /* Data transfer length */

	data_ptr might need to be dereferenced, but there are other sections
in the code that pass (potentially by accident) today:

/sys/dev/arcmsr/arcmsr.c:		buffer = pccb->csio.data_ptr;
/sys/dev/arcmsr/arcmsr.c:		char *buffer=pccb->csio.data_ptr;
/sys/dev/arcmsr/arcmsr.c:							, pccb->csio.data_ptr
/sys/dev/arcmsr/arcmsr.c:						seg.ds_addr = (bus_addr_t)pccb->csio.data_ptr;
/sys/dev/arcmsr/arcmsr.c:					segs=(struct bus_dma_segment
*)pccb->csio.data_ptr;

	There are some other minor issues with downcasting the integer in the
driver as well:

/sys/dev/arcmsr/arcmsr.c:			address_lo=arcmsr_htole32(dma_addr_lo32(dm_segs[i].ds_addr));
/sys/dev/arcmsr/arcmsr.c:			address_hi=arcmsr_htole32(dma_addr_hi32(dm_segs[i].ds_addr));
/sys/dev/arcmsr/arcmsr.c:						seg.ds_addr = (bus_addr_t)pccb->csio.data_ptr;
/sys/dev/arcmsr/arcmsr.c:	unsigned long srb_phyaddr=(unsigned
long)segs->ds_addr;

	In particular, AFAICT the 4th assignment shown above is wrong on PAE
(should be bus_addr_t, not unsigned long).
Thanks!
-Garrett


More information about the freebsd-scsi mailing list