From: bugzilla-daemon@freedesktop.org
To: dri-devel@lists.freedesktop.org
Subject: [Bug 69723] GPU lockups with kernel 3.11.0 / 3.12-rc1 when dpm=1 on r600g (Cayman)
Date: Mon, 02 Dec 2013 23:33:05 +0000 [thread overview]
Message-ID: <bug-69723-502-aOeQID0Ijb@http.bugs.freedesktop.org/> (raw)
In-Reply-To: <bug-69723-502@http.bugs.freedesktop.org/>
[-- Attachment #1.1: Type: text/plain, Size: 11078 bytes --]
https://bugs.freedesktop.org/show_bug.cgi?id=69723
--- Comment #53 from Alexandre Demers <alexandre.f.demers@gmail.com> ---
Possible circular locking dependency and a DEADLOCK. Using latest 3.13.0-rc2
(with some added printk(), so no difference from rc1) and having set
performance level to low, I've just found the following in my journal from last
night. The system never crashed nor anything, but this may be a clue pointing
at... no one else than pm.mclk...
Dec 02 01:01:05 Xander kernel: Dec 02 01:01:05 Xander kernel:
======================================================
Dec 02 01:01:05 Xander kernel: [ INFO: possible circular locking dependency
detected ]
Dec 02 01:01:05 Xander kernel: 3.13.0-rc2-VANILLA-dirty #170 Tainted: G
C
Dec 02 01:01:05 Xander kernel:
-------------------------------------------------------
Dec 02 01:01:05 Xander kernel: chromium/3786 is trying to acquire lock:
Dec 02 01:01:05 Xander kernel: (reservation_ww_class_mutex){+.+.+.}, at:
[<ffffffffa00047d9>] ttm_bo_wait_unreserved+0x39/0x70 [ttm]
Dec 02 01:01:05 Xander kernel:
but task is already holding lock:
Dec 02 01:01:05 Xander kernel: (&bo->wu_mutex){+.+...}, at:
[<ffffffffa00047bd>] ttm_bo_wait_unreserved+0x1d/0x70 [ttm]
Dec 02 01:01:05 Xander kernel:
which lock already depends on the new lock.
Dec 02 01:01:05 Xander kernel:
the existing dependency chain (in reverse order)
is:
Dec 02 01:01:05 Xander kernel:
-> #4 (&bo->wu_mutex){+.+...}:
Dec 02 01:01:05 Xander kernel: [<ffffffff810a1a62>]
lock_acquire+0x72/0xa0
Dec 02 01:01:05 Xander kernel: [<ffffffff8182d7f8>]
mutex_lock_interruptible_nested+0x58/0x550
Dec 02 01:01:05 Xander kernel: [<ffffffffa00047bd>]
ttm_bo_wait_unreserved+0x1d/0x70 [ttm]
Dec 02 01:01:05 Xander kernel: [<ffffffffa0006079>]
ttm_bo_vm_fault+0x389/0x470 [ttm]
Dec 02 01:01:05 Xander kernel: [<ffffffffa00485c7>]
radeon_ttm_fault+0x47/0x60 [radeon]
Dec 02 01:01:05 Xander kernel: [<ffffffff81125b4c>]
__do_fault+0x6c/0x4c0
Dec 02 01:01:05 Xander kernel: [<ffffffff81129846>]
handle_mm_fault+0x2e6/0xc90
Dec 02 01:01:05 Xander kernel: [<ffffffff81833455>]
__do_page_fault+0x165/0x560
Dec 02 01:01:05 Xander kernel: [<ffffffff81833859>]
do_page_fault+0x9/0x10
Dec 02 01:01:05 Xander kernel: [<ffffffff8182ffc8>] page_fault+0x28/0x30
Dec 02 01:01:05 Xander kernel:
-> #3 (&rdev->pm.mclk_lock){++++++}:
Dec 02 01:01:05 Xander kernel: [<ffffffff810a1a62>]
lock_acquire+0x72/0xa0
Dec 02 01:01:05 Xander kernel: [<ffffffff8182e181>] down_write+0x31/0x60
Dec 02 01:01:05 Xander kernel: [<ffffffffa0089b4e>]
radeon_pm_compute_clocks+0x2ee/0x790 [radeon]
Dec 02 01:01:05 Xander kernel: [<ffffffffa008ab51>]
radeon_pm_init+0x7c1/0x960 [radeon]
Dec 02 01:01:05 Xander kernel: [<ffffffffa005731f>]
radeon_modeset_init+0x40f/0x9a0 [radeon]
Dec 02 01:01:05 Xander kernel: [<ffffffffa00310d0>]
radeon_driver_load_kms+0xe0/0x210 [radeon]
Dec 02 01:01:05 Xander kernel: [<ffffffff8146a6ff>]
drm_dev_register+0x9f/0x1d0
Dec 02 01:01:05 Xander kernel: [<ffffffff8146c53d>]
drm_get_pci_dev+0x8d/0x140
Dec 02 01:01:05 Xander kernel: [<ffffffffa002d3ff>]
radeon_pci_probe+0x9f/0xd0 [radeon]
Dec 02 01:01:05 Xander kernel: [<ffffffff8139e7e0>]
local_pci_probe+0x40/0xa0
Dec 02 01:01:05 Xander kernel: [<ffffffff8107633f>]
work_for_cpu_fn+0xf/0x20
Dec 02 01:01:05 Xander kernel: [<ffffffff810796bb>]
process_one_work+0x1cb/0x490
Dec 02 01:01:05 Xander kernel: [<ffffffff8107a478>]
worker_thread+0x258/0x3a0
Dec 02 01:01:05 Xander kernel: [<ffffffff81080907>] kthread+0xf7/0x110
Dec 02 01:01:05 Xander kernel: [<ffffffff8183654c>]
ret_from_fork+0x7c/0xb0
Dec 02 01:01:05 Xander kernel:
-> #2 (&dev->struct_mutex){+.+.+.}:
Dec 02 01:01:05 Xander kernel: [<ffffffff810a1a62>]
lock_acquire+0x72/0xa0
Dec 02 01:01:05 Xander kernel: [<ffffffff8182d35b>]
mutex_lock_nested+0x4b/0x490
Dec 02 01:01:05 Xander kernel: [<ffffffffa0089b46>]
radeon_pm_compute_clocks+0x2e6/0x790 [radeon]
Dec 02 01:01:05 Xander kernel: [<ffffffffa008ab51>]
radeon_pm_init+0x7c1/0x960 [radeon]
Dec 02 01:01:05 Xander kernel: [<ffffffffa005731f>]
radeon_modeset_init+0x40f/0x9a0 [radeon]
Dec 02 01:01:05 Xander kernel: [<ffffffffa00310d0>]
radeon_driver_load_kms+0xe0/0x210 [radeon]
Dec 02 01:01:05 Xander kernel: [<ffffffff8146a6ff>]
drm_dev_register+0x9f/0x1d0
Dec 02 01:01:05 Xander kernel: [<ffffffff8146c53d>]
drm_get_pci_dev+0x8d/0x140
Dec 02 01:01:05 Xander kernel: [<ffffffffa002d3ff>]
radeon_pci_probe+0x9f/0xd0 [radeon]
Dec 02 01:01:05 Xander kernel: [<ffffffff8139e7e0>]
local_pci_probe+0x40/0xa0
Dec 02 01:01:05 Xander kernel: [<ffffffff8107633f>]
work_for_cpu_fn+0xf/0x20
Dec 02 01:01:05 Xander kernel: [<ffffffff810796bb>]
process_one_work+0x1cb/0x490
Dec 02 01:01:05 Xander kernel: [<ffffffff8107a478>]
worker_thread+0x258/0x3a0
Dec 02 01:01:05 Xander kernel: [<ffffffff81080907>] kthread+0xf7/0x110
Dec 02 01:01:05 Xander kernel: [<ffffffff8183654c>]
ret_from_fork+0x7c/0xb0
Dec 02 01:01:05 Xander kernel:
-> #1 (&rdev->pm.mutex){+.+.+.}:
Dec 02 01:01:05 Xander kernel: [<ffffffff810a1a62>]
lock_acquire+0x72/0xa0
Dec 02 01:01:05 Xander kernel: [<ffffffff8182d35b>]
mutex_lock_nested+0x4b/0x490
Dec 02 01:01:05 Xander kernel: [<ffffffffa008a069>]
radeon_dpm_enable_uvd+0x79/0xc0 [radeon]
Dec 02 01:01:05 Xander kernel: [<ffffffffa00b238f>]
radeon_uvd_note_usage+0xef/0x110 [radeon]
Dec 02 01:01:05 Xander kernel: [<ffffffffa0060610>]
radeon_cs_ioctl+0x8f0/0x9f0 [radeon]
Dec 02 01:01:05 Xander kernel: [<ffffffff81464782>]
drm_ioctl+0x502/0x640
Dec 02 01:01:05 Xander kernel: [<ffffffffa002d049>]
radeon_drm_ioctl+0x49/0x80 [radeon]
Dec 02 01:01:05 Xander kernel: [<ffffffff81174bd0>]
do_vfs_ioctl+0x300/0x520
Dec 02 01:01:05 Xander kernel: [<ffffffff81174e71>] SyS_ioctl+0x81/0xa0
Dec 02 01:01:05 Xander kernel: [<ffffffff818365fd>]
system_call_fastpath+0x1a/0x1f
Dec 02 01:01:05 Xander kernel:
-> #0 (reservation_ww_class_mutex){+.+.+.}:
Dec 02 01:01:05 Xander kernel: [<ffffffff810a10fa>]
__lock_acquire+0x195a/0x1b20
Dec 02 01:01:05 Xander kernel: [<ffffffff810a1a62>]
lock_acquire+0x72/0xa0
Dec 02 01:01:05 Xander kernel: [<ffffffff8182d7f8>]
mutex_lock_interruptible_nested+0x58/0x550
Dec 02 01:01:05 Xander kernel: [<ffffffffa00047d9>]
ttm_bo_wait_unreserved+0x39/0x70 [ttm]
Dec 02 01:01:05 Xander kernel: [<ffffffffa0006079>]
ttm_bo_vm_fault+0x389/0x470 [ttm]
Dec 02 01:01:05 Xander kernel: [<ffffffffa00485c7>]
radeon_ttm_fault+0x47/0x60 [radeon]
Dec 02 01:01:05 Xander kernel: [<ffffffff81125b4c>]
__do_fault+0x6c/0x4c0
Dec 02 01:01:05 Xander kernel: [<ffffffff81129846>]
handle_mm_fault+0x2e6/0xc90
Dec 02 01:01:05 Xander kernel: [<ffffffff81833455>]
__do_page_fault+0x165/0x560
Dec 02 01:01:05 Xander kernel: [<ffffffff81833859>]
do_page_fault+0x9/0x10
Dec 02 01:01:05 Xander kernel: [<ffffffff8182ffc8>] page_fault+0x28/0x30
Dec 02 01:01:05 Xander kernel:
other info that might help us debug this:
Dec 02 01:01:05 Xander kernel: Chain exists of:
reservation_ww_class_mutex -->
&rdev->pm.mclk_lock --> &bo->wu_mutex
Dec 02 01:01:05 Xander kernel: Possible unsafe locking scenario:
Dec 02 01:01:05 Xander kernel: CPU0 CPU1
Dec 02 01:01:05 Xander kernel: ---- ----
Dec 02 01:01:05 Xander kernel: lock(&bo->wu_mutex);
Dec 02 01:01:05 Xander kernel:
lock(&rdev->pm.mclk_lock);
Dec 02 01:01:05 Xander kernel:
lock(&bo->wu_mutex);
Dec 02 01:01:05 Xander kernel: lock(reservation_ww_class_mutex);
Dec 02 01:01:05 Xander kernel:
*** DEADLOCK ***
Dec 02 01:01:05 Xander kernel: 2 locks held by chromium/3786:
Dec 02 01:01:05 Xander kernel: #0: (&rdev->pm.mclk_lock){++++++}, at:
[<ffffffffa00485b6>] radeon_ttm_fault+0x36/0x60 [radeon]
Dec 02 01:01:05 Xander kernel: #1: (&bo->wu_mutex){+.+...}, at:
[<ffffffffa00047bd>] ttm_bo_wait_unreserved+0x1d/0x70 [ttm]
Dec 02 01:01:05 Xander kernel:
stack backtrace:
Dec 02 01:01:05 Xander kernel: CPU: 1 PID: 3786 Comm: chromium Tainted: G
C 3.13.0-rc2-VANILLA-dirty #170
Dec 02 01:01:05 Xander kernel: Hardware name: Gigabyte Technology Co., Ltd.
GA-990FXA-UD3/GA-990FXA-UD3, BIOS F10a 01/24/2013
Dec 02 01:01:05 Xander kernel: ffffffff8241ade0 ffff8803e9a03a18
ffffffff81824a57 ffffffff8241af90
Dec 02 01:01:05 Xander kernel: ffff8803e9a03a58 ffffffff8181f529
ffff8803e9a03ab0 ffff8803e5d7c6d8
Dec 02 01:01:05 Xander kernel: 0000000000000001 ffff8803e5d7c6b0
ffff8803e5d7c080 ffff8803e5d7c6d8
Dec 02 01:01:05 Xander kernel: Call Trace:
Dec 02 01:01:05 Xander kernel: [<ffffffff81824a57>] dump_stack+0x45/0x56
Dec 02 01:01:05 Xander kernel: [<ffffffff8181f529>]
print_circular_bug+0x1f9/0x208
Dec 02 01:01:05 Xander kernel: [<ffffffff810a10fa>]
__lock_acquire+0x195a/0x1b20
Dec 02 01:01:05 Xander kernel: [<ffffffff810a1a62>] lock_acquire+0x72/0xa0
Dec 02 01:01:05 Xander kernel: [<ffffffffa00047d9>] ?
ttm_bo_wait_unreserved+0x39/0x70 [ttm]
Dec 02 01:01:05 Xander kernel: [<ffffffff8182d7f8>]
mutex_lock_interruptible_nested+0x58/0x550
Dec 02 01:01:05 Xander kernel: [<ffffffffa00047d9>] ?
ttm_bo_wait_unreserved+0x39/0x70 [ttm]
Dec 02 01:01:05 Xander kernel: [<ffffffffa00047d9>] ?
ttm_bo_wait_unreserved+0x39/0x70 [ttm]
Dec 02 01:01:05 Xander kernel: [<ffffffffa0006071>] ?
ttm_bo_vm_fault+0x381/0x470 [ttm]
Dec 02 01:01:05 Xander kernel: [<ffffffffa00047d9>]
ttm_bo_wait_unreserved+0x39/0x70 [ttm]
Dec 02 01:01:05 Xander kernel: [<ffffffffa0006079>]
ttm_bo_vm_fault+0x389/0x470 [ttm]
Dec 02 01:01:05 Xander kernel: [<ffffffffa00485b6>] ?
radeon_ttm_fault+0x36/0x60 [radeon]
Dec 02 01:01:05 Xander kernel: [<ffffffffa00485c7>] radeon_ttm_fault+0x47/0x60
[radeon]
Dec 02 01:01:05 Xander kernel: [<ffffffff81125b4c>] __do_fault+0x6c/0x4c0
Dec 02 01:01:05 Xander kernel: [<ffffffff81129846>]
handle_mm_fault+0x2e6/0xc90
Dec 02 01:01:05 Xander kernel: [<ffffffff81833455>]
__do_page_fault+0x165/0x560
Dec 02 01:01:05 Xander kernel: [<ffffffff811a0703>] ? fsnotify+0x83/0x340
Dec 02 01:01:05 Xander kernel: [<ffffffff81836629>] ? sysret_check+0x22/0x5d
Dec 02 01:01:05 Xander kernel: [<ffffffff8136ef6d>] ?
trace_hardirqs_off_thunk+0x3a/0x3c
Dec 02 01:01:05 Xander kernel: [<ffffffff81833859>] do_page_fault+0x9/0x10
Dec 02 01:01:05 Xander kernel: [<ffffffff8182ffc8>] page_fault+0x28/0x30
--
You are receiving this mail because:
You are the assignee for the bug.
[-- Attachment #1.2: Type: text/html, Size: 12528 bytes --]
[-- Attachment #2: Type: text/plain, Size: 159 bytes --]
_______________________________________________
dri-devel mailing list
dri-devel@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/dri-devel
next prev parent reply other threads:[~2013-12-02 23:33 UTC|newest]
Thread overview: 128+ messages / expand[flat|nested] mbox.gz Atom feed top
2013-09-23 16:36 [Bug 69723] New: Computer freezes with kernel 3.11.0 / 3.12-rc1 (with bug 68235's patches applied) when dpm=1 on r600g (Cayman) bugzilla-daemon
2013-09-23 23:20 ` [Bug 69723] " bugzilla-daemon
2013-09-25 1:05 ` bugzilla-daemon
2013-09-25 1:47 ` bugzilla-daemon
2013-09-25 1:57 ` bugzilla-daemon
2013-09-26 17:08 ` bugzilla-daemon
2013-09-26 17:27 ` bugzilla-daemon
2013-09-26 17:47 ` bugzilla-daemon
2013-09-29 1:29 ` bugzilla-daemon
2013-09-30 5:37 ` bugzilla-daemon
2013-10-01 3:09 ` bugzilla-daemon
2013-10-01 3:15 ` bugzilla-daemon
2013-10-01 13:19 ` bugzilla-daemon
2013-10-01 13:32 ` bugzilla-daemon
2013-10-01 17:42 ` bugzilla-daemon
2013-10-02 6:08 ` bugzilla-daemon
2013-10-26 4:32 ` bugzilla-daemon
2013-10-27 0:13 ` bugzilla-daemon
2013-10-27 0:39 ` bugzilla-daemon
2013-10-27 5:02 ` bugzilla-daemon
2013-11-07 20:23 ` bugzilla-daemon
2013-11-07 22:07 ` bugzilla-daemon
2013-11-07 22:10 ` bugzilla-daemon
2013-11-07 22:14 ` bugzilla-daemon
2013-11-08 0:15 ` bugzilla-daemon
2013-11-08 1:31 ` bugzilla-daemon
2013-11-08 4:13 ` bugzilla-daemon
2013-11-08 6:32 ` bugzilla-daemon
2013-11-08 6:44 ` bugzilla-daemon
2013-11-08 7:39 ` bugzilla-daemon
2013-11-14 5:31 ` bugzilla-daemon
2013-11-14 14:42 ` bugzilla-daemon
2013-11-14 15:06 ` bugzilla-daemon
2013-11-15 6:50 ` bugzilla-daemon
2013-11-19 5:50 ` [Bug 69723] GPU lockups " bugzilla-daemon
2013-11-24 7:06 ` bugzilla-daemon
2013-11-24 20:54 ` bugzilla-daemon
2013-11-24 20:57 ` bugzilla-daemon
2013-11-25 3:18 ` [Bug 69723] GPU lockups with kernel 3.11.0 / 3.12-rc1 " bugzilla-daemon
2013-11-25 18:12 ` bugzilla-daemon
2013-11-25 19:53 ` bugzilla-daemon
2013-11-26 22:47 ` bugzilla-daemon
2013-11-26 23:13 ` bugzilla-daemon
2013-11-27 1:39 ` bugzilla-daemon
2013-11-27 2:19 ` bugzilla-daemon
2013-11-27 4:16 ` bugzilla-daemon
2013-11-27 4:30 ` bugzilla-daemon
2013-11-27 5:01 ` bugzilla-daemon
2013-11-27 6:04 ` bugzilla-daemon
2013-11-27 14:14 ` bugzilla-daemon
2013-11-28 14:50 ` bugzilla-daemon
2013-11-29 1:21 ` bugzilla-daemon
2013-11-29 2:57 ` bugzilla-daemon
2013-11-29 15:46 ` bugzilla-daemon
2013-11-29 15:47 ` bugzilla-daemon
2013-11-29 19:31 ` bugzilla-daemon
2013-12-02 23:33 ` bugzilla-daemon [this message]
2013-12-08 17:37 ` bugzilla-daemon
2013-12-08 18:15 ` bugzilla-daemon
2013-12-08 18:31 ` bugzilla-daemon
2013-12-09 2:02 ` bugzilla-daemon
2013-12-09 7:42 ` bugzilla-daemon
2013-12-09 16:56 ` bugzilla-daemon
2013-12-09 20:01 ` bugzilla-daemon
2013-12-09 20:37 ` bugzilla-daemon
2013-12-09 20:43 ` bugzilla-daemon
2013-12-09 22:59 ` bugzilla-daemon
2013-12-10 0:01 ` bugzilla-daemon
2013-12-10 1:08 ` bugzilla-daemon
2013-12-10 2:14 ` bugzilla-daemon
2013-12-10 4:31 ` bugzilla-daemon
2013-12-10 9:09 ` bugzilla-daemon
2013-12-10 19:20 ` bugzilla-daemon
2013-12-11 3:33 ` bugzilla-daemon
2013-12-11 3:36 ` bugzilla-daemon
2013-12-11 19:26 ` bugzilla-daemon
2013-12-11 19:59 ` bugzilla-daemon
2013-12-12 14:07 ` bugzilla-daemon
2013-12-12 14:55 ` bugzilla-daemon
2013-12-13 2:48 ` bugzilla-daemon
2013-12-13 3:03 ` bugzilla-daemon
2013-12-13 5:39 ` bugzilla-daemon
2013-12-13 8:21 ` bugzilla-daemon
2013-12-13 17:12 ` bugzilla-daemon
2013-12-16 6:13 ` bugzilla-daemon
2013-12-16 20:11 ` bugzilla-daemon
2013-12-20 1:27 ` bugzilla-daemon
2013-12-20 13:42 ` bugzilla-daemon
2013-12-22 1:46 ` bugzilla-daemon
2014-01-12 21:19 ` bugzilla-daemon
2014-01-12 22:26 ` bugzilla-daemon
2014-01-12 23:30 ` bugzilla-daemon
2014-01-15 21:02 ` bugzilla-daemon
2014-01-15 21:15 ` bugzilla-daemon
2014-01-15 21:17 ` bugzilla-daemon
2014-01-15 21:33 ` bugzilla-daemon
2014-01-16 8:12 ` bugzilla-daemon
2014-01-16 20:39 ` bugzilla-daemon
2014-01-17 15:43 ` bugzilla-daemon
2014-01-17 15:53 ` bugzilla-daemon
2014-01-17 16:36 ` bugzilla-daemon
2014-01-18 3:08 ` bugzilla-daemon
2014-01-18 12:48 ` bugzilla-daemon
2014-01-18 17:01 ` bugzilla-daemon
2014-01-20 13:58 ` bugzilla-daemon
2014-01-23 2:28 ` bugzilla-daemon
2014-01-30 17:37 ` bugzilla-daemon
2014-01-30 18:30 ` bugzilla-daemon
2014-02-02 19:47 ` bugzilla-daemon
2014-03-07 4:32 ` bugzilla-daemon
2014-03-07 14:12 ` bugzilla-daemon
2014-03-11 19:12 ` bugzilla-daemon
2014-04-11 22:19 ` bugzilla-daemon
2014-04-11 22:23 ` bugzilla-daemon
2014-04-21 16:28 ` bugzilla-daemon
2014-07-01 16:19 ` bugzilla-daemon
2014-07-01 18:32 ` bugzilla-daemon
2014-07-01 20:15 ` bugzilla-daemon
2014-07-02 22:27 ` bugzilla-daemon
2014-07-03 2:52 ` bugzilla-daemon
2014-07-03 7:30 ` bugzilla-daemon
2014-07-04 21:28 ` bugzilla-daemon
2014-07-06 16:42 ` bugzilla-daemon
2014-07-06 20:27 ` bugzilla-daemon
2014-07-06 20:33 ` bugzilla-daemon
2014-07-07 17:13 ` bugzilla-daemon
2014-07-11 18:22 ` bugzilla-daemon
2014-07-11 20:12 ` bugzilla-daemon
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=bug-69723-502-aOeQID0Ijb@http.bugs.freedesktop.org/ \
--to=bugzilla-daemon@freedesktop.org \
--cc=dri-devel@lists.freedesktop.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;
as well as URLs for NNTP newsgroup(s).