From nobody Thu May 2 04:40:29 2024 Delivered-To: importer@patchew.org Received-SPF: pass (zoho.com: domain of gnu.org designates 208.118.235.17 as permitted sender) client-ip=208.118.235.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Authentication-Results: mx.zoho.com; spf=pass (zoho.com: domain of gnu.org designates 208.118.235.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; Return-Path: Received: from lists.gnu.org (lists.gnu.org [208.118.235.17]) by mx.zohomail.com with SMTPS id 148662396823833.837722958164136; Wed, 8 Feb 2017 23:06:08 -0800 (PST) Received: from localhost ([::1]:35971 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1cbinu-0004Ed-Ry for importer@patchew.org; Thu, 09 Feb 2017 02:06:06 -0500 Received: from eggs.gnu.org ([2001:4830:134:3::10]:59226) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1cbimI-0003Ie-JY for qemu-devel@nongnu.org; Thu, 09 Feb 2017 02:04:31 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1cbimE-000274-Ih for qemu-devel@nongnu.org; Thu, 09 Feb 2017 02:04:24 -0500 Received: from mail-io0-x241.google.com ([2607:f8b0:4001:c06::241]:33002) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1cbimE-00026p-EP for qemu-devel@nongnu.org; Thu, 09 Feb 2017 02:04:22 -0500 Received: by mail-io0-x241.google.com with SMTP id 101so1295613iom.0 for ; Wed, 08 Feb 2017 23:04:20 -0800 (PST) Received: from localhost.localdomain.localdomain ([104.192.110.250]) by smtp.gmail.com with ESMTPSA id e11sm2483474ita.10.2017.02.08.23.04.17 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Wed, 08 Feb 2017 23:04:19 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:to:cc:subject:date:message-id:in-reply-to:references; bh=q39s0X/m0ZMQA4uzZvtxEmuHhDDXoTYZYOQCKus2Ww4=; b=k9EVk4OF6vwuSJXk4pS/v+s7M/poPf2nPUHsll+iQAqmZ9gLH3kVWqLWqiXaxm+GA8 VvVoocLAodo49xb7K/tq3mTSKcMqSSE6jYCxc0ALePHD9gQq+AMHkTb4jla7Z27YmJin U9qWGINJJqgup6vVI0PTVrFYgaDr/WmJwMxL/fcl5+sF4tW3uoj5MkUfCMaTQgB8q0Jw s8KvbdtLrmoB5xGWjXtZU6hyNDUqrqMgeF8MkA5Uuh9+K62chO1rTKvk2iuZoxQVod7d WZSrvq8XtfUE4amjaBBDK88fGpRnCgK4BLuifrxdMfAXQFIaiyzjWinqhGZEWdSGaDTO Rq8g== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references; bh=q39s0X/m0ZMQA4uzZvtxEmuHhDDXoTYZYOQCKus2Ww4=; b=BFQbY81MHP+2nOwEixkIWERdjBwJklZvJmK8Mzw3rPYQkfnFKuu21xyQDErROf3Do6 IfZ2cdRQPs8BoHekJtcu47TaSrjS514SXxyL3BU/A6XHpvLCCtmp9LV2wJ8n0f76+67E CLmaDXV+avh8imlft23RJvcaX7F++P9pChVInv3dNS/d9CW/RzQ2iMLNLeJNQY4RUkFp Xk/wdYaxQDZd5vGdsQtTYOUTMOavyijZQEqQ+PLiziUZxCDj6soLR/iAPNYcii+rX+u9 +zjtO9Tq0uVTTifLfu2GziNd2hBH+8Eq1CRnxuXr/K6K7WFxBvcF3FU12sihQuC6ORjx Dxzg== X-Gm-Message-State: AMke39nOpGfklekmfZ6pS1BXLmsFjmR6768dhAqQ7CdGPb2uefZYS892TGbEhXEDRPxnAQ== X-Received: by 10.107.9.149 with SMTP id 21mr1815922ioj.106.1486623859558; Wed, 08 Feb 2017 23:04:19 -0800 (PST) From: Li Qiang X-Google-Original-From: Li Qiang To: jsnow@redhat.com, qemu-devel@nongnu.org Date: Wed, 8 Feb 2017 23:04:03 -0800 Message-Id: <1486623844-13140-2-git-send-email-liqiang6-s@360.cn> X-Mailer: git-send-email 1.8.3.1 In-Reply-To: <1486623844-13140-1-git-send-email-liqiang6-s@360.cn> References: <1486623844-13140-1-git-send-email-liqiang6-s@360.cn> X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] X-Received-From: 2607:f8b0:4001:c06::241 Subject: [Qemu-devel] [PATCH 1/2] ide: core: add cleanup function X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: Li Qiang Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail: RSF_0 Z_629925259 SPT_0 Content-Transfer-Encoding: quoted-printable MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" As the pci ahci can be hotplug and unplug, in the ahci unrealize function it should free all the resource once allocated in the realized function. This patch adds two cleanup function. Signed-off-by: Li Qiang --- hw/ide/core.c | 21 +++++++++++++++++++++ include/hw/ide/internal.h | 2 ++ 2 files changed, 23 insertions(+) diff --git a/hw/ide/core.c b/hw/ide/core.c index 43709e5..8fe5896 100644 --- a/hw/ide/core.c +++ b/hw/ide/core.c @@ -2586,6 +2586,13 @@ void ide_register_restart_cb(IDEBus *bus) } } =20 +void ide_unregister_restart_cb(IDEBus *bus) +{ + if (bus->dma->ops->restart_dma) { + qemu_del_vm_change_state_handler(bus->vmstate); + } +} + static IDEDMA ide_dma_nop =3D { .ops =3D &ide_dma_nop_ops, .aiocb =3D NULL, @@ -2603,6 +2610,20 @@ void ide_init2(IDEBus *bus, qemu_irq irq) bus->dma =3D &ide_dma_nop; } =20 +void ide_exit(IDEBus *bus) +{ + int i; + + for (i =3D 0; i < 2; i++) { + IDEState *s =3D &bus->ifs[i]; + + timer_del(s->sector_write_timer); + timer_free(s->sector_write_timer); + qemu_vfree(s->smart_selftest_data); + qemu_vfree(s->io_buffer); + } +} + static const MemoryRegionPortio ide_portio_list[] =3D { { 0, 8, 1, .read =3D ide_ioport_read, .write =3D ide_ioport_write }, { 0, 1, 2, .read =3D ide_data_readw, .write =3D ide_data_writew }, diff --git a/include/hw/ide/internal.h b/include/hw/ide/internal.h index 88dc118..09b0404 100644 --- a/include/hw/ide/internal.h +++ b/include/hw/ide/internal.h @@ -607,8 +607,10 @@ int ide_init_drive(IDEState *s, BlockBackend *blk, IDE= DriveKind kind, uint32_t cylinders, uint32_t heads, uint32_t secs, int chs_trans); void ide_init2(IDEBus *bus, qemu_irq irq); +void ide_exit(IDEBus *bus); void ide_init_ioport(IDEBus *bus, ISADevice *isa, int iobase, int iobase2); void ide_register_restart_cb(IDEBus *bus); +void ide_unregister_restart_cb(IDEBus *bus); =20 void ide_exec_cmd(IDEBus *bus, uint32_t val); =20 --=20 1.8.3.1 From nobody Thu May 2 04:40:29 2024 Delivered-To: importer@patchew.org Received-SPF: pass (zoho.com: domain of gnu.org designates 208.118.235.17 as permitted sender) client-ip=208.118.235.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Authentication-Results: mx.zoho.com; spf=pass (zoho.com: domain of gnu.org designates 208.118.235.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; Return-Path: Received: from lists.gnu.org (lists.gnu.org [208.118.235.17]) by mx.zohomail.com with SMTPS id 1486623969559780.9959317155434; Wed, 8 Feb 2017 23:06:09 -0800 (PST) Received: from localhost ([::1]:35972 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1cbinw-0004FA-7r for importer@patchew.org; Thu, 09 Feb 2017 02:06:08 -0500 Received: from eggs.gnu.org ([2001:4830:134:3::10]:59238) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1cbimN-0003L8-Dn for qemu-devel@nongnu.org; Thu, 09 Feb 2017 02:04:32 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1cbimI-00027S-IM for qemu-devel@nongnu.org; Thu, 09 Feb 2017 02:04:31 -0500 Received: from mail-io0-x243.google.com ([2607:f8b0:4001:c06::243]:33841) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1cbimI-00027L-DQ for qemu-devel@nongnu.org; Thu, 09 Feb 2017 02:04:26 -0500 Received: by mail-io0-x243.google.com with SMTP id c80so1278281iod.1 for ; Wed, 08 Feb 2017 23:04:24 -0800 (PST) Received: from localhost.localdomain.localdomain ([104.192.110.250]) by smtp.gmail.com with ESMTPSA id e11sm2483474ita.10.2017.02.08.23.04.21 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Wed, 08 Feb 2017 23:04:23 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:to:cc:subject:date:message-id:in-reply-to:references; bh=OjFqSklt0aGwuxpKi6JG3maP6XQWU8cLPKKCi9LnmOI=; b=qrw31+xlcbto3C6t+DJQrfU+XmrWlZ7455avRussrCyT8RYsPu5K+HJJP/QF7My7VZ v86oTd03exp5/qeQLTnwCn0zO2O0Qpn8cBDcaWiwSMWU2tXXhoIhMxb0KWxJetQIrGmZ 2ovdv9rApf1e7Ue8ObMwSwrVcYI4XBggj5yjdXrdIU9dLGUBFtqA6ZB/e0jRUtwAEMXR lhNM2CUAb3p6z3O3MONsCM+EcTz7M0YzqyiRypju20vBUG1egUEOMxWTgjxg2XpOwXSK mnnleFYnN0bH148w7KsKLw4hT3tlFS4CbVlJsRzZQDUFm3XKsSE7CFLirQghLLmIe+K/ djUg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references; bh=OjFqSklt0aGwuxpKi6JG3maP6XQWU8cLPKKCi9LnmOI=; b=SnRjh29fJqwzzeBQVd6aCi2nnevv4n1T59jta4sVDSBVm6a09oPhhiRglmLfZ9zs+R bre5UqqLlAIpg2vraDu8E2Bkx9euzUSLyPWWJjfi10HVM9JR5gfdofo3B5lzJsR7Cyhd uK7aHemCLPymmvoS3GYwxWNnv3WW0uM501jVf2fPakJw452rdCFcVEcCoRbCUK07JCyC XcBdsG0txRvhC8fl+aZRImCvCdeOFTI77dCTiGhp+IcEpOKdMdfKSY/jAaHOeM7jSE7i DF8Tcb3KM9BYT1zIcs2VNwgAXEwrIT3dNV9nLCaOO8bgPojYWmNyLrp+RVb57c0kzOVr EhWw== X-Gm-Message-State: AMke39nqFcIyunIXLmAXy4TIvkOLpU9SUamsmnEnM+HRrNmbBjwt05yimMRmKNkQFM+ydQ== X-Received: by 10.107.51.68 with SMTP id z65mr1832314ioz.53.1486623863647; Wed, 08 Feb 2017 23:04:23 -0800 (PST) From: Li Qiang X-Google-Original-From: Li Qiang To: jsnow@redhat.com, qemu-devel@nongnu.org Date: Wed, 8 Feb 2017 23:04:04 -0800 Message-Id: <1486623844-13140-3-git-send-email-liqiang6-s@360.cn> X-Mailer: git-send-email 1.8.3.1 In-Reply-To: <1486623844-13140-1-git-send-email-liqiang6-s@360.cn> References: <1486623844-13140-1-git-send-email-liqiang6-s@360.cn> X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] X-Received-From: 2607:f8b0:4001:c06::243 Subject: [Qemu-devel] [PATCH 2/2] ide: ahci: call cleanup function in ahci unit X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: Li Qiang Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail: RSF_0 Z_629925259 SPT_0 Content-Transfer-Encoding: quoted-printable MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" This can avoid memory leak when hotunplug the ahci device. Signed-off-by: Li Qiang --- hw/ide/ahci.c | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/hw/ide/ahci.c b/hw/ide/ahci.c index 3c19bda..56f68a8 100644 --- a/hw/ide/ahci.c +++ b/hw/ide/ahci.c @@ -1485,6 +1485,14 @@ void ahci_realize(AHCIState *s, DeviceState *qdev, A= ddressSpace *as, int ports) =20 void ahci_uninit(AHCIState *s) { + int i; + + for (i =3D 0; i < s->ports; i++) { + AHCIDevice *ad =3D &s->dev[i]; + + ide_unregister_restart_cb(&ad->port); + ide_exit(&ad->port); + } g_free(s->dev); } =20 --=20 1.8.3.1