fpga: region: check for child regions before allocing image info
authorAlan Tull <atull@kernel.org>
Wed, 15 Nov 2017 20:20:17 +0000 (14:20 -0600)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Tue, 28 Nov 2017 15:30:37 +0000 (16:30 +0100)
During a device tree overlay pre-apply notification, the check
for child FPGA regions can happen slightly earlier.  This saves
us from allocating the FPGA image info that just gets thrown
away.

This is a baby step in refactoring the FPGA region code to
separate out common FPGA region code from FPGA region
Device Tree overlay support.

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

index d78f444c1350501063ffba60af990d7134ad1c81..afac5433978b89e34684431903d0beab09fe050c 100644 (file)
@@ -355,15 +355,19 @@ static int fpga_region_notify_pre_apply(struct fpga_region *region,
        const char *firmware_name;
        int ret;
 
-       info = fpga_image_info_alloc(dev);
-       if (!info)
-               return -ENOMEM;
-
-       /* Reject overlay if child FPGA Regions have firmware-name property */
+       /*
+        * Reject overlay if child FPGA Regions added in the overlay have
+        * firmware-name property (would mean that an FPGA region that has
+        * not been added to the live tree yet is doing FPGA programming).
+        */
        ret = child_regions_with_firmware(nd->overlay);
        if (ret)
                return ret;
 
+       info = fpga_image_info_alloc(dev);
+       if (!info)
+               return -ENOMEM;
+
        /* Read FPGA region properties from the overlay */
        if (of_property_read_bool(nd->overlay, "partial-fpga-config"))
                info->flags |= FPGA_MGR_PARTIAL_RECONFIG;