From: Greg Kroah-Hartman Date: Tue, 9 Apr 2013 22:29:19 +0000 (-0700) Subject: 3.0-stable patches X-Git-Tag: v3.0.73~27 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=8725a1b465abf514605a2213d1bd9bc1ec564ab6;p=thirdparty%2Fkernel%2Fstable-queue.git 3.0-stable patches added patches: alpha-add-irongate_io-to-pci-bus-resources.patch libata-set-max-sector-to-65535-for-slimtype-dvd-a-ds8a8sh-drive.patch libata-use-integer-return-value-for-atapi_command_packet_set.patch --- diff --git a/queue-3.0/alpha-add-irongate_io-to-pci-bus-resources.patch b/queue-3.0/alpha-add-irongate_io-to-pci-bus-resources.patch new file mode 100644 index 00000000000..68957a67e74 --- /dev/null +++ b/queue-3.0/alpha-add-irongate_io-to-pci-bus-resources.patch @@ -0,0 +1,43 @@ +From aa8b4be3ac049c8b1df2a87e4d1d902ccfc1f7a9 Mon Sep 17 00:00:00 2001 +From: Jay Estabrook +Date: Sun, 7 Apr 2013 21:36:09 +1200 +Subject: alpha: Add irongate_io to PCI bus resources + +From: Jay Estabrook + +commit aa8b4be3ac049c8b1df2a87e4d1d902ccfc1f7a9 upstream. + +Fixes a NULL pointer dereference at boot on UP1500. + +Reviewed-and-Tested-by: Matt Turner +Signed-off-by: Jay Estabrook +Signed-off-by: Matt Turner +Signed-off-by: Michael Cree +Signed-off-by: Linus Torvalds +Signed-off-by: Greg Kroah-Hartman + +--- + arch/alpha/kernel/sys_nautilus.c | 5 +++++ + 1 file changed, 5 insertions(+) + +--- a/arch/alpha/kernel/sys_nautilus.c ++++ b/arch/alpha/kernel/sys_nautilus.c +@@ -189,6 +189,10 @@ nautilus_machine_check(unsigned long vec + extern void free_reserved_mem(void *, void *); + extern void pcibios_claim_one_bus(struct pci_bus *); + ++static struct resource irongate_io = { ++ .name = "Irongate PCI IO", ++ .flags = IORESOURCE_IO, ++}; + static struct resource irongate_mem = { + .name = "Irongate PCI MEM", + .flags = IORESOURCE_MEM, +@@ -210,6 +214,7 @@ nautilus_init_pci(void) + + irongate = pci_get_bus_and_slot(0, 0); + bus->self = irongate; ++ bus->resource[0] = &irongate_io; + bus->resource[1] = &irongate_mem; + + pci_bus_size_bridges(bus); diff --git a/queue-3.0/libata-set-max-sector-to-65535-for-slimtype-dvd-a-ds8a8sh-drive.patch b/queue-3.0/libata-set-max-sector-to-65535-for-slimtype-dvd-a-ds8a8sh-drive.patch new file mode 100644 index 00000000000..ae63f588984 --- /dev/null +++ b/queue-3.0/libata-set-max-sector-to-65535-for-slimtype-dvd-a-ds8a8sh-drive.patch @@ -0,0 +1,103 @@ +From a32450e127fc6e5ca6d958ceb3cfea4d30a00846 Mon Sep 17 00:00:00 2001 +From: Shan Hai +Date: Mon, 18 Mar 2013 10:30:44 +0800 +Subject: libata: Set max sector to 65535 for Slimtype DVD A DS8A8SH drive + +From: Shan Hai + +commit a32450e127fc6e5ca6d958ceb3cfea4d30a00846 upstream. + +The Slimtype DVD A DS8A8SH drive locks up when max sector is smaller than +65535, and the blow backtrace is observed on locking up: + +INFO: task flush-8:32:1130 blocked for more than 120 seconds. +"echo 0 > /proc/sys/kernel/hung_task_timeout_secs" disables this message. +flush-8:32 D ffffffff8180cf60 0 1130 2 0x00000000 + ffff880273aef618 0000000000000046 0000000000000005 ffff880273aee000 + ffff880273aee000 ffff880273aeffd8 ffff880273aee010 ffff880273aee000 + ffff880273aeffd8 ffff880273aee000 ffff88026e842ea0 ffff880274a10000 +Call Trace: + [] schedule+0x5d/0x70 + [] io_schedule+0x8c/0xd0 + [] get_request+0x731/0x7d0 + [] ? cfq_allow_merge+0x50/0x90 + [] ? wake_up_bit+0x40/0x40 + [] ? bio_attempt_back_merge+0x33/0x110 + [] blk_queue_bio+0x23a/0x3f0 + [] generic_make_request+0xc6/0x120 + [] submit_bio+0x138/0x160 + [] ? bio_alloc_bioset+0x96/0x120 + [] submit_bh+0x1f1/0x220 + [] __block_write_full_page+0x228/0x340 + [] ? attach_nobh_buffers+0xc0/0xc0 + [] ? I_BDEV+0x10/0x10 + [] ? I_BDEV+0x10/0x10 + [] block_write_full_page_endio+0xe6/0x100 + [] block_write_full_page+0x15/0x20 + [] blkdev_writepage+0x18/0x20 + [] __writepage+0x17/0x40 + [] write_cache_pages+0x34a/0x4a0 + [] ? set_page_dirty+0x70/0x70 + [] generic_writepages+0x51/0x80 + [] do_writepages+0x20/0x50 + [] __writeback_single_inode+0xa6/0x2b0 + [] writeback_sb_inodes+0x311/0x4d0 + [] __writeback_inodes_wb+0x86/0xd0 + [] wb_writeback+0x1a3/0x330 + [] ? _raw_spin_lock_irqsave+0x3f/0x50 + [] ? get_nr_inodes+0x52/0x70 + [] wb_do_writeback+0x1dc/0x260 + [] ? schedule_timeout+0x204/0x240 + [] bdi_writeback_thread+0x102/0x2b0 + [] ? wb_do_writeback+0x260/0x260 + [] kthread+0xc0/0xd0 + [] ? kthread_worker_fn+0x1b0/0x1b0 + [] ret_from_fork+0x7c/0xb0 + [] ? kthread_worker_fn+0x1b0/0x1b0 + + The above trace was triggered by + "dd if=/dev/zero of=/dev/sr0 bs=2048 count=32768" + + It was previously working by accident, since another bug introduced + by 4dce8ba94c7 (libata: Use 'bool' return value for ata_id_XXX) caused + all drives to use maxsect=65535. + +Signed-off-by: Shan Hai +Signed-off-by: Jeff Garzik +Signed-off-by: Greg Kroah-Hartman + +--- + drivers/ata/libata-core.c | 4 ++++ + include/linux/libata.h | 1 + + 2 files changed, 5 insertions(+) + +--- a/drivers/ata/libata-core.c ++++ b/drivers/ata/libata-core.c +@@ -2412,6 +2412,9 @@ int ata_dev_configure(struct ata_device + dev->max_sectors = min_t(unsigned int, ATA_MAX_SECTORS_128, + dev->max_sectors); + ++ if (dev->horkage & ATA_HORKAGE_MAX_SEC_LBA48) ++ dev->max_sectors = ATA_MAX_SECTORS_LBA48; ++ + if (ap->ops->dev_config) + ap->ops->dev_config(dev); + +@@ -4077,6 +4080,7 @@ static const struct ata_blacklist_entry + /* Weird ATAPI devices */ + { "TORiSAN DVD-ROM DRD-N216", NULL, ATA_HORKAGE_MAX_SEC_128 }, + { "QUANTUM DAT DAT72-000", NULL, ATA_HORKAGE_ATAPI_MOD16_DMA }, ++ { "Slimtype DVD A DS8A8SH", NULL, ATA_HORKAGE_MAX_SEC_LBA48 }, + + /* Devices we expect to fail diagnostics */ + +--- a/include/linux/libata.h ++++ b/include/linux/libata.h +@@ -382,6 +382,7 @@ enum { + ATA_HORKAGE_NOSETXFER = (1 << 14), /* skip SETXFER, SATA only */ + ATA_HORKAGE_BROKEN_FPDMA_AA = (1 << 15), /* skip AA */ + ATA_HORKAGE_DUMP_ID = (1 << 16), /* dump IDENTIFY data */ ++ ATA_HORKAGE_MAX_SEC_LBA48 = (1 << 17), /* Set max sects to 65535 */ + + /* DMA mask for user DMA control: User visible values; DO NOT + renumber */ diff --git a/queue-3.0/libata-use-integer-return-value-for-atapi_command_packet_set.patch b/queue-3.0/libata-use-integer-return-value-for-atapi_command_packet_set.patch new file mode 100644 index 00000000000..a2e2ead277b --- /dev/null +++ b/queue-3.0/libata-use-integer-return-value-for-atapi_command_packet_set.patch @@ -0,0 +1,37 @@ +From d8668fcb0b257d9fdcfbe5c172a99b8d85e1cd82 Mon Sep 17 00:00:00 2001 +From: Shan Hai +Date: Mon, 18 Mar 2013 10:30:43 +0800 +Subject: libata: Use integer return value for atapi_command_packet_set + +From: Shan Hai + +commit d8668fcb0b257d9fdcfbe5c172a99b8d85e1cd82 upstream. + +The function returns type of ATAPI drives so it should return integer value. +The commit 4dce8ba94c7 (libata: Use 'bool' return value for ata_id_XXX) since +v2.6.39 changed the type of return value from int to bool, the change would +cause all of the ATAPI class drives to be treated as TYPE_TAPE and the +max_sectors of the drives to be set to 65535 because of the commit +f8d8e5799b7(libata: increase 128 KB / cmd limit for ATAPI tape drives), for the +function would return true for all ATAPI class drives and the TYPE_TAPE is +defined as 0x01. + +Signed-off-by: Shan Hai +Signed-off-by: Jeff Garzik +Signed-off-by: Greg Kroah-Hartman + +--- + include/linux/ata.h | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +--- a/include/linux/ata.h ++++ b/include/linux/ata.h +@@ -937,7 +937,7 @@ static inline int atapi_cdb_len(const u1 + } + } + +-static inline bool atapi_command_packet_set(const u16 *dev_id) ++static inline int atapi_command_packet_set(const u16 *dev_id) + { + return (dev_id[ATA_ID_CONFIG] >> 8) & 0x1f; + } diff --git a/queue-3.0/series b/queue-3.0/series index 3c8ad817e9f..3cb8ff07d4d 100644 --- a/queue-3.0/series +++ b/queue-3.0/series @@ -4,3 +4,6 @@ reiserfs-fix-warning-and-inode-leak-when-deleting-inode-with-xattrs.patch alsa-hda-bug-fix-on-return-value-when-getting-hdmi-eld-info.patch alsa-hda-fix-typo-in-proc-output.patch ext4-fixup-64-bit-divides-in-3.0-stable-backport-of-upstream-fix.patch +libata-use-integer-return-value-for-atapi_command_packet_set.patch +libata-set-max-sector-to-65535-for-slimtype-dvd-a-ds8a8sh-drive.patch +alpha-add-irongate_io-to-pci-bus-resources.patch