1. 20 Nov, 2002 20 commits
    • Patrick Mochel's avatar
      driver model: make classes and interfaces use kobject infrastructure. · b47b46a3
      Patrick Mochel authored
      Like the other objects, this allows a decent bit of cleanup. Details include:
      
      - use rwsem in subsytem, instead of one in struct device_class.
      
      - use refcount in struct kobject, instead of one in struct device_class.
      
      - kill class's present flag. 
      
      - kill class_list, since we can just use class_subsys's. 
      
      - make interfaces instances of their class's subsystem. This allows us to 
      kill struct device_class::intf_list, and struct device_interface::node.
      b47b46a3
    • Patrick Mochel's avatar
      Merge osdl.org:/home/mochel/src/kernel/devel/linux-2.5-virgin · 63ae7a91
      Patrick Mochel authored
      into osdl.org:/home/mochel/src/kernel/devel/linux-2.5-kobject
      63ae7a91
    • Patrick Mochel's avatar
      driver model: update and clean bus and driver support. · 3c8d66aa
      Patrick Mochel authored
      This a multi-pronged attack aimed at exploiting the kobject infrastructure mor. 
      
      - Remove bus_driver_list, in favor of list in bus_subys.
      
      - Remove bus_for_each_* and driver_for_each_dev(). They're not being used by
      anyone, have questionable locking semantics, and really don't provide that
      much use, as the function returns once the callback fails, with no indication
      of where it failed. Forget them, at least for now. 
      
      - Make sure that we return success from bus_match() if device matches, but
      doesn't have a probe method.
      
      - Remove extraneous get_{device,driver}s from bus routines that are serialized
      by the bus's rwsem. bus_{add,remove}_{device,driver} all take the rwsem, so there 
      is no way we can get a non-existant object when in those functions.
      
      - Use the rwsem in the struct subsystem the bus has embedded in it, and kill the
      separate one in struct bus_type.
      
      - Move bulk of driver_register() into bus_add_driver(), which holds the bus's
      rwsem during the entirety. this will prevent the driver from being unloaded while
      it's being registered, and two drivers with the same name getting registered
      at the same time. 
      
      - Ditto for driver_unregister() and bus_remove_driver().
      
      - Add driver_release() method for the driver bus driver subsystems. (Explained later)
      
      - Use only the refcounts in the buses' kobjects, and kill the one in struct bus_type.
      
      - Kill struct bus_type::present and struct device_driver::present. These didn't 
      work out the way we intended them to. The idea was to not let a user obtain a 
      rerference count to the object if it was in the process of being unregistered. 
      All the code paths should be fixed now such that their registration is protected with
      a semaphore, so no partially initialized objects can be removed, and enough 
      infrastructure is moved to the kobject model so that once the object is publically
      visible, it should be usable by other sources.
      
      - Add a bus_sem to serialize bus registration and unregistration. 
      
      - Add struct device_driver::unload_sem to prevent unloading of drivers 
      with a positive reference count.
      
      The driver model has always had a bug that would allow a driver with a 
      positive reference count to be unloaded. It would decrement the reference 
      count and return, letting the module be unloaded, without accounting for 
      the other users of the object. This has been discussed many times, though 
      never resolved cleanly. This should fix the problem in the simplest manner.
      
      struct device_driver gets unload_sem, which is initialized to _locked_. When
      the reference count for the driver reaches 0, the semaphore is unlocked.
      driver_unregister() blocks on acquiring this lock before it exits. In the 
      normal case that driver_unregister() drops the last reference to the driver,
      the lock will be acquired immediately, and the module will unload. 
      
      In the case that someone else is using the driver object, driver_unregister()
      will not be able to acquire the lock, since the refcount has not reached 0,
      and the lock has not been released. 
      
      This means that rmmod(8) will block while drivers' sysfs files are open. 
      There are no sysfs files for drivers yet, but note this when they do have 
      some.
      3c8d66aa
    • Patrick Mochel's avatar
      sysfs: various updates. · 1b867c36
      Patrick Mochel authored
      - Don't do extra dget() when creating symlink. 
      This is a long-standing bug with a simple and obvious fix. We were doing 
      an extra dget() on the dentry after d_instantiate(). It only gets decremented
      once on removal, so the dentry was never really going away, and the directory
      wasn't, either. 
      
      - Use simple_unlink() instead of sysfs_unlink().
      
      - Use simple_rmdir() instead of our own, unrolled, version. 
      
      - Remove MODULE_LICENSE(), since it's always in the kernel. 
      1b867c36
    • Patrick Mochel's avatar
    • Patrick Mochel's avatar
      Merge osdl.org:/home/mochel/src/kernel/devel/linux-2.5-virgin · 95ca3c33
      Patrick Mochel authored
      into osdl.org:/home/mochel/src/kernel/devel/linux-2.5-kobject
      95ca3c33
    • Patrick Mochel's avatar
      Merge osdl.org:/home/mochel/src/kernel/devel/linux-2.5-virgin · 3c31f49e
      Patrick Mochel authored
      into osdl.org:/home/mochel/src/kernel/devel/linux-2.5-kobject
      3c31f49e
    • Linus Torvalds's avatar
      Merge bk://linux-scsi.bkbits.net/scsi-for-linus-2.5 · 621ce5a8
      Linus Torvalds authored
      into home.transmeta.com:/home/torvalds/v2.5/linux
      621ce5a8
    • James Bottomley's avatar
      Merge mulgrave.(none):/home/jejb/BK/scsi-misc-2.5 · 2983e9a6
      James Bottomley authored
      into mulgrave.(none):/home/jejb/BK/scsi-for-linus-2.5
      2983e9a6
    • Patrick Mansfield's avatar
      [PATCH] remove unused includes and misleading comments from scsi_lib.c · d67cf443
      Patrick Mansfield authored
      On Sun, Nov 17, 2002 at 11:54:49PM +0100, Christoph Hellwig wrote:
      
      > --- 1.46/drivers/scsi/scsi_lib.c	Thu Nov 14 18:09:17 2002
      > +++ edited/drivers/scsi/scsi_lib.c	Sun Nov 17 21:37:05 2002
      > @@ -7,50 +7,18 @@
      >   *                        of people at Linux Expo.
      >   */
      >
      > -/*
      > - * The fundamental purpose of this file is to contain a library of utility
      > - * routines that can be used by low-level drivers.   Ultimately the idea
      > - * is that there should be a sufficiently rich number of functions that it
      > - * would be possible for a driver author to fashion a queueing function for
      > - * a low-level driver if they wished.   Note however that this file also
      > - * contains the "default" versions of these functions, as we don't want to
      > - * go through and retrofit queueing functions into all 30 some-odd drivers.
      > - */
      > -
      > -#include <linux/module.h>
      > -
      > -#include <linux/sched.h>
      > -#include <linux/timer.h>
      >  #include <linux/string.h>
      >  #include <linux/slab.h>
      >  #include <linux/bio.h>
      > -#include <linux/ioport.h>
      >  #include <linux/kernel.h>
      > -#include <linux/stat.h>
      >  #include <linux/blk.h>
      > -#include <linux/interrupt.h>
      > -#include <linux/delay.h>
      > -#include <linux/smp_lock.h>
      >  #include <linux/completion.h>
      >
      > -
      > -#define __KERNEL_SYSCALLS__
      > -
      > -#include <linux/unistd.h>
      
      I had to add back the smp_lock.h include to compile with CONFIG_PREEMPT,
      as kernel_locked was not defined and is used by in_atomic().
      
      Patch against the latest scsi-misc-2.5:
      d67cf443
    • James Bottomley's avatar
      fix queue plug performance problem found by akpm · 996bfdf1
      James Bottomley authored
      Fix is to only plug on prep deferral if the device queue is empty
      (otherwise we can rely on returning I/O to restart the queue)
      996bfdf1
    • Petr Vandrovec's avatar
      [PATCH] Small matroxfb fixes · ed9d059f
      Petr Vandrovec authored
      * Fix compile warning in matroxfb when only 8bpp support is enabled.
      * Set memory type correctly on Matrox G400.
      ed9d059f
    • Petr Vandrovec's avatar
      [PATCH] Mark executable files as executable on ncpfs · b51c0c92
      Petr Vandrovec authored
      * Executable files on ncpfs are marked by combination of SHARED and
        SYSTEM attribute, not by SYSTEM attribute alone.
      
        After this change gcc output is really marked executable on ncpfs.
      b51c0c92
    • Petr Vandrovec's avatar
      [PATCH] Merge lcall7 and lcall27 code paths in ia32 · bb0d3f5d
      Petr Vandrovec authored
      lcall7 and lcall27 code paths are almost identical, except one
      constant. This code merges these two paths together, by moving
      constant to the beginning of function.
      
      It is possible to eliminate even more of lcall7 and lcall27
      code paths, but at cost of splitting SAVE_ALL into two halves,
      and I do not want to do that. But if you think that it is worth
      of effort, I can save 16 more bytes, but at cost of speed.
      
      Side effects of merge is that now stack is addressed relative
      to %ebx instead of relative to %esp, so generated code is
      shorter and faster.
      bb0d3f5d
    • Ivan Kokshaysky's avatar
      [PATCH] PCI setup: misc cleanups and fixes · 37256d28
      Ivan Kokshaysky authored
      - Use PCI_BUS_NUM_RESOURCES instead of hardcoded `4' in
        pci_find_parent_resource;
      - clean up pci_claim_resource() and make it a bit more informative
        on errors;
      - pdev_sort_resources() must be __devinit, as it's called from
        pbus_assign_resources_sorted(), which is __devinit now;
      - fix one remaining dev->name in debugging printk.
      37256d28
    • Ivan Kokshaysky's avatar
      [PATCH] PCI: transparent bridge detection fix · d613ff0a
      Ivan Kokshaysky authored
      The detection of subtractive decoding bridges is broken: `class' variable
      doesn't contain ProgIf byte at this point, I should check `dev->class'
      instead.
      
      This fixes resource allocation problems on certain docking stations.
      d613ff0a
    • Andries E. Brouwer's avatar
      [PATCH] *_mknod prototype · 72c85a12
      Andries E. Brouwer authored
      The dev_t argument of sys_mknod is passed to vfs_mknod, and is then cast
      to int when foo_mknod is called, and is subsequently very often cast
      back to dev_t.  (For example, minix_mknod() calls minix_set_inode() that
      takes a dev_t.)
      
      This is a cleanup that avoids this back-and-forth casting by giving
      foo_mknod a prototype with dev_t.  In most cases now the dev_t is
      transmitted untouched until init_special_inode.
      
      It also makes the two routines hugetlbfs_get_inode() and
      shmem_get_inode() static.
      72c85a12
    • Rusty Russell's avatar
      [PATCH] Module length calculation fix and module with no init fix · 41872921
      Rusty Russell authored
      Fixes miscalculation of required module size due to alignment issues of
      first section after common, and also doesn't think that no init section
      is an allocation failure.
      41872921
    • Rusty Russell's avatar
      [PATCH] module device table restoration · 5c0f111c
      Rusty Russell authored
      Patch from Adam Richter.  I have a nicer solution based on aliases, but
      it requires coordination with USB, PCI and PCMCIA maintainers, which is
      taking time.
      
      This restores the old code in the meantime: one week without this is too
      long for people who need it.
      5c0f111c
    • Linus Torvalds's avatar
      Merge bk://ppc.bkbits.net/for-linus-ppc · 8f79cdb7
      Linus Torvalds authored
      into home.transmeta.com:/home/torvalds/v2.5/linux
      8f79cdb7
  2. 21 Nov, 2002 4 commits
  3. 20 Nov, 2002 3 commits
  4. 19 Nov, 2002 13 commits
    • Linus Torvalds's avatar
      Merge bk://linuxusb.bkbits.net/pci-2.5 · 9f311f51
      Linus Torvalds authored
      into home.transmeta.com:/home/torvalds/v2.5/linux
      9f311f51
    • Linus Torvalds's avatar
      Merge bk://linuxusb.bkbits.net/linus-2.5 · e8825268
      Linus Torvalds authored
      into home.transmeta.com:/home/torvalds/v2.5/linux
      e8825268
    • Zwane Mwaikambo's avatar
      [PATCH] USB core/config.c == memory corruption · 34bc27e5
      Zwane Mwaikambo authored
      parse_interface allocates the incorrect storage size for additional
      altsettings (new buffer) leading to a BUG being triggered in
      mm/slab.c:1453 when we do the memcpy from the old buffer to the new
      buffer (writing beyond new buffer).
      Patch appended, tested with an OV511 on an Intel PIIX4
      34bc27e5
    • Matthew Wilcox's avatar
      [PATCH] rename get_lease to break_lease · 9de88958
      Matthew Wilcox authored
      Al pointed out that the current name of get_lease is extremely confusing
      and I agree.
      
      This (a) renames it to break_lease and (b) fixes a bug noticed by Dave
      Hansen which could cause a NULL pointer dereference under high load.
      9de88958
    • Greg Kroah-Hartman's avatar
      Merge kroah.com:/home/linux/linux/BK/bleeding-2.5 · e0afb99e
      Greg Kroah-Hartman authored
      into kroah.com:/home/linux/linux/BK/gregkh-2.5
      e0afb99e
    • Patrick Mochel's avatar
      driver model: exploit kobject contstructs. · b12cf4ff
      Patrick Mochel authored
      This makes the driver model core (for devices) exploit the kobject
      infrastructure more and make the resulting code quite a bit simpler. 
      
      For one, device_register() mimmicks kobject_register() in that it now only
      calls device_initialize() and device_add() back to back. Similarly, 
      device_unregister() calls device_del() and put_device() consecutively. 
      
      device_del() no longer removes and frees the device, it only removes them.
      It also removes the devices from the global and sibling lists. This was 
      previously done by device_put(), but moved here to be symmetrical with 
      device_add().
      
      The device's parent is now only incremented in device_add() and decremented
      in device_del(), fixing a bug in which the parent's refcount was incremented
      twice. 
      
      Because of these simplifications, the core can easily be converted to use 
      the kobject reference counting infrastructure. get_device() now simply 
      forwards the call to kobject_get() and ditto for put_device(). 
      device_release() is implemented to handle the freeing of devices once their
      reference count reaches 0.
      
      Since we're using the kobject refcounting model, we no longer need the 
      checking or setting of the device state field, so it has been removed. 
      The only users of it were the power routines. In those, it is implicit that
      we have a valid device, since we've already taken device_sem, and we're 
      walking the list (all modifications are protected by device_sem).
      
      struct device::lock, and the helpers to lock/unlock have been removed. No
      one has ever used them, and no one is likely to use them.
      b12cf4ff
    • Greg Kroah-Hartman's avatar
      USB: usb-serial core updates · 827eb892
      Greg Kroah-Hartman authored
       - removed a few #ifdefs in the main code
       - cleaned up the failure logic in initialization.
      827eb892
    • Patrick Mansfield's avatar
      [PATCH] Re: 2.5.48 /proc/scsi directory missing · a1a477f9
      Patrick Mansfield authored
      On Tue, Nov 19, 2002 at 10:45:25AM +1100, Douglas Gilbert wrote:
      > That directory (and all who sail in her, e.g. /proc/scsi/scsi)
      > seems to have disappeared. When the scsi_debug module is
      > loaded a /proc/scsi_debug/0 entry appears (that used to be
      > /proc/scsi/scsi_debug/0).
      >
      > Doug Gilbert
      
      It looks like the merge of Doug and Christoph's code dropped two calls
      (unless the exit devfs_unregister was supposed to be removed).
      
      Here's a patch for the addition of scsi_init_procfs, devfs_mk_dir and
      bus_unregister calls, and a small reordering so calls in exit_scsi
      match the reverse of those in init_scsi.
      a1a477f9
    • Douglas Gilbert's avatar
      scsi_debug 1.65 for lk 2.5.48 · 4e13766b
      Douglas Gilbert authored
      The scsi_debug version in lk 2.5.48 is the second last one
      I sent to this list. So this patch includes the changes from
      the last one I sent:
         - fix "in use" counting [hch]
         - clean up bios_param() code
      It also merges a sysfs re-organisation from Mike Anderson.
      4e13766b
    • James Bottomley's avatar
      fix queue run on returning I/O [axboe@suse.de] · 3dda41af
      James Bottomley authored
      On returning I/O, need to unplug the queue before we call the queue_fn. 
      This fixes a problem in 2.5.48 where the aic7xxx driver hangs under e2fsck.
      3dda41af
    • Christoph Hellwig's avatar
      [PATCH] remove unused includes and misleading comments from scsi_lib.c · d0a39a41
      Christoph Hellwig authored
      Some of that stuff might have been right for 2.4, but..
      
      (and btw, scsi_lib is pretty misleading, what about reusing scsi_queue.c?)
      d0a39a41
    • Christoph Hellwig's avatar
      cc8648a1
    • Christoph Hellwig's avatar
      [PATCH] rationalize allocation and freeing of struct scsi_device · a17430ad
      Christoph Hellwig authored
      Currently allocation and freeing of struct scsi_device is a mess.
      We have two nice functions in scsi_scan.c (scsi_allocate_sdev/
      scsi_free_sdev) that are the right interfaces to deal with it, so I moved
      them to scsi and made them non-static.  I've changed all functions
      allocation freeing them to use it.
      a17430ad