Date: Sat, 13 Nov 2010 18:01:01 -0800 From: Xin LI <delphij@gmail.com> To: Garrett Cooper <gcooper@freebsd.org> Cc: Attilio Rao <attilio@freebsd.org>, i386@freebsd.org, delphij@freebsd.org, scsi@freebsd.org Subject: Re: [head tinderbox] failure on i386/i386 Message-ID: <AANLkTi=sxts5YppN9rX6KfWVPz_Ro8eeCjpRZz9dPFWy@mail.gmail.com> In-Reply-To: <AANLkTikcoGiuf%2BbHa_=vJeMgsaxtwk9iYzj2VWp4tUbz@mail.gmail.com> References: <201011132338.oADNcZkA035129@freebsd-current.sentex.ca> <AANLkTikcoGiuf%2BbHa_=vJeMgsaxtwk9iYzj2VWp4tUbz@mail.gmail.com>
next in thread | previous in thread | raw e-mail | index | archive | help
Hmm, will fix ASAP, for some reason it passed my universe build on Friday :( On Nov 13, 2010 5:46 PM, "Garrett Cooper" <gcooper@freebsd.org> wrote: > On Sat, Nov 13, 2010 at 3:38 PM, FreeBSD Tinderbox > <tinderbox@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
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?AANLkTi=sxts5YppN9rX6KfWVPz_Ro8eeCjpRZz9dPFWy>