qemu-commits
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Qemu-commits] [qemu/qemu] 4bb571: pci/pcie: don't assume cap id 0 is re


From: GitHub
Subject: [Qemu-commits] [qemu/qemu] 4bb571: pci/pcie: don't assume cap id 0 is reserved
Date: Mon, 20 Feb 2017 04:00:12 -0800

  Branch: refs/heads/master
  Home:   https://github.com/qemu/qemu
  Commit: 4bb571d857d973d9308d9fdb1f48d983d6639bd4
      
https://github.com/qemu/qemu/commit/4bb571d857d973d9308d9fdb1f48d983d6639bd4
  Author: Michael S. Tsirkin <address@hidden>
  Date:   2017-02-17 (Fri, 17 Feb 2017)

  Changed paths:
    M hw/pci/pcie.c

  Log Message:
  -----------
  pci/pcie: don't assume cap id 0 is reserved

VFIO actually wants to create a capability with ID == 0.
This is done to make guest drivers skip the given capability.
pcie_add_capability then trips up on this capability
when looking for end of capability list.

To support this use-case, it's easy enough to switch to
e.g. 0xffffffff for these comparisons - we can be sure
it will never match a 16-bit capability ID.

Signed-off-by: Michael S. Tsirkin <address@hidden>
Reviewed-by: Peter Xu <address@hidden>
Reviewed-by: Alex Williamson <address@hidden>


  Commit: 0793169870f376bc9959b7d81df48ab4a90dcceb
      
https://github.com/qemu/qemu/commit/0793169870f376bc9959b7d81df48ab4a90dcceb
  Author: Fam Zheng <address@hidden>
  Date:   2017-02-17 (Fri, 17 Feb 2017)

  Changed paths:
    M hw/block/dataplane/virtio-blk.c
    M hw/block/virtio-blk.c
    M hw/scsi/virtio-scsi-dataplane.c
    M hw/scsi/virtio-scsi.c
    M hw/virtio/virtio.c
    M include/hw/virtio/virtio-blk.h
    M include/hw/virtio/virtio-scsi.h
    M include/hw/virtio/virtio.h

  Log Message:
  -----------
  virtio: Report real progress in VQ aio poll handler

In virtio_queue_host_notifier_aio_poll, not all "!virtio_queue_empty()"
cases are making true progress.

Currently the offending one is virtio-scsi event queue, whose handler
does nothing if no event is pending. As a result aio_poll() will spin on
the "non-empty" VQ and take 100% host CPU.

Fix this by reporting actual progress from virtio queue aio handlers.

Reported-by: Ed Swierk <address@hidden>
Signed-off-by: Fam Zheng <address@hidden>
Tested-by: Ed Swierk <address@hidden>
Reviewed-by: Stefan Hajnoczi <address@hidden>
Reviewed-by: Michael S. Tsirkin <address@hidden>
Signed-off-by: Michael S. Tsirkin <address@hidden>


  Commit: 79c0f397feaea37992500eafd933e301c2306410
      
https://github.com/qemu/qemu/commit/79c0f397feaea37992500eafd933e301c2306410
  Author: Haozhong Zhang <address@hidden>
  Date:   2017-02-17 (Fri, 17 Feb 2017)

  Changed paths:
    A docs/nvdimm.txt

  Log Message:
  -----------
  docs: add document to explain the usage of vNVDIMM

Signed-off-by: Haozhong Zhang <address@hidden>
Reviewed-by: Xiao Guangrong <address@hidden>
Reviewed-by: Stefan Hajnoczi <address@hidden>
Reviewed-by: Michael S. Tsirkin <address@hidden>
Signed-off-by: Michael S. Tsirkin <address@hidden>


  Commit: 1d8280c18f96f0cd96d1e7acd62f7250c4da1a84
      
https://github.com/qemu/qemu/commit/1d8280c18f96f0cd96d1e7acd62f7250c4da1a84
  Author: Paolo Bonzini <address@hidden>
  Date:   2017-02-17 (Fri, 17 Feb 2017)

  Changed paths:
    M memory.c

  Log Message:
  -----------
  memory: make memory_listener_unregister idempotent

Make it easy to unregister a MemoryListener without tracking whether it
had been registered before.

Signed-off-by: Paolo Bonzini <address@hidden>
Reviewed-by: Philippe Mathieu-Daudé <address@hidden>
Reviewed-by: Michael S. Tsirkin <address@hidden>
Signed-off-by: Michael S. Tsirkin <address@hidden>


  Commit: e6a830d6eba6ed116a0b4ef5577ca0b46edf4c67
      
https://github.com/qemu/qemu/commit/e6a830d6eba6ed116a0b4ef5577ca0b46edf4c67
  Author: Paolo Bonzini <address@hidden>
  Date:   2017-02-17 (Fri, 17 Feb 2017)

  Changed paths:
    M include/hw/virtio/virtio-access.h

  Log Message:
  -----------
  virtio: add virtio_*_phys_cached

Reviewed-by: Stefan Hajnoczi <address@hidden>
Signed-off-by: Paolo Bonzini <address@hidden>
Reviewed-by: Michael S. Tsirkin <address@hidden>
Signed-off-by: Michael S. Tsirkin <address@hidden>


  Commit: 9796d0ac8fb0a8d522afd409cb25a607eae61617
      
https://github.com/qemu/qemu/commit/9796d0ac8fb0a8d522afd409cb25a607eae61617
  Author: Paolo Bonzini <address@hidden>
  Date:   2017-02-17 (Fri, 17 Feb 2017)

  Changed paths:
    M hw/virtio/virtio.c

  Log Message:
  -----------
  virtio: use address_space_map/unmap to access descriptors

This makes little difference, but it makes the code change smaller
for the next patch that introduces MemoryRegionCache.  This is
because map/unmap are similar to MemoryRegionCache init/destroy.

Reviewed-by: Stefan Hajnoczi <address@hidden>
Signed-off-by: Paolo Bonzini <address@hidden>
Reviewed-by: Michael S. Tsirkin <address@hidden>
Signed-off-by: Michael S. Tsirkin <address@hidden>


  Commit: 91047df38dffa80222179f63fbb74c1dfefa25ed
      
https://github.com/qemu/qemu/commit/91047df38dffa80222179f63fbb74c1dfefa25ed
  Author: Paolo Bonzini <address@hidden>
  Date:   2017-02-17 (Fri, 17 Feb 2017)

  Changed paths:
    M exec.c

  Log Message:
  -----------
  exec: make address_space_cache_destroy idempotent

Clear cache->mr so that address_space_cache_destroy does nothing
the second time it is called.

Reviewed-by: Stefan Hajnoczi <address@hidden>
Signed-off-by: Paolo Bonzini <address@hidden>
Reviewed-by: Philippe Mathieu-Daudé <address@hidden>
Reviewed-by: Michael S. Tsirkin <address@hidden>
Signed-off-by: Michael S. Tsirkin <address@hidden>


  Commit: 5eba0404b98294906134c06519c272bfb5f50453
      
https://github.com/qemu/qemu/commit/5eba0404b98294906134c06519c272bfb5f50453
  Author: Paolo Bonzini <address@hidden>
  Date:   2017-02-17 (Fri, 17 Feb 2017)

  Changed paths:
    M hw/virtio/virtio.c
    M include/exec/memory.h

  Log Message:
  -----------
  virtio: use MemoryRegionCache to access descriptors

For now, the cache is created on every virtqueue_pop.  Later on,
direct descriptors will be able to reuse it.

Reviewed-by: Stefan Hajnoczi <address@hidden>
Signed-off-by: Paolo Bonzini <address@hidden>
Reviewed-by: Michael S. Tsirkin <address@hidden>
Signed-off-by: Michael S. Tsirkin <address@hidden>


  Commit: c611c76417f52b335ecaab01c61743e3b705eb7c
      
https://github.com/qemu/qemu/commit/c611c76417f52b335ecaab01c61743e3b705eb7c
  Author: Paolo Bonzini <address@hidden>
  Date:   2017-02-17 (Fri, 17 Feb 2017)

  Changed paths:
    M hw/virtio/virtio.c
    M include/hw/virtio/virtio.h

  Log Message:
  -----------
  virtio: add MemoryListener to cache ring translations

The cached translations are RCU-protected to allow efficient use
when processing virtqueues.

Reviewed-by: Stefan Hajnoczi <address@hidden>
Signed-off-by: Paolo Bonzini <address@hidden>
Reviewed-by: Michael S. Tsirkin <address@hidden>
Signed-off-by: Michael S. Tsirkin <address@hidden>


  Commit: 991976f751c98c79bd174f0cd48250ac2120d04c
      
https://github.com/qemu/qemu/commit/991976f751c98c79bd174f0cd48250ac2120d04c
  Author: Paolo Bonzini <address@hidden>
  Date:   2017-02-17 (Fri, 17 Feb 2017)

  Changed paths:
    M hw/virtio/virtio.c

  Log Message:
  -----------
  virtio: use VRingMemoryRegionCaches for descriptor ring

Reviewed-by: Stefan Hajnoczi <address@hidden>
Signed-off-by: Paolo Bonzini <address@hidden>
Reviewed-by: Michael S. Tsirkin <address@hidden>
Signed-off-by: Michael S. Tsirkin <address@hidden>


  Commit: ca0176ad8368668c5ad2b428361652e05984e930
      
https://github.com/qemu/qemu/commit/ca0176ad8368668c5ad2b428361652e05984e930
  Author: Paolo Bonzini <address@hidden>
  Date:   2017-02-17 (Fri, 17 Feb 2017)

  Changed paths:
    M hw/virtio/virtio.c

  Log Message:
  -----------
  virtio: check for vring setup in virtio_queue_update_used_idx

If the vring has not been set up, it is not necessary for vring_used_idx
to do anything (as is already the case when the caller is virtio_load).
This is harmless for now, but it will be a problem when the
MemoryRegionCache has not been set up.

Signed-off-by: Paolo Bonzini <address@hidden>
Reviewed-by: Philippe Mathieu-Daudé <address@hidden>
Reviewed-by: Michael S. Tsirkin <address@hidden>
Signed-off-by: Michael S. Tsirkin <address@hidden>


  Commit: 97cd965c070152bc626c7507df9fb356bbe1cd81
      
https://github.com/qemu/qemu/commit/97cd965c070152bc626c7507df9fb356bbe1cd81
  Author: Paolo Bonzini <address@hidden>
  Date:   2017-02-17 (Fri, 17 Feb 2017)

  Changed paths:
    M hw/net/virtio-net.c
    M hw/virtio/virtio.c

  Log Message:
  -----------
  virtio: use VRingMemoryRegionCaches for avail and used rings

The virtio-net change is necessary because it uses virtqueue_fill
and virtqueue_flush instead of the more convenient virtqueue_push.

Reviewed-by: Stefan Hajnoczi <address@hidden>
Signed-off-by: Paolo Bonzini <address@hidden>
Reviewed-by: Michael S. Tsirkin <address@hidden>
Signed-off-by: Michael S. Tsirkin <address@hidden>


  Commit: b4b9862b536f41fcdf6ad193a306a852c5b5b71a
      
https://github.com/qemu/qemu/commit/b4b9862b536f41fcdf6ad193a306a852c5b5b71a
  Author: Michael S. Tsirkin <address@hidden>
  Date:   2017-02-17 (Fri, 17 Feb 2017)

  Changed paths:
    M hw/virtio/virtio.c

  Log Message:
  -----------
  virtio: Fix no interrupt when not creating msi controller

For ARM virt machine, if we use virt-2.7 which will not create ITS node,
the virtio-net can not recieve interrupts so it can't get ip address
through dhcp.
This fixes commit 83d768b(virtio: set ISR on dataplane notifications).

Signed-off-by: Shannon Zhao <address@hidden>
Reviewed-by: Michael S. Tsirkin <address@hidden>
Signed-off-by: Michael S. Tsirkin <address@hidden>


  Commit: d4e9b75aa03d3f0e08fa431998764d7f72d78a48
      
https://github.com/qemu/qemu/commit/d4e9b75aa03d3f0e08fa431998764d7f72d78a48
  Author: Peter Xu <address@hidden>
  Date:   2017-02-17 (Fri, 17 Feb 2017)

  Changed paths:
    M hw/pci/pcie.c

  Log Message:
  -----------
  pcie: simplify pcie_add_capability()

When we add PCIe extended capabilities, we should be following the rule
that we add the head extended cap (at offset 0x100) first, then the rest
of them. Meanwhile, we are always adding new capability bits at the end
of the list. Here the "next" looks meaningless in all cases since it
should always be zero (along with the "header").

Simplify the function a bit, and it looks more readable now.

Signed-off-by: Peter Xu <address@hidden>
Reviewed-by: Michael S. Tsirkin <address@hidden>
Signed-off-by: Michael S. Tsirkin <address@hidden>


  Commit: 3213835720f0b79ea60ead8e81f356695a446d1d
      
https://github.com/qemu/qemu/commit/3213835720f0b79ea60ead8e81f356695a446d1d
  Author: Peter Xu <address@hidden>
  Date:   2017-02-17 (Fri, 17 Feb 2017)

  Changed paths:
    M hw/vfio/common.c
    M hw/vfio/trace-events

  Log Message:
  -----------
  vfio: trace map/unmap for notify as well

We traces its range, but we don't know whether it's a MAP/UNMAP. Let's
dump it as well.

Acked-by: Alex Williamson <address@hidden>
Reviewed-by: David Gibson <address@hidden>
Signed-off-by: Peter Xu <address@hidden>
Reviewed-by: Michael S. Tsirkin <address@hidden>
Signed-off-by: Michael S. Tsirkin <address@hidden>


  Commit: 4a4b88fbe1a95e80a2e29830e69e1deded407fc1
      
https://github.com/qemu/qemu/commit/4a4b88fbe1a95e80a2e29830e69e1deded407fc1
  Author: Peter Xu <address@hidden>
  Date:   2017-02-17 (Fri, 17 Feb 2017)

  Changed paths:
    M hw/vfio/common.c

  Log Message:
  -----------
  vfio: introduce vfio_get_vaddr()

A cleanup for vfio_iommu_map_notify(). Now we will fetch vaddr even if
the operation is unmap, but it won't hurt much.

One thing to mention is that we need the RCU read lock to protect the
whole translation and map/unmap procedure.

Acked-by: Alex Williamson <address@hidden>
Reviewed-by: David Gibson <address@hidden>
Signed-off-by: Peter Xu <address@hidden>
Reviewed-by: Michael S. Tsirkin <address@hidden>
Signed-off-by: Michael S. Tsirkin <address@hidden>


  Commit: dfbd90e5b9b772b1c5a52bad9f6dbabb385a7dc2
      
https://github.com/qemu/qemu/commit/dfbd90e5b9b772b1c5a52bad9f6dbabb385a7dc2
  Author: Peter Xu <address@hidden>
  Date:   2017-02-17 (Fri, 17 Feb 2017)

  Changed paths:
    M hw/vfio/common.c

  Log Message:
  -----------
  vfio: allow to notify unmap for very large region

Linux vfio driver supports to do VFIO_IOMMU_UNMAP_DMA for a very big
region. This can be leveraged by QEMU IOMMU implementation to cleanup
existing page mappings for an entire iova address space (by notifying
with an IOTLB with extremely huge addr_mask). However current
vfio_iommu_map_notify() does not allow that. It make sure that all the
translated address in IOTLB is falling into RAM range.

The check makes sense, but it should only be a sensible checker for
mapping operations, and mean little for unmap operations.

This patch moves this check into map logic only, so that we'll get
faster unmap handling (no need to translate again), and also we can then
better support unmapping a very big region when it covers non-ram ranges
or even not-existing ranges.

Acked-by: Alex Williamson <address@hidden>
Signed-off-by: Peter Xu <address@hidden>
Reviewed-by: David Gibson <address@hidden>
Reviewed-by: Michael S. Tsirkin <address@hidden>
Signed-off-by: Michael S. Tsirkin <address@hidden>


  Commit: 3b40f0e53c2ebfcec8aabab7e91c11c5bd441ac0
      
https://github.com/qemu/qemu/commit/3b40f0e53c2ebfcec8aabab7e91c11c5bd441ac0
  Author: Aviv Ben-David <address@hidden>
  Date:   2017-02-17 (Fri, 17 Feb 2017)

  Changed paths:
    M hw/i386/intel_iommu.c
    M hw/i386/intel_iommu_internal.h
    M include/hw/i386/intel_iommu.h

  Log Message:
  -----------
  intel_iommu: add "caching-mode" option

This capability asks the guest to invalidate cache before each map operation.
We can use this invalidation to trap map operations in the hypervisor.

Signed-off-by: Aviv Ben-David <address@hidden>
[peterx: using "caching-mode" instead of "cache-mode" to align with spec]
[peterx: re-write the subject to make it short and clear]
Reviewed-by: Jason Wang <address@hidden>
Signed-off-by: Peter Xu <address@hidden>
Signed-off-by: Aviv Ben-David <address@hidden>
Reviewed-by: Michael S. Tsirkin <address@hidden>
Signed-off-by: Michael S. Tsirkin <address@hidden>


  Commit: 046ab7e9beea6abdcc016556f82d7075e4ff0155
      
https://github.com/qemu/qemu/commit/046ab7e9beea6abdcc016556f82d7075e4ff0155
  Author: Peter Xu <address@hidden>
  Date:   2017-02-17 (Fri, 17 Feb 2017)

  Changed paths:
    M hw/i386/intel_iommu.c

  Log Message:
  -----------
  intel_iommu: simplify irq region translation

Now we have a standalone memory region for MSI, all the irq region
requests should be redirected there. Cleaning up the block with an
assertion instead.

Reviewed-by: Jason Wang <address@hidden>
Signed-off-by: Peter Xu <address@hidden>
Reviewed-by: David Gibson <address@hidden>
Reviewed-by: Michael S. Tsirkin <address@hidden>
Signed-off-by: Michael S. Tsirkin <address@hidden>


  Commit: 6e9055641b7a02131a7879369bcd1fe6c8ccb503
      
https://github.com/qemu/qemu/commit/6e9055641b7a02131a7879369bcd1fe6c8ccb503
  Author: Peter Xu <address@hidden>
  Date:   2017-02-17 (Fri, 17 Feb 2017)

  Changed paths:
    M hw/i386/intel_iommu.c

  Log Message:
  -----------
  intel_iommu: renaming gpa to iova where proper

There are lots of places in current intel_iommu.c codes that named
"iova" as "gpa". It is really confusing to use a name "gpa" in these
places (which is very easily to be understood as "Guest Physical
Address", while it's not). To make the codes (much) easier to be read, I
decided to do this once and for all.

No functional change is made. Only literal ones.

Reviewed-by: Jason Wang <address@hidden>
Signed-off-by: Peter Xu <address@hidden>
Reviewed-by: David Gibson <address@hidden>
Reviewed-by: Michael S. Tsirkin <address@hidden>
Signed-off-by: Michael S. Tsirkin <address@hidden>


  Commit: bc535e59c4ec7d98a8011a3ffb6580fa04b7745c
      
https://github.com/qemu/qemu/commit/bc535e59c4ec7d98a8011a3ffb6580fa04b7745c
  Author: Peter Xu <address@hidden>
  Date:   2017-02-17 (Fri, 17 Feb 2017)

  Changed paths:
    M hw/i386/intel_iommu.c
    M hw/i386/trace-events

  Log Message:
  -----------
  intel_iommu: convert dbg macros to traces for inv

VT-d codes are still using static DEBUG_INTEL_IOMMU macro. That's not
good, and we should end the day when we need to recompile the code
before getting useful debugging information for vt-d. Time to switch to
the trace system. This is the first patch to do it.

Signed-off-by: Peter Xu <address@hidden>
Reviewed-by: Jason Wang <address@hidden>
Reviewed-by: David Gibson <address@hidden>
Reviewed-by: Michael S. Tsirkin <address@hidden>
Signed-off-by: Michael S. Tsirkin <address@hidden>


  Commit: 6c441e1d613a1f91a53bd215f2ed1f9559194f21
      
https://github.com/qemu/qemu/commit/6c441e1d613a1f91a53bd215f2ed1f9559194f21
  Author: Peter Xu <address@hidden>
  Date:   2017-02-17 (Fri, 17 Feb 2017)

  Changed paths:
    M hw/i386/intel_iommu.c
    M hw/i386/trace-events

  Log Message:
  -----------
  intel_iommu: convert dbg macros to trace for trans

Another patch to convert the DPRINTF() stuffs. This patch focuses on the
address translation path and caching.

Signed-off-by: Peter Xu <address@hidden>
Reviewed-by: Jason Wang <address@hidden>
Reviewed-by: David Gibson <address@hidden>
Reviewed-by: Michael S. Tsirkin <address@hidden>
Signed-off-by: Michael S. Tsirkin <address@hidden>


  Commit: 7e58326ad7e79b8c5dbcc6f24e9dc1523d84c11b
      
https://github.com/qemu/qemu/commit/7e58326ad7e79b8c5dbcc6f24e9dc1523d84c11b
  Author: Peter Xu <address@hidden>
  Date:   2017-02-17 (Fri, 17 Feb 2017)

  Changed paths:
    M hw/i386/intel_iommu.c

  Log Message:
  -----------
  intel_iommu: vtd_slpt_level_shift check level

This helps in debugging incorrect level passed in.

Reviewed-by: Jason Wang <address@hidden>
Signed-off-by: Peter Xu <address@hidden>
Reviewed-by: David Gibson <address@hidden>
Reviewed-by: Michael S. Tsirkin <address@hidden>
Signed-off-by: Michael S. Tsirkin <address@hidden>


  Commit: d514cfd763b271b4e97a9fc6adaabc8fd50084ab
      
https://github.com/qemu/qemu/commit/d514cfd763b271b4e97a9fc6adaabc8fd50084ab
  Author: Peter Maydell <address@hidden>
  Date:   2017-02-20 (Mon, 20 Feb 2017)

  Changed paths:
    A docs/nvdimm.txt
    M exec.c
    M hw/block/dataplane/virtio-blk.c
    M hw/block/virtio-blk.c
    M hw/i386/intel_iommu.c
    M hw/i386/intel_iommu_internal.h
    M hw/i386/trace-events
    M hw/net/virtio-net.c
    M hw/pci/pcie.c
    M hw/scsi/virtio-scsi-dataplane.c
    M hw/scsi/virtio-scsi.c
    M hw/vfio/common.c
    M hw/vfio/trace-events
    M hw/virtio/virtio.c
    M include/exec/memory.h
    M include/hw/i386/intel_iommu.h
    M include/hw/virtio/virtio-access.h
    M include/hw/virtio/virtio-blk.h
    M include/hw/virtio/virtio-scsi.h
    M include/hw/virtio/virtio.h
    M memory.c

  Log Message:
  -----------
  Merge remote-tracking branch 'remotes/mst/tags/for_upstream' into staging

virtio, pci: fixes, features

virtio is using region caches for performance
iommu support for IOTLBs
misc fixes

Signed-off-by: Michael S. Tsirkin <address@hidden>

# gpg: Signature made Fri 17 Feb 2017 19:53:02 GMT
# gpg:                using RSA key 0x281F0DB8D28D5469
# gpg: Good signature from "Michael S. Tsirkin <address@hidden>"
# gpg:                 aka "Michael S. Tsirkin <address@hidden>"
# Primary key fingerprint: 0270 606B 6F3C DF3D 0B17  0970 C350 3912 AFBE 8E67
#      Subkey fingerprint: 5D09 FD08 71C8 F85B 94CA  8A0D 281F 0DB8 D28D 5469

* remotes/mst/tags/for_upstream: (23 commits)
  intel_iommu: vtd_slpt_level_shift check level
  intel_iommu: convert dbg macros to trace for trans
  intel_iommu: convert dbg macros to traces for inv
  intel_iommu: renaming gpa to iova where proper
  intel_iommu: simplify irq region translation
  intel_iommu: add "caching-mode" option
  vfio: allow to notify unmap for very large region
  vfio: introduce vfio_get_vaddr()
  vfio: trace map/unmap for notify as well
  pcie: simplify pcie_add_capability()
  virtio: Fix no interrupt when not creating msi controller
  virtio: use VRingMemoryRegionCaches for avail and used rings
  virtio: check for vring setup in virtio_queue_update_used_idx
  virtio: use VRingMemoryRegionCaches for descriptor ring
  virtio: add MemoryListener to cache ring translations
  virtio: use MemoryRegionCache to access descriptors
  exec: make address_space_cache_destroy idempotent
  virtio: use address_space_map/unmap to access descriptors
  virtio: add virtio_*_phys_cached
  memory: make memory_listener_unregister idempotent
  ...

Signed-off-by: Peter Maydell <address@hidden>


Compare: https://github.com/qemu/qemu/compare/ad584d37f2a8...d514cfd763b2

reply via email to

[Prev in Thread] Current Thread [Next in Thread]