28 Sep, 2008

3 commits

  • Enabling IDE generic may prevent ATA controllers located on legacy
    ports from being attached to more proper driver or can prevent other
    controllers which share the IRQ from working. Note it in the help
    message.

    Signed-off-by: Tejun Heo
    Cc: xerces8
    Cc: Jeff Garzik
    Cc: stein@hermes.si
    [bart: s/will grab/may grab/ since Borislav has fixed PCI-case for .28]
    Signed-off-by: Bartlomiej Zolnierkiewicz

    Tejun Heo
     
  • Remove superfluous two bytes from each string buffer and add proper length
    format specifiers.

    Signed-off-by: Borislav Petkov
    Tested-by: Mark de Wever
    Acked-by: Sergei Shtylyov
    Signed-off-by: Bartlomiej Zolnierkiewicz

    Borislav Petkov
     
  • If things are just right this will result in the hws[0]->parent being
    passed to ide_host_add() being non-zero and an ooops a little later.

    Signed-off-by: Ralf Baechle
    Signed-off-by: Bartlomiej Zolnierkiewicz

    Ralf Baechle
     

11 Sep, 2008

3 commits

  • * 'for-linus' of git://git.kernel.dk/linux-2.6-block:
    block: disable sysfs parts of the disk command filter

    Linus Torvalds
     
  • We still have life time issues with the sysfs command filter kobject,
    so disable it for 2.6.27 release. We can revisit this and make it work
    properly for 2.6.28, for 2.6.27 release it's too risky.

    Signed-off-by: Jens Axboe

    Jens Axboe
     
  • git commit 74811f355f4f69a187fa74892dcf2a684b84ce99 causes crash at
    module load (or boot) time on my machine with a hpt374 controller.
    The reason for this is that for initializing second controller which sets
    (hwif->dev == host->dev[1]) to true (1), adds 1 to a void ptr, which
    advances it by one byte instead of advancing it by sizeof(hpt_info) bytes.
    Because of this, all initialization functions get corrupted data in info
    variable which causes a crash at boot time.

    This patch fixes that and makes my machine boot again.

    The card itself is a HPT374 raid conroller: Here is the lspci -v output:
    03:06.0 RAID bus controller: HighPoint Technologies, Inc. HPT374 (rev
    07)
    Subsystem: HighPoint Technologies, Inc. Unknown device 0001
    Flags: bus master, 66MHz, medium devsel, latency 120, IRQ 28
    I/O ports at 8000 [size=8]
    I/O ports at 7800 [size=4]
    I/O ports at 7400 [size=8]
    I/O ports at 7000 [size=4]
    I/O ports at 6800 [size=256]
    Expansion ROM at fe8e0000 [disabled] [size=128K]
    Capabilities: [60] Power Management version 2

    03:06.1 RAID bus controller: HighPoint Technologies, Inc. HPT374 (rev
    07)
    Subsystem: HighPoint Technologies, Inc. Unknown device 0001
    Flags: bus master, 66MHz, medium devsel, latency 120, IRQ 28
    I/O ports at 9800 [size=8]
    I/O ports at 9400 [size=4]
    I/O ports at 9000 [size=8]
    I/O ports at 8800 [size=4]
    I/O ports at 8400 [size=256]
    Capabilities: [60] Power Management version 2

    Signed-off-by: Masoud Sharbiani
    Cc: Sergei Shtylyov
    Cc: Andrew Morton
    [bart: use dev_get_drvdata() per Sergei's suggestion]
    Signed-off-by: Bartlomiej Zolnierkiewicz

    Masoud Sharbiani
     

03 Sep, 2008

5 commits


29 Aug, 2008

1 commit

  • This patch remove blk_register_filter and blk_unregister_filter in
    gendisk, and adds them to sd.c, sr.c. and ide-cd.c

    The commit abf5439370491dd6fbb4fe1a7939680d2a9bc9d4 moved cmdfilter
    from gendisk to request_queue. It turned out that in some subsystems
    multiple gendisks share a single request_queue. So we get:

    Using physmap partition information
    Creating 3 MTD partitions on "physmap-flash":
    0x00000000-0x01c00000 : "User FS"
    0x01c00000-0x01c40000 : "booter"
    kobject (8511c410): tried to init an initialized object, something is seriously wrong.
    Call Trace:
    [] dump_stack+0x8/0x34
    [] kobject_init+0x50/0xcc
    [] kobject_init_and_add+0x24/0x58
    [] blk_register_filter+0x4c/0x64
    [] add_disk+0x78/0xe0
    [] add_mtd_blktrans_dev+0x254/0x278
    [] blktrans_notify_add+0x40/0x78
    [] add_mtd_device+0xd0/0x150
    [] add_mtd_partitions+0x568/0x5d8
    [] physmap_flash_probe+0x2ac/0x334
    [] driver_probe_device+0x12c/0x244
    [] __driver_attach+0x4c/0x84
    [] bus_for_each_dev+0x58/0xac
    [] bus_add_driver+0xc4/0x24c
    [] driver_register+0xcc/0x184
    [] _stext+0x60/0x1bc

    In the long term, we need to fix such subsystems but we need a quick
    fix now. This patch add the command filter support to only sd and sr
    though it might be useful for other SG_IO users (such as cciss).

    Signed-off-by: FUJITA Tomonori
    Reported-by: Manuel Lauss
    Signed-off-by: Jens Axboe

    FUJITA Tomonori
     

19 Aug, 2008

3 commits


07 Aug, 2008

3 commits


06 Aug, 2008

8 commits

  • Now that we have warm-plug support ->cable_detect method no longer
    can be be marked __devinit.

    Signed-off-by: Bartlomiej Zolnierkiewicz

    Bartlomiej Zolnierkiewicz
     
  • Now that we have warm-plug support ->quirkproc method no longer
    can be be marked __devinit.

    Signed-off-by: Bartlomiej Zolnierkiewicz

    Bartlomiej Zolnierkiewicz
     
  • Based on sparse comments in OpenFirmware code
    (no Cx5510/Cx5520 datasheet here).

    This fixes 2.6.26 regression reported by TAKADA
    and caused by addition of warm-plug support.

    Tested-by: TAKADA Yoshihito
    Signed-off-by: Bartlomiej Zolnierkiewicz

    Bartlomiej Zolnierkiewicz
     
  • Aesthetic regards aside, commit e8e7b9eb11c34ee18bde8b7011af41938d1ad667
    still leaves a bug in the error message, because it uses the unconverted
    big-endian value for printk.

    Fix this by using a local variable in machine byte order. The result is
    correct, more readable, and also produces slightly shorter code on i386.

    Signed-off-by: Petr Tesarik
    Cc: Jens Axboe
    Cc: Jan Kara
    Cc: Andrew Morton
    Cc:
    Acked-by: Borislav Petkov
    [bart: __u32 -> u32]
    Signed-off-by: Bartlomiej Zolnierkiewicz

    Petr Tesarik
     
  • The benefits of a user settable CONFIG_IDE_MAX_HWIFS have become pretty
    tiny and are no longer considered worth the trouble of an own option.

    Simply always #define MAX_HWIFS to 10.

    Signed-off-by: Adrian Bunk
    Signed-off-by: Bartlomiej Zolnierkiewicz

    Adrian Bunk
     
  • On Monday 28 July 2008, Benjamin Herrenschmidt wrote:

    [...]

    > Vector: 300 (Data Access) at [c58b7b80]
    > pc: c014f264: elv_may_queue+0x10/0x44
    > lr: c0152750: get_request+0x2c/0x2c0
    > sp: c58b7c30
    > msr: 1032
    > dar: c
    > dsisr: 40000000
    > current = 0xc58aaae0
    > pid = 854, comm = media-bay
    > enter ? for help
    > mon> t
    > [c58b7c40] c0152750 get_request+0x2c/0x2c0
    > [c58b7c70] c0152a08 get_request_wait+0x24/0xec
    > [c58b7cc0] c0225674 ide_cd_queue_pc+0x58/0x1a0
    > [c58b7d40] c022672c ide_cdrom_packet+0x9c/0xdc
    > [c58b7d70] c0261810 cdrom_get_disc_info+0x60/0xd0
    > [c58b7dc0] c026208c cdrom_mrw_exit+0x1c/0x11c
    > [c58b7e30] c0260f7c unregister_cdrom+0x84/0xe8
    > [c58b7e50] c022395c ide_cd_release+0x80/0x84
    > [c58b7e70] c0163650 kref_put+0x54/0x6c
    > [c58b7e80] c0223884 ide_cd_put+0x40/0x5c
    > [c58b7ea0] c0211100 generic_ide_remove+0x28/0x3c
    > [c58b7eb0] c01e9d34 __device_release_driver+0x78/0xb4
    > [c58b7ec0] c01e9e44 device_release_driver+0x28/0x44
    > [c58b7ee0] c01e8f7c bus_remove_device+0xac/0xd8
    > [c58b7f00] c01e7424 device_del+0x104/0x198
    > [c58b7f20] c01e74d0 device_unregister+0x18/0x30
    > [c58b7f40] c02121c4 __ide_port_unregister_devices+0x6c/0x88
    > [c58b7f60] c0212398 ide_port_unregister_devices+0x38/0x80
    > [c58b7f80] c0208ca4 media_bay_step+0x1cc/0x5c0
    > [c58b7fb0] c0209124 media_bay_task+0x8c/0xcc
    > [c58b7fd0] c00485c0 kthread+0x48/0x84
    > [c58b7ff0] c0011b20 kernel_thread+0x44/0x60

    The guilty commit turned out to be 08da591e14cf87247ec09b17c350235157a92fc3
    ("ide: add ide_device_{get,put}() helpers"). ide_device_put() is called
    before kref_put() in ide_cd_put() so IDE device is already gone by the time
    ide_cd_release() is reached.

    Fix it by calling ide_device_get() before kref_get() and ide_device_put()
    after kref_put() in all affected device drivers.

    v2:
    Brown paper bag time. In v1 cd->drive was referenced after dropping last
    reference on cd object (which could result in OOPS in ide_device_put() as
    reported/debugged by Mariusz Kozlowski). Fix it by caching cd->drive in
    the local variable (fix other device drivers too).

    Reported-by: Benjamin Herrenschmidt
    Reported-by: Mariusz Kozlowski
    Cc: FUJITA Tomonori
    Cc: Borislav Petkov
    Tested-by: Mariusz Kozlowski
    Tested-by: Benjamin Herrenschmidt
    Signed-off-by: Bartlomiej Zolnierkiewicz

    Bartlomiej Zolnierkiewicz
     
  • Fix byte-swapping for id->words161_175[], id->words206_254[]
    and id->words206_254[].

    Luckily all words previously left in little-endian byte-order
    are marked as reserved so this fix shouldn't affect user-space
    applications.

    Signed-off-by: Bartlomiej Zolnierkiewicz

    Bartlomiej Zolnierkiewicz
     
  • id->tDMA is of 'unsigned char' type so endianness is already
    correct and calling le16_to_cpu() is wrong.

    Signed-off-by: Bartlomiej Zolnierkiewicz

    Bartlomiej Zolnierkiewicz
     

30 Jul, 2008

1 commit


25 Jul, 2008

13 commits