Patch "sata_via: Enable hotplug only on VT6421" has been added to the 4.9-stable tree
Subsystems (2)
This is a note to let you know that I've just added the patch titled
sata_via: Enable hotplug only on VT6421
to the 4.9-stable tree which can be found at:
http://www.kernel.org/git/?p=linux/kernel/git/stable/stable-queue.git;a=summary
The filename of the patch is:
sata_via-enable-hotplug-only-on-vt6421.patch
and it can be found in the queue-4.9 subdirectory.
If you, or anyone else, feels it should not be added to the stable tree, please let <[email protected]> know about it.
Quoted 1 line
From foo@baz Thu Oct 5 10:28:31 CEST 2017
From: Ondrej Zary <[email protected]>
Date: Fri, 31 Mar 2017 20:35:42 +0200
Subject: sata_via: Enable hotplug only on VT6421
From: Ondrej Zary <[email protected]>
[ Upstream commit 3cf864520e877505158f09075794a08abab11bbe ]
Commit 57e5568fda27 ("sata_via: Implement hotplug for VT6421") adds hotplug IRQ handler for VT6421 but enables hotplug on all chips. This is a bug because it causes "irq xx: nobody cared" error on VT6420 when hot-(un)plugging a drive:
[ 381.839948] irq 20: nobody cared (try booting with the "irqpoll" option) [ 381.840014] CPU: 0 PID: 0 Comm: swapper/0 Not tainted 4.10.0-rc5+ #148 [ 381.840066] Hardware name: P4VM800/P4VM800, BIOS P1.60 05/29/2006 [ 381.840117] Call Trace: [ 381.840167] <IRQ> [ 381.840225] ? dump_stack+0x44/0x58 [ 381.840278] ? __report_bad_irq+0x14/0x97 [ 381.840327] ? handle_edge_irq+0xa5/0xa5 [ 381.840376] ? note_interrupt+0x155/0x1cf [ 381.840426] ? handle_edge_irq+0xa5/0xa5 [ 381.840474] ? handle_irq_event_percpu+0x32/0x38 [ 381.840524] ? handle_irq_event+0x1f/0x38 [ 381.840573] ? handle_fasteoi_irq+0x69/0xb8 [ 381.840625] ? handle_irq+0x4f/0x5d [ 381.840672] </IRQ> [ 381.840726] ? do_IRQ+0x2e/0x8b [ 381.840782] ? common_interrupt+0x2c/0x34 [ 381.840836] ? mwait_idle+0x60/0x82 [ 381.840892] ? arch_cpu_idle+0x6/0x7 [ 381.840949] ? do_idle+0x96/0x18e [ 381.841002] ? cpu_startup_entry+0x16/0x1a [ 381.841057] ? start_kernel+0x319/0x31c [ 381.841111] ? startup_32_smp+0x166/0x168 [ 381.841165] handlers: [ 381.841219] [<c12a7263>] ata_bmdma_interrupt [ 381.841274] Disabling IRQ #20
Seems that VT6420 can do hotplug too (there's no documentation) but the comments say that SCR register access (required for detecting hotplug events) can cause problems on these chips.
For now, just keep hotplug disabled on anything other than VT6421.
--- drivers/ata/sata_via.c | 18 ++++++++++-------- 1 file changed, 10 insertions(+), 8 deletions(-)
drivers/ata/sata_via.c +10 -8
@@ -644,14 +644,16 @@ static void svia_configure(struct pci_depci_write_config_byte (pdev,SATA_NATIVE_MODE , tmp8); } -/* enable IRQ on hotplug */ -pci_read_config_byte (pdev,SVIA_MISC_3 , &tmp8); -if ((tmp8 &SATA_HOTPLUG ) !=SATA_HOTPLUG ) { -dev_dbg (&pdev->dev, -"enabling SATA hotplug (0x%x)\n" , - (int ) tmp8); - tmp8 |=SATA_HOTPLUG ; -pci_write_config_byte (pdev,SVIA_MISC_3 , tmp8); +if (board_id == vt6421) { +/* enable IRQ on hotplug */ +pci_read_config_byte (pdev,SVIA_MISC_3 , &tmp8); +if ((tmp8 &SATA_HOTPLUG ) !=SATA_HOTPLUG ) { +dev_dbg (&pdev->dev, +"enabling SATA hotplug (0x%x)\n" , + (int ) tmp8); + tmp8 |=SATA_HOTPLUG ; +pci_write_config_byte (pdev,SVIA_MISC_3 , tmp8); + } }/*
Patches currently in stable-queue which might be from [email protected] are
queue-4.9/sata_via-enable-hotplug-only-on-vt6421.patch