From owner-svn-src-head@FreeBSD.ORG Thu Mar 26 21:29:43 2009 Return-Path: Delivered-To: svn-src-head@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 7C28C1065697; Thu, 26 Mar 2009 21:29:43 +0000 (UTC) (envelope-from ambrisko@ambrisko.com) Received: from mail.ambrisko.com (mail.ambrisko.com [64.174.51.43]) by mx1.freebsd.org (Postfix) with ESMTP id 33A248FC28; Thu, 26 Mar 2009 21:29:43 +0000 (UTC) (envelope-from ambrisko@ambrisko.com) X-Ambrisko-Me: Yes Received: from server2.ambrisko.com (HELO www.ambrisko.com) ([192.168.1.2]) by ironport.ambrisko.com with ESMTP; 26 Mar 2009 14:30:34 -0700 Received: from ambrisko.com (localhost [127.0.0.1]) by www.ambrisko.com (8.14.3/8.14.1) with ESMTP id n2QLTgUv076135; Thu, 26 Mar 2009 14:29:42 -0700 (PDT) (envelope-from ambrisko@ambrisko.com) Received: (from ambrisko@localhost) by ambrisko.com (8.14.3/8.14.3/Submit) id n2QLTgV9076134; Thu, 26 Mar 2009 14:29:42 -0700 (PDT) (envelope-from ambrisko) From: Doug Ambrisko Message-Id: <200903262129.n2QLTgV9076134@ambrisko.com> In-Reply-To: <20090326205356.GA17416@freebsd.org> To: Roman Divacky Date: Thu, 26 Mar 2009 14:29:42 -0700 (PDT) X-Mailer: ELM [version 2.4ME+ PL94b (25)] MIME-Version: 1.0 Content-Transfer-Encoding: 7bit Content-Type: text/plain; charset=US-ASCII Cc: svn-src-head@freebsd.org, Doug Ambrisko , svn-src-all@freebsd.org, src-committers@freebsd.org Subject: Re: svn commit: r190445 - in head/sys: amd64/linux32 compat/linprocfs compat/linux conf dev/ipmi modules/ipmi modules/linprocfs X-BeenThere: svn-src-head@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: SVN commit messages for the src tree for head/-current List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 26 Mar 2009 21:29:46 -0000 Roman Divacky writes: | On Thu, Mar 26, 2009 at 05:14:23PM +0000, Doug Ambrisko wrote: | > Author: ambrisko | > Date: Thu Mar 26 17:14:22 2009 | > New Revision: 190445 | > URL: http://svn.freebsd.org/changeset/base/190445 | > | > Log: | > Add stuff to support upcoming BMC/IPMI flashing of newer Dell machine | > via the Linux tool. | > - Add Linux shim to ipmi(4) | > - Create a partitions file to linprocfs to make Linux fdisk see | > disks. This file is dynamic so we can see disks come and go. | > - Convert msdosfs to vfat in mtab since Linux uses that for | > msdosfs. | > - In the Linux mount path convert vfat passed in to msdosfs | > so Linux mount works on FreeBSD. Note that tasting works | > so that if da0 is a msdos file system | > /compat/linux/bin/mount /dev/da0 /mnt | > works. | > - fix a 64it bug for l_off_t. | > Grabing sh, mount, fdisk, df from Linux, creating a symlink of mtab to | > /compat/linux/etc/mtab and then some careful unpacking of the Linux bmc | > update tool and hacking makes it work on newer Dell boxes. Note, probably | > if you can't figure out how to do this, then you probably shouldn't be | > doing it :-) | > | > Added: | > head/sys/dev/ipmi/ipmi_linux.c (contents, props changed) | > Modified: | > head/sys/amd64/linux32/linux.h | > head/sys/compat/linprocfs/linprocfs.c | > head/sys/compat/linux/linux_file.c | > head/sys/conf/files.amd64 | > head/sys/conf/files.i386 | > head/sys/modules/ipmi/Makefile | > head/sys/modules/linprocfs/Makefile | > | > Modified: head/sys/amd64/linux32/linux.h | > ============================================================================== | > --- head/sys/amd64/linux32/linux.h Thu Mar 26 17:04:08 2009 (r190444) | > +++ head/sys/amd64/linux32/linux.h Thu Mar 26 17:14:22 2009 (r190445) | > @@ -79,7 +79,7 @@ typedef l_ulong l_ino_t; | > typedef l_int l_key_t; | > typedef l_longlong l_loff_t; | > typedef l_ushort l_mode_t; | > -typedef l_long l_off_t; | > +typedef l_ulong l_off_t; | | where did you get this idea? my copy of linux 2.6.16 shows that off_t | is being declared as long. can you be more specific about the background | of this change? what does it fix? Maybe you have another suggestion to fix this. The problem showed up when doing a mmap of 0xcf79c000 into 0xffffffffcf79c000 also a mmap of 0xf0000 ended up the same way. This caused it to fail. Note this is only on amd64 with a Linux. It didn't happen with a FreeBSD i386 version on amd64. Here is a sample test program: -------------------------------------------------------------------- #include #include #include #include #include #include test(int fd, off_t off, size_t len){ char *temp; int i; unsigned int sum; int fdout; char str[100]; int out; printf("checking %u/%u %x/%x\n",off,len,off,len); temp=mmap(NULL, len, PROT_READ, MAP_SHARED, fd, off); printf("Returned %x\n",temp); if (temp == MAP_FAILED) { perror("Couldn't map"); } else for(i=0;i%x\n",sum); sprintf(str, "dump.%x",off); fdout=open(str,O_WRONLY|O_CREAT|O_TRUNC,0666); if (fdout==-1) { printf("failed to create %s\n",str); } else { out=write(fdout,temp,len); printf("What %d %d, %x\n",out,len,temp); close(fdout); } /* printf("press enter to continue\n"); scanf("%d",&fdout); */ munmap(temp, len); } main(){ int fd, i; fd=open("/dev/mem",O_RDONLY); if (fd==-1) { printf("Can't open /dev/mem\n"); exit(1); } test(fd,0xf0000,4096); test(fd,0xfe000,4096); test(fd,0xcf7f0000,4096); test(fd,0xcf79c000,4096); } -------------------------------------------------------------------- I can toss a compiled Linux/i386, FreeBSD/i386 and FreeBSD/amd64 versions up on my web server. I added a printf to the native mmap kernel function to print out the address being passed to it. Thanks, Doug A.