rpms/kernel/F-9 config-alpha-generic, NONE, 1.1 config-alpha-smp, NONE, 1.1 linux-2.6-alpha-eepro100-cleanup.patch, NONE, 1.1 linux-2.6-alpha-pci.c.patch, NONE, 1.1 linux-2.6-alpha-pci_get_bus_and_slot.patch, NONE, 1.1 linux-2.6.28-alpha-exec_range.patch, NONE, 1.1 linux-2.6.28-alpha-pci.h.patch, NONE, 1.1 Makefile.config, 1.64, 1.65 kernel.spec, 1.898, 1.899

Oliver Falk oliver at fedoraproject.org
Thu Mar 12 12:57:36 UTC 2009


Author: oliver

Update of /cvs/pkgs/rpms/kernel/F-9
In directory cvs1.fedora.phx.redhat.com:/tmp/cvs-serv12971

Modified Files:
	Makefile.config kernel.spec 
Added Files:
	config-alpha-generic config-alpha-smp 
	linux-2.6-alpha-eepro100-cleanup.patch 
	linux-2.6-alpha-pci.c.patch 
	linux-2.6-alpha-pci_get_bus_and_slot.patch 
	linux-2.6.28-alpha-exec_range.patch 
	linux-2.6.28-alpha-pci.h.patch 
Log Message:

* Wed Mar 11 2009 Oliver Falk <oliver at linux-kernel.at> 2.6.28.2-7
- Modify kernel spec to build on alpha again
- Remove all alphaev* from spec, as we only build for 'alpha'
- Patches for alpha:
  - linux-2.6.28-alpha-exec_range.patch
    - add execshield dummy functions for alpha
  - linux-2.6-alpha-pci_get_bus_and_slot.patch
    - Do not limit bus/slot search to PCI domain 0 on alpha
  - linux-2.6-alpha-eepro100-cleanup.patch
    - cleanup extraneous "freeing mc frame" messages from driver
  - linux-2.6.28-alpha-pci.h.patch, linux-2.6-alpha-pci.c.patch
    - Platform support for /proc/bus/pci/X/Y mmap()s



--- NEW FILE config-alpha-generic ---
# alpha
# Automatically generated make config: don't edit
# Linux kernel version: 2.6.28.2
# Fri Feb 13 06:26:22 2009
#
CONFIG_ALPHA=y
CONFIG_64BIT=y
CONFIG_MMU=y
CONFIG_RWSEM_XCHGADD_ALGORITHM=y
# CONFIG_ARCH_HAS_ILOG2_U32 is not set
# CONFIG_ARCH_HAS_ILOG2_U64 is not set
CONFIG_GENERIC_FIND_NEXT_BIT=y
CONFIG_GENERIC_CALIBRATE_DELAY=y
CONFIG_ZONE_DMA=y
CONFIG_GENERIC_ISA_DMA=y
# CONFIG_GENERIC_IOMAP is not set
CONFIG_GENERIC_HARDIRQS=y
CONFIG_GENERIC_IRQ_PROBE=y
CONFIG_DEFCONFIG_LIST="/lib/modules/$UNAME_RELEASE/.config"

#
# General setup
#
CONFIG_EXPERIMENTAL=y
CONFIG_BROKEN_ON_SMP=y
CONFIG_INIT_ENV_ARG_LIMIT=32
CONFIG_LOCALVERSION=""
# CONFIG_LOCALVERSION_AUTO is not set
CONFIG_SWAP=y
CONFIG_SYSVIPC=y
CONFIG_SYSVIPC_SYSCTL=y
CONFIG_POSIX_MQUEUE=y
CONFIG_BSD_PROCESS_ACCT=y
# CONFIG_BSD_PROCESS_ACCT_V3 is not set
CONFIG_TASKSTATS=y
CONFIG_TASK_DELAY_ACCT=y
CONFIG_TASK_XACCT=y
CONFIG_TASK_IO_ACCOUNTING=y
CONFIG_AUDIT=y
# CONFIG_IKCONFIG is not set
CONFIG_LOG_BUF_SHIFT=17
CONFIG_CGROUPS=y
# CONFIG_CGROUP_DEBUG is not set
CONFIG_CGROUP_NS=y
# CONFIG_CGROUP_FREEZER is not set
CONFIG_CGROUP_DEVICE=y
CONFIG_GROUP_SCHED=y
# CONFIG_FAIR_GROUP_SCHED is not set
# CONFIG_RT_GROUP_SCHED is not set
CONFIG_USER_SCHED=y
# CONFIG_CGROUP_SCHED is not set
CONFIG_CGROUP_CPUACCT=y
# CONFIG_RESOURCE_COUNTERS is not set
CONFIG_SYSFS_DEPRECATED=y
CONFIG_SYSFS_DEPRECATED_V2=y
CONFIG_RELAY=y
CONFIG_NAMESPACES=y
# CONFIG_UTS_NS is not set
# CONFIG_IPC_NS is not set
# CONFIG_USER_NS is not set
# CONFIG_PID_NS is not set
CONFIG_BLK_DEV_INITRD=y
CONFIG_INITRAMFS_SOURCE=""
CONFIG_CC_OPTIMIZE_FOR_SIZE=y
CONFIG_SYSCTL=y
# CONFIG_EMBEDDED is not set
CONFIG_SYSCTL_SYSCALL=y
CONFIG_KALLSYMS=y
CONFIG_KALLSYMS_ALL=y
CONFIG_KALLSYMS_EXTRA_PASS=y
CONFIG_HOTPLUG=y
CONFIG_PRINTK=y
CONFIG_BUG=y
CONFIG_ELF_CORE=y
CONFIG_PCSPKR_PLATFORM=y
CONFIG_COMPAT_BRK=y
CONFIG_BASE_FULL=y
CONFIG_FUTEX=y
CONFIG_ANON_INODES=y
CONFIG_EPOLL=y
CONFIG_SIGNALFD=y
CONFIG_TIMERFD=y
CONFIG_EVENTFD=y
CONFIG_SHMEM=y
CONFIG_AIO=y
CONFIG_VM_EVENT_COUNTERS=y
CONFIG_PCI_QUIRKS=y
CONFIG_SLUB_DEBUG=y
# CONFIG_SLAB is not set
CONFIG_SLUB=y
# CONFIG_SLOB is not set
CONFIG_PROFILING=y
# CONFIG_MARKERS is not set
CONFIG_OPROFILE=m
CONFIG_HAVE_OPROFILE=y
# CONFIG_HAVE_GENERIC_DMA_COHERENT is not set
CONFIG_SLABINFO=y
CONFIG_RT_MUTEXES=y
# CONFIG_TINY_SHMEM is not set
CONFIG_BASE_SMALL=0
CONFIG_MODULES=y
# CONFIG_MODULE_FORCE_LOAD is not set
CONFIG_MODULE_UNLOAD=y
# CONFIG_MODULE_FORCE_UNLOAD is not set
# CONFIG_MODVERSIONS is not set
# CONFIG_MODULE_SRCVERSION_ALL is not set
CONFIG_KMOD=y
CONFIG_BLOCK=y
CONFIG_BLK_DEV_IO_TRACE=y
# CONFIG_BLK_DEV_BSG is not set
# CONFIG_BLK_DEV_INTEGRITY is not set

#
# IO Schedulers
#
CONFIG_IOSCHED_NOOP=y
CONFIG_IOSCHED_AS=y
CONFIG_IOSCHED_DEADLINE=y
CONFIG_IOSCHED_CFQ=y
# CONFIG_DEFAULT_AS is not set
# CONFIG_DEFAULT_DEADLINE is not set
CONFIG_DEFAULT_CFQ=y
# CONFIG_DEFAULT_NOOP is not set
CONFIG_DEFAULT_IOSCHED="cfq"
CONFIG_CLASSIC_RCU=y
# CONFIG_FREEZER is not set

#
# System setup
#
CONFIG_ALPHA_GENERIC=y
# CONFIG_ALPHA_ALCOR is not set
# CONFIG_ALPHA_XL is not set
# CONFIG_ALPHA_BOOK1 is not set
# CONFIG_ALPHA_AVANTI_CH is not set
# CONFIG_ALPHA_CABRIOLET is not set
# CONFIG_ALPHA_DP264 is not set
# CONFIG_ALPHA_EB164 is not set
# CONFIG_ALPHA_EB64P_CH is not set
# CONFIG_ALPHA_EB66 is not set
# CONFIG_ALPHA_EB66P is not set
# CONFIG_ALPHA_EIGER is not set
# CONFIG_ALPHA_JENSEN is not set
# CONFIG_ALPHA_LX164 is not set
# CONFIG_ALPHA_LYNX is not set
# CONFIG_ALPHA_MARVEL is not set
# CONFIG_ALPHA_MIATA is not set
# CONFIG_ALPHA_MIKASA is not set
# CONFIG_ALPHA_NAUTILUS is not set
# CONFIG_ALPHA_NONAME_CH is not set
# CONFIG_ALPHA_NORITAKE is not set
# CONFIG_ALPHA_PC164 is not set
# CONFIG_ALPHA_P2K is not set
# CONFIG_ALPHA_RAWHIDE is not set
# CONFIG_ALPHA_RUFFIAN is not set
# CONFIG_ALPHA_RX164 is not set
# CONFIG_ALPHA_SX164 is not set
# CONFIG_ALPHA_SABLE is not set
# CONFIG_ALPHA_SHARK is not set
# CONFIG_ALPHA_TAKARA is not set
# CONFIG_ALPHA_TITAN is not set
# CONFIG_ALPHA_WILDFIRE is not set
CONFIG_ISA=y
CONFIG_ISA_DMA_API=y
CONFIG_PCI=y
CONFIG_PCI_DOMAINS=y
CONFIG_PCI_SYSCALL=y
CONFIG_IOMMU_HELPER=y
CONFIG_GENERIC_HWEIGHT=y
CONFIG_ALPHA_BROKEN_IRQ_MASK=y
CONFIG_VGA_HOSE=y
CONFIG_EISA=y
CONFIG_ARCH_MAY_HAVE_PC_FDC=y
# CONFIG_SMP is not set
# CONFIG_ARCH_DISCONTIGMEM_ENABLE is not set
CONFIG_SELECT_MEMORY_MODEL=y
CONFIG_FLATMEM_MANUAL=y
# CONFIG_DISCONTIGMEM_MANUAL is not set
# CONFIG_SPARSEMEM_MANUAL is not set
CONFIG_FLATMEM=y
CONFIG_FLAT_NODE_MEM_MAP=y
CONFIG_PAGEFLAGS_EXTENDED=y
CONFIG_SPLIT_PTLOCK_CPUS=4
CONFIG_RESOURCES_64BIT=y
CONFIG_PHYS_ADDR_T_64BIT=y
CONFIG_ZONE_DMA_FLAG=1
CONFIG_BOUNCE=y
CONFIG_VIRT_TO_BUS=y
CONFIG_UNEVICTABLE_LRU=y
CONFIG_VERBOSE_MCHECK=y
CONFIG_VERBOSE_MCHECK_ON=1
CONFIG_HZ=1024
# CONFIG_ARCH_SUPPORTS_MSI is not set
CONFIG_PCI_LEGACY=y
# CONFIG_PCI_DEBUG is not set
CONFIG_EISA_PCI_EISA=y
CONFIG_EISA_VIRTUAL_ROOT=y
CONFIG_EISA_NAMES=y
CONFIG_PCCARD=y
[...3032 lines suppressed...]
CONFIG_DEBUG_KERNEL=y
CONFIG_DEBUG_SHIRQ=y
CONFIG_DETECT_SOFTLOCKUP=y
# CONFIG_BOOTPARAM_SOFTLOCKUP_PANIC is not set
CONFIG_BOOTPARAM_SOFTLOCKUP_PANIC_VALUE=0
CONFIG_SCHED_DEBUG=y
CONFIG_SCHEDSTATS=y
CONFIG_TIMER_STATS=y
# CONFIG_DEBUG_OBJECTS is not set
CONFIG_SLUB_DEBUG_ON=y
# CONFIG_SLUB_STATS is not set
CONFIG_DEBUG_RT_MUTEXES=y
CONFIG_DEBUG_PI_LIST=y
# CONFIG_RT_MUTEX_TESTER is not set
CONFIG_DEBUG_SPINLOCK=y
CONFIG_DEBUG_MUTEXES=y
CONFIG_DEBUG_SPINLOCK_SLEEP=y
# CONFIG_DEBUG_LOCKING_API_SELFTESTS is not set
# CONFIG_DEBUG_KOBJECT is not set
CONFIG_DEBUG_INFO=y
CONFIG_DEBUG_VM=y
# CONFIG_DEBUG_WRITECOUNT is not set
CONFIG_DEBUG_MEMORY_INIT=y
CONFIG_DEBUG_LIST=y
# CONFIG_DEBUG_SG is not set
CONFIG_BOOT_PRINTK_DELAY=y
# CONFIG_RCU_TORTURE_TEST is not set
# CONFIG_RCU_CPU_STALL_DETECTOR is not set
# CONFIG_BACKTRACE_SELF_TEST is not set
# CONFIG_DEBUG_BLOCK_EXT_DEVT is not set
CONFIG_FAULT_INJECTION=y
CONFIG_FAILSLAB=y
CONFIG_FAIL_PAGE_ALLOC=y
CONFIG_FAIL_MAKE_REQUEST=y
# CONFIG_FAIL_IO_TIMEOUT is not set
CONFIG_FAULT_INJECTION_DEBUG_FS=y
CONFIG_SYSCTL_SYSCALL_CHECK=y

#
# Tracers
#
# CONFIG_SCHED_TRACER is not set
# CONFIG_CONTEXT_SWITCH_TRACER is not set
# CONFIG_BOOT_TRACER is not set
# CONFIG_FIREWIRE_OHCI_REMOTE_DMA is not set
# CONFIG_BUILD_DOCSRC is not set
# CONFIG_DYNAMIC_PRINTK_DEBUG is not set
# CONFIG_SAMPLES is not set
CONFIG_EARLY_PRINTK=y
# CONFIG_ALPHA_LEGACY_START_ADDRESS is not set
CONFIG_MATHEMU=y

#
# Security options
#
CONFIG_KEYS=y
CONFIG_KEYS_DEBUG_PROC_KEYS=y
CONFIG_SECURITY=y
CONFIG_SECURITYFS=y
CONFIG_SECURITY_NETWORK=y
CONFIG_SECURITY_NETWORK_XFRM=y
CONFIG_SECURITY_FILE_CAPABILITIES=y
# CONFIG_SECURITY_ROOTPLUG is not set
CONFIG_SECURITY_DEFAULT_MMAP_MIN_ADDR=0
CONFIG_SECURITY_SELINUX=y
CONFIG_SECURITY_SELINUX_BOOTPARAM=y
CONFIG_SECURITY_SELINUX_BOOTPARAM_VALUE=1
CONFIG_SECURITY_SELINUX_DISABLE=y
CONFIG_SECURITY_SELINUX_DEVELOP=y
CONFIG_SECURITY_SELINUX_AVC_STATS=y
CONFIG_SECURITY_SELINUX_CHECKREQPROT_VALUE=1
# CONFIG_SECURITY_SELINUX_ENABLE_SECMARK_DEFAULT is not set
# CONFIG_SECURITY_SELINUX_POLICYDB_VERSION_MAX is not set
# CONFIG_SECURITY_SMACK is not set
CONFIG_XOR_BLOCKS=m
CONFIG_ASYNC_CORE=m
CONFIG_ASYNC_MEMCPY=m
CONFIG_ASYNC_XOR=m
CONFIG_CRYPTO=y

#
# Crypto core or helper
#
# CONFIG_CRYPTO_FIPS is not set
CONFIG_CRYPTO_ALGAPI=y
CONFIG_CRYPTO_ALGAPI2=y
CONFIG_CRYPTO_AEAD=m
CONFIG_CRYPTO_AEAD2=y
CONFIG_CRYPTO_BLKCIPHER=m
CONFIG_CRYPTO_BLKCIPHER2=y
CONFIG_CRYPTO_HASH=y
CONFIG_CRYPTO_HASH2=y
CONFIG_CRYPTO_RNG2=y
CONFIG_CRYPTO_MANAGER=y
CONFIG_CRYPTO_MANAGER2=y
CONFIG_CRYPTO_GF128MUL=m
CONFIG_CRYPTO_NULL=m
# CONFIG_CRYPTO_CRYPTD is not set
CONFIG_CRYPTO_AUTHENC=m
# CONFIG_CRYPTO_TEST is not set

#
# Authenticated Encryption with Associated Data
#
# CONFIG_CRYPTO_CCM is not set
# CONFIG_CRYPTO_GCM is not set
# CONFIG_CRYPTO_SEQIV is not set

#
# Block modes
#
CONFIG_CRYPTO_CBC=m
# CONFIG_CRYPTO_CTR is not set
CONFIG_CRYPTO_CTS=m
CONFIG_CRYPTO_ECB=m
CONFIG_CRYPTO_LRW=m
CONFIG_CRYPTO_PCBC=m
CONFIG_CRYPTO_XTS=m

#
# Hash modes
#
CONFIG_CRYPTO_HMAC=y
CONFIG_CRYPTO_XCBC=m

#
# Digest
#
CONFIG_CRYPTO_CRC32C=m
CONFIG_CRYPTO_MD4=m
CONFIG_CRYPTO_MD5=y
CONFIG_CRYPTO_MICHAEL_MIC=m
# CONFIG_CRYPTO_RMD128 is not set
# CONFIG_CRYPTO_RMD160 is not set
# CONFIG_CRYPTO_RMD256 is not set
# CONFIG_CRYPTO_RMD320 is not set
CONFIG_CRYPTO_SHA1=y
CONFIG_CRYPTO_SHA256=m
CONFIG_CRYPTO_SHA512=m
CONFIG_CRYPTO_TGR192=m
CONFIG_CRYPTO_WP512=m

#
# Ciphers
#
CONFIG_CRYPTO_AES=m
CONFIG_CRYPTO_ANUBIS=m
CONFIG_CRYPTO_ARC4=m
CONFIG_CRYPTO_BLOWFISH=m
CONFIG_CRYPTO_CAMELLIA=m
CONFIG_CRYPTO_CAST5=m
CONFIG_CRYPTO_CAST6=m
CONFIG_CRYPTO_DES=m
CONFIG_CRYPTO_FCRYPT=m
CONFIG_CRYPTO_KHAZAD=m
# CONFIG_CRYPTO_SALSA20 is not set
CONFIG_CRYPTO_SEED=m
CONFIG_CRYPTO_SERPENT=m
CONFIG_CRYPTO_TEA=m
CONFIG_CRYPTO_TWOFISH=m
CONFIG_CRYPTO_TWOFISH_COMMON=m

#
# Compression
#
CONFIG_CRYPTO_DEFLATE=m
# CONFIG_CRYPTO_LZO is not set

#
# Random Number Generation
#
# CONFIG_CRYPTO_ANSI_CPRNG is not set
CONFIG_CRYPTO_HW=y
# CONFIG_CRYPTO_DEV_HIFN_795X is not set

#
# Library routines
#
CONFIG_BITREVERSE=y
CONFIG_CRC_CCITT=m
CONFIG_CRC16=m
# CONFIG_CRC_T10DIF is not set
CONFIG_CRC_ITU_T=m
CONFIG_CRC32=y
# CONFIG_CRC7 is not set
CONFIG_LIBCRC32C=m
CONFIG_AUDIT_GENERIC=y
CONFIG_ZLIB_INFLATE=y
CONFIG_ZLIB_DEFLATE=m
CONFIG_GENERIC_ALLOCATOR=y
CONFIG_REED_SOLOMON=m
CONFIG_REED_SOLOMON_DEC16=y
CONFIG_TEXTSEARCH=y
CONFIG_TEXTSEARCH_KMP=m
CONFIG_TEXTSEARCH_BM=m
CONFIG_TEXTSEARCH_FSM=m
CONFIG_PLIST=y
CONFIG_HAS_IOMEM=y
CONFIG_HAS_IOPORT=y
CONFIG_HAS_DMA=y


--- NEW FILE config-alpha-smp ---
CONFIG_SMP=y
CONFIG_NR_CPUS=16

linux-2.6-alpha-eepro100-cleanup.patch:

--- NEW FILE linux-2.6-alpha-eepro100-cleanup.patch ---
--- a/drivers/net/eepro100.c.ORIG	2008-04-30 18:47:27.000000000 -0400
+++ b/drivers/net/eepro100.c	2008-04-30 18:51:31.000000000 -0400
@@ -487,7 +487,7 @@ static void speedo_tx_timeout(struct net
 static int speedo_start_xmit(struct sk_buff *skb, struct net_device *dev);
 static void speedo_refill_rx_buffers(struct net_device *dev, int force);
 static int speedo_rx(struct net_device *dev);
-static void speedo_tx_buffer_gc(struct net_device *dev);
+static void speedo_tx_buffer_gc(struct net_device *dev, int flg);
 static irqreturn_t speedo_interrupt(int irq, void *dev_instance);
 static int speedo_close(struct net_device *dev);
 static struct net_device_stats *speedo_get_stats(struct net_device *dev);
@@ -1383,7 +1383,7 @@ static void speedo_tx_timeout(struct net
 		/* Disable interrupts. */
 		iowrite16(SCBMaskAll, ioaddr + SCBCmd);
 		synchronize_irq(dev->irq);
-		speedo_tx_buffer_gc(dev);
+		speedo_tx_buffer_gc(dev, 1);
 		/* Free as much as possible.
 		   It helps to recover from a hang because of out-of-memory.
 		   It also simplifies speedo_resume() in case TX ring is full or
@@ -1476,7 +1476,7 @@ speedo_start_xmit(struct sk_buff *skb, s
 	return 0;
 }
 
-static void speedo_tx_buffer_gc(struct net_device *dev)
+static void speedo_tx_buffer_gc(struct net_device *dev, int flg)
 {
 	unsigned int dirty_tx;
 	struct speedo_private *sp = netdev_priv(dev);
@@ -1521,8 +1521,8 @@ static void speedo_tx_buffer_gc(struct n
 	while (sp->mc_setup_head != NULL
 		   && (int)(dirty_tx - sp->mc_setup_head->tx - 1) > 0) {
 		struct speedo_mc_block *t;
-		if (netif_msg_tx_err(sp))
-			printk(KERN_DEBUG "%s: freeing mc frame.\n", dev->name);
+		if (flg && netif_msg_tx_err(sp))
+			printk(KERN_DEBUG "%s: Freeing mc frame.\n", dev->name);
 		pci_unmap_single(sp->pdev, sp->mc_setup_head->frame_dma,
 				sp->mc_setup_head->len, PCI_DMA_TODEVICE);
 		t = sp->mc_setup_head->next;
@@ -1607,7 +1607,7 @@ static irqreturn_t speedo_interrupt(int 
 
 		/* User interrupt, Command/Tx unit interrupt or CU not active. */
 		if (status & 0xA400) {
-			speedo_tx_buffer_gc(dev);
+			speedo_tx_buffer_gc(dev, 0);
 			if (sp->tx_full
 				&& (int)(sp->cur_tx - sp->dirty_tx) < TX_QUEUE_UNFULL) {
 				/* The ring is no longer full. */

linux-2.6-alpha-pci.c.patch:

--- NEW FILE linux-2.6-alpha-pci.c.patch ---
--- a/arch/alpha/kernel/pci.c.ORIG	2008-10-17 13:10:37.000000000 -0400
+++ a/arch/alpha/kernel/pci.c	2008-10-22 08:51:27.000000000 -0400
@@ -560,6 +560,176 @@ void pci_iounmap(struct pci_dev *dev, vo
 EXPORT_SYMBOL(pci_iomap);
 EXPORT_SYMBOL(pci_iounmap);
 
+/* Platform support for /proc/bus/pci/X/Y mmap()s. */
+
+/* If the user uses a host-bridge as the PCI device, he may use
+ * this to perform a raw mmap() of the I/O or MEM space behind
+ * that controller.
+ *
+ * This can be useful for execution of x86 PCI bios initialization code
+ * on a PCI card, like the xfree86 int10 stuff does.
+ */
+static int __pci_mmap_make_offset_bus(struct pci_dev *pdev,
+				      struct vm_area_struct *vma,
+				      enum pci_mmap_state mmap_state)
+{
+	struct pci_controller *hose = pdev->sysdata;
+	unsigned long space_size, user_offset, user_size;
+
+	if (mmap_state == pci_mmap_io) {
+		space_size = (hose->io_space->end -
+			      hose->io_space->start) + 1;
+	} else {
+		space_size = (hose->mem_space->end -
+			      hose->mem_space->start) + 1;
+	}
+
+	/* Make sure the request is in range. */
+	user_offset = vma->vm_pgoff << PAGE_SHIFT;
+	user_size = vma->vm_end - vma->vm_start;
+
+	if (user_offset >= space_size ||
+	    (user_offset + user_size) > space_size)
+		return -EINVAL;
+
+	/* FIXME FIXME: for now, only worry about DENSE IO and MEM */
+	if (mmap_state == pci_mmap_io) {
+		vma->vm_pgoff = (hose->dense_io_base +
+				 user_offset) >> PAGE_SHIFT;
+	} else {
+		vma->vm_pgoff = (hose->dense_mem_base +
+				 user_offset) >> PAGE_SHIFT;
+	}
+
+	return 0;
+}
+
+/* Adjust vm_pgoff of VMA such that it is the physical page offset
+ * corresponding to the 32-bit pci bus offset for DEV requested by the user.
+ *
+ * Basically, the user finds the base address for his device which he wishes
+ * to mmap.  They read the 32-bit value from the config space base register,
+ * add whatever PAGE_SIZE multiple offset they wish, and feed this into the
+ * offset parameter of mmap on /proc/bus/pci/XXX for that device.
+ *
+ * Returns negative error code on failure, zero on success.
+ */
+static int __pci_mmap_make_offset(struct pci_dev *pdev,
+				  struct vm_area_struct *vma,
+				  enum pci_mmap_state mmap_state)
+{
+	unsigned long user_paddr, user_size;
+	int i, err;
+	unsigned long orig_user_paddr = vma->vm_pgoff << PAGE_SHIFT;
+
+	/* First compute the physical address in vma->vm_pgoff,
+	 * making sure the user offset is within range in the
+	 * appropriate PCI space.
+	 */
+	err = __pci_mmap_make_offset_bus(pdev, vma, mmap_state);
+	if (err)
+		return err;
+
+	/* If this is a mapping on a host bridge, any address
+	 * is OK.
+	 */
+	if ((pdev->class >> 8) == PCI_CLASS_BRIDGE_HOST)
+		return err;
+
+	/* Otherwise make sure it's in the range for one of the
+	 * device's resources.
+	 */
+	user_paddr = vma->vm_pgoff << PAGE_SHIFT;
+	user_size = vma->vm_end - vma->vm_start;
+
+	for (i = 0; i <= PCI_ROM_RESOURCE; i++) {
+		struct resource *rp = &pdev->resource[i];
+
+		/* Active? */
+		if (!rp->flags)
+			continue;
+
+		/* Same type? */
+		if (i == PCI_ROM_RESOURCE) {
+			if (mmap_state != pci_mmap_mem)
+				continue;
+		} else {
+			if ((mmap_state == pci_mmap_io &&
+			     (rp->flags & IORESOURCE_IO) == 0) ||
+			    (mmap_state == pci_mmap_mem &&
+			     (rp->flags & IORESOURCE_MEM) == 0))
+				continue;
+		}
+
+		if ((rp->start <= user_paddr) &&
+		    (user_paddr + user_size) <= (rp->end + 1UL))
+			break;
+		if ((rp->start <= orig_user_paddr) &&
+		    (orig_user_paddr + user_size) <= (rp->end + 1UL)) {
+			printk(KERN_WARNING "pci: res-range w/o bus base\n");
+			break;
+		}
+	}
+
+	if (i > PCI_ROM_RESOURCE)
+		return -EINVAL;
+
+	return 0;
+}
+
+/* Set vm_flags of VMA, as appropriate for this architecture, for a pci device
+ * mapping.
+ */
+static void __pci_mmap_set_flags(struct pci_dev *dev,
+				 struct vm_area_struct *vma,
+				 enum pci_mmap_state mmap_state)
+{
+	vma->vm_flags |= (VM_IO | VM_RESERVED);
+}
+
+/* Set vm_page_prot of VMA, as appropriate for this architecture, for a pci
+ * device mapping.
+ */
+static void __pci_mmap_set_pgprot(struct pci_dev *dev,
+				  struct vm_area_struct *vma,
+				  enum pci_mmap_state mmap_state)
+{
+  /* FIXME FIXME *//* Our io_remap_pfn_range takes care of this, do nothing.  */
+}
+
+/* Perform the actual remap of the pages for a PCI device mapping, as appropriate
+ * for this architecture.  The region in the process to map is described by vm_start
+ * and vm_end members of VMA, the base physical address is found in vm_pgoff.
+ * The pci device structure is provided so that architectures may make mapping
+ * decisions on a per-device or per-bus basis.
+ *
+ * Returns a negative error code on failure, zero on success.
+ */
+int pci_mmap_page_range(struct pci_dev *dev,
+			struct vm_area_struct *vma,
+			enum pci_mmap_state mmap_state,
+			int write_combine)
+{
+	int ret;
+
+	ret = __pci_mmap_make_offset(dev, vma, mmap_state);
+	if (ret < 0)
+		return ret;
+
+	__pci_mmap_set_flags(dev, vma, mmap_state);
+	__pci_mmap_set_pgprot(dev, vma, mmap_state);
+
+	vma->vm_page_prot = pgprot_noncached(vma->vm_page_prot);
+	ret = io_remap_pfn_range(vma, vma->vm_start,
+				 vma->vm_pgoff,
+				 vma->vm_end - vma->vm_start,
+				 vma->vm_page_prot);
+	if (ret)
+		return ret;
+
+	return 0;
+}
+
 /* FIXME: Some boxes have multiple ISA bridges! */
 struct pci_dev *isa_bridge;
 EXPORT_SYMBOL(isa_bridge);

linux-2.6-alpha-pci_get_bus_and_slot.patch:

--- NEW FILE linux-2.6-alpha-pci_get_bus_and_slot.patch ---
--- linux/drivers/pci/search.c.ORIG	2007-11-07 14:44:41.000000000 -0500
+++ linux/drivers/pci/search.c	2007-11-07 14:48:02.000000000 -0500
@@ -145,7 +145,9 @@ struct pci_dev * pci_get_slot(struct pci
  * device resides and the logical device number within that slot
  * in case of multi-function devices.
  *
- * Note: the bus/slot search is limited to PCI domain (segment) 0.
+ * Note: the bus/slot search is limited to PCI domain (segment) 0,
+ *       EXCEPT on Alpha which requires ALL domains to be searched,
+ *       thank you VERY much.
  *
  * Given a PCI bus and slot/function number, the desired PCI device
  * is located in system global list of PCI devices.  If the device
@@ -159,8 +161,12 @@ struct pci_dev * pci_get_bus_and_slot(un
 	struct pci_dev *dev = NULL;
 
 	while ((dev = pci_get_device(PCI_ANY_ID, PCI_ANY_ID, dev)) != NULL) {
-		if (pci_domain_nr(dev->bus) == 0 &&
-		   (dev->bus->number == bus && dev->devfn == devfn))
+		if (
+#ifndef __alpha__
+		    pci_domain_nr(dev->bus) == 0 &&
+#endif
+		    (dev->bus->number == bus && dev->devfn == devfn)
+		   )
 			return dev;
 	}
 	return NULL;

linux-2.6.28-alpha-exec_range.patch:

--- NEW FILE linux-2.6.28-alpha-exec_range.patch ---
--- linux-2.6.28.alpha/arch/alpha/include/asm/pgalloc.h.alpha-exec_range	2009-02-12 12:07:47.000000000 +0100
+++ linux-2.6.28.alpha/arch/alpha/include/asm/pgalloc.h	2009-02-12 12:08:19.000000000 +0100
@@ -80,4 +80,8 @@ pte_free(struct mm_struct *mm, pgtable_t
 
 #define check_pgt_cache()	do { } while (0)
 
+#define arch_add_exec_range(mm, limit)          do { ; } while (0)
+#define arch_flush_exec_range(mm)               do { ; } while (0)
+#define arch_remove_exec_range(mm, limit)       do { ; } while (0)
+
 #endif /* _ALPHA_PGALLOC_H */

linux-2.6.28-alpha-pci.h.patch:

--- NEW FILE linux-2.6.28-alpha-pci.h.patch ---
diff -up linux-2.6.28.alpha/arch/alpha/include/asm/pci.h.ORIG linux-2.6.28.alpha/arch/alpha/include/asm/pci.h
--- linux-2.6.28.alpha/arch/alpha/include/asm/pci.h.ORIG	2009-02-13 04:31:18.000000000 +0100
+++ linux-2.6.28.alpha/arch/alpha/include/asm/pci.h	2009-02-13 04:32:01.000000000 +0100
@@ -225,6 +225,16 @@ static inline void pci_dma_burst_advice(
 }
 #endif
 
+/* Platform support for /proc/bus/pci/X/Y mmap()s. */
+
+#define HAVE_PCI_MMAP
+
+extern int pci_mmap_page_range(struct pci_dev *dev,
+                              struct vm_area_struct *vma,
+                              enum pci_mmap_state mmap_state,
+                              int write_combine);
+
+
 /* TODO: integrate with include/asm-generic/pci.h ? */
 static inline int pci_get_legacy_ide_irq(struct pci_dev *dev, int channel)
 {


Index: Makefile.config
===================================================================
RCS file: /cvs/pkgs/rpms/kernel/F-9/Makefile.config,v
retrieving revision 1.64
retrieving revision 1.65
diff -u -r1.64 -r1.65
--- Makefile.config	30 Oct 2008 04:41:11 -0000	1.64
+++ Makefile.config	12 Mar 2009 12:57:36 -0000	1.65
@@ -13,9 +13,10 @@
 	$(CFG)-ppc.config $(CFG)-ppc-smp.config \
 	$(CFG)-sparc64.config $(CFG)-sparc64-smp.config \
 	$(CFG)-ppc64.config $(CFG)-ppc64-kdump.config $(CFG)-ppc64-debug.config \
-	$(CFG)-ia64.config
+	$(CFG)-ia64.config \
+	$(CFG)-alpha.config $(CFG)-alpha-smp.config
 
-PLATFORMS	= x86 x86_64 powerpc powerpc32 powerpc64 s390x ia64 sparc64
+PLATFORMS	= x86 x86_64 powerpc powerpc32 powerpc64 s390x ia64 sparc64 alpha
 TEMPFILES	= $(addprefix temp-, $(addsuffix -generic, $(PLATFORMS)))
 
 configs: $(CONFIGFILES)
@@ -63,6 +64,9 @@
 temp-ia64-generic: config-ia64-generic temp-generic
 	perl merge.pl $^ > $@
 
+temp-alpha-generic: config-alpha-generic temp-generic
+	perl merge.pl $^ > $@
+
 kernel-$(VERSION)-i686.config: config-i686 temp-x86-generic
 	perl merge.pl $^ i386 > $@
 
@@ -110,3 +114,9 @@
 
 kernel-$(VERSION)-ia64.config: /dev/null temp-ia64-generic
 	perl merge.pl $^ ia64 > $@
+
+kernel-$(VERSION)-alpha.config: /dev/null temp-alpha-generic
+	perl merge.pl $^ alpha > $@
+
+kernel-$(VERSION)-alpha-smp.config: config-alpha-smp temp-alpha-generic
+	perl merge.pl $^ alpha > $@


Index: kernel.spec
===================================================================
RCS file: /cvs/pkgs/rpms/kernel/F-9/kernel.spec,v
retrieving revision 1.898
retrieving revision 1.899
diff -u -r1.898 -r1.899
--- kernel.spec	27 Jan 2009 03:53:33 -0000	1.898
+++ kernel.spec	12 Mar 2009 12:57:36 -0000	1.899
@@ -74,7 +74,7 @@
 #
 # standard kernel
 %define with_up        %{?_without_up:        0} %{?!_without_up:        1}
-# kernel-smp (only valid for ppc 32-bit, sparc64)
+# kernel-smp (only valid for ppc 32-bit, sparc64 and alpha)
 %define with_smp       %{?_without_smp:       0} %{?!_without_smp:       1}
 # kernel-PAE (only valid for i686)
 %define with_pae       %{?_without_pae:       0} %{?!_without_pae:       1}
@@ -223,8 +223,8 @@
 
 # Overrides for generic default options
 
-# only ppc and sparc64 need separate smp kernels
-%ifnarch ppc sparc64 alphaev56
+# only ppc, sparc64, alpha need separate smp kernels
+%ifnarch ppc sparc64 alpha
 %define with_smp 0
 %endif
 
@@ -339,11 +339,13 @@
 %define kernel_image vmlinux.gz
 %endif
 
-%ifarch alpha alphaev56
+%ifarch alpha
 %define all_arch_configs kernel-%{version}-alpha*.config
 %define image_install_path boot
-%define make_target vmlinux
 %define kernel_image vmlinux
+%define make_target boot
+%define kernel_image arch/alpha/boot/vmlinux.gz
+%define kernel_image_elf 1
 %endif
 
 %if %{nopatches}
@@ -462,7 +464,7 @@
 Release: %{pkg_release}
 # DO NOT CHANGE THE 'ExclusiveArch' LINE TO TEMPORARILY EXCLUDE AN ARCHITECTURE BUILD.
 # SET %%nobuildarches (ABOVE) INSTEAD
-ExclusiveArch: noarch %{all_x86} x86_64 ppc ppc64 ia64 sparc sparc64 s390x alpha alphaev56
+ExclusiveArch: noarch %{all_x86} x86_64 ppc ppc64 ia64 sparc sparc64 s390x alpha
 ExclusiveOS: Linux
 
 %kernel_reqprovconf
@@ -531,6 +533,9 @@
 Source90: config-sparc64-generic
 Source91: config-sparc64-smp
 
+Source100: config-alpha-generic
+Source101: config-alpha-smp
+
 # Here should be only the patches up to the upstream canonical Linus tree.
 
 # For a stable release kernel
@@ -679,6 +684,13 @@
 
 Patch9000: skip-sanity-check-of-busy-resources.patch
 
+# Alpha-specific patches
+Patch10000: linux-2.6.28-alpha-exec_range.patch
+Patch10001: linux-2.6-alpha-pci_get_bus_and_slot.patch
+Patch10002: linux-2.6-alpha-eepro100-cleanup.patch
+Patch10003: linux-2.6.28-alpha-pci.h.patch
+Patch10004: linux-2.6-alpha-pci.c.patch
+
 %endif
 
 BuildRoot: %{_tmppath}/kernel-%{KVERREL}-root
@@ -1200,6 +1212,14 @@
 # fix #480700, acpi ec ioremap WARN_ON
 ApplyPatch skip-sanity-check-of-busy-resources.patch
 
+# Alpha specific patches
+ApplyPatch linux-2.6.28-alpha-exec_range.patch
+ApplyPatch linux-2.6-alpha-pci_get_bus_and_slot.patch
+ApplyPatch linux-2.6-alpha-eepro100-cleanup.patch
+ApplyPatch linux-2.6.28-alpha-pci.h.patch
+ApplyPatch linux-2.6-alpha-pci.c.patch
+
+
 # END OF PATCH APPLICATIONS
 
 %endif
@@ -1775,6 +1795,19 @@
 %kernel_variant_files -k vmlinux %{with_kdump} kdump
 
 %changelog
+* Wed Mar 11 2009 Oliver Falk <oliver at linux-kernel.at> 2.6.28.2-7
+- Modify kernel spec to build on alpha again
+- Remove all alphaev* from spec, as we only build for 'alpha'
+- Patches for alpha:
+  - linux-2.6.28-alpha-exec_range.patch
+    - add execshield dummy functions for alpha
+  - linux-2.6-alpha-pci_get_bus_and_slot.patch
+    - Do not limit bus/slot search to PCI domain 0 on alpha
+  - linux-2.6-alpha-eepro100-cleanup.patch
+    - cleanup extraneous "freeing mc frame" messages from driver
+  - linux-2.6.28-alpha-pci.h.patch, linux-2.6-alpha-pci.c.patch
+    - Platform support for /proc/bus/pci/X/Y mmap()s
+
 * Mon Jan 26 2009 Kyle McMartin <kyle at redhat.com> - 2.6.28.2-6
 - add skip-sanity-check-of-busy-resources.patch, fixes #480700, ioremap
   sanity check WARN_ON due to acpi ec.




More information about the fedora-extras-commits mailing list