Received: by 2002:a25:e7d8:0:0:0:0:0 with SMTP id e207csp684904ybh; Tue, 10 Mar 2020 06:26:43 -0700 (PDT) X-Google-Smtp-Source: ADFU+vsQ4N4xc/xtGt3p1PjSYemiYaSA3nc/DJHCaI1rifU6+pdIE9z02P4o/cr6TUDu9xMZ/qzc X-Received: by 2002:aca:4c12:: with SMTP id z18mr1101883oia.43.1583846803156; Tue, 10 Mar 2020 06:26:43 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1583846803; cv=none; d=google.com; s=arc-20160816; b=PPRxU0qN3i4HRhWHW70253ouuPO+hTXTh3X4KG8SPQhih43VflKNYgoJLRAU1EiDXg 1DoAK+th68BXo9aKCYShSGu4AsXV2Z96OXHcypFx92FRrw3Ov+NTm1ArPjbathJtLdP/ 7MiQ2U8Yi79G1JzgLCc2wufsPnp0MI0a0Gu1pn4Y5l+nhwJqegNEzsBmnyzFKrwpy1Vf Ot2x4S/7Z85RSdtPf84g0SondDAiAkIv9xFvUDTGmizZP4lIo+WXoJQWMbJUbd2fVmvI bWuh2GmEpWQZp767Gg0x66HlJNGNqZtHjFVsPtK6lNOKB8Yd3SQF20OEYwSV3fqHdIRq EPhg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:content-transfer-encoding:mime-version :user-agent:references:in-reply-to:message-id:date:subject:cc:to :from:dkim-signature; bh=Lu204jMS3eu0LUhzIyIn3EKkHACZA7hNCKCcDNu+hrc=; b=Vyq25IW5V3a961aVYcx77OW9IYFQ5dpvj+SskfBrmQqfbzOSCoKTs+pHV+W2Q9wFhC 8/SNjZZGi40b+YxvHHnlyKYseRri7YMDXc5dEkbHyOMIyBAFd6VcWcuxzBqc9JOdT1ty 1wCnYRwvYmfHwA0Vy7KvNjqGim7IhIGzbKsbOXRnCkPu5IVZOip0xfZJY7drY7Mufdmt n5gckdWXcT2aaXS9rVtzpdRztG9sgwL0rwp8TO8KI4CX0yhbnUYKPuruJjqfiklMJoBq /wzkiQs02FQyT+hwwknkyJ4vFGVgTc4iWTdGM3RRjiTVzLxaOrUTjuvJJxl171usClpy nGpw== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@kernel.org header.s=default header.b=jMMQkACo; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Return-Path: Received: from vger.kernel.org (vger.kernel.org. [209.132.180.67]) by mx.google.com with ESMTP id x4si7233334oto.217.2020.03.10.06.26.30; Tue, 10 Mar 2020 06:26:43 -0700 (PDT) Received-SPF: pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) client-ip=209.132.180.67; Authentication-Results: mx.google.com; dkim=pass header.i=@kernel.org header.s=default header.b=jMMQkACo; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1727870AbgCJNZY (ORCPT + 99 others); Tue, 10 Mar 2020 09:25:24 -0400 Received: from mail.kernel.org ([198.145.29.99]:37212 "EHLO mail.kernel.org" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1729444AbgCJM5f (ORCPT ); Tue, 10 Mar 2020 08:57:35 -0400 Received: from localhost (83-86-89-107.cable.dynamic.v4.ziggo.nl [83.86.89.107]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mail.kernel.org (Postfix) with ESMTPSA id D35EE2253D; Tue, 10 Mar 2020 12:57:33 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=default; t=1583845054; bh=er7aEzAbdX4AhtA3Dai7AyRJbMyF3vwss5YL5afdx7E=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=jMMQkACorEMKaoauFGGm9y5XLrJwvvWPE7mjfA8+abSkDlbCWvrZ0y/be1b95OZpw F4MGmpB1NTmAJbJ76JZpwiYah87YvkRxNg83z0L3TlgY4QOAW8HEMJ3cQl5ax5BiDI 1uLQsOwmBEibK1jWTvyXza47+66vAy0mhDUh9Q78= From: Greg Kroah-Hartman To: linux-kernel@vger.kernel.org Cc: Greg Kroah-Hartman , stable@vger.kernel.org, Julian Wiedmann , Alexandra Winter , Benjamin Block , Vasily Gorbik , Sasha Levin , Steffen Maier Subject: [PATCH 5.5 046/189] s390/qdio: fill SL with absolute addresses Date: Tue, 10 Mar 2020 13:38:03 +0100 Message-Id: <20200310123644.122223419@linuxfoundation.org> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20200310123639.608886314@linuxfoundation.org> References: <20200310123639.608886314@linuxfoundation.org> User-Agent: quilt/0.66 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org From: Julian Wiedmann [ Upstream commit e9091ffd6a0aaced111b5d6ead5eaab5cd7101bc ] As the comment says, sl->sbal holds an absolute address. qeth currently solves this through wild casting, while zfcp doesn't care. Handle this properly in the code that actually builds the SL. Signed-off-by: Julian Wiedmann Reviewed-by: Alexandra Winter Reviewed-by: Steffen Maier [for qdio] Reviewed-by: Benjamin Block Signed-off-by: Vasily Gorbik Signed-off-by: Sasha Levin --- arch/s390/include/asm/qdio.h | 2 +- drivers/s390/cio/qdio_setup.c | 3 ++- drivers/s390/net/qeth_core_main.c | 23 +++++++++++------------ 3 files changed, 14 insertions(+), 14 deletions(-) diff --git a/arch/s390/include/asm/qdio.h b/arch/s390/include/asm/qdio.h index 71e3f0146cda0..7870cf8345334 100644 --- a/arch/s390/include/asm/qdio.h +++ b/arch/s390/include/asm/qdio.h @@ -227,7 +227,7 @@ struct qdio_buffer { * @sbal: absolute SBAL address */ struct sl_element { - unsigned long sbal; + u64 sbal; } __attribute__ ((packed)); /** diff --git a/drivers/s390/cio/qdio_setup.c b/drivers/s390/cio/qdio_setup.c index dc430bd86ade9..58eaac70dba7f 100644 --- a/drivers/s390/cio/qdio_setup.c +++ b/drivers/s390/cio/qdio_setup.c @@ -8,6 +8,7 @@ #include #include #include +#include #include #include "cio.h" @@ -205,7 +206,7 @@ static void setup_storage_lists(struct qdio_q *q, struct qdio_irq *irq_ptr, /* fill in sl */ for (j = 0; j < QDIO_MAX_BUFFERS_PER_Q; j++) - q->sl->element[j].sbal = (unsigned long)q->sbal[j]; + q->sl->element[j].sbal = virt_to_phys(q->sbal[j]); } static void setup_queues(struct qdio_irq *irq_ptr, diff --git a/drivers/s390/net/qeth_core_main.c b/drivers/s390/net/qeth_core_main.c index 10edfd6fc9302..4fd7b0ceb4ffd 100644 --- a/drivers/s390/net/qeth_core_main.c +++ b/drivers/s390/net/qeth_core_main.c @@ -4749,10 +4749,10 @@ static void qeth_qdio_establish_cq(struct qeth_card *card, if (card->options.cq == QETH_CQ_ENABLED) { int offset = QDIO_MAX_BUFFERS_PER_Q * (card->qdio.no_in_queues - 1); - for (i = 0; i < QDIO_MAX_BUFFERS_PER_Q; ++i) { - in_sbal_ptrs[offset + i] = (struct qdio_buffer *) - virt_to_phys(card->qdio.c_q->bufs[i].buffer); - } + + for (i = 0; i < QDIO_MAX_BUFFERS_PER_Q; i++) + in_sbal_ptrs[offset + i] = + card->qdio.c_q->bufs[i].buffer; queue_start_poll[card->qdio.no_in_queues - 1] = NULL; } @@ -4786,10 +4786,9 @@ static int qeth_qdio_establish(struct qeth_card *card) rc = -ENOMEM; goto out_free_qib_param; } - for (i = 0; i < QDIO_MAX_BUFFERS_PER_Q; ++i) { - in_sbal_ptrs[i] = (struct qdio_buffer *) - virt_to_phys(card->qdio.in_q->bufs[i].buffer); - } + + for (i = 0; i < QDIO_MAX_BUFFERS_PER_Q; i++) + in_sbal_ptrs[i] = card->qdio.in_q->bufs[i].buffer; queue_start_poll = kcalloc(card->qdio.no_in_queues, sizeof(void *), GFP_KERNEL); @@ -4810,11 +4809,11 @@ static int qeth_qdio_establish(struct qeth_card *card) rc = -ENOMEM; goto out_free_queue_start_poll; } + for (i = 0, k = 0; i < card->qdio.no_out_queues; ++i) - for (j = 0; j < QDIO_MAX_BUFFERS_PER_Q; ++j, ++k) { - out_sbal_ptrs[k] = (struct qdio_buffer *)virt_to_phys( - card->qdio.out_qs[i]->bufs[j]->buffer); - } + for (j = 0; j < QDIO_MAX_BUFFERS_PER_Q; j++, k++) + out_sbal_ptrs[k] = + card->qdio.out_qs[i]->bufs[j]->buffer; memset(&init_data, 0, sizeof(struct qdio_initialize)); init_data.cdev = CARD_DDEV(card); -- 2.20.1