]> git.kernelconcepts.de Git - karo-tx-linux.git/commit
ioat: Do not enable DCA if tag map is invalid
authorAlexander Duyck <alexander.h.duyck@intel.com>
Sat, 15 Sep 2012 04:08:39 +0000 (04:08 +0000)
committerJeff Kirsher <jeffrey.t.kirsher@intel.com>
Thu, 15 Nov 2012 13:20:01 +0000 (05:20 -0800)
commit07bd34db29e56be78297e973fd16e8f32ecd0a43
tree486c1174e0612af0aff858b36ce048622b59410a
parent702ed3c1a9dfe4dfe112f13542d0c9d689f5008b
ioat: Do not enable DCA if tag map is invalid

I have encountered several systems that have an invalid tag map.  This
invalid tag map results in only two tags being generated 0x1F which is
usually applied to the first core in a Hyper-threaded pair and 0x00 which
is applied to the second core in a Hyper-threaded pair.  The net result of
all this is that DCA causes significant cache thrash because the 0x1F tag
will send traffic to the second socket, which the 0x00 tag will not DCA tag
the frame resulting in no benefit.

For now the best solution from the driver's perspective is to just disable
DCA if the tag map is invalid.  The correct solution for this would be to
have the BIOS on affected systems updated so that the correct tags are
generated for a given APIC ID.

Signed-off-by: Alexander Duyck <alexander.h.duyck@intel.com>
Tested-by: Stephen Ko <stephen.s.ko@intel.com>
Signed-off-by: Jeff Kirsher <jeffrey.t.kirsher@intel.com>
drivers/dma/ioat/dca.c