1. 09 Oct, 2002 40 commits
    • Matt Domsch's avatar
      Merge dell.com:/home/mdomsch/bk/linux-2.5 · c064432f
      Matt Domsch authored
      into dell.com:/home/mdomsch/bk/linux-2.5-edd-tolinus
      c064432f
    • Linus Torvalds's avatar
      Merge bk://are.twiddle.net/axp-2.5 · b873ed19
      Linus Torvalds authored
      into home.transmeta.com:/home/torvalds/v2.5/linux
      b873ed19
    • Matt Domsch's avatar
      Merge dell.com:/home/mdomsch/bk/linux-2.5 · ab4faa06
      Matt Domsch authored
      into dell.com:/home/mdomsch/bk/linux-2.5-edd-tolinus
      ab4faa06
    • Richard Henderson's avatar
    • Matt Domsch's avatar
      EDD: x86 BIOS Enhanced Disk Drive support · 7df2bda6
      Matt Domsch authored
      The major changes implemented in this patch:
      arch/i386/boot/setup.S - int13 real mode calls store results in empty_zero_page
      arch/i386/kernel/setup.c - copy results from empty_zero_page to local storage
      arch/i386/kernel/edd.c - module exports results via driverfs
      
      x86 systems suffer from a disconnect between what BIOS believes is the
      boot disk, and what Linux thinks BIOS thinks is the boot disk.  This
      manifests itself in multi-disk systems - it's quite possible to
      install a distribution, only to fail on reboot - the disk installed to
      is not the disk BIOS is booting from.  Dell restricts our possible
      standard factory installed Linux offerings to "disks on no more than
      one controller" to avoid this problem, but mechanisms now exist to
      solve it and allow such configurations.
      
      BIOS Enhanced Disk Device Services (EDD) 3.0 provides the ability for
      disk adapter BIOSs to tell the OS what it believes is the boot disk.
      While this isn't widely implemented in BIOSs yet, it's time that Linux
      received support to be ready as BIOSs with this feature do become
      available.  At a minimum, LSI MegaRAID cards support this today.
      
      EDD works by providing the bus (PCI, PCI-X, ISA, InfiniBand, PCI
      Express, or HyperTransport) location (e.g. PCI 02:01.0) and interface
      (ATAPI, ATA, SCSI, USB, 1394, FibreChannel, I2O, RAID, SATA) location
      (e.g. SCSI ID 5 LUN 0) information for each BIOS int13 device.
      
      The patch below creates CONFIG_EDD, that when defined, makes the
      BIOS int13 calls to retrieve and store this information.  The data is
      copied to a safe place in setup.c, and exported via driverfs.
      
      Here's a sample driverfs tree with two BIOS int13 devices - dev 80 has
      incorrect PCI bus information, thus no symlinks are made, but as much
      info as possible is presented.  Dev 81 has correct PCI and SCSI
      information, thus symlinks are made to the actual disc device.
      
      /driverfs
      |-- bios
      |   |-- int13_dev80
      |   |   |-- extensions
      |   |   |-- host_bus
      |   |   |-- info_flags
      |   |   |-- interface
      |   |   |-- raw_data
      |   |   |-- sectors
      |   |   `-- version
      |   `-- int13_dev81
      |       |-- extensions
      |       |-- host_bus
      |       |-- info_flags
      |       |-- interface
      |       |-- pci_dev -> ../../root/pci2/02:0c.0/03:00.0/04:00.0
      |       |-- raw_data
      |       |-- disc -> ../../root/pci2/02:0c.0/03:00.0/04:00.0/scsi4/4:0:0:0
      |       |-- sectors
      |       `-- version
      |-- bus
      |   |-- scsi
      |   |   |-- devices
      |   |   |   |-- 4:0:0:0 -> ../../../root/pci2/02:0c.0/03:00.0/04:00.0/scsi4/4:0:0:0
      |   |   `-- drivers
      |   |       `-- sd
      `-- root
          |-- pci2
          |   |-- 02:0c.0
          |   |   |-- 03:00.0
          |   |   |   |-- 04:00.0
          |   |   |   |   |-- irq
          |   |   |   |   |-- name
          |   |   |   |   |-- power
          |   |   |   |   |-- resource
          |   |   |   |   `-- scsi4
          |   |   |   |       |-- 4:0:0:0
          |   |   |   |       |   |-- 4:0:0:0::p1
          |   |   |   |       |   |   |-- kdev
          |   |   |   |       |   |   |-- name
          |   |   |   |       |   |   |-- power
          |   |   |   |       |   |   `-- type
          |   |   |   |       |   |-- 4:0:0:0:disc
          |   |   |   |       |   |   |-- kdev
          |   |   |   |       |   |   |-- name
          |   |   |   |       |   |   |-- power
          |   |   |   |       |   |   `-- type
          |   |   |   |       |   |-- name
          |   |   |   |       |   |-- power
          |   |   |   |       |   `-- type
      
      
      (Yes, the 'bios' top-level directory isn't the right place,
       and Patrick has promised to make something there in the future,
       at which point this can be moved.)
      
      The 'raw_data' file contains the full set of information returned by BIOS
      with extra error reporting.  This exists for vendor BIOS debugging purposes.
      
      The 'host-bus' file contains the PCI (or ISA, HyperTransport, ...)
      identifying information, as BIOS knows it.
      
      The 'interface' file contains the SCSI (or IDE, USB, ...) identifying
      information, as BIOS knows it.
      
      The 'extensions' file lists the BIOS EDD extensions per spec.
      The 'info_flags' file lists the BIOS EDD device information flags per spec.
      The 'sectors' file reports the number of sectors BIOS believes this
      device has.
      The 'version' file lists the EDD version.  To have device path
      information, this must be 0x30 or above.  Earlier EDD versions exist
      without the device path - as much information as is available is presented.
      
      At most 6 BIOS devices are reported, as that fills the space that's
      left in the empty_zero_page.  In general you only care about device
      80h, though for software RAID1 knowing what 81h is might be useful also.
      
      
      
      Known issues:
      - module unload leaves a directory around.  Seems related to
        creating symlinks in that directory.  Seen on kernel 2.5.41.
      - refcounting of struct device objects could be improved.
      
      TODO:
      - Add IDE and USB disk device support
      - when driverfs model of discs and partitions changes,
        update symlink accordingly.
      - Get symlink creator helper functions exported from
        drivers/base instead of duplicating them here.
      - move edd.[ch] to better locations if/when one is decided
      
      I'd also like to acknowledge the help and comments received from Greg
      KH and Patrick Mochel.  This isn't something driverfs was originally
      conceived to handle, their assistance has been invaluable.
      
      Please pull from:
      
      BK:
          http://mdomsch.bkbits.net/linux-2.5-edd-tolinus
      
      Patch (against 2.5.41+BK-current):
          http://domsch.com/linux/edd30/edd-driverfs-6.patch
          http://domsch.com/linux/edd30/edd-driverfs-6.patch.sign
      
      Thanks,
      Matt
      
      -- 
      Matt Domsch
      Sr. Software Engineer, Lead Engineer, Architect
      Dell Linux Solutions www.dell.com/linux
      Linux on Dell mailing lists @ http://lists.us.dell.com
      7df2bda6
    • Richard Henderson's avatar
      Merge ssh://are.twiddle.net/BK/axp-2.5 · 73bd2109
      Richard Henderson authored
      into dot.sfbay.redhat.com:/dot/bang/rth/linux/axp-2.5
      73bd2109
    • David Jeffery's avatar
      [PATCH] ips driver 6/6 · 583bcb77
      David Jeffery authored
      2 bug fixes for scsi pass through
      
      When talking directly to scsi devices, the driver would
      sometimes get two things wrong.  We could set too short
      of a timeout. Or, we could confuse the adapter by having
      non-zero values in certain fields which we shouldn't have
      been using.  This patch corrects these problems.
      583bcb77
    • David Jeffery's avatar
      [PATCH] ips driver 5/6 · 1417bd08
      David Jeffery authored
      2 minor bug fixes.
      
      The first section makes sure we limit the size of the
      sense_buffer copy to the target buffer's size so that
      we don't overflow the sence_buffer.
      
      The other sections remove some pointer arithmatic that
      is wrong on 64bit machines do to padding.  Instead, just
      call the pci_map functions on the buffer.
      1417bd08
    • David Jeffery's avatar
      [PATCH] ips driver 4/6 · 20081964
      David Jeffery authored
      This is by far the biggest patch.  It is a rewrite of the
      driver's horrid locking.  In addition to the host_lock,
      the driver used to have 4 other locks per adapter!
      It had a redundant ha_lock and a lock for each of 3
      queues.  In a few places it also played with atomic bit
      setting. And almost all of it was useless as the
      host_lock was already held.
      
      This patch cleans up this locking nightmare.  The driver
      now uses the host_lock exclusively.  Only a few places
      needed to add calls to lock the host_lock.  Most of
      this patch is deletion of useless extra locking.
      20081964
    • David Jeffery's avatar
      [PATCH] ips driver 3/6 · d3c20327
      David Jeffery authored
      This patch adds an Adaptec copyright, makes a few
      minor comment changes, and removes a few unneeded
      macros.
      d3c20327
    • David Jeffery's avatar
      [PATCH] ips driver 2/6 · 705f83df
      David Jeffery authored
      This patch is some simple code consolidation.
      A new function ips_abort_init() is created
      and consolidates some repeated code that is
      used if there is an error during initialization
      of the adapter.
      705f83df
    • David Jeffery's avatar
      [PATCH] ips driver 1/6 · ab804805
      David Jeffery authored
      This removes several unused header includes and allows
      the driver to compile by no longer trying to include
      <linux/tqueue.h> . You may have already gotten a patch
      to remove tqueue.h from someone else.
      
      This patch also corrects the spelling of my last name
      in the MAINTAINERS file.  You'd think I'd be used to
      seeing it spelled wrong by now.
      ab804805
    • Richard Henderson's avatar
      Merge are.twiddle.net:/home/rth/BK/linus-2.5 · c0fcc4c7
      Richard Henderson authored
      into are.twiddle.net:/home/rth/BK/axp-2.5
      c0fcc4c7
    • Linus Torvalds's avatar
      wd7000 indent pass, no code changes · cd509844
      Linus Torvalds authored
      indent -kr -i8 -bri0 -l255 wd7000.{c,h}
      cd509844
    • Doug Ledford's avatar
      [PATCH] compile fix for cpqfc driver · 6f720ad0
      Doug Ledford authored
      6f720ad0
    • Robert Love's avatar
      [PATCH] getpid() comment typo · 0f61ccea
      Robert Love authored
      Comment above getpid() is wrong.
      
      This patch fixes it, and expands the comment to explain why on earth
      we have getpid() returning ->tgid and not ->pid.
      0f61ccea
    • Robert Love's avatar
      [PATCH] fix preempt_count overflow with brlocks · 2a7a183f
      Robert Love authored
      Now that brlocks loop over NR_CPUS, on SMP every br_lock/br_unlock
      results in the acquire/release of 32 locks.  This incs/decs the
      preempt_count by 32.
      
      Since we only have 7 bits now for actually storing the lock depth, we
      cannot nest but 3 locks deep.  I doubt we ever acquire three brlocks
      concurrently, but it is still a concern.
      
      Attached patch disables/enables preemption explicitly once and only
      once for each lock/unlock.  This is also an optimization as it
      removes 31 incs, decs, and conditionals. :)
      
      Problem reported by Andrew Morton.
      2a7a183f
    • Alan Cox's avatar
      [PATCH] 3c501 for 2.5 · 26113ebe
      Alan Cox authored
      Not much here, just some tidying/checking. This driver can't alas use NAPI
      in 2.5. Note however it has no panics or BUG()s so appears to meet the
      carrier grade guidelines ;)
      
      - Clarified authors so I get the mail not Donald
      - Added missing MODULE_ bits
      - Moved junk into 3c501.h
      26113ebe
    • Alan Cox's avatar
      [PATCH] first pass over the in2000 · 73c8ae7c
      Alan Cox authored
      - new locking
      - new_eh
      - use ->page/->offset
      73c8ae7c
    • Linus Torvalds's avatar
      Merge bk://ldm.bkbits.net/linux-2.5-ide · ff64a6e3
      Linus Torvalds authored
      into penguin.transmeta.com:/home/penguin/torvalds/repositories/kernel/linux
      ff64a6e3
    • Patrick Mochel's avatar
      IDE: make ide_drive_remove() call driver's ->cleanup(). · ef1e58e7
      Patrick Mochel authored
      This was accidentally dropped before, but re-added now to completely mimic
      behavior of the reboot notifier IDE used to have. 
      ef1e58e7
    • Patrick Mochel's avatar
      IDE: Add generic remove() method for drives; remove reboot notifier. · 5530a5d1
      Patrick Mochel authored
        
      The remove() method is generic for all drives, and set in ide_driver_t::gen_driver.
      The call simply forwards the call to ide_driver_t::standby(). 
      
      This obviates the need for IDE reboot notifier. The core iterates over all present
      devices in device_shutdown() and unregisters each one. 
      5530a5d1
    • Patrick Mochel's avatar
      IDE: register ide driver for all ide drives; not just for disk drives. · b134c462
      Patrick Mochel authored
        
      This adds
            struct device_driver    gen_driver;
        
      to ide_driver_t, which is filled in with necessary fields when an ide
      driver calls ide_register_driver(). That then registers the driver with
      the driver model core. 
        
      As a result, this gives us the following output in driverfs:
        
      # tree -d /sys/bus/ide/drivers/
      /sys/bus/ide/drivers/
      |-- ide-cdrom
      `-- ide-disk
        
      The suspend/resume callbacks in ide-disk.c have been temporarily
      disabled until the ide core implements generic methods which forward
      the calls to the drive drivers. 
      b134c462
    • Richard Henderson's avatar
      Merge ssh://are.twiddle.net/BK/linus-2.5 · df818849
      Richard Henderson authored
      into dot.sfbay.redhat.com:/dot/bang/rth/linux/axp-2.5
      df818849
    • Richard Henderson's avatar
      Merge are.twiddle.net:/home/rth/BK/linus-2.5 · a1abbd62
      Richard Henderson authored
      into are.twiddle.net:/home/rth/BK/axp-2.5
      a1abbd62
    • Thomas Molina's avatar
      [PATCH] missing exports · e38e1e7f
      Thomas Molina authored
      the netfilter ipt owner module still needs the following to compile
      e38e1e7f
    • Thomas Molina's avatar
      [PATCH] remove double "lock" in v_midi.h · 0bb7248b
      Thomas Molina authored
      A second instance of lock had been inadvertently added to v_midi.h
      0bb7248b
    • Patrick Mochel's avatar
      IDE: add struct device to ide_drive_t and use that for IDE drives · ca0e5f35
      Patrick Mochel authored
      ... instead of the one in struct gendisk.
      ca0e5f35
    • Martin Schwidefsky's avatar
      [PATCH] s390 update: 3270 console · 513ec1e8
      Martin Schwidefsky authored
      Fix 3270 console reboot loop. Recognize 3270 control unit type 3174.
      Fix tubfs kmallocs. Dynamically get 3270 input buffer. Get bootup colors
      right on 3270 console
      513ec1e8
    • Martin Schwidefsky's avatar
      [PATCH] s390 update: syscall tracing · 0dd3cc51
      Martin Schwidefsky authored
      Pass the system call number in grp2 to strace instead of -ENOSYS.
      0dd3cc51
    • Martin Schwidefsky's avatar
      [PATCH] s390 update: superfluous memset · b579a8f7
      Martin Schwidefsky authored
      Remove a duplicate memset. That is already done in alloc_disk.
      b579a8f7
    • Martin Schwidefsky's avatar
      [PATCH] s390 update: linker script typo · 6be2f1e5
      Martin Schwidefsky authored
      Correct typo in the vmlinux.lds.S files.
      6be2f1e5
    • Martin Schwidefsky's avatar
      [PATCH] s390 update: tasklets · 4a975df3
      Martin Schwidefsky authored
      Switch from work queues to tasklets in the 3215 and 3270 drivers.
      4a975df3
    • Martin Schwidefsky's avatar
      [PATCH] s390 update: work queues · 636efd6a
      Martin Schwidefsky authored
      Remove all tq_structs from s390 driver code.
      636efd6a
    • Martin Schwidefsky's avatar
      [PATCH] s390 update: compile fixes · fea7f50e
      Martin Schwidefsky authored
      Switch to @$(generate-asm-offsets.h) method to create the asm-offsets.h file,
      fix signal dequeueing in the 31 bit emulation code and fix includes.
      fea7f50e
    • Linus Torvalds's avatar
      Merge bk://linux-input.bkbits.net/linux-input · f355ae1c
      Linus Torvalds authored
      into home.transmeta.com:/home/torvalds/v2.5/linux
      f355ae1c
    • Vojtech Pavlik's avatar
      fd17b576
    • Vojtech Pavlik's avatar
      Don't try to enable extra keys on IBM/Chicony keyboards as this upsets · 6bb434ef
      Vojtech Pavlik authored
      several notebook keyboards. Until we find a better solution how to detect
      who are we talking to, we rely on the kernel command line. Use
      atkbd_set=4 to gain access to the extra keys.
      6bb434ef
    • Vojtech Pavlik's avatar
    • Vojtech Pavlik's avatar
      16c561f7