diff options
author | Alexander Duyck <alexander.h.duyck@intel.com> | 2013-03-22 02:01:59 -0400 |
---|---|---|
committer | David S. Miller <davem@davemloft.net> | 2013-03-22 12:55:38 -0400 |
commit | f3c78f8515dd4cb9e26040ebb54cf589d21137ee (patch) | |
tree | 0ebf6e06b711de1e35188975065c6129dd3658b9 /drivers/dma | |
parent | ea3d1cc285bf1ae1fa81b47418cd7fd79990bb06 (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.c | 11 |
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 | } |