aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/dma
diff options
context:
space:
mode:
authorAlexander Duyck <alexander.h.duyck@intel.com>2013-03-22 02:01:59 -0400
committerDavid S. Miller <davem@davemloft.net>2013-03-22 12:55:38 -0400
commitf3c78f8515dd4cb9e26040ebb54cf589d21137ee (patch)
tree0ebf6e06b711de1e35188975065c6129dd3658b9 /drivers/dma
parentea3d1cc285bf1ae1fa81b47418cd7fd79990bb06 (diff)
ioat/dca: Update DCA BIOS workarounds to use TAINT_FIRMWARE_WORKAROUND
This patch is meant to be a follow-up for a patch originally submitted under the title "ioat: Do not enable DCA if tag map is invalid". It was brought to my attention that the preferred approach for BIOS workarounds is to set the taint flag for TAINT_FIRMWARE_WORKAROUND for systems that require BIOS workarounds. This change makes it so that the DCA workarounds for broken BIOSes will now use WARN_TAINT_ONCE(1, TAINT_FIRMWARE_WORKAROUND, ...) instead of just printing a message via dev_err. Signed-off-by: Alexander Duyck <alexander.h.duyck@intel.com> Signed-off-by: David S. Miller <davem@davemloft.net>
Diffstat (limited to 'drivers/dma')
-rw-r--r--drivers/dma/ioat/dca.c11
1 files changed, 8 insertions, 3 deletions
diff --git a/drivers/dma/ioat/dca.c b/drivers/dma/ioat/dca.c
index 9b041858d10d..9e84d5bc9307 100644
--- a/drivers/dma/ioat/dca.c
+++ b/drivers/dma/ioat/dca.c
@@ -470,8 +470,10 @@ struct dca_provider *ioat2_dca_init(struct pci_dev *pdev, void __iomem *iobase)
470 } 470 }
471 471
472 if (!dca2_tag_map_valid(ioatdca->tag_map)) { 472 if (!dca2_tag_map_valid(ioatdca->tag_map)) {
473 dev_err(&pdev->dev, "APICID_TAG_MAP set incorrectly by BIOS, " 473 WARN_TAINT_ONCE(1, TAINT_FIRMWARE_WORKAROUND,
474 "disabling DCA\n"); 474 "%s %s: APICID_TAG_MAP set incorrectly by BIOS, disabling DCA\n",
475 dev_driver_string(&pdev->dev),
476 dev_name(&pdev->dev));
475 free_dca_provider(dca); 477 free_dca_provider(dca);
476 return NULL; 478 return NULL;
477 } 479 }
@@ -689,7 +691,10 @@ struct dca_provider *ioat3_dca_init(struct pci_dev *pdev, void __iomem *iobase)
689 } 691 }
690 692
691 if (dca3_tag_map_invalid(ioatdca->tag_map)) { 693 if (dca3_tag_map_invalid(ioatdca->tag_map)) {
692 dev_err(&pdev->dev, "APICID_TAG_MAP set incorrectly by BIOS, disabling DCA\n"); 694 WARN_TAINT_ONCE(1, TAINT_FIRMWARE_WORKAROUND,
695 "%s %s: APICID_TAG_MAP set incorrectly by BIOS, disabling DCA\n",
696 dev_driver_string(&pdev->dev),
697 dev_name(&pdev->dev));
693 free_dca_provider(dca); 698 free_dca_provider(dca);
694 return NULL; 699 return NULL;
695 } 700 }