From patchwork Tue Apr 23 12:37:14 2013 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Cornelia Huck X-Patchwork-Id: 238896 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Received: from lists.gnu.org (lists.gnu.org [208.118.235.17]) (using TLSv1 with cipher AES256-SHA (256/256 bits)) (Client did not present a certificate) by ozlabs.org (Postfix) with ESMTPS id CC8F32C0185 for ; Tue, 23 Apr 2013 22:38:51 +1000 (EST) Received: from localhost ([::1]:49160 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1UUcUj-0007Vt-JZ for incoming@patchwork.ozlabs.org; Tue, 23 Apr 2013 08:38:49 -0400 Received: from eggs.gnu.org ([208.118.235.92]:41510) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1UUcUO-0007Vf-KN for qemu-devel@nongnu.org; Tue, 23 Apr 2013 08:38:30 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1UUcUN-0000my-FJ for qemu-devel@nongnu.org; Tue, 23 Apr 2013 08:38:28 -0400 Received: from e06smtp12.uk.ibm.com ([195.75.94.108]:43583) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1UUcUN-0000mW-5Q for qemu-devel@nongnu.org; Tue, 23 Apr 2013 08:38:27 -0400 Received: from /spool/local by e06smtp12.uk.ibm.com with IBM ESMTP SMTP Gateway: Authorized Use Only! Violators will be prosecuted for from ; Tue, 23 Apr 2013 13:35:00 +0100 Received: from d06dlp02.portsmouth.uk.ibm.com (9.149.20.14) by e06smtp12.uk.ibm.com (192.168.101.142) with IBM ESMTP SMTP Gateway: Authorized Use Only! Violators will be prosecuted; Tue, 23 Apr 2013 13:34:59 +0100 Received: from b06cxnps4075.portsmouth.uk.ibm.com (d06relay12.portsmouth.uk.ibm.com [9.149.109.197]) by d06dlp02.portsmouth.uk.ibm.com (Postfix) with ESMTP id E910D2190109 for ; Tue, 23 Apr 2013 13:39:54 +0100 (BST) Received: from d06av12.portsmouth.uk.ibm.com (d06av12.portsmouth.uk.ibm.com [9.149.37.247]) by b06cxnps4075.portsmouth.uk.ibm.com (8.13.8/8.13.8/NCO v10.0) with ESMTP id r3NCbL4t48955524 for ; Tue, 23 Apr 2013 12:37:22 GMT Received: from d06av12.portsmouth.uk.ibm.com (localhost [127.0.0.1]) by d06av12.portsmouth.uk.ibm.com (8.14.4/8.14.4/NCO v10.0 AVout) with ESMTP id r3NCbUuw003812 for ; Tue, 23 Apr 2013 06:37:31 -0600 Received: from tuxmaker.boeblingen.de.ibm.com (tuxmaker.boeblingen.de.ibm.com [9.152.85.9]) by d06av12.portsmouth.uk.ibm.com (8.14.4/8.13.1/NCO v10.0 AVin) with ESMTP id r3NCbNRQ003471; Tue, 23 Apr 2013 06:37:30 -0600 From: Cornelia Huck To: Alexander Graf Date: Tue, 23 Apr 2013 14:37:14 +0200 Message-Id: <1366720634-13184-5-git-send-email-cornelia.huck@de.ibm.com> X-Mailer: git-send-email 1.7.12.4 In-Reply-To: <1366720634-13184-1-git-send-email-cornelia.huck@de.ibm.com> References: <1366720634-13184-1-git-send-email-cornelia.huck@de.ibm.com> X-TM-AS-MML: No X-Content-Scanned: Fidelis XPS MAILER x-cbid: 13042312-8372-0000-0000-000005D1BE82 X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.4.x-2.6.x [generic] X-Received-From: 195.75.94.108 Cc: Cornelia Huck , Christian Borntraeger , qemu-devel@nongnu.org, Dominik Dingel Subject: [Qemu-devel] [PATCH 4/4] s390-ccw.img: Get queue config from host. X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.14 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-bounces+incoming=patchwork.ozlabs.org@nongnu.org Ask the host about the configuration instead of guessing it. Signed-off-by: Cornelia Huck --- pc-bios/s390-ccw/virtio.c | 10 +++++++--- pc-bios/s390-ccw/virtio.h | 5 +++++ 2 files changed, 12 insertions(+), 3 deletions(-) diff --git a/pc-bios/s390-ccw/virtio.c b/pc-bios/s390-ccw/virtio.c index 8e37dce..6b28aab 100644 --- a/pc-bios/s390-ccw/virtio.c +++ b/pc-bios/s390-ccw/virtio.c @@ -261,17 +261,21 @@ int virtio_read(ulong sector, void *load_addr) void virtio_setup_block(struct subchannel_id schid) { struct vq_info_block info; + struct vq_config_block config = {}; virtio_reset(schid); - /* XXX need to fetch the 128 from host */ - vring_init(&block, 128, (void*)(100 * 1024 * 1024), + config.index = 0; + if (run_ccw(schid, CCW_CMD_READ_VQ_CONF, &config, sizeof(config))) { + virtio_panic("Could not get block device configuration\n"); + } + vring_init(&block, config.num, (void*)(100 * 1024 * 1024), KVM_S390_VIRTIO_RING_ALIGN); info.queue = (100ULL * 1024ULL* 1024ULL); info.align = KVM_S390_VIRTIO_RING_ALIGN; info.index = 0; - info.num = 128; + info.num = config.num; block.schid = schid; if (!run_ccw(schid, CCW_CMD_SET_VQ, &info, sizeof(info))) { diff --git a/pc-bios/s390-ccw/virtio.h b/pc-bios/s390-ccw/virtio.h index a33199d..86fdd57 100644 --- a/pc-bios/s390-ccw/virtio.h +++ b/pc-bios/s390-ccw/virtio.h @@ -53,6 +53,11 @@ struct vq_info_block { u16 num; } __attribute__((packed)); +struct vq_config_block { + u16 index; + u16 num; +} __attribute__((packed)); + struct virtio_dev { struct virtio_dev_header *header; struct virtio_vqconfig *vqconfig;