From patchwork Tue Jan 16 14:16:43 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Paolo Bonzini X-Patchwork-Id: 861619 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Authentication-Results: ozlabs.org; spf=pass (mailfrom) smtp.mailfrom=nongnu.org (client-ip=2001:4830:134:3::11; helo=lists.gnu.org; envelope-from=qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org; receiver=) Authentication-Results: ozlabs.org; dkim=fail reason="signature verification failed" (2048-bit key; unprotected) header.d=gmail.com header.i=@gmail.com header.b="SoUanQ+k"; dkim-atps=neutral Received: from lists.gnu.org (lists.gnu.org [IPv6:2001:4830:134:3::11]) (using TLSv1 with cipher AES256-SHA (256/256 bits)) (No client certificate requested) by ozlabs.org (Postfix) with ESMTPS id 3zLXhv1D0hz9s7M for ; Wed, 17 Jan 2018 01:31:27 +1100 (AEDT) Received: from localhost ([::1]:39163 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1ebSGr-0005P6-6U for incoming@patchwork.ozlabs.org; Tue, 16 Jan 2018 09:31:25 -0500 Received: from eggs.gnu.org ([2001:4830:134:3::10]:50058) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1ebS3e-0002Z9-QR for qemu-devel@nongnu.org; Tue, 16 Jan 2018 09:17:51 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1ebS3Z-0004Ph-5h for qemu-devel@nongnu.org; Tue, 16 Jan 2018 09:17:46 -0500 Received: from mail-wm0-x243.google.com ([2a00:1450:400c:c09::243]:39446) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1ebS3Y-0004PR-VA for qemu-devel@nongnu.org; Tue, 16 Jan 2018 09:17:41 -0500 Received: by mail-wm0-x243.google.com with SMTP id i11so8890441wmf.4 for ; Tue, 16 Jan 2018 06:17:40 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=sender:from:to:cc:subject:date:message-id:in-reply-to:references; bh=cfZ041KDoK43zcz57ci9uOlH/7EpQw1DEpFOjhZ5ag0=; b=SoUanQ+knN3IrChR3DVJgSa+6hVa6BZWaG/WPjiGI/D5Xsptd6JT5r9zShWcgzk3vG gnu9rIqpAupoE5HaA2KObEeLwQqWNNF4QWYce3QHwzxpQFUPYEnPhbosvAtEhPBXVLqL aOYRuYTODCioqGDzC2wd0eFM9h+vkaEsJglYx0P8b+vHCYaYkpfTqRDp2M0HcduTQO4m gnFGud6mQ8rqb67qRgXM6It6PvqD841kVwasDvXy+WLemRotOVTzGhHDPIX+XbOLCxPD Bb4OzoeJLwohJCEa/ZQxU5AVS2uU1onGlVC00AvChXCosOeamNk3ZMwUqqtr92xhGHRu Ekdw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:sender:from:to:cc:subject:date:message-id :in-reply-to:references; bh=cfZ041KDoK43zcz57ci9uOlH/7EpQw1DEpFOjhZ5ag0=; b=h5YZfZx5aRrhi41uoRj4ElL5nc7tlgr1z+by+T8t+KcxcbHmN+kTKBiQwR+ZNbrs70 RGpyXDV5fxFnnqBxi9JhSWcMY/M9b16E3vwsMH3V/Cat3GCXeC4ZFBNORLVDYOwKt9M6 l8D7lkTisOFk/YG2sJ6NE1dWsPIvZeMoPgFaPqR8XnoS4hj/4L1I0Ra8JZDIys0zoyCL 04a/Lgckdjtea2+2XIKDIgkKereDSCtEKE9OL+pcwHtwpki7dOdHQ/VjeIA4VP9QhL4c InwNcN7wMUEQEw4P+YrH8QEtVf6q91pXNsQnueCtLqcpHrHRR5Lb2IFs5g3wtZkCtcfU qh1w== X-Gm-Message-State: AKwxytfV16KwmS12RAy11w6Rgv00TZllqQK19Du8F16/++5Cq3oIteHH tQ6fkc9YkVpnviyn1TCD28GHpcQ/ X-Google-Smtp-Source: ACJfBoty7bv6y88zwArFwwoM/SDHVYrgrBSvX34Tm2EP7DX4UQrvwUsYQBSXhp/v92UeBJ8+CNdNrg== X-Received: by 10.28.69.212 with SMTP id l81mr13594604wmi.65.1516112259441; Tue, 16 Jan 2018 06:17:39 -0800 (PST) Received: from 640k.lan (dynamic-adsl-78-12-229-84.clienti.tiscali.it. [78.12.229.84]) by smtp.gmail.com with ESMTPSA id u10sm1537758wrg.6.2018.01.16.06.17.36 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Tue, 16 Jan 2018 06:17:37 -0800 (PST) From: Paolo Bonzini To: qemu-devel@nongnu.org Date: Tue, 16 Jan 2018 15:16:43 +0100 Message-Id: <1516112253-14480-2-git-send-email-pbonzini@redhat.com> X-Mailer: git-send-email 1.8.3.1 In-Reply-To: <1516112253-14480-1-git-send-email-pbonzini@redhat.com> References: <1516112253-14480-1-git-send-email-pbonzini@redhat.com> X-detected-operating-system: by eggs.gnu.org: Genre and OS details not recognized. X-Received-From: 2a00:1450:400c:c09::243 Subject: [Qemu-devel] [PULL 01/51] scsi-generic: Add share-rw option 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: Fam Zheng Errors-To: qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org Sender: "Qemu-devel" From: Fam Zheng Add the property to the device model, then parse it by calling blkconf_apply_backend_options(). In addition to blk_set_perm(), the called function also handles error options and wce. For error options we've already checked that the default values are used, for wce we don't have the option either so it is always the default (true). In other words there is no change of behavior in these regards. Signed-off-by: Fam Zheng Message-Id: <20171205151553.7834-1-famz@redhat.com> Signed-off-by: Paolo Bonzini --- hw/scsi/scsi-generic.c | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/hw/scsi/scsi-generic.c b/hw/scsi/scsi-generic.c index bd0d9ff..ba70c0d 100644 --- a/hw/scsi/scsi-generic.c +++ b/hw/scsi/scsi-generic.c @@ -482,6 +482,7 @@ static void scsi_generic_realize(SCSIDevice *s, Error **errp) int rc; int sg_version; struct sg_scsi_id scsiid; + Error *local_err = NULL; if (!s->conf.blk) { error_setg(errp, "drive property not set"); @@ -515,6 +516,13 @@ static void scsi_generic_realize(SCSIDevice *s, Error **errp) error_setg(errp, "SG_GET_SCSI_ID ioctl failed"); return; } + blkconf_apply_backend_options(&s->conf, + blk_is_read_only(s->conf.blk), + true, &local_err); + if (local_err) { + error_propagate(errp, local_err); + return; + } /* define device state */ s->type = scsiid.scsi_type; @@ -565,6 +573,7 @@ static SCSIRequest *scsi_new_request(SCSIDevice *d, uint32_t tag, uint32_t lun, static Property scsi_generic_properties[] = { DEFINE_PROP_DRIVE("drive", SCSIDevice, conf.blk), + DEFINE_PROP_BOOL("share-rw", SCSIDevice, conf.share_rw, false), DEFINE_PROP_END_OF_LIST(), }; From patchwork Tue Jan 16 14:16:44 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Paolo Bonzini X-Patchwork-Id: 861618 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Authentication-Results: ozlabs.org; spf=pass (mailfrom) smtp.mailfrom=nongnu.org (client-ip=2001:4830:134:3::11; helo=lists.gnu.org; envelope-from=qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org; receiver=) Authentication-Results: ozlabs.org; dkim=fail reason="signature verification failed" (2048-bit key; unprotected) header.d=gmail.com header.i=@gmail.com header.b="W4KtLftA"; dkim-atps=neutral Received: from lists.gnu.org (lists.gnu.org [IPv6:2001:4830:134:3::11]) (using TLSv1 with cipher AES256-SHA (256/256 bits)) (No client certificate requested) by ozlabs.org (Postfix) with ESMTPS id 3zLXd46PsLz9s7M for ; Wed, 17 Jan 2018 01:28:08 +1100 (AEDT) Received: from localhost ([::1]:39097 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1ebSDe-0002sb-Vw for incoming@patchwork.ozlabs.org; Tue, 16 Jan 2018 09:28:07 -0500 Received: from eggs.gnu.org ([2001:4830:134:3::10]:50088) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1ebS3i-0002cU-JW for qemu-devel@nongnu.org; Tue, 16 Jan 2018 09:17:51 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1ebS3a-0004QA-Oz for qemu-devel@nongnu.org; Tue, 16 Jan 2018 09:17:50 -0500 Received: from mail-wm0-x242.google.com ([2a00:1450:400c:c09::242]:43472) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1ebS3a-0004Ps-Ht for qemu-devel@nongnu.org; Tue, 16 Jan 2018 09:17:42 -0500 Received: by mail-wm0-x242.google.com with SMTP id g1so8671317wmg.2 for ; Tue, 16 Jan 2018 06:17:42 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=sender:from:to:subject:date:message-id:in-reply-to:references; bh=Jt0Xhb4SuzYe0b5ia2LvO8eJ8oboIxs2Kr861nHZqow=; b=W4KtLftA2uMupFBYtKUSJT6Tcw4VCUX7/z5jZyQ8BvEKLXEnXGriOeL2JMFWMMfitw mP6uSxnmMw5vrHWuzE92lYVBJtuTtJch+T6pmYhmm0d6hFhGvL+8Qno2ezbX8YK+VfuA qL+OUndvWQ9WTjckJjRVKvTL1f9nYCbVLovHqjFBwUu9K6fqnwVmE3L9PT5x2PAL27rO 5xXM3H70JTOkeh1xhMxG7PJhkGnO5wYsE7Z4D2vwyKFmEQSwRtoA43jyQ4SNtFY4q1OW nxKfwMvJ/PeFTaeYBDrPbn5mLPQgTfygpTJSWYiwbTJAK3p/Yf/yw/4q27kJvM4HwJWW esRg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:sender:from:to:subject:date:message-id :in-reply-to:references; bh=Jt0Xhb4SuzYe0b5ia2LvO8eJ8oboIxs2Kr861nHZqow=; b=uN80iudaQvrkjV9wCvPjI9IHVbsvbeN/iSc/xnt4XASMKGqxaAaWLPDSA/vQ0sj5Kp QjIV2zSl4WF1j+SSUOaBdtkZK0TgzEH77bbBd7BjcDu4SmUsRya8hWvlCIpBSDniqY1R 0Ez/2L1yIdOgAY64ZWNofGbNNoIZwzHh0yOHPwucegLE1OmVHeO+C3HxNMfz+aSHSFK2 8fwpNDn571ggSCREb403jtGhIERAHJ+2eWE9LK0ivssIJsKrLyv5aWrqNSpUJ0L4AnnE a6MZ4drCvKlcY/kogpuQY5fJPWefIcdC4xVPBt0YwZobBN0AFM1IARRRpdDDLQHH9atC 9qTA== X-Gm-Message-State: AKwxytcXKP0mJEvaEkzDcI1y0CDzulzykpif1rZpxWVzgpry+KtFS4Vd EaDJ5JgP+TsbWz4/kfYhxyCHQ9yN X-Google-Smtp-Source: ACJfBosKVAUIMoH7kMHpa3bfxv8DGZ8Cmrr/kMTmJzU5Po7xUU4gcaJl+6htI+2w8awA6wbACUdA/Q== X-Received: by 10.28.149.17 with SMTP id x17mr5874042wmd.19.1516112260935; Tue, 16 Jan 2018 06:17:40 -0800 (PST) Received: from 640k.lan (dynamic-adsl-78-12-229-84.clienti.tiscali.it. [78.12.229.84]) by smtp.gmail.com with ESMTPSA id u10sm1537758wrg.6.2018.01.16.06.17.39 for (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Tue, 16 Jan 2018 06:17:39 -0800 (PST) From: Paolo Bonzini To: qemu-devel@nongnu.org Date: Tue, 16 Jan 2018 15:16:44 +0100 Message-Id: <1516112253-14480-3-git-send-email-pbonzini@redhat.com> X-Mailer: git-send-email 1.8.3.1 In-Reply-To: <1516112253-14480-1-git-send-email-pbonzini@redhat.com> References: <1516112253-14480-1-git-send-email-pbonzini@redhat.com> X-detected-operating-system: by eggs.gnu.org: Genre and OS details not recognized. X-Received-From: 2a00:1450:400c:c09::242 Subject: [Qemu-devel] [PULL 02/51] scsi: fix scsi_convert_sense crash when in_buf == NULL && in_len == 0 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: , Errors-To: qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org Sender: "Qemu-devel" scsi_disk_emulate_command passes in_buf == NULL when sent a REQUEST SENSE command. Check for in_len == 0 before dereferencing in_buf. Fixes: f68d98b21fa74155dc7c1fd212474379ac3c7531 Reported-by: Roman Kagan Tested-by: Roman Kagan Signed-off-by: Paolo Bonzini --- scsi/utils.c | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/scsi/utils.c b/scsi/utils.c index ddae650..8738522 100644 --- a/scsi/utils.c +++ b/scsi/utils.c @@ -322,18 +322,18 @@ int scsi_convert_sense(uint8_t *in_buf, int in_len, SCSISense sense; bool fixed_in; + if (in_len == 0) { + return scsi_build_sense_buf(buf, len, SENSE_CODE(NO_SENSE), fixed); + } + fixed_in = (in_buf[0] & 2) == 0; - if (in_len && fixed == fixed_in) { + if (fixed == fixed_in) { memcpy(buf, in_buf, MIN(len, in_len)); return MIN(len, in_len); - } - - if (in_len == 0) { - sense = SENSE_CODE(NO_SENSE); } else { sense = scsi_parse_sense_buf(in_buf, in_len); + return scsi_build_sense_buf(buf, len, sense, fixed); } - return scsi_build_sense_buf(buf, len, sense, fixed); } int scsi_sense_to_errno(int key, int asc, int ascq) From patchwork Tue Jan 16 14:16:45 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Paolo Bonzini X-Patchwork-Id: 861617 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Authentication-Results: ozlabs.org; spf=pass (mailfrom) smtp.mailfrom=nongnu.org (client-ip=2001:4830:134:3::11; helo=lists.gnu.org; envelope-from=qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org; receiver=) Authentication-Results: ozlabs.org; dkim=fail reason="signature verification failed" (2048-bit key; unprotected) header.d=gmail.com header.i=@gmail.com header.b="sxbzEn+T"; dkim-atps=neutral Received: from lists.gnu.org (lists.gnu.org [IPv6:2001:4830:134:3::11]) (using TLSv1 with cipher AES256-SHA (256/256 bits)) (No client certificate requested) by ozlabs.org (Postfix) with ESMTPS id 3zLXd36kblz9s7M for ; Wed, 17 Jan 2018 01:28:07 +1100 (AEDT) Received: from localhost ([::1]:39093 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1ebSDe-0002ro-2B for incoming@patchwork.ozlabs.org; Tue, 16 Jan 2018 09:28:06 -0500 Received: from eggs.gnu.org ([2001:4830:134:3::10]:50033) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1ebS3d-0002XX-8V for qemu-devel@nongnu.org; Tue, 16 Jan 2018 09:17:51 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1ebS3c-0004QZ-2o for qemu-devel@nongnu.org; Tue, 16 Jan 2018 09:17:45 -0500 Received: from mail-wm0-x243.google.com ([2a00:1450:400c:c09::243]:41869) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1ebS3b-0004QL-Sd for qemu-devel@nongnu.org; Tue, 16 Jan 2018 09:17:44 -0500 Received: by mail-wm0-x243.google.com with SMTP id f71so8699289wmf.0 for ; Tue, 16 Jan 2018 06:17:43 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=sender:from:to:cc:subject:date:message-id:in-reply-to:references; bh=WuIGzw7hBamMo8s4pHysTbueWGCHrcegxv2oW6BJiuA=; b=sxbzEn+TtoGnZ+ecM+CGlfMBS4ZRWK7FZ7sLfrUk61czGmgMKUr5i27xMUwt31AlZJ /CXJEZbbuw2q38ZjlN/2ckidV7p9nLPaRPCPOkq5D02rUpe1nvLO6BAxwX76X+RIdSqm zuN0nMbPTSulnA8OVwtn1ySk0EsAfSKFbPWDZQVrLLqAc19rRZQb3m6teN634L3P4Md3 hs/QDhUJ+1Gp3IoNSrTrki7dIrD9zzvuUYrMddb6WaYi62HJbUw1x4olIr8/t75H8upi ihPgOio5VKumgBFrSIvVP75we/xu7m3S+a+WZavnem1ruKBA1KlGadg+EaW1/3y/D3ln fkLA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:sender:from:to:cc:subject:date:message-id :in-reply-to:references; bh=WuIGzw7hBamMo8s4pHysTbueWGCHrcegxv2oW6BJiuA=; b=DLginTaHWlFyQBOPq3XS1yx1BtzARyWfxMBhyXFXfLP9oJRDK9Ibgz0Hs8dJXX1nbw DsPL0yQz9bbq0fjmuB45ID9P0uSnIiidl/Htv7DiYhNWkG9ogEvrKxwqOs9zXwCPv/IX rqQYyXbbZP4aDtjC3rxSzCgzsJ93tkHAs990l59m4nTgIWqmEP62Nlq+Vrw0gJWTh3n+ 3sHDqrF7RYId2mJ6aQoQs+5iVob10etzBorAZeQWZSt60PHo3nYVbeInf2JBLpC0V3PE rSvSNXoprrF682+1loUOdJAsu47LPlGBpxvkwz1hPppn5CVMA0/r7sY4/q/24yRd+Aa1 mIlg== X-Gm-Message-State: AKwxytczhZv89fDzGaKqDmV+ScPyEqQ/eft+xoFqeqrTal7/LhlCu9eI SVgwSyL0EE8ZRPgnKdaad/ii1Cxu X-Google-Smtp-Source: ACJfBouA+e6xd494nTKo/XwjpmQa1hs+WFIc1WNlL0rG9WjSZHyWFqnMbbPE7beKiujGCvE1Wy4pmw== X-Received: by 10.28.191.135 with SMTP id o7mr13097386wmi.143.1516112262546; Tue, 16 Jan 2018 06:17:42 -0800 (PST) Received: from 640k.lan (dynamic-adsl-78-12-229-84.clienti.tiscali.it. [78.12.229.84]) by smtp.gmail.com with ESMTPSA id u10sm1537758wrg.6.2018.01.16.06.17.40 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Tue, 16 Jan 2018 06:17:41 -0800 (PST) From: Paolo Bonzini To: qemu-devel@nongnu.org Date: Tue, 16 Jan 2018 15:16:45 +0100 Message-Id: <1516112253-14480-4-git-send-email-pbonzini@redhat.com> X-Mailer: git-send-email 1.8.3.1 In-Reply-To: <1516112253-14480-1-git-send-email-pbonzini@redhat.com> References: <1516112253-14480-1-git-send-email-pbonzini@redhat.com> X-detected-operating-system: by eggs.gnu.org: Genre and OS details not recognized. X-Received-From: 2a00:1450:400c:c09::243 Subject: [Qemu-devel] [PULL 03/51] pc: fail memory hot-plug/unplug with -no-acpi and Q35 machine type 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: Haozhong Zhang Errors-To: qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org Sender: "Qemu-devel" From: Haozhong Zhang When -no-acpi option is used with Q35 machine type, no guest ACPI is built, but the ACPI device is still created, so only checking the presence of ACPI device before memory plug/unplug is not enough in such cases. Check whether ACPI is disabled globally in addition and fail memory plug/unplug if it's disabled. Signed-off-by: Haozhong Zhang Message-Id: <20171222015120.31730-1-haozhong.zhang@intel.com> Reviewed-by: Igor Mammedov Signed-off-by: Paolo Bonzini --- hw/i386/pc.c | 18 ++++++++++++++---- 1 file changed, 14 insertions(+), 4 deletions(-) diff --git a/hw/i386/pc.c b/hw/i386/pc.c index 3fcf318..55686bf 100644 --- a/hw/i386/pc.c +++ b/hw/i386/pc.c @@ -1695,9 +1695,14 @@ static void pc_dimm_plug(HotplugHandler *hotplug_dev, align = memory_region_get_alignment(mr); } - if (!pcms->acpi_dev) { + /* + * When -no-acpi is used with Q35 machine type, no ACPI is built, + * but pcms->acpi_dev is still created. Check !acpi_enabled in + * addition to cover this case. + */ + if (!pcms->acpi_dev || !acpi_enabled) { error_setg(&local_err, - "memory hotplug is not enabled: missing acpi device"); + "memory hotplug is not enabled: missing acpi device or acpi disabled"); goto out; } @@ -1729,9 +1734,14 @@ static void pc_dimm_unplug_request(HotplugHandler *hotplug_dev, Error *local_err = NULL; PCMachineState *pcms = PC_MACHINE(hotplug_dev); - if (!pcms->acpi_dev) { + /* + * When -no-acpi is used with Q35 machine type, no ACPI is built, + * but pcms->acpi_dev is still created. Check !acpi_enabled in + * addition to cover this case. + */ + if (!pcms->acpi_dev || !acpi_enabled) { error_setg(&local_err, - "memory hotplug is not enabled: missing acpi device"); + "memory hotplug is not enabled: missing acpi device or acpi disabled"); goto out; } From patchwork Tue Jan 16 14:16:46 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Paolo Bonzini X-Patchwork-Id: 861620 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Authentication-Results: ozlabs.org; spf=pass (mailfrom) smtp.mailfrom=nongnu.org (client-ip=2001:4830:134:3::11; helo=lists.gnu.org; envelope-from=qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org; receiver=) Authentication-Results: ozlabs.org; dkim=fail reason="signature verification failed" (2048-bit key; unprotected) header.d=gmail.com header.i=@gmail.com header.b="Z1qaq2/1"; dkim-atps=neutral Received: from lists.gnu.org (lists.gnu.org [IPv6:2001:4830:134:3::11]) (using TLSv1 with cipher AES256-SHA (256/256 bits)) (No client certificate requested) by ozlabs.org (Postfix) with ESMTPS id 3zLXhx0pXDz9s7M for ; Wed, 17 Jan 2018 01:31:29 +1100 (AEDT) Received: from localhost ([::1]:39166 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1ebSGt-0005Qg-5G for incoming@patchwork.ozlabs.org; Tue, 16 Jan 2018 09:31:27 -0500 Received: from eggs.gnu.org ([2001:4830:134:3::10]:50090) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1ebS3i-0002cZ-L1 for qemu-devel@nongnu.org; Tue, 16 Jan 2018 09:17:54 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1ebS3d-0004RF-KG for qemu-devel@nongnu.org; Tue, 16 Jan 2018 09:17:50 -0500 Received: from mail-wr0-x242.google.com ([2a00:1450:400c:c0c::242]:34575) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1ebS3d-0004Qh-DV for qemu-devel@nongnu.org; Tue, 16 Jan 2018 09:17:45 -0500 Received: by mail-wr0-x242.google.com with SMTP id 36so15365583wrh.1 for ; Tue, 16 Jan 2018 06:17:45 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=sender:from:to:cc:subject:date:message-id:in-reply-to:references; bh=bmG7iYeTKWh5qC/+uc4rcvxPtTZqkBEflhjbSu7hadI=; b=Z1qaq2/1oNtymowj9S99E12cXPBs8zLhsGH3fDTl7khO3R8z/WMq8kqyGhF9TepCuY tncg4Zuhg52fBukGzXeX7PgiRjSVijMsxFCWAgzDf3feF4GW5oAFoMNYlJsyj4P4zdst NKfdTuJkStPnh8YMkbduh+JKW11ByOV49WNm39jXymr/XnM0aSPTj4Fb1QJ36+qNC6cR K6HgloOBHVvvXoOfTZ6KdV/hcIEc5OrDlu+tDA4dm3/hfEnyrGgFohwK68niy2/x6oHJ IaMuwqXooQ/IRdEjK1m9UUGx+4w+Bbn+bbgVqB00SxIFsCQSuBZfwHppZZ6Q+cr6XjvU B7cQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:sender:from:to:cc:subject:date:message-id :in-reply-to:references; bh=bmG7iYeTKWh5qC/+uc4rcvxPtTZqkBEflhjbSu7hadI=; b=Zdt+7/4LeV3fg6y1Gyw1XuwTaDH2F17Ac8k79v/JB37gYiFicTW42CYaMnYQICbh9I hyK8Q7oLseIoC80pkMFusILGXcgVyzNxDuBsEeCEJID/da/0MX+2BEqs4QZLw53yIr8U P4+VP7DdJflXJqctqIMmWN8F0RGkUabM/H8CkLPKU7m58a7NvIa5uSWO1TQLH3d1a1zF PtAvs8OoACActcDgMk3wbZs+RNpbVm7kTGCDtYDW3ZKLvTQlTUeq8966iiFS3umhSToC CJSM0efGhWXA/96h+YJDNCD+mQpMouYgnTgywx73DcDbtWXrL4n8SbThYqJJr715pvp9 R/ZQ== X-Gm-Message-State: AKwxytfS5/9qtCt6kk1B8IGskB05Fo1yVwjH4IowOadeFewpNAKnc96N K+m9kBW3Qwgm8HlK/8Jv4vDF3wfJ X-Google-Smtp-Source: ACJfBouDfhiu4JnwIcZFHu62wDkAlAmDvPrEcT/AjWFfqj3s5NZsxyeEGaHLrOt9FPHluy6bRUEZwA== X-Received: by 10.223.139.221 with SMTP id w29mr5254783wra.223.1516112263989; Tue, 16 Jan 2018 06:17:43 -0800 (PST) Received: from 640k.lan (dynamic-adsl-78-12-229-84.clienti.tiscali.it. [78.12.229.84]) by smtp.gmail.com with ESMTPSA id u10sm1537758wrg.6.2018.01.16.06.17.42 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Tue, 16 Jan 2018 06:17:43 -0800 (PST) From: Paolo Bonzini To: qemu-devel@nongnu.org Date: Tue, 16 Jan 2018 15:16:46 +0100 Message-Id: <1516112253-14480-5-git-send-email-pbonzini@redhat.com> X-Mailer: git-send-email 1.8.3.1 In-Reply-To: <1516112253-14480-1-git-send-email-pbonzini@redhat.com> References: <1516112253-14480-1-git-send-email-pbonzini@redhat.com> X-detected-operating-system: by eggs.gnu.org: Genre and OS details not recognized. X-Received-From: 2a00:1450:400c:c0c::242 Subject: [Qemu-devel] [PULL 04/51] hpet: recover timer offset correctly 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: Maria Klimushenkova , Pavel Dovgalyuk Errors-To: qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org Sender: "Qemu-devel" From: Pavel Dovgalyuk HPET saves its state by calculating the current time and recovers timer offset using this calculated value. But these calculations include divisions and multiplications. Therefore the timer state cannot be recovered precise enough. This patch introduces saving of the original value of the offset to preserve the determinism of the timer. Signed-off-by: Pavel Dovgalyuk Signed-off-by: Maria Klimushenkova Reviewed-by: Juan Quintela --- v3: Added compat property for correct migration. Signed-off-by: Paolo Bonzini --- hw/timer/hpet.c | 30 ++++++++++++++++++++++++++++-- include/hw/compat.h | 6 +++++- 2 files changed, 33 insertions(+), 3 deletions(-) diff --git a/hw/timer/hpet.c b/hw/timer/hpet.c index 577371b..d97436b 100644 --- a/hw/timer/hpet.c +++ b/hw/timer/hpet.c @@ -70,6 +70,7 @@ typedef struct HPETState { MemoryRegion iomem; uint64_t hpet_offset; + bool hpet_offset_saved; qemu_irq irqs[HPET_NUM_IRQ_ROUTES]; uint32_t flags; uint8_t rtc_irq_level; @@ -221,7 +222,9 @@ static int hpet_pre_save(void *opaque) HPETState *s = opaque; /* save current counter value */ - s->hpet_counter = hpet_get_ticks(s); + if (hpet_enabled(s)) { + s->hpet_counter = hpet_get_ticks(s); + } return 0; } @@ -252,7 +255,10 @@ static int hpet_post_load(void *opaque, int version_id) HPETState *s = opaque; /* Recalculate the offset between the main counter and guest time */ - s->hpet_offset = ticks_to_ns(s->hpet_counter) - qemu_clock_get_ns(QEMU_CLOCK_VIRTUAL); + if (!s->hpet_offset_saved) { + s->hpet_offset = ticks_to_ns(s->hpet_counter) + - qemu_clock_get_ns(QEMU_CLOCK_VIRTUAL); + } /* Push number of timers into capability returned via HPET_ID */ s->capability &= ~HPET_ID_NUM_TIM_MASK; @@ -267,6 +273,13 @@ static int hpet_post_load(void *opaque, int version_id) return 0; } +static bool hpet_offset_needed(void *opaque) +{ + HPETState *s = opaque; + + return hpet_enabled(s) && s->hpet_offset_saved; +} + static bool hpet_rtc_irq_level_needed(void *opaque) { HPETState *s = opaque; @@ -285,6 +298,17 @@ static const VMStateDescription vmstate_hpet_rtc_irq_level = { } }; +static const VMStateDescription vmstate_hpet_offset = { + .name = "hpet/offset", + .version_id = 1, + .minimum_version_id = 1, + .needed = hpet_offset_needed, + .fields = (VMStateField[]) { + VMSTATE_UINT64(hpet_offset, HPETState), + VMSTATE_END_OF_LIST() + } +}; + static const VMStateDescription vmstate_hpet_timer = { .name = "hpet_timer", .version_id = 1, @@ -320,6 +344,7 @@ static const VMStateDescription vmstate_hpet = { }, .subsections = (const VMStateDescription*[]) { &vmstate_hpet_rtc_irq_level, + &vmstate_hpet_offset, NULL } }; @@ -762,6 +787,7 @@ static Property hpet_device_properties[] = { DEFINE_PROP_UINT8("timers", HPETState, num_timers, HPET_MIN_TIMERS), DEFINE_PROP_BIT("msi", HPETState, flags, HPET_MSI_SUPPORT, false), DEFINE_PROP_UINT32(HPET_INTCAP, HPETState, intcap, 0), + DEFINE_PROP_BOOL("hpet-offset-saved", HPETState, hpet_offset_saved, true), DEFINE_PROP_END_OF_LIST(), }; diff --git a/include/hw/compat.h b/include/hw/compat.h index 263de97..7f31850 100644 --- a/include/hw/compat.h +++ b/include/hw/compat.h @@ -2,7 +2,11 @@ #define HW_COMPAT_H #define HW_COMPAT_2_11 \ - /* empty */ + {\ + .driver = "hpet",\ + .property = "hpet-offset-saved",\ + .value = "false",\ + }, #define HW_COMPAT_2_10 \ {\ From patchwork Tue Jan 16 14:16:47 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Paolo Bonzini X-Patchwork-Id: 861626 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Authentication-Results: ozlabs.org; spf=pass (mailfrom) smtp.mailfrom=nongnu.org (client-ip=2001:4830:134:3::11; helo=lists.gnu.org; envelope-from=qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org; receiver=) Authentication-Results: ozlabs.org; dkim=fail reason="signature verification failed" (2048-bit key; unprotected) header.d=gmail.com header.i=@gmail.com header.b="p7b3HRWF"; dkim-atps=neutral Received: from lists.gnu.org (lists.gnu.org [IPv6:2001:4830:134:3::11]) (using TLSv1 with cipher AES256-SHA (256/256 bits)) (No client certificate requested) by ozlabs.org (Postfix) with ESMTPS id 3zLXpz2JV8z9sDB for ; Wed, 17 Jan 2018 01:36:43 +1100 (AEDT) Received: from localhost ([::1]:39321 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1ebSLx-0000u5-Cc for incoming@patchwork.ozlabs.org; Tue, 16 Jan 2018 09:36:41 -0500 Received: from eggs.gnu.org ([2001:4830:134:3::10]:50122) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1ebS3l-0002hF-69 for qemu-devel@nongnu.org; Tue, 16 Jan 2018 09:17:58 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1ebS3e-0004Rm-QK for qemu-devel@nongnu.org; Tue, 16 Jan 2018 09:17:53 -0500 Received: from mail-wr0-x241.google.com ([2a00:1450:400c:c0c::241]:40318) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1ebS3e-0004RO-Hy for qemu-devel@nongnu.org; Tue, 16 Jan 2018 09:17:46 -0500 Received: by mail-wr0-x241.google.com with SMTP id 100so15331034wrb.7 for ; Tue, 16 Jan 2018 06:17:46 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=sender:from:to:cc:subject:date:message-id:in-reply-to:references; bh=dJpVhCyBEhB4PzFsnZCeRSMC+Jtbthdz5umfkprMfgQ=; b=p7b3HRWFN5lCC8kzSiZmgVX2oue706QOfSWjwkGjMJ3Z/zjl+gAI0KyWWBROGjeowg ubn5KRJRYsl8mmK+Jrt1WpfqvIRsHR3Rym9KYc+P/mbmMP5o3YhYer+mQqGCcSRdROrL 4IGbBdOGBkBjFspSM98kXKzO11voL7pcRQ55vvur6hDs06h1xv4Ig3HBZz/+MJOb8/9F Ymm3t4e5VJasfoYTqqH7GZRxRXK4JiSZfJL6UYqbW0gS26C0252KI/l5LjDKbUr/KdfE r+F9sygnpKfKd2E9+MKXpaVCuJyaIgGrAs1sxZnkyUpc2Bmmwq16/G89u94W6e63bswN tDDQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:sender:from:to:cc:subject:date:message-id :in-reply-to:references; bh=dJpVhCyBEhB4PzFsnZCeRSMC+Jtbthdz5umfkprMfgQ=; b=BrO46evSyMCuo29qqPFmnCplVH8UWrbDmTtnR5WlsLelNZ48kFfygPGyeh0Sw8DQ6r ziq4AlSNQgcvciuv65hDW+V5bfPgMqNYO1XXtF2SxHpmi7aq/s7foi3UmVwG6M3CL4+l 5fnKq4NOjiuyibE9UGacswySWT7n64tZOFQ6/Ia1kVBoglqvVgwL7g7LFtrcY5vGSgvM UpEjyKHGS93ZqCMFUtQjqJcnEO4kvxuFcuoY2faPGQcjORo1+KudeaYhT00E2uiPoAL1 8wzpbCN0vQzySDkJd/VzrmSFHDEwJdxvfA/6oqpajjMYWGbJiS0zYsSAbQ/RLNv7iFEl DEoA== X-Gm-Message-State: AKGB3mLcL9UhALxJk0W83Jk2oyku2Znmbmwb9yDmoG38FGPYVHN8jbID GFe8oYhDaU/qBmeGweduCYE1xJZ4 X-Google-Smtp-Source: ACJfBovTofaepyYoDm75abwL2Ci+65QaWp+EXR9w5FYe/j0WUevGbla9lAPOse+tUGhgJe6pM3/58A== X-Received: by 10.223.135.115 with SMTP id 48mr25798441wrz.122.1516112265104; Tue, 16 Jan 2018 06:17:45 -0800 (PST) Received: from 640k.lan (dynamic-adsl-78-12-229-84.clienti.tiscali.it. [78.12.229.84]) by smtp.gmail.com with ESMTPSA id u10sm1537758wrg.6.2018.01.16.06.17.44 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Tue, 16 Jan 2018 06:17:44 -0800 (PST) From: Paolo Bonzini To: qemu-devel@nongnu.org Date: Tue, 16 Jan 2018 15:16:47 +0100 Message-Id: <1516112253-14480-6-git-send-email-pbonzini@redhat.com> X-Mailer: git-send-email 1.8.3.1 In-Reply-To: <1516112253-14480-1-git-send-email-pbonzini@redhat.com> References: <1516112253-14480-1-git-send-email-pbonzini@redhat.com> X-detected-operating-system: by eggs.gnu.org: Genre and OS details not recognized. X-Received-From: 2a00:1450:400c:c0c::241 Subject: [Qemu-devel] [PULL 05/51] i386/cpu/kvm: look at PMU's CPUID before setting MSRs 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: Jan Dakinevich Errors-To: qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org Sender: "Qemu-devel" From: Jan Dakinevich Certain PMU-related MSRs are not supported for CPUs with PMU architecture below version 2. KVM rejects any access to them (see intel_is_valid_msr_idx routine in KVM), and QEMU fails on the following assertion: kvm_put_msrs: Assertion `ret == cpu->kvm_msr_buf->nmsrs' failed. QEMU also could fail if KVM exposes less fixed counters then 3. It could happen if host system run inside another hypervisor, which is tweaking PMU-related CPUID. To prevent possible fail, number of fixed counters now is obtained in the same way as number of GP counters. Reviewed-by: Roman Kagan Signed-off-by: Jan Dakinevich Message-Id: <1514383466-7257-1-git-send-email-jan.dakinevich@virtuozzo.com> Signed-off-by: Paolo Bonzini --- target/i386/kvm.c | 80 +++++++++++++++++++++++++++++++++---------------------- 1 file changed, 48 insertions(+), 32 deletions(-) diff --git a/target/i386/kvm.c b/target/i386/kvm.c index 6f69e2f..d23127c 100644 --- a/target/i386/kvm.c +++ b/target/i386/kvm.c @@ -92,8 +92,9 @@ static bool has_msr_hv_stimer; static bool has_msr_hv_frequencies; static bool has_msr_xss; -static bool has_msr_architectural_pmu; -static uint32_t num_architectural_pmu_counters; +static uint32_t has_architectural_pmu_version; +static uint32_t num_architectural_pmu_gp_counters; +static uint32_t num_architectural_pmu_fixed_counters; static int has_xsave; static int has_xcrs; @@ -872,19 +873,28 @@ int kvm_arch_init_vcpu(CPUState *cs) } if (limit >= 0x0a) { - uint32_t ver; + uint32_t eax, edx; - cpu_x86_cpuid(env, 0x0a, 0, &ver, &unused, &unused, &unused); - if ((ver & 0xff) > 0) { - has_msr_architectural_pmu = true; - num_architectural_pmu_counters = (ver & 0xff00) >> 8; + cpu_x86_cpuid(env, 0x0a, 0, &eax, &unused, &unused, &edx); + + has_architectural_pmu_version = eax & 0xff; + if (has_architectural_pmu_version > 0) { + num_architectural_pmu_gp_counters = (eax & 0xff00) >> 8; /* Shouldn't be more than 32, since that's the number of bits * available in EBX to tell us _which_ counters are available. * Play it safe. */ - if (num_architectural_pmu_counters > MAX_GP_COUNTERS) { - num_architectural_pmu_counters = MAX_GP_COUNTERS; + if (num_architectural_pmu_gp_counters > MAX_GP_COUNTERS) { + num_architectural_pmu_gp_counters = MAX_GP_COUNTERS; + } + + if (has_architectural_pmu_version > 1) { + num_architectural_pmu_fixed_counters = edx & 0x1f; + + if (num_architectural_pmu_fixed_counters > MAX_FIXED_COUNTERS) { + num_architectural_pmu_fixed_counters = MAX_FIXED_COUNTERS; + } } } } @@ -1650,32 +1660,36 @@ static int kvm_put_msrs(X86CPU *cpu, int level) if (env->features[FEAT_KVM] & (1 << KVM_FEATURE_STEAL_TIME)) { kvm_msr_entry_add(cpu, MSR_KVM_STEAL_TIME, env->steal_time_msr); } - if (has_msr_architectural_pmu) { - /* Stop the counter. */ - kvm_msr_entry_add(cpu, MSR_CORE_PERF_FIXED_CTR_CTRL, 0); - kvm_msr_entry_add(cpu, MSR_CORE_PERF_GLOBAL_CTRL, 0); + if (has_architectural_pmu_version > 0) { + if (has_architectural_pmu_version > 1) { + /* Stop the counter. */ + kvm_msr_entry_add(cpu, MSR_CORE_PERF_FIXED_CTR_CTRL, 0); + kvm_msr_entry_add(cpu, MSR_CORE_PERF_GLOBAL_CTRL, 0); + } /* Set the counter values. */ - for (i = 0; i < MAX_FIXED_COUNTERS; i++) { + for (i = 0; i < num_architectural_pmu_fixed_counters; i++) { kvm_msr_entry_add(cpu, MSR_CORE_PERF_FIXED_CTR0 + i, env->msr_fixed_counters[i]); } - for (i = 0; i < num_architectural_pmu_counters; i++) { + for (i = 0; i < num_architectural_pmu_gp_counters; i++) { kvm_msr_entry_add(cpu, MSR_P6_PERFCTR0 + i, env->msr_gp_counters[i]); kvm_msr_entry_add(cpu, MSR_P6_EVNTSEL0 + i, env->msr_gp_evtsel[i]); } - kvm_msr_entry_add(cpu, MSR_CORE_PERF_GLOBAL_STATUS, - env->msr_global_status); - kvm_msr_entry_add(cpu, MSR_CORE_PERF_GLOBAL_OVF_CTRL, - env->msr_global_ovf_ctrl); - - /* Now start the PMU. */ - kvm_msr_entry_add(cpu, MSR_CORE_PERF_FIXED_CTR_CTRL, - env->msr_fixed_ctr_ctrl); - kvm_msr_entry_add(cpu, MSR_CORE_PERF_GLOBAL_CTRL, - env->msr_global_ctrl); + if (has_architectural_pmu_version > 1) { + kvm_msr_entry_add(cpu, MSR_CORE_PERF_GLOBAL_STATUS, + env->msr_global_status); + kvm_msr_entry_add(cpu, MSR_CORE_PERF_GLOBAL_OVF_CTRL, + env->msr_global_ovf_ctrl); + + /* Now start the PMU. */ + kvm_msr_entry_add(cpu, MSR_CORE_PERF_FIXED_CTR_CTRL, + env->msr_fixed_ctr_ctrl); + kvm_msr_entry_add(cpu, MSR_CORE_PERF_GLOBAL_CTRL, + env->msr_global_ctrl); + } } /* * Hyper-V partition-wide MSRs: to avoid clearing them on cpu hot-add, @@ -2030,15 +2044,17 @@ static int kvm_get_msrs(X86CPU *cpu) if (env->features[FEAT_KVM] & (1 << KVM_FEATURE_STEAL_TIME)) { kvm_msr_entry_add(cpu, MSR_KVM_STEAL_TIME, 0); } - if (has_msr_architectural_pmu) { - kvm_msr_entry_add(cpu, MSR_CORE_PERF_FIXED_CTR_CTRL, 0); - kvm_msr_entry_add(cpu, MSR_CORE_PERF_GLOBAL_CTRL, 0); - kvm_msr_entry_add(cpu, MSR_CORE_PERF_GLOBAL_STATUS, 0); - kvm_msr_entry_add(cpu, MSR_CORE_PERF_GLOBAL_OVF_CTRL, 0); - for (i = 0; i < MAX_FIXED_COUNTERS; i++) { + if (has_architectural_pmu_version > 0) { + if (has_architectural_pmu_version > 1) { + kvm_msr_entry_add(cpu, MSR_CORE_PERF_FIXED_CTR_CTRL, 0); + kvm_msr_entry_add(cpu, MSR_CORE_PERF_GLOBAL_CTRL, 0); + kvm_msr_entry_add(cpu, MSR_CORE_PERF_GLOBAL_STATUS, 0); + kvm_msr_entry_add(cpu, MSR_CORE_PERF_GLOBAL_OVF_CTRL, 0); + } + for (i = 0; i < num_architectural_pmu_fixed_counters; i++) { kvm_msr_entry_add(cpu, MSR_CORE_PERF_FIXED_CTR0 + i, 0); } - for (i = 0; i < num_architectural_pmu_counters; i++) { + for (i = 0; i < num_architectural_pmu_gp_counters; i++) { kvm_msr_entry_add(cpu, MSR_P6_PERFCTR0 + i, 0); kvm_msr_entry_add(cpu, MSR_P6_EVNTSEL0 + i, 0); } From patchwork Tue Jan 16 14:16:48 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: Paolo Bonzini X-Patchwork-Id: 861623 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Authentication-Results: ozlabs.org; spf=pass (mailfrom) smtp.mailfrom=nongnu.org (client-ip=2001:4830:134:3::11; helo=lists.gnu.org; envelope-from=qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org; receiver=) Authentication-Results: ozlabs.org; dkim=fail reason="signature verification failed" (2048-bit key; unprotected) header.d=gmail.com header.i=@gmail.com header.b="Swlp+Wil"; dkim-atps=neutral Received: from lists.gnu.org (lists.gnu.org [IPv6:2001:4830:134:3::11]) (using TLSv1 with cipher AES256-SHA (256/256 bits)) (No client certificate requested) by ozlabs.org (Postfix) with ESMTPS id 3zLXmm1n6bz9s7v for ; Wed, 17 Jan 2018 01:34:48 +1100 (AEDT) Received: from localhost ([::1]:39300 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1ebSK6-0007y5-8V for incoming@patchwork.ozlabs.org; Tue, 16 Jan 2018 09:34:46 -0500 Received: from eggs.gnu.org ([2001:4830:134:3::10]:50104) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1ebS3j-0002dq-H9 for qemu-devel@nongnu.org; Tue, 16 Jan 2018 09:17:55 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1ebS3g-0004SC-8h for qemu-devel@nongnu.org; Tue, 16 Jan 2018 09:17:51 -0500 Received: from mail-wr0-x241.google.com ([2a00:1450:400c:c0c::241]:41863) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1ebS3g-0004S2-1a for qemu-devel@nongnu.org; Tue, 16 Jan 2018 09:17:48 -0500 Received: by mail-wr0-x241.google.com with SMTP id o7so15334903wro.8 for ; Tue, 16 Jan 2018 06:17:47 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=sender:from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=0hr/1+ObD2E84v1XF9jjsh1Rk3PiJjjpJ2tXPz31Nrg=; b=Swlp+WilCbksCRT/5f21Goss5WCjEQzr9zPPJnYjxf3b6QEbIunXS9wH3dw4SFgv10 S4eomtrvnOQwI8uNEAIwpj84jPJV7Q2MSu+A/QKb8HVZbFY6OPQuGwuij4cDzx4pExj2 WNCUdHS0gRJcGtFNRF/6xobxFJABAVl0bS6+9NFPXw+p8NAvNiHaE4vDWoJJBBirADQp J3i5UY6kFKF5m0/lD8d+vOaEBAw5ilAubJEqbqvNvNaxx7hhSsm4EdEY4htoIW9Ir+y0 VevPicKHvTXVVGSwyo9BMMIq+VViN2vnrtRJk8crZ0elZAehAZfTVJdK7UKQNdzTwbqo YYcA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:sender:from:to:cc:subject:date:message-id :in-reply-to:references:mime-version:content-transfer-encoding; bh=0hr/1+ObD2E84v1XF9jjsh1Rk3PiJjjpJ2tXPz31Nrg=; b=NCXQPGma08WaUEmR73WYQrmrT1DDpqzzDQRnTTsrCiIz2kf3fb6r7o/rclAnRpdiBd kRidiGB/uMLfphNHZBZlQZqR+6w+SmM8rlj22KCeaSRVZPHEszwc+swQm/KpD3NshP1b LWPutcH6MfilmQP6a8h322Nc6QfWOI65GuKCW6NGefgVNYwzwTW9nK8ZEMyi3DFyM/na XCfeWNcnt6N4CWUzD0+LC5wG5GFJThLIwhYFM+AqjiFWm0nEagBqNZ+FpOvIH0YoF1Mu 97RxbJ47ykL9w+pijCseeH0u/LcCINOJ2d/i1WdNd/n9pemiZqybHhVgz/hdkHhQIDBr lfwA== X-Gm-Message-State: AKwxytdajsR8ZDRBIolCxuwTTlJr8lIv9cwNGb8zXL1NZTelcY945nQs XcFnZEgcXST/7bqUoOibtrFrGjLE X-Google-Smtp-Source: ACJfBovFahR7LFaO224a7qQa6CLoSOiaNhquNMOeEkfE95+cc40YMFCLBzcBLQXLr+UpSQjcMijrhw== X-Received: by 10.223.130.194 with SMTP id 60mr22235661wrc.72.1516112266774; Tue, 16 Jan 2018 06:17:46 -0800 (PST) Received: from 640k.lan (dynamic-adsl-78-12-229-84.clienti.tiscali.it. [78.12.229.84]) by smtp.gmail.com with ESMTPSA id u10sm1537758wrg.6.2018.01.16.06.17.45 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Tue, 16 Jan 2018 06:17:45 -0800 (PST) From: Paolo Bonzini To: qemu-devel@nongnu.org Date: Tue, 16 Jan 2018 15:16:48 +0100 Message-Id: <1516112253-14480-7-git-send-email-pbonzini@redhat.com> X-Mailer: git-send-email 1.8.3.1 In-Reply-To: <1516112253-14480-1-git-send-email-pbonzini@redhat.com> References: <1516112253-14480-1-git-send-email-pbonzini@redhat.com> MIME-Version: 1.0 X-detected-operating-system: by eggs.gnu.org: Genre and OS details not recognized. X-Received-From: 2a00:1450:400c:c0c::241 Subject: [Qemu-devel] [PULL 06/51] chardev: use backend chr context when watch for fe 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: Peter Xu Errors-To: qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org Sender: "Qemu-devel" From: Peter Xu In commit 6bbb6c0644 ("chardev: use per-dev context for io_add_watch_poll", 2017-09-22) all the chardev watches are converted to use per-chardev gcontext to support chardev to be run outside default main thread. However that's still missing one call from the frontend code. Touch that up. Reviewed-by: Stefan Hajnoczi Reviewed-by: Marc-André Lureau Signed-off-by: Peter Xu Message-Id: <20180104141835.17987-2-peterx@redhat.com> Signed-off-by: Paolo Bonzini --- chardev/char-fe.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/chardev/char-fe.c b/chardev/char-fe.c index ee6d596..c611b3f 100644 --- a/chardev/char-fe.c +++ b/chardev/char-fe.c @@ -356,7 +356,7 @@ guint qemu_chr_fe_add_watch(CharBackend *be, GIOCondition cond, } g_source_set_callback(src, (GSourceFunc)func, user_data, NULL); - tag = g_source_attach(src, NULL); + tag = g_source_attach(src, s->gcontext); g_source_unref(src); return tag; From patchwork Tue Jan 16 14:16:49 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Paolo Bonzini X-Patchwork-Id: 861625 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Authentication-Results: ozlabs.org; spf=pass (mailfrom) smtp.mailfrom=nongnu.org (client-ip=2001:4830:134:3::11; helo=lists.gnu.org; envelope-from=qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org; receiver=) Authentication-Results: ozlabs.org; dkim=fail reason="signature verification failed" (2048-bit key; unprotected) header.d=gmail.com header.i=@gmail.com header.b="QQyqmvz0"; dkim-atps=neutral Received: from lists.gnu.org (lists.gnu.org [IPv6:2001:4830:134:3::11]) (using TLSv1 with cipher AES256-SHA (256/256 bits)) (No client certificate requested) by ozlabs.org (Postfix) with ESMTPS id 3zLXpS13psz9s7v for ; Wed, 17 Jan 2018 01:36:16 +1100 (AEDT) Received: from localhost ([::1]:39315 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1ebSLW-0000Ux-1z for incoming@patchwork.ozlabs.org; Tue, 16 Jan 2018 09:36:14 -0500 Received: from eggs.gnu.org ([2001:4830:134:3::10]:50128) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1ebS3l-0002i9-Nn for qemu-devel@nongnu.org; Tue, 16 Jan 2018 09:17:59 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1ebS3h-0004T5-Dw for qemu-devel@nongnu.org; Tue, 16 Jan 2018 09:17:53 -0500 Received: from mail-wr0-x241.google.com ([2a00:1450:400c:c0c::241]:39381) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1ebS3h-0004SI-6x for qemu-devel@nongnu.org; Tue, 16 Jan 2018 09:17:49 -0500 Received: by mail-wr0-x241.google.com with SMTP id z48so15339664wrz.6 for ; Tue, 16 Jan 2018 06:17:49 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=sender:from:to:cc:subject:date:message-id:in-reply-to:references; bh=XG1iRGuONMkY3+sT4JC6ibJ6XHtgTrqDRFZGOQkLmI0=; b=QQyqmvz0JD7GHaJr+4VboEGNOrPDDosY7Gwue4OgeI+Tb+mGlmQO53kNkuxNc+cYB3 JPivcgY/+0Mqrl0LOKqN0V39DDt5oYNRQRpcrGEGW86eL4IjO2sbEtQWyDr8nhlRWb9v JeQVBTIfneKpRoRouNrJE9g//ji2Fpx/4Fz3ITQGIcXe51wpuTL0oPEbLzUk/BV3vPgG gPXZhSrNgrOrVw8WIez6+Dly57vPSbv2a0SNj0oer3oXYQhvv0Oi9X1sKGKAMmDCQEd9 KfD6/MUfSeT6RvDP0CL8PnX1TXYUZsYZJuOCydlMfbA5iKv20NZBktXw92Puj1j5QSxv 06ow== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:sender:from:to:cc:subject:date:message-id :in-reply-to:references; bh=XG1iRGuONMkY3+sT4JC6ibJ6XHtgTrqDRFZGOQkLmI0=; b=k01Csa/Knv17ZtoS+u5IHOquauwFcAxEUoKirkiDak1erGflgvEaG1cb7azhF5cQze +guzgZnfktdqdFuRsnLH+J2U1Q/ei4RwR6ZPzBg9gYW9C+KME5PQY9Zq0dNd1d4LECBA Fl3UwPh8wqQlFPCphksSItFGEA6ykIrkobcHrq4GItP+mZvXYznsWHoI7NvEXQf+tF5C CwYi1KStO2zSZnrthZHBFUlqD59hYIDncvAdFGLdBXIvM69Ha2G1H+LcJHa/Q+korx9c voskXwUCRlj/FRUhTu91l8DG9+t39/BAIeMq1W8pbvC7p3cdLxpRNUX9fngNEQsA5/m8 IXyQ== X-Gm-Message-State: AKGB3mIXf8FR8MwQfMDMoTs9LEmP54wVq2sIns0JACULYCvdABTjulU8 7XcQpvxFsK5KBA6eLIDpQaVScsPf X-Google-Smtp-Source: ACJfBosYtK3RWUz1SPg+CdTiCtUC1QqWE/wxmQGW9DPz7GqcIc2gvkRwxJeeBBOiIBv0mB3TvfN2Og== X-Received: by 10.223.199.205 with SMTP id y13mr26718346wrg.114.1516112267879; Tue, 16 Jan 2018 06:17:47 -0800 (PST) Received: from 640k.lan (dynamic-adsl-78-12-229-84.clienti.tiscali.it. [78.12.229.84]) by smtp.gmail.com with ESMTPSA id u10sm1537758wrg.6.2018.01.16.06.17.46 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Tue, 16 Jan 2018 06:17:47 -0800 (PST) From: Paolo Bonzini To: qemu-devel@nongnu.org Date: Tue, 16 Jan 2018 15:16:49 +0100 Message-Id: <1516112253-14480-8-git-send-email-pbonzini@redhat.com> X-Mailer: git-send-email 1.8.3.1 In-Reply-To: <1516112253-14480-1-git-send-email-pbonzini@redhat.com> References: <1516112253-14480-1-git-send-email-pbonzini@redhat.com> X-detected-operating-system: by eggs.gnu.org: Genre and OS details not recognized. X-Received-From: 2a00:1450:400c:c0c::241 Subject: [Qemu-devel] [PULL 07/51] chardev: let g_idle_add() be with chardev gcontext 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: Peter Xu Errors-To: qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org Sender: "Qemu-devel" From: Peter Xu The idle task will be attached to main gcontext even if the chardev backend is running in another gcontext. Fix the only caller by extending the g_idle_add() logic into the more powerful g_source_attach(). It's basically g_idle_add_full() implementation, but with the chardev's gcontext passed in. Signed-off-by: Peter Xu Message-Id: <20180104141835.17987-3-peterx@redhat.com> Signed-off-by: Paolo Bonzini --- chardev/char-pty.c | 21 +++++++++++++-------- 1 file changed, 13 insertions(+), 8 deletions(-) diff --git a/chardev/char-pty.c b/chardev/char-pty.c index 761ae6d..8248e36 100644 --- a/chardev/char-pty.c +++ b/chardev/char-pty.c @@ -43,7 +43,7 @@ typedef struct { /* Protected by the Chardev chr_write_lock. */ int connected; guint timer_tag; - guint open_tag; + GSource *open_source; } PtyChardev; #define PTY_CHARDEV(obj) OBJECT_CHECK(PtyChardev, (obj), TYPE_CHARDEV_PTY) @@ -58,7 +58,7 @@ static gboolean pty_chr_timer(gpointer opaque) qemu_mutex_lock(&chr->chr_write_lock); s->timer_tag = 0; - s->open_tag = 0; + s->open_source = NULL; if (!s->connected) { /* Next poll ... */ pty_chr_update_read_handler_locked(chr); @@ -183,7 +183,7 @@ static gboolean qemu_chr_be_generic_open_func(gpointer opaque) Chardev *chr = CHARDEV(opaque); PtyChardev *s = PTY_CHARDEV(opaque); - s->open_tag = 0; + s->open_source = NULL; qemu_chr_be_event(chr, CHR_EVENT_OPENED); return FALSE; } @@ -194,9 +194,10 @@ static void pty_chr_state(Chardev *chr, int connected) PtyChardev *s = PTY_CHARDEV(chr); if (!connected) { - if (s->open_tag) { - g_source_remove(s->open_tag); - s->open_tag = 0; + if (s->open_source) { + g_source_destroy(s->open_source); + g_source_unref(s->open_source); + s->open_source = NULL; } remove_fd_in_watch(chr); s->connected = 0; @@ -210,9 +211,13 @@ static void pty_chr_state(Chardev *chr, int connected) s->timer_tag = 0; } if (!s->connected) { - g_assert(s->open_tag == 0); + g_assert(s->open_source == NULL); + s->open_source = g_idle_source_new(); s->connected = 1; - s->open_tag = g_idle_add(qemu_chr_be_generic_open_func, chr); + g_source_set_callback(s->open_source, + qemu_chr_be_generic_open_func, + chr, NULL); + g_source_attach(s->open_source, chr->gcontext); } if (!chr->gsource) { chr->gsource = io_add_watch_poll(chr, s->ioc, From patchwork Tue Jan 16 14:16:50 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Paolo Bonzini X-Patchwork-Id: 861624 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Authentication-Results: ozlabs.org; spf=pass (mailfrom) smtp.mailfrom=nongnu.org (client-ip=2001:4830:134:3::11; helo=lists.gnu.org; envelope-from=qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org; receiver=) Authentication-Results: ozlabs.org; dkim=fail reason="signature verification failed" (2048-bit key; unprotected) header.d=gmail.com header.i=@gmail.com header.b="lWwRAFnN"; dkim-atps=neutral Received: from lists.gnu.org (lists.gnu.org [IPv6:2001:4830:134:3::11]) (using TLSv1 with cipher AES256-SHA (256/256 bits)) (No client certificate requested) by ozlabs.org (Postfix) with ESMTPS id 3zLXmy6RyBz9s7v for ; Wed, 17 Jan 2018 01:34:58 +1100 (AEDT) Received: from localhost ([::1]:39303 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1ebSKG-00082I-VB for incoming@patchwork.ozlabs.org; Tue, 16 Jan 2018 09:34:56 -0500 Received: from eggs.gnu.org ([2001:4830:134:3::10]:50179) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1ebS3p-0002n3-N3 for qemu-devel@nongnu.org; Tue, 16 Jan 2018 09:18:00 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1ebS3j-0004VG-2Y for qemu-devel@nongnu.org; Tue, 16 Jan 2018 09:17:57 -0500 Received: from mail-wm0-x22b.google.com ([2a00:1450:400c:c09::22b]:45569) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1ebS3i-0004UM-P9 for qemu-devel@nongnu.org; Tue, 16 Jan 2018 09:17:51 -0500 Received: by mail-wm0-x22b.google.com with SMTP id i186so8654603wmi.4 for ; Tue, 16 Jan 2018 06:17:50 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=sender:from:to:cc:subject:date:message-id:in-reply-to:references; bh=VLgTLoylah5KKBVNRF08fX3f9h+cvrDLmyOUeqxeE5U=; b=lWwRAFnN35vvLmiYso7R0KpxdDyyn37lw+yl+67sExmH5BZhCtkh8rkYBUcfwZv2yE AA6mz7Lmz2UUkCq1KUNll2I+dYWBZUBDs3oW8Y/JuPRndJxNYW8OSDK2jhbyWLZWEDx0 SuVcPohlsWZI73P0Y0pSPgxE7SZWkf29b3ajvObOZcGx/NbE+GaIlUhRUoeO4vRjr67Q JBZUYwI1DE5HWzTNrPGSLBoHxWmgxaIBWCO40AF4KzjLqX9H/mrr9EtIJGTFLYq47dZr +Y46UbH14AaMeSFGa9XCYuXVcgysggzCWWb2vy4pvA897RLqUXwJgLgivuZu6rtNJGvw G2HA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:sender:from:to:cc:subject:date:message-id :in-reply-to:references; bh=VLgTLoylah5KKBVNRF08fX3f9h+cvrDLmyOUeqxeE5U=; b=PeuoFaNdWHYNMyseKrJ+p4G1dspSdghif/OJAXgLzrpRVU77RKQk2ofZmGyc6X9be4 XIQy3AQSFo7TiOes2CRPOnn5y6uOnSoS4ZVq2ZCL2+qhuI2v0aFjn/N8+lpReoCe4f6J 7iXR6zuZF8C5kCWxCXNMAUvzUL/3glC3QeWJUYwzgltHGhAdIm4DXn5B6Id94aCnyyBs D91prjkI7oTxI6AAj534PCfbwQVRav29lmqNcnCvRSdOC8Za6gEZiXAlacAhFxNBfXwq KegYQtnvutMgHOm6yQiGknEP8UdPhEuFv3hXZIobLTKaBYg7k37VpU7sVvjkaPtcHk8x kT2w== X-Gm-Message-State: AKwxyterSsxWoa4SLiqrG4k0KMR9IfruATlXnHZXmjxO6KLRRPrfanpH RD97n3Hq/1pUvgkdJqlzBSdtkp3S X-Google-Smtp-Source: ACJfBoso4LvGtDQ9a95mNwV7dCyN5P2QtUKb9Z5oqKW9S8lKjGvGlbtYb31/LZE385u0dUPijJ3PlA== X-Received: by 10.28.23.149 with SMTP id 143mr12992906wmx.83.1516112269294; Tue, 16 Jan 2018 06:17:49 -0800 (PST) Received: from 640k.lan (dynamic-adsl-78-12-229-84.clienti.tiscali.it. [78.12.229.84]) by smtp.gmail.com with ESMTPSA id u10sm1537758wrg.6.2018.01.16.06.17.47 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Tue, 16 Jan 2018 06:17:48 -0800 (PST) From: Paolo Bonzini To: qemu-devel@nongnu.org Date: Tue, 16 Jan 2018 15:16:50 +0100 Message-Id: <1516112253-14480-9-git-send-email-pbonzini@redhat.com> X-Mailer: git-send-email 1.8.3.1 In-Reply-To: <1516112253-14480-1-git-send-email-pbonzini@redhat.com> References: <1516112253-14480-1-git-send-email-pbonzini@redhat.com> X-detected-operating-system: by eggs.gnu.org: Genre and OS details not recognized. X-Received-From: 2a00:1450:400c:c09::22b Subject: [Qemu-devel] [PULL 08/51] chardev: introduce qemu_chr_timeout_add_ms() 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: Peter Xu Errors-To: qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org Sender: "Qemu-devel" From: Peter Xu It's a replacement of g_timeout_add[_seconds]() for chardevs. Chardevs now can have dedicated gcontext, we should always bind chardev tasks onto those gcontext rather than the default main context. Since there are quite a few of g_timeout_add[_seconds]() callers, a new function qemu_chr_timeout_add_ms() is introduced. One thing to mention is that, terminal3270 is still always running on main gcontext. However let's convert that as well since it's still part of chardev codes and in case one day we'll miss that when we move it out of main gcontext too. Also, convert all the timers from GSource tags into GSource pointers. Gsource tag IDs and g_source_remove()s can only work with default gcontext, while now these GSources can logically be attached to other contexts. So let's use explicit g_source_destroy() plus another g_source_unref() to remove a timer. Note: when in the timer handler, we don't need the g_source_destroy() any more since that'll be done automatically if the timer handler returns false (and that's what all the current handlers do). Yet another note: in pty_chr_rearm_timer() we take special care for ms=1000. This patch merged the two cases into one. Signed-off-by: Peter Xu Message-Id: <20180104141835.17987-4-peterx@redhat.com> Signed-off-by: Paolo Bonzini --- chardev/char-pty.c | 43 +++++++++++++++++++------------------------ chardev/char-socket.c | 28 ++++++++++++++++++---------- chardev/char.c | 18 ++++++++++++++++++ hw/char/terminal3270.c | 28 ++++++++++++++++------------ include/chardev/char.h | 3 +++ 5 files changed, 74 insertions(+), 46 deletions(-) diff --git a/chardev/char-pty.c b/chardev/char-pty.c index 8248e36..89315e6 100644 --- a/chardev/char-pty.c +++ b/chardev/char-pty.c @@ -42,7 +42,7 @@ typedef struct { /* Protected by the Chardev chr_write_lock. */ int connected; - guint timer_tag; + GSource *timer_src; GSource *open_source; } PtyChardev; @@ -57,7 +57,8 @@ static gboolean pty_chr_timer(gpointer opaque) PtyChardev *s = PTY_CHARDEV(opaque); qemu_mutex_lock(&chr->chr_write_lock); - s->timer_tag = 0; + s->timer_src = NULL; + g_source_unref(s->open_source); s->open_source = NULL; if (!s->connected) { /* Next poll ... */ @@ -67,25 +68,25 @@ static gboolean pty_chr_timer(gpointer opaque) return FALSE; } +static void pty_chr_timer_cancel(PtyChardev *s) +{ + if (s->timer_src) { + g_source_destroy(s->timer_src); + g_source_unref(s->timer_src); + s->timer_src = NULL; + } +} + /* Called with chr_write_lock held. */ static void pty_chr_rearm_timer(Chardev *chr, int ms) { PtyChardev *s = PTY_CHARDEV(chr); char *name; - if (s->timer_tag) { - g_source_remove(s->timer_tag); - s->timer_tag = 0; - } - - if (ms == 1000) { - name = g_strdup_printf("pty-timer-secs-%s", chr->label); - s->timer_tag = g_timeout_add_seconds(1, pty_chr_timer, chr); - } else { - name = g_strdup_printf("pty-timer-ms-%s", chr->label); - s->timer_tag = g_timeout_add(ms, pty_chr_timer, chr); - } - g_source_set_name_by_id(s->timer_tag, name); + pty_chr_timer_cancel(s); + name = g_strdup_printf("pty-timer-%s", chr->label); + s->timer_src = qemu_chr_timeout_add_ms(chr, ms, pty_chr_timer, chr); + g_source_set_name(s->timer_src, name); g_free(name); } @@ -206,10 +207,7 @@ static void pty_chr_state(Chardev *chr, int connected) * the virtual device linked to our pty. */ pty_chr_rearm_timer(chr, 1000); } else { - if (s->timer_tag) { - g_source_remove(s->timer_tag); - s->timer_tag = 0; - } + pty_chr_timer_cancel(s); if (!s->connected) { g_assert(s->open_source == NULL); s->open_source = g_idle_source_new(); @@ -236,10 +234,7 @@ static void char_pty_finalize(Object *obj) qemu_mutex_lock(&chr->chr_write_lock); pty_chr_state(chr, 0); object_unref(OBJECT(s->ioc)); - if (s->timer_tag) { - g_source_remove(s->timer_tag); - s->timer_tag = 0; - } + pty_chr_timer_cancel(s); qemu_mutex_unlock(&chr->chr_write_lock); qemu_chr_be_event(chr, CHR_EVENT_CLOSED); } @@ -272,7 +267,7 @@ static void char_pty_open(Chardev *chr, name = g_strdup_printf("chardev-pty-%s", chr->label); qio_channel_set_name(QIO_CHANNEL(s->ioc), name); g_free(name); - s->timer_tag = 0; + s->timer_src = NULL; *be_opened = false; } diff --git a/chardev/char-socket.c b/chardev/char-socket.c index 630a7f2..77cdf48 100644 --- a/chardev/char-socket.c +++ b/chardev/char-socket.c @@ -57,7 +57,7 @@ typedef struct { bool is_telnet; bool is_tn3270; - guint reconnect_timer; + GSource *reconnect_timer; int64_t reconnect_time; bool connect_err_reported; } SocketChardev; @@ -67,16 +67,27 @@ typedef struct { static gboolean socket_reconnect_timeout(gpointer opaque); +static void tcp_chr_reconn_timer_cancel(SocketChardev *s) +{ + if (s->reconnect_timer) { + g_source_destroy(s->reconnect_timer); + g_source_unref(s->reconnect_timer); + s->reconnect_timer = NULL; + } +} + static void qemu_chr_socket_restart_timer(Chardev *chr) { SocketChardev *s = SOCKET_CHARDEV(chr); char *name; assert(s->connected == 0); - s->reconnect_timer = g_timeout_add_seconds(s->reconnect_time, - socket_reconnect_timeout, chr); name = g_strdup_printf("chardev-socket-reconnect-%s", chr->label); - g_source_set_name_by_id(s->reconnect_timer, name); + s->reconnect_timer = qemu_chr_timeout_add_ms(chr, + s->reconnect_time * 1000, + socket_reconnect_timeout, + chr); + g_source_set_name(s->reconnect_timer, name); g_free(name); } @@ -781,11 +792,7 @@ static void char_socket_finalize(Object *obj) SocketChardev *s = SOCKET_CHARDEV(obj); tcp_chr_free_connection(chr); - - if (s->reconnect_timer) { - g_source_remove(s->reconnect_timer); - s->reconnect_timer = 0; - } + tcp_chr_reconn_timer_cancel(s); qapi_free_SocketAddress(s->addr); if (s->listener) { qio_net_listener_set_client_func(s->listener, NULL, NULL, NULL); @@ -824,7 +831,8 @@ static gboolean socket_reconnect_timeout(gpointer opaque) SocketChardev *s = SOCKET_CHARDEV(opaque); QIOChannelSocket *sioc; - s->reconnect_timer = 0; + g_source_unref(s->reconnect_timer); + s->reconnect_timer = NULL; if (chr->be_open) { return false; diff --git a/chardev/char.c b/chardev/char.c index 8c3765e..3e14de1 100644 --- a/chardev/char.c +++ b/chardev/char.c @@ -1084,6 +1084,24 @@ void qmp_chardev_send_break(const char *id, Error **errp) qemu_chr_be_event(chr, CHR_EVENT_BREAK); } +/* + * Add a timeout callback for the chardev (in milliseconds), return + * the GSource object created. Please use this to add timeout hook for + * chardev instead of g_timeout_add() and g_timeout_add_seconds(), to + * make sure the gcontext that the task bound to is correct. + */ +GSource *qemu_chr_timeout_add_ms(Chardev *chr, guint ms, + GSourceFunc func, void *private) +{ + GSource *source = g_timeout_source_new(ms); + + assert(func); + g_source_set_callback(source, func, private, NULL); + g_source_attach(source, chr->gcontext); + + return source; +} + void qemu_chr_cleanup(void) { object_unparent(get_chardevs_root()); diff --git a/hw/char/terminal3270.c b/hw/char/terminal3270.c index a109ce5..e9c45e5 100644 --- a/hw/char/terminal3270.c +++ b/hw/char/terminal3270.c @@ -31,7 +31,7 @@ typedef struct Terminal3270 { uint8_t outv[OUTPUT_BUFFER_SIZE]; int in_len; bool handshake_done; - guint timer_tag; + GSource *timer_src; } Terminal3270; #define TYPE_TERMINAL_3270 "x-terminal3270" @@ -45,6 +45,15 @@ static int terminal_can_read(void *opaque) return INPUT_BUFFER_SIZE - t->in_len; } +static void terminal_timer_cancel(Terminal3270 *t) +{ + if (t->timer_src) { + g_source_destroy(t->timer_src); + g_source_unref(t->timer_src); + t->timer_src = NULL; + } +} + /* * Protocol handshake done, * signal guest by an unsolicited DE irq. @@ -90,12 +99,9 @@ static void terminal_read(void *opaque, const uint8_t *buf, int size) assert(size <= (INPUT_BUFFER_SIZE - t->in_len)); - if (t->timer_tag) { - g_source_remove(t->timer_tag); - t->timer_tag = 0; - } - t->timer_tag = g_timeout_add_seconds(600, send_timing_mark_cb, t); - + terminal_timer_cancel(t); + t->timer_src = qemu_chr_timeout_add_ms(t->chr.chr, 600 * 1000, + send_timing_mark_cb, t); memcpy(&t->inv[t->in_len], buf, size); t->in_len += size; if (t->in_len < 2) { @@ -145,10 +151,7 @@ static void chr_event(void *opaque, int event) /* Ensure the initial status correct, always reset them. */ t->in_len = 0; t->handshake_done = false; - if (t->timer_tag) { - g_source_remove(t->timer_tag); - t->timer_tag = 0; - } + terminal_timer_cancel(t); switch (event) { case CHR_EVENT_OPENED: @@ -157,7 +160,8 @@ static void chr_event(void *opaque, int event) * char-socket.c. Once qemu receives the terminal-type of the * client, mark handshake done and trigger everything rolling again. */ - t->timer_tag = g_timeout_add_seconds(600, send_timing_mark_cb, t); + t->timer_src = qemu_chr_timeout_add_ms(t->chr.chr, 600 * 1000, + send_timing_mark_cb, t); break; case CHR_EVENT_CLOSED: sch->curr_status.scsw.dstat = SCSW_DSTAT_DEVICE_END; diff --git a/include/chardev/char.h b/include/chardev/char.h index 778d610..d8941fc 100644 --- a/include/chardev/char.h +++ b/include/chardev/char.h @@ -256,6 +256,9 @@ Chardev *qemu_chardev_new(const char *id, const char *typename, extern int term_escape_char; +GSource *qemu_chr_timeout_add_ms(Chardev *chr, guint ms, + GSourceFunc func, void *private); + /* console.c */ void qemu_chr_parse_vc(QemuOpts *opts, ChardevBackend *backend, Error **errp); From patchwork Tue Jan 16 14:16:51 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: Paolo Bonzini X-Patchwork-Id: 861634 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Authentication-Results: ozlabs.org; spf=pass (mailfrom) smtp.mailfrom=nongnu.org (client-ip=2001:4830:134:3::11; helo=lists.gnu.org; envelope-from=qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org; receiver=) Authentication-Results: ozlabs.org; dkim=fail reason="signature verification failed" (2048-bit key; unprotected) header.d=gmail.com header.i=@gmail.com header.b="JVze35xF"; dkim-atps=neutral Received: from lists.gnu.org (lists.gnu.org [IPv6:2001:4830:134:3::11]) (using TLSv1 with cipher AES256-SHA (256/256 bits)) (No client certificate requested) by ozlabs.org (Postfix) with ESMTPS id 3zLXwc4q4Kz9s83 for ; Wed, 17 Jan 2018 01:41:36 +1100 (AEDT) Received: from localhost ([::1]:39356 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1ebSQg-00058m-Kp for incoming@patchwork.ozlabs.org; Tue, 16 Jan 2018 09:41:34 -0500 Received: from eggs.gnu.org ([2001:4830:134:3::10]:50183) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1ebS3p-0002nI-VD for qemu-devel@nongnu.org; Tue, 16 Jan 2018 09:18:03 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1ebS3j-0004Vk-Ve for qemu-devel@nongnu.org; Tue, 16 Jan 2018 09:17:57 -0500 Received: from mail-wm0-x242.google.com ([2a00:1450:400c:c09::242]:42410) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1ebS3j-0004VO-Pz for qemu-devel@nongnu.org; Tue, 16 Jan 2018 09:17:51 -0500 Received: by mail-wm0-x242.google.com with SMTP id b141so8767175wme.1 for ; Tue, 16 Jan 2018 06:17:51 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=sender:from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=EmIODxz0suFHBgq71lVGPgrOIwnITsuBrEuho8JqZZY=; b=JVze35xFHzYqnCABfJqCS7Bl0u1i4/jd+pV2yD/5E8GTWlupzsX0zGHl7w4mpQzaV3 nw+9MwLpXhVyKcm2PdBnOZnun6hDVzoDQ8/rGbH2fEziFxqXkp+OX6cTziFXk05K8Y1n 14opipk1Rk8DsI1UBYx12QM9cJtH9UncYi65ZcSPmJ+fEpvDonlC/8btdGcrYwTJWqoF DAmIyweDJgg/xWoGS32zemze4dY5NTMBSKJFv7d40NgeUl2FgmoX6/KvcEd4ca7PnSO6 T2+TlFn98D5IvhKdE/Z3N54yZNvMi3fmJbRAjDlIbBE6Im6WRfnBkmuHejgrSOrpkTAD szbw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:sender:from:to:cc:subject:date:message-id :in-reply-to:references:mime-version:content-transfer-encoding; bh=EmIODxz0suFHBgq71lVGPgrOIwnITsuBrEuho8JqZZY=; b=jjdfzqJfeO70JrW3Zkl59HFtMwDXwU/+d1oT5G6ANMBc9fvrJL9BRA4s/cGgrVKWg6 qGRvlzpOCTz7tvwcjVvrgOj3zemSem2p8dTri0wT+AwNyJb50xoF+/BAUZyilQ5y7baR 1gRmoJfXEhQMiiqeg0IVarUH3MpAfFKmm//krrvy9/oV/87GfcavAIKZ+GK61BzTtThX pU2m1oHukuFCH18eQKzTSdoBvz0EqFFjyx37/94BBvnV3kiUsV+rkhCfdOEsSzBkexnq qKDFOw4R28lCNw8FBGZDti0ME5EUaf1qtapBXK34wmBdXpjx0Y1cbv6nA4iHVMWFtQjC uuyw== X-Gm-Message-State: AKwxyteLD0YZnbzocXaWPKv/VuEhHDAUV9xynY45u+9HxHvWlVhTRLQV tCeLEJi4aT0BvPzq3GhzEq4UbQ5v X-Google-Smtp-Source: ACJfBosq6zwH8v8BAmDXbLruDsvkFmIhaetevsPbknaw8vBhlYQA4M71cohA5xc4plJnlYYZo/QuaQ== X-Received: by 10.28.211.67 with SMTP id k64mr13093686wmg.95.1516112270518; Tue, 16 Jan 2018 06:17:50 -0800 (PST) Received: from 640k.lan (dynamic-adsl-78-12-229-84.clienti.tiscali.it. [78.12.229.84]) by smtp.gmail.com with ESMTPSA id u10sm1537758wrg.6.2018.01.16.06.17.49 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Tue, 16 Jan 2018 06:17:49 -0800 (PST) From: Paolo Bonzini To: qemu-devel@nongnu.org Date: Tue, 16 Jan 2018 15:16:51 +0100 Message-Id: <1516112253-14480-10-git-send-email-pbonzini@redhat.com> X-Mailer: git-send-email 1.8.3.1 In-Reply-To: <1516112253-14480-1-git-send-email-pbonzini@redhat.com> References: <1516112253-14480-1-git-send-email-pbonzini@redhat.com> MIME-Version: 1.0 X-detected-operating-system: by eggs.gnu.org: Genre and OS details not recognized. X-Received-From: 2a00:1450:400c:c09::242 Subject: [Qemu-devel] [PULL 09/51] build-sys: fix qemu-ga -pthread linking 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: =?utf-8?q?Marc-Andr=C3=A9_Lureau?= Errors-To: qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org Sender: "Qemu-devel" From: Marc-André Lureau When linking qemu-ga under some configuration (when gthread-2.0.pc doesn't have -pthread, as happening atm with meson build), you may have this linking issue: /usr/bin/ld: libqemuutil.a(qemu-thread-posix.o): undefined reference to symbol 'pthread_setname_np@@GLIBC_2.12' /usr/lib64/libpthread.so.0: error adding symbols: DSO missing from command line Make sure qemu-ga links with the pthread library, by adding correct flags to libs_qga. This is really a QEMU bug, because it's QEMU code that's using pthread functions, and so we must explicitly link against pthreads. The bug was just masked by the fact that often some pkg-config or another for one of our dependencies will add -pthread to the link line anyway. Signed-off-by: Marc-André Lureau Reviewed-by: Peter Maydell Message-Id: <20180104160523.22995-2-marcandre.lureau@redhat.com> Signed-off-by: Paolo Bonzini --- configure | 1 + 1 file changed, 1 insertion(+) diff --git a/configure b/configure index 89bd662..ac392d2 100755 --- a/configure +++ b/configure @@ -3464,6 +3464,7 @@ else done if test "$found" = "no"; then LIBS="$pthread_lib $LIBS" + libs_qga="$pthread_lib $libs_qga" fi PTHREAD_LIB="$pthread_lib" break From patchwork Tue Jan 16 14:16:52 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: Paolo Bonzini X-Patchwork-Id: 861622 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Authentication-Results: ozlabs.org; spf=pass (mailfrom) smtp.mailfrom=nongnu.org (client-ip=2001:4830:134:3::11; helo=lists.gnu.org; envelope-from=qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org; receiver=) Authentication-Results: ozlabs.org; dkim=fail reason="signature verification failed" (2048-bit key; unprotected) header.d=gmail.com header.i=@gmail.com header.b="Uln5ZOpS"; dkim-atps=neutral Received: from lists.gnu.org (lists.gnu.org [IPv6:2001:4830:134:3::11]) (using TLSv1 with cipher AES256-SHA (256/256 bits)) (No client certificate requested) by ozlabs.org (Postfix) with ESMTPS id 3zLXky4dV3z9s7M for ; Wed, 17 Jan 2018 01:33:14 +1100 (AEDT) Received: from localhost ([::1]:39220 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1ebSIa-0006jl-PC for incoming@patchwork.ozlabs.org; Tue, 16 Jan 2018 09:33:12 -0500 Received: from eggs.gnu.org ([2001:4830:134:3::10]:50144) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1ebS3m-0002jL-L2 for qemu-devel@nongnu.org; Tue, 16 Jan 2018 09:17:55 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1ebS3l-0004WN-KS for qemu-devel@nongnu.org; Tue, 16 Jan 2018 09:17:54 -0500 Received: from mail-wm0-x244.google.com ([2a00:1450:400c:c09::244]:46241) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1ebS3l-0004Vx-Dd for qemu-devel@nongnu.org; Tue, 16 Jan 2018 09:17:53 -0500 Received: by mail-wm0-x244.google.com with SMTP id 143so8636917wma.5 for ; Tue, 16 Jan 2018 06:17:53 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=sender:from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=26yhqltwacDNtrdKsUgfU0Ul6cvcxAhQPfhQiAO+Zfs=; b=Uln5ZOpSfo+XuLvcUY5WsWjzukV57SLKdtFugz4AjbQeHnbGDrVO6uL4H+EK2gvFWc O0ACLg07p6w2ep7uDw1lQVrdffQv+ns/vI7qBh9PkDR1Pz/kQDsCCUmA6wbjyQno6org nUvY+owIa2twBByRCZoPAXjDysnJTYX38M5MaHRuLzzEGLv+VLB4JDE9I5xM7dUIdG+W C5P8Q7insGgg2DMsvZFocMydpxLJNT+WINLFAx7pvZFdYRbnzsXjZ2eDuCHK8VwNCCF0 iYqvacLRkAOSWB+dPsEPBM9gFw4jVZG6sHQ98mhYAOKKLMMuoRrdcLaqsQyXkBS8jFtx fnSA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:sender:from:to:cc:subject:date:message-id :in-reply-to:references:mime-version:content-transfer-encoding; bh=26yhqltwacDNtrdKsUgfU0Ul6cvcxAhQPfhQiAO+Zfs=; b=qiIWK7gSysryEqlOUiWKsoICtMQdes3j4YcHq26wVS/14o0w+itvKPrQRZFov2+Jip jCsYSyLUR23xoyTWjkSIqhkHhbQg5FiWCb+oI8hnTux9v/rljCxiXuCFKZNw1DbTsq08 0iwh1t/0RaomuJ7a5BesayfA23ZGYvdGe8koMkkkoiNOAL/59TGg82y7JuUOe3HmCqjN a4qhr8+vPTV7YQVvrSI9bFLjsWdxS4Q/4L6nfMUoQJuXSbJ9No/Hrk4qxA0DoF+n1epf 8gQwGOar7bvSA2pwsk9s3WKY9bkJP2R5LvUcFgtvEhtRsv13wEEpNwAK0XUFOKW8UrxX YJng== X-Gm-Message-State: AKwxytfrCp24bCqtKYtyVzEqvIK755v4hBA5DzHZ8s8hJRA9FIZA/GSs wdkzz2YfdavK4hkQi6pk2C8zBjNI X-Google-Smtp-Source: ACJfBotD7obG/Rvjd6SKfYb1AahmvlJzcPO3i8b6avqsAIiAvrA7XM/wUxq80KNzcQynEuWPVfKPKA== X-Received: by 10.28.59.69 with SMTP id i66mr13002075wma.159.1516112271840; Tue, 16 Jan 2018 06:17:51 -0800 (PST) Received: from 640k.lan (dynamic-adsl-78-12-229-84.clienti.tiscali.it. [78.12.229.84]) by smtp.gmail.com with ESMTPSA id u10sm1537758wrg.6.2018.01.16.06.17.50 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Tue, 16 Jan 2018 06:17:50 -0800 (PST) From: Paolo Bonzini To: qemu-devel@nongnu.org Date: Tue, 16 Jan 2018 15:16:52 +0100 Message-Id: <1516112253-14480-11-git-send-email-pbonzini@redhat.com> X-Mailer: git-send-email 1.8.3.1 In-Reply-To: <1516112253-14480-1-git-send-email-pbonzini@redhat.com> References: <1516112253-14480-1-git-send-email-pbonzini@redhat.com> MIME-Version: 1.0 X-detected-operating-system: by eggs.gnu.org: Genre and OS details not recognized. X-Received-From: 2a00:1450:400c:c09::244 Subject: [Qemu-devel] [PULL 10/51] build-sys: silence make by default or V=0 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: =?utf-8?q?Marc-Andr=C3=A9_Lureau?= Errors-To: qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org Sender: "Qemu-devel" From: Marc-André Lureau Move generic make flags in MAKEFLAGS (SUBDIR_MAKEFLAGS is more qemu specific). Use --quiet to silence make 'is up to date' message. Signed-off-by: Marc-André Lureau Tested-by: Eric Blake Reviewed-by: Paolo Bonzini Message-Id: <20180104160523.22995-3-marcandre.lureau@redhat.com> Signed-off-by: Paolo Bonzini --- Makefile | 2 +- rules.mak | 2 ++ 2 files changed, 3 insertions(+), 1 deletion(-) diff --git a/Makefile b/Makefile index d86ecd2..1671db3 100644 --- a/Makefile +++ b/Makefile @@ -277,7 +277,7 @@ else DOCS= endif -SUBDIR_MAKEFLAGS=$(if $(V),,--no-print-directory) BUILD_DIR=$(BUILD_DIR) +SUBDIR_MAKEFLAGS=BUILD_DIR=$(BUILD_DIR) SUBDIR_DEVICES_MAK=$(patsubst %, %/config-devices.mak, $(TARGET_DIRS)) SUBDIR_DEVICES_MAK_DEP=$(patsubst %, %-config-devices.mak.d, $(TARGET_DIRS)) diff --git a/rules.mak b/rules.mak index 6e94333..5fb4951 100644 --- a/rules.mak +++ b/rules.mak @@ -131,6 +131,8 @@ modules: # If called with only a single argument, will print nothing in quiet mode. quiet-command = $(if $(V),$1,$(if $(2),@printf " %-7s %s\n" $2 $3 && $1, @$1)) +MAKEFLAGS += $(if $(V),,--no-print-directory --quiet) + # cc-option # Usage: CFLAGS+=$(call cc-option, -falign-functions=0, -malign-functions=0) From patchwork Tue Jan 16 14:16:53 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: Paolo Bonzini X-Patchwork-Id: 861627 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Authentication-Results: ozlabs.org; spf=pass (mailfrom) smtp.mailfrom=nongnu.org (client-ip=2001:4830:134:3::11; helo=lists.gnu.org; envelope-from=qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org; receiver=) Authentication-Results: ozlabs.org; dkim=fail reason="signature verification failed" (2048-bit key; unprotected) header.d=gmail.com header.i=@gmail.com header.b="G+1Zu9Yx"; dkim-atps=neutral Received: from lists.gnu.org (lists.gnu.org [IPv6:2001:4830:134:3::11]) (using TLSv1 with cipher AES256-SHA (256/256 bits)) (No client certificate requested) by ozlabs.org (Postfix) with ESMTPS id 3zLXrp27BYz9s7n for ; Wed, 17 Jan 2018 01:38:18 +1100 (AEDT) Received: from localhost ([::1]:39325 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1ebSNU-00029Y-CB for incoming@patchwork.ozlabs.org; Tue, 16 Jan 2018 09:38:16 -0500 Received: from eggs.gnu.org ([2001:4830:134:3::10]:50160) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1ebS3o-0002kw-3O for qemu-devel@nongnu.org; Tue, 16 Jan 2018 09:17:57 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1ebS3m-0004Wz-SM for qemu-devel@nongnu.org; Tue, 16 Jan 2018 09:17:56 -0500 Received: from mail-wm0-x22e.google.com ([2a00:1450:400c:c09::22e]:45573) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1ebS3m-0004Wb-Mn for qemu-devel@nongnu.org; Tue, 16 Jan 2018 09:17:54 -0500 Received: by mail-wm0-x22e.google.com with SMTP id i186so8655080wmi.4 for ; Tue, 16 Jan 2018 06:17:54 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=sender:from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=Iy1cEWNYc+gmCs5bFDOFahinbIYkv7uox2nZzAulF+I=; b=G+1Zu9YxiT2MjP0NDHH986fXgKQ/brdR1b9kuUNsYoPVSkfcvU1NQkL0O6W/hPOOTs zSadSIjQdzy2x0r2mW6bdXDGSuFWGVmIop8S40f/fsBMsGFbqA02a/HgK7Q6z1WIB9Zp wI537AN4s2ZKIji4Cro0R+wXTm8TB2jlQFlokEwedlsr+fnLXkVAtDj6Y7FO0yHjPYJ8 ySGVYuznKxXqP62hjLGFEANc5QwrMXvzfjzvi49v+h25A5rsO5AT40S5VaFbUcB8V5/t bH4aCvULDuquW/ja94LyDqfwy70hXQ4TsQCwi8lgZrI+VjFDvXVasx8jMvKcGbCRrqaG +8JQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:sender:from:to:cc:subject:date:message-id :in-reply-to:references:mime-version:content-transfer-encoding; bh=Iy1cEWNYc+gmCs5bFDOFahinbIYkv7uox2nZzAulF+I=; b=KmtBrsdndshbutpuQGgH1co/LuV+0XuesCDOss+j6GRMuQUcOtrrDKTN9wvBAFSyHK 4+FWCkRxtPizJOO8WrmZSP2fG4AkQeY2A3Or06o37ve73McJJyKyfMHZ0OJnbqNznKq/ JmIkuyEAcyiUw5+83h20cvCCvLAkRhPYuodKcLcYQYVN+k4Qi8piE0b+9LTWT7nkzW2c yzfMx6xPnloyTAZG3whNbxE4eC8MltGh6ASCIrU1gyVePnoP1lzgOaLwqyYV3JFSCNql TxnVLKxL4+u5IC8pGFQQZbIYJpVVjWtZLpwaYinMtINhfQ+RG2Mc6k6oZpITQO1zL4d/ kR+Q== X-Gm-Message-State: AKwxytcELK7e98/0794lu7sbOYamkeOrEfEk0h/AWySgLVi6LQAapsv+ 46n+3udvYZWGjMn36eM40OQfF2cB X-Google-Smtp-Source: ACJfBov7AN8kHpZJ7KYD/T4Vg0g7j4+8uRZeZossJE8rF7cgbh/rlzOnRHwgj754U7G5NnPPvePN8Q== X-Received: by 10.28.165.4 with SMTP id o4mr13203729wme.66.1516112273325; Tue, 16 Jan 2018 06:17:53 -0800 (PST) Received: from 640k.lan (dynamic-adsl-78-12-229-84.clienti.tiscali.it. [78.12.229.84]) by smtp.gmail.com with ESMTPSA id u10sm1537758wrg.6.2018.01.16.06.17.51 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Tue, 16 Jan 2018 06:17:52 -0800 (PST) From: Paolo Bonzini To: qemu-devel@nongnu.org Date: Tue, 16 Jan 2018 15:16:53 +0100 Message-Id: <1516112253-14480-12-git-send-email-pbonzini@redhat.com> X-Mailer: git-send-email 1.8.3.1 In-Reply-To: <1516112253-14480-1-git-send-email-pbonzini@redhat.com> References: <1516112253-14480-1-git-send-email-pbonzini@redhat.com> MIME-Version: 1.0 X-detected-operating-system: by eggs.gnu.org: Genre and OS details not recognized. X-Received-From: 2a00:1450:400c:c09::22e Subject: [Qemu-devel] [PULL 11/51] build-sys: add a rule to print a variable 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: =?utf-8?q?Marc-Andr=C3=A9_Lureau?= Errors-To: qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org Sender: "Qemu-devel" From: Marc-André Lureau $ make print-CFLAGS CFLAGS=-fsanitize=address -Og -g Trick from various sources: https://stackoverflow.com/questions/16467718/how-to-print-out-a-variable-in-makefile https://www.cmcrossroads.com/article/printing-value-makefile-variable Signed-off-by: Marc-André Lureau Reviewed-by: Eric Blake Message-Id: <20180104160523.22995-4-marcandre.lureau@redhat.com> Tested-by: Philippe Mathieu-Daudé Reviewed-by: Philippe Mathieu-Daudé Signed-off-by: Paolo Bonzini --- Makefile | 5 ++++- docs/devel/build-system.txt | 13 +++++++++++++ 2 files changed, 17 insertions(+), 1 deletion(-) diff --git a/Makefile b/Makefile index 1671db3..f26ef1b 100644 --- a/Makefile +++ b/Makefile @@ -8,9 +8,12 @@ SRC_PATH=. UNCHECKED_GOALS := %clean TAGS cscope ctags dist \ html info pdf txt \ - help check-help \ + help check-help print-% \ docker docker-% vm-test vm-build-% +print-%: + @echo '$*=$($*)' + # All following code might depend on configuration variables ifneq ($(wildcard config-host.mak),) # Put the all: rule here so that config-host.mak can contain dependencies. diff --git a/docs/devel/build-system.txt b/docs/devel/build-system.txt index 386ef36..52501f2 100644 --- a/docs/devel/build-system.txt +++ b/docs/devel/build-system.txt @@ -510,3 +510,16 @@ default-configs/$TARGET-NAME file as input. This is the entrypoint used when make recurses to build a single system or userspace emulator target. It is merely a symlink back to the Makefile.target in the top level. + + +Useful make targets +=================== + +- help + + Print a help message for the most common build targets. + +- print-VAR + + Print the value of the variable VAR. Useful for debugging the build + system. From patchwork Tue Jan 16 14:16:54 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: Paolo Bonzini X-Patchwork-Id: 861628 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Authentication-Results: ozlabs.org; spf=pass (mailfrom) smtp.mailfrom=nongnu.org (client-ip=2001:4830:134:3::11; helo=lists.gnu.org; envelope-from=qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org; receiver=) Authentication-Results: ozlabs.org; dkim=fail reason="signature verification failed" (2048-bit key; unprotected) header.d=gmail.com header.i=@gmail.com header.b="Up622mSh"; dkim-atps=neutral Received: from lists.gnu.org (lists.gnu.org [IPv6:2001:4830:134:3::11]) (using TLSv1 with cipher AES256-SHA (256/256 bits)) (No client certificate requested) by ozlabs.org (Postfix) with ESMTPS id 3zLXrz32t1z9s7n for ; Wed, 17 Jan 2018 01:38:27 +1100 (AEDT) Received: from localhost ([::1]:39328 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1ebSNd-0002GI-GR for incoming@patchwork.ozlabs.org; Tue, 16 Jan 2018 09:38:25 -0500 Received: from eggs.gnu.org ([2001:4830:134:3::10]:50206) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1ebS3s-0002qQ-LO for qemu-devel@nongnu.org; Tue, 16 Jan 2018 09:18:01 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1ebS3o-0004Xf-8i for qemu-devel@nongnu.org; Tue, 16 Jan 2018 09:18:00 -0500 Received: from mail-wm0-x243.google.com ([2a00:1450:400c:c09::243]:45361) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1ebS3o-0004X8-1G for qemu-devel@nongnu.org; Tue, 16 Jan 2018 09:17:56 -0500 Received: by mail-wm0-x243.google.com with SMTP id i186so8655233wmi.4 for ; Tue, 16 Jan 2018 06:17:55 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=sender:from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=6FxTiEZHAGfdxH4Ed9r2oPeSBGLUg5UIf0+kvgPpgG0=; b=Up622mShHUFXswS2d/n6jLmoX2j77t2kUyiPBYAlSDQePnGbsyp801DzLkb+rSvlRF M87mOHY3QpvytMIhWpW+F6+FqWMJ8zHL3mtPMmryNBA3MgmGlwccWY6JX8fghQHiau4g dZ8e7Sf7eXxdaRHk1B16qlqa0dR9kNIC7XZa91AMtPezzXmqXrVj8jT/ovSv1+pqKNeF UiqBPSJOqkcYB7QNCVO4VrweaVOawJOu9dlWgjvmDLDO1HOsQbyJXjpxTGCFqA6Qh+pZ QczQBUb7SIcAh//E5JWwxlmSAwx4ZMXhk7UvmQlujV6A3znDinnIj22FPZIasTxvq7t6 dM8Q== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:sender:from:to:cc:subject:date:message-id :in-reply-to:references:mime-version:content-transfer-encoding; bh=6FxTiEZHAGfdxH4Ed9r2oPeSBGLUg5UIf0+kvgPpgG0=; b=OvlyXJ8KuzIUrwC2/PKoZ7WjPnUdx7ZjyS8L6zszpLdQ9gcvAz78o+parh1T74aY1A ncI7HDaz+e/+uWtTzyabfAPGonRd6+Acrg5stBE5pSJKRFnFGZoFXQOiqg18EQUVDIiv EfOYz83c07QukACKWi9XDKAZWLKyB/YYKCm7NQtLJkl5SQCF6F+nkr3uaNUr1pPSUTJv cArxN3ZZBr2KBjzyPKt2VnytD2MSMts1WS0NpmV3N6kjyXg5pFcm+QqbY+R0nW24zISh wmSEr8IJFMWKqV6cRQiRGRkL/yYW29RmCcDA/nPNV8qFMz+aYbxZDHvoVf2ST/mLe59d 16KQ== X-Gm-Message-State: AKwxytd6G3jmOq+9ysukOwVA+kWArwGXjOKGwsYaWugegzfsORTUawaH oZEc5dBDyiPnVGxhEKvVTQox6n8b X-Google-Smtp-Source: ACJfBouGjvXkR76M5lP5Oa6ePVWJQuAw8iPHSTHcHiZUAeqo4kiH0qF5r6ATbq9dkyCIoaq1Zmumnw== X-Received: by 10.28.69.66 with SMTP id s63mr13033536wma.47.1516112274678; Tue, 16 Jan 2018 06:17:54 -0800 (PST) Received: from 640k.lan (dynamic-adsl-78-12-229-84.clienti.tiscali.it. [78.12.229.84]) by smtp.gmail.com with ESMTPSA id u10sm1537758wrg.6.2018.01.16.06.17.53 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Tue, 16 Jan 2018 06:17:53 -0800 (PST) From: Paolo Bonzini To: qemu-devel@nongnu.org Date: Tue, 16 Jan 2018 15:16:54 +0100 Message-Id: <1516112253-14480-13-git-send-email-pbonzini@redhat.com> X-Mailer: git-send-email 1.8.3.1 In-Reply-To: <1516112253-14480-1-git-send-email-pbonzini@redhat.com> References: <1516112253-14480-1-git-send-email-pbonzini@redhat.com> MIME-Version: 1.0 X-detected-operating-system: by eggs.gnu.org: Genre and OS details not recognized. X-Received-From: 2a00:1450:400c:c09::243 Subject: [Qemu-devel] [PULL 12/51] build-sys: compile with -Og or -O1 when --enable-debug 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: =?utf-8?q?Marc-Andr=C3=A9_Lureau?= Errors-To: qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org Sender: "Qemu-devel" From: Marc-André Lureau When --enable-debug is turned on, configure doesn't set -O level, and uses default compiler -O0 level, which is slow. Instead, use -Og if supported by the compiler (optimize debugging experience), or -O1 (keeps code somewhat debuggable and works around compiler bugs). Unfortunately, gcc has many false-positive maybe-uninitialized errors with Og and O1 (f27 gcc 7.2.1 20170915): /home/elmarco/src/qemu/hw/ipmi/isa_ipmi_kcs.c: In function ‘ipmi_kcs_ioport_read’: /home/elmarco/src/qemu/hw/ipmi/isa_ipmi_kcs.c:279:12: error: ‘ret’ may be used uninitialized in this function [-Werror=maybe-uninitialized] return ret; ^~~ cc1: all warnings being treated as errors make: *** [/home/elmarco/src/qemu/rules.mak:66: hw/ipmi/isa_ipmi_kcs.o] Error 1 make: *** Waiting for unfinished jobs.... /home/elmarco/src/qemu/hw/ide/ahci.c: In function ‘ahci_populate_sglist’: /home/elmarco/src/qemu/hw/ide/ahci.c:903:58: error: ‘tbl_entry_size’ may be used uninitialized in this function [-Werror=maybe-uninitialized] if ((off_idx == -1) || (off_pos < 0) || (off_pos > tbl_entry_size)) { ~~~~~~~~~^~~~~~~~~~~~~~~~~ cc1: all warnings being treated as errors make: *** [/home/elmarco/src/qemu/rules.mak:66: hw/ide/ahci.o] Error 1 /home/elmarco/src/qemu/hw/display/qxl.c: In function ‘qxl_add_memslot’: /home/elmarco/src/qemu/hw/display/qxl.c:1397:52: error: ‘pci_start’ may be used uninitialized in this function [-Werror=maybe-uninitialized] memslot.virt_end = virt_start + (guest_end - pci_start); ~~~~~~~~~~~~~^~~~~~~~~~~~ /home/elmarco/src/qemu/hw/display/qxl.c:1389:9: error: ‘pci_region’ may be used uninitialized in this function [-Werror=maybe-uninitialized] qxl_set_guest_bug(d, "%s: pci_region = %d", __func__, pci_region); ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ cc1: all warnings being treated as errors There seems to be a long list of related bugs in upstream GCC, some of them are being fixed very recently: https://gcc.gnu.org/bugzilla/show_bug.cgi?id=24639 For now, let's workaround it by using Wno-maybe-uninitialized (gcc-only). Suggested-by: Paolo Bonzini Signed-off-by: Marc-André Lureau Message-Id: <20180104160523.22995-5-marcandre.lureau@redhat.com> Tested-by: Philippe Mathieu-Daudé Signed-off-by: Paolo Bonzini --- configure | 15 +++++++++++++-- 1 file changed, 13 insertions(+), 2 deletions(-) diff --git a/configure b/configure index ac392d2..6f1b7cd 100755 --- a/configure +++ b/configure @@ -5194,8 +5194,19 @@ if test "$gcov" = "yes" ; then LDFLAGS="-fprofile-arcs -ftest-coverage $LDFLAGS" elif test "$fortify_source" = "yes" ; then CFLAGS="-O2 -U_FORTIFY_SOURCE -D_FORTIFY_SOURCE=2 $CFLAGS" -elif test "$debug" = "no"; then - CFLAGS="-O2 $CFLAGS" +elif test "$debug" = "yes"; then + if compile_prog "-Og" ""; then + CFLAGS="-Og $CFLAGS" + elif compile_prog "-O1" ""; then + CFLAGS="-O1 $CFLAGS" + fi + # Workaround GCC false-positive Wuninitialized bugs with Og or O1: + # https://gcc.gnu.org/bugzilla/show_bug.cgi?id=24639 + if cc_has_warning_flag "-Wno-maybe-uninitialized"; then + CFLAGS="-Wno-maybe-uninitialized $CFLAGS" + fi +else + CFLAGS="-O2 $CFLAGS" fi ########################################## From patchwork Tue Jan 16 14:16:55 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: Paolo Bonzini X-Patchwork-Id: 861637 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Authentication-Results: ozlabs.org; spf=pass (mailfrom) smtp.mailfrom=nongnu.org (client-ip=2001:4830:134:3::11; helo=lists.gnu.org; envelope-from=qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org; receiver=) Authentication-Results: ozlabs.org; dkim=fail reason="signature verification failed" (2048-bit key; unprotected) header.d=gmail.com header.i=@gmail.com header.b="cZsBGnd7"; dkim-atps=neutral Received: from lists.gnu.org (lists.gnu.org [IPv6:2001:4830:134:3::11]) (using TLSv1 with cipher AES256-SHA (256/256 bits)) (No client certificate requested) by ozlabs.org (Postfix) with ESMTPS id 3zLY073skGz9s7v for ; Wed, 17 Jan 2018 01:44:39 +1100 (AEDT) Received: from localhost ([::1]:39372 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1ebSTd-0007bh-IW for incoming@patchwork.ozlabs.org; Tue, 16 Jan 2018 09:44:37 -0500 Received: from eggs.gnu.org ([2001:4830:134:3::10]:50240) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1ebS3v-0002uC-8z for qemu-devel@nongnu.org; Tue, 16 Jan 2018 09:18:10 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1ebS3p-0004YO-B1 for qemu-devel@nongnu.org; Tue, 16 Jan 2018 09:18:03 -0500 Received: from mail-wm0-x243.google.com ([2a00:1450:400c:c09::243]:41873) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1ebS3p-0004Y1-58 for qemu-devel@nongnu.org; Tue, 16 Jan 2018 09:17:57 -0500 Received: by mail-wm0-x243.google.com with SMTP id f71so8700778wmf.0 for ; Tue, 16 Jan 2018 06:17:57 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=sender:from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=u/qkyEupL6h0Y4NtT4cWnsw/c+XzLQrEVxiesaNYQF4=; b=cZsBGnd7EtM/rGyd0JPuyIi0jvK71QGNbIp6aDyVEoJMu37aFk9kesn5DrKEH4QZWD LhZdgvxe8djAC3dERMAf0q94T79Ma+OZG6ljS4jiI3AoXonBfooE4mjL34lCzZE9L0Gd ylB/HxB6R7jpszuienQ2vbCuElKbtZbj6Nq/7QDP+I/KADpfz1qcp2Y8KLsPIgs/RbiH Gk3P7gnOfyIXcB7aQq0aGlehMJrPFEykQbXo5uj9a1od8AgshHwOagjth/oCp2pFiS9K lTwXriRrtBURqt998PWPDec4E1/x8uqwUCGET43CzxtrZ6Pgs31Ov3WglrbjKHC+iQOu i6KQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:sender:from:to:cc:subject:date:message-id :in-reply-to:references:mime-version:content-transfer-encoding; bh=u/qkyEupL6h0Y4NtT4cWnsw/c+XzLQrEVxiesaNYQF4=; b=GCPqpEWmiRI1uewaTbf72md533KNy1sTtdG+AiGrZwCSESLDImejLZ5ErEPIxsvIaV ptqV47pcn6p9S4OcPkttywk6johvfV0NS7xG7/BlDGDN6dbrmdYLo9Es8gmR3kDQlQOu 4ZOSnEgJPPM528byR9zKmgon4sw5yKBIc+95/6A68T+evpPb4xFGcJFbN1pUwQ3vu8mu LMqmyCJXUSVRwEPTwCUaEcSgiyf7q8j1+6hA39AxdGqS8eTr8e94mI5wt/eJeal4P7GH oyFEcBdrLrzzcSknxmzJYeW9n0JPf30Ja8TWv070IIoalalapni1q0RKK2XjKKgyGH6E W7ow== X-Gm-Message-State: AKwxytd0pC2fj5znvDLaed8b9dzR6Qhu68gKTI5f4GvPSaur9njkZWgi tY7jVxjQ7KTZ8hl2z1ALjBrgINGM X-Google-Smtp-Source: ACJfBostMdQLW14abGOqNK4J2f6LwaIXYgLlqERwBC8Gel/uF+YXkb13pXD/dufy5iZGk305Z/MHoQ== X-Received: by 10.28.9.77 with SMTP id 74mr12953821wmj.107.1516112275817; Tue, 16 Jan 2018 06:17:55 -0800 (PST) Received: from 640k.lan (dynamic-adsl-78-12-229-84.clienti.tiscali.it. [78.12.229.84]) by smtp.gmail.com with ESMTPSA id u10sm1537758wrg.6.2018.01.16.06.17.54 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Tue, 16 Jan 2018 06:17:55 -0800 (PST) From: Paolo Bonzini To: qemu-devel@nongnu.org Date: Tue, 16 Jan 2018 15:16:55 +0100 Message-Id: <1516112253-14480-14-git-send-email-pbonzini@redhat.com> X-Mailer: git-send-email 1.8.3.1 In-Reply-To: <1516112253-14480-1-git-send-email-pbonzini@redhat.com> References: <1516112253-14480-1-git-send-email-pbonzini@redhat.com> MIME-Version: 1.0 X-detected-operating-system: by eggs.gnu.org: Genre and OS details not recognized. X-Received-From: 2a00:1450:400c:c09::243 Subject: [Qemu-devel] [PULL 13/51] tests/docker: add some sanitizers to fedora dockerfile 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: =?utf-8?q?Marc-Andr=C3=A9_Lureau?= Errors-To: qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org Sender: "Qemu-devel" From: Marc-André Lureau Build fedora image with ASAN/UBSan support. Signed-off-by: Marc-André Lureau Message-Id: <20180104160523.22995-6-marcandre.lureau@redhat.com> Tested-by: Philippe Mathieu-Daudé Reviewed-by: Philippe Mathieu-Daudé Signed-off-by: Paolo Bonzini --- tests/docker/dockerfiles/fedora.docker | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/tests/docker/dockerfiles/fedora.docker b/tests/docker/dockerfiles/fedora.docker index 4b26c3a..32de731 100644 --- a/tests/docker/dockerfiles/fedora.docker +++ b/tests/docker/dockerfiles/fedora.docker @@ -3,7 +3,7 @@ ENV PACKAGES \ ccache gettext git tar PyYAML sparse flex bison python2 bzip2 hostname \ glib2-devel pixman-devel zlib-devel SDL-devel libfdt-devel \ gcc gcc-c++ clang make perl which bc findutils libaio-devel \ - nettle-devel \ + nettle-devel libasan libubsan \ mingw32-pixman mingw32-glib2 mingw32-gmp mingw32-SDL mingw32-pkg-config \ mingw32-gtk2 mingw32-gtk3 mingw32-gnutls mingw32-nettle mingw32-libtasn1 \ mingw32-libjpeg-turbo mingw32-libpng mingw32-curl mingw32-libssh2 \ @@ -15,4 +15,4 @@ ENV PACKAGES \ RUN dnf install -y $PACKAGES RUN rpm -q $PACKAGES | sort > /packages.txt -ENV FEATURES mingw clang pyyaml +ENV FEATURES mingw clang pyyaml asan From patchwork Tue Jan 16 14:16:56 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: Paolo Bonzini X-Patchwork-Id: 861632 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Authentication-Results: ozlabs.org; spf=pass (mailfrom) smtp.mailfrom=nongnu.org (client-ip=2001:4830:134:3::11; helo=lists.gnu.org; envelope-from=qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org; receiver=) Authentication-Results: ozlabs.org; dkim=fail reason="signature verification failed" (2048-bit key; unprotected) header.d=gmail.com header.i=@gmail.com header.b="l7G4wEz2"; dkim-atps=neutral Received: from lists.gnu.org (lists.gnu.org [IPv6:2001:4830:134:3::11]) (using TLSv1 with cipher AES256-SHA (256/256 bits)) (No client certificate requested) by ozlabs.org (Postfix) with ESMTPS id 3zLXtk1DXgz9s7n for ; Wed, 17 Jan 2018 01:39:58 +1100 (AEDT) Received: from localhost ([::1]:39338 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1ebSP6-0003fu-6S for incoming@patchwork.ozlabs.org; Tue, 16 Jan 2018 09:39:56 -0500 Received: from eggs.gnu.org ([2001:4830:134:3::10]:50205) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1ebS3s-0002qP-L3 for qemu-devel@nongnu.org; Tue, 16 Jan 2018 09:18:02 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1ebS3q-0004Z5-Sn for qemu-devel@nongnu.org; Tue, 16 Jan 2018 09:18:00 -0500 Received: from mail-wm0-x241.google.com ([2a00:1450:400c:c09::241]:36074) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1ebS3q-0004Yt-M3 for qemu-devel@nongnu.org; Tue, 16 Jan 2018 09:17:58 -0500 Received: by mail-wm0-x241.google.com with SMTP id f3so9001679wmc.1 for ; Tue, 16 Jan 2018 06:17:58 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=sender:from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=/GJp4oucjpCmBnwvIqua8KMXlL7dFqV8UIOpQt0jQTc=; b=l7G4wEz2USxxPyxdowwHEH4Y/TI4JkF7kziQb+VTxz9zjCGv/QFCaeQbri1I3mzmOk vxGXmPNZgXwQ7VZV/mqiEs7uB2VCm4I0DoP6NPNCDo220BiJVRy4CZGxCdjghHgZM1GP 0yiGI6cb6wt1SLmLMHb4YMMaIPiRQL4fH8vRFuHr6nARQH7t2UMcDs46lBuFtWIo4K2N 8IRRlgrS7p6hP4SgWT9HdLHNqaZZ0CLnsfzEnoZxtYfd54d5Pp8X1yw2l1IyidXFCZW6 XGeJOuOojEuvpfxwGiSHOVDMnXnPdLKOrmzqv4lWVTBi7JyYaxAWG9bGERl1i7Mddryp 5PPw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:sender:from:to:cc:subject:date:message-id :in-reply-to:references:mime-version:content-transfer-encoding; bh=/GJp4oucjpCmBnwvIqua8KMXlL7dFqV8UIOpQt0jQTc=; b=sFu76Ql+ajl8Xny3rsgIztccF2jDmUEhCZpnoQpH4TT4b8+jeg3D00S32PgMHq+oeG 07NLy8TpsfzGW+paHx/rJydc+EavdyNP6ckpy6NOEU0509MVW2PDthTh1M1BCGR/lFbB LxZCj09yOY7Hrjxh93zfsiOFfwOml0ji8FVbTCiyPwt9brHTE7r+XRGTZax1h51Q3HPF aKWSdLMS1PJXCYaRKKnG9jw5IEmOMrSGw102E9hQwkaF/MgzcHHmANWXoTLSHxtMgLDM PL6myz7sD2OQT4d9U9a0yf7GqjP0EePWkmLn+Xk2NE2MC8nS30IHXljQhXlp/7iSJqoG 3MBg== X-Gm-Message-State: AKwxytdLTsrZtOCredabp0bAw2xXX650kDn+T8ZHDubSFi0hJRRlyEWs 6aFtUnxUfv5dZRcc/FayatffgSZ+ X-Google-Smtp-Source: ACJfBovAKmsh5szP7LOj1hHlbTl4J+atq8oct6pmQZewIDRsDLuh48tsG458VMxidZ7ng7OWsm+HAw== X-Received: by 10.28.153.79 with SMTP id b76mr13389363wme.47.1516112277219; Tue, 16 Jan 2018 06:17:57 -0800 (PST) Received: from 640k.lan (dynamic-adsl-78-12-229-84.clienti.tiscali.it. [78.12.229.84]) by smtp.gmail.com with ESMTPSA id u10sm1537758wrg.6.2018.01.16.06.17.55 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Tue, 16 Jan 2018 06:17:56 -0800 (PST) From: Paolo Bonzini To: qemu-devel@nongnu.org Date: Tue, 16 Jan 2018 15:16:56 +0100 Message-Id: <1516112253-14480-15-git-send-email-pbonzini@redhat.com> X-Mailer: git-send-email 1.8.3.1 In-Reply-To: <1516112253-14480-1-git-send-email-pbonzini@redhat.com> References: <1516112253-14480-1-git-send-email-pbonzini@redhat.com> MIME-Version: 1.0 X-detected-operating-system: by eggs.gnu.org: Genre and OS details not recognized. X-Received-From: 2a00:1450:400c:c09::241 Subject: [Qemu-devel] [PULL 14/51] tests/docker: add test-debug 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: =?utf-8?q?Marc-Andr=C3=A9_Lureau?= Errors-To: qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org Sender: "Qemu-devel" From: Marc-André Lureau Add a new test with --enable-debug using clang/asan/ubsan, remove --enable-debug from test-clang & test-mingw. Signed-off-by: Marc-André Lureau Message-Id: <20180104160523.22995-7-marcandre.lureau@redhat.com> Tested-by: Philippe Mathieu-Daudé Reviewed-by: Philippe Mathieu-Daudé Signed-off-by: Paolo Bonzini --- tests/docker/test-clang | 2 +- tests/docker/test-debug | 26 ++++++++++++++++++++++++++ tests/docker/test-mingw | 2 -- 3 files changed, 27 insertions(+), 3 deletions(-) create mode 100755 tests/docker/test-debug diff --git a/tests/docker/test-clang b/tests/docker/test-clang index 1eb61a3..e90a793 100755 --- a/tests/docker/test-clang +++ b/tests/docker/test-clang @@ -17,7 +17,7 @@ requires clang cd "$BUILD_DIR" -OPTS="--enable-debug --cxx=clang++ --cc=clang --host-cc=clang" +OPTS="--cxx=clang++ --cc=clang --host-cc=clang" # -fsanitize=undefined is broken on Fedora 23, skip it for now # See also: https://bugzilla.redhat.com/show_bug.cgi?id=1263834 #OPTS="$OPTS --extra-cflags=-fsanitize=undefined \ diff --git a/tests/docker/test-debug b/tests/docker/test-debug new file mode 100755 index 0000000..d020b06 --- /dev/null +++ b/tests/docker/test-debug @@ -0,0 +1,26 @@ +#!/bin/bash -e +# +# Compile and check with clang & --enable-debug. +# +# Copyright (c) 2016-2018 Red Hat Inc. +# +# Authors: +# Fam Zheng +# Marc-André Lureau +# +# This work is licensed under the terms of the GNU GPL, version 2 +# or (at your option) any later version. See the COPYING file in +# the top-level directory. + +. common.rc + +requires clang asan + +cd "$BUILD_DIR" + +OPTS="--cxx=clang++ --cc=clang --host-cc=clang" +OPTS="--enable-debug $OPTS" + +build_qemu $OPTS +make $MAKEFLAGS check +install_qemu diff --git a/tests/docker/test-mingw b/tests/docker/test-mingw index 39a1da4..503a6bc 100755 --- a/tests/docker/test-mingw +++ b/tests/docker/test-mingw @@ -22,7 +22,6 @@ for prefix in x86_64-w64-mingw32- i686-w64-mingw32-; do TARGET_LIST=${TARGET_LIST:-$DEF_TARGET_LIST} \ build_qemu --cross-prefix=$prefix \ --enable-trace-backends=simple \ - --enable-debug \ --enable-gnutls \ --enable-nettle \ --enable-curl \ @@ -35,4 +34,3 @@ for prefix in x86_64-w64-mingw32- i686-w64-mingw32-; do make clean done - From patchwork Tue Jan 16 14:16:57 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: Paolo Bonzini X-Patchwork-Id: 861630 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Authentication-Results: ozlabs.org; spf=pass (mailfrom) smtp.mailfrom=nongnu.org (client-ip=2001:4830:134:3::11; helo=lists.gnu.org; envelope-from=qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org; receiver=) Authentication-Results: ozlabs.org; dkim=fail reason="signature verification failed" (2048-bit key; unprotected) header.d=gmail.com header.i=@gmail.com header.b="KtfipsXA"; dkim-atps=neutral Received: from lists.gnu.org (lists.gnu.org [IPv6:2001:4830:134:3::11]) (using TLSv1 with cipher AES256-SHA (256/256 bits)) (No client certificate requested) by ozlabs.org (Postfix) with ESMTPS id 3zLXtJ5FYbz9s7n for ; Wed, 17 Jan 2018 01:39:36 +1100 (AEDT) Received: from localhost ([::1]:39334 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1ebSOk-0003G8-Q4 for incoming@patchwork.ozlabs.org; Tue, 16 Jan 2018 09:39:34 -0500 Received: from eggs.gnu.org ([2001:4830:134:3::10]:50284) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1ebS3x-0002xQ-U4 for qemu-devel@nongnu.org; Tue, 16 Jan 2018 09:18:10 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1ebS3s-0004Zh-AS for qemu-devel@nongnu.org; Tue, 16 Jan 2018 09:18:05 -0500 Received: from mail-wr0-x22d.google.com ([2a00:1450:400c:c0c::22d]:35449) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1ebS3s-0004ZL-3o for qemu-devel@nongnu.org; Tue, 16 Jan 2018 09:18:00 -0500 Received: by mail-wr0-x22d.google.com with SMTP id g38so12144044wrd.2 for ; Tue, 16 Jan 2018 06:18:00 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=sender:from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=S+xkSZFNh4eCpIZgQMtOIwb3cDhYPsie+l+9N5N/pcg=; b=KtfipsXAp/wilju7LM4MnoKo3R7NKh7BiMbgbjYJ0oZAVRF7iQ6iPdpkwsZCFLo+4U hh4RULHavGp01bmY0p4QuT2tH1CoIYVbWZyCkSq0N1D+QQG71oexb3rul1WCL2I9vqLX gNeqkOksUhDsQnZBvwhk/qcw9CpNgAFPSNkit3MIiFnKHM+0l7AmWB8EdZVcsdt4EKk/ oBqZ/DPOu0mPOJ1+7qayQ/KOtyA0+J6bTa6RX4U2I6HlVNAvJka6V3WVH4/EwMZWVrVa pnYzCkw+mdDOlFEVPeLcgTnlKfViv+4+rmGSvEclCSAsqb/6as8SdaPoA9JhdNIU+Nb+ L1Yg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:sender:from:to:cc:subject:date:message-id :in-reply-to:references:mime-version:content-transfer-encoding; bh=S+xkSZFNh4eCpIZgQMtOIwb3cDhYPsie+l+9N5N/pcg=; b=oJBzy+ua0xfraDgn28H/+6QDTcavNZ0dyHVzPVg5L/VxYdG0LM/8/ijkptrF2+LgoP 14jqTpFVpKDv2DlxleE2R6Ev//JETI7tMU8+leK4A3AG4bxM1QUJMdNp5MbnF/0H6ELF x4JPmll967tGJlvdWFo3L0TA7tVIH8OgGIr6MqBXjIwMWs/AGVLk/YWDr6TQCGMmYAP7 DjVrWnv5X6xp8X3q9GQ56G3l/ITSMab6V+liWPR7b8UdH2ugguiS2Avj529XkSryI2Jt MdbJJrRAWALJK7RRbTkC88OvsXgPeNHiFxwotCauetav71jdTKiEhhJJt7PRB91Jq8zW 94bQ== X-Gm-Message-State: AKwxytfLTh0BBOQ1CUUjmW1nFNS82EtttoN/Bgo+6pdu8414CiYorW7c 7sVQJZrPACGewB/MORvrSrM5eeja X-Google-Smtp-Source: ACJfBosHFYBJKdaJWb/hf1I/j3ZX7K38AUFKACfvitfXdGtj8oK9j+O7KK1m66ghJCzGJiFDRETazw== X-Received: by 10.223.163.91 with SMTP id d27mr6781384wrb.18.1516112278655; Tue, 16 Jan 2018 06:17:58 -0800 (PST) Received: from 640k.lan (dynamic-adsl-78-12-229-84.clienti.tiscali.it. [78.12.229.84]) by smtp.gmail.com with ESMTPSA id u10sm1537758wrg.6.2018.01.16.06.17.57 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Tue, 16 Jan 2018 06:17:57 -0800 (PST) From: Paolo Bonzini To: qemu-devel@nongnu.org Date: Tue, 16 Jan 2018 15:16:57 +0100 Message-Id: <1516112253-14480-16-git-send-email-pbonzini@redhat.com> X-Mailer: git-send-email 1.8.3.1 In-Reply-To: <1516112253-14480-1-git-send-email-pbonzini@redhat.com> References: <1516112253-14480-1-git-send-email-pbonzini@redhat.com> MIME-Version: 1.0 X-detected-operating-system: by eggs.gnu.org: Genre and OS details not recognized. X-Received-From: 2a00:1450:400c:c0c::22d Subject: [Qemu-devel] [PULL 15/51] tests: fix check-qobject leak 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: =?utf-8?q?Marc-Andr=C3=A9_Lureau?= Errors-To: qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org Sender: "Qemu-devel" From: Marc-André Lureau /public/qobject_is_equal_conversion: OK ================================================================= ==14396==ERROR: LeakSanitizer: detected memory leaks Direct leak of 56 byte(s) in 1 object(s) allocated from: #0 0x7f07682c5850 in malloc (/lib64/libasan.so.4+0xde850) #1 0x7f0767d12f0c in g_malloc ../glib/gmem.c:94 #2 0x7f0767d131cf in g_malloc_n ../glib/gmem.c:331 #3 0x562bd767371f in do_test_equality /home/elmarco/src/qq/tests/check-qobject.c:49 #4 0x562bd7674a35 in qobject_is_equal_dict_test /home/elmarco/src/qq/tests/check-qobject.c:267 #5 0x7f0767d37b04 in test_case_run ../glib/gtestutils.c:2237 #6 0x7f0767d37ec4 in g_test_run_suite_internal ../glib/gtestutils.c:2321 #7 0x7f0767d37f6d in g_test_run_suite_internal ../glib/gtestutils.c:2333 #8 0x7f0767d38184 in g_test_run_suite ../glib/gtestutils.c:2408 #9 0x7f0767d36e0d in g_test_run ../glib/gtestutils.c:1674 #10 0x562bd7674e75 in main /home/elmarco/src/qq/tests/check-qobject.c:327 #11 0x7f0766009039 in __libc_start_main (/lib64/libc.so.6+0x21039) Signed-off-by: Marc-André Lureau Reviewed-by: Markus Armbruster Reviewed-by: Philippe Mathieu-Daudé Message-Id: <20180104160523.22995-9-marcandre.lureau@redhat.com> Signed-off-by: Paolo Bonzini --- tests/check-qobject.c | 2 ++ 1 file changed, 2 insertions(+) diff --git a/tests/check-qobject.c b/tests/check-qobject.c index 03e9175..710f9e6 100644 --- a/tests/check-qobject.c +++ b/tests/check-qobject.c @@ -59,6 +59,8 @@ static void do_test_equality(bool expected, int _, ...) g_assert(qobject_is_equal(args[i], args[j]) == expected); } } + + g_free(args); } #define check_equal(...) \ From patchwork Tue Jan 16 14:16:58 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: Paolo Bonzini X-Patchwork-Id: 861638 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Authentication-Results: ozlabs.org; spf=pass (mailfrom) smtp.mailfrom=nongnu.org (client-ip=2001:4830:134:3::11; helo=lists.gnu.org; envelope-from=qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org; receiver=) Authentication-Results: ozlabs.org; dkim=fail reason="signature verification failed" (2048-bit key; unprotected) header.d=gmail.com header.i=@gmail.com header.b="Yzv8yE+i"; dkim-atps=neutral Received: from lists.gnu.org (lists.gnu.org [IPv6:2001:4830:134:3::11]) (using TLSv1 with cipher AES256-SHA (256/256 bits)) (No client certificate requested) by ozlabs.org (Postfix) with ESMTPS id 3zLY0C6snvz9s7v for ; Wed, 17 Jan 2018 01:44:43 +1100 (AEDT) Received: from localhost ([::1]:39374 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1ebSTi-0007fn-2c for incoming@patchwork.ozlabs.org; Tue, 16 Jan 2018 09:44:42 -0500 Received: from eggs.gnu.org ([2001:4830:134:3::10]:50278) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1ebS3x-0002ww-Ih for qemu-devel@nongnu.org; Tue, 16 Jan 2018 09:18:11 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1ebS3t-0004aQ-Lo for qemu-devel@nongnu.org; Tue, 16 Jan 2018 09:18:05 -0500 Received: from mail-wr0-x243.google.com ([2a00:1450:400c:c0c::243]:34579) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1ebS3t-0004Zy-GE for qemu-devel@nongnu.org; Tue, 16 Jan 2018 09:18:01 -0500 Received: by mail-wr0-x243.google.com with SMTP id 36so15366375wrh.1 for ; Tue, 16 Jan 2018 06:18:01 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=sender:from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=/FffNR7MadkBT344kEFDcnFeTguXtSH7Wp8n7QEsck0=; b=Yzv8yE+iOij5CWavKgA3rLsQqDZuIy2wfehEEdetV4H2n+agvYVgF2Pszq7ws+R+mc Q+0UP0bV/yzXaEkKQI6HVZ3xCsOCwjAWxC1F0WUTe29sQS/qZCeg1wKM9t5LbkLusyaC a8iV8UjdZDFveFM1xhYCIwdWzO8svVnzqrw5qF0yY55A7TNFelL88yKsY6pTtTg4ONLY 8oZBdkGWBMxYAkEVwgUQ7vuaDYcvQnv2fkV8QZE3OwlezbGkOwKn0FRoiMeEkjpp4ZY4 GJol0oDFQw6tT/cEntB4NbQsWwZwUeUvd6GcWrzYc9QNwmJgxnpcCK0kJlVFxqoqQ2U3 qldQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:sender:from:to:cc:subject:date:message-id :in-reply-to:references:mime-version:content-transfer-encoding; bh=/FffNR7MadkBT344kEFDcnFeTguXtSH7Wp8n7QEsck0=; b=Zswj5rlCQ3Hasb/2p716Nj5qFa6I+ap2Ay/oOs7k0VlhRK0cmHY933Nb6FJGFzRRun o5iflWAraKJVIDfPXstD3qXTYvagXjDJQ6XLFbjrkLSzlmKNHi2+0IaLIFrxvRO7DFne XpzD/8Mha/xSILGUHqlBtSN76rQlDbC5DYZQcDp8JslFFnqhdsYap/IwR3yr8SiQWIH2 XqcCaaNwQXEj7JN4rzuTb80UolwjbT8/oz9qWSBFplqENYlDb7T+Etg3TIKrheJVXipo Fu1ZjZWQSsRSo35/SmiuT031YtsgrBDNhKlMkelj0iNnTkuwZqf4/nwhkZ9eNYFizt9I Q0wA== X-Gm-Message-State: AKGB3mJCEOeEd/xFiq6BohnzX6CKTYMDnnwAHtQscTmz3gimzj235fux b1tC6TA5k0QA7PsK6WHRDj79RKcP X-Google-Smtp-Source: ACJfBos0gSGNdnDARkgS38IVJK5BE2ZjXpvIarKLE/MisrJG+08wLHEbyWCPTzDVLwX8Epawbbpntg== X-Received: by 10.223.183.23 with SMTP id l23mr26785714wre.33.1516112280063; Tue, 16 Jan 2018 06:18:00 -0800 (PST) Received: from 640k.lan (dynamic-adsl-78-12-229-84.clienti.tiscali.it. [78.12.229.84]) by smtp.gmail.com with ESMTPSA id u10sm1537758wrg.6.2018.01.16.06.17.58 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Tue, 16 Jan 2018 06:17:59 -0800 (PST) From: Paolo Bonzini To: qemu-devel@nongnu.org Date: Tue, 16 Jan 2018 15:16:58 +0100 Message-Id: <1516112253-14480-17-git-send-email-pbonzini@redhat.com> X-Mailer: git-send-email 1.8.3.1 In-Reply-To: <1516112253-14480-1-git-send-email-pbonzini@redhat.com> References: <1516112253-14480-1-git-send-email-pbonzini@redhat.com> MIME-Version: 1.0 X-detected-operating-system: by eggs.gnu.org: Genre and OS details not recognized. X-Received-From: 2a00:1450:400c:c0c::243 Subject: [Qemu-devel] [PULL 16/51] vl: fix direct firmware directories leak 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: =?utf-8?q?Marc-Andr=C3=A9_Lureau?= Errors-To: qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org Sender: "Qemu-devel" From: Marc-André Lureau Note that data_dir[] will now point to allocated strings. Fixes: Direct leak of 16 byte(s) in 1 object(s) allocated from: #0 0x7f1448181850 in malloc (/lib64/libasan.so.4+0xde850) #1 0x7f1446ed8f0c in g_malloc ../glib/gmem.c:94 #2 0x7f1446ed91cf in g_malloc_n ../glib/gmem.c:331 #3 0x7f1446ef739a in g_strsplit ../glib/gstrfuncs.c:2364 #4 0x55cf276439d7 in main /home/elmarco/src/qq/vl.c:4311 #5 0x7f143dfad039 in __libc_start_main (/lib64/libc.so.6+0x21039) Signed-off-by: Marc-André Lureau Reviewed-by: Eric Blake Message-Id: <20180104160523.22995-10-marcandre.lureau@redhat.com> Signed-off-by: Paolo Bonzini --- vl.c | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/vl.c b/vl.c index 444b750..3599485 100644 --- a/vl.c +++ b/vl.c @@ -2318,7 +2318,7 @@ static void qemu_add_data_dir(const char *path) return; /* duplicate */ } } - data_dir[data_dir_idx++] = path; + data_dir[data_dir_idx++] = g_strdup(path); } static inline bool nonempty_str(const char *str) @@ -3078,7 +3078,7 @@ int main(int argc, char **argv, char **envp) Error *main_loop_err = NULL; Error *err = NULL; bool list_data_dirs = false; - char **dirs; + char *dir, **dirs; typedef struct BlockdevOptions_queue { BlockdevOptions *bdo; Location loc; @@ -4181,9 +4181,12 @@ int main(int argc, char **argv, char **envp) for (i = 0; dirs[i] != NULL; i++) { qemu_add_data_dir(dirs[i]); } + g_strfreev(dirs); /* try to find datadir relative to the executable path */ - qemu_add_data_dir(os_find_datadir()); + dir = os_find_datadir(); + qemu_add_data_dir(dir); + g_free(dir); /* add the datadir specified when building */ qemu_add_data_dir(CONFIG_QEMU_DATADIR); From patchwork Tue Jan 16 14:16:59 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: Paolo Bonzini X-Patchwork-Id: 861633 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Authentication-Results: ozlabs.org; spf=pass (mailfrom) smtp.mailfrom=nongnu.org (client-ip=2001:4830:134:3::11; helo=lists.gnu.org; envelope-from=qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org; receiver=) Authentication-Results: ozlabs.org; dkim=fail reason="signature verification failed" (2048-bit key; unprotected) header.d=gmail.com header.i=@gmail.com header.b="AcKhh4/Z"; dkim-atps=neutral Received: from lists.gnu.org (lists.gnu.org [IPv6:2001:4830:134:3::11]) (using TLSv1 with cipher AES256-SHA (256/256 bits)) (No client certificate requested) by ozlabs.org (Postfix) with ESMTPS id 3zLXwW6qkGz9s7n for ; Wed, 17 Jan 2018 01:41:31 +1100 (AEDT) Received: from localhost ([::1]:39353 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1ebSQb-000539-Vl for incoming@patchwork.ozlabs.org; Tue, 16 Jan 2018 09:41:30 -0500 Received: from eggs.gnu.org ([2001:4830:134:3::10]:50253) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1ebS3w-0002vS-61 for qemu-devel@nongnu.org; Tue, 16 Jan 2018 09:18:05 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1ebS3v-0004b5-24 for qemu-devel@nongnu.org; Tue, 16 Jan 2018 09:18:04 -0500 Received: from mail-wr0-x234.google.com ([2a00:1450:400c:c0c::234]:45128) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1ebS3u-0004ai-SG for qemu-devel@nongnu.org; Tue, 16 Jan 2018 09:18:03 -0500 Received: by mail-wr0-x234.google.com with SMTP id 16so15331755wry.12 for ; Tue, 16 Jan 2018 06:18:02 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=sender:from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=W6UqB45VB4pdS4GGw3lFfIWVeAM1VlptPJ23S8G3/7Y=; b=AcKhh4/ZGHFGmgpUSB5zusv+Kx5RN3jl2Ke2+usKNR6CdLMyfh/4VvVSez0ekJXCvN ZCBmfMhL4J3A7rawsXG82lmTWzEk18/COz2iGd2zJKes7TDjwpn03DEyzl8SIBxykU8H MC8nN0VKHpDHqfs97iTNC1nYWD+gpdYjy8W6X4vfT4oBsP6D+uPA97SSQkGsAU/1ibkW Q1WDLjGprUJdPDtkUehMnYs3ZySGDD7YdTiS+2tny/e2/Pbd0HiXb61rcFzmqM08kEDC jZB6n+BSv8pVThRx8j/0LI6Lucu4IO1eU5mbl5w2d/Klnnqo101WgG35dpst5CZPBJre 3znA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:sender:from:to:cc:subject:date:message-id :in-reply-to:references:mime-version:content-transfer-encoding; bh=W6UqB45VB4pdS4GGw3lFfIWVeAM1VlptPJ23S8G3/7Y=; b=VPJ9WqZIxs8UT4Zx3M3y6935H1YDdNgJFu9SpHGKUHK0XNYViah8IlKI+kfvqt0uuO 5pUIEXjQuSjCVa4zE1swSBepvF6dRcVD51avcle0TwYSu9/+KT2Yxt6E+F3TlHPrBTGO w9sEwlkjm+Us9cEmZb4hq3JsNKpi7TckjHb0t5hrwBNtj5axMA/mlHCF5pbAcl0bgr3m DNgBcRBVcfVN+p6xZFmy0kMsRBJtb310uq+b3GriH/bb0AshbPlsWsE1CZWUIDQ+hH9J wZlQaY9lZN/LmtK7jiWk7qf9b2jzBegES4/bNUn6O/5dxUQpZwYrllai/OaPnCiBD8tN rJAA== X-Gm-Message-State: AKwxytf0D9rt8p61DmucSSBPp9aDe3KwgPBuWxrdCHXBSrrtVRl6Xztm 2ZCAulsHpteHrdg1tkTZUnkh21WK X-Google-Smtp-Source: ACJfBosOxMMA17fPSxRw3zrK6kyrUGJmNJpCkvYK58KOE3kqJc6tFnL6+Wb34RubyxQJjyJT+GNcVA== X-Received: by 10.223.132.166 with SMTP id 35mr4055805wrg.131.1516112281418; Tue, 16 Jan 2018 06:18:01 -0800 (PST) Received: from 640k.lan (dynamic-adsl-78-12-229-84.clienti.tiscali.it. [78.12.229.84]) by smtp.gmail.com with ESMTPSA id u10sm1537758wrg.6.2018.01.16.06.18.00 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Tue, 16 Jan 2018 06:18:00 -0800 (PST) From: Paolo Bonzini To: qemu-devel@nongnu.org Date: Tue, 16 Jan 2018 15:16:59 +0100 Message-Id: <1516112253-14480-18-git-send-email-pbonzini@redhat.com> X-Mailer: git-send-email 1.8.3.1 In-Reply-To: <1516112253-14480-1-git-send-email-pbonzini@redhat.com> References: <1516112253-14480-1-git-send-email-pbonzini@redhat.com> MIME-Version: 1.0 X-detected-operating-system: by eggs.gnu.org: Genre and OS details not recognized. X-Received-From: 2a00:1450:400c:c0c::234 Subject: [Qemu-devel] [PULL 17/51] readline: add a free 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: =?utf-8?q?Marc-Andr=C3=A9_Lureau?= Errors-To: qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org Sender: "Qemu-devel" From: Marc-André Lureau Fixes leaks such as: Direct leak of 2 byte(s) in 1 object(s) allocated from: #0 0x7eff58beb850 in malloc (/lib64/libasan.so.4+0xde850) #1 0x7eff57942f0c in g_malloc ../glib/gmem.c:94 #2 0x7eff579431cf in g_malloc_n ../glib/gmem.c:331 #3 0x7eff5795f6eb in g_strdup ../glib/gstrfuncs.c:363 #4 0x55db720f1d46 in readline_hist_add /home/elmarco/src/qq/util/readline.c:258 #5 0x55db720f2d34 in readline_handle_byte /home/elmarco/src/qq/util/readline.c:387 #6 0x55db71539d00 in monitor_read /home/elmarco/src/qq/monitor.c:3896 #7 0x55db71f9be35 in qemu_chr_be_write_impl /home/elmarco/src/qq/chardev/char.c:167 #8 0x55db71f9bed3 in qemu_chr_be_write /home/elmarco/src/qq/chardev/char.c:179 #9 0x55db71fa013c in fd_chr_read /home/elmarco/src/qq/chardev/char-fd.c:66 #10 0x55db71fe18a8 in qio_channel_fd_source_dispatch /home/elmarco/src/qq/io/channel-watch.c:84 #11 0x7eff5793a90b in g_main_dispatch ../glib/gmain.c:3182 #12 0x7eff5793b7ac in g_main_context_dispatch ../glib/gmain.c:3847 #13 0x55db720af3bd in glib_pollfds_poll /home/elmarco/src/qq/util/main-loop.c:214 #14 0x55db720af505 in os_host_main_loop_wait /home/elmarco/src/qq/util/main-loop.c:261 #15 0x55db720af6d6 in main_loop_wait /home/elmarco/src/qq/util/main-loop.c:515 #16 0x55db7184e0de in main_loop /home/elmarco/src/qq/vl.c:1995 #17 0x55db7185e956 in main /home/elmarco/src/qq/vl.c:4914 #18 0x7eff4ea17039 in __libc_start_main (/lib64/libc.so.6+0x21039) (while at it, use g_new0(ReadLineState), it's a bit easier to read) Signed-off-by: Marc-André Lureau Reviewed-by: Dr. David Alan Gilbert Reviewed-by: Philippe Mathieu-Daudé Message-Id: <20180104160523.22995-11-marcandre.lureau@redhat.com> Signed-off-by: Paolo Bonzini --- include/qemu/readline.h | 1 + monitor.c | 2 +- util/readline.c | 18 +++++++++++++++++- 3 files changed, 19 insertions(+), 2 deletions(-) diff --git a/include/qemu/readline.h b/include/qemu/readline.h index c08cf74..e812583 100644 --- a/include/qemu/readline.h +++ b/include/qemu/readline.h @@ -59,5 +59,6 @@ ReadLineState *readline_init(ReadLinePrintfFunc *printf_func, ReadLineFlushFunc *flush_func, void *opaque, ReadLineCompletionFunc *completion_finder); +void readline_free(ReadLineState *rs); #endif /* READLINE_H */ diff --git a/monitor.c b/monitor.c index d682eee..b9da5e2 100644 --- a/monitor.c +++ b/monitor.c @@ -583,7 +583,7 @@ static void monitor_data_destroy(Monitor *mon) if (monitor_is_qmp(mon)) { json_message_parser_destroy(&mon->qmp.parser); } - g_free(mon->rs); + readline_free(mon->rs); QDECREF(mon->outbuf); qemu_mutex_destroy(&mon->out_lock); } diff --git a/util/readline.c b/util/readline.c index bbdee79..24ec839 100644 --- a/util/readline.c +++ b/util/readline.c @@ -500,12 +500,28 @@ const char *readline_get_history(ReadLineState *rs, unsigned int index) return rs->history[index]; } +void readline_free(ReadLineState *rs) +{ + int i; + + if (!rs) { + return; + } + for (i = 0; i < READLINE_MAX_CMDS; i++) { + g_free(rs->history[i]); + } + for (i = 0; i < READLINE_MAX_COMPLETIONS; i++) { + g_free(rs->completions[i]); + } + g_free(rs); +} + ReadLineState *readline_init(ReadLinePrintfFunc *printf_func, ReadLineFlushFunc *flush_func, void *opaque, ReadLineCompletionFunc *completion_finder) { - ReadLineState *rs = g_malloc0(sizeof(*rs)); + ReadLineState *rs = g_new0(ReadLineState, 1); rs->hist_entry = -1; rs->opaque = opaque; From patchwork Tue Jan 16 14:17:00 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: Paolo Bonzini X-Patchwork-Id: 861643 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Authentication-Results: ozlabs.org; spf=pass (mailfrom) smtp.mailfrom=nongnu.org (client-ip=2001:4830:134:3::11; helo=lists.gnu.org; envelope-from=qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org; receiver=) Authentication-Results: ozlabs.org; dkim=fail reason="signature verification failed" (2048-bit key; unprotected) header.d=gmail.com header.i=@gmail.com header.b="oSdxaXFf"; dkim-atps=neutral Received: from lists.gnu.org (lists.gnu.org [IPv6:2001:4830:134:3::11]) (using TLSv1 with cipher AES256-SHA (256/256 bits)) (No client certificate requested) by ozlabs.org (Postfix) with ESMTPS id 3zLY411XTlz9s7v for ; Wed, 17 Jan 2018 01:48:01 +1100 (AEDT) Received: from localhost ([::1]:39398 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1ebSWt-0001sz-7G for incoming@patchwork.ozlabs.org; Tue, 16 Jan 2018 09:47:59 -0500 Received: from eggs.gnu.org ([2001:4830:134:3::10]:50327) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1ebS42-00030X-Cp for qemu-devel@nongnu.org; Tue, 16 Jan 2018 09:18:16 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1ebS3w-0004c2-HG for qemu-devel@nongnu.org; Tue, 16 Jan 2018 09:18:10 -0500 Received: from mail-wr0-x241.google.com ([2a00:1450:400c:c0c::241]:43646) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1ebS3w-0004bN-Ag for qemu-devel@nongnu.org; Tue, 16 Jan 2018 09:18:04 -0500 Received: by mail-wr0-x241.google.com with SMTP id t16so1685439wrc.10 for ; Tue, 16 Jan 2018 06:18:04 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=sender:from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=Rz4SJ9g5edYJJhxBRiJ+nXbAHi2H1DsaGTsAjHPPY5g=; b=oSdxaXFfh8QQs1FheuhQpU7Jyfuc5Q5HQDBymj0P1hwwHYCfSoCKvKWhzdVBu1SZ7M /SxtI8n7kU9G3pvgH0rs7SDM79/pOLv3EpBapq0+cMAVzRUpB19M597ycFv+7DiW5iuN ehX30QfhiR+7F5riTifp066WS+gnzKr8b4bXf3Dx2KIhB4t1nhhdxsWMAcV0Ixf/1LnE yTCTQvyAXpYllANWc3QgG5COP9/kqaLJFQboKGlOd01lhxkGmYb4ZeoF30Z8nBMICASM A6HRu9wYKY0PtEZ3ZhK8jwNT7Lo1dmGAgJu22GsJlt9RgNBf3gQJlRxdtRa8nXnS7mJh RAxA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:sender:from:to:cc:subject:date:message-id :in-reply-to:references:mime-version:content-transfer-encoding; bh=Rz4SJ9g5edYJJhxBRiJ+nXbAHi2H1DsaGTsAjHPPY5g=; b=hnl1riZIslorGbvVn1T1+zC9IGwdE87+FO+lVG/rTZx8mDp4VjBOV4NSgpUiYerW3K KwOu3iE4jsql12QmHjVikEpZthV3gUOYNKiBuJbOVueO2tNxInDJD4MW32ONNak56nbb sVj4S7X3aXWCM4MKDtKEEYCe6VDQK2OekOSNm3ie05wqOQtLLwnEGcXtOFPOWb2fOwIM fQQFtzJeKdevDjFir3R54sAv1U+VJHyAEKjTtVs0hIxKfBSsIHrQKJf7rmMxXp/YuKch JTW1pL9wf6DOJ98Em9UumRJ05IFokbL2DxHeQ1dv1Y8gjsl4nBnYKBlH0SS8Lbr6scEo 0kxw== X-Gm-Message-State: AKwxytci3yhymEtiRsohX0E0oXHWCegtMYIH70Ziy4BqZvT8B5y8gWz3 BrsHd9/V/4OviqzaXvhzzSpz8ILW X-Google-Smtp-Source: ACJfBov11pvpdz3fv6lQGcgjR6ggMdI/uIXaUJEj9Ilcq7VYu6WJX09jgEuSLTv0fyXRpGexB2Om4g== X-Received: by 10.223.160.55 with SMTP id k52mr19315853wrk.5.1516112283021; Tue, 16 Jan 2018 06:18:03 -0800 (PST) Received: from 640k.lan (dynamic-adsl-78-12-229-84.clienti.tiscali.it. [78.12.229.84]) by smtp.gmail.com with ESMTPSA id u10sm1537758wrg.6.2018.01.16.06.18.01 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Tue, 16 Jan 2018 06:18:01 -0800 (PST) From: Paolo Bonzini To: qemu-devel@nongnu.org Date: Tue, 16 Jan 2018 15:17:00 +0100 Message-Id: <1516112253-14480-19-git-send-email-pbonzini@redhat.com> X-Mailer: git-send-email 1.8.3.1 In-Reply-To: <1516112253-14480-1-git-send-email-pbonzini@redhat.com> References: <1516112253-14480-1-git-send-email-pbonzini@redhat.com> MIME-Version: 1.0 X-detected-operating-system: by eggs.gnu.org: Genre and OS details not recognized. X-Received-From: 2a00:1450:400c:c0c::241 Subject: [Qemu-devel] [PULL 18/51] tests: fix migration-test leak 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: =?utf-8?q?Marc-Andr=C3=A9_Lureau?= Errors-To: qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org Sender: "Qemu-devel" From: Marc-André Lureau Direct leak of 12 byte(s) in 2 object(s) allocated from: #0 0x7f50d403c850 in malloc (/lib64/libasan.so.4+0xde850) #1 0x7f50d1ddf98f in vasprintf (/lib64/libc.so.6+0x8098f) Signed-off-by: Marc-André Lureau Reviewed-by: Dr. David Alan Gilbert Reviewed-by: Philippe Mathieu-Daudé Message-Id: <20180104160523.22995-12-marcandre.lureau@redhat.com> Signed-off-by: Paolo Bonzini --- tests/migration-test.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/tests/migration-test.c b/tests/migration-test.c index be598d3..799e24e 100644 --- a/tests/migration-test.c +++ b/tests/migration-test.c @@ -358,13 +358,14 @@ static void migrate_check_parameter(QTestState *who, const char *parameter, const char *value) { QDict *rsp, *rsp_return; - const char *result; + char *result; rsp = wait_command(who, "{ 'execute': 'query-migrate-parameters' }"); rsp_return = qdict_get_qdict(rsp, "return"); result = g_strdup_printf("%" PRId64, qdict_get_try_int(rsp_return, parameter, -1)); g_assert_cmpstr(result, ==, value); + g_free(result); QDECREF(rsp); } From patchwork Tue Jan 16 14:17:01 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: Paolo Bonzini X-Patchwork-Id: 861647 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Authentication-Results: ozlabs.org; spf=pass (mailfrom) smtp.mailfrom=nongnu.org (client-ip=2001:4830:134:3::11; helo=lists.gnu.org; envelope-from=qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org; receiver=) Authentication-Results: ozlabs.org; dkim=fail reason="signature verification failed" (2048-bit key; unprotected) header.d=gmail.com header.i=@gmail.com header.b="iPYHYuHf"; dkim-atps=neutral Received: from lists.gnu.org (lists.gnu.org [IPv6:2001:4830:134:3::11]) (using TLSv1 with cipher AES256-SHA (256/256 bits)) (No client certificate requested) by ozlabs.org (Postfix) with ESMTPS id 3zLY7m0Fjnz9sBd for ; Wed, 17 Jan 2018 01:51:16 +1100 (AEDT) Received: from localhost ([::1]:39416 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1ebSa2-0004W1-3t for incoming@patchwork.ozlabs.org; Tue, 16 Jan 2018 09:51:14 -0500 Received: from eggs.gnu.org ([2001:4830:134:3::10]:50441) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1ebS48-00035w-1B for qemu-devel@nongnu.org; Tue, 16 Jan 2018 09:18:18 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1ebS3y-0004dF-1F for qemu-devel@nongnu.org; Tue, 16 Jan 2018 09:18:15 -0500 Received: from mail-wr0-x22b.google.com ([2a00:1450:400c:c0c::22b]:42681) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1ebS3x-0004cZ-Or for qemu-devel@nongnu.org; Tue, 16 Jan 2018 09:18:05 -0500 Received: by mail-wr0-x22b.google.com with SMTP id e41so14999974wre.9 for ; Tue, 16 Jan 2018 06:18:05 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=sender:from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=NuiElajSzgeXVDt9AMv7McYSNQMQBvK/T6lpjB9QZKo=; b=iPYHYuHfTATF23X5rfJJA+Pxi4f3Wvre34LajE1mcFZfpXOUiCVF9zr2oZXejm7hWR X5lM0VjpfWs37aCSkRRdbHxTSvySyXki5q+rZ+gGC5byXWVBToko5sIGLYnpGrD2kXJn upWW1fthJzqtNdq/5NaBP8EOXolPsMeb1UEReHhiwqWd7tnRr2vfDen8F0QbMCQHvvL2 vv29hW/nsEMZ3g8l1tgvqMeZo66X9+9CHbl7ObzSUC9OgH88wh4i6y6Ib1xx8Pn5Br0d 3X4poR7N2J0jj9Zuf6P78sqWPr4USyBo3hcF0Yym16iZRvcwgjgszAiyiZ7/uesFdU+U JRkw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:sender:from:to:cc:subject:date:message-id :in-reply-to:references:mime-version:content-transfer-encoding; bh=NuiElajSzgeXVDt9AMv7McYSNQMQBvK/T6lpjB9QZKo=; b=nZyVW4kyX4Y5F1GeOXy2u1Fh4qYNB7rrzhLLCzJhEYpPCnFzVbVcJRuP8YomkfIsQb RJrmBrJPkoDbBtBekqLoVmerjKYWRykoRNSXPp1+NW3NZUHiRgzrkCL4b4phQgsWnUGE TjXnaHd49SCQJxRa1gPPcKpsN6Z//IGAHI0t5KX5pWNar/MxRn2Ca+F5GxnS2bkhk3r7 xJk99hoUBIVtOJdPu2w5gicCzv9n+pga84nWf7J5agSsGijnEtxh3COMTlmkAAOYM9ea WzMLlM2E+/hmCu08x4mqGgi0wJN2Ciq/cQ1kHOCT8hB3Ow+taKDZ8hc2cB+/SCypcuHK YfVw== X-Gm-Message-State: AKwxytcBrFHW9ATYHJ4Js9qrfGVQGjO+4PzgBCu+PQoDww8JN6PbMiK1 2MMHzH8Go7+n1F1fvYrjbzXLN+v1 X-Google-Smtp-Source: ACJfBosK8uUgyQqKSLcgh9Auv/KG8g0r75/mK4g2JSTe8IOw7qztf6NPgu6W+gT83qsqIyz5HNxYlw== X-Received: by 10.223.152.109 with SMTP id v100mr18712413wrb.222.1516112284201; Tue, 16 Jan 2018 06:18:04 -0800 (PST) Received: from 640k.lan (dynamic-adsl-78-12-229-84.clienti.tiscali.it. [78.12.229.84]) by smtp.gmail.com with ESMTPSA id u10sm1537758wrg.6.2018.01.16.06.18.03 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Tue, 16 Jan 2018 06:18:03 -0800 (PST) From: Paolo Bonzini To: qemu-devel@nongnu.org Date: Tue, 16 Jan 2018 15:17:01 +0100 Message-Id: <1516112253-14480-20-git-send-email-pbonzini@redhat.com> X-Mailer: git-send-email 1.8.3.1 In-Reply-To: <1516112253-14480-1-git-send-email-pbonzini@redhat.com> References: <1516112253-14480-1-git-send-email-pbonzini@redhat.com> MIME-Version: 1.0 X-detected-operating-system: by eggs.gnu.org: Genre and OS details not recognized. X-Received-From: 2a00:1450:400c:c0c::22b Subject: [Qemu-devel] [PULL 19/51] crypto: fix stack-buffer-overflow error 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: =?utf-8?q?Marc-Andr=C3=A9_Lureau?= Errors-To: qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org Sender: "Qemu-devel" From: Marc-André Lureau ASAN complains about: ==8856==ERROR: AddressSanitizer: stack-buffer-overflow on address 0x7ffd8a1fe168 at pc 0x561136cb4451 bp 0x7ffd8a1fe130 sp 0x7ffd8a1fd8e0 READ of size 16 at 0x7ffd8a1fe168 thread T0 #0 0x561136cb4450 in __asan_memcpy (/home/elmarco/src/qq/build/tests/test-crypto-ivgen+0x110450) #1 0x561136d2a6a7 in qcrypto_ivgen_essiv_calculate /home/elmarco/src/qq/crypto/ivgen-essiv.c:83:5 #2 0x561136d29af8 in qcrypto_ivgen_calculate /home/elmarco/src/qq/crypto/ivgen.c:72:12 #3 0x561136d07c8e in test_ivgen /home/elmarco/src/qq/tests/test-crypto-ivgen.c:148:5 #4 0x7f77772c3b04 in test_case_run /home/elmarco/src/gnome/glib/builddir/../glib/gtestutils.c:2237 #5 0x7f77772c3ec4 in g_test_run_suite_internal /home/elmarco/src/gnome/glib/builddir/../glib/gtestutils.c:2321 #6 0x7f77772c3f6d in g_test_run_suite_internal /home/elmarco/src/gnome/glib/builddir/../glib/gtestutils.c:2333 #7 0x7f77772c3f6d in g_test_run_suite_internal /home/elmarco/src/gnome/glib/builddir/../glib/gtestutils.c:2333 #8 0x7f77772c3f6d in g_test_run_suite_internal /home/elmarco/src/gnome/glib/builddir/../glib/gtestutils.c:2333 #9 0x7f77772c4184 in g_test_run_suite /home/elmarco/src/gnome/glib/builddir/../glib/gtestutils.c:2408 #10 0x7f77772c2e0d in g_test_run /home/elmarco/src/gnome/glib/builddir/../glib/gtestutils.c:1674 #11 0x561136d0799b in main /home/elmarco/src/qq/tests/test-crypto-ivgen.c:173:12 #12 0x7f77756e6039 in __libc_start_main (/lib64/libc.so.6+0x21039) #13 0x561136c13d89 in _start (/home/elmarco/src/qq/build/tests/test-crypto-ivgen+0x6fd89) Address 0x7ffd8a1fe168 is located in stack of thread T0 at offset 40 in frame #0 0x561136d2a40f in qcrypto_ivgen_essiv_calculate /home/elmarco/src/qq/crypto/ivgen-essiv.c:76 This frame has 1 object(s): [32, 40) 'sector.addr' <== Memory access at offset 40 overflows this variable HINT: this may be a false positive if your program uses some custom stack unwind mechanism or swapcontext (longjmp and C++ exceptions *are* supported) SUMMARY: AddressSanitizer: stack-buffer-overflow (/home/elmarco/src/qq/build/tests/test-crypto-ivgen+0x110450) in __asan_memcpy Shadow bytes around the buggy address: 0x100031437bd0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 0x100031437be0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 0x100031437bf0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 0x100031437c00: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 0x100031437c10: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 =>0x100031437c20: 00 00 00 00 00 00 00 00 f1 f1 f1 f1 00[f3]f3 f3 0x100031437c30: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 0x100031437c40: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 0x100031437c50: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 0x100031437c60: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 0x100031437c70: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 Shadow byte legend (one shadow byte represents 8 application bytes): Addressable: 00 Partially addressable: 01 02 03 04 05 06 07 Heap left redzone: fa Freed heap region: fd Stack left redzone: f1 Stack mid redzone: f2 Stack right redzone: f3 Stack after return: f5 Stack use after scope: f8 Global redzone: f9 Global init order: f6 Poisoned by user: f7 Container overflow: fc Array cookie: ac Intra object redzone: bb ASan internal: fe Left alloca redzone: ca Right alloca redzone: cb It looks like the rest of the code copes with ndata being larger than sizeof(sector), so limit the memcpy() range. Signed-off-by: Marc-André Lureau Reviewed-by: Daniel P. Berrange Message-Id: <20180104160523.22995-13-marcandre.lureau@redhat.com> Tested-by: Thomas Huth Reviewed-by: Thomas Huth Signed-off-by: Paolo Bonzini --- crypto/ivgen-essiv.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/crypto/ivgen-essiv.c b/crypto/ivgen-essiv.c index cba20bd..ad4d926 100644 --- a/crypto/ivgen-essiv.c +++ b/crypto/ivgen-essiv.c @@ -79,7 +79,7 @@ static int qcrypto_ivgen_essiv_calculate(QCryptoIVGen *ivgen, uint8_t *data = g_new(uint8_t, ndata); sector = cpu_to_le64(sector); - memcpy(data, (uint8_t *)§or, ndata); + memcpy(data, (uint8_t *)§or, MIN(sizeof(sector), ndata)); if (sizeof(sector) < ndata) { memset(data + sizeof(sector), 0, ndata - sizeof(sector)); } From patchwork Tue Jan 16 14:17:02 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: Paolo Bonzini X-Patchwork-Id: 861635 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Authentication-Results: ozlabs.org; spf=pass (mailfrom) smtp.mailfrom=nongnu.org (client-ip=2001:4830:134:3::11; helo=lists.gnu.org; envelope-from=qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org; receiver=) Authentication-Results: ozlabs.org; dkim=fail reason="signature verification failed" (2048-bit key; unprotected) header.d=gmail.com header.i=@gmail.com header.b="UWkXY7CN"; dkim-atps=neutral Received: from lists.gnu.org (lists.gnu.org [IPv6:2001:4830:134:3::11]) (using TLSv1 with cipher AES256-SHA (256/256 bits)) (No client certificate requested) by ozlabs.org (Postfix) with ESMTPS id 3zLXxv2v8qz9s7n for ; Wed, 17 Jan 2018 01:42:43 +1100 (AEDT) Received: from localhost ([::1]:39359 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1ebSRl-000656-CY for incoming@patchwork.ozlabs.org; Tue, 16 Jan 2018 09:42:41 -0500 Received: from eggs.gnu.org ([2001:4830:134:3::10]:50349) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1ebS43-00031a-Nt for qemu-devel@nongnu.org; Tue, 16 Jan 2018 09:18:17 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1ebS3z-0004dt-Bz for qemu-devel@nongnu.org; Tue, 16 Jan 2018 09:18:11 -0500 Received: from mail-wr0-x234.google.com ([2a00:1450:400c:c0c::234]:44280) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1ebS3z-0004da-4Z for qemu-devel@nongnu.org; Tue, 16 Jan 2018 09:18:07 -0500 Received: by mail-wr0-x234.google.com with SMTP id w50so15321962wrc.11 for ; Tue, 16 Jan 2018 06:18:07 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=sender:from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=u/XEinF2UPj6vJ+xaHPulxx9JcoWOEooHQwRQ8Cr5DU=; b=UWkXY7CNFV9vVYlRpSyhFgQ5/fk8Tq/tG8wrTW5AsF/iLLB5poMwH3gEpv70Su3rOr kGmbskuKvuh0imxNNy4ZVnh1Dvalng6HPzUNt4uJ6BG4ltMzr8iFwnTQAvHvAZ65s1oo BJmeHQu3p1ItGN5x7pgO40AzAdnR5OjbgW5joob9Eg9EJhM/3cmEpl7JhzyX8C162PUs AW0ji9ApFKxpnhHt4oWm3Uf2dgRPd/fZQG0bNVVRvK9t8FDMUk9DrXpWSjRjiKZ6HeFQ QTbLrMH26FLSabPnCM5zNA5EYWEUisPSev6CR4sPSpMQJwAOnwQO5xI1oqp/RLvlKPj4 bpOg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:sender:from:to:cc:subject:date:message-id :in-reply-to:references:mime-version:content-transfer-encoding; bh=u/XEinF2UPj6vJ+xaHPulxx9JcoWOEooHQwRQ8Cr5DU=; b=H2TO0K/eef49++OZKecrAAmLRdV8DWWZOlCOh3QCjwBA9evRoLbYpAZ+IkiAPqemkq hQ1M9BeHNGOz7SK5l+p0GiqLLGYR0H3c5NlYtebuoHD/DdhxJ51BA02j2NO6edOSquTE YwkAVBFIcvAgF4AhUPFoyqml8eCI49szYk/r0MHT/Q19oRMF+d+A+iyM0UDMkhw3EbIM N65Do3xF8kGt2WNKwLPvI0OeZTwx6BzOq5jGbPUbRlowSz+7zd4tKbhgIoqZjvj7ONAR gQkqQKL7jR5aId0nMhsy4lYcOOp2XL6rWqnuJXmhG0GIGu07BUtJDNpBeBjb/L5WTDSy P3wg== X-Gm-Message-State: AKwxytcMMIc+w3XYiWL/Txz7xAbbF9WZ7OoCRWGpB6VDMSa0YQcgWX1G m/+NlBd4cw3S8Ll/KJBeYqS7Tggw X-Google-Smtp-Source: ACJfBosCDNxy3O1Cu1Cu+1CI5IJVTDUWrzjBxoIXtfuF96zaRENb+orFwxGXmmD43p7GWOkoMblFgg== X-Received: by 10.223.164.22 with SMTP id d22mr16826240wra.186.1516112285702; Tue, 16 Jan 2018 06:18:05 -0800 (PST) Received: from 640k.lan (dynamic-adsl-78-12-229-84.clienti.tiscali.it. [78.12.229.84]) by smtp.gmail.com with ESMTPSA id u10sm1537758wrg.6.2018.01.16.06.18.04 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Tue, 16 Jan 2018 06:18:04 -0800 (PST) From: Paolo Bonzini To: qemu-devel@nongnu.org Date: Tue, 16 Jan 2018 15:17:02 +0100 Message-Id: <1516112253-14480-21-git-send-email-pbonzini@redhat.com> X-Mailer: git-send-email 1.8.3.1 In-Reply-To: <1516112253-14480-1-git-send-email-pbonzini@redhat.com> References: <1516112253-14480-1-git-send-email-pbonzini@redhat.com> MIME-Version: 1.0 X-detected-operating-system: by eggs.gnu.org: Genre and OS details not recognized. X-Received-From: 2a00:1450:400c:c0c::234 Subject: [Qemu-devel] [PULL 20/51] qemu-config: fix leak in query-command-line-options 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: =?utf-8?q?Marc-Andr=C3=A9_Lureau?= Errors-To: qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org Sender: "Qemu-devel" From: Marc-André Lureau Direct leak of 160 byte(s) in 4 object(s) allocated from: #0 0x55ed7678cda8 in calloc (/home/elmarco/src/qq/build/x86_64-softmmu/qemu-system-x86_64+0x797da8) #1 0x7f3f5e725f75 in g_malloc0 /home/elmarco/src/gnome/glib/builddir/../glib/gmem.c:124 #2 0x55ed778aa3a7 in query_option_descs /home/elmarco/src/qq/util/qemu-config.c:60:16 #3 0x55ed778aa307 in get_drive_infolist /home/elmarco/src/qq/util/qemu-config.c:140:19 #4 0x55ed778a9f40 in qmp_query_command_line_options /home/elmarco/src/qq/util/qemu-config.c:254:36 #5 0x55ed76d4868c in qmp_marshal_query_command_line_options /home/elmarco/src/qq/build/qmp-marshal.c:3078:14 #6 0x55ed77855dd5 in do_qmp_dispatch /home/elmarco/src/qq/qapi/qmp-dispatch.c:104:5 #7 0x55ed778558cc in qmp_dispatch /home/elmarco/src/qq/qapi/qmp-dispatch.c:131:11 #8 0x55ed768b592f in handle_qmp_command /home/elmarco/src/qq/monitor.c:3840:11 #9 0x55ed7786ccfe in json_message_process_token /home/elmarco/src/qq/qobject/json-streamer.c:105:5 #10 0x55ed778fe37c in json_lexer_feed_char /home/elmarco/src/qq/qobject/json-lexer.c:323:13 #11 0x55ed778fdde6 in json_lexer_feed /home/elmarco/src/qq/qobject/json-lexer.c:373:15 #12 0x55ed7786cd83 in json_message_parser_feed /home/elmarco/src/qq/qobject/json-streamer.c:124:12 #13 0x55ed768b559e in monitor_qmp_read /home/elmarco/src/qq/monitor.c:3882:5 #14 0x55ed77714f29 in qemu_chr_be_write_impl /home/elmarco/src/qq/chardev/char.c:167:9 #15 0x55ed77714fde in qemu_chr_be_write /home/elmarco/src/qq/chardev/char.c:179:9 #16 0x55ed7772ffad in tcp_chr_read /home/elmarco/src/qq/chardev/char-socket.c:440:13 #17 0x55ed7777113b in qio_channel_fd_source_dispatch /home/elmarco/src/qq/io/channel-watch.c:84:12 #18 0x7f3f5e71d90b in g_main_dispatch /home/elmarco/src/gnome/glib/builddir/../glib/gmain.c:3182 #19 0x7f3f5e71e7ac in g_main_context_dispatch /home/elmarco/src/gnome/glib/builddir/../glib/gmain.c:3847 #20 0x55ed77886ffc in glib_pollfds_poll /home/elmarco/src/qq/util/main-loop.c:214:9 #21 0x55ed778865fd in os_host_main_loop_wait /home/elmarco/src/qq/util/main-loop.c:261:5 #22 0x55ed77886222 in main_loop_wait /home/elmarco/src/qq/util/main-loop.c:515:11 #23 0x55ed76d2a4df in main_loop /home/elmarco/src/qq/vl.c:1995:9 #24 0x55ed76d1cb4a in main /home/elmarco/src/qq/vl.c:4914:5 #25 0x7f3f555f6039 in __libc_start_main (/lib64/libc.so.6+0x21039) Signed-off-by: Marc-André Lureau Reviewed-by: Eric Blake Message-Id: <20180104160523.22995-14-marcandre.lureau@redhat.com> Signed-off-by: Paolo Bonzini --- util/qemu-config.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/util/qemu-config.c b/util/qemu-config.c index 99b0e46..029fec5 100644 --- a/util/qemu-config.c +++ b/util/qemu-config.c @@ -105,7 +105,8 @@ static void cleanup_infolist(CommandLineParameterInfoList *head) if (!strcmp(pre_entry->value->name, cur->next->value->name)) { del_entry = cur->next; cur->next = cur->next->next; - g_free(del_entry); + del_entry->next = NULL; + qapi_free_CommandLineParameterInfoList(del_entry); break; } pre_entry = pre_entry->next; From patchwork Tue Jan 16 14:17:03 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: Paolo Bonzini X-Patchwork-Id: 861644 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Authentication-Results: ozlabs.org; spf=pass (mailfrom) smtp.mailfrom=nongnu.org (client-ip=2001:4830:134:3::11; helo=lists.gnu.org; envelope-from=qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org; receiver=) Authentication-Results: ozlabs.org; dkim=fail reason="signature verification failed" (2048-bit key; unprotected) header.d=gmail.com header.i=@gmail.com header.b="pAwK8Rs4"; dkim-atps=neutral Received: from lists.gnu.org (lists.gnu.org [IPv6:2001:4830:134:3::11]) (using TLSv1 with cipher AES256-SHA (256/256 bits)) (No client certificate requested) by ozlabs.org (Postfix) with ESMTPS id 3zLY5W6MKdz9s7v for ; Wed, 17 Jan 2018 01:49:19 +1100 (AEDT) Received: from localhost ([::1]:39402 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1ebSY9-0002rr-TE for incoming@patchwork.ozlabs.org; Tue, 16 Jan 2018 09:49:17 -0500 Received: from eggs.gnu.org ([2001:4830:134:3::10]:50402) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1ebS46-00034W-NM for qemu-devel@nongnu.org; Tue, 16 Jan 2018 09:18:20 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1ebS40-0004eV-QR for qemu-devel@nongnu.org; Tue, 16 Jan 2018 09:18:14 -0500 Received: from mail-wr0-x22c.google.com ([2a00:1450:400c:c0c::22c]:32902) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1ebS40-0004eE-KF for qemu-devel@nongnu.org; Tue, 16 Jan 2018 09:18:08 -0500 Received: by mail-wr0-x22c.google.com with SMTP id p6so15371971wrd.0 for ; Tue, 16 Jan 2018 06:18:08 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=sender:from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=7z5QXVDNJQVx6GdUCWuSTf1rtutT+mrE5s7hfNyC0o4=; b=pAwK8Rs4Bdb4rAiwgim0ZhT8m09q5o6xxLZTLH2d+K2B3kAby9PN81B0WSnhQdrHTl catXEO06KBwIUeVmvw+0LIi4H7Pt/nEjj5tl7XH5JAh731GfjJzYbfVnJ3P1mhBwtOzw OmBsdURYRVMmG+k9ZwImoHj6o9wbYQ9QE1uZf54O2d5eefsGCCwy18rBnf4hoQQ0wsr2 zQ0pSUn82oOulrWhw0l+BMOG/IDSWLpfYgBhi7mecys02vpkivoMUIjo8VOCYa0Xy7Q3 Fe7UxgKmZ7ASBQFIb8b3ptKXtxtd+TopG4H0GZZ1ai4wQ7ELLU/EZu2fCxmRXVcZRJLU soBw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:sender:from:to:cc:subject:date:message-id :in-reply-to:references:mime-version:content-transfer-encoding; bh=7z5QXVDNJQVx6GdUCWuSTf1rtutT+mrE5s7hfNyC0o4=; b=fi73jH+wjVCHCwVFXj+zHI6Dakci8iE45FqcIjJxgQZs96R00W47tsZbnol/F/TlX2 rrAY0Suyh4a7aWFE3+v6TvQDnP+GyoDs0eQOTk6wDKWN1++x1p59ZE17hbl2OSGggAMP OD4hELVChvaSGeQygzPsN+UOi+9BEibwh4VdZECnkJu5Mt/UwI5mE5KqB1I2O14jlJGd vjv3GOcBnCiAtCP2Zdo6ps1YqXossm6HN+Mnq1/VkPcri2Y3xV7Quui8DG3qM82LUNSN oBtj6TwH/SmGtUsDn/Mgl7uLSOqZKCkYlVcFHtSWQajdDqdBQFgcRcyH7YEAgrDW9j8U ZhVw== X-Gm-Message-State: AKwxytfRie613sFwR2DL8cqYf3CxLFfgnUszgg9pKFOu/uaoIXTtIpi0 V9i1xijYUd22hHOcWrX+6XE0rY7J X-Google-Smtp-Source: ACJfBov9BFC7RG7ZdeV2QqqYWSgiMr1I6c5up5qjTfwlRNM0KERPtXhhawMjFIJKrATurcmpYnzMfw== X-Received: by 10.223.135.59 with SMTP id a56mr16843516wra.121.1516112287290; Tue, 16 Jan 2018 06:18:07 -0800 (PST) Received: from 640k.lan (dynamic-adsl-78-12-229-84.clienti.tiscali.it. [78.12.229.84]) by smtp.gmail.com with ESMTPSA id u10sm1537758wrg.6.2018.01.16.06.18.05 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Tue, 16 Jan 2018 06:18:06 -0800 (PST) From: Paolo Bonzini To: qemu-devel@nongnu.org Date: Tue, 16 Jan 2018 15:17:03 +0100 Message-Id: <1516112253-14480-22-git-send-email-pbonzini@redhat.com> X-Mailer: git-send-email 1.8.3.1 In-Reply-To: <1516112253-14480-1-git-send-email-pbonzini@redhat.com> References: <1516112253-14480-1-git-send-email-pbonzini@redhat.com> MIME-Version: 1.0 X-detected-operating-system: by eggs.gnu.org: Genre and OS details not recognized. X-Received-From: 2a00:1450:400c:c0c::22c Subject: [Qemu-devel] [PULL 21/51] tests: fix qmp-test leak 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: =?utf-8?q?Marc-Andr=C3=A9_Lureau?= Errors-To: qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org Sender: "Qemu-devel" From: Marc-André Lureau Direct leak of 913 byte(s) in 43 object(s) allocated from: #0 0x55880a15df60 in __interceptor_malloc (/home/elmarco/src/qq/build/tests/qmp-test+0x110f60) #1 0x7f3f20fd098f in _IO_vasprintf (/lib64/libc.so.6+0x8098f) Signed-off-by: Marc-André Lureau Reviewed-by: Markus Armbruster Reviewed-by: Philippe Mathieu-Daudé Message-Id: <20180104160523.22995-15-marcandre.lureau@redhat.com> Signed-off-by: Paolo Bonzini --- tests/qmp-test.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/tests/qmp-test.c b/tests/qmp-test.c index c5a5c10..36feb22 100644 --- a/tests/qmp-test.c +++ b/tests/qmp-test.c @@ -271,7 +271,7 @@ static void add_query_tests(QmpSchema *schema) { SchemaInfoList *tail; SchemaInfo *si, *arg_type, *ret_type; - const char *test_name; + char *test_name; /* Test the query-like commands */ for (tail = schema->list; tail; tail = tail->next) { @@ -297,6 +297,7 @@ static void add_query_tests(QmpSchema *schema) test_name = g_strdup_printf("qmp/%s", si->name); qtest_add_data_func(test_name, si->name, test_query); + g_free(test_name); } } From patchwork Tue Jan 16 14:17:04 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: Paolo Bonzini X-Patchwork-Id: 861641 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Authentication-Results: ozlabs.org; spf=pass (mailfrom) smtp.mailfrom=nongnu.org (client-ip=2001:4830:134:3::11; helo=lists.gnu.org; envelope-from=qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org; receiver=) Authentication-Results: ozlabs.org; dkim=fail reason="signature verification failed" (2048-bit key; unprotected) header.d=gmail.com header.i=@gmail.com header.b="SC4lU0um"; dkim-atps=neutral Received: from lists.gnu.org (lists.gnu.org [IPv6:2001:4830:134:3::11]) (using TLSv1 with cipher AES256-SHA (256/256 bits)) (No client certificate requested) by ozlabs.org (Postfix) with ESMTPS id 3zLY3V5Bmdz9s7v for ; Wed, 17 Jan 2018 01:47:34 +1100 (AEDT) Received: from localhost ([::1]:39393 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1ebSWS-0001Xi-Gj for incoming@patchwork.ozlabs.org; Tue, 16 Jan 2018 09:47:32 -0500 Received: from eggs.gnu.org ([2001:4830:134:3::10]:50399) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1ebS46-00034R-Lu for qemu-devel@nongnu.org; Tue, 16 Jan 2018 09:18:22 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1ebS41-0004f0-TJ for qemu-devel@nongnu.org; Tue, 16 Jan 2018 09:18:14 -0500 Received: from mail-wm0-x22a.google.com ([2a00:1450:400c:c09::22a]:47002) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1ebS41-0004eg-M8 for qemu-devel@nongnu.org; Tue, 16 Jan 2018 09:18:09 -0500 Received: by mail-wm0-x22a.google.com with SMTP id 143so8638785wma.5 for ; Tue, 16 Jan 2018 06:18:09 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=sender:from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=vOMFsB1fKlCZyX/LQoK1dmFDpEjJGdrnUWOa+sk5HGw=; b=SC4lU0umrW/AXG3Vc0rlhpC/oahxfMtbIK+PVhw6xv13xUEcjVCxvRWxkxIpRgwUTZ bxMCMVWNucRQLQPFKln/XG28LmsbZUscZM0K3sHK8QQI01Pe3rlqgFI5ivYRHFpFQ7oG cHHxbSF4gYvqusD7uPthbynnoYXhxV9jrZ5k/hOxijE29x7AU6QjCfSdY9e3FSGd+nye ZDJZM8aiH93SA5hVRAXuxMUpT9vrW2RllXQBXAaorti1DTJcOBsQIzAUWarI1uaIoOZE YDJTl2OoQCK6N2u2td+8A0intvJ15BS16OFWto2FaSArHVLA7WN4oB1JYPSekf+f8ceA xhWg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:sender:from:to:cc:subject:date:message-id :in-reply-to:references:mime-version:content-transfer-encoding; bh=vOMFsB1fKlCZyX/LQoK1dmFDpEjJGdrnUWOa+sk5HGw=; b=WdKoG3MWgVKntv890MaF+m2tazaZtN65rXX1Pt6On04cx5EUVRrxtr9Ofky+JCRi+i 6ATCHMIgv4IG+01/jjA5KFr737ohiygH2ydfrC5nb6L65Lb4zDLlPTqpLEHV6RfJRSM6 VykJj7AVS0WFXNRRMMv0ZJfiXiOWvRIPODAOrARJn0iqv1/gz8A5rj9xp4WLI/lBoFY1 3tL6RJ768aJeqbsTH83jYsnTbXYsD1xeQniaW7GTDtJjpaVl6eS13mhyLwYJcewZr24v QEkhA6PN7oDXLJgPcsv1ocH5udMrAD3XISczNs5sUhNpMxuDWqtLUWr2CNNc5eO3gxf7 JnSw== X-Gm-Message-State: AKwxyte4r63paUzPfqEw1vgrPDaQq/cakEK+0T4+7Ux7rFLdZSQBtwXd 5KbO/BUsE4OXh3AqflGfljiUBiQj X-Google-Smtp-Source: ACJfBosgXOQ4dyU2lu2zmq1uCqhd0XXx6Mgqj8bfW0BmQ2MHJpHG+noPdBj8VNRNW9k+9Z5MtAubnA== X-Received: by 10.28.143.204 with SMTP id r195mr14097957wmd.51.1516112288346; Tue, 16 Jan 2018 06:18:08 -0800 (PST) Received: from 640k.lan (dynamic-adsl-78-12-229-84.clienti.tiscali.it. [78.12.229.84]) by smtp.gmail.com with ESMTPSA id u10sm1537758wrg.6.2018.01.16.06.18.07 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Tue, 16 Jan 2018 06:18:07 -0800 (PST) From: Paolo Bonzini To: qemu-devel@nongnu.org Date: Tue, 16 Jan 2018 15:17:04 +0100 Message-Id: <1516112253-14480-23-git-send-email-pbonzini@redhat.com> X-Mailer: git-send-email 1.8.3.1 In-Reply-To: <1516112253-14480-1-git-send-email-pbonzini@redhat.com> References: <1516112253-14480-1-git-send-email-pbonzini@redhat.com> MIME-Version: 1.0 X-detected-operating-system: by eggs.gnu.org: Genre and OS details not recognized. X-Received-From: 2a00:1450:400c:c09::22a Subject: [Qemu-devel] [PULL 22/51] tests: fix coroutine leak in /basic/entered 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: =?utf-8?q?Marc-Andr=C3=A9_Lureau?= Errors-To: qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org Sender: "Qemu-devel" From: Marc-André Lureau The coroutine is not finished by the time the test ends, resulting in ASAN warning: ==7005==ERROR: LeakSanitizer: detected memory leaks Direct leak of 312 byte(s) in 1 object(s) allocated from: #0 0x7fd35290fa38 in __interceptor_calloc (/lib64/libasan.so.4+0xdea38) #1 0x7fd3506c5f75 in g_malloc0 ../glib/gmem.c:124 #2 0x55994af03e47 in qemu_coroutine_new /home/elmarco/src/qemu/util/coroutine-ucontext.c:144 #3 0x55994aefed99 in qemu_coroutine_create /home/elmarco/src/qemu/util/qemu-coroutine.c:76 #4 0x55994ac1eb50 in verify_entered_step_1 /home/elmarco/src/qemu/tests/test-coroutine.c:80 #5 0x55994af03c75 in coroutine_trampoline /home/elmarco/src/qemu/util/coroutine-ucontext.c:119 #6 0x7fd34ec02bef (/lib64/libc.so.6+0x50bef) Do not yield() to let the coroutine terminate. Signed-off-by: Marc-André Lureau Reviewed-by: Stefan Hajnoczi Message-Id: <20180104160523.22995-17-marcandre.lureau@redhat.com> Signed-off-by: Paolo Bonzini --- tests/test-coroutine.c | 1 - 1 file changed, 1 deletion(-) diff --git a/tests/test-coroutine.c b/tests/test-coroutine.c index abd97c2..76c6461 100644 --- a/tests/test-coroutine.c +++ b/tests/test-coroutine.c @@ -67,7 +67,6 @@ static void coroutine_fn verify_entered_step_2(void *opaque) /* Once more to check it still works after yielding */ g_assert(qemu_coroutine_entered(caller)); g_assert(qemu_coroutine_entered(qemu_coroutine_self())); - qemu_coroutine_yield(); } static void coroutine_fn verify_entered_step_1(void *opaque) From patchwork Tue Jan 16 14:17:05 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: Paolo Bonzini X-Patchwork-Id: 861642 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Authentication-Results: ozlabs.org; spf=pass (mailfrom) smtp.mailfrom=nongnu.org (client-ip=2001:4830:134:3::11; helo=lists.gnu.org; envelope-from=qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org; receiver=) Authentication-Results: ozlabs.org; dkim=fail reason="signature verification failed" (2048-bit key; unprotected) header.d=gmail.com header.i=@gmail.com header.b="LYoQfIag"; dkim-atps=neutral Received: from lists.gnu.org (lists.gnu.org [IPv6:2001:4830:134:3::11]) (using TLSv1 with cipher AES256-SHA (256/256 bits)) (No client certificate requested) by ozlabs.org (Postfix) with ESMTPS id 3zLY3t55zGz9s7v for ; Wed, 17 Jan 2018 01:47:54 +1100 (AEDT) Received: from localhost ([::1]:39396 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1ebSWm-0001me-Nx for incoming@patchwork.ozlabs.org; Tue, 16 Jan 2018 09:47:52 -0500 Received: from eggs.gnu.org ([2001:4830:134:3::10]:50365) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1ebS44-000328-ED for qemu-devel@nongnu.org; Tue, 16 Jan 2018 09:18:18 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1ebS43-0004hK-Fl for qemu-devel@nongnu.org; Tue, 16 Jan 2018 09:18:12 -0500 Received: from mail-wm0-x244.google.com ([2a00:1450:400c:c09::244]:45368) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1ebS43-0004g8-9a for qemu-devel@nongnu.org; Tue, 16 Jan 2018 09:18:11 -0500 Received: by mail-wm0-x244.google.com with SMTP id i186so8657122wmi.4 for ; Tue, 16 Jan 2018 06:18:11 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=sender:from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=eP8gLKdjr9LJG1Q7q7ujTcqRzIXaqHbCyeQ33t1MCeE=; b=LYoQfIagIeAdciPEKRA4cShYqEacr0kLuTpVaMkw1TJ8qUuKOHvLEeqZiVzz53Effc EkW0gxDPrrxbmBRIoh/6iuRTCOQN7l0g8IJ1VYS6ioYbB2XWryjajaYUZ2o4SvNwg9Ij h5H2tm2ujBbWgX5hwf3MgG0jCLkDXA22YuDbiHiSXd8qfdJHMaZemlsrCUqeISUB6CZ8 fHkzPHZLXMXljzDjHmUGMa1jR+iGo09Le4jVkEh0SAQa4cvy8A4hs5DmX2RGgLdLA12C c6L8R+Rrk/bgymV8ok0nLOdSKfjSxrdI+BeQAkhOWqijJuaee2GgTB6++jUoTaMKyWbe yCzw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:sender:from:to:cc:subject:date:message-id :in-reply-to:references:mime-version:content-transfer-encoding; bh=eP8gLKdjr9LJG1Q7q7ujTcqRzIXaqHbCyeQ33t1MCeE=; b=GN2bs0nn7q16jR4nzau9VA8ySe7kW94eloCsXfIBqB9/cnM+djmRJamR8tbs8aO9IM eLr+ExwhGrhZ/Z5MIWPpCshVN5GL2t0F55zsQWeu1LVnl6PFe4iN4hQASZsyfhmyhAaS xF6oTN4DriCdMxurlnIT0YsABeF/5c4Ugi8H7VGeP2YiArpxgmYa9wX1pPtlFT4IWlaY 9UadEGy7Oqxwx3rkxmdy5D15sVLK+PumfX2Wu9vX/9A7bmoAKtoTMEiQk0HvFS04Wk+0 dNp8g9jYqDpHEPFn/AXRlijQqXNytFvn3nn+rTBIklYLYbr50XdKBKpRqrOVw+8otspk 2m3w== X-Gm-Message-State: AKwxytdCj1h6awpNZ11ras2jakhFA75lj7txdWYdWheOBR6fAJuuwPlX MYpeOJnmo1/y1rcF9tvLKx6oey8j X-Google-Smtp-Source: ACJfBov1odzacCDFYOcSkzaWnN04mxBuEon7dZ+r1tWWdwDC4NAH2vn4edHlpjV57Pzn14OamqcGGw== X-Received: by 10.28.148.150 with SMTP id w144mr13239485wmd.0.1516112289693; Tue, 16 Jan 2018 06:18:09 -0800 (PST) Received: from 640k.lan (dynamic-adsl-78-12-229-84.clienti.tiscali.it. [78.12.229.84]) by smtp.gmail.com with ESMTPSA id u10sm1537758wrg.6.2018.01.16.06.18.08 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Tue, 16 Jan 2018 06:18:08 -0800 (PST) From: Paolo Bonzini To: qemu-devel@nongnu.org Date: Tue, 16 Jan 2018 15:17:05 +0100 Message-Id: <1516112253-14480-24-git-send-email-pbonzini@redhat.com> X-Mailer: git-send-email 1.8.3.1 In-Reply-To: <1516112253-14480-1-git-send-email-pbonzini@redhat.com> References: <1516112253-14480-1-git-send-email-pbonzini@redhat.com> MIME-Version: 1.0 X-detected-operating-system: by eggs.gnu.org: Genre and OS details not recognized. X-Received-From: 2a00:1450:400c:c09::244 Subject: [Qemu-devel] [PULL 23/51] mips: fix potential fopen(NULL,...) 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: =?utf-8?q?Marc-Andr=C3=A9_Lureau?= Errors-To: qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org Sender: "Qemu-devel" From: Marc-André Lureau Spotted thanks to ASAN. Signed-off-by: Marc-André Lureau Message-Id: <20180104160523.22995-18-marcandre.lureau@redhat.com> Signed-off-by: Paolo Bonzini --- hw/nvram/ds1225y.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/hw/nvram/ds1225y.c b/hw/nvram/ds1225y.c index 57d5ab2..ad7345f 100644 --- a/hw/nvram/ds1225y.c +++ b/hw/nvram/ds1225y.c @@ -80,7 +80,7 @@ static int nvram_post_load(void *opaque, int version_id) } /* Write back nvram contents */ - s->file = fopen(s->filename, "wb"); + s->file = s->filename ? fopen(s->filename, "wb") : NULL; if (s->file) { /* Write back contents, as 'wb' mode cleaned the file */ if (fwrite(s->contents, s->chip_size, 1, s->file) != 1) { @@ -126,7 +126,7 @@ static int nvram_sysbus_initfn(SysBusDevice *dev) sysbus_init_mmio(dev, &s->iomem); /* Read current file */ - file = fopen(s->filename, "rb"); + file = s->filename ? fopen(s->filename, "rb") : NULL; if (file) { /* Read nvram contents */ if (fread(s->contents, s->chip_size, 1, file) != 1) { From patchwork Tue Jan 16 14:17:06 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: Paolo Bonzini X-Patchwork-Id: 861646 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Authentication-Results: ozlabs.org; spf=pass (mailfrom) smtp.mailfrom=nongnu.org (client-ip=2001:4830:134:3::11; helo=lists.gnu.org; envelope-from=qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org; receiver=) Authentication-Results: ozlabs.org; dkim=fail reason="signature verification failed" (2048-bit key; unprotected) header.d=gmail.com header.i=@gmail.com header.b="B1F8tNOw"; dkim-atps=neutral Received: from lists.gnu.org (lists.gnu.org [IPv6:2001:4830:134:3::11]) (using TLSv1 with cipher AES256-SHA (256/256 bits)) (No client certificate requested) by ozlabs.org (Postfix) with ESMTPS id 3zLY7f0QT6z9s7v for ; Wed, 17 Jan 2018 01:51:10 +1100 (AEDT) Received: from localhost ([::1]:39414 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1ebSZw-0004RS-3O for incoming@patchwork.ozlabs.org; Tue, 16 Jan 2018 09:51:08 -0500 Received: from eggs.gnu.org ([2001:4830:134:3::10]:50393) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1ebS46-00033p-2e for qemu-devel@nongnu.org; Tue, 16 Jan 2018 09:18:20 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1ebS44-0004kJ-Pr for qemu-devel@nongnu.org; Tue, 16 Jan 2018 09:18:14 -0500 Received: from mail-wm0-x244.google.com ([2a00:1450:400c:c09::244]:44170) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1ebS44-0004iS-Ge for qemu-devel@nongnu.org; Tue, 16 Jan 2018 09:18:12 -0500 Received: by mail-wm0-x244.google.com with SMTP id t74so8750859wme.3 for ; Tue, 16 Jan 2018 06:18:12 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=sender:from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=SBiUxsRwJdIfaKAt9vXbp84X/Umzm/STps26F2h9u9M=; b=B1F8tNOwNru9m4/8+PXn780XsOfv77EB3Rlcrt+c/wHApr0Q+85F6IP92Qis6a9Vf8 6FjmPxT4wp10Q7sQ+tdFiO6oNF/Hq+d5gMN6Q8W/cDgzqDj0cP2NN5XRRUZ7uziiePE2 3M3gWQEoqOV/oJuCvz4GH8Aua5bgI1BWhu6ksVIsBz0rJgkqpgI7n5NNAKOkl1AbA4G4 Qc3ev0lg61/GjfNHKpOa/292i6EtwfVcktgAZX+BdE5huKVQlvwrgXBB4ZNiFfqGYC+p 2F+zccfswhEBClUY1yRowCpCv88XJ2R1Psb3ORLMQ8u33rv+DfyzoGczE9QdaF3yjO8m +yxA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:sender:from:to:cc:subject:date:message-id :in-reply-to:references:mime-version:content-transfer-encoding; bh=SBiUxsRwJdIfaKAt9vXbp84X/Umzm/STps26F2h9u9M=; b=eTuYKcvnfR8R90rqauBvY8Pz9R+dbzBnz+1HLAn3w5L/PakYTJVcAldeGKKtQnMNAQ mz1uTOSaQvfhhwNX1Jmap7l8sSRpxrYZoRGPWKdHPp9CrYenmiHOGBm4fPZeSueMMfiq HlkS7/434aqAPTbfBXBsoMlTqQEjI3UhBz15AH5/5KD9Bv/dYacCs7JPmbybAusPu0/E o9Sf2J5hWXIchYlmsj7qoBNVMc8BlFPIAfBfeKOElqPtB5huS45U+ddTkmelfRFMYrEG nnsSoI35LDXz0ba1prL/bzSC5qJwLsCYXO659AD0OeD9GIsTXk+XDcJ4BOVM1lDcWRTi 88iA== X-Gm-Message-State: AKwxytebkUfImcCgUG/W6YhVzZGzUQ2c1WpnrUPidvSm0RUjz5wdFu2a QoHol0zFaWaw4Hn2OEHBoIOTRwbO X-Google-Smtp-Source: ACJfBotH0vXu6b586FWNDZQbZOlt4XwDhL3yHbqv1yq4G2OtTpVcAecgVHreWhpmPoXlp5b7skLe5w== X-Received: by 10.28.69.212 with SMTP id l81mr13595952wmi.65.1516112291196; Tue, 16 Jan 2018 06:18:11 -0800 (PST) Received: from 640k.lan (dynamic-adsl-78-12-229-84.clienti.tiscali.it. [78.12.229.84]) by smtp.gmail.com with ESMTPSA id u10sm1537758wrg.6.2018.01.16.06.18.09 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Tue, 16 Jan 2018 06:18:10 -0800 (PST) From: Paolo Bonzini To: qemu-devel@nongnu.org Date: Tue, 16 Jan 2018 15:17:06 +0100 Message-Id: <1516112253-14480-25-git-send-email-pbonzini@redhat.com> X-Mailer: git-send-email 1.8.3.1 In-Reply-To: <1516112253-14480-1-git-send-email-pbonzini@redhat.com> References: <1516112253-14480-1-git-send-email-pbonzini@redhat.com> MIME-Version: 1.0 X-detected-operating-system: by eggs.gnu.org: Genre and OS details not recognized. X-Received-From: 2a00:1450:400c:c09::244 Subject: [Qemu-devel] [PULL 24/51] disas/s390: fix global-buffer-overflow 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: =?utf-8?q?Marc-Andr=C3=A9_Lureau?= Errors-To: qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org Sender: "Qemu-devel" From: Marc-André Lureau Spotted thanks to ASAN: ==25226==ERROR: AddressSanitizer: global-buffer-overflow on address 0x556715a1f120 at pc 0x556714b6f6b1 bp 0x7ffcdfac1360 sp 0x7ffcdfac1350 READ of size 1 at 0x556715a1f120 thread T0 #0 0x556714b6f6b0 in init_disasm /home/elmarco/src/qemu/disas/s390.c:219 #1 0x556714b6fa6a in print_insn_s390 /home/elmarco/src/qemu/disas/s390.c:294 #2 0x55671484d031 in monitor_disas /home/elmarco/src/qemu/disas.c:635 #3 0x556714862ec0 in memory_dump /home/elmarco/src/qemu/monitor.c:1324 #4 0x55671486342a in hmp_memory_dump /home/elmarco/src/qemu/monitor.c:1418 #5 0x5567148670be in handle_hmp_command /home/elmarco/src/qemu/monitor.c:3109 #6 0x5567148674ed in qmp_human_monitor_command /home/elmarco/src/qemu/monitor.c:613 #7 0x556714b00918 in qmp_marshal_human_monitor_command /home/elmarco/src/qemu/build/qmp-marshal.c:1704 #8 0x556715138a3e in do_qmp_dispatch /home/elmarco/src/qemu/qapi/qmp-dispatch.c:104 #9 0x556715138f83 in qmp_dispatch /home/elmarco/src/qemu/qapi/qmp-dispatch.c:131 #10 0x55671485cf88 in handle_qmp_command /home/elmarco/src/qemu/monitor.c:3839 #11 0x55671514e80b in json_message_process_token /home/elmarco/src/qemu/qobject/json-streamer.c:105 #12 0x5567151bf2dc in json_lexer_feed_char /home/elmarco/src/qemu/qobject/json-lexer.c:323 #13 0x5567151bf827 in json_lexer_feed /home/elmarco/src/qemu/qobject/json-lexer.c:373 #14 0x55671514ee62 in json_message_parser_feed /home/elmarco/src/qemu/qobject/json-streamer.c:124 #15 0x556714854b1f in monitor_qmp_read /home/elmarco/src/qemu/monitor.c:3881 #16 0x556715045440 in qemu_chr_be_write_impl /home/elmarco/src/qemu/chardev/char.c:172 #17 0x556715047184 in qemu_chr_be_write /home/elmarco/src/qemu/chardev/char.c:184 #18 0x55671505a8e6 in tcp_chr_read /home/elmarco/src/qemu/chardev/char-socket.c:440 #19 0x5567150943c3 in qio_channel_fd_source_dispatch /home/elmarco/src/qemu/io/channel-watch.c:84 #20 0x7fb90292b90b in g_main_dispatch ../glib/gmain.c:3182 #21 0x7fb90292c7ac in g_main_context_dispatch ../glib/gmain.c:3847 #22 0x556715162eca in glib_pollfds_poll /home/elmarco/src/qemu/util/main-loop.c:214 #23 0x556715163001 in os_host_main_loop_wait /home/elmarco/src/qemu/util/main-loop.c:261 #24 0x5567151631fa in main_loop_wait /home/elmarco/src/qemu/util/main-loop.c:515 #25 0x556714ad6d3b in main_loop /home/elmarco/src/qemu/vl.c:1950 #26 0x556714ade329 in main /home/elmarco/src/qemu/vl.c:4865 #27 0x7fb8fe5c9009 in __libc_start_main (/lib64/libc.so.6+0x21009) #28 0x5567147af4d9 in _start (/home/elmarco/src/qemu/build/s390x-softmmu/qemu-system-s390x+0xf674d9) 0x556715a1f120 is located 32 bytes to the left of global variable 'char_hci_type_info' defined in '/home/elmarco/src/qemu/hw/bt/hci-csr.c:493:23' (0x556715a1f140) of size 104 0x556715a1f120 is located 8 bytes to the right of global variable 's390_opcodes' defined in '/home/elmarco/src/qemu/disas/s390.c:860:33' (0x556715a15280) of size 40600 This fix is based on Andreas Arnez upstream commit: https://sourceware.org/git/gitweb.cgi?p=binutils-gdb.git;a=commitdiff;h=9ace48f3d7d80ce09c5df60cccb433470410b11b 2014-08-19 Andreas Arnez * s390-dis.c (init_disasm): Simplify initialization of opc_index[]. This also fixes an access after the last element of s390_opcodes[]. Signed-off-by: Marc-André Lureau Message-Id: <20180104160523.22995-19-marcandre.lureau@redhat.com> Signed-off-by: Paolo Bonzini --- disas/s390.c | 16 ++++++---------- 1 file changed, 6 insertions(+), 10 deletions(-) diff --git a/disas/s390.c b/disas/s390.c index 1f167d2..6393860 100644 --- a/disas/s390.c +++ b/disas/s390.c @@ -207,18 +207,14 @@ static int opc_index[256]; static void init_disasm (struct disassemble_info *info) { - const struct s390_opcode *opcode; - const struct s390_opcode *opcode_end; + int i; memset (opc_index, 0, sizeof (opc_index)); - opcode_end = s390_opcodes + s390_num_opcodes; - for (opcode = s390_opcodes; opcode < opcode_end; opcode++) - { - opc_index[(int) opcode->opcode[0]] = opcode - s390_opcodes; - while ((opcode < opcode_end) && - (opcode[1].opcode[0] == opcode->opcode[0])) - opcode++; - } + + /* Reverse order, such that each opc_index ends up pointing to the + first matching entry instead of the last. */ + for (i = s390_num_opcodes; i--; ) + opc_index[s390_opcodes[i].opcode[0]] = i; #ifdef QEMU_DISABLE switch (info->mach) From patchwork Tue Jan 16 14:17:07 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Paolo Bonzini X-Patchwork-Id: 861636 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Authentication-Results: ozlabs.org; spf=pass (mailfrom) smtp.mailfrom=nongnu.org (client-ip=2001:4830:134:3::11; helo=lists.gnu.org; envelope-from=qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org; receiver=) Authentication-Results: ozlabs.org; dkim=fail reason="signature verification failed" (2048-bit key; unprotected) header.d=gmail.com header.i=@gmail.com header.b="o0iIwX8d"; dkim-atps=neutral Received: from lists.gnu.org (lists.gnu.org [IPv6:2001:4830:134:3::11]) (using TLSv1 with cipher AES256-SHA (256/256 bits)) (No client certificate requested) by ozlabs.org (Postfix) with ESMTPS id 3zLXzj2TMTz9s83 for ; Wed, 17 Jan 2018 01:44:17 +1100 (AEDT) Received: from localhost ([::1]:39369 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1ebSTH-0007LG-Eq for incoming@patchwork.ozlabs.org; Tue, 16 Jan 2018 09:44:15 -0500 Received: from eggs.gnu.org ([2001:4830:134:3::10]:50409) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1ebS47-00034n-10 for qemu-devel@nongnu.org; Tue, 16 Jan 2018 09:18:18 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1ebS46-0004m0-8K for qemu-devel@nongnu.org; Tue, 16 Jan 2018 09:18:14 -0500 Received: from mail-wm0-x230.google.com ([2a00:1450:400c:c09::230]:43926) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1ebS46-0004ke-0t; Tue, 16 Jan 2018 09:18:14 -0500 Received: by mail-wm0-x230.google.com with SMTP id g1so8675125wmg.2; Tue, 16 Jan 2018 06:18:13 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=sender:from:to:cc:subject:date:message-id:in-reply-to:references; bh=LSNvDu74sxJsyHLRNAulAQUtE4ZuBiDoYdLAd5X14v4=; b=o0iIwX8dKSH7/cG6eraDReLaYPYU4rJQbOX/KeDwk61mZIwmbp5Hi4DkmuzX2/ymvX nEtopLCYU2cBUIpq+SFa9NJKxbWuvE86Md+AjImxXw2+SndDoba0UANeJwwnK4cC8m+9 45SW6476VRThC17cd2SZhMFIW5eqp6Z2i3ORShq+ax4grEc1bscfJhfeMMkofoLzrZ9f yvKgEfFMO5w6yUO3e1frlExp9loQj8GWPa1Gk90aJkq4bZk4Mx3+zj5y3sQE9Hsf6xCn ci6LxkXLXF12rV0UEvd7nlMsTjNwJUe3KLMsYcxR80ZpOwWAXV9j0mQhq4Xqnn22gHKF kWSQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:sender:from:to:cc:subject:date:message-id :in-reply-to:references; bh=LSNvDu74sxJsyHLRNAulAQUtE4ZuBiDoYdLAd5X14v4=; b=jnaVOoy+b/UpM6X9Bf0GaZU9Ih1eiq3LyGAPCtwEwzA30vBBzpS7x5GM7F14df92hb qYc2Fz2IG2GUSvGnvPjSxqS78NILBZmbwOtKGmCfi3czYnS+/jRkFkin3azKyzfjJ3Bt fPP+7Bru3ZTKf4GGGTMAr6xnIzFZI+gXvtMXBZDWQmRliVgKuu+RdQscGHgcaGQgwrX5 MVNcyZHgdyD+sjBWJtiMd2ecL0g07H4PF4E+evlU5MBHB8yg7B+rjp4i4pkR5TbwaoQl i6ryXfOVPmk2wuKgjrrJHGFtsnLyuVhbjCKVfCfU6cWYY03R4mTjOrlcwEoAeC0vLdpY Oyrw== X-Gm-Message-State: AKwxytc2EqC7k1B0JiSXtEukk/DZjZfClasVUGpBYcAl9jurCer5F+Q/ BGBXp+NRSrhUtdUTNNEQqpUFFWAf X-Google-Smtp-Source: ACJfBosO1/M1F2iiqBxjXyyx03JUQfG4dJdITaF0bJKHMTRwPMFAypU88TGrsHVzAtMr4nXGxSUrEw== X-Received: by 10.28.191.135 with SMTP id o7mr13098648wmi.143.1516112292597; Tue, 16 Jan 2018 06:18:12 -0800 (PST) Received: from 640k.lan (dynamic-adsl-78-12-229-84.clienti.tiscali.it. [78.12.229.84]) by smtp.gmail.com with ESMTPSA id u10sm1537758wrg.6.2018.01.16.06.18.11 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Tue, 16 Jan 2018 06:18:11 -0800 (PST) From: Paolo Bonzini To: qemu-devel@nongnu.org Date: Tue, 16 Jan 2018 15:17:07 +0100 Message-Id: <1516112253-14480-26-git-send-email-pbonzini@redhat.com> X-Mailer: git-send-email 1.8.3.1 In-Reply-To: <1516112253-14480-1-git-send-email-pbonzini@redhat.com> References: <1516112253-14480-1-git-send-email-pbonzini@redhat.com> X-detected-operating-system: by eggs.gnu.org: Genre and OS details not recognized. X-Received-From: 2a00:1450:400c:c09::230 Subject: [Qemu-devel] [PULL 25/51] scsi-disk: release AioContext in unaligned WRITE SAME case 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: qemu-stable@nongnu.org, Stefan Hajnoczi Errors-To: qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org Sender: "Qemu-devel" From: Stefan Hajnoczi scsi_write_same_complete() can retry the write if the request was unaligned. Make sure to release the AioContext when that code path is taken! This patch fixes a hang when QEMU terminates after an unaligned WRITE SAME request has been processed with dataplane. The hang occurs because iothread_stop_all() cannot acquire the AioContext lock that was leaked by the IOThread in scsi_write_same_complete(). Fixes: b9e413dd37 ("block: explicitly acquire aiocontext in aio callbacks that need it"). Cc: Paolo Bonzini Cc: qemu-stable@nongnu.org Reported-by: Cong Li Signed-off-by: Stefan Hajnoczi Message-Id: <20180104142502.15175-1-stefanha@redhat.com> Signed-off-by: Paolo Bonzini --- hw/scsi/scsi-disk.c | 1 + 1 file changed, 1 insertion(+) diff --git a/hw/scsi/scsi-disk.c b/hw/scsi/scsi-disk.c index e58833a..49d2559 100644 --- a/hw/scsi/scsi-disk.c +++ b/hw/scsi/scsi-disk.c @@ -1755,6 +1755,7 @@ static void scsi_write_same_complete(void *opaque, int ret) data->sector << BDRV_SECTOR_BITS, &data->qiov, 0, scsi_write_same_complete, data); + aio_context_release(blk_get_aio_context(s->qdev.conf.blk)); return; } From patchwork Tue Jan 16 14:17:08 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Paolo Bonzini X-Patchwork-Id: 861653 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Authentication-Results: ozlabs.org; spf=pass (mailfrom) smtp.mailfrom=nongnu.org (client-ip=2001:4830:134:3::11; helo=lists.gnu.org; envelope-from=qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org; receiver=) Authentication-Results: ozlabs.org; dkim=fail reason="signature verification failed" (2048-bit key; unprotected) header.d=gmail.com header.i=@gmail.com header.b="pgnPpWNq"; dkim-atps=neutral Received: from lists.gnu.org (lists.gnu.org [IPv6:2001:4830:134:3::11]) (using TLSv1 with cipher AES256-SHA (256/256 bits)) (No client certificate requested) by ozlabs.org (Postfix) with ESMTPS id 3zLYCH1XG4z9s83 for ; Wed, 17 Jan 2018 01:54:19 +1100 (AEDT) Received: from localhost ([::1]:39435 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1ebScz-00070J-AQ for incoming@patchwork.ozlabs.org; Tue, 16 Jan 2018 09:54:17 -0500 Received: from eggs.gnu.org ([2001:4830:134:3::10]:50471) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1ebS4A-00038S-DI for qemu-devel@nongnu.org; Tue, 16 Jan 2018 09:18:22 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1ebS47-0004oA-3o for qemu-devel@nongnu.org; Tue, 16 Jan 2018 09:18:18 -0500 Received: from mail-wm0-x242.google.com ([2a00:1450:400c:c09::242]:36079) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1ebS46-0004mB-Tj for qemu-devel@nongnu.org; Tue, 16 Jan 2018 09:18:15 -0500 Received: by mail-wm0-x242.google.com with SMTP id f3so9003648wmc.1 for ; Tue, 16 Jan 2018 06:18:14 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=sender:from:to:cc:subject:date:message-id:in-reply-to:references; bh=3cqPMVQhriQlpv0DYIbVIjn6P4YBjaOcF2TMiOsuOa8=; b=pgnPpWNq00gOYDm103zYGWocRlNxDmsOdAV7dySKBf5m61BmQdkhM65ytnGHFtqo2W V1dljEqoofUrWB1Zd1XfRcTNtfvQYkBfNVKFriNe7B9cEjCRYv6cK5tQyEejCFrjPR80 dUgtpPex4fZ68Kpy3E3Tbh7lRa36DVSOifTywZDGsz8PfndsC8snQfEnJvdXR2bpJinU Pfed05BmraEz5Pdkvhrq5laCOPM+hA3vZtxgJsWPhNIq9lNAq4r12tg+4dGiTV6C07A7 ytogElSh/eYFXvYNBbntlVJl7/UnBLJ/4JaOfQdbBICH7hTf/YqN/AYmTlsHDRUvOPAF YvGw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:sender:from:to:cc:subject:date:message-id :in-reply-to:references; bh=3cqPMVQhriQlpv0DYIbVIjn6P4YBjaOcF2TMiOsuOa8=; b=jQrV/8nU9cM/b8eohbQJMbUJu6B9Kan2UOlRuFTz+SPEGUmCzCGPSaw6NfjTmOxJyw d2CdQcReKUCsI3nyQjnOS+mDJh8hXpW6/C+rhDSuRDB+TyUgt3lQ28HBVtpIIX2aw2Kn qpe4PU42cM1Upj8q9zEwUKz9yFWlA2yZg/2Qhydvpmq0Wwhpj5a3eyuOifjavhxD6bAh YyHiDnLkTSuaob9Gy9hHeF59gRuasZjYF502xnUpqJQ8NdNDg5NgT+zc3eToXlt9sWBp 2FT+VCw/d8gcAAEKKg0E2uO73dOz0oZfQ3uHB1m3FGs9u10Svqw2EJjDzpBFrShDhhCm UL6w== X-Gm-Message-State: AKwxyteQGPJEO5PFsXc7jBXQg/HEkJv01aqwtZNyGJIM+KH2/TK1djEW vUzovTSP3ziUzhxr6er/MX1afetz X-Google-Smtp-Source: ACJfBovFwGwKkK50+8zILJHf0XRXeRWrHE19kiGAEmxKGnbaxOZI428UsCR+H6E4izkoAzDTdgAORA== X-Received: by 10.28.93.69 with SMTP id r66mr13659518wmb.28.1516112293619; Tue, 16 Jan 2018 06:18:13 -0800 (PST) Received: from 640k.lan (dynamic-adsl-78-12-229-84.clienti.tiscali.it. [78.12.229.84]) by smtp.gmail.com with ESMTPSA id u10sm1537758wrg.6.2018.01.16.06.18.12 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Tue, 16 Jan 2018 06:18:12 -0800 (PST) From: Paolo Bonzini To: qemu-devel@nongnu.org Date: Tue, 16 Jan 2018 15:17:08 +0100 Message-Id: <1516112253-14480-27-git-send-email-pbonzini@redhat.com> X-Mailer: git-send-email 1.8.3.1 In-Reply-To: <1516112253-14480-1-git-send-email-pbonzini@redhat.com> References: <1516112253-14480-1-git-send-email-pbonzini@redhat.com> X-detected-operating-system: by eggs.gnu.org: Genre and OS details not recognized. X-Received-From: 2a00:1450:400c:c09::242 Subject: [Qemu-devel] [PULL 26/51] tests/boot-serial-test: Add tests for microblaze boards 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: Thomas Huth Errors-To: qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org Sender: "Qemu-devel" From: Thomas Huth This adds two simple TCG + UART tests for the microblaze boards, one in big endian mode, and one in little endian mode. Signed-off-by: Thomas Huth Message-Id: <1512031988-32490-5-git-send-email-thuth@redhat.com> Signed-off-by: Paolo Bonzini --- tests/Makefile.include | 2 ++ tests/boot-serial-test.c | 20 ++++++++++++++++++++ 2 files changed, 22 insertions(+) diff --git a/tests/Makefile.include b/tests/Makefile.include index 39a4b53..561e14b 100644 --- a/tests/Makefile.include +++ b/tests/Makefile.include @@ -300,6 +300,8 @@ check-qtest-alpha-y = tests/boot-serial-test$(EXESUF) check-qtest-m68k-y = tests/boot-serial-test$(EXESUF) +check-qtest-microblaze-y = tests/boot-serial-test$(EXESUF) + check-qtest-mips-y = tests/endianness-test$(EXESUF) check-qtest-mips64-y = tests/endianness-test$(EXESUF) diff --git a/tests/boot-serial-test.c b/tests/boot-serial-test.c index dd3828c..a39273a 100644 --- a/tests/boot-serial-test.c +++ b/tests/boot-serial-test.c @@ -24,6 +24,22 @@ static const uint8_t kernel_mcf5208[] = { 0x60, 0xfa /* bra.s loop */ }; +static const uint8_t kernel_pls3adsp1800[] = { + 0xb0, 0x00, 0x84, 0x00, /* imm 0x8400 */ + 0x30, 0x60, 0x00, 0x04, /* addik r3,r0,4 */ + 0x30, 0x80, 0x00, 0x54, /* addik r4,r0,'T' */ + 0xf0, 0x83, 0x00, 0x00, /* sbi r4,r3,0 */ + 0xb8, 0x00, 0xff, 0xfc /* bri -4 loop */ +}; + +static const uint8_t kernel_plml605[] = { + 0xe0, 0x83, 0x00, 0xb0, /* imm 0x83e0 */ + 0x00, 0x10, 0x60, 0x30, /* addik r3,r0,0x1000 */ + 0x54, 0x00, 0x80, 0x30, /* addik r4,r0,'T' */ + 0x00, 0x00, 0x83, 0xf0, /* sbi r4,r3,0 */ + 0xfc, 0xff, 0x00, 0xb8 /* bri -4 loop */ +}; + typedef struct testdef { const char *arch; /* Target architecture */ const char *machine; /* Name of the machine */ @@ -50,6 +66,10 @@ static testdef_t tests[] = { { "s390x", "s390-ccw-virtio", "-nodefaults -device sclpconsole,chardev=serial0", "virtio device" }, { "m68k", "mcf5208evb", "", "TT", sizeof(kernel_mcf5208), kernel_mcf5208 }, + { "microblaze", "petalogix-s3adsp1800", "", "TT", + sizeof(kernel_pls3adsp1800), kernel_pls3adsp1800 }, + { "microblazeel", "petalogix-ml605", "", "TT", + sizeof(kernel_plml605), kernel_plml605 }, { NULL } }; From patchwork Tue Jan 16 14:17:09 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Paolo Bonzini X-Patchwork-Id: 861640 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Authentication-Results: ozlabs.org; spf=pass (mailfrom) smtp.mailfrom=nongnu.org (client-ip=2001:4830:134:3::11; helo=lists.gnu.org; envelope-from=qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org; receiver=) Authentication-Results: ozlabs.org; dkim=fail reason="signature verification failed" (2048-bit key; unprotected) header.d=gmail.com header.i=@gmail.com header.b="BfTqeDBv"; dkim-atps=neutral Received: from lists.gnu.org (lists.gnu.org [IPv6:2001:4830:134:3::11]) (using TLSv1 with cipher AES256-SHA (256/256 bits)) (No client certificate requested) by ozlabs.org (Postfix) with ESMTPS id 3zLY1X27Gtz9s7v for ; Wed, 17 Jan 2018 01:45:52 +1100 (AEDT) Received: from localhost ([::1]:39380 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1ebSUo-0000B6-Bb for incoming@patchwork.ozlabs.org; Tue, 16 Jan 2018 09:45:50 -0500 Received: from eggs.gnu.org ([2001:4830:134:3::10]:50472) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1ebS4A-00038T-DL for qemu-devel@nongnu.org; Tue, 16 Jan 2018 09:18:19 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1ebS48-0004qO-PK for qemu-devel@nongnu.org; Tue, 16 Jan 2018 09:18:18 -0500 Received: from mail-wm0-x241.google.com ([2a00:1450:400c:c09::241]:43483) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1ebS48-0004p9-In for qemu-devel@nongnu.org; Tue, 16 Jan 2018 09:18:16 -0500 Received: by mail-wm0-x241.google.com with SMTP id g1so8675439wmg.2 for ; Tue, 16 Jan 2018 06:18:16 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=sender:from:to:cc:subject:date:message-id:in-reply-to:references; bh=PZfiwIiSh1KkFowaK0k3EI9yqZNgRVDZv7AYwSizY1k=; b=BfTqeDBvaO13IGjYBSAnavG30LOo5il4IA4KXiQYt4Hbrbhm4PXKR7MODFCuq5IzKg MusR8FD0tWAsyAhoikyApxorIxwwm2PmZaOiVMrh0uKIMuYJNh3dMq6mqS6i6JpGiRNt Rr4q5nRUxBGgbFLRpfUeJXezHhIcQAo+eWml0tkL1GBeV2gPA1HKyT0ub0kJpuGTm//F QkXZrIyn0fGSOg3jyiJ1PfOL9S25k7ltUvoiHbLaj41YSD9D3SzEiDPcbMAXLXZwT7JA tBNIk2HXdBJnP9+Gh6uWUBK7/RWb5sR5F7tq2dzLXa1zFDGOADYuidgDgMDqYuX/09sB HMuQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:sender:from:to:cc:subject:date:message-id :in-reply-to:references; bh=PZfiwIiSh1KkFowaK0k3EI9yqZNgRVDZv7AYwSizY1k=; b=r1xSC9VeuYiRe6QymWPuBYOcSYcgEGvLEwlaHQ1Wv9kNoL+JvkQ53dqWo0o7jc46sg hA1q7bl16o8ksljLIoLSfKkQijbPIQdxN9SOzRbk1CeJa5SfA/chgbhq6iGCgW8fUrBM nfWDmIAyXXr9ODj4uDmKhJSP/2O2q+eLIOX2YR7HLs/NquzSPMV7I8qHbGx1pR3x68KR zj5qifoMhgBd/FVyX0okOAt2VYaBpDsde2rgdGbJMtYWbf5MtSJJ0GX21pjlRbrRwFAW 5KwjBYZX5Aori6HBygc6JqgB90+d7sFMK9moE+AYd8wbpIVL8+ayiNkWhChZeIUco316 F3Kw== X-Gm-Message-State: AKwxytdl6hGkjBf96HIzcIYKGgTdJh+nm0AK9tpH+ehIFf8jAydkl/71 SDiV7B3O+42O+2R8gEIFqQTKSTQm X-Google-Smtp-Source: ACJfBovjyOww1zQWc3MoPZ3Wlyt9+ZPofuDoEYClxUIqHLZno65EZLDOyfLq4slI6zjuV0Ud36p1+w== X-Received: by 10.28.23.149 with SMTP id 143mr12993942wmx.83.1516112295313; Tue, 16 Jan 2018 06:18:15 -0800 (PST) Received: from 640k.lan (dynamic-adsl-78-12-229-84.clienti.tiscali.it. [78.12.229.84]) by smtp.gmail.com with ESMTPSA id u10sm1537758wrg.6.2018.01.16.06.18.13 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Tue, 16 Jan 2018 06:18:14 -0800 (PST) From: Paolo Bonzini To: qemu-devel@nongnu.org Date: Tue, 16 Jan 2018 15:17:09 +0100 Message-Id: <1516112253-14480-28-git-send-email-pbonzini@redhat.com> X-Mailer: git-send-email 1.8.3.1 In-Reply-To: <1516112253-14480-1-git-send-email-pbonzini@redhat.com> References: <1516112253-14480-1-git-send-email-pbonzini@redhat.com> X-detected-operating-system: by eggs.gnu.org: Genre and OS details not recognized. X-Received-From: 2a00:1450:400c:c09::241 Subject: [Qemu-devel] [PULL 27/51] tests/boot-serial-test: Add a test for the moxiesim machine 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: Thomas Huth Errors-To: qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org Sender: "Qemu-devel" From: Thomas Huth Now that moxiesim supports the -bios parameter, we can check this machine in the boot-serial tester, too, by supplying a mini bios that only writes 'T' characters to the UART. Signed-off-by: Thomas Huth Message-Id: <1512031988-32490-7-git-send-email-thuth@redhat.com> Signed-off-by: Paolo Bonzini --- tests/Makefile.include | 2 ++ tests/boot-serial-test.c | 8 ++++++++ 2 files changed, 10 insertions(+) diff --git a/tests/Makefile.include b/tests/Makefile.include index 561e14b..13d6684 100644 --- a/tests/Makefile.include +++ b/tests/Makefile.include @@ -308,6 +308,8 @@ check-qtest-mips64-y = tests/endianness-test$(EXESUF) check-qtest-mips64el-y = tests/endianness-test$(EXESUF) +check-qtest-moxie-y = tests/boot-serial-test$(EXESUF) + check-qtest-ppc-y = tests/endianness-test$(EXESUF) check-qtest-ppc-y += tests/boot-order-test$(EXESUF) check-qtest-ppc-y += tests/prom-env-test$(EXESUF) diff --git a/tests/boot-serial-test.c b/tests/boot-serial-test.c index a39273a..1deddb8 100644 --- a/tests/boot-serial-test.c +++ b/tests/boot-serial-test.c @@ -40,6 +40,13 @@ static const uint8_t kernel_plml605[] = { 0xfc, 0xff, 0x00, 0xb8 /* bri -4 loop */ }; +static const uint8_t bios_moxiesim[] = { + 0x20, 0x10, 0x00, 0x00, 0x03, 0xf8, /* ldi.s r1,0x3f8 */ + 0x1b, 0x20, 0x00, 0x00, 0x00, 0x54, /* ldi.b r2,'T' */ + 0x1e, 0x12, /* st.b r1,r2 */ + 0x1a, 0x00, 0x00, 0x00, 0x10, 0x00 /* jmpa 0x1000 */ +}; + typedef struct testdef { const char *arch; /* Target architecture */ const char *machine; /* Name of the machine */ @@ -70,6 +77,7 @@ static testdef_t tests[] = { sizeof(kernel_pls3adsp1800), kernel_pls3adsp1800 }, { "microblazeel", "petalogix-ml605", "", "TT", sizeof(kernel_plml605), kernel_plml605 }, + { "moxie", "moxiesim", "", "TT", sizeof(bios_moxiesim), 0, bios_moxiesim }, { NULL } }; From patchwork Tue Jan 16 14:17:10 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Paolo Bonzini X-Patchwork-Id: 861652 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Authentication-Results: ozlabs.org; spf=pass (mailfrom) smtp.mailfrom=nongnu.org (client-ip=2001:4830:134:3::11; helo=lists.gnu.org; envelope-from=qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org; receiver=) Authentication-Results: ozlabs.org; dkim=fail reason="signature verification failed" (2048-bit key; unprotected) header.d=gmail.com header.i=@gmail.com header.b="eNiJijB5"; dkim-atps=neutral Received: from lists.gnu.org (lists.gnu.org [IPv6:2001:4830:134:3::11]) (using TLSv1 with cipher AES256-SHA (256/256 bits)) (No client certificate requested) by ozlabs.org (Postfix) with ESMTPS id 3zLYCC6KZDz9s7v for ; Wed, 17 Jan 2018 01:54:15 +1100 (AEDT) Received: from localhost ([::1]:39431 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1ebScv-0006xB-Ph for incoming@patchwork.ozlabs.org; Tue, 16 Jan 2018 09:54:13 -0500 Received: from eggs.gnu.org ([2001:4830:134:3::10]:50492) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1ebS4B-00039N-1j for qemu-devel@nongnu.org; Tue, 16 Jan 2018 09:18:26 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1ebS49-0004rx-VM for qemu-devel@nongnu.org; Tue, 16 Jan 2018 09:18:19 -0500 Received: from mail-wr0-x22d.google.com ([2a00:1450:400c:c0c::22d]:47000) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1ebS49-0004rT-OX for qemu-devel@nongnu.org; Tue, 16 Jan 2018 09:18:17 -0500 Received: by mail-wr0-x22d.google.com with SMTP id g21so15302535wrb.13 for ; Tue, 16 Jan 2018 06:18:17 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=sender:from:to:cc:subject:date:message-id:in-reply-to:references; bh=juki5wSZBaaw015g+n5tBk3iXQBc1Up1GEZH+gcOqZI=; b=eNiJijB5E5bIS1Yh6M/24ne0TgUFWdwORCVRnWoHZoY2U05FjGd5MZuFBg/p8cgNM1 F0nQ6TMI96gJNjDU60zGLkLy0gFmF/z/G4ZodkyKpl820RW6yuw+1bT31ZcwHxcrrFjd sf1WxVtJomxxkPhlEC7A5WWIUv6Y2rMwTY20hv8CBmsRlVr5cDayBVXEZ7u8S7Z/5TX4 1VZk2hUBVPeDrQiG/R7ztiW9r/eIrc+YrAYgW4X0YNM9DTW61l0XNlMQOhqMEbGsE85l Y9ht4sZSJ3jEXUIdC91daYPfalh84gqN6bVaq1FjEMwqtSvkQtORl8bFtj2BteM7OrBi 5eAg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:sender:from:to:cc:subject:date:message-id :in-reply-to:references; bh=juki5wSZBaaw015g+n5tBk3iXQBc1Up1GEZH+gcOqZI=; b=aQIIloIcJlHui19WSx1QBpBpzu/fEpx8d8bjz9aoVKKwsXNrl/iBm3ZfzIQszy/o3c rBXvbvg+pPE81elNigYLJW7GGEWsiibBdrIs9YkZtBYYMuQUcMLblX8lFIMBgEkECFD8 jKn7jlqecjaXFWOrBqwXDnJUc5DQh9GPSX8R3BUHVnxXft5+RqqsktskXF/sniHx/DrR wXhC8hInAFLwccJSm9QmhVi2tsvPOQN4wdsd14ZJ44vOsWWCA55SNFdyOUYjRnbNnmG8 TDqk1rzJC2FioUqAIW+F6lAHETfQ9TLNK3vLBamPZ3V08o7eZjZGt/+PfGmUtVmP5IVq ZMPA== X-Gm-Message-State: AKwxytd+288wdEUz1lWOYqjXwoSaJ3OxHUxUrQUSL9HxKRGulo2Axf8B j3Sxqlugb6sID99OyRmJ6HXOKvwz X-Google-Smtp-Source: ACJfBotv4GP2fZeX1txYjclLXiufGC2r4+NRPR2tNHkDoFjEIT7D1qtBTwWyTwijjejWXVX1DMxb0Q== X-Received: by 10.223.157.140 with SMTP id p12mr15539488wre.278.1516112296442; Tue, 16 Jan 2018 06:18:16 -0800 (PST) Received: from 640k.lan (dynamic-adsl-78-12-229-84.clienti.tiscali.it. [78.12.229.84]) by smtp.gmail.com with ESMTPSA id u10sm1537758wrg.6.2018.01.16.06.18.15 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Tue, 16 Jan 2018 06:18:15 -0800 (PST) From: Paolo Bonzini To: qemu-devel@nongnu.org Date: Tue, 16 Jan 2018 15:17:10 +0100 Message-Id: <1516112253-14480-29-git-send-email-pbonzini@redhat.com> X-Mailer: git-send-email 1.8.3.1 In-Reply-To: <1516112253-14480-1-git-send-email-pbonzini@redhat.com> References: <1516112253-14480-1-git-send-email-pbonzini@redhat.com> X-detected-operating-system: by eggs.gnu.org: Genre and OS details not recognized. X-Received-From: 2a00:1450:400c:c0c::22d Subject: [Qemu-devel] [PULL 28/51] tests/boot-serial-test: Add support for the raspi2 machine 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: Thomas Huth Errors-To: qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org Sender: "Qemu-devel" From: Thomas Huth The raspi2 machine supports loading firmware images, so we can easily load a small test sequence as raw binary blob here to test the UART. Signed-off-by: Thomas Huth Message-Id: <1512031988-32490-8-git-send-email-thuth@redhat.com> Signed-off-by: Paolo Bonzini --- tests/Makefile.include | 1 + tests/boot-serial-test.c | 9 +++++++++ 2 files changed, 10 insertions(+) diff --git a/tests/Makefile.include b/tests/Makefile.include index 13d6684..8883274 100644 --- a/tests/Makefile.include +++ b/tests/Makefile.include @@ -362,6 +362,7 @@ check-qtest-arm-y += tests/virtio-blk-test$(EXESUF) gcov-files-arm-y += arm-softmmu/hw/block/virtio-blk.c check-qtest-arm-y += tests/test-arm-mptimer$(EXESUF) gcov-files-arm-y += hw/timer/arm_mptimer.c +check-qtest-arm-y += tests/boot-serial-test$(EXESUF) check-qtest-aarch64-y = tests/numa-test$(EXESUF) diff --git a/tests/boot-serial-test.c b/tests/boot-serial-test.c index 1deddb8..663b78b 100644 --- a/tests/boot-serial-test.c +++ b/tests/boot-serial-test.c @@ -47,6 +47,14 @@ static const uint8_t bios_moxiesim[] = { 0x1a, 0x00, 0x00, 0x00, 0x10, 0x00 /* jmpa 0x1000 */ }; +static const uint8_t bios_raspi2[] = { + 0x08, 0x30, 0x9f, 0xe5, /* ldr r3,[pc,#8] Get base */ + 0x54, 0x20, 0xa0, 0xe3, /* mov r2,#'T' */ + 0x00, 0x20, 0xc3, 0xe5, /* strb r2,[r3] */ + 0xfb, 0xff, 0xff, 0xea, /* b loop */ + 0x00, 0x10, 0x20, 0x3f, /* 0x3f201000 = UART0 base addr */ +}; + typedef struct testdef { const char *arch; /* Target architecture */ const char *machine; /* Name of the machine */ @@ -78,6 +86,7 @@ static testdef_t tests[] = { { "microblazeel", "petalogix-ml605", "", "TT", sizeof(kernel_plml605), kernel_plml605 }, { "moxie", "moxiesim", "", "TT", sizeof(bios_moxiesim), 0, bios_moxiesim }, + { "arm", "raspi2", "", "TT", sizeof(bios_raspi2), 0, bios_raspi2 }, { NULL } }; From patchwork Tue Jan 16 14:17:11 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Paolo Bonzini X-Patchwork-Id: 861645 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Authentication-Results: ozlabs.org; spf=pass (mailfrom) smtp.mailfrom=nongnu.org (client-ip=2001:4830:134:3::11; helo=lists.gnu.org; envelope-from=qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org; receiver=) Authentication-Results: ozlabs.org; dkim=fail reason="signature verification failed" (2048-bit key; unprotected) header.d=gmail.com header.i=@gmail.com header.b="IJGlLdSQ"; dkim-atps=neutral Received: from lists.gnu.org (lists.gnu.org [IPv6:2001:4830:134:3::11]) (using TLSv1 with cipher AES256-SHA (256/256 bits)) (No client certificate requested) by ozlabs.org (Postfix) with ESMTPS id 3zLY7Q3Y0Qz9s7v for ; Wed, 17 Jan 2018 01:50:57 +1100 (AEDT) Received: from localhost ([::1]:39407 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1ebSZi-00049z-CV for incoming@patchwork.ozlabs.org; Tue, 16 Jan 2018 09:50:54 -0500 Received: from eggs.gnu.org ([2001:4830:134:3::10]:50528) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1ebS4C-0003Bf-QV for qemu-devel@nongnu.org; Tue, 16 Jan 2018 09:18:24 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1ebS4B-0004vB-Gv for qemu-devel@nongnu.org; Tue, 16 Jan 2018 09:18:20 -0500 Received: from mail-wr0-x244.google.com ([2a00:1450:400c:c0c::244]:42401) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1ebS4B-0004tS-6i for qemu-devel@nongnu.org; Tue, 16 Jan 2018 09:18:19 -0500 Received: by mail-wr0-x244.google.com with SMTP id e41so15000715wre.9 for ; Tue, 16 Jan 2018 06:18:19 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=sender:from:to:cc:subject:date:message-id:in-reply-to:references; bh=gmhfB6yzg5GntisSVkW64/ZyayuGnz211dAfY7NHsPI=; b=IJGlLdSQbTHQlUTA4aa83+xGpnASQH7lXCoGBVEE+MohZsZcTXHKy0swdaxPbImOKG 5u42HRkW1fdD66uyuAn4hoeG+noplcyWmRRgTuLV9kYMOWLbFsQ4VbxAKk/I8o+UF3y9 LdvsVI3Selci97iPgQEQefd+0k+SBDfPLwKn62FpOKfUzJNYHaLaz14NKYIa30qDpTpT HCot2NzEQZjXWqdMVq4NiGKy9Uj8W4h3oRJz7I/S9i3TxvL3hzDjmrCgKPoj53XiYPHJ /vIJPbSLKKUFcARmWglqpNfmUfkEtWEjoZ0GbNSXMDjjnniulmJ0UkdYZTYnwdeCKspl wz5Q== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:sender:from:to:cc:subject:date:message-id :in-reply-to:references; bh=gmhfB6yzg5GntisSVkW64/ZyayuGnz211dAfY7NHsPI=; b=GoyYQxyMphff/5y4TZ9M/oalz0m8rt8lVO1RQUfmJlz+g7uVWThcj5/c6UFIpHx9CN iltBH+y+X5LbI77H3F20GbxbEHBTOe50vNmPOidHUy0GMinFcOts7Pjgf6ngdWvi75yJ ls+upZKX3jABXf1YXJYJkUv1lyrVJJTZJzr4pmUswhDuhEBNDN7rHk0YWgKI9WM83VSF jlJFqNzsC6yn4/WGzvwkvyS5IZLeG6/jnMEHYELygW7xANUc2TFNZ6EnQJuHM8LGH3QF L4WpwErzvzXeHdEj6lCTsGb11oXO85QQeamDvjxq3dHC761z9iKCSynRADHR102ROPYj tElA== X-Gm-Message-State: AKwxytcMQqU4kMq5wvs4rJADRsWZL4jCTZbBAYmXreKZ8nx99G7q5Dig yckk0q68ks5Kt5jltXhiCnoBHo0t X-Google-Smtp-Source: ACJfBotdVXIGy3lwNWU1gt1XQxSQDOQQuxARRkrARJDvvkx0yrMOJK1SnEQKUFysIgfu/NCwF+mO2w== X-Received: by 10.223.135.236 with SMTP id c41mr5394114wrc.7.1516112297783; Tue, 16 Jan 2018 06:18:17 -0800 (PST) Received: from 640k.lan (dynamic-adsl-78-12-229-84.clienti.tiscali.it. [78.12.229.84]) by smtp.gmail.com with ESMTPSA id u10sm1537758wrg.6.2018.01.16.06.18.16 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Tue, 16 Jan 2018 06:18:16 -0800 (PST) From: Paolo Bonzini To: qemu-devel@nongnu.org Date: Tue, 16 Jan 2018 15:17:11 +0100 Message-Id: <1516112253-14480-30-git-send-email-pbonzini@redhat.com> X-Mailer: git-send-email 1.8.3.1 In-Reply-To: <1516112253-14480-1-git-send-email-pbonzini@redhat.com> References: <1516112253-14480-1-git-send-email-pbonzini@redhat.com> X-detected-operating-system: by eggs.gnu.org: Genre and OS details not recognized. X-Received-From: 2a00:1450:400c:c0c::244 Subject: [Qemu-devel] [PULL 29/51] target/i386: move hflags update code to a 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: Tao Wu Errors-To: qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org Sender: "Qemu-devel" From: Tao Wu We will share the same code for hax/kvm. Signed-off-by: Tao Wu Message-Id: <20180110195056.85403-1-lepton@google.com> Signed-off-by: Paolo Bonzini --- target/i386/cpu.c | 42 ++++++++++++++++++++++++++++++++++++++++++ target/i386/cpu.h | 2 ++ target/i386/kvm.c | 40 +--------------------------------------- 3 files changed, 45 insertions(+), 39 deletions(-) diff --git a/target/i386/cpu.c b/target/i386/cpu.c index 3818d72..ad8196b 100644 --- a/target/i386/cpu.c +++ b/target/i386/cpu.c @@ -4147,6 +4147,48 @@ static void x86_disas_set_info(CPUState *cs, disassemble_info *info) info->cap_insn_split = 8; } +void x86_update_hflags(CPUX86State *env) +{ + uint32_t hflags; +#define HFLAG_COPY_MASK \ + ~( HF_CPL_MASK | HF_PE_MASK | HF_MP_MASK | HF_EM_MASK | \ + HF_TS_MASK | HF_TF_MASK | HF_VM_MASK | HF_IOPL_MASK | \ + HF_OSFXSR_MASK | HF_LMA_MASK | HF_CS32_MASK | \ + HF_SS32_MASK | HF_CS64_MASK | HF_ADDSEG_MASK) + + hflags = env->hflags & HFLAG_COPY_MASK; + hflags |= (env->segs[R_SS].flags >> DESC_DPL_SHIFT) & HF_CPL_MASK; + hflags |= (env->cr[0] & CR0_PE_MASK) << (HF_PE_SHIFT - CR0_PE_SHIFT); + hflags |= (env->cr[0] << (HF_MP_SHIFT - CR0_MP_SHIFT)) & + (HF_MP_MASK | HF_EM_MASK | HF_TS_MASK); + hflags |= (env->eflags & (HF_TF_MASK | HF_VM_MASK | HF_IOPL_MASK)); + + if (env->cr[4] & CR4_OSFXSR_MASK) { + hflags |= HF_OSFXSR_MASK; + } + + if (env->efer & MSR_EFER_LMA) { + hflags |= HF_LMA_MASK; + } + + if ((hflags & HF_LMA_MASK) && (env->segs[R_CS].flags & DESC_L_MASK)) { + hflags |= HF_CS32_MASK | HF_SS32_MASK | HF_CS64_MASK; + } else { + hflags |= (env->segs[R_CS].flags & DESC_B_MASK) >> + (DESC_B_SHIFT - HF_CS32_SHIFT); + hflags |= (env->segs[R_SS].flags & DESC_B_MASK) >> + (DESC_B_SHIFT - HF_SS32_SHIFT); + if (!(env->cr[0] & CR0_PE_MASK) || (env->eflags & VM_MASK) || + !(hflags & HF_CS32_MASK)) { + hflags |= HF_ADDSEG_MASK; + } else { + hflags |= ((env->segs[R_DS].base | env->segs[R_ES].base | + env->segs[R_SS].base) != 0) << HF_ADDSEG_SHIFT; + } + } + env->hflags = hflags; +} + static Property x86_cpu_properties[] = { #ifdef CONFIG_USER_ONLY /* apic_id = 0 by default for *-user, see commit 9886e834 */ diff --git a/target/i386/cpu.h b/target/i386/cpu.h index 62c4742..f64e5ed 100644 --- a/target/i386/cpu.h +++ b/target/i386/cpu.h @@ -1778,4 +1778,6 @@ bool cpu_is_bsp(X86CPU *cpu); void x86_cpu_xrstor_all_areas(X86CPU *cpu, const X86XSaveArea *buf); void x86_cpu_xsave_all_areas(X86CPU *cpu, X86XSaveArea *buf); +void x86_update_hflags(CPUX86State* env); + #endif /* I386_CPU_H */ diff --git a/target/i386/kvm.c b/target/i386/kvm.c index d23127c..825aea5 100644 --- a/target/i386/kvm.c +++ b/target/i386/kvm.c @@ -1891,7 +1891,6 @@ static int kvm_get_sregs(X86CPU *cpu) { CPUX86State *env = &cpu->env; struct kvm_sregs sregs; - uint32_t hflags; int bit, i, ret; ret = kvm_vcpu_ioctl(CPU(cpu), KVM_GET_SREGS, &sregs); @@ -1933,44 +1932,7 @@ static int kvm_get_sregs(X86CPU *cpu) env->efer = sregs.efer; /* changes to apic base and cr8/tpr are read back via kvm_arch_post_run */ - -#define HFLAG_COPY_MASK \ - ~( HF_CPL_MASK | HF_PE_MASK | HF_MP_MASK | HF_EM_MASK | \ - HF_TS_MASK | HF_TF_MASK | HF_VM_MASK | HF_IOPL_MASK | \ - HF_OSFXSR_MASK | HF_LMA_MASK | HF_CS32_MASK | \ - HF_SS32_MASK | HF_CS64_MASK | HF_ADDSEG_MASK) - - hflags = env->hflags & HFLAG_COPY_MASK; - hflags |= (env->segs[R_SS].flags >> DESC_DPL_SHIFT) & HF_CPL_MASK; - hflags |= (env->cr[0] & CR0_PE_MASK) << (HF_PE_SHIFT - CR0_PE_SHIFT); - hflags |= (env->cr[0] << (HF_MP_SHIFT - CR0_MP_SHIFT)) & - (HF_MP_MASK | HF_EM_MASK | HF_TS_MASK); - hflags |= (env->eflags & (HF_TF_MASK | HF_VM_MASK | HF_IOPL_MASK)); - - if (env->cr[4] & CR4_OSFXSR_MASK) { - hflags |= HF_OSFXSR_MASK; - } - - if (env->efer & MSR_EFER_LMA) { - hflags |= HF_LMA_MASK; - } - - if ((hflags & HF_LMA_MASK) && (env->segs[R_CS].flags & DESC_L_MASK)) { - hflags |= HF_CS32_MASK | HF_SS32_MASK | HF_CS64_MASK; - } else { - hflags |= (env->segs[R_CS].flags & DESC_B_MASK) >> - (DESC_B_SHIFT - HF_CS32_SHIFT); - hflags |= (env->segs[R_SS].flags & DESC_B_MASK) >> - (DESC_B_SHIFT - HF_SS32_SHIFT); - if (!(env->cr[0] & CR0_PE_MASK) || (env->eflags & VM_MASK) || - !(hflags & HF_CS32_MASK)) { - hflags |= HF_ADDSEG_MASK; - } else { - hflags |= ((env->segs[R_DS].base | env->segs[R_ES].base | - env->segs[R_SS].base) != 0) << HF_ADDSEG_SHIFT; - } - } - env->hflags = hflags; + x86_update_hflags(env); return 0; } From patchwork Tue Jan 16 14:17:12 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Paolo Bonzini X-Patchwork-Id: 861661 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Authentication-Results: ozlabs.org; spf=pass (mailfrom) smtp.mailfrom=nongnu.org (client-ip=2001:4830:134:3::11; helo=lists.gnu.org; envelope-from=qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org; receiver=) Authentication-Results: ozlabs.org; dkim=fail reason="signature verification failed" (2048-bit key; unprotected) header.d=gmail.com header.i=@gmail.com header.b="V4N7mcF4"; dkim-atps=neutral Received: from lists.gnu.org (lists.gnu.org [IPv6:2001:4830:134:3::11]) (using TLSv1 with cipher AES256-SHA (256/256 bits)) (No client certificate requested) by ozlabs.org (Postfix) with ESMTPS id 3zLYJ12ml7z9sBd for ; Wed, 17 Jan 2018 01:58:25 +1100 (AEDT) Received: from localhost ([::1]:39467 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1ebSgx-00025j-FD for incoming@patchwork.ozlabs.org; Tue, 16 Jan 2018 09:58:23 -0500 Received: from eggs.gnu.org ([2001:4830:134:3::10]:50587) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1ebS4I-0003Gi-Kk for qemu-devel@nongnu.org; Tue, 16 Jan 2018 09:18:30 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1ebS4C-0004wl-L1 for qemu-devel@nongnu.org; Tue, 16 Jan 2018 09:18:26 -0500 Received: from mail-wr0-x241.google.com ([2a00:1450:400c:c0c::241]:42399) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1ebS4C-0004vN-DV for qemu-devel@nongnu.org; Tue, 16 Jan 2018 09:18:20 -0500 Received: by mail-wr0-x241.google.com with SMTP id e41so15000784wre.9 for ; Tue, 16 Jan 2018 06:18:20 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=sender:from:to:cc:subject:date:message-id:in-reply-to:references; bh=KuQ/1c7HfPLUFPX79rOY37ztyIuqIfjWjePSU8W73O0=; b=V4N7mcF4ROTJGeNgawxE19fTAU7YypCqbamqYlFFg1WYXa3cITIn+lhWfm1JT6pCwk RliQOrZ2iXM30uHgwveQg/9pOl7/1yFDMi17vo7EoGaz5hYpwhXIeAAbvCRM9wDBhgsX f711O0eEMwzZBWGwuuPW5AvLjoN3aGhyQYByaYcb4c/tWTuZt7uvDBEhCTZlOVk97YE7 AwAegZa5xTW56f+/4cdwBRxvx8sLkKJb0eqz80dxxKnQz8uZ9hk5bQ0RqUkEOghGTQiT eEKdfpOo+srKQbxsZ51TfBMdQ3LmEjy5b7z0MLYq4qluC0mLr7HTqoVKxn88WQ0Mpgcr XSTw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:sender:from:to:cc:subject:date:message-id :in-reply-to:references; bh=KuQ/1c7HfPLUFPX79rOY37ztyIuqIfjWjePSU8W73O0=; b=dgELuM7lg4bxIuPMN2yaRID3bm5rhfFdozMGZr2jgA5AoRcfRaMcUmZu59jbM+cgBq myiVQmuFkabYySOhstKWSbCltFY73+zF+oFLgOUQO/6R37wUGVoxDD80ItYJpWVJNg8b a2jgbfzV6XfLds1doUg9CxG0h/tBaxREYhrymQqeDpjxYj0rEeHXFsNadzawdLIQv/Dh mCUmqGl4B6HrnBjPaQB93QYQp+mhh4ZP5Qje0GsCbktCAQjh6X1d9L0Qn1tIDnskl3ZC FWeHeABT5AkUX74DSWfp0d1SySxFF/Uv1bTvU2HWb0QX2bDPU4KOwj0WND26OfAR8KV7 8S6A== X-Gm-Message-State: AKwxytdqYHriDwGaRKhBMOMiDNTHvHTdoilYGP1EovVUVkqZbcyDHGiG zsFBIR/3AmUBEPPb7zQQD1IrtVL9 X-Google-Smtp-Source: ACJfBosb4uWGR/YHlz4Bs1uFD15dgBJYDoyiSK08/0RwxkaaannFfooOHwQOpKbl/MugN/AuPI4jSQ== X-Received: by 10.223.130.194 with SMTP id 60mr22237222wrc.72.1516112298911; Tue, 16 Jan 2018 06:18:18 -0800 (PST) Received: from 640k.lan (dynamic-adsl-78-12-229-84.clienti.tiscali.it. [78.12.229.84]) by smtp.gmail.com with ESMTPSA id u10sm1537758wrg.6.2018.01.16.06.18.17 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Tue, 16 Jan 2018 06:18:18 -0800 (PST) From: Paolo Bonzini To: qemu-devel@nongnu.org Date: Tue, 16 Jan 2018 15:17:12 +0100 Message-Id: <1516112253-14480-31-git-send-email-pbonzini@redhat.com> X-Mailer: git-send-email 1.8.3.1 In-Reply-To: <1516112253-14480-1-git-send-email-pbonzini@redhat.com> References: <1516112253-14480-1-git-send-email-pbonzini@redhat.com> X-detected-operating-system: by eggs.gnu.org: Genre and OS details not recognized. X-Received-From: 2a00:1450:400c:c0c::241 Subject: [Qemu-devel] [PULL 30/51] target/i386: hax: change to use x86_update_hflags 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: Tao Wu Errors-To: qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org Sender: "Qemu-devel" From: Tao Wu Change to use x86_update_hflags instead of keeping another copy at hax side. This also fix bug like HF_CPL_MASK should be SS.DPL, not CS.DPL. Signed-off-by: Tao Wu Message-Id: <20180110195056.85403-2-lepton@google.com> Signed-off-by: Paolo Bonzini --- target/i386/hax-all.c | 52 +-------------------------------------------------- 1 file changed, 1 insertion(+), 51 deletions(-) diff --git a/target/i386/hax-all.c b/target/i386/hax-all.c index 3ce6950..07df73e 100644 --- a/target/i386/hax-all.c +++ b/target/i386/hax-all.c @@ -782,56 +782,6 @@ static int hax_set_segments(CPUArchState *env, struct vcpu_state_t *sregs) return 0; } -/* - * After get the state from the kernel module, some - * qemu emulator state need be updated also - */ -static int hax_setup_qemu_emulator(CPUArchState *env) -{ - -#define HFLAG_COPY_MASK (~( \ - HF_CPL_MASK | HF_PE_MASK | HF_MP_MASK | HF_EM_MASK | \ - HF_TS_MASK | HF_TF_MASK | HF_VM_MASK | HF_IOPL_MASK | \ - HF_OSFXSR_MASK | HF_LMA_MASK | HF_CS32_MASK | \ - HF_SS32_MASK | HF_CS64_MASK | HF_ADDSEG_MASK)) - - uint32_t hflags; - - hflags = (env->segs[R_CS].flags >> DESC_DPL_SHIFT) & HF_CPL_MASK; - hflags |= (env->cr[0] & CR0_PE_MASK) << (HF_PE_SHIFT - CR0_PE_SHIFT); - hflags |= (env->cr[0] << (HF_MP_SHIFT - CR0_MP_SHIFT)) & - (HF_MP_MASK | HF_EM_MASK | HF_TS_MASK); - hflags |= (env->eflags & (HF_TF_MASK | HF_VM_MASK | HF_IOPL_MASK)); - hflags |= (env->cr[4] & CR4_OSFXSR_MASK) << - (HF_OSFXSR_SHIFT - CR4_OSFXSR_SHIFT); - - if (env->efer & MSR_EFER_LMA) { - hflags |= HF_LMA_MASK; - } - - if ((hflags & HF_LMA_MASK) && (env->segs[R_CS].flags & DESC_L_MASK)) { - hflags |= HF_CS32_MASK | HF_SS32_MASK | HF_CS64_MASK; - } else { - hflags |= (env->segs[R_CS].flags & DESC_B_MASK) >> - (DESC_B_SHIFT - HF_CS32_SHIFT); - hflags |= (env->segs[R_SS].flags & DESC_B_MASK) >> - (DESC_B_SHIFT - HF_SS32_SHIFT); - if (!(env->cr[0] & CR0_PE_MASK) || - (env->eflags & VM_MASK) || !(hflags & HF_CS32_MASK)) { - hflags |= HF_ADDSEG_MASK; - } else { - hflags |= ((env->segs[R_DS].base | - env->segs[R_ES].base | - env->segs[R_SS].base) != 0) << HF_ADDSEG_SHIFT; - } - } - - hflags &= ~HF_SMM_MASK; - - env->hflags = (env->hflags & HFLAG_COPY_MASK) | hflags; - return 0; -} - static int hax_sync_vcpu_register(CPUArchState *env, int set) { struct vcpu_state_t regs; @@ -888,7 +838,7 @@ static int hax_sync_vcpu_register(CPUArchState *env, int set) } } if (!set) { - hax_setup_qemu_emulator(env); + x86_update_hflags(env); } return 0; } From patchwork Tue Jan 16 14:17:13 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Paolo Bonzini X-Patchwork-Id: 861650 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Authentication-Results: ozlabs.org; spf=pass (mailfrom) smtp.mailfrom=nongnu.org (client-ip=2001:4830:134:3::11; helo=lists.gnu.org; envelope-from=qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org; receiver=) Authentication-Results: ozlabs.org; dkim=fail reason="signature verification failed" (2048-bit key; unprotected) header.d=gmail.com header.i=@gmail.com header.b="hy0v7uwu"; dkim-atps=neutral Received: from lists.gnu.org (lists.gnu.org [IPv6:2001:4830:134:3::11]) (using TLSv1 with cipher AES256-SHA (256/256 bits)) (No client certificate requested) by ozlabs.org (Postfix) with ESMTPS id 3zLY952hT5z9s7v for ; Wed, 17 Jan 2018 01:52:25 +1100 (AEDT) Received: from localhost ([::1]:39421 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1ebSb9-0005Sf-Dk for incoming@patchwork.ozlabs.org; Tue, 16 Jan 2018 09:52:23 -0500 Received: from eggs.gnu.org ([2001:4830:134:3::10]:50598) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1ebS4J-0003I6-K8 for qemu-devel@nongnu.org; Tue, 16 Jan 2018 09:18:28 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1ebS4D-0004xV-RB for qemu-devel@nongnu.org; Tue, 16 Jan 2018 09:18:27 -0500 Received: from mail-wr0-x243.google.com ([2a00:1450:400c:c0c::243]:45407) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1ebS4D-0004x6-Kb for qemu-devel@nongnu.org; Tue, 16 Jan 2018 09:18:21 -0500 Received: by mail-wr0-x243.google.com with SMTP id 16so15332905wry.12 for ; Tue, 16 Jan 2018 06:18:21 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=sender:from:to:cc:subject:date:message-id:in-reply-to:references; bh=8Iwdh02lxAuXCra5iQtGrzdFxaBXGGrboF8XSt4xjYE=; b=hy0v7uwu5qztzN90HV0IeuFpcV+askmiuIUth+RAgc1W5rOsX4H7TcrhhFnv1v5a0m HDx4wIWaqmuShA3bNLUarzt3UIIFPVVM7DWMvQGh5+bqEaheTk7EYGZ9nalCZPdbCmvW B/L1RfM7iyqurzAeM1l9N/05AJC/CZ54AeQirSxHcA/QCDtWRoXFeo3bAQK8joAaE5cY fp7MpntrVH8jR4jndi1eBelL5HMiXGbLLTP3QfhyNRm668/ZL8JeJWExEbcQsVIOVMco GmNcTV73k0YuBA1uRyuk94GfXU7d50kGXwHQdZXcZ0Lq+hsTkk2M4qP2hxliCOYqxvWL EzcQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:sender:from:to:cc:subject:date:message-id :in-reply-to:references; bh=8Iwdh02lxAuXCra5iQtGrzdFxaBXGGrboF8XSt4xjYE=; b=EhAyI2AUEHYcPxwWDvcNp7I22jdYv1Y52VYmDwicnPEqV1bNPPnDIrwfQ0pItvS1dr SDFEbRSelGEh2fEycI6fFmf0al3CIY0br28ONLRhz0+EFgNONaaUlcAeRpyP/TtQILKH qWL0wupDOgov/7Hcr80sXmry1RR1g9XIlaywgEwgYmmqdQD00rCPuHtOvR950YrZ/pPZ CDhQF1RAVJxG2sWH6CLnqqQ/8cjTSP1MQ+XabEnVHOuUG9vf0NUnVJQx4rYFV8gHv4wK 1o46IhMfk5TDzddc9YfhueMCIjpTNZ/D30d2uvOuDN1wRUAw4E7TaaA+Xl+YDNYwI/zI arwQ== X-Gm-Message-State: AKwxytfcGxFXl3mVgS6HRc2m22NVdglgxVNiqd4+UIKMi/q48SWxlyhg 1qqFdhtvLibiM4gb+2ksryawM6gK X-Google-Smtp-Source: ACJfBovdAWJH++HJ9Rd5JWiOlwHXBCupDcCBYk8UqIi6heGzimp5y2n3QR4jE5IASX7ECtlB64Zw6w== X-Received: by 10.223.165.153 with SMTP id g25mr21454536wrc.141.1516112300328; Tue, 16 Jan 2018 06:18:20 -0800 (PST) Received: from 640k.lan (dynamic-adsl-78-12-229-84.clienti.tiscali.it. [78.12.229.84]) by smtp.gmail.com with ESMTPSA id u10sm1537758wrg.6.2018.01.16.06.18.18 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Tue, 16 Jan 2018 06:18:19 -0800 (PST) From: Paolo Bonzini To: qemu-devel@nongnu.org Date: Tue, 16 Jan 2018 15:17:13 +0100 Message-Id: <1516112253-14480-32-git-send-email-pbonzini@redhat.com> X-Mailer: git-send-email 1.8.3.1 In-Reply-To: <1516112253-14480-1-git-send-email-pbonzini@redhat.com> References: <1516112253-14480-1-git-send-email-pbonzini@redhat.com> X-detected-operating-system: by eggs.gnu.org: Genre and OS details not recognized. X-Received-From: 2a00:1450:400c:c0c::243 Subject: [Qemu-devel] [PULL 31/51] target/i386: hax: Move x86_update_hflags. 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: Tao Wu Errors-To: qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org Sender: "Qemu-devel" From: Tao Wu x86_update_hflags reference env->efer which is updated in hax_get_msrs, so it has to be called after hax_get_msrs. This fix the bug that sometimes dump_state show 32 bits regs even in 64 bits mode. Signed-off-by: Tao Wu Message-Id: <20180110195056.85403-3-lepton@google.com> Signed-off-by: Paolo Bonzini --- target/i386/hax-all.c | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/target/i386/hax-all.c b/target/i386/hax-all.c index 07df73e..934ec4a 100644 --- a/target/i386/hax-all.c +++ b/target/i386/hax-all.c @@ -837,9 +837,6 @@ static int hax_sync_vcpu_register(CPUArchState *env, int set) return -1; } } - if (!set) { - x86_update_hflags(env); - } return 0; } @@ -1020,6 +1017,7 @@ static int hax_arch_get_registers(CPUArchState *env) return ret; } + x86_update_hflags(env); return 0; } From patchwork Tue Jan 16 14:17:14 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Paolo Bonzini X-Patchwork-Id: 861657 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Authentication-Results: ozlabs.org; spf=pass (mailfrom) smtp.mailfrom=nongnu.org (client-ip=2001:4830:134:3::11; helo=lists.gnu.org; envelope-from=qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org; receiver=) Authentication-Results: ozlabs.org; dkim=fail reason="signature verification failed" (2048-bit key; unprotected) header.d=gmail.com header.i=@gmail.com header.b="hbiRLq/F"; dkim-atps=neutral Received: from lists.gnu.org (lists.gnu.org [IPv6:2001:4830:134:3::11]) (using TLSv1 with cipher AES256-SHA (256/256 bits)) (No client certificate requested) by ozlabs.org (Postfix) with ESMTPS id 3zLYGk50Vhz9sBd for ; Wed, 17 Jan 2018 01:57:18 +1100 (AEDT) Received: from localhost ([::1]:39460 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1ebSfs-000175-HU for incoming@patchwork.ozlabs.org; Tue, 16 Jan 2018 09:57:16 -0500 Received: from eggs.gnu.org ([2001:4830:134:3::10]:50670) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1ebS4O-0003Oq-56 for qemu-devel@nongnu.org; Tue, 16 Jan 2018 09:18:33 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1ebS4E-0004z0-SH for qemu-devel@nongnu.org; Tue, 16 Jan 2018 09:18:32 -0500 Received: from mail-wm0-x242.google.com ([2a00:1450:400c:c09::242]:46248) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1ebS4E-0004xe-MG for qemu-devel@nongnu.org; Tue, 16 Jan 2018 09:18:22 -0500 Received: by mail-wm0-x242.google.com with SMTP id 143so8640208wma.5 for ; Tue, 16 Jan 2018 06:18:22 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=sender:from:to:subject:date:message-id:in-reply-to:references; bh=13d/MZ8SeICCPDu/nrYW0AmsWfWBQL7gRaJrUKchWSM=; b=hbiRLq/FbOk9OFO/BDjG/gGItVNABLa2+wlhpLTatkXMeqLU3rPKr2U/oF1/q0PSbi ISMhfvZwoPDb1qv8rFsmRkDFJCwbkA/HkoWlM1jCJASg5Ug7nDViBLZRfclcRrltyZUh lhCj04zAMTruZvOd3P6Fqs3cEHUzmV6B62jf+unrL3Eqhy5Q0s5jxqc/mNH3YRfdt7e7 Syhs6Bw4yYOUoHlHyrQGEAUqYy+YTiRPGD3RoyNsVhyQ3I30G7JkmFh2EgSY7TxtSgxN 1FBCRSpFf3DnHiC8e/nUHSKwejFYVZ80JKFZfoEJIgVDbcZD4387IwuqYu8ir9th39vx TVeQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:sender:from:to:subject:date:message-id :in-reply-to:references; bh=13d/MZ8SeICCPDu/nrYW0AmsWfWBQL7gRaJrUKchWSM=; b=CT3pPOHe+O/rDb6WIt00En9OT4b5UxoehM51sqWIhl5dEUMTNqnYOKuXNRy2D9NXS2 gIA4XuPEf3V3qdUqaA1lJ6Glm2XvRKjpuJ/cF+kPnomLCiNulxg4ARzr9RNy4KvD4m/X t8AScxlOUrZaoRsYAP9LBY/jIiPvZKOsRQvDVMZvooLXOd6PgaHIarAJnrmLOmVfdNsY zpRztPFOsFLlIkEnnP0u6Zw//PveznrWr3ny2rQnzzqkS8T5hgXjm50X50rkyVsD9FPE UtUE/nWxxaMOnSKKLMDN+or11KRLwjot6/Kyyi7YuCKRgDwRAbOM6ixyYoUk9tuLHXdY 4EQQ== X-Gm-Message-State: AKwxytf+u7U+MtAap3AU0Eu0Z1u0LY5dGc720UJoz0h5ntRJzC0I7rm8 R4CHnCDlFBWBaN7Fr86RpUqVi6Z8 X-Google-Smtp-Source: ACJfBouuYwfsjV6fBA7ZqGdmXwUZybutEN0y7kSP0RllWZTCQ3esxrDulmW9u/DdnKfzWx/cnFSDCQ== X-Received: by 10.28.9.77 with SMTP id 74mr12954835wmj.107.1516112301404; Tue, 16 Jan 2018 06:18:21 -0800 (PST) Received: from 640k.lan (dynamic-adsl-78-12-229-84.clienti.tiscali.it. [78.12.229.84]) by smtp.gmail.com with ESMTPSA id u10sm1537758wrg.6.2018.01.16.06.18.20 for (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Tue, 16 Jan 2018 06:18:20 -0800 (PST) From: Paolo Bonzini To: qemu-devel@nongnu.org Date: Tue, 16 Jan 2018 15:17:14 +0100 Message-Id: <1516112253-14480-33-git-send-email-pbonzini@redhat.com> X-Mailer: git-send-email 1.8.3.1 In-Reply-To: <1516112253-14480-1-git-send-email-pbonzini@redhat.com> References: <1516112253-14480-1-git-send-email-pbonzini@redhat.com> X-detected-operating-system: by eggs.gnu.org: Genre and OS details not recognized. X-Received-From: 2a00:1450:400c:c09::242 Subject: [Qemu-devel] [PULL 32/51] target-i386: update hflags on Hypervisor.framework 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: , Errors-To: qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org Sender: "Qemu-devel" This ensures that x86_cpu_dump_state shows registers with the correct size. Signed-off-by: Paolo Bonzini --- target/i386/hvf/x86hvf.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/target/i386/hvf/x86hvf.c b/target/i386/hvf/x86hvf.c index 71c0515..7803e09 100644 --- a/target/i386/hvf/x86hvf.c +++ b/target/i386/hvf/x86hvf.c @@ -297,7 +297,6 @@ int hvf_get_registers(CPUState *cpu_state) X86CPU *x86cpu = X86_CPU(cpu_state); CPUX86State *env = &x86cpu->env; - env->regs[R_EAX] = rreg(cpu_state->hvf_fd, HV_X86_RAX); env->regs[R_EBX] = rreg(cpu_state->hvf_fd, HV_X86_RBX); env->regs[R_ECX] = rreg(cpu_state->hvf_fd, HV_X86_RCX); @@ -333,6 +332,7 @@ int hvf_get_registers(CPUState *cpu_state) env->dr[6] = rreg(cpu_state->hvf_fd, HV_X86_DR6); env->dr[7] = rreg(cpu_state->hvf_fd, HV_X86_DR7); + x86_update_hflags(env); return 0; } From patchwork Tue Jan 16 14:17:15 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: Paolo Bonzini X-Patchwork-Id: 861669 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Authentication-Results: ozlabs.org; spf=pass (mailfrom) smtp.mailfrom=nongnu.org (client-ip=2001:4830:134:3::11; helo=lists.gnu.org; envelope-from=qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org; receiver=) Authentication-Results: ozlabs.org; dkim=fail reason="signature verification failed" (2048-bit key; unprotected) header.d=gmail.com header.i=@gmail.com header.b="LZj1UfJ3"; dkim-atps=neutral Received: from lists.gnu.org (lists.gnu.org [IPv6:2001:4830:134:3::11]) (using TLSv1 with cipher AES256-SHA (256/256 bits)) (No client certificate requested) by ozlabs.org (Postfix) with ESMTPS id 3zLYRF65xkz9s7v for ; Wed, 17 Jan 2018 02:04:41 +1100 (AEDT) Received: from localhost ([::1]:39565 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1ebSn1-0007x1-PG for incoming@patchwork.ozlabs.org; Tue, 16 Jan 2018 10:04:39 -0500 Received: from eggs.gnu.org ([2001:4830:134:3::10]:50600) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1ebS4J-0003IM-LM for qemu-devel@nongnu.org; Tue, 16 Jan 2018 09:18:32 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1ebS4G-00051y-Ao for qemu-devel@nongnu.org; Tue, 16 Jan 2018 09:18:27 -0500 Received: from mail-wr0-x241.google.com ([2a00:1450:400c:c0c::241]:45406) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1ebS4G-000501-3o for qemu-devel@nongnu.org; Tue, 16 Jan 2018 09:18:24 -0500 Received: by mail-wr0-x241.google.com with SMTP id 16so15333055wry.12 for ; Tue, 16 Jan 2018 06:18:24 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=sender:from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=jQ0zev7HbBd4Se78/C004unL1JvTQkF6pSVZna7txHs=; b=LZj1UfJ3Exnuh21rfgf0SmGxg0c1lMZmF/4LT3PHiGHQrRy4KXleIQdpWM+Nf3exqJ N+ElMqF3OVz5h3higYHCcBCmT6i49GJr3QyPUZjCITrYZYJf8uTEpwnaNz765IeEb5my 4Uf7A8ST9lz0BDyhAbLZ5GM1hR24aZ9I5pRTpXo4Vp9148YTAhQCx09jMVG680126yRC gX01GOhkE1EfybvM/QnwpmR/6h9dzAk7AtYBIg1QcYjvk/STDdcUUEpRsCyKBDJtNpPy Dd9xgCy5w86xPI+MFeB8XviO49GRt273K8G+iP5NPBzOXcFXwATAhR8kUUpl2YWVLdrX TI/w== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:sender:from:to:cc:subject:date:message-id :in-reply-to:references:mime-version:content-transfer-encoding; bh=jQ0zev7HbBd4Se78/C004unL1JvTQkF6pSVZna7txHs=; b=aL1lInle1H77a1+V9k5xDb69pwgQztRpwcpfRkiHoo1O9dJ+yT/ALwtQnLaLnR44iF O1zGyFUSKX8Hqpnh32Szv9jpVa6i/2z6J0fBm6l3y4NwpaviQ+0ZYwhlGWdr0R/NL5Vt akuisCi9nIUpZPwqjJwYZ608wYesL/NKS1NBWwaDBC9BUvKlGYAN0tHI9dqHX1Z7fB7n x6BKcQ63Tf5ixEZ71SEi82/yxxEUoXmxFJRMI+WnaMlW3PX3Wc6quB3aKmvr/gns1485 lK5RxdNH+V9t/SZ8BeIR7AzDFWEf1nS6pHEQRDkZdxmmsunUYbnPoDbHMmTLO6l5eQV1 xUhw== X-Gm-Message-State: AKwxytcrNUD8QHeZgJ55CJmDehne4haq7Slxh8mypu0lHkVrbgzN9oQy KQQq8bhLRX8T8l540Et5lc5/73R3 X-Google-Smtp-Source: ACJfBovrTeBh5eMeTyI55hOqZ+B7xG3BEAdPZ2wfhjMxsKXsz+IwlfUNwqA87HkqVxg1JjcY8K9tXg== X-Received: by 10.223.134.58 with SMTP id 55mr15229967wrv.262.1516112302793; Tue, 16 Jan 2018 06:18:22 -0800 (PST) Received: from 640k.lan (dynamic-adsl-78-12-229-84.clienti.tiscali.it. [78.12.229.84]) by smtp.gmail.com with ESMTPSA id u10sm1537758wrg.6.2018.01.16.06.18.21 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Tue, 16 Jan 2018 06:18:21 -0800 (PST) From: Paolo Bonzini To: qemu-devel@nongnu.org Date: Tue, 16 Jan 2018 15:17:15 +0100 Message-Id: <1516112253-14480-34-git-send-email-pbonzini@redhat.com> X-Mailer: git-send-email 1.8.3.1 In-Reply-To: <1516112253-14480-1-git-send-email-pbonzini@redhat.com> References: <1516112253-14480-1-git-send-email-pbonzini@redhat.com> MIME-Version: 1.0 X-detected-operating-system: by eggs.gnu.org: Genre and OS details not recognized. X-Received-From: 2a00:1450:400c:c0c::241 Subject: [Qemu-devel] [PULL 33/51] scripts/qemu-gdb: add simple tcg lock status helper 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: =?utf-8?q?Alex_Benn=C3=A9e?= Errors-To: qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org Sender: "Qemu-devel" From: Alex Bennée Add a simple helper to dump lock state. Signed-off-by: Alex Bennée Signed-off-by: Paolo Bonzini --- scripts/qemu-gdb.py | 3 ++- scripts/qemugdb/tcg.py | 46 ++++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 48 insertions(+), 1 deletion(-) create mode 100644 scripts/qemugdb/tcg.py diff --git a/scripts/qemu-gdb.py b/scripts/qemu-gdb.py index b3f8e04..d58213e 100644 --- a/scripts/qemu-gdb.py +++ b/scripts/qemu-gdb.py @@ -26,7 +26,7 @@ import os, sys sys.path.append(os.path.dirname(__file__)) -from qemugdb import aio, mtree, coroutine +from qemugdb import aio, mtree, coroutine, tcg class QemuCommand(gdb.Command): '''Prefix for QEMU debug support commands''' @@ -38,6 +38,7 @@ QemuCommand() coroutine.CoroutineCommand() mtree.MtreeCommand() aio.HandlersCommand() +tcg.TCGLockStatusCommand() coroutine.CoroutineSPFunction() coroutine.CoroutinePCFunction() diff --git a/scripts/qemugdb/tcg.py b/scripts/qemugdb/tcg.py new file mode 100644 index 0000000..8c7f1d7 --- /dev/null +++ b/scripts/qemugdb/tcg.py @@ -0,0 +1,46 @@ +#!/usr/bin/python +# -*- coding: utf-8 -*- +# +# GDB debugging support, TCG status +# +# Copyright 2016 Linaro Ltd +# +# Authors: +# Alex Bennée +# +# This work is licensed under the terms of the GNU GPL, version 2. See +# the COPYING file in the top-level directory. +# +# Contributions after 2012-01-13 are licensed under the terms of the +# GNU GPL, version 2 or (at your option) any later version. + +# 'qemu tcg-lock-status' -- display the TCG lock status across threads + +import gdb + +class TCGLockStatusCommand(gdb.Command): + '''Display TCG Execution Status''' + def __init__(self): + gdb.Command.__init__(self, 'qemu tcg-lock-status', gdb.COMMAND_DATA, + gdb.COMPLETE_NONE) + + def invoke(self, arg, from_tty): + gdb.write("Thread, BQL (iothread_mutex), Replay, Blocked?\n") + for thread in gdb.inferiors()[0].threads(): + thread.switch() + + iothread = gdb.parse_and_eval("iothread_locked") + replay = gdb.parse_and_eval("replay_locked") + + frame = gdb.selected_frame() + if frame.name() == "__lll_lock_wait": + frame.older().select() + mutex = gdb.parse_and_eval("mutex") + owner = gdb.parse_and_eval("mutex->__data.__owner") + blocked = ("__lll_lock_wait waiting on %s from %d" % + (mutex, owner)) + else: + blocked = "not blocked" + + gdb.write("%d/%d, %s, %s, %s\n" % (thread.num, thread.ptid[1], + iothread, replay, blocked)) From patchwork Tue Jan 16 14:17:16 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: Paolo Bonzini X-Patchwork-Id: 861658 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Authentication-Results: ozlabs.org; spf=pass (mailfrom) smtp.mailfrom=nongnu.org (client-ip=2001:4830:134:3::11; helo=lists.gnu.org; envelope-from=qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org; receiver=) Authentication-Results: ozlabs.org; dkim=fail reason="signature verification failed" (2048-bit key; unprotected) header.d=gmail.com header.i=@gmail.com header.b="rnYEapmb"; dkim-atps=neutral Received: from lists.gnu.org (lists.gnu.org [IPv6:2001:4830:134:3::11]) (using TLSv1 with cipher AES256-SHA (256/256 bits)) (No client certificate requested) by ozlabs.org (Postfix) with ESMTPS id 3zLYH317RTz9s83 for ; Wed, 17 Jan 2018 01:57:35 +1100 (AEDT) Received: from localhost ([::1]:39465 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1ebSg9-0001M3-6D for incoming@patchwork.ozlabs.org; Tue, 16 Jan 2018 09:57:33 -0500 Received: from eggs.gnu.org ([2001:4830:134:3::10]:50664) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1ebS4N-0003OK-Lv for qemu-devel@nongnu.org; Tue, 16 Jan 2018 09:18:33 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1ebS4H-00055n-Qz for qemu-devel@nongnu.org; Tue, 16 Jan 2018 09:18:31 -0500 Received: from mail-wm0-x241.google.com ([2a00:1450:400c:c09::241]:44170) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1ebS4H-00054A-JZ for qemu-devel@nongnu.org; Tue, 16 Jan 2018 09:18:25 -0500 Received: by mail-wm0-x241.google.com with SMTP id t74so8752398wme.3 for ; Tue, 16 Jan 2018 06:18:25 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=sender:from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=nM5x7nn6gBUN79XLiJu7Jfxk/UEegVHCqc7JSXTe0hE=; b=rnYEapmb0GG+0d8XSTitKJMs3WekyyFozMTB4eJYzAIQ3i4s73XFkGeWWTd6IEKWeM /Saxg7o0z070A+Rf1UiwRWcSAX7hFQX4cn4D+AjYZk7RqaaVL+ASJu3Y0cXXbe6K7eoT vFnrdW8ac0vsBtiE9Z9P3imnGb6ji+ogWS+nUymaIkNQPOlOyds5djwaH0XejQMF2G0s fK+xzcTnR8U/m9M3us3SPrqxv9SFijxENmNKmOEznFLWBrJQbI1zFhLz8+ZyWM2Jy4bp HcBUvQQSVJt4epixTGLOsZShKaw+mqG5DpUz4pV6FvAL4WaGpYIRbNxQUokJA2SdTJ3m kG7w== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:sender:from:to:cc:subject:date:message-id :in-reply-to:references:mime-version:content-transfer-encoding; bh=nM5x7nn6gBUN79XLiJu7Jfxk/UEegVHCqc7JSXTe0hE=; b=k2pWRd4g/kXZvBqICnlhdQMQsYsPh6FAWU1YlNesOfEawQgKOi5tEjrF0MmEfxRJkb kvME3gc0ZdQetuKuPDjAolcLwOpWijps+MJjF1vjORKfSxir+w6TNFUuoEumqFDAYk7e 5rla1OQktJIiTYQsD6xv1+F1n1RpLT0Zu6ZDscQ2A76q/n04iCQIyi3p3LK8oTy7ECSI Z4V1tv+xUTMXWOj7UoJq28lVLFS7tent/POK5tv93g6uO/6IozANg4b8nYs11sAk4nDN MDNwD2xy6F5WDo8FR4f8DOoxh/V6lrkG1U12pJ+Rcunrr7Z6YXxCwWeKZ3gjSvN9KxBr 1s7A== X-Gm-Message-State: AKwxytdHjlxjn3O/UCaEAzlmk1HWpjuUN88TBfkL6TGuhHRi3iqeqW92 ERaAz7Mxc/+XT38tWmZ+zlne72QQ X-Google-Smtp-Source: ACJfBouORisczAyBCsnV9KwCixA+C7+e7xUTOq3+WgPo45fVSwOAel+eHuG9LJVw6/6NwZM5EvRs5g== X-Received: by 10.28.129.212 with SMTP id c203mr13009478wmd.98.1516112304252; Tue, 16 Jan 2018 06:18:24 -0800 (PST) Received: from 640k.lan (dynamic-adsl-78-12-229-84.clienti.tiscali.it. [78.12.229.84]) by smtp.gmail.com with ESMTPSA id u10sm1537758wrg.6.2018.01.16.06.18.22 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Tue, 16 Jan 2018 06:18:23 -0800 (PST) From: Paolo Bonzini To: qemu-devel@nongnu.org Date: Tue, 16 Jan 2018 15:17:16 +0100 Message-Id: <1516112253-14480-35-git-send-email-pbonzini@redhat.com> X-Mailer: git-send-email 1.8.3.1 In-Reply-To: <1516112253-14480-1-git-send-email-pbonzini@redhat.com> References: <1516112253-14480-1-git-send-email-pbonzini@redhat.com> MIME-Version: 1.0 X-detected-operating-system: by eggs.gnu.org: Genre and OS details not recognized. X-Received-From: 2a00:1450:400c:c09::241 Subject: [Qemu-devel] [PULL 34/51] scripts/qemu-gdb/timers.py: new helper to dump timer state 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: =?utf-8?q?Alex_Benn=C3=A9e?= Errors-To: qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org Sender: "Qemu-devel" From: Alex Bennée This introduces the qemu-gdb command "qemu timers" which will dump the state of the main timers in the system. Signed-off-by: Alex Bennée Reviewed-by: Philippe Mathieu-Daudé Signed-off-by: Paolo Bonzini --- scripts/qemu-gdb.py | 3 ++- scripts/qemugdb/timers.py | 54 +++++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 56 insertions(+), 1 deletion(-) create mode 100644 scripts/qemugdb/timers.py diff --git a/scripts/qemu-gdb.py b/scripts/qemu-gdb.py index d58213e..690827e 100644 --- a/scripts/qemu-gdb.py +++ b/scripts/qemu-gdb.py @@ -26,7 +26,7 @@ import os, sys sys.path.append(os.path.dirname(__file__)) -from qemugdb import aio, mtree, coroutine, tcg +from qemugdb import aio, mtree, coroutine, tcg, timers class QemuCommand(gdb.Command): '''Prefix for QEMU debug support commands''' @@ -39,6 +39,7 @@ coroutine.CoroutineCommand() mtree.MtreeCommand() aio.HandlersCommand() tcg.TCGLockStatusCommand() +timers.TimersCommand() coroutine.CoroutineSPFunction() coroutine.CoroutinePCFunction() diff --git a/scripts/qemugdb/timers.py b/scripts/qemugdb/timers.py new file mode 100644 index 0000000..be71a00 --- /dev/null +++ b/scripts/qemugdb/timers.py @@ -0,0 +1,54 @@ +#!/usr/bin/python +# GDB debugging support +# +# Copyright 2017 Linaro Ltd +# +# Author: Alex Bennée +# +# This work is licensed under the terms of the GNU GPL, version 2. See +# the COPYING file in the top-level directory. + +# 'qemu timers' -- display the current timerlists + +import gdb + +class TimersCommand(gdb.Command): + '''Display the current QEMU timers''' + + def __init__(self): + 'Register the class as a gdb command' + gdb.Command.__init__(self, 'qemu timers', gdb.COMMAND_DATA, + gdb.COMPLETE_NONE) + + def dump_timers(self, timer): + "Follow a timer and recursively dump each one in the list." + # timer should be of type QemuTimer + gdb.write(" timer %s/%s (cb:%s,opq:%s)\n" % ( + timer['expire_time'], + timer['scale'], + timer['cb'], + timer['opaque'])) + + if int(timer['next']) > 0: + self.dump_timers(timer['next']) + + + def process_timerlist(self, tlist, ttype): + gdb.write("Processing %s timers\n" % (ttype)) + gdb.write(" clock %s is enabled:%s, last:%s\n" % ( + tlist['clock']['type'], + tlist['clock']['enabled'], + tlist['clock']['last'])) + if int(tlist['active_timers']) > 0: + self.dump_timers(tlist['active_timers']) + + + def invoke(self, arg, from_tty): + 'Run the command' + main_timers = gdb.parse_and_eval("main_loop_tlg") + + # This will break if QEMUClockType in timer.h is redfined + self.process_timerlist(main_timers['tl'][0], "Realtime") + self.process_timerlist(main_timers['tl'][1], "Virtual") + self.process_timerlist(main_timers['tl'][2], "Host") + self.process_timerlist(main_timers['tl'][3], "Virtual RT") From patchwork Tue Jan 16 14:17:17 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Paolo Bonzini X-Patchwork-Id: 861655 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Authentication-Results: ozlabs.org; spf=pass (mailfrom) smtp.mailfrom=nongnu.org (client-ip=2001:4830:134:3::11; helo=lists.gnu.org; envelope-from=qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org; receiver=) Authentication-Results: ozlabs.org; dkim=fail reason="signature verification failed" (2048-bit key; unprotected) header.d=gmail.com header.i=@gmail.com header.b="LwSzBs3+"; dkim-atps=neutral Received: from lists.gnu.org (lists.gnu.org [IPv6:2001:4830:134:3::11]) (using TLSv1 with cipher AES256-SHA (256/256 bits)) (No client certificate requested) by ozlabs.org (Postfix) with ESMTPS id 3zLYDX4VM6z9s7v for ; Wed, 17 Jan 2018 01:55:24 +1100 (AEDT) Received: from localhost ([::1]:39438 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1ebSe2-0007up-LB for incoming@patchwork.ozlabs.org; Tue, 16 Jan 2018 09:55:22 -0500 Received: from eggs.gnu.org ([2001:4830:134:3::10]:50616) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1ebS4K-0003KB-MI for qemu-devel@nongnu.org; Tue, 16 Jan 2018 09:18:30 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1ebS4J-00056n-3b for qemu-devel@nongnu.org; Tue, 16 Jan 2018 09:18:28 -0500 Received: from mail-wr0-x244.google.com ([2a00:1450:400c:c0c::244]:39389) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1ebS4I-000566-Q0 for qemu-devel@nongnu.org; Tue, 16 Jan 2018 09:18:27 -0500 Received: by mail-wr0-x244.google.com with SMTP id z48so15341801wrz.6 for ; Tue, 16 Jan 2018 06:18:26 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=sender:from:to:cc:subject:date:message-id:in-reply-to:references; bh=2eVEPGGd0p1cc+W9ih7Iyu213y0WXBSfJ07Qj6gqueo=; b=LwSzBs3++mtfyQQLUbAXE8JoUW4iUPEC0NBCqKQphTo9BAnwRnyF9UJlR33Wj+iedb gDT2ox3hAvz09s6NAcaepyad3Wn/XdZ3MX/ZqpTeaUvwbs3yH06Wd2y7SCJ/073ADqub yyUJh4mJBAytubRilZKoYD0TIZgRZVe9lE1asMC1+tFbCfm2k08u/YwC+AwgSv6KzPS2 5yJ/pzlkh3iK4KYgYD7ea5MQHwVOaJGJx3X4zvua8/Iqhc/TcK6brJ4ZV4MQsEnFnWiV VsvWYmfE/bfwb7Jf2gWuFFnKfdJbMS0MFVKtmkaFfPx4dwcBYgMmJyD3LwZRax8Q53Yo c0ig== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:sender:from:to:cc:subject:date:message-id :in-reply-to:references; bh=2eVEPGGd0p1cc+W9ih7Iyu213y0WXBSfJ07Qj6gqueo=; b=EcLQChB3wsPDKPjGSoK+V0fnHenudSzU9HOVpVrAM62ibAaeMniNdaDfwcXcsJRKvG LSlViWzXtWOg7+1Tc41C9j4A66zn0d+TL2v+FVuAEYdo0Fj+aLZu0zBWV9bhC/Zv3DfJ 47SALbBe6u5lWXATxWz4Zm2cVOdv2p1SVE2CHnIMO2m98f1IBemX+qse5hd/UrI6uhtP Ib7y3YhWuQsM0JF+LW0k41anegMZq1rVpLHeDqBVayIMY7SyOHdJp2DSn35FWgDtDScO mmDvF3hfOZaay9TOYiTaEdoce681UNGgqEtJIUrNj0SQK+xBuW/zFrp96iSpT7h3sDNf 6FvA== X-Gm-Message-State: AKGB3mKSbVLsg2t1cbVaZ6AIehvrHENt3zH9+v3sHepDl0lQ2ZLSwhY6 di2P3TL34Wke8di72Xpqt8+BOgdj X-Google-Smtp-Source: ACJfBosWeJDWCan3acldJhphHiO79DPSCQrK1BiwQWjKGbAi3TcjumUFp7bQxH29VAqBzdYHVJ4KVA== X-Received: by 10.223.136.110 with SMTP id e43mr23760676wre.98.1516112305477; Tue, 16 Jan 2018 06:18:25 -0800 (PST) Received: from 640k.lan (dynamic-adsl-78-12-229-84.clienti.tiscali.it. [78.12.229.84]) by smtp.gmail.com with ESMTPSA id u10sm1537758wrg.6.2018.01.16.06.18.24 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Tue, 16 Jan 2018 06:18:24 -0800 (PST) From: Paolo Bonzini To: qemu-devel@nongnu.org Date: Tue, 16 Jan 2018 15:17:17 +0100 Message-Id: <1516112253-14480-36-git-send-email-pbonzini@redhat.com> X-Mailer: git-send-email 1.8.3.1 In-Reply-To: <1516112253-14480-1-git-send-email-pbonzini@redhat.com> References: <1516112253-14480-1-git-send-email-pbonzini@redhat.com> X-detected-operating-system: by eggs.gnu.org: Genre and OS details not recognized. X-Received-From: 2a00:1450:400c:c0c::244 Subject: [Qemu-devel] [PULL 35/51] icount: fixed saving/restoring of icount warp timers 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: Pavel Dovgalyuk Errors-To: qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org Sender: "Qemu-devel" From: Pavel Dovgalyuk This patch adds saving and restoring of the icount warp timers in the vmstate. It is needed because there timers affect the virtual clock value. Therefore determinism of the execution in icount record/replay mode depends on determinism of the timers. Signed-off-by: Pavel Dovgalyuk Acked-by: Paolo Bonzini Signed-off-by: Paolo Bonzini Signed-off-by: Pavel Dovgalyuk --- cpus.c | 85 +++++++++++++++++++++++++++++++++++++++++++++++++++--------------- 1 file changed, 66 insertions(+), 19 deletions(-) diff --git a/cpus.c b/cpus.c index e8139de..f992537 100644 --- a/cpus.c +++ b/cpus.c @@ -120,16 +120,11 @@ static bool all_cpu_threads_idle(void) /* Protected by TimersState seqlock */ static bool icount_sleep = true; -static int64_t vm_clock_warp_start = -1; /* Conversion factor from emulated instructions to virtual clock ticks. */ static int icount_time_shift; /* Arbitrarily pick 1MIPS as the minimum allowable speed. */ #define MAX_ICOUNT_SHIFT 10 -static QEMUTimer *icount_rt_timer; -static QEMUTimer *icount_vm_timer; -static QEMUTimer *icount_warp_timer; - typedef struct TimersState { /* Protected by BQL. */ int64_t cpu_ticks_prev; @@ -147,6 +142,11 @@ typedef struct TimersState { int64_t qemu_icount_bias; /* Only written by TCG thread */ int64_t qemu_icount; + /* for adjusting icount */ + int64_t vm_clock_warp_start; + QEMUTimer *icount_rt_timer; + QEMUTimer *icount_vm_timer; + QEMUTimer *icount_warp_timer; } TimersState; static TimersState timers_state; @@ -432,14 +432,14 @@ static void icount_adjust(void) static void icount_adjust_rt(void *opaque) { - timer_mod(icount_rt_timer, + timer_mod(timers_state.icount_rt_timer, qemu_clock_get_ms(QEMU_CLOCK_VIRTUAL_RT) + 1000); icount_adjust(); } static void icount_adjust_vm(void *opaque) { - timer_mod(icount_vm_timer, + timer_mod(timers_state.icount_vm_timer, qemu_clock_get_ns(QEMU_CLOCK_VIRTUAL) + NANOSECONDS_PER_SECOND / 10); icount_adjust(); @@ -460,7 +460,7 @@ static void icount_warp_rt(void) */ do { seq = seqlock_read_begin(&timers_state.vm_clock_seqlock); - warp_start = vm_clock_warp_start; + warp_start = timers_state.vm_clock_warp_start; } while (seqlock_read_retry(&timers_state.vm_clock_seqlock, seq)); if (warp_start == -1) { @@ -473,7 +473,7 @@ static void icount_warp_rt(void) cpu_get_clock_locked()); int64_t warp_delta; - warp_delta = clock - vm_clock_warp_start; + warp_delta = clock - timers_state.vm_clock_warp_start; if (use_icount == 2) { /* * In adaptive mode, do not let QEMU_CLOCK_VIRTUAL run too @@ -485,7 +485,7 @@ static void icount_warp_rt(void) } timers_state.qemu_icount_bias += warp_delta; } - vm_clock_warp_start = -1; + timers_state.vm_clock_warp_start = -1; seqlock_write_end(&timers_state.vm_clock_seqlock); if (qemu_clock_expired(QEMU_CLOCK_VIRTUAL)) { @@ -594,11 +594,13 @@ void qemu_start_warp_timer(void) * every 100ms. */ seqlock_write_begin(&timers_state.vm_clock_seqlock); - if (vm_clock_warp_start == -1 || vm_clock_warp_start > clock) { - vm_clock_warp_start = clock; + if (timers_state.vm_clock_warp_start == -1 + || timers_state.vm_clock_warp_start > clock) { + timers_state.vm_clock_warp_start = clock; } seqlock_write_end(&timers_state.vm_clock_seqlock); - timer_mod_anticipate(icount_warp_timer, clock + deadline); + timer_mod_anticipate(timers_state.icount_warp_timer, + clock + deadline); } } else if (deadline == 0) { qemu_clock_notify(QEMU_CLOCK_VIRTUAL); @@ -623,7 +625,7 @@ static void qemu_account_warp_timer(void) return; } - timer_del(icount_warp_timer); + timer_del(timers_state.icount_warp_timer); icount_warp_rt(); } @@ -632,6 +634,45 @@ static bool icount_state_needed(void *opaque) return use_icount; } +static bool warp_timer_state_needed(void *opaque) +{ + TimersState *s = opaque; + return s->icount_warp_timer != NULL; +} + +static bool adjust_timers_state_needed(void *opaque) +{ + TimersState *s = opaque; + return s->icount_rt_timer != NULL; +} + +/* + * Subsection for warp timer migration is optional, because may not be created + */ +static const VMStateDescription icount_vmstate_warp_timer = { + .name = "timer/icount/warp_timer", + .version_id = 1, + .minimum_version_id = 1, + .needed = warp_timer_state_needed, + .fields = (VMStateField[]) { + VMSTATE_INT64(vm_clock_warp_start, TimersState), + VMSTATE_TIMER_PTR(icount_warp_timer, TimersState), + VMSTATE_END_OF_LIST() + } +}; + +static const VMStateDescription icount_vmstate_adjust_timers = { + .name = "timer/icount/timers", + .version_id = 1, + .minimum_version_id = 1, + .needed = adjust_timers_state_needed, + .fields = (VMStateField[]) { + VMSTATE_TIMER_PTR(icount_rt_timer, TimersState), + VMSTATE_TIMER_PTR(icount_vm_timer, TimersState), + VMSTATE_END_OF_LIST() + } +}; + /* * This is a subsection for icount migration. */ @@ -644,6 +685,11 @@ static const VMStateDescription icount_vmstate_timers = { VMSTATE_INT64(qemu_icount_bias, TimersState), VMSTATE_INT64(qemu_icount, TimersState), VMSTATE_END_OF_LIST() + }, + .subsections = (const VMStateDescription*[]) { + &icount_vmstate_warp_timer, + &icount_vmstate_adjust_timers, + NULL } }; @@ -754,7 +800,7 @@ void configure_icount(QemuOpts *opts, Error **errp) icount_sleep = qemu_opt_get_bool(opts, "sleep", true); if (icount_sleep) { - icount_warp_timer = timer_new_ns(QEMU_CLOCK_VIRTUAL_RT, + timers_state.icount_warp_timer = timer_new_ns(QEMU_CLOCK_VIRTUAL_RT, icount_timer_cb, NULL); } @@ -788,13 +834,14 @@ void configure_icount(QemuOpts *opts, Error **errp) the virtual time trigger catches emulated time passing too fast. Realtime triggers occur even when idle, so use them less frequently than VM triggers. */ - icount_rt_timer = timer_new_ms(QEMU_CLOCK_VIRTUAL_RT, + timers_state.vm_clock_warp_start = -1; + timers_state.icount_rt_timer = timer_new_ms(QEMU_CLOCK_VIRTUAL_RT, icount_adjust_rt, NULL); - timer_mod(icount_rt_timer, + timer_mod(timers_state.icount_rt_timer, qemu_clock_get_ms(QEMU_CLOCK_VIRTUAL_RT) + 1000); - icount_vm_timer = timer_new_ns(QEMU_CLOCK_VIRTUAL, + timers_state.icount_vm_timer = timer_new_ns(QEMU_CLOCK_VIRTUAL, icount_adjust_vm, NULL); - timer_mod(icount_vm_timer, + timer_mod(timers_state.icount_vm_timer, qemu_clock_get_ns(QEMU_CLOCK_VIRTUAL) + NANOSECONDS_PER_SECOND / 10); } From patchwork Tue Jan 16 14:17:18 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Paolo Bonzini X-Patchwork-Id: 861664 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Authentication-Results: ozlabs.org; spf=pass (mailfrom) smtp.mailfrom=nongnu.org (client-ip=2001:4830:134:3::11; helo=lists.gnu.org; envelope-from=qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org; receiver=) Authentication-Results: ozlabs.org; dkim=fail reason="signature verification failed" (2048-bit key; unprotected) header.d=gmail.com header.i=@gmail.com header.b="Kgu5bVHM"; dkim-atps=neutral Received: from lists.gnu.org (lists.gnu.org [IPv6:2001:4830:134:3::11]) (using TLSv1 with cipher AES256-SHA (256/256 bits)) (No client certificate requested) by ozlabs.org (Postfix) with ESMTPS id 3zLYLR0yDxz9s7v for ; Wed, 17 Jan 2018 02:00:31 +1100 (AEDT) Received: from localhost ([::1]:39480 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1ebSiz-0004CY-3G for incoming@patchwork.ozlabs.org; Tue, 16 Jan 2018 10:00:29 -0500 Received: from eggs.gnu.org ([2001:4830:134:3::10]:50685) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1ebS4O-0003PU-J3 for qemu-devel@nongnu.org; Tue, 16 Jan 2018 09:18:33 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1ebS4K-00057s-H9 for qemu-devel@nongnu.org; Tue, 16 Jan 2018 09:18:32 -0500 Received: from mail-wm0-x244.google.com ([2a00:1450:400c:c09::244]:40837) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1ebS4K-00057A-7Z for qemu-devel@nongnu.org; Tue, 16 Jan 2018 09:18:28 -0500 Received: by mail-wm0-x244.google.com with SMTP id v123so8963831wmd.5 for ; Tue, 16 Jan 2018 06:18:28 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=sender:from:to:subject:date:message-id:in-reply-to:references; bh=AiIYpC9+gYEeIHWxrtYjt1/UbVT75EBiilTokgZjCOs=; b=Kgu5bVHM2RloDwz/ZyqE3VtPJTZQvT8ICgqtXX5FroHoYzN8HNeEoMY2d8LsdyVj3h 4xvKHUNU/NdS68N/oQ7An6mn0szRDSrRy1rBj5549dE7tRUk0TDUnu771ZPBTREP4yxp dLMi+YlK2XgpsQdhGpfxSgWPWSFgmXOBYQahaFNaFVgEi/6G3gd1WXO1jKcm5YF7rdBo G+YraJKnR4xBtsK+EdQHIYCYsmEgivz4IG0eU7dNePce+VffQ+uHK5Aol+XncXm8mPKD fBrZuhonlCG6a+vhL1Ywy1tueDCB1K9lzXePdog09oEZ3AExR3YbKpgZ32soWG1vC7dK xq8A== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:sender:from:to:subject:date:message-id :in-reply-to:references; bh=AiIYpC9+gYEeIHWxrtYjt1/UbVT75EBiilTokgZjCOs=; b=EKYNCSoxbjLX9z0gRXvJWfJ8dg+Wis/ZWUimAw2qo3+XJEkHlGIt+wRJL9iEcZ2dIE VgkWS4FAPzTENSFiN4mN6NIzRmPRzW4YbJ5X/ewJOGn0CvRmd9E+r+qK7ma/bDXhWyya FlfH+l+ff0AI0WdXW+IS+uLCoLs0RlWSpP6LqfBPaZ5311Nb5tLlsvIMNru/kRX9+1/z gZZKG3AtRIfyn5D/LhMaVRSjdm6vDHlnvSkARpSa3OggL0MMIPstQ/ktfRcdnncHevMB 2v+VZhY+zdEiyIpEif7TKskRJxtUZoytiFVYhRXxvGruGv4mvY2piIxC/fRmOIqvzAWz oV0A== X-Gm-Message-State: AKwxytfStYO09D3eM+/H+vjJ3sTn2Z9MTbNo9q5kaa0ZCmootezDVUAP g773RM3nzfgdOjwFgTZgGgjWglLq X-Google-Smtp-Source: ACJfBotISASF+u2eUudxsX7GVojI41Em/1XwH7M/Rbg86dslly+ZvIpCg8xgVnd0gK9n+e2+6A9/Ng== X-Received: by 10.28.238.202 with SMTP id j71mr13411688wmi.34.1516112306868; Tue, 16 Jan 2018 06:18:26 -0800 (PST) Received: from 640k.lan (dynamic-adsl-78-12-229-84.clienti.tiscali.it. [78.12.229.84]) by smtp.gmail.com with ESMTPSA id u10sm1537758wrg.6.2018.01.16.06.18.25 for (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Tue, 16 Jan 2018 06:18:26 -0800 (PST) From: Paolo Bonzini To: qemu-devel@nongnu.org Date: Tue, 16 Jan 2018 15:17:18 +0100 Message-Id: <1516112253-14480-37-git-send-email-pbonzini@redhat.com> X-Mailer: git-send-email 1.8.3.1 In-Reply-To: <1516112253-14480-1-git-send-email-pbonzini@redhat.com> References: <1516112253-14480-1-git-send-email-pbonzini@redhat.com> X-detected-operating-system: by eggs.gnu.org: Genre and OS details not recognized. X-Received-From: 2a00:1450:400c:c09::244 Subject: [Qemu-devel] [PULL 36/51] cpus: unify qemu_*_wait_io_event 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: , Errors-To: qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org Sender: "Qemu-devel" Except for round-robin TCG, every other accelerator is using more or less the same code around qemu_wait_io_event_common. The exception is HAX, which also has to eat the dummy APC that is queued by qemu_cpu_kick_thread. We can add the SleepEx call to qemu_wait_io_event under "if (!tcg_enabled())", since that is the condition that is used in qemu_cpu_kick_thread, and unify the function for KVM, HAX, HVF and multi-threaded TCG. Single-threaded TCG code can also be simplified since it is only used in the round-robin, sleep-if-all-CPUs-idle case. Signed-off-by: Paolo Bonzini --- cpus.c | 49 +++++++++++++++++-------------------------------- 1 file changed, 17 insertions(+), 32 deletions(-) diff --git a/cpus.c b/cpus.c index f992537..2cb0af9 100644 --- a/cpus.c +++ b/cpus.c @@ -909,7 +909,8 @@ static void kick_tcg_thread(void *opaque) static void start_tcg_kick_timer(void) { - if (!mttcg_enabled && !tcg_kick_vcpu_timer && CPU_NEXT(first_cpu)) { + assert(!mttcg_enabled); + if (!tcg_kick_vcpu_timer && CPU_NEXT(first_cpu)) { tcg_kick_vcpu_timer = timer_new_ns(QEMU_CLOCK_VIRTUAL, kick_tcg_thread, NULL); timer_mod(tcg_kick_vcpu_timer, qemu_tcg_next_kick()); @@ -918,6 +919,7 @@ static void start_tcg_kick_timer(void) static void stop_tcg_kick_timer(void) { + assert(!mttcg_enabled); if (tcg_kick_vcpu_timer) { timer_del(tcg_kick_vcpu_timer); tcg_kick_vcpu_timer = NULL; @@ -1137,18 +1139,9 @@ static void qemu_wait_io_event_common(CPUState *cpu) process_queued_cpu_work(cpu); } -static bool qemu_tcg_should_sleep(CPUState *cpu) +static void qemu_tcg_rr_wait_io_event(CPUState *cpu) { - if (mttcg_enabled) { - return cpu_thread_is_idle(cpu); - } else { - return all_cpu_threads_idle(); - } -} - -static void qemu_tcg_wait_io_event(CPUState *cpu) -{ - while (qemu_tcg_should_sleep(cpu)) { + while (all_cpu_threads_idle()) { stop_tcg_kick_timer(); qemu_cond_wait(cpu->halt_cond, &qemu_global_mutex); } @@ -1158,20 +1151,18 @@ static void qemu_tcg_wait_io_event(CPUState *cpu) qemu_wait_io_event_common(cpu); } -static void qemu_kvm_wait_io_event(CPUState *cpu) +static void qemu_wait_io_event(CPUState *cpu) { while (cpu_thread_is_idle(cpu)) { qemu_cond_wait(cpu->halt_cond, &qemu_global_mutex); } - qemu_wait_io_event_common(cpu); -} - -static void qemu_hvf_wait_io_event(CPUState *cpu) -{ - while (cpu_thread_is_idle(cpu)) { - qemu_cond_wait(cpu->halt_cond, &qemu_global_mutex); +#ifdef _WIN32 + /* Eat dummy APC queued by qemu_cpu_kick_thread. */ + if (!tcg_enabled()) { + SleepEx(0, TRUE); } +#endif qemu_wait_io_event_common(cpu); } @@ -1207,7 +1198,7 @@ static void *qemu_kvm_cpu_thread_fn(void *arg) cpu_handle_guest_debug(cpu); } } - qemu_kvm_wait_io_event(cpu); + qemu_wait_io_event(cpu); } while (!cpu->unplug || cpu_can_run(cpu)); qemu_kvm_destroy_vcpu(cpu); @@ -1253,7 +1244,7 @@ static void *qemu_dummy_cpu_thread_fn(void *arg) exit(1); } qemu_mutex_lock_iothread(); - qemu_wait_io_event_common(cpu); + qemu_wait_io_event(cpu); } return NULL; @@ -1470,7 +1461,7 @@ static void *qemu_tcg_rr_cpu_thread_fn(void *arg) atomic_mb_set(&cpu->exit_request, 0); } - qemu_tcg_wait_io_event(cpu ? cpu : QTAILQ_FIRST(&cpus)); + qemu_tcg_rr_wait_io_event(cpu ? cpu : QTAILQ_FIRST(&cpus)); deal_with_unplugged_cpus(); } @@ -1501,13 +1492,7 @@ static void *qemu_hax_cpu_thread_fn(void *arg) } } - while (cpu_thread_is_idle(cpu)) { - qemu_cond_wait(cpu->halt_cond, &qemu_global_mutex); - } -#ifdef _WIN32 - SleepEx(0, TRUE); -#endif - qemu_wait_io_event_common(cpu); + qemu_wait_io_event(cpu); } return NULL; } @@ -1544,7 +1529,7 @@ static void *qemu_hvf_cpu_thread_fn(void *arg) cpu_handle_guest_debug(cpu); } } - qemu_hvf_wait_io_event(cpu); + qemu_wait_io_event(cpu); } while (!cpu->unplug || cpu_can_run(cpu)); hvf_vcpu_destroy(cpu); @@ -1623,7 +1608,7 @@ static void *qemu_tcg_cpu_thread_fn(void *arg) } atomic_mb_set(&cpu->exit_request, 0); - qemu_tcg_wait_io_event(cpu); + qemu_wait_io_event(cpu); } return NULL; From patchwork Tue Jan 16 14:17:19 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Paolo Bonzini X-Patchwork-Id: 861665 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Authentication-Results: ozlabs.org; spf=pass (mailfrom) smtp.mailfrom=nongnu.org (client-ip=2001:4830:134:3::11; helo=lists.gnu.org; envelope-from=qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org; receiver=) Authentication-Results: ozlabs.org; dkim=fail reason="signature verification failed" (2048-bit key; unprotected) header.d=gmail.com header.i=@gmail.com header.b="I2KkJFRH"; dkim-atps=neutral Received: from lists.gnu.org (lists.gnu.org [IPv6:2001:4830:134:3::11]) (using TLSv1 with cipher AES256-SHA (256/256 bits)) (No client certificate requested) by ozlabs.org (Postfix) with ESMTPS id 3zLYMW3vJdz9s7v for ; Wed, 17 Jan 2018 02:01:27 +1100 (AEDT) Received: from localhost ([::1]:39487 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1ebSjt-0005DU-Io for incoming@patchwork.ozlabs.org; Tue, 16 Jan 2018 10:01:25 -0500 Received: from eggs.gnu.org ([2001:4830:134:3::10]:50639) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1ebS4M-0003M9-Ke for qemu-devel@nongnu.org; Tue, 16 Jan 2018 09:18:31 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1ebS4L-00058x-Fa for qemu-devel@nongnu.org; Tue, 16 Jan 2018 09:18:30 -0500 Received: from mail-wr0-x244.google.com ([2a00:1450:400c:c0c::244]:45409) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1ebS4L-000587-9Q for qemu-devel@nongnu.org; Tue, 16 Jan 2018 09:18:29 -0500 Received: by mail-wr0-x244.google.com with SMTP id 16so15333341wry.12 for ; Tue, 16 Jan 2018 06:18:29 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=sender:from:to:cc:subject:date:message-id:in-reply-to:references; bh=Wn0nyPG/IWRdwKUgHr3FwdOO8lei4vduytZDfGiCjCI=; b=I2KkJFRH8rokifQ13AeQt/HPqh2mR9pnNIkC4D/YQsAPu6LAyCmV2E+6BfaRpoAOkZ 6C/ppCTK+B9+HF4bTnw0u7DgLKvpVEsLRmqBiHIToE3hU2a5fzRXWAXToEfThnAvBfMt ZvZ3I9hq0JsOzoeCN6ostqRMWK7Kc+HD+Q6k05Gk4jCk3bafA1YzMJEhHHqDi2de0t8Y m+3UOYRVoAFxOcKnb9aozBB68DiQeg1vtTRCOU747lO2Kq7byKurdUW0aU5WP07QLlKl L22uKCiSBPAZedr9ktVsBbgi7BpcVscV8xLd7Fx+UvaITDU/OxKgYF1P1IMDi/vq3lsR JRsg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:sender:from:to:cc:subject:date:message-id :in-reply-to:references; bh=Wn0nyPG/IWRdwKUgHr3FwdOO8lei4vduytZDfGiCjCI=; b=go2+EgvL7TuvgurQeUylJpxI0KHkvK3FmQWf0dLMDD0SEyMAstmpolDNmkwTgm9BS0 zhpQGmgwSmoTrGg2U4fSbZrcrT4b9R7qRzNcnEyUzYavBfasdhH3r5szVE+f6u/G0g5l oDb/6qM1W+u3msCNx7KpcKWn/FCg9AqfzwLx63dQwNSNKkdK19MprJ517HacpCTDEfOi dDV+idj+bDqhB6uer7QoA9MnVZePLN4+uogHKU9cmMaHD7uzG99t8FyP1Ali87jB/Mrk kI/L/I9TNBcx07VlhBus3u7cLsUXqZKPcJ9qRvquw+u3kHb8Lnp9eT/S2Ie6fky4pn/2 gwXA== X-Gm-Message-State: AKwxytcBfLVKkuHTJFc/myBlYKhvtZNhfi8SVy1PojSaRsD7UbgSW9po GrJ55/VapQYqSLxIwMG8UgSDU/4f X-Google-Smtp-Source: ACJfBovUViZ/jzI7n9gZwLP98hFmsCrIxbQQOVTkXYsKfUscaELzTxfA2bflXWXzY3uOHTyplfIT3g== X-Received: by 10.223.166.16 with SMTP id k16mr11939956wrc.100.1516112308015; Tue, 16 Jan 2018 06:18:28 -0800 (PST) Received: from 640k.lan (dynamic-adsl-78-12-229-84.clienti.tiscali.it. [78.12.229.84]) by smtp.gmail.com with ESMTPSA id u10sm1537758wrg.6.2018.01.16.06.18.26 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Tue, 16 Jan 2018 06:18:27 -0800 (PST) From: Paolo Bonzini To: qemu-devel@nongnu.org Date: Tue, 16 Jan 2018 15:17:19 +0100 Message-Id: <1516112253-14480-38-git-send-email-pbonzini@redhat.com> X-Mailer: git-send-email 1.8.3.1 In-Reply-To: <1516112253-14480-1-git-send-email-pbonzini@redhat.com> References: <1516112253-14480-1-git-send-email-pbonzini@redhat.com> X-detected-operating-system: by eggs.gnu.org: Genre and OS details not recognized. X-Received-From: 2a00:1450:400c:c0c::244 Subject: [Qemu-devel] [PULL 37/51] irq: fix memory leak 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: linzhecheng Errors-To: qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org Sender: "Qemu-devel" From: linzhecheng entry is moved from list but is not freed. Signed-off-by: linzhecheng Message-Id: <20171225024704.19540-1-linzhecheng@huawei.com> Signed-off-by: Paolo Bonzini --- target/i386/kvm.c | 1 + 1 file changed, 1 insertion(+) diff --git a/target/i386/kvm.c b/target/i386/kvm.c index 825aea5..4912f4d 100644 --- a/target/i386/kvm.c +++ b/target/i386/kvm.c @@ -3470,6 +3470,7 @@ int kvm_arch_release_virq_post(int virq) if (entry->virq == virq) { trace_kvm_x86_remove_msi_route(virq); QLIST_REMOVE(entry, list); + g_free(entry); break; } } From patchwork Tue Jan 16 14:17:20 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Paolo Bonzini X-Patchwork-Id: 861683 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Authentication-Results: ozlabs.org; spf=pass (mailfrom) smtp.mailfrom=nongnu.org (client-ip=2001:4830:134:3::11; helo=lists.gnu.org; envelope-from=qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org; receiver=) Authentication-Results: ozlabs.org; dkim=fail reason="signature verification failed" (2048-bit key; unprotected) header.d=gmail.com header.i=@gmail.com header.b="bZNAY6pt"; dkim-atps=neutral Received: from lists.gnu.org (lists.gnu.org [IPv6:2001:4830:134:3::11]) (using TLSv1 with cipher AES256-SHA (256/256 bits)) (No client certificate requested) by ozlabs.org (Postfix) with ESMTPS id 3zLYZP2M93z9s7v for ; Wed, 17 Jan 2018 02:10:53 +1100 (AEDT) Received: from localhost ([::1]:39670 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1ebSt1-00051S-7O for incoming@patchwork.ozlabs.org; Tue, 16 Jan 2018 10:10:51 -0500 Received: from eggs.gnu.org ([2001:4830:134:3::10]:50674) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1ebS4O-0003P6-6y for qemu-devel@nongnu.org; Tue, 16 Jan 2018 09:18:39 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1ebS4N-0005D4-58 for qemu-devel@nongnu.org; Tue, 16 Jan 2018 09:18:32 -0500 Received: from mail-wr0-x241.google.com ([2a00:1450:400c:c0c::241]:45407) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1ebS4M-0005Bk-Th for qemu-devel@nongnu.org; Tue, 16 Jan 2018 09:18:31 -0500 Received: by mail-wr0-x241.google.com with SMTP id 16so15333431wry.12 for ; Tue, 16 Jan 2018 06:18:30 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=sender:from:to:cc:subject:date:message-id:in-reply-to:references; bh=RiK3qZBbW+2OFHwPu12KyhpX4+dLD1fHntp4Gc1Ok3Q=; b=bZNAY6ptYvS93yzn2Wo8wHhO+Mze0S9gEgiiDfZvoNvvAify7sbtq8jjjWKb9LTDMt OsgxmdwxEvwUWgshIz9c4LKzYnEyli278RMwUUs1H/6MV/eZl0w5EDGbfAPko3A3oVPg uwXLvvR/CvKU92GzRbZ1zlsSH+ppl9EcCtOi/dgHGu98GczV/RjHSPIdS1mddj7TF26d EvpVjJu4Th8Kocoupw7lfozKwH82JevjktYCXTx6Tbnus/QgLH9EcXb+LhFioZMyAf4H nv+ZJ+TMqqUm+/b5W2JN3iRQmnC0cJge2OSJyyADSOFb1QaHtH5G4E9obxA6m3hkhJCv KXtw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:sender:from:to:cc:subject:date:message-id :in-reply-to:references; bh=RiK3qZBbW+2OFHwPu12KyhpX4+dLD1fHntp4Gc1Ok3Q=; b=R9k1+TPdlwt3LNEfjOKAoa18EZwph6m/42qlJTm2Vr7Pk2WqUOKIL3TpsQX7R5Dtqa oauAXHZOdreAEOQXCRYWQn8F6B/354N6gFM/YLehp0g8wCENy0OxCBkusOyF/Hg428NH E8cPXT3g0nuSsYsyJZjR/fLJ7T2mgUB4ygXaCcTBte9uqZc/Ms87QLFZAnMGJ3f85bvb uR5374Lm7qU9JaJq5f4zU2ovnX/kzoLEj9lrBQpYR0xCjuOdYc15oeEYQgto1nMFOHMh x8PzFSf72/XsNBb7zXfAH8aUQffA5JM4kNgmWuH97F0p+clXmG2Y4Oz4zvDGrJb+cZTg 9DEA== X-Gm-Message-State: AKwxytfOQB8Bg0ZUSgzlESm8oBwwzGqavD9/7EP4Yvu1ZcZPPaH3DKLT ZSonVdSLv0XdRws21xUeGyvstKV7 X-Google-Smtp-Source: ACJfBosePTBwUD7VqBN7hUK8GpHI6RiY6fPoRRsK/icplfJAy+NlbVgRlRhg8W9/PRWu/u4g7Vtaiw== X-Received: by 10.223.135.59 with SMTP id a56mr16844601wra.121.1516112309556; Tue, 16 Jan 2018 06:18:29 -0800 (PST) Received: from 640k.lan (dynamic-adsl-78-12-229-84.clienti.tiscali.it. [78.12.229.84]) by smtp.gmail.com with ESMTPSA id u10sm1537758wrg.6.2018.01.16.06.18.28 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Tue, 16 Jan 2018 06:18:28 -0800 (PST) From: Paolo Bonzini To: qemu-devel@nongnu.org Date: Tue, 16 Jan 2018 15:17:20 +0100 Message-Id: <1516112253-14480-39-git-send-email-pbonzini@redhat.com> X-Mailer: git-send-email 1.8.3.1 In-Reply-To: <1516112253-14480-1-git-send-email-pbonzini@redhat.com> References: <1516112253-14480-1-git-send-email-pbonzini@redhat.com> X-detected-operating-system: by eggs.gnu.org: Genre and OS details not recognized. X-Received-From: 2a00:1450:400c:c0c::241 Subject: [Qemu-devel] [PULL 38/51] net: Drop unusual use of do { } while (0); 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: , Errors-To: qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org Sender: "Qemu-devel" From: Eric Blake For a couple of macros in pcnet.c, we have to provide a new scope to avoid compiler warnings about declarations in the middle of a switch statement that aren't in a sub-scope. But use of 'do { ... } while (0);' merely to provide that new scope is arcane overkill, compared to just using '{ ... }'. Signed-off-by: Eric Blake Reviewed-by: Thomas Huth Message-Id: <20171201232433.25193-2-eblake@redhat.com> Signed-off-by: Paolo Bonzini --- hw/net/pcnet.c | 20 ++++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/hw/net/pcnet.c b/hw/net/pcnet.c index 39d5d93..606b05c 100644 --- a/hw/net/pcnet.c +++ b/hw/net/pcnet.c @@ -456,32 +456,32 @@ static inline void pcnet_rmd_store(PCNetState *s, struct pcnet_RMD *rmd, #define CHECK_RMD(ADDR,RES) do { \ switch (BCR_SWSTYLE(s)) { \ case 0x00: \ - do { \ + { \ uint16_t rda[4]; \ s->phys_mem_read(s->dma_opaque, (ADDR), \ (void *)&rda[0], sizeof(rda), 0); \ (RES) |= (rda[2] & 0xf000)!=0xf000; \ (RES) |= (rda[3] & 0xf000)!=0x0000; \ - } while (0); \ + } \ break; \ case 0x01: \ case 0x02: \ - do { \ + { \ uint32_t rda[4]; \ s->phys_mem_read(s->dma_opaque, (ADDR), \ (void *)&rda[0], sizeof(rda), 0); \ (RES) |= (rda[1] & 0x0000f000L)!=0x0000f000L; \ (RES) |= (rda[2] & 0x0000f000L)!=0x00000000L; \ - } while (0); \ + } \ break; \ case 0x03: \ - do { \ + { \ uint32_t rda[4]; \ s->phys_mem_read(s->dma_opaque, (ADDR), \ (void *)&rda[0], sizeof(rda), 0); \ (RES) |= (rda[0] & 0x0000f000L)!=0x00000000L; \ (RES) |= (rda[1] & 0x0000f000L)!=0x0000f000L; \ - } while (0); \ + } \ break; \ } \ } while (0) @@ -489,22 +489,22 @@ static inline void pcnet_rmd_store(PCNetState *s, struct pcnet_RMD *rmd, #define CHECK_TMD(ADDR,RES) do { \ switch (BCR_SWSTYLE(s)) { \ case 0x00: \ - do { \ + { \ uint16_t xda[4]; \ s->phys_mem_read(s->dma_opaque, (ADDR), \ (void *)&xda[0], sizeof(xda), 0); \ (RES) |= (xda[2] & 0xf000)!=0xf000; \ - } while (0); \ + } \ break; \ case 0x01: \ case 0x02: \ case 0x03: \ - do { \ + { \ uint32_t xda[4]; \ s->phys_mem_read(s->dma_opaque, (ADDR), \ (void *)&xda[0], sizeof(xda), 0); \ (RES) |= (xda[1] & 0x0000f000L)!=0x0000f000L; \ - } while (0); \ + } \ break; \ } \ } while (0) From patchwork Tue Jan 16 14:17:21 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: Paolo Bonzini X-Patchwork-Id: 861651 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Authentication-Results: ozlabs.org; spf=pass (mailfrom) smtp.mailfrom=nongnu.org (client-ip=2001:4830:134:3::11; helo=lists.gnu.org; envelope-from=qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org; receiver=) Authentication-Results: ozlabs.org; dkim=fail reason="signature verification failed" (2048-bit key; unprotected) header.d=gmail.com header.i=@gmail.com header.b="fSpfsQvh"; dkim-atps=neutral Received: from lists.gnu.org (lists.gnu.org [IPv6:2001:4830:134:3::11]) (using TLSv1 with cipher AES256-SHA (256/256 bits)) (No client certificate requested) by ozlabs.org (Postfix) with ESMTPS id 3zLYBv2PKGz9s7v for ; Wed, 17 Jan 2018 01:53:59 +1100 (AEDT) Received: from localhost ([::1]:39428 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1ebScf-0006lR-96 for incoming@patchwork.ozlabs.org; Tue, 16 Jan 2018 09:53:57 -0500 Received: from eggs.gnu.org ([2001:4830:134:3::10]:50703) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1ebS4P-0003Pl-BG for qemu-devel@nongnu.org; Tue, 16 Jan 2018 09:18:39 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1ebS4O-0005EL-C2 for qemu-devel@nongnu.org; Tue, 16 Jan 2018 09:18:33 -0500 Received: from mail-wr0-x242.google.com ([2a00:1450:400c:c0c::242]:43651) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1ebS4O-0005DM-2Z for qemu-devel@nongnu.org; Tue, 16 Jan 2018 09:18:32 -0500 Received: by mail-wr0-x242.google.com with SMTP id t16so1687201wrc.10 for ; Tue, 16 Jan 2018 06:18:32 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=sender:from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=7FZQSpHu7gpQS6jYSje83NC3gFPycX/6oFCr51PyUKs=; b=fSpfsQvhsgduwtP7iLSoQMO6GjCgETNnf4+DhtVI1/7QO23iTX+h6REdXq+PAtVgcI KB9z6cSFnPlcaTSjzc23rgqQbCxWaeC6mYewco1tV1gHOEnyWOhtNf3/Z8HyYNqiNaER N/vrWB4yoPGWkMUXKVhmikI20uYWEM1vrFtoBNxJD+6IBLoZoVQud6EaaD0U0dadnaJp WH/tmTuGou4g7iLGxhMfR8TDf2S0x7DNatv+cDercC6WRiSZyrcYcFzaVSGMAg/W8eOR cEmb/FilA36iVG0MhDqJWXzLBtbVx/Nor2xwM9CY423N+kLK2HqOrAP/X3j6379YfBj8 bu9Q== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:sender:from:to:cc:subject:date:message-id :in-reply-to:references:mime-version:content-transfer-encoding; bh=7FZQSpHu7gpQS6jYSje83NC3gFPycX/6oFCr51PyUKs=; b=bp+EobG0oa++hDmvx9V7pzOz0PWAwSgsFlSGXAJ18LrCXkcoVi8QBlrDw8CxHS36YX u7v4RhuXskCLKRey+gOd/bvoFCNw6vYvGhMLwH1g4NK2SpQPpA/8pPf2+KPI5EiLcJjF EcoHPCMf8okgZbCdRJk4wLdR5SGeZ36DoNEEyV+gGttiWViX3/O6/b/NO1uvIxb1X8+N nFm1u4qJQJHbCELi8T1XGW5LtmDD0kpqe8sm3eeOp0tuAvIkvb42YVwuFOuNIgUupW8Q zFH3o5UpOr3JuMU3pYV/j9vUAGJVIBhyspxebN+W6RtfQG8Dm8QhXpHxT4P1jlVHBGFc PvRA== X-Gm-Message-State: AKGB3mKH3gA7mbxW3mdOGbMZoxCBm7i1TEdagyKKH9ETK4DzrFekM0KU gNg65Aw1HuLZlctxKJMAccBqU333 X-Google-Smtp-Source: ACJfBou1mz7SIajPpmEP22YxjKgLn6sX/i2WSUmpxaGYN7PdNUnaU9Y0zkQPZ0q/7Fy3pj+r6ifbkw== X-Received: by 10.223.166.242 with SMTP id t105mr34432019wrc.106.1516112310716; Tue, 16 Jan 2018 06:18:30 -0800 (PST) Received: from 640k.lan (dynamic-adsl-78-12-229-84.clienti.tiscali.it. [78.12.229.84]) by smtp.gmail.com with ESMTPSA id u10sm1537758wrg.6.2018.01.16.06.18.29 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Tue, 16 Jan 2018 06:18:29 -0800 (PST) From: Paolo Bonzini To: qemu-devel@nongnu.org Date: Tue, 16 Jan 2018 15:17:21 +0100 Message-Id: <1516112253-14480-40-git-send-email-pbonzini@redhat.com> X-Mailer: git-send-email 1.8.3.1 In-Reply-To: <1516112253-14480-1-git-send-email-pbonzini@redhat.com> References: <1516112253-14480-1-git-send-email-pbonzini@redhat.com> MIME-Version: 1.0 X-detected-operating-system: by eggs.gnu.org: Genre and OS details not recognized. X-Received-From: 2a00:1450:400c:c0c::242 Subject: [Qemu-devel] [PULL 39/51] mips: Tweak location of ';' in macros 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: , Errors-To: qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org Sender: "Qemu-devel" From: Eric Blake It is more typical to provide the ';' by the caller of a macro than to embed it in the macro itself; this is because syntax highlight engines can get confused if a macro is called without a semicolon before the closing '}'. Signed-off-by: Eric Blake Reviewed-by: Philippe Mathieu-Daudé Message-Id: <20171201232433.25193-3-eblake@redhat.com> Signed-off-by: Paolo Bonzini --- target/mips/msa_helper.c | 34 ++++++++++++++++++---------------- 1 file changed, 18 insertions(+), 16 deletions(-) diff --git a/target/mips/msa_helper.c b/target/mips/msa_helper.c index f167a42..8fb7a36 100644 --- a/target/mips/msa_helper.c +++ b/target/mips/msa_helper.c @@ -682,13 +682,13 @@ static inline int64_t msa_mod_u_df(uint32_t df, int64_t arg1, int64_t arg2) do { \ e = SIGNED_EVEN(a, df); \ o = SIGNED_ODD(a, df); \ - } while (0); + } while (0) #define UNSIGNED_EXTRACT(e, o, a, df) \ do { \ e = UNSIGNED_EVEN(a, df); \ o = UNSIGNED_ODD(a, df); \ - } while (0); + } while (0) static inline int64_t msa_dotp_s_df(uint32_t df, int64_t arg1, int64_t arg2) { @@ -1120,9 +1120,11 @@ void helper_msa_splat_df(CPUMIPSState *env, uint32_t df, uint32_t wd, #define MSA_LOOP_COND_D MSA_LOOP_COND(DF_DOUBLE) #define MSA_LOOP(DF) \ + do { \ for (i = 0; i < (MSA_LOOP_COND_ ## DF) ; i++) { \ - MSA_DO_ ## DF \ - } + MSA_DO_ ## DF; \ + } \ + } while (0) #define MSA_FN_DF(FUNC) \ void helper_msa_##FUNC(CPUMIPSState *env, uint32_t df, uint32_t wd, \ @@ -1135,17 +1137,17 @@ void helper_msa_##FUNC(CPUMIPSState *env, uint32_t df, uint32_t wd, \ uint32_t i; \ switch (df) { \ case DF_BYTE: \ - MSA_LOOP_B \ + MSA_LOOP_B; \ break; \ case DF_HALF: \ - MSA_LOOP_H \ + MSA_LOOP_H; \ break; \ case DF_WORD: \ - MSA_LOOP_W \ + MSA_LOOP_W; \ break; \ case DF_DOUBLE: \ - MSA_LOOP_D \ - break; \ + MSA_LOOP_D; \ + break; \ default: \ assert(0); \ } \ @@ -1168,7 +1170,7 @@ void helper_msa_##FUNC(CPUMIPSState *env, uint32_t df, uint32_t wd, \ do { \ R##DF(pwx, i) = pwt->DF[2*i]; \ L##DF(pwx, i) = pws->DF[2*i]; \ - } while (0); + } while (0) MSA_FN_DF(pckev_df) #undef MSA_DO @@ -1176,7 +1178,7 @@ MSA_FN_DF(pckev_df) do { \ R##DF(pwx, i) = pwt->DF[2*i+1]; \ L##DF(pwx, i) = pws->DF[2*i+1]; \ - } while (0); + } while (0) MSA_FN_DF(pckod_df) #undef MSA_DO @@ -1184,7 +1186,7 @@ MSA_FN_DF(pckod_df) do { \ pwx->DF[2*i] = L##DF(pwt, i); \ pwx->DF[2*i+1] = L##DF(pws, i); \ - } while (0); + } while (0) MSA_FN_DF(ilvl_df) #undef MSA_DO @@ -1192,7 +1194,7 @@ MSA_FN_DF(ilvl_df) do { \ pwx->DF[2*i] = R##DF(pwt, i); \ pwx->DF[2*i+1] = R##DF(pws, i); \ - } while (0); + } while (0) MSA_FN_DF(ilvr_df) #undef MSA_DO @@ -1200,7 +1202,7 @@ MSA_FN_DF(ilvr_df) do { \ pwx->DF[2*i] = pwt->DF[2*i]; \ pwx->DF[2*i+1] = pws->DF[2*i]; \ - } while (0); + } while (0) MSA_FN_DF(ilvev_df) #undef MSA_DO @@ -1208,7 +1210,7 @@ MSA_FN_DF(ilvev_df) do { \ pwx->DF[2*i] = pwt->DF[2*i+1]; \ pwx->DF[2*i+1] = pws->DF[2*i+1]; \ - } while (0); + } while (0) MSA_FN_DF(ilvod_df) #undef MSA_DO #undef MSA_LOOP_COND @@ -1222,7 +1224,7 @@ MSA_FN_DF(ilvod_df) uint32_t k = (pwd->DF[i] & 0x3f) % (2 * n); \ pwx->DF[i] = \ (pwd->DF[i] & 0xc0) ? 0 : k < n ? pwt->DF[k] : pws->DF[k - n]; \ - } while (0); + } while (0) MSA_FN_DF(vshf_df) #undef MSA_DO #undef MSA_LOOP_COND From patchwork Tue Jan 16 14:17:22 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: Paolo Bonzini X-Patchwork-Id: 861668 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Authentication-Results: ozlabs.org; spf=pass (mailfrom) smtp.mailfrom=nongnu.org (client-ip=2001:4830:134:3::11; helo=lists.gnu.org; envelope-from=qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org; receiver=) Authentication-Results: ozlabs.org; dkim=fail reason="signature verification failed" (2048-bit key; unprotected) header.d=gmail.com header.i=@gmail.com header.b="WKORd0jv"; dkim-atps=neutral Received: from lists.gnu.org (lists.gnu.org [IPv6:2001:4830:134:3::11]) (using TLSv1 with cipher AES256-SHA (256/256 bits)) (No client certificate requested) by ozlabs.org (Postfix) with ESMTPS id 3zLYQC6M3Rz9s7v for ; Wed, 17 Jan 2018 02:03:47 +1100 (AEDT) Received: from localhost ([::1]:39563 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1ebSm9-0007Ef-Rl for incoming@patchwork.ozlabs.org; Tue, 16 Jan 2018 10:03:45 -0500 Received: from eggs.gnu.org ([2001:4830:134:3::10]:50760) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1ebS4S-0003TE-Mb for qemu-devel@nongnu.org; Tue, 16 Jan 2018 09:18:42 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1ebS4Q-0005H0-1z for qemu-devel@nongnu.org; Tue, 16 Jan 2018 09:18:36 -0500 Received: from mail-wr0-x243.google.com ([2a00:1450:400c:c0c::243]:38690) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1ebS4P-0005Eu-Rz for qemu-devel@nongnu.org; Tue, 16 Jan 2018 09:18:33 -0500 Received: by mail-wr0-x243.google.com with SMTP id x1so11169657wrb.5 for ; Tue, 16 Jan 2018 06:18:33 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=sender:from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=XpGusnd7R7MpGFIgZ/wEWOlLdX5OgpIFI/U/fl4T5P0=; b=WKORd0jvXC0lM1hftgvS23JhWYt7DDrkeK2M8pS4ubh7fpPLx0cvtm0OscV/PqxSme wy/xP9tOtKiE8qz/3whn6POAf1NPMbIBdQe3cUvd2uRcJxC5qbAqNhhgpEt54AIKAWZU 81OAAqP7wnZs6iV8ZIYgvurO8LEyuih4Pt5AoF8Ctwia8Rr1DrVFNFGMzDfTHHvI5QHN zVcqZ74TdCXxqnIdLuVHQCdzqPpr2amkqTi/NG/xT6JxAJczxymijFWQQR9KWhscNawW x+tvzHfnXYehAoxD1MS6tOfzR1m6E8iaOHPlos8Zko8hU7SmtvFgly8dO/aAOxeHHmEu BalQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:sender:from:to:cc:subject:date:message-id :in-reply-to:references:mime-version:content-transfer-encoding; bh=XpGusnd7R7MpGFIgZ/wEWOlLdX5OgpIFI/U/fl4T5P0=; b=JWIoK2P1LrBlEFvvtRxMjsj/3087kNPEKP+mh39JjFjTb7HmEpyCxSWVt76EzSrTpc LYYDmfuvsCNX8eHxWHAgyhL4iRgdEw5KP0wDuXHmrSV1338QbYYDeoTgiOaeqxRYk+q7 /gzdaeJ1AmC340UxkCglPFBFXtE4z3Rdr+rDutX5m+bsVQNcSyJb7P+iNtZfcWGEWFbj 7KRHrUF6TdbPCdFbJLgs33tIatozUkEfUevyi0RA7aEV5JRZQBnKc/P0BXAPk3Wd/OYB X425E1vlWJJPn5qdwk3UJJjJp45TfQ7IvTgkmLx+4cBlxyT659FmSNp/zbPlISuh6rjV OGoA== X-Gm-Message-State: AKwxytf4GSVpQwou7B+Zbd1SIBwYDgK9JiePsbfR2Da4nhWRR/Ds8L8l UCHdBpqjyqhxTO95QH47F4UkdyZO X-Google-Smtp-Source: ACJfBotv4drTc8OQEIHqI9dxdApzjH54pmMkpVoga80asCjxdVNzzp5s9IxsaxnVmrI2lZaYag4M7A== X-Received: by 10.223.139.221 with SMTP id w29mr5257022wra.223.1516112312083; Tue, 16 Jan 2018 06:18:32 -0800 (PST) Received: from 640k.lan (dynamic-adsl-78-12-229-84.clienti.tiscali.it. [78.12.229.84]) by smtp.gmail.com with ESMTPSA id u10sm1537758wrg.6.2018.01.16.06.18.30 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Tue, 16 Jan 2018 06:18:31 -0800 (PST) From: Paolo Bonzini To: qemu-devel@nongnu.org Date: Tue, 16 Jan 2018 15:17:22 +0100 Message-Id: <1516112253-14480-41-git-send-email-pbonzini@redhat.com> X-Mailer: git-send-email 1.8.3.1 In-Reply-To: <1516112253-14480-1-git-send-email-pbonzini@redhat.com> References: <1516112253-14480-1-git-send-email-pbonzini@redhat.com> MIME-Version: 1.0 X-detected-operating-system: by eggs.gnu.org: Genre and OS details not recognized. X-Received-From: 2a00:1450:400c:c0c::243 Subject: [Qemu-devel] [PULL 40/51] chardev: Use goto/label instead of do/break/while(0) 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: , Errors-To: qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org Sender: "Qemu-devel" From: Eric Blake Use of a do/while(0) control flow in order to permit an early break is an unusual paradigm, and triggers a false positive with a planned future syntax check against 'while (0);'. Rewrite the code to use a goto instead. This patch temporarily keeps an extra level of indentation to highlight the change; the next patch cleans it up. Signed-off-by: Eric Blake Message-Id: <20171201232433.25193-4-eblake@redhat.com> Reviewed-by: Marc-André Lureau Signed-off-by: Paolo Bonzini --- chardev/char-serial.c | 13 ++++++++++--- 1 file changed, 10 insertions(+), 3 deletions(-) diff --git a/chardev/char-serial.c b/chardev/char-serial.c index 2f8f838..10162f9 100644 --- a/chardev/char-serial.c +++ b/chardev/char-serial.c @@ -64,9 +64,14 @@ static void tty_serial_init(int fd, int speed, #endif tcgetattr(fd, &tty); -#define check_speed(val) if (speed <= val) { spd = B##val; break; } +#define check_speed(val) \ + if (speed <= val) { \ + spd = B##val; \ + goto done; \ + } + speed = speed * 10 / 11; - do { + { check_speed(50); check_speed(75); check_speed(110); @@ -125,8 +130,10 @@ static void tty_serial_init(int fd, int speed, check_speed(4000000); #endif spd = B115200; - } while (0); + } +#undef check_speed + done: cfsetispeed(&tty, spd); cfsetospeed(&tty, spd); From patchwork Tue Jan 16 14:17:23 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: Paolo Bonzini X-Patchwork-Id: 861679 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Authentication-Results: ozlabs.org; spf=pass (mailfrom) smtp.mailfrom=nongnu.org (client-ip=2001:4830:134:3::11; helo=lists.gnu.org; envelope-from=qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org; receiver=) Authentication-Results: ozlabs.org; dkim=fail reason="signature verification failed" (2048-bit key; unprotected) header.d=gmail.com header.i=@gmail.com header.b="oEWyC3we"; dkim-atps=neutral Received: from lists.gnu.org (lists.gnu.org [IPv6:2001:4830:134:3::11]) (using TLSv1 with cipher AES256-SHA (256/256 bits)) (No client certificate requested) by ozlabs.org (Postfix) with ESMTPS id 3zLYVw1vQpz9s7v for ; Wed, 17 Jan 2018 02:07:52 +1100 (AEDT) Received: from localhost ([::1]:39609 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1ebSq6-0002XT-7v for incoming@patchwork.ozlabs.org; Tue, 16 Jan 2018 10:07:50 -0500 Received: from eggs.gnu.org ([2001:4830:134:3::10]:50779) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1ebS4T-0003TH-DG for qemu-devel@nongnu.org; Tue, 16 Jan 2018 09:18:39 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1ebS4S-0005KO-Eh for qemu-devel@nongnu.org; Tue, 16 Jan 2018 09:18:37 -0500 Received: from mail-wm0-x242.google.com ([2a00:1450:400c:c09::242]:34665) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1ebS4S-0005JU-8J for qemu-devel@nongnu.org; Tue, 16 Jan 2018 09:18:36 -0500 Received: by mail-wm0-x242.google.com with SMTP id 81so17394028wmb.1 for ; Tue, 16 Jan 2018 06:18:36 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=sender:from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=kXhOCEIQ7g8vCzHPIZYLXGSy5ed/YtVfytN4lUOHWN0=; b=oEWyC3weUdIRMUCo430tPT/IweemxNyEahsKHxlUC08pP4kax0pV0n7Z/R8J9MPiCo gT2kM1agyZNwAdR+qy7TuCA3umMFpYfq9PoJ6skHJmT1AXp3LSVhTRQ317C8u2aN6W+G dXMJAil2p/M8ohj3JM25rfonvuE1Jn4ky2An6TSus0XnpIhpc0LvjPrng8bKJazqBU2I 0kv0iG5MoH0t9ifpzmnh8Sbuq5bG5Xbq3qHfSxCjROqD8H+3NYN1oYZ36EIjO26ItMnP H1RpELrzbb6BdD9gjX7fNBt9SRysxq8xq+mYaMOtVQUMlSpHgXL3hnXL36PBqj5GNfiT 9kXQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:sender:from:to:cc:subject:date:message-id :in-reply-to:references:mime-version:content-transfer-encoding; bh=kXhOCEIQ7g8vCzHPIZYLXGSy5ed/YtVfytN4lUOHWN0=; b=pLrViu8zDP0+odlfoWaQyR6zfj2iGd7BnPisFRSCYuqWYD4GKcMRV8/YsPvhbmT+CV nKDZsjkupAZUIUqF0RODQZM4nEzj4LSvil/6UQa+f/Z3GOxdu0xOx1KwfFDochFsJPKC xJ2wtrB6vhkg1aP9KKPw1L5z8R29ZOWepNUgxelteqUcDmYal2iPmG6d2y8UPMjTX6Qz eyOXTre2lzvQJLI1kd+jMrWtgromaFYyH7Shhg5cWyCFmBa8rC4VXZ1mcXYrGbhnQ0Or 2+38gRlYYCXc5nyu8j/zsJDS669JlH0i1Di0czMgb4eEfHB2/GVt9UiLyJ9jVj3Kw7em m2pg== X-Gm-Message-State: AKwxytf7yyNstbf1VDBipzE7kUneBMxj5k3renq5/M3BC8HDCBpsfm8w gCD2ayquyDoMO9l5izi+l6/8WKUn X-Google-Smtp-Source: ACJfBot7l3M/f7+0JlzI9rx5a71QMk4FRfSXmprGwPWEsX4PYmr7H0qYTFKfWZb2p5bOQk40hoZRPw== X-Received: by 10.28.111.11 with SMTP id k11mr13943132wmc.119.1516112314970; Tue, 16 Jan 2018 06:18:34 -0800 (PST) Received: from 640k.lan (dynamic-adsl-78-12-229-84.clienti.tiscali.it. [78.12.229.84]) by smtp.gmail.com with ESMTPSA id u10sm1537758wrg.6.2018.01.16.06.18.32 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Tue, 16 Jan 2018 06:18:34 -0800 (PST) From: Paolo Bonzini To: qemu-devel@nongnu.org Date: Tue, 16 Jan 2018 15:17:23 +0100 Message-Id: <1516112253-14480-42-git-send-email-pbonzini@redhat.com> X-Mailer: git-send-email 1.8.3.1 In-Reply-To: <1516112253-14480-1-git-send-email-pbonzini@redhat.com> References: <1516112253-14480-1-git-send-email-pbonzini@redhat.com> MIME-Version: 1.0 X-detected-operating-system: by eggs.gnu.org: Genre and OS details not recognized. X-Received-From: 2a00:1450:400c:c09::242 Subject: [Qemu-devel] [PULL 41/51] chardev: Clean up previous patch indentation 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: , Errors-To: qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org Sender: "Qemu-devel" From: Eric Blake The previous patch left in an extra scope layer for ease of review; time to remove it. No semantic change. Signed-off-by: Eric Blake Message-Id: <20171201232433.25193-5-eblake@redhat.com> Reviewed-by: Marc-André Lureau Signed-off-by: Paolo Bonzini --- chardev/char-serial.c | 66 +++++++++++++++++++++++++-------------------------- 1 file changed, 32 insertions(+), 34 deletions(-) diff --git a/chardev/char-serial.c b/chardev/char-serial.c index 10162f9..93392c5 100644 --- a/chardev/char-serial.c +++ b/chardev/char-serial.c @@ -71,66 +71,64 @@ static void tty_serial_init(int fd, int speed, } speed = speed * 10 / 11; - { - check_speed(50); - check_speed(75); - check_speed(110); - check_speed(134); - check_speed(150); - check_speed(200); - check_speed(300); - check_speed(600); - check_speed(1200); - check_speed(1800); - check_speed(2400); - check_speed(4800); - check_speed(9600); - check_speed(19200); - check_speed(38400); - /* Non-Posix values follow. They may be unsupported on some systems. */ - check_speed(57600); - check_speed(115200); + check_speed(50); + check_speed(75); + check_speed(110); + check_speed(134); + check_speed(150); + check_speed(200); + check_speed(300); + check_speed(600); + check_speed(1200); + check_speed(1800); + check_speed(2400); + check_speed(4800); + check_speed(9600); + check_speed(19200); + check_speed(38400); + /* Non-Posix values follow. They may be unsupported on some systems. */ + check_speed(57600); + check_speed(115200); #ifdef B230400 - check_speed(230400); + check_speed(230400); #endif #ifdef B460800 - check_speed(460800); + check_speed(460800); #endif #ifdef B500000 - check_speed(500000); + check_speed(500000); #endif #ifdef B576000 - check_speed(576000); + check_speed(576000); #endif #ifdef B921600 - check_speed(921600); + check_speed(921600); #endif #ifdef B1000000 - check_speed(1000000); + check_speed(1000000); #endif #ifdef B1152000 - check_speed(1152000); + check_speed(1152000); #endif #ifdef B1500000 - check_speed(1500000); + check_speed(1500000); #endif #ifdef B2000000 - check_speed(2000000); + check_speed(2000000); #endif #ifdef B2500000 - check_speed(2500000); + check_speed(2500000); #endif #ifdef B3000000 - check_speed(3000000); + check_speed(3000000); #endif #ifdef B3500000 - check_speed(3500000); + check_speed(3500000); #endif #ifdef B4000000 - check_speed(4000000); + check_speed(4000000); #endif - spd = B115200; - } + spd = B115200; #undef check_speed done: From patchwork Tue Jan 16 14:17:24 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Paolo Bonzini X-Patchwork-Id: 861688 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Authentication-Results: ozlabs.org; spf=pass (mailfrom) smtp.mailfrom=nongnu.org (client-ip=2001:4830:134:3::11; helo=lists.gnu.org; envelope-from=qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org; receiver=) Authentication-Results: ozlabs.org; dkim=fail reason="signature verification failed" (2048-bit key; unprotected) header.d=gmail.com header.i=@gmail.com header.b="bu69aEWD"; dkim-atps=neutral Received: from lists.gnu.org (lists.gnu.org [IPv6:2001:4830:134:3::11]) (using TLSv1 with cipher AES256-SHA (256/256 bits)) (No client certificate requested) by ozlabs.org (Postfix) with ESMTPS id 3zLYdv3bJyz9s7v for ; Wed, 17 Jan 2018 02:13:55 +1100 (AEDT) Received: from localhost ([::1]:39914 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1ebSvx-0007dJ-9W for incoming@patchwork.ozlabs.org; Tue, 16 Jan 2018 10:13:53 -0500 Received: from eggs.gnu.org ([2001:4830:134:3::10]:50818) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1ebS4V-0003Tr-9w for qemu-devel@nongnu.org; Tue, 16 Jan 2018 09:18:47 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1ebS4T-0005MG-Uy for qemu-devel@nongnu.org; Tue, 16 Jan 2018 09:18:38 -0500 Received: from mail-wm0-x241.google.com ([2a00:1450:400c:c09::241]:44174) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1ebS4T-0005LO-OF for qemu-devel@nongnu.org; Tue, 16 Jan 2018 09:18:37 -0500 Received: by mail-wm0-x241.google.com with SMTP id t74so8753825wme.3 for ; Tue, 16 Jan 2018 06:18:37 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=sender:from:to:cc:subject:date:message-id:in-reply-to:references; bh=T67IVZkHvup8WLIuFuILxNiMmQ9HflxMCrOAoRB/8xI=; b=bu69aEWDUz37nrn28oV4bLkQmFAlt0L7wBFkeWPTHrsrwoK/rxBYE/XfjWbRCUH+8M eXmWS2CjD1SrdAQGewOA2PB9w4aHcwKY0N3TRHn7ydW1GJwYn8tgSOm4Arl+wrT5/omR zHnY02NTGUfjVFMIzoSo7Qp1lcLvHCwFeoONuBwSTD82Wp0A/TpAgRJKT0tgqsT6Nysb VkwIhHMKrei68AQ1QwiofRUqT75m9qNk7ehbljQaVUGuEJc3256zkdLkhSYgv0xTg20G jWzghjg0PPlKiXOmrt3dZQouCVcNxi/9Tq4/fIySOE03Ze0kWufNZVCIGEnlc9+L+csK i1tw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:sender:from:to:cc:subject:date:message-id :in-reply-to:references; bh=T67IVZkHvup8WLIuFuILxNiMmQ9HflxMCrOAoRB/8xI=; b=QT0+3kAXx8wxm0ztERad4koTrsczrZ6rgDR7CJ4ch1wWt/clKbNf80vQmhsUCdiDtK lTPwr07lHgqv53Mv+rT5qfTCSGve1QVzwHeAenR518G39xOuWqTMf6ANyl6O9bQih8Ku jL/jdRCZINem3/24PtwHffhp7rd4EsfjmpSPm4Wm+fHM71NR65jYZR9n5lb24NRJb2Te NYZQ0w7s8HT/gEhWggcuniC8HKRGoUBifFI9Mqd1WKEp3nqVBb8sTiLpU1oD+l8Jp9Q9 OubG69PUNfPWdKA5drGHRzkn+AW+YXAlNnyJwz8+Ll/TSt1w+/+I1geaawHbadnr51Xa jqPQ== X-Gm-Message-State: AKwxytccVl0zze2/vtgVG554kUYiglzF5jpV1rWtbYXvACAnvDUj8+YA t2fUyPKCXUFkU38UiLfvm69bg/F0 X-Google-Smtp-Source: ACJfBotS0qjUEy/PCu5skBw8vF+kII8iiN2YF121tu53BIqjY1juzjk1KG5e1poKPvUjZ1eOKX6DXA== X-Received: by 10.28.91.10 with SMTP id p10mr13994006wmb.112.1516112316492; Tue, 16 Jan 2018 06:18:36 -0800 (PST) Received: from 640k.lan (dynamic-adsl-78-12-229-84.clienti.tiscali.it. [78.12.229.84]) by smtp.gmail.com with ESMTPSA id u10sm1537758wrg.6.2018.01.16.06.18.35 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Tue, 16 Jan 2018 06:18:35 -0800 (PST) From: Paolo Bonzini To: qemu-devel@nongnu.org Date: Tue, 16 Jan 2018 15:17:24 +0100 Message-Id: <1516112253-14480-43-git-send-email-pbonzini@redhat.com> X-Mailer: git-send-email 1.8.3.1 In-Reply-To: <1516112253-14480-1-git-send-email-pbonzini@redhat.com> References: <1516112253-14480-1-git-send-email-pbonzini@redhat.com> X-detected-operating-system: by eggs.gnu.org: Genre and OS details not recognized. X-Received-From: 2a00:1450:400c:c09::241 Subject: [Qemu-devel] [PULL 42/51] tests: Avoid 'do/while(false); ' in vhost-user-bridge 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: , Errors-To: qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org Sender: "Qemu-devel" From: Eric Blake Use of a do/while(0) loop as a way to allow break statements in the middle of execute-once code is unusual. More typical is the use of goto for early exits, with a label at the end of the execute-once code, rather than nesting code in a scope; however, the comment at the end of the existing code makes this alternative a bit unpractical. So, to avoid false positives from a future syntax check about 'while (false);', and to keep the loop form (in case someone ever does add DONTWAIT support, where they can just as easily manipulate the initial loop condition or add an if around the final 'break'), I opted to use the form of a while(1) loop (the break as an early exit is more idiomatic there), coupled with a final break preserving the original comment. Signed-off-by: Eric Blake Message-Id: <20171201232433.25193-6-eblake@redhat.com> Signed-off-by: Paolo Bonzini --- tests/vhost-user-bridge.c | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/tests/vhost-user-bridge.c b/tests/vhost-user-bridge.c index d820033..e0605a5 100644 --- a/tests/vhost-user-bridge.c +++ b/tests/vhost-user-bridge.c @@ -283,7 +283,7 @@ vubr_backend_recv_cb(int sock, void *ctx) return; } - do { + while (1) { struct iovec *sg; ssize_t ret, total = 0; unsigned int num; @@ -343,7 +343,9 @@ vubr_backend_recv_cb(int sock, void *ctx) free(elem); elem = NULL; - } while (false); /* could loop if DONTWAIT worked? */ + + break; /* could loop if DONTWAIT worked? */ + } if (mhdr_cnt) { mhdr.num_buffers = i; From patchwork Tue Jan 16 14:17:25 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Paolo Bonzini X-Patchwork-Id: 861666 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Authentication-Results: ozlabs.org; spf=pass (mailfrom) smtp.mailfrom=nongnu.org (client-ip=2001:4830:134:3::11; helo=lists.gnu.org; envelope-from=qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org; receiver=) Authentication-Results: ozlabs.org; dkim=fail reason="signature verification failed" (2048-bit key; unprotected) header.d=gmail.com header.i=@gmail.com header.b="iDtBcnP5"; dkim-atps=neutral Received: from lists.gnu.org (lists.gnu.org [IPv6:2001:4830:134:3::11]) (using TLSv1 with cipher AES256-SHA (256/256 bits)) (No client certificate requested) by ozlabs.org (Postfix) with ESMTPS id 3zLYMY23dCz9s7v for ; Wed, 17 Jan 2018 02:01:29 +1100 (AEDT) Received: from localhost ([::1]:39492 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1ebSjv-0005Eq-AK for incoming@patchwork.ozlabs.org; Tue, 16 Jan 2018 10:01:27 -0500 Received: from eggs.gnu.org ([2001:4830:134:3::10]:50883) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1ebS4Z-0003Xl-8B for qemu-devel@nongnu.org; Tue, 16 Jan 2018 09:18:49 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1ebS4X-0005Os-10 for qemu-devel@nongnu.org; Tue, 16 Jan 2018 09:18:43 -0500 Received: from mail-wr0-x243.google.com ([2a00:1450:400c:c0c::243]:42402) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1ebS4W-0005O2-Ll for qemu-devel@nongnu.org; Tue, 16 Jan 2018 09:18:40 -0500 Received: by mail-wr0-x243.google.com with SMTP id e41so15001846wre.9 for ; Tue, 16 Jan 2018 06:18:40 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=sender:from:to:cc:subject:date:message-id:in-reply-to:references; bh=ParUKnpmOv9Q1UAM/B8Q6+EPSUg4T85+y74Kzu4YZRM=; b=iDtBcnP5pT3yBSGXG8hjRdCxRaXbSbY4pjKDifYw3otOQ7Of/uufnuzdQULTUjmUC/ vKPKAVT1lmhuX+GDTdRId7Txo0jgMV/GpMRRgtO9aBtjHGYXRf54mESSEiHZuhYsSj1m zJHVdEIXk0xhE+ed9r0LE6I6kZkE/sDgG4tRBMwPKkgqk5zkl6gYThJjqNDUAGwww3FV bNX4TrtyEsmRG3no40blTi6a8SONezYTQXzpiR8cw5a26mdHTlaX1vcl7YsREdADz2RJ W0KOT5iHDXjVcAg+TIDTO3hugm7KMz4sMUDaCOaffWmihJS+IElHbp+NwrciIARatjh9 0VlQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:sender:from:to:cc:subject:date:message-id :in-reply-to:references; bh=ParUKnpmOv9Q1UAM/B8Q6+EPSUg4T85+y74Kzu4YZRM=; b=c5XOerbgyx0ew+UL6dvwZzV2lq3aEY0opYf4zs3wpHCwP/t9DuGYBsCvsuV1vX1mAZ Qt6AF/7DL2l27YFgcxT6lKF+el7+5mwDdkjgYPb+RhLnUotEwWiFg6PahsVRpx1fuVAp gVjkzs3dlIka1Dm2d01eveA5Q4tePAj9dVoAzXXHc/H8LbalPCMtSBTMGDbdTZeQl9fv Jj4cSQq3SDEz1wl439DRMyQFy4NSYe+Ork+/LaPzpqAHmvzAQ9xacNQGf554cu4RzfdG 7SFrfrG1AFlynQyOYInWvCA2ODxC6+VULw4WlEpCmZQhyJYbjMzFmc8eBkQXAEMECR31 XwKg== X-Gm-Message-State: AKwxytcugDOgN11JjZa7WdNC/5yk70e7hELm8+5ZHghex/Elwp+sHpgE 2fhLdcy3GUBrhhN4Nk/WaFc36vGx X-Google-Smtp-Source: ACJfBouz48Lu3xBjnJv1+KXSu7/icIFWzi6RA8/RsJXBEsapxiNZr5Jk8envYU2lBT+LOGMXNieSng== X-Received: by 10.223.157.140 with SMTP id p12mr15540555wre.278.1516112319151; Tue, 16 Jan 2018 06:18:39 -0800 (PST) Received: from 640k.lan (dynamic-adsl-78-12-229-84.clienti.tiscali.it. [78.12.229.84]) by smtp.gmail.com with ESMTPSA id u10sm1537758wrg.6.2018.01.16.06.18.36 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Tue, 16 Jan 2018 06:18:38 -0800 (PST) From: Paolo Bonzini To: qemu-devel@nongnu.org Date: Tue, 16 Jan 2018 15:17:25 +0100 Message-Id: <1516112253-14480-44-git-send-email-pbonzini@redhat.com> X-Mailer: git-send-email 1.8.3.1 In-Reply-To: <1516112253-14480-1-git-send-email-pbonzini@redhat.com> References: <1516112253-14480-1-git-send-email-pbonzini@redhat.com> X-detected-operating-system: by eggs.gnu.org: Genre and OS details not recognized. X-Received-From: 2a00:1450:400c:c0c::243 Subject: [Qemu-devel] [PULL 43/51] maint: Fix macros with broken 'do/while(0); ' usage 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: , Errors-To: qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org Sender: "Qemu-devel" From: Eric Blake The point of writing a macro embedded in a 'do { ... } while (0)' loop (particularly if the macro has multiple statements or would otherwise end with an 'if' statement) is so that the macro can be used as a drop-in statement with the caller supplying the trailing ';'. Although our coding style frowns on brace-less 'if': if (cond) statement; else something else; that is the classic case where failure to use do/while(0) wrapping would cause the 'else' to pair with any embedded 'if' in the macro rather than the intended outer 'if'. But conversely, if the macro includes an embedded ';', then the same brace-less coding style would now have two statements, making the 'else' a syntax error rather than pairing with the outer 'if'. Thus, even though our coding style with required braces is not impacted, ending a macro with ';' makes our code harder to port to projects that use brace-less styles. The change should have no semantic impact. I was not able to fully compile-test all of the changes (as some of them are examples of the ugly bit-rotting debug print statements that are completely elided by default, and I didn't want to recompile with the necessary -D witnesses - cleaning those up is left as a bite-sized task for another day); I did, however, audit that for all files touched, all callers of the changed macros DID supply a trailing ';' at the callsite, and did not appear to be used as part of a brace-less conditional. Found mechanically via: $ git grep -B1 'while (0);' | grep -A1 \\\\ Signed-off-by: Eric Blake Acked-by: Cornelia Huck Reviewed-by: Michael S. Tsirkin Acked-by: Dr. David Alan Gilbert Message-Id: <20171201232433.25193-7-eblake@redhat.com> Reviewed-by: Juan Quintela Signed-off-by: Paolo Bonzini --- audio/paaudio.c | 4 ++-- hw/adc/stm32f2xx_adc.c | 2 +- hw/block/m25p80.c | 2 +- hw/char/cadence_uart.c | 2 +- hw/char/stm32f2xx_usart.c | 2 +- hw/display/cg3.c | 2 +- hw/display/dpcd.c | 2 +- hw/display/xlnx_dp.c | 2 +- hw/dma/pl330.c | 2 +- hw/dma/xlnx-zynq-devcfg.c | 2 +- hw/dma/xlnx_dpdma.c | 2 +- hw/i2c/i2c-ddc.c | 2 +- hw/misc/auxbus.c | 2 +- hw/misc/macio/mac_dbdma.c | 4 ++-- hw/misc/mmio_interface.c | 2 +- hw/misc/stm32f2xx_syscfg.c | 2 +- hw/misc/zynq_slcr.c | 2 +- hw/net/cadence_gem.c | 2 +- hw/ssi/mss-spi.c | 2 +- hw/ssi/stm32f2xx_spi.c | 2 +- hw/ssi/xilinx_spi.c | 2 +- hw/ssi/xilinx_spips.c | 2 +- hw/timer/a9gtimer.c | 2 +- hw/timer/cadence_ttc.c | 2 +- hw/timer/mss-timer.c | 2 +- hw/timer/stm32f2xx_timer.c | 2 +- hw/tpm/tpm_passthrough.c | 2 +- hw/tpm/tpm_tis.c | 2 +- migration/rdma.c | 2 +- target/arm/translate-a64.c | 2 +- target/s390x/kvm.c | 2 +- tests/acpi-utils.h | 8 ++++---- tests/tcg/test-mmap.c | 2 +- ui/sdl_zoom_template.h | 8 ++++---- 34 files changed, 42 insertions(+), 42 deletions(-) diff --git a/audio/paaudio.c b/audio/paaudio.c index 65beb6f..2a35e6f 100644 --- a/audio/paaudio.c +++ b/audio/paaudio.c @@ -89,7 +89,7 @@ static inline int PA_STREAM_IS_GOOD(pa_stream_state_t x) } \ goto label; \ } \ - } while (0); + } while (0) #define CHECK_DEAD_GOTO(c, stream, rerror, label) \ do { \ @@ -107,7 +107,7 @@ static inline int PA_STREAM_IS_GOOD(pa_stream_state_t x) } \ goto label; \ } \ - } while (0); + } while (0) static int qpa_simple_read (PAVoiceIn *p, void *data, size_t length, int *rerror) { diff --git a/hw/adc/stm32f2xx_adc.c b/hw/adc/stm32f2xx_adc.c index 90fe9de..13f31ad 100644 --- a/hw/adc/stm32f2xx_adc.c +++ b/hw/adc/stm32f2xx_adc.c @@ -37,7 +37,7 @@ if (STM_ADC_ERR_DEBUG >= lvl) { \ qemu_log("%s: " fmt, __func__, ## args); \ } \ -} while (0); +} while (0) #define DB_PRINT(fmt, args...) DB_PRINT_L(1, fmt, ## args) diff --git a/hw/block/m25p80.c b/hw/block/m25p80.c index ea14216..b49c8e9 100644 --- a/hw/block/m25p80.c +++ b/hw/block/m25p80.c @@ -40,7 +40,7 @@ fprintf(stderr, ": %s: ", __func__); \ fprintf(stderr, ## __VA_ARGS__); \ } \ -} while (0); +} while (0) /* Fields for FlashPartInfo->flags */ diff --git a/hw/char/cadence_uart.c b/hw/char/cadence_uart.c index 6143494..fbdbd46 100644 --- a/hw/char/cadence_uart.c +++ b/hw/char/cadence_uart.c @@ -33,7 +33,7 @@ #define DB_PRINT(...) do { \ fprintf(stderr, ": %s: ", __func__); \ fprintf(stderr, ## __VA_ARGS__); \ - } while (0); + } while (0) #else #define DB_PRINT(...) #endif diff --git a/hw/char/stm32f2xx_usart.c b/hw/char/stm32f2xx_usart.c index 268e435..07b462d 100644 --- a/hw/char/stm32f2xx_usart.c +++ b/hw/char/stm32f2xx_usart.c @@ -34,7 +34,7 @@ if (STM_USART_ERR_DEBUG >= lvl) { \ qemu_log("%s: " fmt, __func__, ## args); \ } \ -} while (0); +} while (0) #define DB_PRINT(fmt, args...) DB_PRINT_L(1, fmt, ## args) diff --git a/hw/display/cg3.c b/hw/display/cg3.c index e069c44..cafd9f4 100644 --- a/hw/display/cg3.c +++ b/hw/display/cg3.c @@ -63,7 +63,7 @@ if (DEBUG_CG3) { \ printf("CG3: " fmt , ## __VA_ARGS__); \ } \ -} while (0); +} while (0) #define TYPE_CG3 "cgthree" #define CG3(obj) OBJECT_CHECK(CG3State, (obj), TYPE_CG3) diff --git a/hw/display/dpcd.c b/hw/display/dpcd.c index ce92ff6..943002b 100644 --- a/hw/display/dpcd.c +++ b/hw/display/dpcd.c @@ -39,7 +39,7 @@ if (DEBUG_DPCD) { \ qemu_log("dpcd: " fmt, ## __VA_ARGS__); \ } \ -} while (0); +} while (0) #define DPCD_READABLE_AREA 0x600 diff --git a/hw/display/xlnx_dp.c b/hw/display/xlnx_dp.c index 561f828..ead4e1a 100644 --- a/hw/display/xlnx_dp.c +++ b/hw/display/xlnx_dp.c @@ -34,7 +34,7 @@ if (DEBUG_DP) { \ qemu_log("xlnx_dp: " fmt , ## __VA_ARGS__); \ } \ -} while (0); +} while (0) /* * Register offset for DP. diff --git a/hw/dma/pl330.c b/hw/dma/pl330.c index 32cf839..d071049 100644 --- a/hw/dma/pl330.c +++ b/hw/dma/pl330.c @@ -29,7 +29,7 @@ if (PL330_ERR_DEBUG >= lvl) {\ fprintf(stderr, "PL330: %s:" fmt, __func__, ## args);\ } \ -} while (0); +} while (0) #define DB_PRINT(fmt, args...) DB_PRINT_L(1, fmt, ## args) diff --git a/hw/dma/xlnx-zynq-devcfg.c b/hw/dma/xlnx-zynq-devcfg.c index 3b10523..12bb2e3 100644 --- a/hw/dma/xlnx-zynq-devcfg.c +++ b/hw/dma/xlnx-zynq-devcfg.c @@ -43,7 +43,7 @@ if (XLNX_ZYNQ_DEVCFG_ERR_DEBUG) { \ qemu_log("%s: " fmt, __func__, ## args); \ } \ -} while (0); +} while (0) REG32(CTRL, 0x00) FIELD(CTRL, FORCE_RST, 31, 1) /* Not supported, wr ignored */ diff --git a/hw/dma/xlnx_dpdma.c b/hw/dma/xlnx_dpdma.c index 8ceb21d..077c7da 100644 --- a/hw/dma/xlnx_dpdma.c +++ b/hw/dma/xlnx_dpdma.c @@ -34,7 +34,7 @@ if (DEBUG_DPDMA) { \ qemu_log("xlnx_dpdma: " fmt , ## __VA_ARGS__); \ } \ -} while (0); +} while (0) /* * Registers offset for DPDMA. diff --git a/hw/i2c/i2c-ddc.c b/hw/i2c/i2c-ddc.c index 6b92e95..199dac9 100644 --- a/hw/i2c/i2c-ddc.c +++ b/hw/i2c/i2c-ddc.c @@ -30,7 +30,7 @@ if (DEBUG_I2CDDC) { \ qemu_log("i2c-ddc: " fmt , ## __VA_ARGS__); \ } \ -} while (0); +} while (0) /* Structure defining a monitor's characteristics in a * readable format: this should be passed to build_edid_blob() diff --git a/hw/misc/auxbus.c b/hw/misc/auxbus.c index 1182745..b4cacd6 100644 --- a/hw/misc/auxbus.c +++ b/hw/misc/auxbus.c @@ -40,7 +40,7 @@ if (DEBUG_AUX) { \ qemu_log("aux: " fmt , ## __VA_ARGS__); \ } \ -} while (0); +} while (0) #define TYPE_AUXTOI2C "aux-to-i2c-bridge" #define AUXTOI2C(obj) OBJECT_CHECK(AUXTOI2CState, (obj), TYPE_AUXTOI2C) diff --git a/hw/misc/macio/mac_dbdma.c b/hw/misc/macio/mac_dbdma.c index 0eddf2e..1b2a69b 100644 --- a/hw/misc/macio/mac_dbdma.c +++ b/hw/misc/macio/mac_dbdma.c @@ -52,7 +52,7 @@ if (DEBUG_DBDMA) { \ printf("DBDMA: " fmt , ## __VA_ARGS__); \ } \ -} while (0); +} while (0) #define DBDMA_DPRINTFCH(ch, fmt, ...) do { \ if (DEBUG_DBDMA) { \ @@ -60,7 +60,7 @@ printf("DBDMA[%02x]: " fmt , (ch)->channel, ## __VA_ARGS__); \ } \ } \ -} while (0); +} while (0) /* */ diff --git a/hw/misc/mmio_interface.c b/hw/misc/mmio_interface.c index 894e980..3b0e203 100644 --- a/hw/misc/mmio_interface.c +++ b/hw/misc/mmio_interface.c @@ -39,7 +39,7 @@ static uint64_t mmio_interface_counter; if (DEBUG_MMIO_INTERFACE) { \ qemu_log("mmio_interface: 0x%" PRIX64 ": " fmt, s->id, ## __VA_ARGS__);\ } \ -} while (0); +} while (0) static void mmio_interface_init(Object *obj) { diff --git a/hw/misc/stm32f2xx_syscfg.c b/hw/misc/stm32f2xx_syscfg.c index 7c45833..7f10195 100644 --- a/hw/misc/stm32f2xx_syscfg.c +++ b/hw/misc/stm32f2xx_syscfg.c @@ -34,7 +34,7 @@ if (STM_SYSCFG_ERR_DEBUG >= lvl) { \ qemu_log("%s: " fmt, __func__, ## args); \ } \ -} while (0); +} while (0) #define DB_PRINT(fmt, args...) DB_PRINT_L(1, fmt, ## args) diff --git a/hw/misc/zynq_slcr.c b/hw/misc/zynq_slcr.c index 44304d4..d6bdd02 100644 --- a/hw/misc/zynq_slcr.c +++ b/hw/misc/zynq_slcr.c @@ -30,7 +30,7 @@ fprintf(stderr, ": %s: ", __func__); \ fprintf(stderr, ## __VA_ARGS__); \ } \ - } while (0); + } while (0) #define XILINX_LOCK_KEY 0x767b #define XILINX_UNLOCK_KEY 0xdf0d diff --git a/hw/net/cadence_gem.c b/hw/net/cadence_gem.c index 3943187..0fa4b0d 100644 --- a/hw/net/cadence_gem.c +++ b/hw/net/cadence_gem.c @@ -34,7 +34,7 @@ #define DB_PRINT(...) do { \ fprintf(stderr, ": %s: ", __func__); \ fprintf(stderr, ## __VA_ARGS__); \ - } while (0); + } while (0) #else #define DB_PRINT(...) #endif diff --git a/hw/ssi/mss-spi.c b/hw/ssi/mss-spi.c index d60daba..185e1a3 100644 --- a/hw/ssi/mss-spi.c +++ b/hw/ssi/mss-spi.c @@ -35,7 +35,7 @@ if (MSS_SPI_ERR_DEBUG >= lvl) { \ qemu_log("%s: " fmt "\n", __func__, ## args); \ } \ -} while (0); +} while (0) #define DB_PRINT(fmt, args...) DB_PRINT_L(1, fmt, ## args) diff --git a/hw/ssi/stm32f2xx_spi.c b/hw/ssi/stm32f2xx_spi.c index 26a1b4d..69514da 100644 --- a/hw/ssi/stm32f2xx_spi.c +++ b/hw/ssi/stm32f2xx_spi.c @@ -35,7 +35,7 @@ if (STM_SPI_ERR_DEBUG >= lvl) { \ qemu_log("%s: " fmt, __func__, ## args); \ } \ -} while (0); +} while (0) #define DB_PRINT(fmt, args...) DB_PRINT_L(1, fmt, ## args) diff --git a/hw/ssi/xilinx_spi.c b/hw/ssi/xilinx_spi.c index 33482f0..83585bc 100644 --- a/hw/ssi/xilinx_spi.c +++ b/hw/ssi/xilinx_spi.c @@ -36,7 +36,7 @@ #define DB_PRINT(...) do { \ fprintf(stderr, ": %s: ", __func__); \ fprintf(stderr, ## __VA_ARGS__); \ - } while (0); + } while (0) #else #define DB_PRINT(...) #endif diff --git a/hw/ssi/xilinx_spips.c b/hw/ssi/xilinx_spips.c index d8187fa..85c5d0c 100644 --- a/hw/ssi/xilinx_spips.c +++ b/hw/ssi/xilinx_spips.c @@ -43,7 +43,7 @@ fprintf(stderr, ": %s: ", __func__); \ fprintf(stderr, ## __VA_ARGS__); \ } \ -} while (0); +} while (0) /* config register */ #define R_CONFIG (0x00 / 4) diff --git a/hw/timer/a9gtimer.c b/hw/timer/a9gtimer.c index ce1dc63..96d534d 100644 --- a/hw/timer/a9gtimer.c +++ b/hw/timer/a9gtimer.c @@ -37,7 +37,7 @@ fprintf(stderr, ": %s: ", __func__); \ fprintf(stderr, ## __VA_ARGS__); \ } \ -} while (0); +} while (0) #define DB_PRINT(...) DB_PRINT_L(0, ## __VA_ARGS__) diff --git a/hw/timer/cadence_ttc.c b/hw/timer/cadence_ttc.c index 5e65fdb..1005640 100644 --- a/hw/timer/cadence_ttc.c +++ b/hw/timer/cadence_ttc.c @@ -24,7 +24,7 @@ #define DB_PRINT(...) do { \ fprintf(stderr, ": %s: ", __func__); \ fprintf(stderr, ## __VA_ARGS__); \ - } while (0); + } while (0) #else #define DB_PRINT(...) #endif diff --git a/hw/timer/mss-timer.c b/hw/timer/mss-timer.c index 60f1213..4f81457 100644 --- a/hw/timer/mss-timer.c +++ b/hw/timer/mss-timer.c @@ -36,7 +36,7 @@ if (MSS_TIMER_ERR_DEBUG >= lvl) { \ qemu_log("%s: " fmt "\n", __func__, ## args); \ } \ -} while (0); +} while (0) #define DB_PRINT(fmt, args...) DB_PRINT_L(1, fmt, ## args) diff --git a/hw/timer/stm32f2xx_timer.c b/hw/timer/stm32f2xx_timer.c index e5f5e14..58fc7b1 100644 --- a/hw/timer/stm32f2xx_timer.c +++ b/hw/timer/stm32f2xx_timer.c @@ -34,7 +34,7 @@ if (STM_TIMER_ERR_DEBUG >= lvl) { \ qemu_log("%s: " fmt, __func__, ## args); \ } \ -} while (0); +} while (0) #define DB_PRINT(fmt, args...) DB_PRINT_L(1, fmt, ## args) diff --git a/hw/tpm/tpm_passthrough.c b/hw/tpm/tpm_passthrough.c index 149fae6..29142f3 100644 --- a/hw/tpm/tpm_passthrough.c +++ b/hw/tpm/tpm_passthrough.c @@ -38,7 +38,7 @@ if (DEBUG_TPM) { \ fprintf(stderr, fmt, ## __VA_ARGS__); \ } \ -} while (0); +} while (0) #define TYPE_TPM_PASSTHROUGH "tpm-passthrough" #define TPM_PASSTHROUGH(obj) \ diff --git a/hw/tpm/tpm_tis.c b/hw/tpm/tpm_tis.c index 561384c..8b5eb01 100644 --- a/hw/tpm/tpm_tis.c +++ b/hw/tpm/tpm_tis.c @@ -90,7 +90,7 @@ typedef struct TPMState { if (DEBUG_TIS) { \ printf(fmt, ## __VA_ARGS__); \ } \ -} while (0); +} while (0) /* tis registers */ #define TPM_TIS_REG_ACCESS 0x00 diff --git a/migration/rdma.c b/migration/rdma.c index ca56594..9d5a424 100644 --- a/migration/rdma.c +++ b/migration/rdma.c @@ -88,7 +88,7 @@ static uint32_t known_capabilities = RDMA_CAPABILITY_PIN_ALL; } \ return rdma->error_state; \ } \ - } while (0); + } while (0) /* * A work request ID is 64-bits and we split up these bits diff --git a/target/arm/translate-a64.c b/target/arm/translate-a64.c index ba94f7d..cba5587 100644 --- a/target/arm/translate-a64.c +++ b/target/arm/translate-a64.c @@ -400,7 +400,7 @@ static void unallocated_encoding(DisasContext *s) "at pc=%016" PRIx64 "\n", \ __FILE__, __LINE__, insn, s->pc - 4); \ unallocated_encoding(s); \ - } while (0); + } while (0) static void init_tmp_a64_array(DisasContext *s) { diff --git a/target/s390x/kvm.c b/target/s390x/kvm.c index 9b8b59f..6a18a41 100644 --- a/target/s390x/kvm.c +++ b/target/s390x/kvm.c @@ -58,7 +58,7 @@ if (DEBUG_KVM) { \ fprintf(stderr, fmt, ## __VA_ARGS__); \ } \ -} while (0); +} while (0) #define kvm_vm_check_mem_attr(s, attr) \ kvm_vm_check_attr(s, KVM_S390_VM_MEM_CTRL, attr) diff --git a/tests/acpi-utils.h b/tests/acpi-utils.h index d5ca5b6..ac52abd 100644 --- a/tests/acpi-utils.h +++ b/tests/acpi-utils.h @@ -32,7 +32,7 @@ typedef struct { do { \ memread(addr, &field, sizeof(field)); \ addr += sizeof(field); \ - } while (0); + } while (0) #define ACPI_READ_ARRAY_PTR(arr, length, addr) \ do { \ @@ -40,7 +40,7 @@ typedef struct { for (idx = 0; idx < length; ++idx) { \ ACPI_READ_FIELD(arr[idx], addr); \ } \ - } while (0); + } while (0) #define ACPI_READ_ARRAY(arr, addr) \ ACPI_READ_ARRAY_PTR(arr, sizeof(arr) / sizeof(arr[0]), addr) @@ -56,7 +56,7 @@ typedef struct { ACPI_READ_FIELD((table)->oem_revision, addr); \ ACPI_READ_ARRAY((table)->asl_compiler_id, addr); \ ACPI_READ_FIELD((table)->asl_compiler_revision, addr); \ - } while (0); + } while (0) #define ACPI_ASSERT_CMP(actual, expected) do { \ char ACPI_ASSERT_CMP_str[5] = {}; \ @@ -77,7 +77,7 @@ typedef struct { ACPI_READ_FIELD((field).bit_offset, addr); \ ACPI_READ_FIELD((field).access_width, addr); \ ACPI_READ_FIELD((field).address, addr); \ - } while (0); + } while (0) uint8_t acpi_calc_checksum(const uint8_t *data, int len); diff --git a/tests/tcg/test-mmap.c b/tests/tcg/test-mmap.c index 3982fa2..cdefadf 100644 --- a/tests/tcg/test-mmap.c +++ b/tests/tcg/test-mmap.c @@ -39,7 +39,7 @@ do \ fprintf (stderr, "FAILED at %s:%d\n", __FILE__, __LINE__); \ exit (EXIT_FAILURE); \ } \ -} while (0); +} while (0) unsigned char *dummybuf; static unsigned int pagesize; diff --git a/ui/sdl_zoom_template.h b/ui/sdl_zoom_template.h index 3bb508b..6a424ad 100644 --- a/ui/sdl_zoom_template.h +++ b/ui/sdl_zoom_template.h @@ -34,22 +34,22 @@ #define setRed(r, pcolor) do { \ *pcolor = ((*pcolor) & (~(dpf->Rmask))) + \ (((r) & (dpf->Rmask >> dpf->Rshift)) << dpf->Rshift); \ -} while (0); +} while (0) #define setGreen(g, pcolor) do { \ *pcolor = ((*pcolor) & (~(dpf->Gmask))) + \ (((g) & (dpf->Gmask >> dpf->Gshift)) << dpf->Gshift); \ -} while (0); +} while (0) #define setBlue(b, pcolor) do { \ *pcolor = ((*pcolor) & (~(dpf->Bmask))) + \ (((b) & (dpf->Bmask >> dpf->Bshift)) << dpf->Bshift); \ -} while (0); +} while (0) #define setAlpha(a, pcolor) do { \ *pcolor = ((*pcolor) & (~(dpf->Amask))) + \ (((a) & (dpf->Amask >> dpf->Ashift)) << dpf->Ashift); \ -} while (0); +} while (0) static void glue(sdl_zoom_rgb, BPP)(SDL_Surface *src, SDL_Surface *dst, int smooth, SDL_Rect *dst_rect) From patchwork Tue Jan 16 14:17:26 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Paolo Bonzini X-Patchwork-Id: 861656 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Authentication-Results: ozlabs.org; spf=pass (mailfrom) smtp.mailfrom=nongnu.org (client-ip=2001:4830:134:3::11; helo=lists.gnu.org; envelope-from=qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org; receiver=) Authentication-Results: ozlabs.org; dkim=fail reason="signature verification failed" (2048-bit key; unprotected) header.d=gmail.com header.i=@gmail.com header.b="ftHsz3K6"; dkim-atps=neutral Received: from lists.gnu.org (lists.gnu.org [IPv6:2001:4830:134:3::11]) (using TLSv1 with cipher AES256-SHA (256/256 bits)) (No client certificate requested) by ozlabs.org (Postfix) with ESMTPS id 3zLYGP0PPpz9s7v for ; Wed, 17 Jan 2018 01:57:01 +1100 (AEDT) Received: from localhost ([::1]:39454 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1ebSfb-0000sr-3q for incoming@patchwork.ozlabs.org; Tue, 16 Jan 2018 09:56:59 -0500 Received: from eggs.gnu.org ([2001:4830:134:3::10]:50937) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1ebS4d-0003bl-QK for qemu-devel@nongnu.org; Tue, 16 Jan 2018 09:18:55 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1ebS4Y-0005Pd-5o for qemu-devel@nongnu.org; Tue, 16 Jan 2018 09:18:47 -0500 Received: from mail-wr0-x241.google.com ([2a00:1450:400c:c0c::241]:46887) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1ebS4X-0005P7-W1 for qemu-devel@nongnu.org; Tue, 16 Jan 2018 09:18:42 -0500 Received: by mail-wr0-x241.google.com with SMTP id g21so15303908wrb.13 for ; Tue, 16 Jan 2018 06:18:41 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=sender:from:to:cc:subject:date:message-id:in-reply-to:references; bh=3cg63NDUmgBpGpBxxApA/29oZGAjDVw5iBbPXqLg6Tc=; b=ftHsz3K6y0+rFJ+G1Ty59drig3o80yC58YtyAxQN6YfaavuAppvddlYYYRUhWjcqrH klUhJCG7kIumbshnZ6ka7+NaQJXrNVEhaDgMcdDAh9PswglvSg7ChaGj2gNywBISmZR6 JijJAOEHjt6A0yjmODQUSsvQkGkyjSbm5teWbDtQEaBcraWolun6CnKbvdYHCJU7wir2 QmClQHVRiAiq64xpogtm2Bv7UgN5vgswQzODGRXpIgW5slE2ECsQoCmcqDrmk3kl1p2q P2p8FGCpt33EB3jlkYIJ56SHtdEP9Od27NfpiZDifNF2B7vL8IAWScramFnE1qKerhKd qz7g== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:sender:from:to:cc:subject:date:message-id :in-reply-to:references; bh=3cg63NDUmgBpGpBxxApA/29oZGAjDVw5iBbPXqLg6Tc=; b=lDDtGEeMvy8BatEjThDxww08ex0u6lRGjh7mTzrHqBAtHtcA5xCQphb+d8szkfO16N 1nfEkGZmqIxqweBoTZkaRSymSr80MN3x71I72guP8D3L0QIxaBlLMceNjjtWOrCA4ZP3 8vxJtc3ANiX+6Jq6EMdhr9EICS9SxGkZYMKUFWB+eOkTU7zIK6+uaXrzS47aHF+rqR5/ gCz9n9TxF/vwn//d0C+HUa23pHXx5TgVMSYYF/dqCdm15a0yrhXwmr/TOjXyA8kasY2X dW6IV3yXiVA/+yCIYuelAySbT9EwLZ8LQJeeiJ643dwOl3gDAM6OZMGPxc5mNSjtO+OD cq1Q== X-Gm-Message-State: AKGB3mLD9t68rLzcKJOqpjnveWPzxND4Zzsz+mKnVI+21Si6Ouv3RKZc HTbIgJtRlwqRnPCcir1CYcelr7BW X-Google-Smtp-Source: ACJfBouye/6Hc0IimSTK25ULqk8H0sN693DBjfN/f7uT9tYQ4iI8t9xP3aO8j02jfH/C5hBOloGqeQ== X-Received: by 10.223.183.23 with SMTP id l23mr26787783wre.33.1516112320702; Tue, 16 Jan 2018 06:18:40 -0800 (PST) Received: from 640k.lan (dynamic-adsl-78-12-229-84.clienti.tiscali.it. [78.12.229.84]) by smtp.gmail.com with ESMTPSA id u10sm1537758wrg.6.2018.01.16.06.18.39 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Tue, 16 Jan 2018 06:18:39 -0800 (PST) From: Paolo Bonzini To: qemu-devel@nongnu.org Date: Tue, 16 Jan 2018 15:17:26 +0100 Message-Id: <1516112253-14480-45-git-send-email-pbonzini@redhat.com> X-Mailer: git-send-email 1.8.3.1 In-Reply-To: <1516112253-14480-1-git-send-email-pbonzini@redhat.com> References: <1516112253-14480-1-git-send-email-pbonzini@redhat.com> X-detected-operating-system: by eggs.gnu.org: Genre and OS details not recognized. X-Received-From: 2a00:1450:400c:c0c::241 Subject: [Qemu-devel] [PULL 44/51] checkpatch: Enforce proper do/while (0) style 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: , Errors-To: qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org Sender: "Qemu-devel" From: Eric Blake Use of a loop construct for code that is not intended to repeat does not make much idiomatic sense, except in one place: it is a common usage in macros in order to wrap arbitrary code with single-statement semantics. But when used in a macro, it is more typical for the caller to supply the trailing ';' when calling the macro. Although qemu coding style frowns on bare: if (cond) statement1; else statement2; where extra semicolons actually cause syntax errors, we still want our macro styles to be easily copied to other projects. Thus, declare it an error if we encounter any form of 'while (0)' with a semicolon in the same line. Signed-off-by: Eric Blake Message-Id: <20171201232433.25193-8-eblake@redhat.com> Signed-off-by: Paolo Bonzini --- scripts/checkpatch.pl | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/scripts/checkpatch.pl b/scripts/checkpatch.pl index 3dc27d9..accba24 100755 --- a/scripts/checkpatch.pl +++ b/scripts/checkpatch.pl @@ -1622,6 +1622,11 @@ sub process { } } +# 'do ... while (0/false)' only makes sense in macros, without trailing ';' + if ($line =~ /while\s*\((0|false)\);/) { + ERROR("suspicious ; after while (0)\n" . $herecurr); + } + # Check relative indent for conditionals and blocks. if ($line =~ /\b(?:(?:if|while|for)\s*\(|do\b)/ && $line !~ /^.\s*#/ && $line !~ /\}\s*while\s*/) { my ($s, $c) = ($stat, $cond); From patchwork Tue Jan 16 14:17:27 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Paolo Bonzini X-Patchwork-Id: 861690 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Authentication-Results: ozlabs.org; spf=pass (mailfrom) smtp.mailfrom=nongnu.org (client-ip=2001:4830:134:3::11; helo=lists.gnu.org; envelope-from=qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org; receiver=) Authentication-Results: ozlabs.org; dkim=fail reason="signature verification failed" (2048-bit key; unprotected) header.d=gmail.com header.i=@gmail.com header.b="ISl0i3ll"; dkim-atps=neutral Received: from lists.gnu.org (lists.gnu.org [IPv6:2001:4830:134:3::11]) (using TLSv1 with cipher AES256-SHA (256/256 bits)) (No client certificate requested) by ozlabs.org (Postfix) with ESMTPS id 3zLYjP6v2qz9s7v for ; Wed, 17 Jan 2018 02:16:56 +1100 (AEDT) Received: from localhost ([::1]:39985 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1ebSys-0001jk-1b for incoming@patchwork.ozlabs.org; Tue, 16 Jan 2018 10:16:54 -0500 Received: from eggs.gnu.org ([2001:4830:134:3::10]:50958) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1ebS4f-0003e8-IG for qemu-devel@nongnu.org; Tue, 16 Jan 2018 09:18:50 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1ebS4a-0005Rk-Qp for qemu-devel@nongnu.org; Tue, 16 Jan 2018 09:18:49 -0500 Received: from mail-wm0-x241.google.com ([2a00:1450:400c:c09::241]:38888) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1ebS4a-0005RK-KD for qemu-devel@nongnu.org; Tue, 16 Jan 2018 09:18:44 -0500 Received: by mail-wm0-x241.google.com with SMTP id 141so8907992wme.3 for ; Tue, 16 Jan 2018 06:18:44 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=sender:from:to:cc:subject:date:message-id:in-reply-to:references; bh=BgLD/S4V0OMjq9qGpaNF5oHGsm45z1pwO7P3xNXv6Bw=; b=ISl0i3llq5unHtCr/QLONihZ2KLuyhX/r6ot/KCY+P637pEjitsBpK1Y7qObOj5Oeb 9znvzALoYt7Bd5+AMS2jOSwsNwSR/cIsh7LAGG5iippZ1wvJin+FyIXRVv2TG975U7+N tk5FbPtvSFEiywCmPBtlAnI2DHBjnmfBJPfMJNbkeU6BSOWqvAl6YgrVEaC+BpQQibCa 9br2baFuPnX0x5YZxOYttNsX2F6krusHOtSt2Mf8asrPqS1mJyLHF8LAc1T2dip49JiY L8JA23WULmdL4HiJO5BUwGSMTNYFmjqkAWvzCljMNFVESO29J88l6ubfPLXMFpKXhefx Y5mQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:sender:from:to:cc:subject:date:message-id :in-reply-to:references; bh=BgLD/S4V0OMjq9qGpaNF5oHGsm45z1pwO7P3xNXv6Bw=; b=C6IAlKlb83+4sGBlvMvaAuhxWJQfd5JypU4kMkE3dHdS7MMTbkpy8nEq3cy/jEjppP QCWBvCUpkeGEq+pT+/QWBMzMQw5qLGL/fFuQeCUBao/YL5A6qSjR91i6e92G5zSPvdtV 83tke7ioAr+COMloXXa3ZPDcadI/DWG5b9pWddZH0ItrfpHWrIcXOLDcZgOdlwN9VHMk xMyE85PL4i9DZQa531UIE6Xm9DmzKCagQOEFh87tWMjxjVxVr+7iMlOqQh52C3UD4PwM +VfOEa2jnPj0MIMzl7804KPJLLIUdD45oAQ8CI/CKSdXBKpcpFSvw4T7vA2eCC54+4ui pEZQ== X-Gm-Message-State: AKwxytf9d2WWrvoI5zwmgbq0j+gCV+D734xbVOQEaT8jPFnMzgWxsc2t lXhk3wFo1wpaNbmS+V+iQnjlZg1C X-Google-Smtp-Source: ACJfBosr+gHiYxQMyzMwHr7N0JTiO6v43BG6a/DSVwqS2m7LvS0mQm45iD1jdbHAMA+FEYXNmUPtvw== X-Received: by 10.28.69.212 with SMTP id l81mr13597287wmi.65.1516112323025; Tue, 16 Jan 2018 06:18:43 -0800 (PST) Received: from 640k.lan (dynamic-adsl-78-12-229-84.clienti.tiscali.it. [78.12.229.84]) by smtp.gmail.com with ESMTPSA id u10sm1537758wrg.6.2018.01.16.06.18.41 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Tue, 16 Jan 2018 06:18:42 -0800 (PST) From: Paolo Bonzini To: qemu-devel@nongnu.org Date: Tue, 16 Jan 2018 15:17:27 +0100 Message-Id: <1516112253-14480-46-git-send-email-pbonzini@redhat.com> X-Mailer: git-send-email 1.8.3.1 In-Reply-To: <1516112253-14480-1-git-send-email-pbonzini@redhat.com> References: <1516112253-14480-1-git-send-email-pbonzini@redhat.com> X-detected-operating-system: by eggs.gnu.org: Genre and OS details not recognized. X-Received-From: 2a00:1450:400c:c09::241 Subject: [Qemu-devel] [PULL 45/51] cpu_physical_memory_sync_dirty_bitmap: Another alignment fix 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: "Dr. David Alan Gilbert" Errors-To: qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org Sender: "Qemu-devel" From: "Dr. David Alan Gilbert" This code has an optimised, word aligned version, and a boring unaligned version. My commit f70d345 fixed one alignment issue, but there's another. The optimised version operates on 'longs' dealing with (typically) 64 pages at a time, replacing the whole long by a 0 and counting the bits. If the Ramblock is less than 64bits in length that long can contain bits representing two different RAMBlocks, but the code will update the bmap belinging to the 1st RAMBlock only while having updated the total dirty page count for both. This probably didn't matter prior to 6b6712ef which split the dirty bitmap by RAMBlock, but now they're separate RAMBlocks we end up with a count that doesn't match the state in the bitmaps. Symptom: Migration showing a few dirty pages left to be sent constantly Seen on aarch64 and x86 with x86+ovmf Signed-off-by: Dr. David Alan Gilbert Reported-by: Wei Huang Fixes: 6b6712efccd383b48a909bee0b29e079a57601ec Signed-off-by: Paolo Bonzini --- include/exec/ram_addr.h | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/include/exec/ram_addr.h b/include/exec/ram_addr.h index 6cbc02a..7633ef6 100644 --- a/include/exec/ram_addr.h +++ b/include/exec/ram_addr.h @@ -391,9 +391,10 @@ uint64_t cpu_physical_memory_sync_dirty_bitmap(RAMBlock *rb, uint64_t num_dirty = 0; unsigned long *dest = rb->bmap; - /* start address is aligned at the start of a word? */ + /* start address and length is aligned at the start of a word? */ if (((word * BITS_PER_LONG) << TARGET_PAGE_BITS) == - (start + rb->offset)) { + (start + rb->offset) && + !(length & ((BITS_PER_LONG << TARGET_PAGE_BITS) - 1))) { int k; int nr = BITS_TO_LONGS(length >> TARGET_PAGE_BITS); unsigned long * const *src; From patchwork Tue Jan 16 14:17:28 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Paolo Bonzini X-Patchwork-Id: 861670 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Authentication-Results: ozlabs.org; spf=pass (mailfrom) smtp.mailfrom=nongnu.org (client-ip=2001:4830:134:3::11; helo=lists.gnu.org; envelope-from=qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org; receiver=) Authentication-Results: ozlabs.org; dkim=fail reason="signature verification failed" (2048-bit key; unprotected) header.d=gmail.com header.i=@gmail.com header.b="Ivkc3NbZ"; dkim-atps=neutral Received: from lists.gnu.org (lists.gnu.org [IPv6:2001:4830:134:3::11]) (using TLSv1 with cipher AES256-SHA (256/256 bits)) (No client certificate requested) by ozlabs.org (Postfix) with ESMTPS id 3zLYRM6SYcz9s7v for ; Wed, 17 Jan 2018 02:04:47 +1100 (AEDT) Received: from localhost ([::1]:39570 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1ebSn7-00086D-SB for incoming@patchwork.ozlabs.org; Tue, 16 Jan 2018 10:04:45 -0500 Received: from eggs.gnu.org ([2001:4830:134:3::10]:51022) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1ebS4i-0003jm-M0 for qemu-devel@nongnu.org; Tue, 16 Jan 2018 09:18:58 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1ebS4c-0005T3-IX for qemu-devel@nongnu.org; Tue, 16 Jan 2018 09:18:52 -0500 Received: from mail-wm0-x242.google.com ([2a00:1450:400c:c09::242]:34836) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1ebS4c-0005SI-CZ for qemu-devel@nongnu.org; Tue, 16 Jan 2018 09:18:46 -0500 Received: by mail-wm0-x242.google.com with SMTP id r78so9011585wme.0 for ; Tue, 16 Jan 2018 06:18:46 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=sender:from:to:cc:subject:date:message-id:in-reply-to:references; bh=qYWXZqmOnjr9kRe2Z16W/eCWt4E2/uIIod4+4Q08MO4=; b=Ivkc3NbZNmsywg0P16uDaBWm6emxFTIDtKHNf2xxpRaeylKEAvslCpCMk/szz8SVCc n/Nsg7eaZWLoy35+/7e4CHA7ObGOJ6uopjkQQGBhsc1HV2ahLRf940lLDPaZCOWrgWOg PpHZdVY+rEcCXy5VVZsv0ezqDGdIhbUTAsxekqknpBs74yDPSvxlEzAEGaqj5CS0mw1q v5Y7C12I+D4uSyfPHT58N2e1e9O1fRgAxmUeZdJtOXn6sJO2VVnGRFev/cRJwk+Zc+9e sZapzh0zdQkqA2mu1b9goCV+zU10MjgURvlwo3wGSOwNYZXSDRF09ueFscOBrrIpxjUJ 7tBQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:sender:from:to:cc:subject:date:message-id :in-reply-to:references; bh=qYWXZqmOnjr9kRe2Z16W/eCWt4E2/uIIod4+4Q08MO4=; b=UgPffdmI1oR+XQM0+lEcqab3bT92ZCFFanJwkWwRFr0tUR3laawzxiQXORCT2EH1ys b/6C8x7Z48XNevhQPVAaHniQZ6OvS8zpN+0uXxArTOzw/Xk9l4rCqbEPRIQYz+o75WnO cdU00KBL/1UeiE2kylzGv66k5VZj8deajNCnv6tzInCWr6DX9LAaEtJ4b5Ens2f9TKGW ADZ/7duEqyRqUfEyCGEvhwUlErCOuh4hhG+PD+Z8hrCLGp0FtwN6K8N064AyYq5ixsY2 suNh+87CbPO4YvRPZOqakDYJ/hAzSe7RGaw0jnN3nR7dr9tYNC3IP2FOgLMJcKPdv8Zt V7JA== X-Gm-Message-State: AKwxytfVvCEgwoVVM+OnjzWXMdgNpMYA6o1blqbOe7y3b9MSyKHRWdns C44V52JHBs4uoAgSiNgQu0AMnx8K X-Google-Smtp-Source: ACJfBotUCxWdobnfC3zkwilNQHbqfCHjpPAVu6aFtRCspiABMA8QEcJAJBPdFzlbnRL2eGkfPmAXOg== X-Received: by 10.28.152.142 with SMTP id a136mr13598326wme.71.1516112325068; Tue, 16 Jan 2018 06:18:45 -0800 (PST) Received: from 640k.lan (dynamic-adsl-78-12-229-84.clienti.tiscali.it. [78.12.229.84]) by smtp.gmail.com with ESMTPSA id u10sm1537758wrg.6.2018.01.16.06.18.43 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Tue, 16 Jan 2018 06:18:44 -0800 (PST) From: Paolo Bonzini To: qemu-devel@nongnu.org Date: Tue, 16 Jan 2018 15:17:28 +0100 Message-Id: <1516112253-14480-47-git-send-email-pbonzini@redhat.com> X-Mailer: git-send-email 1.8.3.1 In-Reply-To: <1516112253-14480-1-git-send-email-pbonzini@redhat.com> References: <1516112253-14480-1-git-send-email-pbonzini@redhat.com> X-detected-operating-system: by eggs.gnu.org: Genre and OS details not recognized. X-Received-From: 2a00:1450:400c:c09::242 Subject: [Qemu-devel] [PULL 46/51] find_ram_offset: Add comments and tracing 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: "Dr. David Alan Gilbert" Errors-To: qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org Sender: "Qemu-devel" From: "Dr. David Alan Gilbert" Add some comments so I can understand the various nested loops. Add some tracing so I can see what they're doing. Signed-off-by: Dr. David Alan Gilbert Message-Id: <20180105170138.23357-2-dgilbert@redhat.com> Signed-off-by: Paolo Bonzini --- exec.c | 29 ++++++++++++++++++++++------- trace-events | 4 ++++ 2 files changed, 26 insertions(+), 7 deletions(-) diff --git a/exec.c b/exec.c index 4722e52..5e2fb55 100644 --- a/exec.c +++ b/exec.c @@ -1660,7 +1660,10 @@ static void *file_ram_alloc(RAMBlock *block, } #endif -/* Called with the ramlist lock held. */ +/* Allocate space within the ram_addr_t space that governs the + * dirty bitmaps. + * Called with the ramlist lock held. + */ static ram_addr_t find_ram_offset(ram_addr_t size) { RAMBlock *block, *next_block; @@ -1673,19 +1676,29 @@ static ram_addr_t find_ram_offset(ram_addr_t size) } RAMBLOCK_FOREACH(block) { - ram_addr_t end, next = RAM_ADDR_MAX; + ram_addr_t candidate, next = RAM_ADDR_MAX; - end = block->offset + block->max_length; + candidate = block->offset + block->max_length; + /* Search for the closest following block + * and find the gap. + */ RAMBLOCK_FOREACH(next_block) { - if (next_block->offset >= end) { + if (next_block->offset >= candidate) { next = MIN(next, next_block->offset); } } - if (next - end >= size && next - end < mingap) { - offset = end; - mingap = next - end; + + /* If it fits remember our place and remember the size + * of gap, but keep going so that we might find a smaller + * gap to fill so avoiding fragmentation. + */ + if (next - candidate >= size && next - candidate < mingap) { + offset = candidate; + mingap = next - candidate; } + + trace_find_ram_offset_loop(size, candidate, offset, next, mingap); } if (offset == RAM_ADDR_MAX) { @@ -1694,6 +1707,8 @@ static ram_addr_t find_ram_offset(ram_addr_t size) abort(); } + trace_find_ram_offset(size, offset); + return offset; } diff --git a/trace-events b/trace-events index 3695959..ec95e67 100644 --- a/trace-events +++ b/trace-events @@ -55,6 +55,10 @@ dma_complete(void *dbs, int ret, void *cb) "dbs=%p ret=%d cb=%p" dma_blk_cb(void *dbs, int ret) "dbs=%p ret=%d" dma_map_wait(void *dbs) "dbs=%p" +# # exec.c +find_ram_offset(uint64_t size, uint64_t offset) "size: 0x%" PRIx64 " @ 0x%" PRIx64 +find_ram_offset_loop(uint64_t size, uint64_t candidate, uint64_t offset, uint64_t next, uint64_t mingap) "trying size: 0x%" PRIx64 " @ 0x%" PRIx64 ", offset: 0x%" PRIx64" next: 0x%" PRIx64 " mingap: 0x%" PRIx64 + # memory.c memory_region_ops_read(int cpu_index, void *mr, uint64_t addr, uint64_t value, unsigned size) "cpu %d mr %p addr 0x%"PRIx64" value 0x%"PRIx64" size %u" memory_region_ops_write(int cpu_index, void *mr, uint64_t addr, uint64_t value, unsigned size) "cpu %d mr %p addr 0x%"PRIx64" value 0x%"PRIx64" size %u" From patchwork Tue Jan 16 14:17:29 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Paolo Bonzini X-Patchwork-Id: 861692 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Authentication-Results: ozlabs.org; spf=pass (mailfrom) smtp.mailfrom=nongnu.org (client-ip=2001:4830:134:3::11; helo=lists.gnu.org; envelope-from=qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org; receiver=) Authentication-Results: ozlabs.org; dkim=fail reason="signature verification failed" (2048-bit key; unprotected) header.d=gmail.com header.i=@gmail.com header.b="Toqgyeuz"; dkim-atps=neutral Received: from lists.gnu.org (lists.gnu.org [IPv6:2001:4830:134:3::11]) (using TLSv1 with cipher AES256-SHA (256/256 bits)) (No client certificate requested) by ozlabs.org (Postfix) with ESMTPS id 3zLYrY3gnsz9sNV for ; Wed, 17 Jan 2018 02:23:08 +1100 (AEDT) Received: from localhost ([::1]:40272 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1ebT4q-0006mX-35 for incoming@patchwork.ozlabs.org; Tue, 16 Jan 2018 10:23:04 -0500 Received: from eggs.gnu.org ([2001:4830:134:3::10]:51032) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1ebS4j-0003kO-8f for qemu-devel@nongnu.org; Tue, 16 Jan 2018 09:18:55 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1ebS4e-0005Ud-Fa for qemu-devel@nongnu.org; Tue, 16 Jan 2018 09:18:53 -0500 Received: from mail-wm0-x242.google.com ([2a00:1450:400c:c09::242]:34837) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1ebS4e-0005Tv-8m for qemu-devel@nongnu.org; Tue, 16 Jan 2018 09:18:48 -0500 Received: by mail-wm0-x242.google.com with SMTP id r78so9011779wme.0 for ; Tue, 16 Jan 2018 06:18:48 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=sender:from:to:cc:subject:date:message-id:in-reply-to:references; bh=7VMu0VBZcgpewAsa8ffCUDPhjUklniJbNv3OMPwXEMQ=; b=ToqgyeuzefbfZpod+jpUSHEgEecY1kL21TA8XIYSYYMjJ4yjcXetqkLwWvSpybIT5Z nADd/H9vBJomfS2nZ2lnRhcS/nNvWoA8VUDWV2VUWERkBHkb35U8Tt/Xo8FFiyaOWeeq ZuWTFXdhJrfnoJnN8AmkOsQBZIjWwhl5n+cry09ZTPKTn+Si9XOLvqbTMRtPfi2ZL3cU pNIydqlduccyZFC5NBP8ax5J78wxG6ql/7Yrcpj8JmcWKjdwd6k94nbEX9Ie5EQ8qOwh l7CU4IMaF72jIV9BVefXNWVh3hEBgEafzp5dYl/URR/aiKKUwEmlojPN+/lNVUcC9FnL PcIA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:sender:from:to:cc:subject:date:message-id :in-reply-to:references; bh=7VMu0VBZcgpewAsa8ffCUDPhjUklniJbNv3OMPwXEMQ=; b=XZlZzQI11zzQy0TmGa4LXC1KdpG7PKG+qV3zMasdPZjP+ztnUr9x3YF9eTzw7/gkcr OzumAowBH4TBplgWqAMTIP4g7Tth5uL6srSjAqmdBgbpF7WoQCHofeLosJewf9K+8L2n CcssIhsBLf/SXNuP7Ud7rclNby+d2VL8LSufdWxSSTPy/Lm+hu2plqKTm9FeB2Hr57gY Y8tSwGko2tITgp+gBjex+LzwBNWsKEu0ykL9+y9CP1kbhZkws9xsP2O47P4Y44ofjFkz yFdtnt1EzbukI2Hkv5AMkm6gCaqUxkmIZ0IXkU6Rq2Q4XYhMfetsKJxYNADGUTpILlXF AAXg== X-Gm-Message-State: AKwxytcX7gaku/UUHF/NJu+tYGZU+2Yhv739unm1kCRcZqP/3ficXLyO NbTi+uUzXRltHZSEttJkk1Ox/SMA X-Google-Smtp-Source: ACJfBotntenoNSi2ycpC/g4iLf1p3AJY1Q4Ni5Fl759ZgolYEJYdxBDOuAWfSFPiaGbdZTn4svwLsg== X-Received: by 10.28.14.71 with SMTP id 68mr12945025wmo.150.1516112326958; Tue, 16 Jan 2018 06:18:46 -0800 (PST) Received: from 640k.lan (dynamic-adsl-78-12-229-84.clienti.tiscali.it. [78.12.229.84]) by smtp.gmail.com with ESMTPSA id u10sm1537758wrg.6.2018.01.16.06.18.45 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Tue, 16 Jan 2018 06:18:46 -0800 (PST) From: Paolo Bonzini To: qemu-devel@nongnu.org Date: Tue, 16 Jan 2018 15:17:29 +0100 Message-Id: <1516112253-14480-48-git-send-email-pbonzini@redhat.com> X-Mailer: git-send-email 1.8.3.1 In-Reply-To: <1516112253-14480-1-git-send-email-pbonzini@redhat.com> References: <1516112253-14480-1-git-send-email-pbonzini@redhat.com> X-detected-operating-system: by eggs.gnu.org: Genre and OS details not recognized. X-Received-From: 2a00:1450:400c:c09::242 Subject: [Qemu-devel] [PULL 47/51] find_ram_offset: Align ram_addr_t allocation on long boundaries 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: "Dr. David Alan Gilbert" Errors-To: qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org Sender: "Qemu-devel" From: "Dr. David Alan Gilbert" The dirty bitmaps are built from 'long's and there is fast-path code for synchronising the case where the RAMBlock is aligned to the start of a long boundary. Align the allocation to this boundary to cause the fast path to be used. Offsets before change: 11398@1515169675.018566:find_ram_offset size: 0x1e0000 @ 0x8000000 11398@1515169675.020064:find_ram_offset size: 0x20000 @ 0x81e0000 11398@1515169675.020244:find_ram_offset size: 0x20000 @ 0x8200000 11398@1515169675.024343:find_ram_offset size: 0x1000000 @ 0x8220000 11398@1515169675.025154:find_ram_offset size: 0x10000 @ 0x9220000 11398@1515169675.027682:find_ram_offset size: 0x40000 @ 0x9230000 11398@1515169675.032921:find_ram_offset size: 0x200000 @ 0x9270000 11398@1515169675.033307:find_ram_offset size: 0x1000 @ 0x9470000 11398@1515169675.033601:find_ram_offset size: 0x1000 @ 0x9471000 after change: 10923@1515169108.818245:find_ram_offset size: 0x1e0000 @ 0x8000000 10923@1515169108.819410:find_ram_offset size: 0x20000 @ 0x8200000 10923@1515169108.819587:find_ram_offset size: 0x20000 @ 0x8240000 10923@1515169108.823708:find_ram_offset size: 0x1000000 @ 0x8280000 10923@1515169108.824503:find_ram_offset size: 0x10000 @ 0x9280000 10923@1515169108.827093:find_ram_offset size: 0x40000 @ 0x92c0000 10923@1515169108.833045:find_ram_offset size: 0x200000 @ 0x9300000 10923@1515169108.833504:find_ram_offset size: 0x1000 @ 0x9500000 10923@1515169108.833787:find_ram_offset size: 0x1000 @ 0x9540000 Suggested-by: Paolo Bonzini Signed-off-by: Dr. David Alan Gilbert Message-Id: <20180105170138.23357-3-dgilbert@redhat.com> Signed-off-by: Paolo Bonzini --- exec.c | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/exec.c b/exec.c index 5e2fb55..9f4f450 100644 --- a/exec.c +++ b/exec.c @@ -1678,7 +1678,11 @@ static ram_addr_t find_ram_offset(ram_addr_t size) RAMBLOCK_FOREACH(block) { ram_addr_t candidate, next = RAM_ADDR_MAX; + /* Align blocks to start on a 'long' in the bitmap + * which makes the bitmap sync'ing take the fast path. + */ candidate = block->offset + block->max_length; + candidate = ROUND_UP(candidate, BITS_PER_LONG << TARGET_PAGE_BITS); /* Search for the closest following block * and find the gap. From patchwork Tue Jan 16 14:17:30 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Paolo Bonzini X-Patchwork-Id: 861680 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Authentication-Results: ozlabs.org; spf=pass (mailfrom) smtp.mailfrom=nongnu.org (client-ip=2001:4830:134:3::11; helo=lists.gnu.org; envelope-from=qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org; receiver=) Authentication-Results: ozlabs.org; dkim=fail reason="signature verification failed" (2048-bit key; unprotected) header.d=gmail.com header.i=@gmail.com header.b="Sgrzc2Nn"; dkim-atps=neutral Received: from lists.gnu.org (lists.gnu.org [IPv6:2001:4830:134:3::11]) (using TLSv1 with cipher AES256-SHA (256/256 bits)) (No client certificate requested) by ozlabs.org (Postfix) with ESMTPS id 3zLYW13DJCz9s7v for ; Wed, 17 Jan 2018 02:07:57 +1100 (AEDT) Received: from localhost ([::1]:39612 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1ebSqB-0002bA-Ba for incoming@patchwork.ozlabs.org; Tue, 16 Jan 2018 10:07:55 -0500 Received: from eggs.gnu.org ([2001:4830:134:3::10]:51077) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1ebS4l-0003mB-UJ for qemu-devel@nongnu.org; Tue, 16 Jan 2018 09:19:02 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1ebS4f-0005W3-Rr for qemu-devel@nongnu.org; Tue, 16 Jan 2018 09:18:55 -0500 Received: from mail-wm0-x244.google.com ([2a00:1450:400c:c09::244]:40842) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1ebS4f-0005V4-MD for qemu-devel@nongnu.org; Tue, 16 Jan 2018 09:18:49 -0500 Received: by mail-wm0-x244.google.com with SMTP id v123so8966212wmd.5 for ; Tue, 16 Jan 2018 06:18:49 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=sender:from:to:cc:subject:date:message-id:in-reply-to:references; bh=033LkzDn7bO2+4XP5OOr0CJLAPcCHZ4nUls9z7Z3jVw=; b=Sgrzc2NnQ7k1OScpelOClFcnMRVmWcqUzZ5ZZVQlWV3EpIgoU+HrKcbpgBZiEeCctA Ff8ebqDLkIsftxrJgL2F71AzIi9rMF6yLTi4QkGVpNE3inJGCjUpgAn29w42Zt3GjGeW pokHcaFchkJ/p1AbkiEMRtfZifqJSbkc4qqAwCt6ZXHZiEY8MdKW6wIPskJcHilgpDAJ YY3946DW32itBwaOK5OuLaNkex7mRAVzyu+ZaF8m1+j6LlUrUwxBQSUqWV2xXIS6HKz9 +cATKZTZeFRXhLDoNyju2RBoAevrbZpTTItK9/lNVDRrPDI+dAWG68trvwMLbsMq0hed pKdQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:sender:from:to:cc:subject:date:message-id :in-reply-to:references; bh=033LkzDn7bO2+4XP5OOr0CJLAPcCHZ4nUls9z7Z3jVw=; b=btKk1cKX/IKehyU9JK2c3W56P77bNjxNrSgbsMIiVJn12kcC4pFBWGG7N16n8/nBDJ Wc261QM81bC6cAW+B145Kw5v2jFyTAsjYEr2FrDqnX+NaFKAHBT8lhIqLxsDtXCq7LQY 71oIwTiY0X20T/KH1AfyxACpizfECgxpKZg9QrMsVIRs5e70bfCL9MCMQCE2OBkWe7Zq +2Ys8B3oGOyMvEbGJ1708dbcz3oYaBzgwunyp437SKYzp98c4fgfqWHmuX/48eLp5P8R Cs1PfLcAlKG7d354ZluGrGmgPokY6ZbT38PKLEchSD835o+LY1yNA6AkZ79QC+sIV5Me pXBQ== X-Gm-Message-State: AKwxytfbLXVnX+TmD55dMtYK0ctZoqAAhDkmBdBdx+o0+ZLewXhQ+9fI 8mKApBSrY2Ry9+Ul/mo6PdniPVss X-Google-Smtp-Source: ACJfBotPL3YflBJtF4c2A153ZGX4K3HprfOmH3V/Jnb6JEvXI7qSkrG5Vu89zka/cHzuNgXlfbowuw== X-Received: by 10.28.167.215 with SMTP id q206mr13353113wme.48.1516112328148; Tue, 16 Jan 2018 06:18:48 -0800 (PST) Received: from 640k.lan (dynamic-adsl-78-12-229-84.clienti.tiscali.it. [78.12.229.84]) by smtp.gmail.com with ESMTPSA id u10sm1537758wrg.6.2018.01.16.06.18.46 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Tue, 16 Jan 2018 06:18:47 -0800 (PST) From: Paolo Bonzini To: qemu-devel@nongnu.org Date: Tue, 16 Jan 2018 15:17:30 +0100 Message-Id: <1516112253-14480-49-git-send-email-pbonzini@redhat.com> X-Mailer: git-send-email 1.8.3.1 In-Reply-To: <1516112253-14480-1-git-send-email-pbonzini@redhat.com> References: <1516112253-14480-1-git-send-email-pbonzini@redhat.com> X-detected-operating-system: by eggs.gnu.org: Genre and OS details not recognized. X-Received-From: 2a00:1450:400c:c09::244 Subject: [Qemu-devel] [PULL 48/51] block/iscsi: fix initialization of iTask in iscsi_co_get_block_status 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: Peter Lieven Errors-To: qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org Sender: "Qemu-devel" From: Peter Lieven in case of unaligned requests or on a target that does not support block provisioning we leave iTask uninitialized and check iTask.task for NULL later. Fixes: e38bc23454ef763deb4405ebdee6a1081aa00bc8 Signed-off-by: Peter Lieven Reviewed-by: Eric Blake Message-Id: <1515425247-21730-1-git-send-email-pl@kamp.de> Signed-off-by: Paolo Bonzini --- block/iscsi.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/block/iscsi.c b/block/iscsi.c index 5c0a9e5..6a1c537 100644 --- a/block/iscsi.c +++ b/block/iscsi.c @@ -658,6 +658,8 @@ static int64_t coroutine_fn iscsi_co_get_block_status(BlockDriverState *bs, uint64_t lba; int64_t ret; + iscsi_co_init_iscsitask(iscsilun, &iTask); + if (!is_sector_request_lun_aligned(sector_num, nb_sectors, iscsilun)) { ret = -EINVAL; goto out; @@ -675,7 +677,6 @@ static int64_t coroutine_fn iscsi_co_get_block_status(BlockDriverState *bs, lba = sector_qemu2lun(sector_num, iscsilun); - iscsi_co_init_iscsitask(iscsilun, &iTask); qemu_mutex_lock(&iscsilun->mutex); retry: if (iscsi_get_lba_status_task(iscsilun->iscsi, iscsilun->lun, From patchwork Tue Jan 16 14:17:31 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Paolo Bonzini X-Patchwork-Id: 861691 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Authentication-Results: ozlabs.org; spf=pass (mailfrom) smtp.mailfrom=nongnu.org (client-ip=2001:4830:134:3::11; helo=lists.gnu.org; envelope-from=qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org; receiver=) Authentication-Results: ozlabs.org; dkim=fail reason="signature verification failed" (2048-bit key; unprotected) header.d=gmail.com header.i=@gmail.com header.b="CCwDqfFC"; dkim-atps=neutral Received: from lists.gnu.org (lists.gnu.org [IPv6:2001:4830:134:3::11]) (using TLSv1 with cipher AES256-SHA (256/256 bits)) (No client certificate requested) by ozlabs.org (Postfix) with ESMTPS id 3zLYn26RGhz9s7v for ; Wed, 17 Jan 2018 02:20:06 +1100 (AEDT) Received: from localhost ([::1]:40112 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1ebT1w-0004FO-MX for incoming@patchwork.ozlabs.org; Tue, 16 Jan 2018 10:20:04 -0500 Received: from eggs.gnu.org ([2001:4830:134:3::10]:51054) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1ebS4k-0003kx-KO for qemu-devel@nongnu.org; Tue, 16 Jan 2018 09:18:55 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1ebS4h-0005YH-A5 for qemu-devel@nongnu.org; Tue, 16 Jan 2018 09:18:54 -0500 Received: from mail-wm0-x243.google.com ([2a00:1450:400c:c09::243]:45382) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1ebS4h-0005X7-3c for qemu-devel@nongnu.org; Tue, 16 Jan 2018 09:18:51 -0500 Received: by mail-wm0-x243.google.com with SMTP id i186so8661858wmi.4 for ; Tue, 16 Jan 2018 06:18:51 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=sender:from:to:cc:subject:date:message-id:in-reply-to:references; bh=C8+zokiy5iXF1tSoWLEySm0x0c0xHd/vJQau14WkiL0=; b=CCwDqfFCPE0i9nZXO4lQwn/zzULo7hViuiJtB/MP9tZ46v1SAL2PuWZY2MefgF1SVo o9OsB6CDipl8n80XoQViRxwO0mh/CjKZW6QmWFnBcgRChkELUrgyJ9Nee+Pytzw8KsGd l540bZv5Vvy6WMZ9VMk8jxy/+s9sntAsvC7PYHQVnRZhHH7EGW1+X4KVf0ALXYzGs7ei aHV3NSbaBRVkGORdQdMD+0cJ3iKzTNjcF9VCIAaGTWk40yV99kCbZWwxw3uxt8QWdxpN 8UdYVw7Evfp42DY1g7VbpiP+z0XHk1d4X8GDujXuwXt9yz9VrDkpVMlRizX7sU4b5gev HqjA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:sender:from:to:cc:subject:date:message-id :in-reply-to:references; bh=C8+zokiy5iXF1tSoWLEySm0x0c0xHd/vJQau14WkiL0=; b=tXH0YMFp6/voqcF45L4X3A0B/6zzLZd5dIQZfPiIB9J5OUq3J6I7tx+nXMkSDg/uBx lNlw1jtQafCKn1Bj19BDNQ1QxyE8liNi/nzllDS/bZgE5oBmvYlvqJ8VYI2NMmjxg83q d2coLWfpAq2IES2++uWVjOfTg3cTsj6Tcj8azFiE/npliznCb3iWoFBUb6L5cNHJT8ya KSpKDw5XPLILsgDsLm43ojAqP7scUShccFI05O/PaXgkH/+nkEikdiU3ZkqZqqK9Z72R Y+CwY7xrQ/05iJ8gC84qLwUGiV/P86ruLo46rV6hhAPZorU0oBXyCQZaPemKpuC0t6Zk xq6g== X-Gm-Message-State: AKwxytctyguePTV9XlYpx4PofcgYSdzYSOPDLco0AXpZZ5397PsZo7Us nYhS8CiEf27ooCpy4yBNaplmGjYy X-Google-Smtp-Source: ACJfBou6WPL5VRozqUawuST1QpfijHy1myNyOw3eTM64Q18HD/s+QFYi7OYQe9zB7pz+tP7pa8ysOA== X-Received: by 10.28.69.66 with SMTP id s63mr13035767wma.47.1516112329783; Tue, 16 Jan 2018 06:18:49 -0800 (PST) Received: from 640k.lan (dynamic-adsl-78-12-229-84.clienti.tiscali.it. [78.12.229.84]) by smtp.gmail.com with ESMTPSA id u10sm1537758wrg.6.2018.01.16.06.18.48 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Tue, 16 Jan 2018 06:18:49 -0800 (PST) From: Paolo Bonzini To: qemu-devel@nongnu.org Date: Tue, 16 Jan 2018 15:17:31 +0100 Message-Id: <1516112253-14480-50-git-send-email-pbonzini@redhat.com> X-Mailer: git-send-email 1.8.3.1 In-Reply-To: <1516112253-14480-1-git-send-email-pbonzini@redhat.com> References: <1516112253-14480-1-git-send-email-pbonzini@redhat.com> X-detected-operating-system: by eggs.gnu.org: Genre and OS details not recognized. X-Received-From: 2a00:1450:400c:c09::243 Subject: [Qemu-devel] [PULL 49/51] cpu: flush TB cache when loading VMState 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: Maria Klimushenkova , Pavel Dovgalyuk Errors-To: qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org Sender: "Qemu-devel" From: Pavel Dovgalyuk Flushing TB cache is required because TBs key in the cache may match different code which existed in the previous state. Signed-off-by: Pavel Dovgalyuk Signed-off-by: Maria Klimushenkova Message-Id: <20180110134846.12940.99993.stgit@pasha-VirtualBox> [Add comment suggested by Peter Maydell. - Paolo] Signed-off-by: Paolo Bonzini Signed-off-by: Pavel Dovgalyuk --- exec.c | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/exec.c b/exec.c index 9f4f450..d28fc0c 100644 --- a/exec.c +++ b/exec.c @@ -623,6 +623,13 @@ static int cpu_common_post_load(void *opaque, int version_id) cpu->interrupt_request &= ~0x01; tlb_flush(cpu); + /* loadvm has just updated the content of RAM, bypassing the + * usual mechanisms that ensure we flush TBs for writes to + * memory we've translated code from. So we must flush all TBs, + * which will now be stale. + */ + tb_flush(cpu); + return 0; } From patchwork Tue Jan 16 14:17:32 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: Paolo Bonzini X-Patchwork-Id: 861678 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Authentication-Results: ozlabs.org; spf=pass (mailfrom) smtp.mailfrom=nongnu.org (client-ip=2001:4830:134:3::11; helo=lists.gnu.org; envelope-from=qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org; receiver=) Authentication-Results: ozlabs.org; dkim=fail reason="signature verification failed" (2048-bit key; unprotected) header.d=gmail.com header.i=@gmail.com header.b="T4hzDXSi"; dkim-atps=neutral Received: from lists.gnu.org (lists.gnu.org [IPv6:2001:4830:134:3::11]) (using TLSv1 with cipher AES256-SHA (256/256 bits)) (No client certificate requested) by ozlabs.org (Postfix) with ESMTPS id 3zLYTw2tVsz9s83 for ; Wed, 17 Jan 2018 02:07:00 +1100 (AEDT) Received: from localhost ([::1]:39606 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1ebSpG-0001iD-8Q for incoming@patchwork.ozlabs.org; Tue, 16 Jan 2018 10:06:58 -0500 Received: from eggs.gnu.org ([2001:4830:134:3::10]:51056) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1ebS4k-0003ky-NU for qemu-devel@nongnu.org; Tue, 16 Jan 2018 09:18:59 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1ebS4j-0005aD-De for qemu-devel@nongnu.org; Tue, 16 Jan 2018 09:18:54 -0500 Received: from mail-wm0-x243.google.com ([2a00:1450:400c:c09::243]:42430) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1ebS4j-0005Zc-4J for qemu-devel@nongnu.org; Tue, 16 Jan 2018 09:18:53 -0500 Received: by mail-wm0-x243.google.com with SMTP id b141so8774386wme.1 for ; Tue, 16 Jan 2018 06:18:53 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=sender:from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=ji3zYJr0a36HKOJ9HE/PLOaJVocmgHMoxyHaRzyhj0g=; b=T4hzDXSilPiOMrLQL5TjgKyRhn9zDMByq/0OnhwfhhivCJvLcEKbUCoLzKkznvCgSm DP26VZEv2jEHlDVgzq1xuXIReblBalsA4stazqdpY7N5gx063IdZpN6S+bZMv1K9n+WB xWjsYWI3FZn3B61VPoyu+0aLbEwTHFWW1lqKY+FivCLfMVUOXQn236AQZ88JWAJFF4UZ RoPqSFAmunTvd1SAJ8ZA33jvD5+pVYfRSMa3uc3dnMyQZ+X+0Hu9Smvnr/AzGstvGFj0 WO4X6wUbVrjLTU7CKmb7YjX7Axzp9qpKhmWu3dYNl2P0VJ7g7v+iSEvfcTVh38SANtuW 90ZA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:sender:from:to:cc:subject:date:message-id :in-reply-to:references:mime-version:content-transfer-encoding; bh=ji3zYJr0a36HKOJ9HE/PLOaJVocmgHMoxyHaRzyhj0g=; b=BpLk05BpMpD/8+LGWeAkWp4Qx+CXrb/KVd1mqAQTlSLL9uASbjT55nDeI2h1JIf4+J Ln3/Jci741vztSE+++XZpRiM3NKmNY8q2gbJf0bX1M1xld5H3rWymQYpF792bpaMIPZT 1f/aQUm2T650PEPdBz/yIwIdKL6rP16aC9mYY0zXQqCYAyUHHWIrAmc2LCkJEXNogzOZ wkq9Za+ynx1OqinJYriv7PaanchkFMYlJhxfW9S+BnTJ64juHZ/kKW9T7vkW4uLnNgPa DsOYGqEP8WRrn/nZcBq4qwCUI56jYX2JOsuX/a6fTv0pi8Pm94YPjfFK13VW98chjyso TmYA== X-Gm-Message-State: AKwxytdC1+eKe6aPI085KCJkWwQutMowpXjC1fHn22+sN/hTl582mMHU hb34+edqPllN6j50OqbbPXUqcX/M X-Google-Smtp-Source: ACJfBotbYm1eMtbPu4U/hRSLd4p9PHVvvGwhQX/p1qn1EY6m2//3l+84E30LDxZUzXkRXI+jlDt23Q== X-Received: by 10.28.143.204 with SMTP id r195mr14099806wmd.51.1516112331684; Tue, 16 Jan 2018 06:18:51 -0800 (PST) Received: from 640k.lan (dynamic-adsl-78-12-229-84.clienti.tiscali.it. [78.12.229.84]) by smtp.gmail.com with ESMTPSA id u10sm1537758wrg.6.2018.01.16.06.18.49 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Tue, 16 Jan 2018 06:18:50 -0800 (PST) From: Paolo Bonzini To: qemu-devel@nongnu.org Date: Tue, 16 Jan 2018 15:17:32 +0100 Message-Id: <1516112253-14480-51-git-send-email-pbonzini@redhat.com> X-Mailer: git-send-email 1.8.3.1 In-Reply-To: <1516112253-14480-1-git-send-email-pbonzini@redhat.com> References: <1516112253-14480-1-git-send-email-pbonzini@redhat.com> MIME-Version: 1.0 X-detected-operating-system: by eggs.gnu.org: Genre and OS details not recognized. X-Received-From: 2a00:1450:400c:c09::243 Subject: [Qemu-devel] [PULL 50/51] util/qemu-thread-*: add qemu_lock, locked and unlock trace events 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: =?utf-8?q?Alex_Benn=C3=A9e?= Errors-To: qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org Sender: "Qemu-devel" From: Alex Bennée Signed-off-by: Alex Bennée Signed-off-by: Paolo Bonzini --- include/qemu/thread.h | 39 +++++++++++++++++++++++++++++++++++---- util/qemu-thread-posix.c | 21 ++++++++++++--------- util/qemu-thread-win32.c | 20 +++++++++++--------- util/trace-events | 7 ++++--- 4 files changed, 62 insertions(+), 25 deletions(-) diff --git a/include/qemu/thread.h b/include/qemu/thread.h index 9910f49..9af4e94 100644 --- a/include/qemu/thread.h +++ b/include/qemu/thread.h @@ -22,9 +22,31 @@ typedef struct QemuThread QemuThread; void qemu_mutex_init(QemuMutex *mutex); void qemu_mutex_destroy(QemuMutex *mutex); -void qemu_mutex_lock(QemuMutex *mutex); -int qemu_mutex_trylock(QemuMutex *mutex); -void qemu_mutex_unlock(QemuMutex *mutex); +int qemu_mutex_trylock_impl(QemuMutex *mutex, const char *file, const int line); +void qemu_mutex_lock_impl(QemuMutex *mutex, const char *file, const int line); +void qemu_mutex_unlock_impl(QemuMutex *mutex, const char *file, const int line); + +#define qemu_mutex_lock(mutex) \ + qemu_mutex_lock_impl(mutex, __FILE__, __LINE__) +#define qemu_mutex_trylock(mutex) \ + qemu_mutex_trylock_impl(mutex, __FILE__, __LINE__) +#define qemu_mutex_unlock(mutex) \ + qemu_mutex_unlock_impl(mutex, __FILE__, __LINE__) + +static inline void (qemu_mutex_lock)(QemuMutex *mutex) +{ + qemu_mutex_lock(mutex); +} + +static inline int (qemu_mutex_trylock)(QemuMutex *mutex) +{ + return qemu_mutex_trylock(mutex); +} + +static inline void (qemu_mutex_unlock)(QemuMutex *mutex) +{ + qemu_mutex_unlock(mutex); +} /* Prototypes for other functions are in thread-posix.h/thread-win32.h. */ void qemu_rec_mutex_init(QemuRecMutex *mutex); @@ -39,7 +61,16 @@ void qemu_cond_destroy(QemuCond *cond); */ void qemu_cond_signal(QemuCond *cond); void qemu_cond_broadcast(QemuCond *cond); -void qemu_cond_wait(QemuCond *cond, QemuMutex *mutex); +void qemu_cond_wait_impl(QemuCond *cond, QemuMutex *mutex, + const char *file, const int line); + +#define qemu_cond_wait(cond, mutex) \ + qemu_cond_wait_impl(cond, mutex, __FILE__, __LINE__) + +static inline void (qemu_cond_wait)(QemuCond *cond, QemuMutex *mutex) +{ + qemu_cond_wait(cond, mutex); +} void qemu_sem_init(QemuSemaphore *sem, int init); void qemu_sem_post(QemuSemaphore *sem); diff --git a/util/qemu-thread-posix.c b/util/qemu-thread-posix.c index 959a570..b789cf3 100644 --- a/util/qemu-thread-posix.c +++ b/util/qemu-thread-posix.c @@ -57,26 +57,28 @@ void qemu_mutex_destroy(QemuMutex *mutex) error_exit(err, __func__); } -void qemu_mutex_lock(QemuMutex *mutex) +void qemu_mutex_lock_impl(QemuMutex *mutex, const char *file, const int line) { int err; assert(mutex->initialized); + trace_qemu_mutex_lock(mutex, file, line); + err = pthread_mutex_lock(&mutex->lock); if (err) error_exit(err, __func__); - trace_qemu_mutex_locked(mutex); + trace_qemu_mutex_locked(mutex, file, line); } -int qemu_mutex_trylock(QemuMutex *mutex) +int qemu_mutex_trylock_impl(QemuMutex *mutex, const char *file, const int line) { int err; assert(mutex->initialized); err = pthread_mutex_trylock(&mutex->lock); if (err == 0) { - trace_qemu_mutex_locked(mutex); + trace_qemu_mutex_locked(mutex, file, line); return 0; } if (err != EBUSY) { @@ -85,15 +87,16 @@ int qemu_mutex_trylock(QemuMutex *mutex) return -EBUSY; } -void qemu_mutex_unlock(QemuMutex *mutex) +void qemu_mutex_unlock_impl(QemuMutex *mutex, const char *file, const int line) { int err; assert(mutex->initialized); - trace_qemu_mutex_unlocked(mutex); err = pthread_mutex_unlock(&mutex->lock); if (err) error_exit(err, __func__); + + trace_qemu_mutex_unlock(mutex, file, line); } void qemu_rec_mutex_init(QemuRecMutex *mutex) @@ -152,14 +155,14 @@ void qemu_cond_broadcast(QemuCond *cond) error_exit(err, __func__); } -void qemu_cond_wait(QemuCond *cond, QemuMutex *mutex) +void qemu_cond_wait_impl(QemuCond *cond, QemuMutex *mutex, const char *file, const int line) { int err; assert(cond->initialized); - trace_qemu_mutex_unlocked(mutex); + trace_qemu_mutex_unlock(mutex, file, line); err = pthread_cond_wait(&cond->cond, &mutex->lock); - trace_qemu_mutex_locked(mutex); + trace_qemu_mutex_locked(mutex, file, line); if (err) error_exit(err, __func__); } diff --git a/util/qemu-thread-win32.c b/util/qemu-thread-win32.c index 94f3491..ab60c0d 100644 --- a/util/qemu-thread-win32.c +++ b/util/qemu-thread-win32.c @@ -56,30 +56,32 @@ void qemu_mutex_destroy(QemuMutex *mutex) InitializeSRWLock(&mutex->lock); } -void qemu_mutex_lock(QemuMutex *mutex) +void qemu_mutex_lock_impl(QemuMutex *mutex, const char *file, const int line) { assert(mutex->initialized); + trace_qemu_mutex_lock(mutex, file, line); + AcquireSRWLockExclusive(&mutex->lock); - trace_qemu_mutex_locked(mutex); + trace_qemu_mutex_locked(mutex, file, line); } -int qemu_mutex_trylock(QemuMutex *mutex) +int qemu_mutex_trylock_impl(QemuMutex *mutex, const char *file, const int line) { int owned; assert(mutex->initialized); owned = TryAcquireSRWLockExclusive(&mutex->lock); if (owned) { - trace_qemu_mutex_locked(mutex); + trace_qemu_mutex_locked(mutex, file, line); return 0; } return -EBUSY; } -void qemu_mutex_unlock(QemuMutex *mutex) +void qemu_mutex_unlock_impl(QemuMutex *mutex, const char *file, const int line) { assert(mutex->initialized); - trace_qemu_mutex_unlocked(mutex); + trace_qemu_mutex_unlock(mutex, file, line); ReleaseSRWLockExclusive(&mutex->lock); } @@ -140,12 +142,12 @@ void qemu_cond_broadcast(QemuCond *cond) WakeAllConditionVariable(&cond->var); } -void qemu_cond_wait(QemuCond *cond, QemuMutex *mutex) +void qemu_cond_wait_impl(QemuCond *cond, QemuMutex *mutex, const char *file, const int line) { assert(cond->initialized); - trace_qemu_mutex_unlocked(mutex); + trace_qemu_mutex_unlock(mutex, file, line); SleepConditionVariableSRW(&cond->var, &mutex->lock, INFINITE, 0); - trace_qemu_mutex_locked(mutex); + trace_qemu_mutex_locked(mutex, file, line); } void qemu_sem_init(QemuSemaphore *sem, int init) diff --git a/util/trace-events b/util/trace-events index 025499f..515e625 100644 --- a/util/trace-events +++ b/util/trace-events @@ -56,6 +56,7 @@ lockcnt_futex_wait(const void *lockcnt, int val) "lockcnt %p waiting on %d" lockcnt_futex_wait_resume(const void *lockcnt, int new) "lockcnt %p after wait: %d" lockcnt_futex_wake(const void *lockcnt) "lockcnt %p waking up one waiter" -# util/qemu-thread-posix.c -qemu_mutex_locked(void *lock) "locked mutex %p" -qemu_mutex_unlocked(void *lock) "unlocked mutex %p" +# util/qemu-thread.c +qemu_mutex_lock(void *mutex, const char *file, const int line) "waiting on mutex %p (%s:%d)" +qemu_mutex_locked(void *mutex, const char *file, const int line) "taken mutex %p (%s:%d)" +qemu_mutex_unlock(void *mutex, const char *file, const int line) "released mutex %p (%s:%d)" From patchwork Tue Jan 16 14:17:33 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: Paolo Bonzini X-Patchwork-Id: 861663 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Authentication-Results: ozlabs.org; spf=pass (mailfrom) smtp.mailfrom=nongnu.org (client-ip=2001:4830:134:3::11; helo=lists.gnu.org; envelope-from=qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org; receiver=) Authentication-Results: ozlabs.org; dkim=fail reason="signature verification failed" (2048-bit key; unprotected) header.d=gmail.com header.i=@gmail.com header.b="CgqjTBV7"; dkim-atps=neutral Received: from lists.gnu.org (lists.gnu.org [IPv6:2001:4830:134:3::11]) (using TLSv1 with cipher AES256-SHA (256/256 bits)) (No client certificate requested) by ozlabs.org (Postfix) with ESMTPS id 3zLYKn0dzfz9s7v for ; Wed, 17 Jan 2018 01:59:56 +1100 (AEDT) Received: from localhost ([::1]:39475 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1ebSiR-0003f3-4L for incoming@patchwork.ozlabs.org; Tue, 16 Jan 2018 09:59:55 -0500 Received: from eggs.gnu.org ([2001:4830:134:3::10]:51079) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1ebS4m-0003ma-8Y for qemu-devel@nongnu.org; Tue, 16 Jan 2018 09:18:57 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1ebS4l-0005bc-5p for qemu-devel@nongnu.org; Tue, 16 Jan 2018 09:18:56 -0500 Received: from mail-wm0-x22b.google.com ([2a00:1450:400c:c09::22b]:43932) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1ebS4k-0005at-Sp for qemu-devel@nongnu.org; Tue, 16 Jan 2018 09:18:55 -0500 Received: by mail-wm0-x22b.google.com with SMTP id g1so8680182wmg.2 for ; Tue, 16 Jan 2018 06:18:54 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=sender:from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=XVXpTNERZuDfLChI1As/F3vkRhV3SxX66Rw2nV7mweQ=; b=CgqjTBV7fSXrWaNcAw6gHWMpYypGtqVSiV9f/RqpHjsIBhes0aeMzuAZGBYcA09PrD gfZG7sVgl10jn1ObMX5sTPrhlF0YKKi62Luf9cMiFtA3D045uRZSfUI4LDwpwcQ7qsnu UqGObHg2Pd3XweLffo3d/T7qKcc+V0umEVQF6gFsM0g+4Ph/q/lqRcESLQiSRjdfx5Eh yPr0xBLdjnMFlqubqXuPZqjGng8t1OTpQW+RRPZ3C9dzR2dBPIrtDScy58Roeb3qeeYc 0INq3/GueLaqZUOQQGydbDNLFDXy+WTw05KFFn6cGk5CJ8q+oCA1x9GVFFNqBPYrZiRh LCRA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:sender:from:to:cc:subject:date:message-id :in-reply-to:references:mime-version:content-transfer-encoding; bh=XVXpTNERZuDfLChI1As/F3vkRhV3SxX66Rw2nV7mweQ=; b=sjZeOHSivcjDCw4GtIJVQYDaG2Rnx3C98rT/HNdxN1N0Swkq70OLorHnSgApEFTRR9 1CT+SSYUQwcf3mPTB6L63xEBuzhIWtrvBAXIThULXFLhSNbm0gUlgtjM18A2EtC9n8iF 7vtshLdxl64JoLKheychYBH3LSsAGAHOp3lsVugb9KCu9+ehHOrkrFfGJTfFosWTXI5t OiTsK+DXewYzEq3SPia1Gm9LMpPdh39oam7/5lyyfadyo+tRCIJOxZTKYX/bpQ50vYUh Ue5zJo92YQcTGxwvVWxgqItgcnhuH1rB+AzI4+mWP5TBdwg/f86INN4601+7kwyuXiNB xV4w== X-Gm-Message-State: AKwxytfChN/EFNdCe3WqD1AFEhOyArFktLu2GivwdC0r6UBOP+t/aut7 i3Dm6klH3nY6o+/UTVn/HmDazqb7 X-Google-Smtp-Source: ACJfBosaYqklJsLQMoF27NMocME9SlURE9Fe8g2StkNRUkYs5iEYD/JIvCV8EGkwKTD/WAfrg3GaoQ== X-Received: by 10.28.148.150 with SMTP id w144mr13241278wmd.0.1516112333559; Tue, 16 Jan 2018 06:18:53 -0800 (PST) Received: from 640k.lan (dynamic-adsl-78-12-229-84.clienti.tiscali.it. [78.12.229.84]) by smtp.gmail.com with ESMTPSA id u10sm1537758wrg.6.2018.01.16.06.18.51 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Tue, 16 Jan 2018 06:18:52 -0800 (PST) From: Paolo Bonzini To: qemu-devel@nongnu.org Date: Tue, 16 Jan 2018 15:17:33 +0100 Message-Id: <1516112253-14480-52-git-send-email-pbonzini@redhat.com> X-Mailer: git-send-email 1.8.3.1 In-Reply-To: <1516112253-14480-1-git-send-email-pbonzini@redhat.com> References: <1516112253-14480-1-git-send-email-pbonzini@redhat.com> MIME-Version: 1.0 X-detected-operating-system: by eggs.gnu.org: Genre and OS details not recognized. X-Received-From: 2a00:1450:400c:c09::22b Subject: [Qemu-devel] [PULL 51/51] scripts/analyse-locks-simpletrace.py: script to analyse lock times 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: =?utf-8?q?Alex_Benn=C3=A9e?= Errors-To: qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org Sender: "Qemu-devel" From: Alex Bennée This script allows analysis of mutex acquisition and hold times based on a trace file. Given a trace control file of: qemu_mutex_lock qemu_mutex_locked qemu_mutex_unlock And running with: $QEMU $QEMU_ARGS -trace events=./lock-trace You can analyse the results with: ./scripts/analyse-locks-simpletrace.py trace-events-all ./trace-21812 Signed-off-by: Alex Bennée Signed-off-by: Paolo Bonzini --- scripts/analyse-locks-simpletrace.py | 99 ++++++++++++++++++++++++++++++++++++ 1 file changed, 99 insertions(+) create mode 100755 scripts/analyse-locks-simpletrace.py diff --git a/scripts/analyse-locks-simpletrace.py b/scripts/analyse-locks-simpletrace.py new file mode 100755 index 0000000..101e84d --- /dev/null +++ b/scripts/analyse-locks-simpletrace.py @@ -0,0 +1,99 @@ +#!/usr/bin/env python +# -*- coding: utf-8 -*- +# +# Analyse lock events and compute statistics +# +# Author: Alex Bennée +# + +import os +import simpletrace +import argparse +import numpy as np + +class MutexAnalyser(simpletrace.Analyzer): + "A simpletrace Analyser for checking locks." + + def __init__(self): + self.locks = 0 + self.locked = 0 + self.unlocks = 0 + self.mutex_records = {} + + def _get_mutex(self, mutex): + if not mutex in self.mutex_records: + self.mutex_records[mutex] = {"locks": 0, + "lock_time": 0, + "acquire_times": [], + "locked": 0, + "locked_time": 0, + "held_times": [], + "unlocked": 0} + + return self.mutex_records[mutex] + + def qemu_mutex_lock(self, timestamp, mutex, filename, line): + self.locks += 1 + rec = self._get_mutex(mutex) + rec["locks"] += 1 + rec["lock_time"] = timestamp[0] + rec["lock_loc"] = (filename, line) + + def qemu_mutex_locked(self, timestamp, mutex, filename, line): + self.locked += 1 + rec = self._get_mutex(mutex) + rec["locked"] += 1 + rec["locked_time"] = timestamp[0] + acquire_time = rec["locked_time"] - rec["lock_time"] + rec["locked_loc"] = (filename, line) + rec["acquire_times"].append(acquire_time) + + def qemu_mutex_unlock(self, timestamp, mutex, filename, line): + self.unlocks += 1 + rec = self._get_mutex(mutex) + rec["unlocked"] += 1 + held_time = timestamp[0] - rec["locked_time"] + rec["held_times"].append(held_time) + rec["unlock_loc"] = (filename, line) + + +def get_args(): + "Grab options" + parser = argparse.ArgumentParser() + parser.add_argument("--output", "-o", type=str, help="Render plot to file") + parser.add_argument("events", type=str, help='trace file read from') + parser.add_argument("tracefile", type=str, help='trace file read from') + return parser.parse_args() + +if __name__ == '__main__': + args = get_args() + + # Gather data from the trace + analyser = MutexAnalyser() + simpletrace.process(args.events, args.tracefile, analyser) + + print ("Total locks: %d, locked: %d, unlocked: %d" % + (analyser.locks, analyser.locked, analyser.unlocks)) + + # Now dump the individual lock stats + for key, val in sorted(analyser.mutex_records.iteritems(), + key=lambda (k,v): v["locks"]): + print ("Lock: %#x locks: %d, locked: %d, unlocked: %d" % + (key, val["locks"], val["locked"], val["unlocked"])) + + acquire_times = np.array(val["acquire_times"]) + if len(acquire_times) > 0: + print (" Acquire Time: min:%d median:%d avg:%.2f max:%d" % + (acquire_times.min(), np.median(acquire_times), + acquire_times.mean(), acquire_times.max())) + + held_times = np.array(val["held_times"]) + if len(held_times) > 0: + print (" Held Time: min:%d median:%d avg:%.2f max:%d" % + (held_times.min(), np.median(held_times), + held_times.mean(), held_times.max())) + + # Check if any locks still held + if val["locks"] > val["locked"]: + print (" LOCK HELD (%s:%s)" % (val["locked_loc"])) + print (" BLOCKED (%s:%s)" % (val["lock_loc"]))