[<prev] [next>] [thread-next>] [day] [month] [year] [list]
Message-ID: <536B9CF6.9000907@intel.com>
Date: Thu, 08 May 2014 08:04:22 -0700
From: Alexander Duyck <alexander.h.duyck@...el.com>
To: Jet Chen <jet.chen@...el.com>,
Dan Williams <dan.j.williams@...el.com>,
Dave Jiang <dave.jiang@...el.com>
CC: fengguang.wu@...el.com, wei.w.lin@...el.com,
linux-kernel@...r.kernel.org, dmaengine@...r.kernel.org
Subject: Re: [PATCH] DCA: fix over-warning in ioat3_dca_init
I actually went to a bit of trouble to get this message added as many
BIOSes have the annoying quality of getting this wrong, and then
products are shipped and labeled as having the DCA feature when they
actually don't. One easy way to get rid of the message is to disable
either DCA or IOAT in the BIOS since it is broken anyway. By adding
this we at least have some visibility and it puts pressure on the BIOS
guys to get this fixed if we want to claim the platform does DCA.
I consider this to be a real BIOS bug as the DCA feature is crippled
without it. Also moving this to just a debug message is going to make
it very difficult for us to debug this when a performance issue comes up
on a customer platform as we will have to get them to perform extra
steps in order to actually figure out what is going on with DCA.
Thanks,
Alex
On 05/08/2014 02:42 AM, Jet Chen wrote:
> We keep seeing such dmesg messages on boxes
>
> [ 16.596610] WARNING: CPU: 0 PID: 457 at drivers/dma/ioat/dca.c:697 ioat3_dca_init+0x19c/0x1b0 [ioatdma]()
> [ 16.609614] ioatdma 0000:00:04.0: APICID_TAG_MAP set incorrectly by BIOS, disabling DCA
> ...
> [ 16.892058] [<ffffffff8172807e>] dump_stack+0x4d/0x66
> [ 16.892061] [<ffffffff81067f7d>] warn_slowpath_common+0x7d/0xa0
> [ 16.892064] [<ffffffff81068034>] warn_slowpath_fmt_taint+0x44/0x50
> [ 16.892065] [<ffffffffa00228bc>] ioat3_dca_init+0x19c/0x1b0 [ioatdma]
> [ 16.892069] [<ffffffffa0021cd6>] ioat3_dma_probe+0x386/0x3e0 [ioatdma]
> [ 16.892071] [<ffffffffa001a192>] ioat_pci_probe+0x122/0x1b0 [ioatdma]
> [ 16.892074] [<ffffffff81329385>] local_pci_probe+0x45/0xa0
> [ 16.892076] [<ffffffff81080d34>] work_for_cpu_fn+0x14/0x20
> [ 16.892077] [<ffffffff81083c33>] process_one_work+0x183/0x490
> [ 16.892079] [<ffffffff81084bd3>] worker_thread+0x2a3/0x410
> [ 16.892080] [<ffffffff81084930>] ? rescuer_thread+0x410/0x410
> [ 16.892081] [<ffffffff8108b852>] kthread+0xd2/0xf0
> [ 16.892083] [<ffffffff8108b780>] ? kthread_create_on_node+0x180/0x180
> [ 16.892085] [<ffffffff817396bc>] ret_from_fork+0x7c/0xb0
> [ 16.892091] fbcon: mgadrmfb (fb0) is primary device
> [ 16.892092] [<ffffffff8108b780>] ? kthread_create_on_node+0x180/0x180
>
> No need to use WARN_TAINT_ONCE to generate a such big noise if this is not a critical error for kernel. DCA driver could print out a debug messages then quit quietly.
>
> If this is a real BIOS bug, please ignore this patch. Let's transfer this issue to BIOS guys.
>
> Signed-off-by: Jet Chen <jet.chen@...el.com>
> ---
> drivers/dma/ioat/dca.c | 10 ++--------
> 1 file changed, 2 insertions(+), 8 deletions(-)
>
> diff --git a/drivers/dma/ioat/dca.c b/drivers/dma/ioat/dca.c
> index 9e84d5b..c0f7971 100644
> --- a/drivers/dma/ioat/dca.c
> +++ b/drivers/dma/ioat/dca.c
> @@ -470,10 +470,7 @@ struct dca_provider *ioat2_dca_init(struct pci_dev *pdev, void __iomem *iobase)
> }
>
> if (!dca2_tag_map_valid(ioatdca->tag_map)) {
> - WARN_TAINT_ONCE(1, TAINT_FIRMWARE_WORKAROUND,
> - "%s %s: APICID_TAG_MAP set incorrectly by BIOS, disabling DCA\n",
> - dev_driver_string(&pdev->dev),
> - dev_name(&pdev->dev));
> + dev_dbg(&pdev->dev, "APICID_TAG_MAP set incorrectly by BIOS, disabling DCA\n");
> free_dca_provider(dca);
> return NULL;
> }
> @@ -691,10 +688,7 @@ struct dca_provider *ioat3_dca_init(struct pci_dev *pdev, void __iomem *iobase)
> }
>
> if (dca3_tag_map_invalid(ioatdca->tag_map)) {
> - WARN_TAINT_ONCE(1, TAINT_FIRMWARE_WORKAROUND,
> - "%s %s: APICID_TAG_MAP set incorrectly by BIOS, disabling DCA\n",
> - dev_driver_string(&pdev->dev),
> - dev_name(&pdev->dev));
> + dev_dbg(&pdev->dev, "APICID_TAG_MAP set incorrectly by BIOS, disabling DCA\n");
> free_dca_provider(dca);
> return NULL;
> }
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@...r.kernel.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/
Powered by blists - more mailing lists