mirror of https://lore.kernel.org/lkml/
 help / color / mirror / Atom feed
From: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
To: linux-kernel@vger.kernel.org
Cc: Greg Kroah-Hartman <gregkh@linuxfoundation.org>,
	stable@vger.kernel.org,
	Ross Lagerwall <ross.lagerwall@citrix.com>,
	David Vrabel <david.vrabel@citrix.com>
Subject: [PATCH 3.14 16/73] xen/manage: Fix USB interaction issues when resuming
Date: Tue,  3 Mar 2015 22:12:44 -0800	[thread overview]
Message-ID: <20150304055335.077738334@linuxfoundation.org> (raw)
In-Reply-To: <20150304055332.344462103@linuxfoundation.org>

3.14-stable review patch.  If anyone has any objections, please let me know.

------------------

From: Ross Lagerwall <ross.lagerwall@citrix.com>

commit 72978b2fe2f2cdf9f319c6c6dcdbe92b38de2be2 upstream.

Commit 61a734d305e1 ("xen/manage: Always freeze/thaw processes when
suspend/resuming") ensured that userspace processes were always frozen
before suspending to reduce interaction issues when resuming devices.
However, freeze_processes() does not freeze kernel threads.  Freeze
kernel threads as well to prevent deadlocks with the khubd thread when
resuming devices.

This is what native suspend and resume does.

Example deadlock:
[ 7279.648010]  [<ffffffff81446bde>] ? xen_poll_irq_timeout+0x3e/0x50
[ 7279.648010]  [<ffffffff81448d60>] xen_poll_irq+0x10/0x20
[ 7279.648010]  [<ffffffff81011723>] xen_lock_spinning+0xb3/0x120
[ 7279.648010]  [<ffffffff810115d1>] __raw_callee_save_xen_lock_spinning+0x11/0x20
[ 7279.648010]  [<ffffffff815620b6>] ? usb_control_msg+0xe6/0x120
[ 7279.648010]  [<ffffffff81747e50>] ? _raw_spin_lock_irq+0x50/0x60
[ 7279.648010]  [<ffffffff8174522c>] wait_for_completion+0xac/0x160
[ 7279.648010]  [<ffffffff8109c520>] ? try_to_wake_up+0x2c0/0x2c0
[ 7279.648010]  [<ffffffff814b60f2>] dpm_wait+0x32/0x40
[ 7279.648010]  [<ffffffff814b6eb0>] device_resume+0x90/0x210
[ 7279.648010]  [<ffffffff814b7d71>] dpm_resume+0x121/0x250
[ 7279.648010]  [<ffffffff8144c570>] ? xenbus_dev_request_and_reply+0xc0/0xc0
[ 7279.648010]  [<ffffffff814b80d5>] dpm_resume_end+0x15/0x30
[ 7279.648010]  [<ffffffff81449fba>] do_suspend+0x10a/0x200
[ 7279.648010]  [<ffffffff8144a2f0>] ? xen_pre_suspend+0x20/0x20
[ 7279.648010]  [<ffffffff8144a1d0>] shutdown_handler+0x120/0x150
[ 7279.648010]  [<ffffffff8144c60f>] xenwatch_thread+0x9f/0x160
[ 7279.648010]  [<ffffffff810ac510>] ? finish_wait+0x80/0x80
[ 7279.648010]  [<ffffffff8108d189>] kthread+0xc9/0xe0
[ 7279.648010]  [<ffffffff8108d0c0>] ? flush_kthread_worker+0x80/0x80
[ 7279.648010]  [<ffffffff8175087c>] ret_from_fork+0x7c/0xb0
[ 7279.648010]  [<ffffffff8108d0c0>] ? flush_kthread_worker+0x80/0x80

[ 7441.216287] INFO: task khubd:89 blocked for more than 120 seconds.
[ 7441.219457]       Tainted: G            X 3.13.11-ckt12.kz #1
[ 7441.222176] "echo 0 > /proc/sys/kernel/hung_task_timeout_secs" disables this message.
[ 7441.225827] khubd           D ffff88003f433440     0    89      2 0x00000000
[ 7441.229258]  ffff88003ceb9b98 0000000000000046 ffff88003ce83000 0000000000013440
[ 7441.232959]  ffff88003ceb9fd8 0000000000013440 ffff88003cd13000 ffff88003ce83000
[ 7441.236658]  0000000000000286 ffff88003d3e0000 ffff88003ceb9bd0 00000001001aa01e
[ 7441.240415] Call Trace:
[ 7441.241614]  [<ffffffff817442f9>] schedule+0x29/0x70
[ 7441.243930]  [<ffffffff81743406>] schedule_timeout+0x166/0x2c0
[ 7441.246681]  [<ffffffff81075b80>] ? call_timer_fn+0x110/0x110
[ 7441.249339]  [<ffffffff8174357e>] schedule_timeout_uninterruptible+0x1e/0x20
[ 7441.252644]  [<ffffffff81077710>] msleep+0x20/0x30
[ 7441.254812]  [<ffffffff81555f00>] hub_port_reset+0xf0/0x580
[ 7441.257400]  [<ffffffff81558465>] hub_port_init+0x75/0xb40
[ 7441.259981]  [<ffffffff814bb3c9>] ? update_autosuspend+0x39/0x60
[ 7441.262817]  [<ffffffff814bb4f0>] ? pm_runtime_set_autosuspend_delay+0x50/0xa0
[ 7441.266212]  [<ffffffff8155a64a>] hub_thread+0x71a/0x1750
[ 7441.268728]  [<ffffffff810ac510>] ? finish_wait+0x80/0x80
[ 7441.271272]  [<ffffffff81559f30>] ? usb_port_resume+0x670/0x670
[ 7441.274067]  [<ffffffff8108d189>] kthread+0xc9/0xe0
[ 7441.276305]  [<ffffffff8108d0c0>] ? flush_kthread_worker+0x80/0x80
[ 7441.279131]  [<ffffffff8175087c>] ret_from_fork+0x7c/0xb0
[ 7441.281659]  [<ffffffff8108d0c0>] ? flush_kthread_worker+0x80/0x80

Signed-off-by: Ross Lagerwall <ross.lagerwall@citrix.com>
Signed-off-by: David Vrabel <david.vrabel@citrix.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

---
 drivers/xen/manage.c |    8 +++++++-
 1 file changed, 7 insertions(+), 1 deletion(-)

--- a/drivers/xen/manage.c
+++ b/drivers/xen/manage.c
@@ -113,10 +113,16 @@ static void do_suspend(void)
 
 	err = freeze_processes();
 	if (err) {
-		pr_err("%s: freeze failed %d\n", __func__, err);
+		pr_err("%s: freeze processes failed %d\n", __func__, err);
 		goto out;
 	}
 
+	err = freeze_kernel_threads();
+	if (err) {
+		pr_err("%s: freeze kernel threads failed %d\n", __func__, err);
+		goto out_thaw;
+	}
+
 	err = dpm_suspend_start(PMSG_FREEZE);
 	if (err) {
 		pr_err("%s: dpm_suspend_start %d\n", __func__, err);



  parent reply	other threads:[~2015-03-04  8:12 UTC|newest]

Thread overview: 81+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2015-03-04  6:12 [PATCH 3.14 00/73] 3.14.35-stable review Greg Kroah-Hartman
2015-03-04  6:12 ` [PATCH 3.14 01/73] Bluetooth: ath3k: workaround the compatibility issue with xHCI controller Greg Kroah-Hartman
2015-03-04  6:12 ` [PATCH 3.14 02/73] xfs: ensure buffer types are set correctly Greg Kroah-Hartman
2015-03-04  6:12 ` [PATCH 3.14 03/73] xfs: inode unlink does not set AGI buffer type Greg Kroah-Hartman
2015-03-04  6:12 ` [PATCH 3.14 04/73] xfs: set superblock buffer type correctly Greg Kroah-Hartman
2015-03-04  6:12 ` [PATCH 3.14 05/73] fsnotify: fix handling of renames in audit Greg Kroah-Hartman
2015-03-04  6:12 ` [PATCH 3.14 06/73] iwlwifi: pcie: disable the SCD_BASE_ADDR when we resume from WoWLAN Greg Kroah-Hartman
2015-03-04  6:12 ` [PATCH 3.14 07/73] iwlwifi: mvm: validate tid and sta_id in ba_notif Greg Kroah-Hartman
2015-03-04  6:12 ` [PATCH 3.14 08/73] iwlwifi: mvm: fix failure path when power_update fails in add_interface Greg Kroah-Hartman
2015-03-04  6:12 ` [PATCH 3.14 09/73] iwlwifi: mvm: always use mac color zero Greg Kroah-Hartman
2015-03-04  6:12 ` [PATCH 3.14 10/73] HID: i2c-hid: Limit reads to wMaxInputLength bytes for input events Greg Kroah-Hartman
2015-03-04  6:12 ` [PATCH 3.14 11/73] PCI: Generate uppercase hex for modalias var in uevent Greg Kroah-Hartman
2015-03-04  6:12 ` [PATCH 3.14 13/73] cpufreq: Set cpufreq_cpu_data to NULL before putting kobject Greg Kroah-Hartman
2015-03-04  6:12 ` [PATCH 3.14 15/73] cpufreq: s3c: remove incorrect __init annotations Greg Kroah-Hartman
2015-03-04  6:12 ` Greg Kroah-Hartman [this message]
2015-03-04  6:12 ` [PATCH 3.14 17/73] [media] lmedm04: Fix usb_submit_urb BOGUS urb xfer, pipe 1 != type 3 in interrupt urb Greg Kroah-Hartman
2015-03-04  6:12 ` [PATCH 3.14 18/73] ALSA: off by one bug in snd_riptide_joystick_probe() Greg Kroah-Hartman
2015-03-04  6:12 ` [PATCH 3.14 19/73] ALSA: hdspm - Constrain periods to 2 on older cards Greg Kroah-Hartman
2015-03-04  6:12 ` [PATCH 3.14 20/73] power_supply: 88pm860x: Fix leaked power supply on probe fail Greg Kroah-Hartman
2015-03-04  6:12 ` [PATCH 3.14 21/73] power: bq24190: Fix ignored supplicants Greg Kroah-Hartman
2015-03-04  6:12 ` [PATCH 3.14 22/73] power: gpio-charger: balance enable/disable_irq_wake calls Greg Kroah-Hartman
2015-03-04  6:12 ` [PATCH 3.14 23/73] megaraid_sas: disable interrupt_mask before enabling hardware interrupts Greg Kroah-Hartman
2015-03-04  6:12 ` [PATCH 3.14 26/73] mmc: sdhci-pxav3: fix setting of pdata->clk_delay_cycles Greg Kroah-Hartman
2015-03-04  6:12 ` [PATCH 3.14 27/73] nfs: dont call blocking operations while !TASK_RUNNING Greg Kroah-Hartman
2015-03-04  6:12 ` [PATCH 3.14 28/73] MIPS: KVM: Deliver guest interrupts after local_irq_disable() Greg Kroah-Hartman
2015-03-04  6:12 ` [PATCH 3.14 29/73] mm/hugetlb: pmd_huge() returns true for non-present hugepage Greg Kroah-Hartman
2015-03-04  6:12 ` [PATCH 3.14 30/73] tracing: Fix unmapping loop in tracing_mark_write Greg Kroah-Hartman
2015-03-04  6:12 ` [PATCH 3.14 31/73] ARM: 8284/1: sa1100: clear RCSR_SMR on resume Greg Kroah-Hartman
2015-03-04  6:13 ` [PATCH 3.14 32/73] ARM: DRA7: hwmod: Fix boot crash with DEBUG_LL enabled on UART3 Greg Kroah-Hartman
2015-03-04  6:13 ` [PATCH 3.14 33/73] ARM: dts: tegra20: fix GR3D, DSI unit and reg base addresses Greg Kroah-Hartman
2015-03-04  6:13 ` [PATCH 3.14 34/73] ARM: dts: am335x-bone*: usb0 is hardwired for peripheral Greg Kroah-Hartman
2015-03-04  6:13 ` [PATCH 3.14 35/73] tpm_tis: verify interrupt during init Greg Kroah-Hartman
2015-03-04  6:13 ` [PATCH 3.14 36/73] TPM: Add new TPMs to the tail of the list to prevent inadvertent change of dev Greg Kroah-Hartman
2015-03-04  6:13 ` [PATCH 3.14 37/73] char: tpm: Add missing error check for devm_kzalloc Greg Kroah-Hartman
2015-03-04  6:13 ` [PATCH 3.14 38/73] tpm: Fix NULL return in tpm_ibmvtpm_get_desired_dma Greg Kroah-Hartman
2015-03-04  6:13 ` [PATCH 3.14 39/73] tpm/tpm_i2c_stm_st33: Fix potential bug in tpm_stm_i2c_send Greg Kroah-Hartman
2015-03-04  6:13 ` [PATCH 3.14 40/73] Added Little Endian support to vtpm module Greg Kroah-Hartman
2015-03-04  6:13 ` [PATCH 3.14 41/73] NFSv4.1: Fix a kfree() of uninitialised pointers in decode_cb_sequence_args Greg Kroah-Hartman
2015-03-04  6:13 ` [PATCH 3.14 42/73] iscsi-target: Drop problematic active_ts_list usage Greg Kroah-Hartman
2015-03-04  6:13 ` [PATCH 3.14 43/73] cfq-iosched: handle failure of cfq group allocation Greg Kroah-Hartman
2015-03-04  6:13 ` [PATCH 3.14 44/73] cfq-iosched: fix incorrect filing of rt async cfqq Greg Kroah-Hartman
2015-03-04  6:13 ` [PATCH 3.14 45/73] axonram: Fix bug in direct_access Greg Kroah-Hartman
2015-03-04  6:13 ` [PATCH 3.14 46/73] tty: Prevent untrappable signals from malicious program Greg Kroah-Hartman
2015-03-04  6:13 ` [PATCH 3.14 47/73] tty/serial: at91: fix error handling in atmel_serial_probe() Greg Kroah-Hartman
2015-03-04  6:13 ` [PATCH 3.14 48/73] USB: cp210x: add ID for RUGGEDCOM USB Serial Console Greg Kroah-Hartman
2015-03-04  6:13 ` [PATCH 3.14 49/73] USB: fix use-after-free bug in usb_hcd_unlink_urb() Greg Kroah-Hartman
2015-03-04  6:13 ` [PATCH 3.14 50/73] usb: core: buffer: smallest buffer should start at ARCH_DMA_MINALIGN Greg Kroah-Hartman
2015-03-04  6:13 ` [PATCH 3.14 51/73] vt: provide notifications on selection changes Greg Kroah-Hartman
2015-03-04  6:13 ` [PATCH 3.14 52/73] ARM: pxa: add regulator_has_full_constraints to corgi board file Greg Kroah-Hartman
2015-03-04  6:13 ` [PATCH 3.14 53/73] ARM: pxa: add regulator_has_full_constraints to poodle " Greg Kroah-Hartman
2015-03-04  6:13 ` [PATCH 3.14 54/73] kdb: fix incorrect counts in KDB summary command output Greg Kroah-Hartman
2015-03-04  6:13 ` [PATCH 3.14 55/73] ntp: Fixup adjtimex freq validation on 32-bit systems Greg Kroah-Hartman
2015-03-04  6:13 ` [PATCH 3.14 56/73] ARC: fix page address calculation if PAGE_OFFSET != LINUX_LINK_BASE Greg Kroah-Hartman
2015-03-04  6:13 ` [PATCH 3.14 57/73] KVM: s390: floating irqs: fix user triggerable endless loop Greg Kroah-Hartman
2015-03-04  6:13 ` [PATCH 3.14 58/73] KVM: MIPS: Dont leak FPU/DSP to guest Greg Kroah-Hartman
2015-03-04  8:10   ` James Hogan
2015-03-04 18:22     ` Greg Kroah-Hartman
2015-03-04  6:13 ` [PATCH 3.14 59/73] KVM: x86: update masterclock values on TSC writes Greg Kroah-Hartman
2015-03-04  6:13 ` [PATCH 3.14 60/73] hx4700: regulator: declare full constraints Greg Kroah-Hartman
2015-03-04  6:13 ` [PATCH 3.14 61/73] arm64: compat Fix siginfo_t -> compat_siginfo_t conversion on big endian Greg Kroah-Hartman
2015-03-04  6:13 ` [PATCH 3.14 62/73] gpiolib: of: allow of_gpiochip_find_and_xlate to find more than one chip per node Greg Kroah-Hartman
2015-03-04  6:13 ` [PATCH 3.14 63/73] gpio: tps65912: fix wrong container_of arguments Greg Kroah-Hartman
2015-03-04  6:13 ` [PATCH 3.14 64/73] xfs: Fix quota type in quota structures when reusing quota file Greg Kroah-Hartman
2015-03-04  6:13 ` [PATCH 3.14 65/73] metag: Fix KSTK_EIP() and KSTK_ESP() macros Greg Kroah-Hartman
2015-03-04  6:13 ` [PATCH 3.14 66/73] md/raid5: Fix livelock when array is both resyncing and degraded Greg Kroah-Hartman
2015-03-04  6:13 ` [PATCH 3.14 68/73] EDAC, amd64_edac: Prevent OOPS with >16 memory controllers Greg Kroah-Hartman
2015-03-04  6:13 ` [PATCH 3.14 69/73] jffs2: fix handling of corrupted summary length Greg Kroah-Hartman
2015-03-04  6:13 ` [PATCH 3.14 70/73] btrfs: set proper message level for skinny metadata Greg Kroah-Hartman
2015-03-04  6:13 ` [PATCH 3.14 71/73] btrfs: fix leak of path in btrfs_find_item Greg Kroah-Hartman
2015-03-04  6:13 ` [PATCH 3.14 72/73] blk-throttle: check stats_cpu before reading it from sysfs Greg Kroah-Hartman
2015-03-04  6:13 ` [PATCH 3.14 73/73] x86, mm/ASLR: Fix stack randomization on 64-bit systems Greg Kroah-Hartman
2015-03-04 14:11 ` [PATCH 3.14 00/73] 3.14.35-stable review Guenter Roeck
2015-03-04 18:16   ` Greg Kroah-Hartman
2015-03-05  2:23     ` Guenter Roeck
2015-03-05 16:08       ` [PATCH stable 3.10, 3.12, 3.14] MIPS: Export FP functions used by lose_fpu(1) for KVM James Hogan
2015-03-06  6:30         ` Greg Kroah-Hartman
2015-03-06 16:22           ` Guenter Roeck
2015-03-06 17:45             ` Greg Kroah-Hartman
2015-03-06 20:42               ` Guenter Roeck
2015-03-07 13:30         ` Jiri Slaby
2015-03-04 23:41 ` [PATCH 3.14 00/73] 3.14.35-stable review Shuah Khan

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20150304055335.077738334@linuxfoundation.org \
    --to=gregkh@linuxfoundation.org \
    --cc=david.vrabel@citrix.com \
    --cc=linux-kernel@vger.kernel.org \
    --cc=ross.lagerwall@citrix.com \
    --cc=stable@vger.kernel.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox

Powered by JetHome