From owner-svn-src-projects@FreeBSD.ORG Sat Jul 17 01:40:41 2010 Return-Path: Delivered-To: svn-src-projects@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 9DC13106566C; Sat, 17 Jul 2010 01:40:41 +0000 (UTC) (envelope-from jeff@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id 8AD848FC12; Sat, 17 Jul 2010 01:40:41 +0000 (UTC) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.3/8.14.3) with ESMTP id o6H1efp9082330; Sat, 17 Jul 2010 01:40:41 GMT (envelope-from jeff@svn.freebsd.org) Received: (from jeff@localhost) by svn.freebsd.org (8.14.3/8.14.3/Submit) id o6H1efhc082305; Sat, 17 Jul 2010 01:40:41 GMT (envelope-from jeff@svn.freebsd.org) Message-Id: <201007170140.o6H1efhc082305@svn.freebsd.org> From: Jeff Roberson Date: Sat, 17 Jul 2010 01:40:41 +0000 (UTC) To: src-committers@freebsd.org, svn-src-projects@freebsd.org X-SVN-Group: projects MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r210183 - projects/ofed/head/sys/ofed/include/linux X-BeenThere: svn-src-projects@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the src " projects" tree" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sat, 17 Jul 2010 01:40:41 -0000 Author: jeff Date: Sat Jul 17 01:40:41 2010 New Revision: 210183 URL: http://svn.freebsd.org/changeset/base/210183 Log: - Various refinements to the linux wrappers. Sponsored by: Isilon Systems, iX Systems, and Panasas. Added: projects/ofed/head/sys/ofed/include/linux/delay.h projects/ofed/head/sys/ofed/include/linux/hardirq.h projects/ofed/head/sys/ofed/include/linux/rtnetlink.h projects/ofed/head/sys/ofed/include/linux/vmalloc.h Modified: projects/ofed/head/sys/ofed/include/linux/compiler.h projects/ofed/head/sys/ofed/include/linux/device.h projects/ofed/head/sys/ofed/include/linux/dmapool.h projects/ofed/head/sys/ofed/include/linux/file.h projects/ofed/head/sys/ofed/include/linux/fs.h projects/ofed/head/sys/ofed/include/linux/if_ether.h projects/ofed/head/sys/ofed/include/linux/interrupt.h projects/ofed/head/sys/ofed/include/linux/jiffies.h projects/ofed/head/sys/ofed/include/linux/kernel.h projects/ofed/head/sys/ofed/include/linux/kthread.h projects/ofed/head/sys/ofed/include/linux/linux_compat.c projects/ofed/head/sys/ofed/include/linux/list.h projects/ofed/head/sys/ofed/include/linux/log2.h projects/ofed/head/sys/ofed/include/linux/module.h projects/ofed/head/sys/ofed/include/linux/netdevice.h projects/ofed/head/sys/ofed/include/linux/pci.h projects/ofed/head/sys/ofed/include/linux/sched.h projects/ofed/head/sys/ofed/include/linux/string.h projects/ofed/head/sys/ofed/include/linux/sysfs.h projects/ofed/head/sys/ofed/include/linux/types.h Modified: projects/ofed/head/sys/ofed/include/linux/compiler.h ============================================================================== --- projects/ofed/head/sys/ofed/include/linux/compiler.h Sat Jul 17 01:39:44 2010 (r210182) +++ projects/ofed/head/sys/ofed/include/linux/compiler.h Sat Jul 17 01:40:41 2010 (r210183) @@ -46,6 +46,7 @@ #define __bitwise #define __devinitdata #define __init +#define __devinit #define __exit #define __stringify(x) #x #define __attribute_const__ __attribute__((__const__)) @@ -54,4 +55,6 @@ #define unlikely(x) __builtin_expect(!!(x), 0) #define typeof(x) __typeof(x) +#define uninitialized_var(x) x = x + #endif /* _LINUX_COMPILER_H_ */ Added: projects/ofed/head/sys/ofed/include/linux/delay.h ============================================================================== --- /dev/null 00:00:00 1970 (empty, because file is newly added) +++ projects/ofed/head/sys/ofed/include/linux/delay.h Sat Jul 17 01:40:41 2010 (r210183) @@ -0,0 +1,27 @@ +/*- + * Copyright (c) 2010 Isilon Systems, Inc. + * Copyright (c) 2010 iX Systems, Inc. + * Copyright (c) 2010 Panasas, Inc. + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice unmodified, this list of conditions, and the following + * disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * + * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR + * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES + * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. + * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, + * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT + * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF + * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ Modified: projects/ofed/head/sys/ofed/include/linux/device.h ============================================================================== --- projects/ofed/head/sys/ofed/include/linux/device.h Sat Jul 17 01:39:44 2010 (r210182) +++ projects/ofed/head/sys/ofed/include/linux/device.h Sat Jul 17 01:40:41 2010 (r210183) @@ -41,24 +41,30 @@ #include +enum irqreturn { IRQ_NONE = 0, IRQ_HANDLED, IRQ_WAKE_THREAD, }; +typedef enum irqreturn irqreturn_t; + struct class { const char *name; struct module *owner; devclass_t bsdclass; }; -struct linux_device { - struct linux_device *parent; +struct device { + struct device *parent; device_t bsddev; dev_t devt; struct class *class; - void (*release)(struct linux_device *dev); + void (*release)(struct device *dev); + irqreturn_t (*irqhandler)(int, void *); + void *irqtag; struct kobject kobj; uint64_t *dma_mask; void *driver_data; + }; -#define device linux_device +/* #define device linux_device */ struct class_attribute { struct attribute attr; Modified: projects/ofed/head/sys/ofed/include/linux/dmapool.h ============================================================================== --- projects/ofed/head/sys/ofed/include/linux/dmapool.h Sat Jul 17 01:39:44 2010 (r210182) +++ projects/ofed/head/sys/ofed/include/linux/dmapool.h Sat Jul 17 01:40:41 2010 (r210183) @@ -40,7 +40,7 @@ struct dma_pool { }; static inline struct dma_pool * -dma_pool_create(char *name, struct linux_device *dev, size_t size, +dma_pool_create(char *name, struct device *dev, size_t size, size_t align, size_t boundary) { struct dma_pool *pool; Modified: projects/ofed/head/sys/ofed/include/linux/file.h ============================================================================== --- projects/ofed/head/sys/ofed/include/linux/file.h Sat Jul 17 01:39:44 2010 (r210182) +++ projects/ofed/head/sys/ofed/include/linux/file.h Sat Jul 17 01:40:41 2010 (r210183) @@ -29,12 +29,18 @@ #define _LINUX_FILE_H_ #include +#include +#include +#include +#include + +#include struct linux_file; #undef file -struct fileops linuxfileops; +extern struct fileops linuxfileops; static inline struct linux_file * linux_fget(unsigned int fd) @@ -67,9 +73,9 @@ put_unused_fd(unsigned int fd) } static inline void -fd_install(unsigned int fd, struct file *file) +fd_install(unsigned int fd, struct linux_file *filp) { - file->f_ops = &linuxfileops; + filp->_file->f_ops = &linuxfileops; } #define file linux_file Modified: projects/ofed/head/sys/ofed/include/linux/fs.h ============================================================================== --- projects/ofed/head/sys/ofed/include/linux/fs.h Sat Jul 17 01:39:44 2010 (r210182) +++ projects/ofed/head/sys/ofed/include/linux/fs.h Sat Jul 17 01:40:41 2010 (r210183) @@ -30,12 +30,12 @@ #include #include -#include #include #include #include #include #include +#include struct module; struct kiocb; @@ -52,6 +52,8 @@ struct files_struct; #define i_cdev v_rdev #define S_IRUGO (S_IRUSR | S_IRGRP | S_IROTH) +#define S_IWUGO (S_IWUSR | S_IWGRP | S_IWOTH) + typedef struct files_struct *fl_owner_t; Added: projects/ofed/head/sys/ofed/include/linux/hardirq.h ============================================================================== --- /dev/null 00:00:00 1970 (empty, because file is newly added) +++ projects/ofed/head/sys/ofed/include/linux/hardirq.h Sat Jul 17 01:40:41 2010 (r210183) @@ -0,0 +1,33 @@ +/*- + * Copyright (c) 2010 Isilon Systems, Inc. + * Copyright (c) 2010 iX Systems, Inc. + * Copyright (c) 2010 Panasas, Inc. + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice unmodified, this list of conditions, and the following + * disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * + * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR + * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES + * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. + * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, + * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT + * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF + * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ +#ifndef _LINUX_HARDIRQ_H_ +#define _LINUX_HARDIRQ_H_ + +#define synchronize_irq(irq) panic("Unimplemented"); + +#endif /* _LINUX_HARDIRQ_H_ */ Modified: projects/ofed/head/sys/ofed/include/linux/if_ether.h ============================================================================== --- projects/ofed/head/sys/ofed/include/linux/if_ether.h Sat Jul 17 01:39:44 2010 (r210182) +++ projects/ofed/head/sys/ofed/include/linux/if_ether.h Sat Jul 17 01:40:41 2010 (r210183) @@ -28,7 +28,8 @@ #ifndef _LINUX_IF_ETHER_H_ #define _LINUX_IF_ETHER_H_ -#include +#include + #include #define ETH_P_8021Q ETHERTYPE_VLAN Modified: projects/ofed/head/sys/ofed/include/linux/interrupt.h ============================================================================== --- projects/ofed/head/sys/ofed/include/linux/interrupt.h Sat Jul 17 01:39:44 2010 (r210182) +++ projects/ofed/head/sys/ofed/include/linux/interrupt.h Sat Jul 17 01:40:41 2010 (r210183) @@ -29,4 +29,53 @@ #ifndef _LINUX_INTERRUPT_H_ #define _LINUX_INTERRUPT_H_ +#include + +#include +#include + +typedef irqreturn_t (*irq_handler_t)(int, void *); + +#define IRQ_RETVAL(x) ((x) != IRQ_NONE) + +#define IRQF_SHARED RF_SHAREABLE + +static void +_irq_handler(void *device) +{ + struct device *dev; + + dev = device; + dev->irqhandler(0, dev); +} + +static inline int +request_irq(unsigned int irq, irq_handler_t handler, unsigned long flags, + const char *name, void *device) +{ + struct resource *res; + struct device *dev; + int error; + int rid; + + dev = device; + rid = 0; + res = bus_alloc_resource_any(dev, SYS_RES_IRQ, &rid, flags | RF_ACTIVE); + if (res == NULL) + return (-ENXIO); + error = bus_setup_intr(dev, res, INTR_TYPE_NET | INTR_MPSAFE, NULL, + _irq_handler, dev, &dev->irqtag); + if (error) + return (-error); + dev->irqhandler = handler; + + return 0; +} + +static inline void +free_irq(unsigned int irq, void *device) +{ + /* XXX */ +} + #endif /* _LINUX_INTERRUPT_H_ */ Modified: projects/ofed/head/sys/ofed/include/linux/jiffies.h ============================================================================== --- projects/ofed/head/sys/ofed/include/linux/jiffies.h Sat Jul 17 01:39:44 2010 (r210182) +++ projects/ofed/head/sys/ofed/include/linux/jiffies.h Sat Jul 17 01:40:41 2010 (r210183) @@ -27,7 +27,8 @@ */ #ifndef _LINUX_JIFFIES_H_ #define _LINUX_JIFFIES_H_ -#include +#include + #include #include @@ -48,5 +49,6 @@ msecs_to_jiffies(int msec) #define time_after_eq(a, b) ((long)(a) - (long)(b) >= 0) #define time_before_eq(a, b) time_after_eq(b, a) +#define HZ hz #endif /* _LINUX_JIFFIES_H_ */ Modified: projects/ofed/head/sys/ofed/include/linux/kernel.h ============================================================================== --- projects/ofed/head/sys/ofed/include/linux/kernel.h Sat Jul 17 01:39:44 2010 (r210182) +++ projects/ofed/head/sys/ofed/include/linux/kernel.h Sat Jul 17 01:40:41 2010 (r210183) @@ -32,6 +32,7 @@ #include #include #include +#include #include #include @@ -48,9 +49,11 @@ #define BUG() panic("BUG") #define BUG_ON(condition) do { if (condition) BUG(); } while(0) +#define WARN_ON BUG_ON #undef ALIGN #define ALIGN(x, y) roundup2((x), (y)) +#define DIV_ROUND_UP howmany #define printk(X...) printf(X) #define udelay(t) DELAY(t) @@ -77,4 +80,6 @@ #define min_t(type, _x, _y) (type)(_x) < (type)(_y) ? (type)(_x) : (_y) #define max_t(type, _x, _y) (type)(_x) > (type)(_y) ? (type)(_x) : (_y) +#define num_possible_cpus() mp_ncpus + #endif /* _LINUX_KERNEL_H_ */ Modified: projects/ofed/head/sys/ofed/include/linux/kthread.h ============================================================================== --- projects/ofed/head/sys/ofed/include/linux/kthread.h Sat Jul 17 01:39:44 2010 (r210182) +++ projects/ofed/head/sys/ofed/include/linux/kthread.h Sat Jul 17 01:40:41 2010 (r210183) @@ -28,11 +28,16 @@ #ifndef _LINUX_KTHREAD_H_ #define _LINUX_KTHREAD_H_ -#include -#include +#include +#include +#include +#include #include #include +#include +#include + static inline void _kthread_fn(void *arg) { Modified: projects/ofed/head/sys/ofed/include/linux/linux_compat.c ============================================================================== --- projects/ofed/head/sys/ofed/include/linux/linux_compat.c Sat Jul 17 01:39:44 2010 (r210182) +++ projects/ofed/head/sys/ofed/include/linux/linux_compat.c Sat Jul 17 01:40:41 2010 (r210183) @@ -51,7 +51,8 @@ MALLOC_DEFINE(M_LINUX_DMA, "lnxdma", "Li #define RB_ROOT(head) (head)->rbh_root struct class miscclass; -struct linux_device miscroot; +struct device miscroot; +struct list_head pci_drivers; int panic_cmp(struct rb_node *one, struct rb_node *two) @@ -118,6 +119,7 @@ linux_compat_init(void) miscclass.name = "misc"; class_register(&miscclass); miscroot.bsddev = root_bus; + INIT_LIST_HEAD(&pci_drivers); } module_init(linux_compat_init); Modified: projects/ofed/head/sys/ofed/include/linux/list.h ============================================================================== --- projects/ofed/head/sys/ofed/include/linux/list.h Sat Jul 17 01:39:44 2010 (r210182) +++ projects/ofed/head/sys/ofed/include/linux/list.h Sat Jul 17 01:40:41 2010 (r210183) @@ -33,8 +33,9 @@ * FreeBSD header which requires it here so it is resolved with the correct * definition prior to the undef. */ +#include + #include -#include #include #include #include @@ -42,12 +43,16 @@ #include #include #include - #include + #include + #include #include +#include +#include + #define prefetch(x) struct list_head { Modified: projects/ofed/head/sys/ofed/include/linux/log2.h ============================================================================== --- projects/ofed/head/sys/ofed/include/linux/log2.h Sat Jul 17 01:39:44 2010 (r210182) +++ projects/ofed/head/sys/ofed/include/linux/log2.h Sat Jul 17 01:40:41 2010 (r210183) @@ -29,7 +29,8 @@ #ifndef _LINUX_LOG2_H_ #define _LINUX_LOG2_H_ -#include +#include + #include static inline unsigned long @@ -38,6 +39,12 @@ roundup_pow_of_two(unsigned long x) return (1UL << flsl(x - 1)); } +static inline int +is_power_of_2(unsigned long n) +{ + return (n == roundup_pow_of_two(n)); +} + static inline unsigned long rounddown_pow_of_two(unsigned long x) { Modified: projects/ofed/head/sys/ofed/include/linux/module.h ============================================================================== --- projects/ofed/head/sys/ofed/include/linux/module.h Sat Jul 17 01:39:44 2010 (r210182) +++ projects/ofed/head/sys/ofed/include/linux/module.h Sat Jul 17 01:40:41 2010 (r210183) @@ -37,10 +37,12 @@ #define MODULE_AUTHOR(name) #define MODULE_DESCRIPTION(name) #define MODULE_LICENSE(name) +#define MODULE_VERSION(name) #define THIS_MODULE ((struct module *)0) #define EXPORT_SYMBOL(name) +#define EXPORT_SYMBOL_GPL(name) #define module_init(fn) \ SYSINIT(fn, SI_SUB_DRIVERS, SI_ORDER_ANY, (fn), NULL) Modified: projects/ofed/head/sys/ofed/include/linux/netdevice.h ============================================================================== --- projects/ofed/head/sys/ofed/include/linux/netdevice.h Sat Jul 17 01:39:44 2010 (r210182) +++ projects/ofed/head/sys/ofed/include/linux/netdevice.h Sat Jul 17 01:40:41 2010 (r210183) @@ -28,8 +28,9 @@ #ifndef _LINUX_NETDEVICE_H_ #define _LINUX_NETDEVICE_H_ +#include + #include -#include #include #include @@ -55,4 +56,7 @@ extern struct net init_net; #define dev_get_by_index(n, idx) ifnet_byindex_ref((idx)) #define dev_put(d) if_rele((d)) +#define netif_running(dev) !!(dev->if_drv_flags & IFF_DRV_RUNNING) +#define netif_oper_up(dev) !!(dev->if_flags & IFF_UP) + #endif /* _LINUX_NETDEVICE_H_ */ Modified: projects/ofed/head/sys/ofed/include/linux/pci.h ============================================================================== --- projects/ofed/head/sys/ofed/include/linux/pci.h Sat Jul 17 01:39:44 2010 (r210182) +++ projects/ofed/head/sys/ofed/include/linux/pci.h Sat Jul 17 01:40:41 2010 (r210183) @@ -31,12 +31,12 @@ #include -#include -#include +#include #include +#include #include -#include #include +#include #include #include @@ -84,12 +84,12 @@ struct pci_driver { devclass_t bsdclass; }; -struct list_head pci_drivers; +extern struct list_head pci_drivers; #define __devexit_p(x) x struct pci_dev { - struct linux_device dev; + struct device dev; struct pci_driver *pdrv; uint64_t dma_mask; uint16_t device; @@ -97,16 +97,23 @@ struct pci_dev { }; static inline struct resource_list_entry * -_pci_get_rle(struct pci_dev *pdev, int bar) +_pci_get_rle(struct pci_dev *pdev, int type, int rid) { struct pci_devinfo *dinfo; struct resource_list *rl; - struct resource_list_entry *rle; dinfo = device_get_ivars(pdev->dev.bsddev); rl = &dinfo->resources; - if ((rle = resource_list_find(rl, SYS_RES_MEMORY, bar)) == NULL) - rle = resource_list_find(rl, SYS_RES_IOPORT, bar); + return resource_list_find(rl, type, rid); +} + +static inline struct resource_list_entry * +_pci_get_bar(struct pci_dev *pdev, int bar) +{ + struct resource_list_entry *rle; + + if ((rle = _pci_get_rle(pdev, SYS_RES_MEMORY, bar)) == NULL) + rle = _pci_get_rle(pdev, SYS_RES_IOPORT, bar); return (rle); } @@ -115,7 +122,7 @@ pci_resource_start(struct pci_dev *pdev, { struct resource_list_entry *rle; - if ((rle = _pci_get_rle(pdev, bar)) == NULL) + if ((rle = _pci_get_bar(pdev, bar)) == NULL) return (0); return rle->start; } @@ -125,7 +132,7 @@ pci_resource_len(struct pci_dev *pdev, i { struct resource_list_entry *rle; - if ((rle = _pci_get_rle(pdev, bar)) == NULL) + if ((rle = _pci_get_bar(pdev, bar)) == NULL) return (0); return rle->count; } @@ -138,7 +145,7 @@ pci_resource_flags(struct pci_dev *pdev, { struct resource_list_entry *rle; - if ((rle = _pci_get_rle(pdev, bar)) == NULL) + if ((rle = _pci_get_bar(pdev, bar)) == NULL) return (0); return rle->type; } @@ -193,7 +200,6 @@ pci_request_region(struct pci_dev *pdev, int type; type = pci_resource_flags(pdev, bar); - rid = PCIR_BAR(bar); if (bus_alloc_resource_any(pdev->dev.bsddev, type, &rid, RF_ACTIVE) == NULL) @@ -206,7 +212,7 @@ pci_release_region(struct pci_dev *pdev, { struct resource_list_entry *rle; - if ((rle = _pci_get_rle(pdev, bar)) == NULL) + if ((rle = _pci_get_bar(pdev, bar)) == NULL) return; bus_release_resource(pdev->dev.bsddev, rle->type, rle->rid, rle->res); } @@ -255,6 +261,7 @@ linux_pci_probe(device_t dev) static inline int linux_pci_attach(device_t dev) { + struct resource_list_entry *rle; struct pci_dev *pdev; struct pci_driver *pdrv; struct pci_device_id *id; @@ -268,6 +275,9 @@ linux_pci_attach(device_t dev) pdev->pdrv = pdrv; kobject_init(&pdev->dev.kobj, NULL); kobject_set_name(&pdev->dev.kobj, device_get_nameunit(dev)); + rle = _pci_get_rle(pdev, SYS_RES_IRQ, 0); + if (rle) + pdev->irq = rle->start; error = pdrv->probe(pdev, id); if (error) return (-error); @@ -297,8 +307,6 @@ pci_register_driver(struct pci_driver *p devclass_t bus; int error; - if (pci_drivers.prev == NULL && pci_drivers.next == NULL) - INIT_LIST_HEAD(&pci_drivers); list_add(&pdrv->links, &pci_drivers); bus = devclass_find("pci"); pdrv->driver.name = pdrv->name; Added: projects/ofed/head/sys/ofed/include/linux/rtnetlink.h ============================================================================== --- /dev/null 00:00:00 1970 (empty, because file is newly added) +++ projects/ofed/head/sys/ofed/include/linux/rtnetlink.h Sat Jul 17 01:40:41 2010 (r210183) @@ -0,0 +1,27 @@ +/*- + * Copyright (c) 2010 Isilon Systems, Inc. + * Copyright (c) 2010 iX Systems, Inc. + * Copyright (c) 2010 Panasas, Inc. + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice unmodified, this list of conditions, and the following + * disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * + * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR + * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES + * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. + * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, + * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT + * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF + * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ Modified: projects/ofed/head/sys/ofed/include/linux/sched.h ============================================================================== --- projects/ofed/head/sys/ofed/include/linux/sched.h Sat Jul 17 01:39:44 2010 (r210182) +++ projects/ofed/head/sys/ofed/include/linux/sched.h Sat Jul 17 01:40:41 2010 (r210183) @@ -100,4 +100,6 @@ do { \ kick_proc0(); \ } while (0) +#define cond_resched() sched_relinquish(curthread) + #endif /* _LINUX_SCHED_H_ */ Modified: projects/ofed/head/sys/ofed/include/linux/string.h ============================================================================== --- projects/ofed/head/sys/ofed/include/linux/string.h Sat Jul 17 01:39:44 2010 (r210182) +++ projects/ofed/head/sys/ofed/include/linux/string.h Sat Jul 17 01:40:41 2010 (r210183) @@ -29,12 +29,12 @@ #ifndef _LINUX_STRING_H_ #define _LINUX_STRING_H_ -#include -#include #include #include #include +#include + static inline void * kmemdup(const void *src, size_t len, gfp_t gfp) { Modified: projects/ofed/head/sys/ofed/include/linux/sysfs.h ============================================================================== --- projects/ofed/head/sys/ofed/include/linux/sysfs.h Sat Jul 17 01:39:44 2010 (r210182) +++ projects/ofed/head/sys/ofed/include/linux/sysfs.h Sat Jul 17 01:40:41 2010 (r210183) @@ -41,4 +41,11 @@ struct sysfs_ops { size_t); }; +struct attribute_group { + const char *name; + mode_t (*is_visible)(struct kobject *, + struct attribute *, int); + struct attribute **attrs; +}; + #endif /* _LINUX_SYSFS_H_ */ Modified: projects/ofed/head/sys/ofed/include/linux/types.h ============================================================================== --- projects/ofed/head/sys/ofed/include/linux/types.h Sat Jul 17 01:39:44 2010 (r210182) +++ projects/ofed/head/sys/ofed/include/linux/types.h Sat Jul 17 01:40:41 2010 (r210183) @@ -28,6 +28,7 @@ #ifndef _LINUX_TYPES_H_ #define _LINUX_TYPES_H_ +#include #include #include #include Added: projects/ofed/head/sys/ofed/include/linux/vmalloc.h ============================================================================== --- /dev/null 00:00:00 1970 (empty, because file is newly added) +++ projects/ofed/head/sys/ofed/include/linux/vmalloc.h Sat Jul 17 01:40:41 2010 (r210183) @@ -0,0 +1,32 @@ +/*- + * Copyright (c) 2010 Isilon Systems, Inc. + * Copyright (c) 2010 iX Systems, Inc. + * Copyright (c) 2010 Panasas, Inc. + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice unmodified, this list of conditions, and the following + * disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * + * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR + * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES + * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. + * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, + * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT + * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF + * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + +#ifndef _LINUX_VMALLOC_H_ +#define _LINUX_VMALLOC_H_ + +#endif /* _LINUX_VMALLOC_H_ */