VERSION = 2
PATCHLEVEL = 6
SUBLEVEL = 12
-EXTRAVERSION = -1.1398_FC4.5.planetlab
+EXTRAVERSION = -1.1398_FC4.7.planetlab
NAME=Woozy Numbat
# *DOCUMENTATION*
cflags-$(CONFIG_M586) += -march=i586
cflags-$(CONFIG_M586TSC) += -march=i586
cflags-$(CONFIG_M586MMX) += $(call cc-option,-march=pentium-mmx,-march=i586)
-#cflags-$(CONFIG_M686) += -march=i686 -mtune=pentium4
-cflags-$(CONFIG_M686) += -march=i686 -mcpu=pentium4
+cflags-$(CONFIG_M686) += -march=i686 $(call cc-option,-mtune=pentium4,-mcpu=pentium4)
cflags-$(CONFIG_MPENTIUMII) += -march=i686 $(call cc-option,-mtune=pentium2)
cflags-$(CONFIG_MPENTIUMIII) += -march=i686 $(call cc-option,-mtune=pentium3)
cflags-$(CONFIG_MPENTIUMM) += -march=i686 $(call cc-option,-mtune=pentium3)
\r
Additional Installation Notes for Various Linux Distributions\r
Broadcom BCM5700 Linux Driver\r
- Version 8.3.14\r
- 11/02/2005\r
+ Version 8.3.17b\r
+ 02/21/2006\r
\r
Broadcom Corporation\r
16215 Alton Parkway,\r
Irvine, CA 92619-7013\r
\r
- Copyright (c) 2000-2005 Broadcom Corporation\r
+ Copyright (c) 2000-2006 Broadcom Corporation\r
All rights reserved\r
\r
\r
Installation Notes
Broadcom BCM5700 Linux Driver
- Version 8.3.14
- 11/02/2005
+ Version 8.3.17b
+ 02/21/2006
Broadcom Corporation
16215 Alton Parkway,
Irvine, CA 92619-7013
- Copyright (c) 2000-2005 Broadcom Corporation
+ Copyright (c) 2000-2006 Broadcom Corporation
All rights reserved
will appear on the console. Most systems are set to level 6 by default.
Broadcom Gigabit Ethernet Driver bcm5700 with Broadcom NIC Extension (NICE)
-ver. 8.3.14 (11/02/05)
+ver. 8.3.17b (02/21/06)
Driver signon
\r
Release Notes\r
Broadcom BCM5700 Linux Driver\r
- Version 8.3.14\r
- 11/02/2005\r
+ Version 8.3.17b\r
+ 02/21/2006\r
\r
Broadcom Corporation\r
16215 Alton Parkway,\r
Irvine, CA 92619-7013\r
\r
- Copyright (c) 2000-2005 Broadcom Corporation\r
+ Copyright (c) 2000-2006 Broadcom Corporation\r
All rights reserved\r
\r
\r
+v8.3.17b (February 21 2006)\r
+=========================\r
+ Fixes:\r
+ ------\r
+ 1. Problem : (ISSUE289636) 5715 ports hang under linux with 6 or more\r
+ ports are active in the RFC2544 test.\r
+ Cause : While running RFC2544 test with 6 or more ports active\r
+ the linux error message "NETDEV_WATCHDOG transmitt timed out"\r
+ gets displayed multiple times. After multiple errors 5715\r
+ ports stop working.\r
+ Change : Updated trans_start with jiffies before calling\r
+ netif_stop_queue to prevent false NETDEV WATCHDOG\r
+ Impact : 5715.\r
+\r
+v8.3.17 (January 18 2006)\r
+=========================\r
+The patch file in the bcm_sup-8.3.16 tar file will not compile\r
+in 2.6.14 kernels. This release version is using a patch\r
+file for 2.6.13 kernels.\r
+\r
+v8.3.16 (January 10 2006)\r
+=========================\r
+ Enhancement:\r
+ ------------\r
+ ECD13216 complete workaround for 5714/5715 fiber:\r
+ During chip init set: \r
+ 0x5b0[10]=1\r
+ 0x6808[5:4]=01\r
+ To check link status read:\r
+ 0x460 bit 3 is set when link is established. \r
+\r
+\r
+v8.3.15 (December 16, 2005)\r
+===========================\r
+ Enhancement:\r
+ ------------\r
+ Added support for 5714S and 5715S.\r
+ \r
+\r
v8.3.14 (November 02, 2005)\r
===========================\r
Fixes:\r
/******************************************************************************/
/* */
-/* Broadcom BCM5700 Linux Network Driver, Copyright (c) 2000 - 2005 Broadcom */
+/* Broadcom BCM5700 Linux Network Driver, Copyright (c) 2000 - 2006 Broadcom */
/* Corporation. */
/* All rights reserved. */
/* */
char bcm5700_driver[] = "bcm5700";
-char bcm5700_version[] = "8.3.14a";
-char bcm5700_date[] = "(11/2/05)";
+char bcm5700_version[] = "8.3.17b";
+char bcm5700_date[] = "(02/21/06)";
#define B57UM
#include "mm.h"
/* Operational parameters that usually are not changed. */
/* Time in jiffies before concluding the transmitter is hung. */
#define TX_TIMEOUT (2*HZ)
+/* RQM 289636: */
+#define BCM_TX_TIMEOUT (5*HZ)
#if (LINUX_VERSION_CODE < 0x02030d)
#define pci_resource_start(dev, bar) (dev->base_address[bar] & PCI_BASE_ADDRESS_MEM_MASK)
spin_unlock_irqrestore(&(pUmDevice)->global_lock, flags);\
}
+/* Fix for RQM 289636 */
+static inline void
+bcm5700_netif_stop_queue(struct net_device *dev)
+{
+ dev->trans_start = jiffies; /* prevent tx timeout */
+ netif_stop_queue(dev);
+}
+
inline void
bcm5700_intr_lock(PUM_DEVICE_BLOCK pUmDevice)
{
{0x14e4, 0x1600, PCI_ANY_ID, PCI_ANY_ID, 0, 0, BCM5752 },
{0x14e4, 0x1601, PCI_ANY_ID, PCI_ANY_ID, 0, 0, BCM5752M },
{0x14e4, 0x1668, PCI_ANY_ID, PCI_ANY_ID, 0, 0, BCM5714 },
+ {0x14e4, 0x1669, PCI_ANY_ID, PCI_ANY_ID, 0, 0, BCM5714S },
{0x14e4, 0x166a, PCI_ANY_ID, PCI_ANY_ID, 0, 0, BCM5780 },
{0x14e4, 0x166b, PCI_ANY_ID, PCI_ANY_ID, 0, 0, BCM5780S },
{0x14e4, 0x1678, PCI_ANY_ID, PCI_ANY_ID, 0, 0, BCM5715 },
+ {0x14e4, 0x1679, PCI_ANY_ID, PCI_ANY_ID, 0, 0, BCM5715S },
{0x14e4, 0x16ff, PCI_ANY_ID, PCI_ANY_ID, 0, 0, BCM5903M },
#endif
{0,}
#endif
#if (LINUX_VERSION_CODE >= 0x20400)
dev->tx_timeout = bcm5700_reset;
- dev->watchdog_timeo = TX_TIMEOUT;
+ /* Fix for RQM 289636 */
+ /* dev->watchdog_timeo = TX_TIMEOUT; */
+ dev->watchdog_timeo = BCM_TX_TIMEOUT;
#endif
#ifdef BCM_VLAN
dev->vlan_rx_register = &bcm5700_vlan_rx_register;
if(( pDevice->PhyId & PHY_ID_MASK ) == PHY_BCM5780_PHY_ID)
printk("Broadcom BCM5780S Integrated Serdes ");
+ if(( pDevice->PhyId & PHY_ID_MASK ) == PHY_BCM5714_PHY_ID)
+ printk("Broadcom BCM5714S Integrated Serdes ");
}
else if ((pDevice->PhyId & PHY_ID_MASK) == PHY_BCM5705_PHY_ID)
printk("Broadcom BCM5705 Integrated Copper ");
#endif
if (pUmDevice->do_global_lock && pUmDevice->interrupt) {
- netif_stop_queue(dev);
+ /* Fix for RQM 289636 */
+ /* netif_stop_queue(dev); */
+ bcm5700_netif_stop_queue(dev);
pUmDevice->tx_queued = 1;
if (!pUmDevice->interrupt) {
netif_wake_queue(dev);
pPacket = (PLM_PACKET)
QQ_PopHead(&pDevice->TxPacketFreeQ.Container);
if (pPacket == 0) {
- netif_stop_queue(dev);
+ /* Fix for RQM 289636 */
+ /* netif_stop_queue(dev); */
+ bcm5700_netif_stop_queue(dev);
pUmDevice->tx_full = 1;
if (QQ_GetEntryCnt(&pDevice->TxPacketFreeQ.Container)) {
netif_wake_queue(dev);
frag_no = 0;
#endif
if (atomic_read(&pDevice->SendBdLeft) < (frag_no + 1)) {
- netif_stop_queue(dev);
+ /* Fix for RQM 289636 */
+ /* netif_stop_queue(dev); */
+ bcm5700_netif_stop_queue(dev);
pUmDevice->tx_full = 1;
QQ_PushHead(&pDevice->TxPacketFreeQ.Container, pPacket);
if (atomic_read(&pDevice->SendBdLeft) >= (frag_no + 1)) {
#if (LINUX_VERSION_CODE < 0x02032b)
dev->start = 0;
#endif
- netif_stop_queue(dev);
+ /* Fix for RQM 289636 */
+ /* netif_stop_queue(dev); */
+ bcm5700_netif_stop_queue(dev);
pUmDevice->opened = 0;
#ifdef BCM_ASF
BCM5700_PHY_LOCK(pUmDevice, flags);
if (reinit) {
- netif_stop_queue(dev);
+ /* Fix for RQM 289636 */
+ /* netif_stop_queue(dev); */
+ bcm5700_netif_stop_queue(dev);
bcm5700_shutdown(pUmDevice);
bcm5700_freemem(dev);
}
#endif /* MODULE */
#else /* LINUX_VERSION_CODE < 0x020300 */
+
+#if (LINUX_VERSION_CODE >= 0x2060b)
+static int bcm5700_suspend(struct pci_dev *pdev, pm_message_t state)
+#else
#if (LINUX_VERSION_CODE >= 0x020406)
static int bcm5700_suspend (struct pci_dev *pdev, u32 state)
#else
static void bcm5700_suspend (struct pci_dev *pdev)
#endif
+#endif
{
struct net_device *dev = (struct net_device *) pci_get_drvdata(pdev);
PUM_DEVICE_BLOCK pUmDevice = (PUM_DEVICE_BLOCK) dev->priv;
-.\" Copyright (c) 2000-2005 Broadcom Corporation
+.\" Copyright (c) 2000-2006 Broadcom Corporation
.\" This is free documentation; you can redistribute it and/or
.\" modify it under the terms of the GNU General Public License as
.\" published by the Free Software Foundation.
.\"
.\" bcm5700.4,v 5.9
.\"
-.TH BCM5700 4 "10/28/05" "Broadcom Corporation"
+.TH BCM5700 4 "01/10/06" "Broadcom Corporation"
.\"
.\" NAME part
.\"
/******************************************************************************/
/* */
-/* Broadcom BCM5700 Linux Network Driver, Copyright (c) 2000 - 2005 Broadcom */
+/* Broadcom BCM5700 Linux Network Driver, Copyright (c) 2000 - 2006 Broadcom */
/* Corporation. */
/* All rights reserved. */
/* */
{
pDevice->PhyId = EePhyId;
- if (EePhyTypeSerdes && ((pDevice->PhyId == PHY_BCM5780_PHY_ID)) )
+ if (EePhyTypeSerdes && ((pDevice->PhyId == PHY_BCM5714_PHY_ID) || (pDevice->PhyId == PHY_BCM5780_PHY_ID)) )
{
pDevice->PhyFlags |= PHY_IS_FIBER;
}
REG_WR(pDevice, MacCtrl.LowWaterMarkMaxRxFrame, 2);
/* ecd 13216 workaround for serdes */
- if(pDevice->PhyFlags & PHY_IS_FIBER)
+ if ((pDevice->PhyFlags & PHY_IS_FIBER) &&
+ (T3_ASIC_REV(pDevice->ChipRevId) != T3_ASIC_REV_5780))
{
Value32 = REG_RD_OFFSET(pDevice, 0x5b0);
REG_WR_OFFSET(pDevice, 0x5b0, Value32 | BIT_10 );
-
- pDevice->GrcLocalCtrl |= BIT_4 ;
+
+ pDevice->GrcLocalCtrl |= BIT_4 ;
pDevice->GrcLocalCtrl &= ~BIT_5 ;
REG_WR(pDevice, Grc.LocalCtrl, pDevice->GrcLocalCtrl);
if (!(pDevice->TbiFlags & ENABLE_TBI_FLAG) &&
( ((pDevice->PhyId & PHY_ID_MASK) != PHY_BCM5401_PHY_ID)&&
- ((pDevice->PhyId & PHY_ID_MASK) != PHY_BCM5411_PHY_ID) ))
+ ((pDevice->PhyId & PHY_ID_MASK) != PHY_BCM5411_PHY_ID) ))
{
/* 5401/5411 PHY needs a delay of about 1 second after PHY reset */
/* Without the delay, it has problem linking at forced 10 half */
LM_5714_FamForceFiber(pDevice);
}
- LM_ReadPhy(pDevice, PHY_STATUS_REG, &Sreg);
- LM_ReadPhy(pDevice, PHY_STATUS_REG, &Sreg);
- if(Sreg & PHY_STATUS_LINK_PASS){
+ /* 5714/15 Serdes link status is valid only in reg 0x460 */
+ /* ecd 13216 workaround for serdes */
+ Sreg = REG_RD(pDevice, MacCtrl.TxStatus);
+
+ if(Sreg & TX_STATUS_LINK_UP){
pDevice->LinkStatus = LM_STATUS_LINK_ACTIVE;
pDevice->LineSpeed = LM_LINE_SPEED_1000MBPS;
}
}
+/* Wait for the UHCI controller in HP's iLO2 server management chip.
+ * It can take up to 250 us to finish a reset and set the CSC bit.
+ */
+static void wait_for_HP(unsigned long port_addr)
+{
+ int i;
+
+ for (i = 10; i < 250; i += 10) {
+ if (inw(port_addr) & USBPORTSC_CSC)
+ return;
+ udelay(10);
+ }
+ /* Log a warning? */
+}
+
static void uhci_check_ports(struct uhci_hcd *uhci)
{
unsigned int port;
if (time_after_eq(jiffies, uhci->ports_timeout)) {
CLR_RH_PORTSTAT(USBPORTSC_PR);
udelay(10);
+ /* HP's server management chip requires
+ * a longer delay. */
+ if (to_pci_dev(uhci_dev(uhci))->vendor ==
+ PCI_VENDOR_ID_HP)
+ wait_for_HP(port_addr);
/* If the port was enabled before, turning
* reset on caused a port enable change.
extern void smp_invalidate_rcv(void); /* Process an NMI */
extern void (*mtrr_hook) (void);
extern void zap_low_mappings (void);
-extern void stop_this_cpu(void *);
#define MAX_APICID 256
extern u8 x86_cpu_to_apicid[];
/* link hash */
+#define N_ALIGN(len) ((((len) + 1) & ~3) + 2)
+
static __initdata struct hash {
int ino, minor, major;
struct hash *next;
- char *name;
+ char name[N_ALIGN(PATH_MAX)];
} *head[32];
static inline int hash(int major, int minor, int ino)
q->ino = ino;
q->minor = minor;
q->major = major;
- q->name = name;
+ strcpy(q->name, name);
q->next = NULL;
*p = q;
return NULL;
count -= n;
}
-#define N_ALIGN(len) ((((len) + 1) & ~3) + 2)
-
static __initdata char *collected;
static __initdata int remains;
static __initdata char *collect;
if (dry_run)
return 0;
if (S_ISREG(mode)) {
+ sys_unlink(collected);
if (maybe_link() >= 0) {
wfd = sys_open(collected, O_WRONLY|O_CREAT, mode);
if (wfd >= 0) {
sys_chmod(collected, mode);
} else if (S_ISBLK(mode) || S_ISCHR(mode) ||
S_ISFIFO(mode) || S_ISSOCK(mode)) {
+ sys_unlink(collected);
if (maybe_link() == 0) {
sys_mknod(collected, mode, rdev);
sys_chown(collected, uid, gid);
static int __init do_symlink(void)
{
collected[N_ALIGN(name_len) + body_len] = '\0';
+ sys_unlink(collected);
sys_symlink(collected + N_ALIGN(name_len), collected);
sys_lchown(collected, uid, gid);
state = SkipIt;
elfcheck(hdr->e_shentsize == sizeof(Elf_Shdr));
tmp = (size_t) hdr->e_shentsize * (size_t) hdr->e_shnum;
- elfcheck(tmp < size - hdr->e_shoff);
+ elfcheck(tmp <= size - hdr->e_shoff);
/* allocate a table to hold in-file section sizes */
mvdata->secsizes = kmalloc(hdr->e_shnum * sizeof(size_t), GFP_KERNEL);
%define rpmversion 2.6.%{sublevel}
%define rhbsys %([ -r /etc/beehive-root -o -n "%{?__beehive_build}" ] && echo || echo .`whoami`)
-%define release 1.1398_FC4.5%{?pldistro:.%{pldistro}}%{?date:.%{date}}
+%define release 1.1398_FC4.7%{?pldistro:.%{pldistro}}%{?date:.%{date}}
%define signmodules 0
%define make_target bzImage
# and now to start the build process
- make -s ARCH=$Arch mrproper
- cp configs/$Config .config
-
- echo USING ARCH=$Arch
+ CC=gcc
+ gccversion=$(gcc -v 2>&1 | grep "gcc version" | awk '{print $3'} | awk -F . '{print $1}')
+ if [ "$gccversion" == "4" ] ; then
+ echo "Currently not compiling kernel with gcc 4.x"
+ echo "Trying to find a recent gcc 3.x based compiler"
+ CC=
+ gcc3=$(which gcc32 2>/dev/null || /bin/true)
+ [ "$gcc3" != "" ] && CC=gcc32
+ echo "gcc3 = $gcc3; CC=${CC}"
+ gcc3=$(which gcc33 2>/dev/null || /bin/true)
+ [ "$gcc3" != "" ] && CC=gcc33
+ echo "gcc3 = $gcc3; CC=${CC}"
+ gcc3=$(which gcc34 2>/dev/null || /bin/true)
+ [ "$gcc3" != "" ] && CC=gcc34
+ echo "gcc3 = $gcc3; CC=${CC}"
+ if [ -z "$CC" ]; then
+ echo "Could not find a gcc 3.x based compiler!"
+ echo "Trying to compile with gcc $gccversion anyway"
+ CC=gcc
+ #echo "Aborting kernel compilation!"
+ #exit -1
+ fi
+ fi
+ HOSTCC=${CC}
- make -s ARCH=$Arch nonint_oldconfig > /dev/null
- make -s ARCH=$Arch include/linux/version.h
+ make -s CC=${CC} HOSTCC=${HOSTCC} ARCH=$Arch mrproper
+ cp configs/$Config .config
+ echo "USING ARCH=$Arch CC=${CC} HOSTCC=${HOSTCC}"
- make -s ARCH=$Arch %{?_smp_mflags} $Target
- make -s ARCH=$Arch %{?_smp_mflags} modules || exit 1
- make ARCH=$Arch buildcheck
+ make -s CC=${CC} HOSTCC=${HOSTCC} ARCH=$Arch nonint_oldconfig > /dev/null
+ make -s CC=${CC} HOSTCC=${HOSTCC} ARCH=$Arch include/linux/version.h
+ make -s CC=${CC} HOSTCC=${HOSTCC} ARCH=$Arch %{?_smp_mflags} $Target
+ make -s CC=${CC} HOSTCC=${HOSTCC} ARCH=$Arch %{?_smp_mflags} modules || exit 1
+ make CC=${CC} HOSTCC=${HOSTCC} ARCH=$Arch buildcheck
# Start installing the results
# make some useful links
pushd /boot > /dev/null ; {
- ln -sf config-%{KVERREL} config
- ln -sf initrd-%{KVERREL}.img initrd-boot
- ln -sf vmlinuz-%{KVERREL} kernel-boot
+ ln -sf config-%{KVERREL}smp configsmp
+ ln -sf initrd-%{KVERREL}smp.img initrd-bootsmp
+ ln -sf vmlinuz-%{KVERREL}smp kernel-bootsmp
}
popd > /dev/null
popd > /dev/null
fi
+%post uml-modules
+depmod -ae %{KVERREL}uml
+
%preun
/sbin/modprobe loop 2> /dev/null > /dev/null || :
/sbin/modprobe loop 2> /dev/null > /dev/null || :
[ -x /sbin/new-kernel-pkg ] && /sbin/new-kernel-pkg --rmmoddep --remove %{KVERREL}xenU
+%preun uml-modules
+rm -f /lib/modules/%{KVERREL}uml/modules.*
+
###
### file lists