1. 30 Sep, 2002 34 commits
    • David Brownell's avatar
      [PATCH] usb_sg_{init,wait,cancel}() · 1e4fece8
      David Brownell authored
      Here are the scatterlist primitives there's been mail about before.
      Now the code has passed basic sanity testing, and is ready to merge
      into Linus' tree to start getting wider use.  Greg, please merge!
      
      To recap, the routines are a utility layer packaging several usb
      core facilities to improve system performance.  It's synchronous.
      The code uses functionality that drivers could use already, but
      generally haven't:
      
          - Request queueing.  This is a big performance win.  It lets
            device drivers help the hcds avoid wasted i/o bandwidth, by
            eliminating irq and scheduling latencies between requests.  It
            can make a huge difference at high speed, when the latencies
            often exceed the time to handle each i/o request!
      
          - The new usb_map_sg() primitives, leveraging IOMMU hardware
            if it's there (better than entry-at-a-time mapping).
      
          - URB_NO_INTERRUPT transfer flag, a hint to hcds that they
            can avoid a 'success irq' for this urb.  Only the urb for
            the last scatterlist entry really needs an IRQ, the others
            can be eliminated or delayed.  (OHCI uses this today, and
            any HCD can safely ignore it.)
      
      The particular functionality in these APIs seemed to meet Matt's
      requirements for usb-storage, so I'd hope the 2.5 usb-storage
      code will start to use these routines in a while.  (And maybe
      those two scanner drivers: hpusbscsi, microtek.)
      
      Brief summary of testing:  this code seems correct for normal
      reads and writes, but the fault paths (including cancelation)
      haven't been tested yet.  Both EHCI and OHCI seem to be mostly
      OK with these more aggressive queued loads, but may need small
      updates (like the two I sent yesterday).  Unfortunately I have
      to report that UHCI and urb queueing will sometimes lock up my
      hardware (PIIX4), so while we're lots better than 2.4 this is
      still a bit of a trouble spot for now.
      
      I'll be making some testing software available shortly, which
      will help track down remaining HCD level problems by giving the
      queuing APIs (and some others!) a more strenuous workout than
      most drivers will, in their day-to-day usage.
      
      - Dave
      1e4fece8
    • Matthew Dharm's avatar
      [PATCH] USB-storage: problem clearing halts · 2eea1938
      Matthew Dharm authored
      Greg, attached is a patch designed for diagnostic purposes.  Please apply
      to the 2.5 tree -- yes, we'll be removing this at some point in the future.
      
      It appears that we have a problem clearing halts.  This patch causes a very
      clear message to be printed whenever a usb_stor_clear_halt() manages to
      work.  So far, I haven't seen such a thing happen.  And I've seen _lots_ of
      STALL conditions.
      
      This problem has likely been around for a while... however, it hasn't been
      noticed before because usb-storage was difficult to use because of other
      bugs.  Heck, the most recent 'bk pull' is the first one for me in _months_
      which let me boot all the way into X11.
      
      I'm going to hold my patch queue until this is resolved.  On my test setup,
      it's easy to see this failing.  I've tried with 4 different devices, with
      both UHCI and EHCI drivers.  I don't want to confuse this problem with
      other patches...
      
      'result' in this function always seems to be -32.  Which is odd, because
      control endpoints shouldn't do that.
      
      I'm open to suggestions as to where to look for this bug, but my instincts
      are telling me that this is a core or HCD issue, not a usb-storage issue.
      
      On a positive note, this means that the error-recovery system gets a good
      workout.
      2eea1938
    • David Brownell's avatar
      [PATCH] ohci-hcd, paranoia · 86cdffc9
      David Brownell authored
      In a test where some memory corruption happened, I noticed an
      oops (null pointer exception in_irq) that's avoidable.  Here's
      a patch that avoids it ... anyone seeing the err() is likely
      to hang some process, but that's better than the alternative.
      (Also inlines some used-once routines, saving a bit of space
      to make up for the new diagnostic.)
      86cdffc9
    • David Brownell's avatar
      [PATCH] ehci-hcd, urb queuing · c5375618
      David Brownell authored
      In doing some more extensive testing of the urb queueing behavior,
      I noticed that (a) IOC wasn't always being set for each urb, while
      for now it needs to be set; (b) a qh patchup wasn't done quite
      where it should be.  This resolves those two issues, as well
      as making it a bit less noisy to unlink lots of urbs at the once.
      c5375618
    • Greg Kroah-Hartman's avatar
      ef3249f3
    • David Brownell's avatar
      [PATCH] usbcore misc cleanup · 846f917c
      David Brownell authored
      This has minor usbcore cleanups:
      
      DOC:
          - the changes passing a usb_interface to driver probe() and disconnect()
            weren't reflected in their adjacent docs.  likewise they still said
            it was possible to get a null usb_device_id (no more).
      
          - the (root) hub API restrictions from rmk's ARM patch weren't
            flagged
      
          - mention the non-dma-coherent cache issue for usb_buffer_alloc()
      
          - mention disconnect() cleanup issue with usb_{control,bulk}_msg()
            [ you can't cancel those urbs from disconnect() ]
      
      CODE
          - make driver ioctl() use 'usb_interface' too ... this update
            also resolves an old 'one instance per device' bad assumption
      
          - module locking on driver->ioctl() was goofy, kept BKL way too
            long and didn't try_inc_mod_count() like the rest of usbcore
      
          - hcd unlink code treated iso inappropriately like interrupt;
            only interrupt still wants that automagic mode
      
          - move iso init out of ohci into shared submit_urb logic
      
          - remove interrupt transfer length restriction; hcds that don't
            handle packetization (just like bulk :) should be updated,
            but device drivers won't care for now.
      846f917c
    • Greg Kroah-Hartman's avatar
    • Greg Kroah-Hartman's avatar
      0dfd9af4
    • Greg Kroah-Hartman's avatar
    • Greg Kroah-Hartman's avatar
      driver core: added location of device in driverfs tree to /sbin/hotplug call. · c422d217
      Greg Kroah-Hartman authored
      /sbin/hotplug is now called when any device is added or removed from the
      system.
      c422d217
    • Greg Kroah-Hartman's avatar
    • Greg Kroah-Hartman's avatar
      USB: queue_task() fixups · d09b74a3
      Greg Kroah-Hartman authored
      d09b74a3
    • Matthew Wilcox's avatar
      [PATCH] Remove QDIO_BH · 06ccf012
      Matthew Wilcox authored
      QDIO_BH was never actually used anyway, and won't do much good now BHs
      are gone.
      06ccf012
    • Alexander Viro's avatar
      [PATCH] alloc_disk/put_disk · 2e26b412
      Alexander Viro authored
      Beginning of proper refcounting.  New helpers introduced, several drivers
      switched to using them for dynamic allocation of gendisks.  Once everything
      is switched (and that will be way easier than per-drive gendisks series)
      we will be able to add sane reference counts on gendisk, at which point
      we can safely put pointer to gendisk in struct block_device / struct request
      and we had pretty much won - from that point it's pretty straightforward
      crapectomy in drivers.
      2e26b412
    • Alexander Viro's avatar
      [PATCH] ->major_name inlined · db5605b2
      Alexander Viro authored
      char *major_name replaced with char disk_name[16];  All uses of ->major_name
      replaced with those of ->disk_name and (obviously) simplified big way.  Bunch
      of arrays, kmallocs, etc. is gone.
      db5605b2
    • Alexander Viro's avatar
      [PATCH] register_disk() unexported · 14cad666
      Alexander Viro authored
      ... now it can be done.  We also drop almost all arguments - there is only
      one caller and everything is determined by the first argument.
      14cad666
    • Alexander Viro's avatar
      [PATCH] ubd fixes · 09d9ea9b
      Alexander Viro authored
      Cleans the handling of partitioning up.  More or less the same story as with
      other drivers...
      09d9ea9b
    • Alexander Viro's avatar
      [PATCH] floppy fixes · bbad4394
      Alexander Viro authored
      corrected handling of sizes.  Ugh.
      bbad4394
    • Alexander Viro's avatar
      [PATCH] get_gendisk() prototype change · 02bf8fda
      Alexander Viro authored
      get_gendisk() now takes dev_t (instead of kdev_t) and gets an additional
      argument - int *part.  Set to 0 for non-partitioned, partition number
      for partititoned.  Callers updated.  Yes, I hate passing return values
      that way ;-/  We need that since old "minor(dev) - disk->first_minor"
      doesn't work for stuff with non-trivial numbers (e.g. floppy) and
      get_gendisk() really has to return both gendisk and partition number.
      Fortunately, amount of callers of gendisk() is about to drop RSN big way...
      02bf8fda
    • Alexander Viro's avatar
      [PATCH] gendisks list switched to list_head · 780ad0f4
      Alexander Viro authored
      The list used to generate /proc/partitions turned into list_head one;
      we also restore the old order of elements (originally we added to the end
      of list; recent changes had reverted that, now we are back to original
      order).
      780ad0f4
    • Jens Axboe's avatar
      [PATCH] set ide pci dma mask · c9175716
      Jens Axboe authored
      Make IDE set the dma mask to full 32-bit dma.
      c9175716
    • Jens Axboe's avatar
      [PATCH] loop clear q->queuedata on exit · bac4650d
      Jens Axboe authored
      Just for niceness, loop should clear queue queuedata when it exits.
      bac4650d
    • Jens Axboe's avatar
      [PATCH] raid5 BIO_UPTODATE set · ae5f1b4f
      Jens Axboe authored
      These days we only require a clear of BIO_UPTODATE on -EIO, we don't set
      it on success. This breaks raid5. It appears to clear BIO_UPTODATE fine
      but doesn't start out with it set.
      ae5f1b4f
    • Jens Axboe's avatar
      [PATCH] make loop set right queue restrictions · 8261c271
      Jens Axboe authored
      This makes loop honor the queue restrictions by basically stacking all
      of those, and mirroring the merge_bvec_fn() on the target queue. It also
      switches loop to use per-loop device queues, since that is the only sane
      way to do this from a performance POV. Also, in principle I find it to
      be much nicer if every distinct block device has its own queue.
      8261c271
    • Jens Axboe's avatar
      [PATCH] don't BUG() on too big a bio · cc27d75d
      Jens Axboe authored
      There's really no reason to BUG() out on a bio that is too big, the
      gentleman thing to do would be to print a warning and just end the bio
      with -EIO quietly.
      cc27d75d
    • Jens Axboe's avatar
      [PATCH] add function to set q->merge_bvec_fn · b4b97388
      Jens Axboe authored
      Add a function to set queue merge_bvec_fn to mimic the rest of the api,
      and also add documentation for that and blk_queue_prep_rq().
      b4b97388
    • Jens Axboe's avatar
      [PATCH] request_irq() use GFP_ATOMIC · 88a745f5
      Jens Axboe authored
      The might_sleep() thing caught ide, which calls request_irq() with a
      lock held. It can be argued that this is a bad thing, however I think it
      can also validly be argued that requesting an irq should not be a
      blocking operation. This might even remove some driver bugs where usage
      count is not incremented during init...
      
      It can also be argued, that the very first irq requests cannot be
      blocking for io anyways, for good reason :-)
      88a745f5
    • Björn A. Zeeb's avatar
      [PATCH] fix endless loop walking the MADT · 9170c9ef
      Björn A. Zeeb authored
      Too trivial to see the first time when debugging on weekends ;-))
      9170c9ef
    • Linus Torvalds's avatar
      Merge http://jdike.stearns.org:5000/highmem-2.5 · 4f3deba8
      Linus Torvalds authored
      into penguin.transmeta.com:/home/penguin/torvalds/repositories/kernel/linux
      4f3deba8
    • Jeff Dike's avatar
      Merge uml.karaya.com:/home/jdike/linux/2.5/linus-2.5 · 94c974a1
      Jeff Dike authored
      into uml.karaya.com:/home/jdike/linux/2.5/highmem-2.5
      94c974a1
    • Linus Torvalds's avatar
      Merge http://jdike.stearns.org:5000/updates-2.5 · c4884595
      Linus Torvalds authored
      into home.transmeta.com:/home/torvalds/v2.5/linux
      c4884595
    • Linus Torvalds's avatar
      Merge master.kernel.org:/home/davem/BK/sparc-2.5 · 828915fc
      Linus Torvalds authored
      into home.transmeta.com:/home/torvalds/v2.5/linux
      828915fc
    • Linus Torvalds's avatar
      Merge master.kernel.org:/home/davem/BK/net-2.5 · 04345692
      Linus Torvalds authored
      into home.transmeta.com:/home/torvalds/v2.5/linux
      04345692
    • Ingo Molnar's avatar
      [PATCH] sigfix-2.5.39-D0, BK-curr · 5b5a877d
      Ingo Molnar authored
      This fixes a procfs crash noticed by Anton Blanchard.
      
      The procfs code can have a reference even to an already exited task, so
      it needs to follow special rules accessing p->sig.  The atomic-signals
      patch made this bug happen at a much higher frequency, but procfs i
      believe was buggy ever since, it potentially used the freed signal
      structure - which just did not result in a crash like it does today.
      
      The proper fix is to take the tasklist read-lock in
      collect_sigign_sigcatch(), this excludes __exit_sighand() freeing the
      signal structure prematurely.
      5b5a877d
  2. 29 Sep, 2002 6 commits