fpga: region: fix slow warning with more than one overlay
authorAlan Tull <atull@kernel.org>
Wed, 15 Nov 2017 20:20:18 +0000 (14:20 -0600)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Tue, 28 Nov 2017 15:30:37 +0000 (16:30 +0100)
commited81f5fc3c35c22d0fc62813cfa4e11b6aea0a64
treef3109f452fb0ec191b1096a6640b80e77af07440
parent1743df83ae5a949037eb86a12f225abd4374d176
fpga: region: fix slow warning with more than one overlay

When DT overlays are applied, each FPGA region keeps track of the fpga
image info as region->info.  This pointer is assigned only if an
overlay causes the FPGA to be programmed.  As it stands, this pointer
can be overwritten, causing a slow warning later when overlays are
removed.

This patch fixes this by changing the allowed behaviour.  If a region
has received an overlay that programmed the FPGA, reject other
overlays that try to program the FPGA.  To reprogram the FPGA, first
remove the overlay.  This makes sense as removing the overlay also
removes the devices cleanly.  Note that overlays that make DT changes
without reprogramming the FPGA are exempt from this restriction.

Signed-off-by: Alan Tull <atull@kernel.org>
Acked-by: Moritz Fischer <mdf@kernel.org>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
drivers/fpga/fpga-region.c