Message ID | 20101025.130513.102558756.davem@davemloft.net |
---|---|
State | Accepted, archived |
Delegated to: | David Miller |
Headers | show |
On Mon, Oct 25, 2010 at 01:05:13PM -0700, David Miller wrote: > From: Andi Kleen <andi@firstfloor.org> > Date: Mon, 18 Oct 2010 13:52:30 +0200 > > > > > Current Linus master x86-64 allyesconfig fails with > > > > drivers/built-in.o: In function `tms380tr_chipset_init': > > tms380tr.c:(.text+0x10f02de): undefined reference to `__bad_udelay' > > tms380tr.c:(.text+0x10f03ab): undefined reference to `__bad_udelay' > > tms380tr.c:(.text+0x10f0400): undefined reference to `__bad_udelay' > > tms380tr.c:(.text+0x10f07b2): undefined reference to `__bad_udelay' > > tms380tr.c:(.text+0x10f08ed): undefined reference to `__bad_udelay' > > make[2]: *** [.tmp_vmlinux1] Error 1 > > Let me know if this fixes things: Fixes that problem, but now I get (with Linus' latest again and a gcc 4.6 snapshot) In file included from /home/lsrc/git/linux-2.6/drivers/net/igbvf/ethtool.c:36:0: /home/lsrc/git/linux-2.6/drivers/net/igbvf/igbvf.h:129:15: error: duplicate member 'page' make[5]: *** [drivers/net/igbvf/ethtool.o] Error 1 make[4]: *** [drivers/net/igbvf] Error 2 struct igbvf_buffer { dma_addr_t dma; struct sk_buff *skb; union { /* Tx */ struct { unsigned long time_stamp; u16 length; u16 next_to_watch; u16 mapped_as_page; }; /* Rx */ struct { struct page *page; <--------------- No 1 u64 page_dma; unsigned int page_offset; }; }; struct page *page; <------------ No 2 }; Hmm conflict of a member with a transparent union. Maybe older gccs didn't catch that. But it looks very broken Alexander, can you sort out which "page" member should be used where? And there's another problem in SCSI which I'll report separately. -Andi -- To unsubscribe from this list: send the line "unsubscribe netdev" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
From: Andi Kleen <andi@firstfloor.org> Date: Tue, 26 Oct 2010 00:10:42 +0200 > In file included from /home/lsrc/git/linux-2.6/drivers/net/igbvf/ethtool.c:36:0: > /home/lsrc/git/linux-2.6/drivers/net/igbvf/igbvf.h:129:15: error: duplicate member 'page' > make[5]: *** [drivers/net/igbvf/ethtool.o] Error 1 > make[4]: *** [drivers/net/igbvf] Error 2 Oh that's fun :-) Intel folks please take a look. -- To unsubscribe from this list: send the line "unsubscribe netdev" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
>-----Original Message----- >From: Andi Kleen [mailto:andi@firstfloor.org] >Sent: Monday, October 25, 2010 3:11 PM >To: David Miller >Cc: andi@firstfloor.org; netdev@vger.kernel.org; Kirsher, Jeffrey T; >Duyck, Alexander H >Subject: Re: __bad_udelay in network driver breaks build > >On Mon, Oct 25, 2010 at 01:05:13PM -0700, David Miller wrote: >> From: Andi Kleen <andi@firstfloor.org> >> Date: Mon, 18 Oct 2010 13:52:30 +0200 >> >> > >> > Current Linus master x86-64 allyesconfig fails with >> > >> > drivers/built-in.o: In function `tms380tr_chipset_init': >> > tms380tr.c:(.text+0x10f02de): undefined reference to >`__bad_udelay' >> > tms380tr.c:(.text+0x10f03ab): undefined reference to >`__bad_udelay' >> > tms380tr.c:(.text+0x10f0400): undefined reference to >`__bad_udelay' >> > tms380tr.c:(.text+0x10f07b2): undefined reference to >`__bad_udelay' >> > tms380tr.c:(.text+0x10f08ed): undefined reference to >`__bad_udelay' >> > make[2]: *** [.tmp_vmlinux1] Error 1 >> >> Let me know if this fixes things: > >Fixes that problem, but now I get (with Linus' latest again and a gcc >4.6 >snapshot) > >In file included from /home/lsrc/git/linux- >2.6/drivers/net/igbvf/ethtool.c:36:0: >/home/lsrc/git/linux-2.6/drivers/net/igbvf/igbvf.h:129:15: error: >duplicate member 'page' >make[5]: *** [drivers/net/igbvf/ethtool.o] Error 1 >make[4]: *** [drivers/net/igbvf] Error 2 > >struct igbvf_buffer { > dma_addr_t dma; > struct sk_buff *skb; > union { > /* Tx */ > struct { > unsigned long time_stamp; > u16 length; > u16 next_to_watch; > u16 mapped_as_page; > }; > /* Rx */ > struct { > struct page *page; <--------------- No 1 > u64 page_dma; > unsigned int page_offset; > }; > }; > struct page *page; <------------ No 2 >}; > >Hmm conflict of a member with a transparent union. >Maybe older gccs didn't catch that. But it looks very broken > >Alexander, can you sort out which "page" member should be used where? > >And there's another problem in SCSI which I'll report separately. > >-Andi Yeah, I'm pretty sure the 2nd page pointer shouldn't be there. We will look into correcting that. Thanks, Alex -- To unsubscribe from this list: send the line "unsubscribe netdev" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
> -----Original Message----- > From: Duyck, Alexander H > Sent: Tuesday, October 26, 2010 10:35 AM > To: Andi Kleen; David Miller > Cc: netdev@vger.kernel.org; Kirsher, Jeffrey T; Rose, Gregory V > Subject: RE: __bad_udelay in network driver breaks build > > >-----Original Message----- > >From: Andi Kleen [mailto:andi@firstfloor.org] > >Sent: Monday, October 25, 2010 3:11 PM > >To: David Miller > >Cc: andi@firstfloor.org; netdev@vger.kernel.org; Kirsher, Jeffrey T; > >Duyck, Alexander H > >Subject: Re: __bad_udelay in network driver breaks build > > > >On Mon, Oct 25, 2010 at 01:05:13PM -0700, David Miller wrote: > >> From: Andi Kleen <andi@firstfloor.org> > >> Date: Mon, 18 Oct 2010 13:52:30 +0200 > >> > >> > > >> > Current Linus master x86-64 allyesconfig fails with > >> > > >> > drivers/built-in.o: In function `tms380tr_chipset_init': > >> > tms380tr.c:(.text+0x10f02de): undefined reference to > >`__bad_udelay' > >> > tms380tr.c:(.text+0x10f03ab): undefined reference to > >`__bad_udelay' > >> > tms380tr.c:(.text+0x10f0400): undefined reference to > >`__bad_udelay' > >> > tms380tr.c:(.text+0x10f07b2): undefined reference to > >`__bad_udelay' > >> > tms380tr.c:(.text+0x10f08ed): undefined reference to > >`__bad_udelay' > >> > make[2]: *** [.tmp_vmlinux1] Error 1 > >> > >> Let me know if this fixes things: > > > >Fixes that problem, but now I get (with Linus' latest again and a gcc > >4.6 > >snapshot) > > > >In file included from /home/lsrc/git/linux- > >2.6/drivers/net/igbvf/ethtool.c:36:0: > >/home/lsrc/git/linux-2.6/drivers/net/igbvf/igbvf.h:129:15: error: > >duplicate member 'page' > >make[5]: *** [drivers/net/igbvf/ethtool.o] Error 1 > >make[4]: *** [drivers/net/igbvf] Error 2 > > > >struct igbvf_buffer { > > dma_addr_t dma; > > struct sk_buff *skb; > > union { > > /* Tx */ > > struct { > > unsigned long time_stamp; > > u16 length; > > u16 next_to_watch; > > u16 mapped_as_page; > > }; > > /* Rx */ > > struct { > > struct page *page; <--------------- No 1 > > u64 page_dma; > > unsigned int page_offset; > > }; > > }; > > struct page *page; <------------ No 2 > >}; > > > >Hmm conflict of a member with a transparent union. > >Maybe older gccs didn't catch that. But it looks very broken > > > >Alexander, can you sort out which "page" member should be used where? > > > >And there's another problem in SCSI which I'll report separately. > > > >-Andi > > Yeah, I'm pretty sure the 2nd page pointer shouldn't be there. We will > look into correcting that. > > Thanks, > > Alex I'll post a patch to correct this directly. Thanks, - Greg -- To unsubscribe from this list: send the line "unsubscribe netdev" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
diff --git a/drivers/net/tokenring/tms380tr.c b/drivers/net/tokenring/tms380tr.c index 663b886..7930203 100644 --- a/drivers/net/tokenring/tms380tr.c +++ b/drivers/net/tokenring/tms380tr.c @@ -1220,7 +1220,7 @@ void tms380tr_wait(unsigned long time) tmp = schedule_timeout_interruptible(tmp); } while(time_after(tmp, jiffies)); #else - udelay(time); + mdelay(time / 1000); #endif }