Re: [PATCH] DCA: fix over-warning in ioat3_dca_init

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



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@xxxxxxxxx>
> ---
>  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 dmaengine" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html




[Index of Archives]     [Linux Kernel]     [Linux ARM (vger)]     [Linux ARM MSM]     [Linux Omap]     [Linux Arm]     [Linux Tegra]     [Fedora ARM]     [Linux for Samsung SOC]     [eCos]     [Linux PCI]     [Linux Fastboot]     [Gcc Help]     [Git]     [DCCP]     [IETF Announce]     [Security]     [Linux MIPS]     [Yosemite Campsites]

  Powered by Linux