From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from eggs.gnu.org ([208.118.235.92]:44994) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1UXpyS-0006PI-SO for qemu-devel@nongnu.org; Thu, 02 May 2013 05:38:49 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1UXpyR-0001hs-O6 for qemu-devel@nongnu.org; Thu, 02 May 2013 05:38:48 -0400 Received: from mail-wi0-x22a.google.com ([2a00:1450:400c:c05::22a]:43229) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1UXpyR-0001hT-Hu for qemu-devel@nongnu.org; Thu, 02 May 2013 05:38:47 -0400 Received: by mail-wi0-f170.google.com with SMTP id hq12so379568wib.5 for ; Thu, 02 May 2013 02:38:46 -0700 (PDT) Sender: Paolo Bonzini From: Paolo Bonzini Date: Thu, 2 May 2013 11:38:36 +0200 Message-Id: <1367487519-17332-1-git-send-email-pbonzini@redhat.com> Subject: [Qemu-devel] [PATCH 1.5 0/3] qdev: switch reset to post-order List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: qemu-devel@nongnu.org Cc: mst@redhat.com I was going to keep these for 1.6, but since they have been tested by the user and myself, and they fix a regression, it can be worthwhile to include these in 1.5. qdev reset (qdev_reset_all/qbus_reset_all) is currently done in pre-order. This is not right, because it means the parent devices cannot expect anything about the children devices' state during the reset callback. With the traversal done *before* invoking the bus-reset callback, there is no way for the bus-reset callback to take care of the device tree traversal. This is currently done only for PCI, which requires some adjustments. This fixes a crash in resetting the LSI SCSI adapter, as reported and tested by Claudio Bley. Paolo Bonzini (3): pci: do not export pci_bus_reset qdev: allow both pre- and post-order vists in qdev walking functions qdev: switch reset to post-order hw/core/qdev.c | 47 ++++++++++++++++++++++++++++++++++------------- hw/pci/pci.c | 37 +++++++++++++++++-------------------- hw/pci/pci_bridge.c | 2 +- include/hw/pci/pci.h | 1 - include/hw/qdev-core.h | 15 ++++++++++----- 5 files changed, 62 insertions(+), 40 deletions(-) -- 1.8.2