From: Mark Huang Date: Mon, 10 Jul 2006 18:14:17 +0000 (+0000) Subject: merge changes from HEAD for official 3.3 bootcd X-Git-Tag: planetlab-3_3-bootcd~1 X-Git-Url: http://git.onelab.eu/?a=commitdiff_plain;h=e347f74274786d42ae53715cc4f956da0428c030;p=linux-2.6.git merge changes from HEAD for official 3.3 bootcd --- diff --git a/arch/i386/Makefile b/arch/i386/Makefile index 4d22f78e0..efec8dc7d 100644 --- a/arch/i386/Makefile +++ b/arch/i386/Makefile @@ -33,8 +33,7 @@ cflags-$(CONFIG_M486) += -march=i486 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) diff --git a/drivers/net/bcm5700/DISTRIB.TXT b/drivers/net/bcm5700/DISTRIB.TXT index 2c4ba7d28..22891d3f2 100755 --- a/drivers/net/bcm5700/DISTRIB.TXT +++ b/drivers/net/bcm5700/DISTRIB.TXT @@ -1,14 +1,14 @@ Additional Installation Notes for Various Linux Distributions 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 diff --git a/drivers/net/bcm5700/README.TXT b/drivers/net/bcm5700/README.TXT index 3555ef5d1..05d713d6a 100644 --- a/drivers/net/bcm5700/README.TXT +++ b/drivers/net/bcm5700/README.TXT @@ -1,14 +1,14 @@ 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 @@ -529,7 +529,7 @@ The following are the most common sample messages that may be logged in the file 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 diff --git a/drivers/net/bcm5700/RELEASE.TXT b/drivers/net/bcm5700/RELEASE.TXT index abfc21c00..10ca5a076 100755 --- a/drivers/net/bcm5700/RELEASE.TXT +++ b/drivers/net/bcm5700/RELEASE.TXT @@ -1,17 +1,56 @@ Release 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 +v8.3.17b (February 21 2006) +========================= + Fixes: + ------ + 1. Problem : (ISSUE289636) 5715 ports hang under linux with 6 or more + ports are active in the RFC2544 test. + Cause : While running RFC2544 test with 6 or more ports active + the linux error message "NETDEV_WATCHDOG transmitt timed out" + gets displayed multiple times. After multiple errors 5715 + ports stop working. + Change : Updated trans_start with jiffies before calling + netif_stop_queue to prevent false NETDEV WATCHDOG + Impact : 5715. + +v8.3.17 (January 18 2006) +========================= +The patch file in the bcm_sup-8.3.16 tar file will not compile +in 2.6.14 kernels. This release version is using a patch +file for 2.6.13 kernels. + +v8.3.16 (January 10 2006) +========================= + Enhancement: + ------------ + ECD13216 complete workaround for 5714/5715 fiber: + During chip init set: + 0x5b0[10]=1 + 0x6808[5:4]=01 + To check link status read: + 0x460 bit 3 is set when link is established. + + +v8.3.15 (December 16, 2005) +=========================== + Enhancement: + ------------ + Added support for 5714S and 5715S. + + v8.3.14 (November 02, 2005) =========================== Fixes: diff --git a/drivers/net/bcm5700/b57um.c b/drivers/net/bcm5700/b57um.c index 10374e644..d3f76adac 100644 --- a/drivers/net/bcm5700/b57um.c +++ b/drivers/net/bcm5700/b57um.c @@ -1,6 +1,6 @@ /******************************************************************************/ /* */ -/* Broadcom BCM5700 Linux Network Driver, Copyright (c) 2000 - 2005 Broadcom */ +/* Broadcom BCM5700 Linux Network Driver, Copyright (c) 2000 - 2006 Broadcom */ /* Corporation. */ /* All rights reserved. */ /* */ @@ -12,8 +12,8 @@ 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" @@ -128,6 +128,8 @@ static int bcm_msi_chipset_bug = 0; /* 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) @@ -289,6 +291,14 @@ pci_set_dma_mask(struct pci_dev *dev, dma_addr_t 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) { @@ -883,9 +893,11 @@ static struct pci_device_id bcm5700_pci_tbl[] __devinitdata = { {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,} @@ -1211,7 +1223,9 @@ bcm5700_init_one(struct pci_dev *pdev, #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; @@ -1287,6 +1301,8 @@ bcm5700_init_one(struct pci_dev *pdev, 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 "); @@ -2075,7 +2091,9 @@ bcm5700_start_xmit(struct sk_buff *skb, struct net_device *dev) #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); @@ -2087,7 +2105,9 @@ bcm5700_start_xmit(struct sk_buff *skb, struct net_device *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); @@ -2113,7 +2133,9 @@ bcm5700_start_xmit(struct sk_buff *skb, struct net_device *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)) { @@ -2472,7 +2494,9 @@ bcm5700_close(struct net_device *dev) #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 @@ -4379,7 +4403,9 @@ STATIC int bcm5700_change_mtu(struct net_device *dev, int new_mtu) 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); } @@ -4516,11 +4542,16 @@ void cleanup_module(void) #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; diff --git a/drivers/net/bcm5700/bcm5700.4 b/drivers/net/bcm5700/bcm5700.4 index 154900022..240d40a94 100644 --- a/drivers/net/bcm5700/bcm5700.4 +++ b/drivers/net/bcm5700/bcm5700.4 @@ -1,11 +1,11 @@ -.\" 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 .\" diff --git a/drivers/net/bcm5700/tigon3.c b/drivers/net/bcm5700/tigon3.c index 6e0f3ce76..6ae0fcb99 100644 --- a/drivers/net/bcm5700/tigon3.c +++ b/drivers/net/bcm5700/tigon3.c @@ -1,6 +1,6 @@ /******************************************************************************/ /* */ -/* Broadcom BCM5700 Linux Network Driver, Copyright (c) 2000 - 2005 Broadcom */ +/* Broadcom BCM5700 Linux Network Driver, Copyright (c) 2000 - 2006 Broadcom */ /* Corporation. */ /* All rights reserved. */ /* */ @@ -3011,7 +3011,7 @@ PLM_DEVICE_BLOCK pDevice) { 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; } @@ -4866,12 +4866,13 @@ restart_reset: 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); @@ -4886,7 +4887,7 @@ restart_reset: 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 */ @@ -7782,10 +7783,12 @@ LM_SetupNewFiberPhy( 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; diff --git a/drivers/usb/host/uhci-hub.c b/drivers/usb/host/uhci-hub.c index 4c45ba839..f94d16912 100644 --- a/drivers/usb/host/uhci-hub.c +++ b/drivers/usb/host/uhci-hub.c @@ -86,6 +86,21 @@ static void uhci_finish_suspend(struct uhci_hcd *uhci, int port, } } +/* 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; @@ -99,6 +114,11 @@ static void uhci_check_ports(struct uhci_hcd *uhci) 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. diff --git a/include/asm-i386/smp.h b/include/asm-i386/smp.h index 2551f3b50..e03a206df 100644 --- a/include/asm-i386/smp.h +++ b/include/asm-i386/smp.h @@ -42,7 +42,6 @@ extern void smp_message_irq(int cpl, void *dev_id, struct pt_regs *regs); 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[]; diff --git a/init/initramfs.c b/init/initramfs.c index 02c5ce649..be7f53c31 100644 --- a/init/initramfs.c +++ b/init/initramfs.c @@ -26,10 +26,12 @@ static void __init free(void *where) /* 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) @@ -57,7 +59,7 @@ static char __init *find_link(int major, int minor, int ino, char *name) q->ino = ino; q->minor = minor; q->major = major; - q->name = name; + strcpy(q->name, name); q->next = NULL; *p = q; return NULL; @@ -133,8 +135,6 @@ static inline void eat(unsigned n) count -= n; } -#define N_ALIGN(len) ((((len) + 1) & ~3) + 2) - static __initdata char *collected; static __initdata int remains; static __initdata char *collect; @@ -249,6 +249,7 @@ static int __init do_name(void) 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) { @@ -263,6 +264,7 @@ static int __init do_name(void) 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); @@ -291,6 +293,7 @@ static int __init do_copy(void) 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; diff --git a/scripts/kernel-2.6-planetlab.spec b/scripts/kernel-2.6-planetlab.spec index c5b911051..67936cd1a 100644 --- a/scripts/kernel-2.6-planetlab.spec +++ b/scripts/kernel-2.6-planetlab.spec @@ -23,7 +23,7 @@ Summary: The Linux kernel (the core of the Linux operating system) %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.6%{?pldistro:.%{pldistro}}%{?date:.%{date}} %define signmodules 0 %define make_target bzImage @@ -326,17 +326,40 @@ BuildKernel() { # 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 @@ -569,9 +592,9 @@ fi # 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 @@ -597,6 +620,9 @@ pushd /usr/src/kernels/%{KVERREL}-xenU-%{_target_cpu} > /dev/null popd > /dev/null fi +%post uml-modules +depmod -ae %{KVERREL}uml + %preun /sbin/modprobe loop 2> /dev/null > /dev/null || : @@ -610,6 +636,9 @@ fi /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