Received: by 2002:a25:8b91:0:0:0:0:0 with SMTP id j17csp5391253ybl; Tue, 14 Jan 2020 08:11:33 -0800 (PST) X-Google-Smtp-Source: APXvYqzgFo9SHSYZYREmezV8N8TcB/M4u3vjkslYBP/hM2dtMqNzpcr5qRuO5z93I+KXpB9f6KN6 X-Received: by 2002:aca:5588:: with SMTP id j130mr16586593oib.122.1579018293291; Tue, 14 Jan 2020 08:11:33 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1579018293; cv=none; d=google.com; s=arc-20160816; b=SbyJ9xmpaCkXK9lSrN0xQldCoydnZm2sO0/YbtQxJ4Gk7GrWRwAtJ7DhDzhyY+1MnQ kUvTQ0HFGC5pSryPvMvsbxPBqDbHwDRj5QDl7W6EKImPjrZl04/olYvEcsiJdB08mKME jHr7yMVEjtXGjc/De6jbrxN0t20mp9Vyu/sWZn0vfIO4iWS8KA07RpXDhsff4Dam1dyt IDO70BE4sXOgQ+L6+W9OWWf1+0Lv6mmpP/Yy/eqPVey5Lvlb0KLin3EsJ11OJF/7v+B6 PCryoeQZQ6KNu82+rqSIHDfqTj705VKC6/sdrn/PyK7EX6YZ0Lq+JM8NJA1ntJsrUeuO H/cQ== 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 :message-id:date:subject:to:from; bh=rzLFOX6aktZ0WPElokkfYQl9+U0DSlT7gHPSn+21oNU=; b=z6x1/3JMlAqO7pMhL+ftVUChx2KZmgBnlCORu9cbFwozAFYfLPtMpaAYwbn7CtgpoU /kIiKhmTRyvciilVLKNlX2oQMa4j2VnQz5//zfHDSiX/gI6n0OlRkYltJBBRJuVnjBZC Xkv2veLd20yzI/P24qzPKMxauO+SSPJKsm4MjMfX4FczUT+OY4KI9G4OZXsk8TUQhM2H IIIjrFebcILeSCxyRTPRInV9jm6fmDpXKfrrY9xia/uqyE6iO0ztyQRcw8+wnLHLtn2p ixTiLPKAYxi9PrXvK3me2bO5vqi3yrk0rDCYAuvcfh2X/ott/Ybcof80T8Xm5HI4hdd0 SDlQ== ARC-Authentication-Results: i=1; mx.google.com; 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 y3si8781154oto.98.2020.01.14.08.11.20; Tue, 14 Jan 2020 08:11:33 -0800 (PST) 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; 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 S1729396AbgANQJ7 (ORCPT + 99 others); Tue, 14 Jan 2020 11:09:59 -0500 Received: from mx2.suse.de ([195.135.220.15]:49338 "EHLO mx2.suse.de" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1728826AbgANQJ5 (ORCPT ); Tue, 14 Jan 2020 11:09:57 -0500 X-Virus-Scanned: by amavisd-new at test-mx.suse.de Received: from relay2.suse.de (unknown [195.135.220.254]) by mx2.suse.de (Postfix) with ESMTP id AB1B3AE54; Tue, 14 Jan 2020 16:09:55 +0000 (UTC) From: Thomas Bogendoerfer To: Michael Reed , "James E.J. Bottomley" , "Martin K. Petersen" , linux-scsi@vger.kernel.org, linux-kernel@vger.kernel.org Subject: [PATCH] scsi: qla1280: Fix dma firmware download, if dma address is 64bit Date: Tue, 14 Jan 2020 17:09:36 +0100 Message-Id: <20200114160936.1517-1-tbogendoerfer@suse.de> X-Mailer: git-send-email 2.24.1 MIME-Version: 1.0 Content-Transfer-Encoding: 8bit Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Do firmware download with 64bit LOAD_RAM command, if driver is using 64bit addressing. Signed-off-by: Thomas Bogendoerfer --- drivers/scsi/qla1280.c | 20 ++++++++++++++------ drivers/scsi/qla1280.h | 2 ++ 2 files changed, 16 insertions(+), 6 deletions(-) diff --git a/drivers/scsi/qla1280.c b/drivers/scsi/qla1280.c index 832af4213046..607cbddcdd14 100644 --- a/drivers/scsi/qla1280.c +++ b/drivers/scsi/qla1280.c @@ -1699,6 +1699,16 @@ qla1280_load_firmware_pio(struct scsi_qla_host *ha) return err; } +#if QLA_64BIT_PTR +#define LOAD_CMD MBC_LOAD_RAM_A64_ROM +#define DUMP_CMD MBC_DUMP_RAM_A64_ROM +#define CMD_ARGS (BIT_7 | BIT_6 | BIT_4 | BIT_3 | BIT_2 | BIT_1 | BIT_0) +#else +#define LOAD_CMD MBC_LOAD_RAM +#define DUMP_CMD MBC_DUMP_RAM +#define CMD_ARGS (BIT_4 | BIT_3 | BIT_2 | BIT_1 | BIT_0) +#endif + #define DUMP_IT_BACK 0 /* for debug of RISC loading */ static int qla1280_load_firmware_dma(struct scsi_qla_host *ha) @@ -1748,7 +1758,7 @@ qla1280_load_firmware_dma(struct scsi_qla_host *ha) for(i = 0; i < cnt; i++) ((__le16 *)ha->request_ring)[i] = fw_data[i]; - mb[0] = MBC_LOAD_RAM; + mb[0] = LOAD_CMD; mb[1] = risc_address; mb[4] = cnt; mb[3] = ha->request_dma & 0xffff; @@ -1759,8 +1769,7 @@ qla1280_load_firmware_dma(struct scsi_qla_host *ha) __func__, mb[0], (void *)(long)ha->request_dma, mb[6], mb[7], mb[2], mb[3]); - err = qla1280_mailbox_command(ha, BIT_4 | BIT_3 | BIT_2 | - BIT_1 | BIT_0, mb); + err = qla1280_mailbox_command(ha, CMD_ARGS, mb); if (err) { printk(KERN_ERR "scsi(%li): Failed to load partial " "segment of f\n", ha->host_no); @@ -1768,7 +1777,7 @@ qla1280_load_firmware_dma(struct scsi_qla_host *ha) } #if DUMP_IT_BACK - mb[0] = MBC_DUMP_RAM; + mb[0] = DUMP_CMD; mb[1] = risc_address; mb[4] = cnt; mb[3] = p_tbuf & 0xffff; @@ -1776,8 +1785,7 @@ qla1280_load_firmware_dma(struct scsi_qla_host *ha) mb[7] = upper_32_bits(p_tbuf) & 0xffff; mb[6] = upper_32_bits(p_tbuf) >> 16; - err = qla1280_mailbox_command(ha, BIT_4 | BIT_3 | BIT_2 | - BIT_1 | BIT_0, mb); + err = qla1280_mailbox_command(ha, CMD_ARGS, mb); if (err) { printk(KERN_ERR "Failed to dump partial segment of f/w\n"); diff --git a/drivers/scsi/qla1280.h b/drivers/scsi/qla1280.h index a1a8aefc7cc3..e7820b5bca38 100644 --- a/drivers/scsi/qla1280.h +++ b/drivers/scsi/qla1280.h @@ -277,6 +277,8 @@ struct device_reg { #define MBC_MAILBOX_REGISTER_TEST 6 /* Wrap incoming mailboxes */ #define MBC_VERIFY_CHECKSUM 7 /* Verify checksum */ #define MBC_ABOUT_FIRMWARE 8 /* Get firmware revision */ +#define MBC_LOAD_RAM_A64_ROM 9 /* Load RAM 64bit ROM version */ +#define MBC_DUMP_RAM_A64_ROM 0x0a /* Dump RAM 64bit ROM version */ #define MBC_INIT_REQUEST_QUEUE 0x10 /* Initialize request queue */ #define MBC_INIT_RESPONSE_QUEUE 0x11 /* Initialize response queue */ #define MBC_EXECUTE_IOCB 0x12 /* Execute IOCB command */ -- 2.24.1