All of lore.kernel.org
 help / color / mirror / Atom feed
From: James Bottomley <James.Bottomley@HansenPartnership.com>
To: "\"Tóth Attila\"" <atoth@atoth.sote.hu>
Cc: adam radford <aradford@gmail.com>,
	linux-scsi <linux-scsi@vger.kernel.org>
Subject: Re: twa generates WARNING upon boot
Date: Tue, 29 Sep 2015 10:37:46 -0700	[thread overview]
Message-ID: <1443548266.2207.19.camel@HansenPartnership.com> (raw)
In-Reply-To: <d8e4bcdc939f0926a63f5c4a35fb8e0c.squirrel@atoth.sote.hu>

On Tue, 2015-09-29 at 18:49 +0200, "Tóth Attila" wrote:
> 2015.Szeptember 27.(V) 23:19 időpontban adam radford ezt írta:
> > On Sun, Sep 27, 2015 at 4:56 AM, "Tóth Attila" <atoth@atoth.sote.hu>
> > wrote:
> >> Here is a current trace I see after booting that kernel:
> >> ------------[ cut here ]------------
> >> WARNING: CPU: 0 PID: 1 at drivers/iommu/intel-iommu.c:3214
> >> intel_unmap+0x186/0x1f0()
> >> Driver unmaps unmatched page at PFN 0
> >> Modules linked in:
> >> CPU: 0 PID: 1 Comm: swapper/0 Not tainted 4.1.7-hardened-r1 #2
> >> Hardware name: System manufacturer System Product Name/Z8P(N)E-D12(X),
> >> BIOS 1302    06/25/2012
> >>  ffffffffab40bd6b 0000000000000000 0000000000000000 ffffffffab21608f
> >>  ffff880237c03ca8 ffffffffa4ed0fa6 00000000000015d2 ffff880237c03d00
> >>  ffff880237c03ce8 ffffffffa40ad9a0 0000000000000000 ffffffffab21608f
> >> Call Trace:
> >>  <IRQ>  [<ffffffffa4ed0fa6>] dump_stack+0x45/0x5d
> >>  [<ffffffffa40ad9a0>] warn_slowpath_common+0x80/0xc0
> >>  [<ffffffffa40ada44>] warn_slowpath_fmt+0x64/0x90
> >>  [<ffffffffa46de866>] intel_unmap+0x186/0x1f0
> >>  [<ffffffffa46de8ea>] intel_unmap_sg+0x1a/0x30
> >>  [<ffffffffa475ef13>] scsi_dma_unmap+0x73/0x90
> >>  [<ffffffffa47b8683>] twa_interrupt+0x493/0x780
> >>  [<ffffffffa4100f7a>] handle_irq_event_percpu+0x7a/0x130
> >>  [<ffffffffa4101069>] handle_irq_event+0x39/0x60
> >>  [<ffffffffa4104469>] handle_fasteoi_irq+0x89/0x1a0
> >>  [<ffffffffa4005715>] handle_irq+0x85/0x160
> >>  [<ffffffffa4004f6c>] do_IRQ+0x4c/0x100
> >>  [<ffffffffa4edd557>] common_interrupt+0x97/0x97
> >>  <EOI>  [<ffffffffa403d1cc>] ?
> >> default_send_IPI_mask_allbutself_phys+0xbc/0x100
> >>  [<ffffffffa4042e79>] physflat_send_IPI_allbutself+0x19/0x30
> >>  [<ffffffffa40385d8>] native_send_call_func_ipi+0x108/0x140
> >>  [<ffffffffa4125c10>] ? proc_dma_show+0x70/0x70
> >>  [<ffffffffa41264f4>] smp_call_function_many+0x1c4/0x270
> >>  [<ffffffffa4126671>] kick_all_cpus_sync+0x21/0x30
> >>  [<ffffffffa41bb546>] __do_tune_cpucache+0x56/0x4d0
> >>  [<ffffffffa458f4b7>] ? string.isra.3+0x47/0x100
> >>  [<ffffffffa41bb9f7>] do_tune_cpucache+0x37/0xb0
> >>  [<ffffffffa41bbad5>] enable_cpucache+0x65/0x130
> >>  [<ffffffffa4ec5c13>] setup_cpu_cache+0x173/0x270
> >>  [<ffffffffa41bc2c2>] __kmem_cache_create+0x262/0x360
> >>  [<ffffffffa418a5c2>] do_kmem_cache_create+0x92/0x1d0
> >>  [<ffffffffa418a81e>] kmem_cache_create+0x11e/0x1d0
> >>  [<ffffffffafc4c3d0>] ? twa_init+0x36/0x36
> >>  [<ffffffffafc4c4a7>] init_sd+0xd7/0x198
> >>  [<ffffffffa4000384>] do_one_initcall+0x94/0x1a0
> >>  [<ffffffffafc15285>] kernel_init_freeable+0x183/0x22f
> >>  [<ffffffffa4ec44f0>] ? rest_init+0x80/0x80
> >>  [<ffffffffa4ec44f9>] kernel_init+0x9/0xf0
> >>  [<ffffffffa4edcdfe>] ret_from_fork+0x3e/0x70
> >>  [<ffffffffa4ec44f0>] ? rest_init+0x80/0x80
> >> ---[ end trace a39a5826ea41aa47 ]---
> >>
> >> The 3ware card is a 9650SE-12ML running in a Asus Z8PE-D12X motherboard.
> >>
> >
> > Can you re-try with Christoph's patch:
> >
> > https://git.kernel.org/cgit/linux/kernel/git/torvalds/linux.git/commit/?id=118c855b5623f3e2e6204f02623d88c09e0c34de
> 
> As I've told this patch has been already included in the kernel I'm using
> (4.1.7-hardened-r1, which is based on 4.1.7).
> Out of curiosity I've reverted the patch and the WARNING no longer appears
> during boot...

Ah, it looks like there's a bug in the patch, it doesn't take into
account that the driver has a minimum sg map length and it copies for
things under that, so we're likely unmapping something that wasn't
mapped.   It's slightly hard to fix given that the indicator flag we'd
use for this is gone in that patch; does this fix the warning?

James

---

diff --git a/drivers/scsi/3w-9xxx.c b/drivers/scsi/3w-9xxx.c
index add419d..4c2c476 100644
--- a/drivers/scsi/3w-9xxx.c
+++ b/drivers/scsi/3w-9xxx.c
@@ -151,7 +151,19 @@ static void twa_scsiop_execute_scsi_complete(TW_Device_Extension *tw_dev, int re
 static char *twa_string_lookup(twa_message_type *table, unsigned int aen_code);
 
 /* Functions */
+static void twa_scsi_dma_unmap(struct scsi_cmnd *SCpnt, int request_id)
+{
+	TW_Device_Extension *tw_dev = (TW_Device_Extension *)SCpnt->device->host->hostdata;
+	TW_Command_Apache *command_packet = &tw_dev->command_packet_virt[request_id]->command.newcommand;
+
+	if (command_packet->sg_list[0].address == TW_CPU_TO_SGL(tw_dev->generic_buffer_phys[request_id]))
+		/* command is copied not mapped */
+		return;
+
+	twa_scsi_dma_unmap(SCpnt, request_id);
+}
 
+  
 /* Show some statistics about the card */
 static ssize_t twa_show_stats(struct device *dev,
 			      struct device_attribute *attr, char *buf)
@@ -1339,7 +1351,7 @@ static irqreturn_t twa_interrupt(int irq, void *dev_instance)
 				}
 
 				/* Now complete the io */
-				scsi_dma_unmap(cmd);
+				twa_scsi_dma_unmap(cmd, request_id);
 				cmd->scsi_done(cmd);
 				tw_dev->state[request_id] = TW_S_COMPLETED;
 				twa_free_request_id(tw_dev, request_id);
@@ -1582,7 +1594,7 @@ static int twa_reset_device_extension(TW_Device_Extension *tw_dev)
 				struct scsi_cmnd *cmd = tw_dev->srb[i];
 
 				cmd->result = (DID_RESET << 16);
-				scsi_dma_unmap(cmd);
+				twa_scsi_dma_unmap(cmd, i);
 				cmd->scsi_done(cmd);
 			}
 		}
@@ -1765,12 +1777,12 @@ static int twa_scsi_queue_lck(struct scsi_cmnd *SCpnt, void (*done)(struct scsi_
 	retval = twa_scsiop_execute_scsi(tw_dev, request_id, NULL, 0, NULL);
 	switch (retval) {
 	case SCSI_MLQUEUE_HOST_BUSY:
-		scsi_dma_unmap(SCpnt);
+		twa_scsi_dma_unmap(SCpnt, request_id);
 		twa_free_request_id(tw_dev, request_id);
 		break;
 	case 1:
 		SCpnt->result = (DID_ERROR << 16);
-		scsi_dma_unmap(SCpnt);
+		twa_scsi_dma_unmap(SCpnt, request_id);
 		done(SCpnt);
 		tw_dev->state[request_id] = TW_S_COMPLETED;
 		twa_free_request_id(tw_dev, request_id);


--
To unsubscribe from this list: send the line "unsubscribe linux-scsi" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html

  reply	other threads:[~2015-09-29 17:37 UTC|newest]

Thread overview: 18+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2015-09-27 11:56 twa generates WARNING upon boot "Tóth Attila"
2015-09-27 21:19 ` adam radford
2015-09-29 16:49   ` "Tóth Attila"
2015-09-29 17:37     ` James Bottomley [this message]
2015-09-29 18:02       ` James Bottomley
2015-09-29 18:25         ` "Tóth Attila"
2015-09-29 18:33           ` James Bottomley
2015-09-30 16:08             ` Christoph Hellwig
2015-09-30 16:15               ` James Bottomley
2015-09-30 16:31                 ` Christoph Hellwig
2015-09-30 16:36                   ` James Bottomley
2015-09-30 16:41                     ` Christoph Hellwig
2015-09-30 16:43                       ` James Bottomley
2015-09-30 16:44                         ` Christoph Hellwig
2015-09-30 20:18                           ` "Tóth Attila"
2015-09-30 16:20               ` kbuild test robot
2015-09-28  5:55 "Tóth Attila"
2015-09-29 19:17 "Tóth Attila"

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=1443548266.2207.19.camel@HansenPartnership.com \
    --to=james.bottomley@hansenpartnership.com \
    --cc=aradford@gmail.com \
    --cc=atoth@atoth.sote.hu \
    --cc=linux-scsi@vger.kernel.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.