From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from eggs.gnu.org ([2001:4830:134:3::10]:56649) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1XWnfh-0002LK-6l for qemu-devel@nongnu.org; Wed, 24 Sep 2014 10:36:04 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1XWnfb-0000nh-1y for qemu-devel@nongnu.org; Wed, 24 Sep 2014 10:35:57 -0400 Received: from mx1.redhat.com ([209.132.183.28]:19204) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1XWnfa-0000nC-Pm for qemu-devel@nongnu.org; Wed, 24 Sep 2014 10:35:50 -0400 Received: from int-mx10.intmail.prod.int.phx2.redhat.com (int-mx10.intmail.prod.int.phx2.redhat.com [10.5.11.23]) by mx1.redhat.com (8.14.4/8.14.4) with ESMTP id s8OEZjHq020917 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-GCM-SHA384 bits=256 verify=FAIL) for ; Wed, 24 Sep 2014 10:35:45 -0400 From: Markus Armbruster References: <1411490885-29782-1-git-send-email-jsnow@redhat.com> <1411490885-29782-5-git-send-email-jsnow@redhat.com> Date: Wed, 24 Sep 2014 16:35:42 +0200 In-Reply-To: <1411490885-29782-5-git-send-email-jsnow@redhat.com> (John Snow's message of "Tue, 23 Sep 2014 12:48:03 -0400") Message-ID: <87egv1ozlt.fsf@blackfin.pond.sub.org> MIME-Version: 1.0 Content-Type: text/plain Subject: Re: [Qemu-devel] [PATCH 4/6] ide: Update ide_drive_get to be HBA agnostic List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: John Snow Cc: kwolf@redhat.com, qemu-devel@nongnu.org, stefanha@redhat.com, mst@redhat.com John Snow writes: > Instead of duplicating the logic for the if_ide > (bus,unit) mappings, rely on the blockdev layer > for managing those mappings for us, and use the > drive_get_by_index call instead. > > This allows ide_drive_get to work for AHCI HBAs > as well, and can be used in the Q35 initialization. > > Signed-off-by: John Snow > --- > hw/ide/core.c | 12 +++++++----- > 1 file changed, 7 insertions(+), 5 deletions(-) > > diff --git a/hw/ide/core.c b/hw/ide/core.c > index 6fba056..1e43d50 100644 > --- a/hw/ide/core.c > +++ b/hw/ide/core.c > @@ -2551,13 +2551,15 @@ const VMStateDescription vmstate_ide_bus = { > void ide_drive_get(DriveInfo **hd, int max_bus) > { > int i; > + int max_devs = if_get_max_devs(IF_IDE) * max_bus; Okay, here you need if_get_max_devs(). Suggest to move its introduction from PATCH 2 to this one. Hmm, I guess we better change its name to start with drive_. > + int buses = drive_get_max_bus(IF_IDE) + 1; > > - if (drive_get_max_bus(IF_IDE) >= max_bus) { > - fprintf(stderr, "qemu: too many IDE bus: %d\n", max_bus); > - exit(1); > + if (buses > max_bus) { > + fprintf(stderr, "Warning: Too many IDE buses defined (%d > %d)\n", > + buses, max_bus); New! Error message now English! Since you touch it, you could use error_report(). Not important, as doesn't make much of a difference in this case. > } > > - for(i = 0; i < max_bus * MAX_IDE_DEVS; i++) { > - hd[i] = drive_get(IF_IDE, i / MAX_IDE_DEVS, i % MAX_IDE_DEVS); > + for (i = 0; i < max_devs; i++) { > + hd[i] = drive_get_by_index(IF_IDE, i); > } > } Maybe parameter max_bus should be replaced by the number of slots in hd[]. What do you think?