Linux-Fsdevel Archive on lore.kernel.org
 help / color / Atom feed
* [PATCH] firmware_loader: change enum fw_opt to u32
@ 2020-05-22 21:46 Scott Branden
  2020-05-22 22:45 ` Luis Chamberlain
  0 siblings, 1 reply; 6+ messages in thread
From: Scott Branden @ 2020-05-22 21:46 UTC (permalink / raw)
  To: Luis Chamberlain, Greg Kroah-Hartman, David Brown,
	Alexander Viro, Shuah Khan, bjorn.andersson, Shuah Khan,
	Arnd Bergmann
  Cc: Rafael J . Wysocki, linux-kernel, linux-arm-msm, linux-fsdevel,
	BCM Kernel Feedback, Olof Johansson, Andrew Morton,
	Dan Carpenter, Colin Ian King, Kees Cook, Takashi Iwai,
	linux-kselftest, Andy Gross, Scott Branden

"enum fw_opt" is not used as an enum.
Change fw_opt to a u32 and the FW_OPT_* values inside the enum to defines.

Signed-off-by: Scott Branden <scott.branden@broadcom.com>
---
 drivers/base/firmware_loader/fallback.c       | 12 +++++------
 drivers/base/firmware_loader/fallback.h       |  8 +++----
 .../base/firmware_loader/fallback_platform.c  |  2 +-
 drivers/base/firmware_loader/firmware.h       | 21 ++++++++-----------
 drivers/base/firmware_loader/main.c           | 11 +++++-----
 5 files changed, 25 insertions(+), 29 deletions(-)

diff --git a/drivers/base/firmware_loader/fallback.c b/drivers/base/firmware_loader/fallback.c
index 1e9c96e3ed63..af1aa3d69920 100644
--- a/drivers/base/firmware_loader/fallback.c
+++ b/drivers/base/firmware_loader/fallback.c
@@ -460,7 +460,7 @@ static const struct attribute_group *fw_dev_attr_groups[] = {
 
 static struct fw_sysfs *
 fw_create_instance(struct firmware *firmware, const char *fw_name,
-		   struct device *device, enum fw_opt opt_flags)
+		   struct device *device, u32 opt_flags)
 {
 	struct fw_sysfs *fw_sysfs;
 	struct device *f_dev;
@@ -493,7 +493,7 @@ fw_create_instance(struct firmware *firmware, const char *fw_name,
  * In charge of constructing a sysfs fallback interface for firmware loading.
  **/
 static int fw_load_sysfs_fallback(struct fw_sysfs *fw_sysfs,
-				  enum fw_opt opt_flags, long timeout)
+				  u32 opt_flags, long timeout)
 {
 	int retval = 0;
 	struct device *f_dev = &fw_sysfs->dev;
@@ -547,7 +547,7 @@ static int fw_load_sysfs_fallback(struct fw_sysfs *fw_sysfs,
 
 static int fw_load_from_user_helper(struct firmware *firmware,
 				    const char *name, struct device *device,
-				    enum fw_opt opt_flags)
+				    u32 opt_flags)
 {
 	struct fw_sysfs *fw_sysfs;
 	long timeout;
@@ -588,7 +588,7 @@ static int fw_load_from_user_helper(struct firmware *firmware,
 	return ret;
 }
 
-static bool fw_force_sysfs_fallback(enum fw_opt opt_flags)
+static bool fw_force_sysfs_fallback(u32 opt_flags)
 {
 	if (fw_fallback_config.force_sysfs_fallback)
 		return true;
@@ -597,7 +597,7 @@ static bool fw_force_sysfs_fallback(enum fw_opt opt_flags)
 	return true;
 }
 
-static bool fw_run_sysfs_fallback(enum fw_opt opt_flags)
+static bool fw_run_sysfs_fallback(u32 opt_flags)
 {
 	int ret;
 
@@ -640,7 +640,7 @@ static bool fw_run_sysfs_fallback(enum fw_opt opt_flags)
  **/
 int firmware_fallback_sysfs(struct firmware *fw, const char *name,
 			    struct device *device,
-			    enum fw_opt opt_flags,
+			    u32 opt_flags,
 			    int ret)
 {
 	if (!fw_run_sysfs_fallback(opt_flags))
diff --git a/drivers/base/firmware_loader/fallback.h b/drivers/base/firmware_loader/fallback.h
index 06f4577733a8..2afdb6adb23f 100644
--- a/drivers/base/firmware_loader/fallback.h
+++ b/drivers/base/firmware_loader/fallback.h
@@ -33,7 +33,7 @@ struct firmware_fallback_config {
 #ifdef CONFIG_FW_LOADER_USER_HELPER
 int firmware_fallback_sysfs(struct firmware *fw, const char *name,
 			    struct device *device,
-			    enum fw_opt opt_flags,
+			    u32 opt_flags,
 			    int ret);
 void kill_pending_fw_fallback_reqs(bool only_kill_custom);
 
@@ -45,7 +45,7 @@ void unregister_sysfs_loader(void);
 #else /* CONFIG_FW_LOADER_USER_HELPER */
 static inline int firmware_fallback_sysfs(struct firmware *fw, const char *name,
 					  struct device *device,
-					  enum fw_opt opt_flags,
+					  u32 opt_flags,
 					  int ret)
 {
 	/* Keep carrying over the same error */
@@ -67,10 +67,10 @@ static inline void unregister_sysfs_loader(void)
 #endif /* CONFIG_FW_LOADER_USER_HELPER */
 
 #ifdef CONFIG_EFI_EMBEDDED_FIRMWARE
-int firmware_fallback_platform(struct fw_priv *fw_priv, enum fw_opt opt_flags);
+int firmware_fallback_platform(struct fw_priv *fw_priv, u32 opt_flags);
 #else
 static inline int firmware_fallback_platform(struct fw_priv *fw_priv,
-					     enum fw_opt opt_flags)
+					     u32 opt_flags)
 {
 	return -ENOENT;
 }
diff --git a/drivers/base/firmware_loader/fallback_platform.c b/drivers/base/firmware_loader/fallback_platform.c
index c88c745590fe..cdd2c9a9f38a 100644
--- a/drivers/base/firmware_loader/fallback_platform.c
+++ b/drivers/base/firmware_loader/fallback_platform.c
@@ -8,7 +8,7 @@
 #include "fallback.h"
 #include "firmware.h"
 
-int firmware_fallback_platform(struct fw_priv *fw_priv, enum fw_opt opt_flags)
+int firmware_fallback_platform(struct fw_priv *fw_priv, u32 opt_flags)
 {
 	const u8 *data;
 	size_t size;
diff --git a/drivers/base/firmware_loader/firmware.h b/drivers/base/firmware_loader/firmware.h
index 25836a6afc9f..cf6dc96a84a2 100644
--- a/drivers/base/firmware_loader/firmware.h
+++ b/drivers/base/firmware_loader/firmware.h
@@ -12,7 +12,7 @@
 #include <generated/utsrelease.h>
 
 /**
- * enum fw_opt - options to control firmware loading behaviour
+ * fw_opt - options to control firmware loading behaviour
  *
  * @FW_OPT_UEVENT: Enables the fallback mechanism to send a kobject uevent
  *	when the firmware is not found. Userspace is in charge to load the
@@ -33,15 +33,13 @@
  *	the platform's main firmware. If both this fallback and the sysfs
  *      fallback are enabled, then this fallback will be tried first.
  */
-enum fw_opt {
-	FW_OPT_UEVENT			= BIT(0),
-	FW_OPT_NOWAIT			= BIT(1),
-	FW_OPT_USERHELPER		= BIT(2),
-	FW_OPT_NO_WARN			= BIT(3),
-	FW_OPT_NOCACHE			= BIT(4),
-	FW_OPT_NOFALLBACK_SYSFS		= BIT(5),
-	FW_OPT_FALLBACK_PLATFORM	= BIT(6),
-};
+#define FW_OPT_UEVENT			BIT(0)
+#define FW_OPT_NOWAIT			BIT(1)
+#define FW_OPT_USERHELPER		BIT(2)
+#define FW_OPT_NO_WARN			BIT(3)
+#define FW_OPT_NOCACHE			BIT(4)
+#define FW_OPT_NOFALLBACK_SYSFS		BIT(5)
+#define FW_OPT_FALLBACK_PLATFORM	BIT(6)
 
 enum fw_status {
 	FW_STATUS_UNKNOWN,
@@ -136,8 +134,7 @@ static inline void fw_state_done(struct fw_priv *fw_priv)
 	__fw_state_set(fw_priv, FW_STATUS_DONE);
 }
 
-int assign_fw(struct firmware *fw, struct device *device,
-	      enum fw_opt opt_flags);
+int assign_fw(struct firmware *fw, struct device *device, u32 opt_flags);
 
 #ifdef CONFIG_FW_LOADER_PAGED_BUF
 void fw_free_paged_buf(struct fw_priv *fw_priv);
diff --git a/drivers/base/firmware_loader/main.c b/drivers/base/firmware_loader/main.c
index 76f79913916d..2ca6b4735979 100644
--- a/drivers/base/firmware_loader/main.c
+++ b/drivers/base/firmware_loader/main.c
@@ -210,7 +210,7 @@ static struct fw_priv *__lookup_fw_priv(const char *fw_name)
 static int alloc_lookup_fw_priv(const char *fw_name,
 				struct firmware_cache *fwc,
 				struct fw_priv **fw_priv, void *dbuf,
-				size_t size, enum fw_opt opt_flags)
+				size_t size, u32 opt_flags)
 {
 	struct fw_priv *tmp;
 
@@ -635,8 +635,7 @@ static int fw_add_devm_name(struct device *dev, const char *name)
 }
 #endif
 
-int assign_fw(struct firmware *fw, struct device *device,
-	      enum fw_opt opt_flags)
+int assign_fw(struct firmware *fw, struct device *device, u32 opt_flags)
 {
 	struct fw_priv *fw_priv = fw->priv;
 	int ret;
@@ -687,7 +686,7 @@ int assign_fw(struct firmware *fw, struct device *device,
 static int
 _request_firmware_prepare(struct firmware **firmware_p, const char *name,
 			  struct device *device, void *dbuf, size_t size,
-			  enum fw_opt opt_flags)
+			  u32 opt_flags)
 {
 	struct firmware *firmware;
 	struct fw_priv *fw_priv;
@@ -753,7 +752,7 @@ static void fw_abort_batch_reqs(struct firmware *fw)
 static int
 _request_firmware(const struct firmware **firmware_p, const char *name,
 		  struct device *device, void *buf, size_t size,
-		  enum fw_opt opt_flags)
+		  u32 opt_flags)
 {
 	struct firmware *fw = NULL;
 	int ret;
@@ -990,7 +989,7 @@ struct firmware_work {
 	struct device *device;
 	void *context;
 	void (*cont)(const struct firmware *fw, void *context);
-	enum fw_opt opt_flags;
+	u32 opt_flags;
 };
 
 static void request_firmware_work_func(struct work_struct *work)
-- 
2.17.1


^ permalink raw reply	[flat|nested] 6+ messages in thread

* Re: [PATCH] firmware_loader: change enum fw_opt to u32
  2020-05-22 21:46 [PATCH] firmware_loader: change enum fw_opt to u32 Scott Branden
@ 2020-05-22 22:45 ` Luis Chamberlain
  2020-05-22 22:49   ` Scott Branden
  0 siblings, 1 reply; 6+ messages in thread
From: Luis Chamberlain @ 2020-05-22 22:45 UTC (permalink / raw)
  To: Scott Branden
  Cc: Greg Kroah-Hartman, David Brown, Alexander Viro, Shuah Khan,
	bjorn.andersson, Shuah Khan, Arnd Bergmann, Rafael J . Wysocki,
	linux-kernel, linux-arm-msm, linux-fsdevel, BCM Kernel Feedback,
	Olof Johansson, Andrew Morton, Dan Carpenter, Colin Ian King,
	Kees Cook, Takashi Iwai, linux-kselftest, Andy Gross

On Fri, May 22, 2020 at 02:46:58PM -0700, Scott Branden wrote:
>  
>  /**
> - * enum fw_opt - options to control firmware loading behaviour
> + * fw_opt - options to control firmware loading behaviour
>   *
>   * @FW_OPT_UEVENT: Enables the fallback mechanism to send a kobject uevent
>   *	when the firmware is not found. Userspace is in charge to load the
> @@ -33,15 +33,13 @@
>   *	the platform's main firmware. If both this fallback and the sysfs
>   *      fallback are enabled, then this fallback will be tried first.
>   */
> -enum fw_opt {
> -	FW_OPT_UEVENT			= BIT(0),
> -	FW_OPT_NOWAIT			= BIT(1),
> -	FW_OPT_USERHELPER		= BIT(2),
> -	FW_OPT_NO_WARN			= BIT(3),
> -	FW_OPT_NOCACHE			= BIT(4),
> -	FW_OPT_NOFALLBACK_SYSFS		= BIT(5),
> -	FW_OPT_FALLBACK_PLATFORM	= BIT(6),
> -};
> +#define FW_OPT_UEVENT			BIT(0)
> +#define FW_OPT_NOWAIT			BIT(1)
> +#define FW_OPT_USERHELPER		BIT(2)
> +#define FW_OPT_NO_WARN			BIT(3)
> +#define FW_OPT_NOCACHE			BIT(4)
> +#define FW_OPT_NOFALLBACK_SYSFS		BIT(5)
> +#define FW_OPT_FALLBACK_PLATFORM	BIT(6)

Everything looked good up to here. The enum defines each flag.
We just want to use an enum for *one* flag represetnation, not
a bundle.

  Luis

^ permalink raw reply	[flat|nested] 6+ messages in thread

* Re: [PATCH] firmware_loader: change enum fw_opt to u32
  2020-05-22 22:45 ` Luis Chamberlain
@ 2020-05-22 22:49   ` Scott Branden
  2020-05-22 23:00     ` Luis Chamberlain
  0 siblings, 1 reply; 6+ messages in thread
From: Scott Branden @ 2020-05-22 22:49 UTC (permalink / raw)
  To: Luis Chamberlain
  Cc: Greg Kroah-Hartman, David Brown, Alexander Viro, Shuah Khan,
	bjorn.andersson, Shuah Khan, Arnd Bergmann, Rafael J . Wysocki,
	linux-kernel, linux-arm-msm, linux-fsdevel, BCM Kernel Feedback,
	Olof Johansson, Andrew Morton, Dan Carpenter, Colin Ian King,
	Kees Cook, Takashi Iwai, linux-kselftest, Andy Gross

Hi Luis,

On 2020-05-22 3:45 p.m., Luis Chamberlain wrote:
> On Fri, May 22, 2020 at 02:46:58PM -0700, Scott Branden wrote:
>>   
>>   /**
>> - * enum fw_opt - options to control firmware loading behaviour
>> + * fw_opt - options to control firmware loading behaviour
>>    *
>>    * @FW_OPT_UEVENT: Enables the fallback mechanism to send a kobject uevent
>>    *	when the firmware is not found. Userspace is in charge to load the
>> @@ -33,15 +33,13 @@
>>    *	the platform's main firmware. If both this fallback and the sysfs
>>    *      fallback are enabled, then this fallback will be tried first.
>>    */
>> -enum fw_opt {
>> -	FW_OPT_UEVENT			= BIT(0),
>> -	FW_OPT_NOWAIT			= BIT(1),
>> -	FW_OPT_USERHELPER		= BIT(2),
>> -	FW_OPT_NO_WARN			= BIT(3),
>> -	FW_OPT_NOCACHE			= BIT(4),
>> -	FW_OPT_NOFALLBACK_SYSFS		= BIT(5),
>> -	FW_OPT_FALLBACK_PLATFORM	= BIT(6),
>> -};
>> +#define FW_OPT_UEVENT			BIT(0)
>> +#define FW_OPT_NOWAIT			BIT(1)
>> +#define FW_OPT_USERHELPER		BIT(2)
>> +#define FW_OPT_NO_WARN			BIT(3)
>> +#define FW_OPT_NOCACHE			BIT(4)
>> +#define FW_OPT_NOFALLBACK_SYSFS		BIT(5)
>> +#define FW_OPT_FALLBACK_PLATFORM	BIT(6)
> Everything looked good up to here. The enum defines each flag.
> We just want to use an enum for *one* flag represetnation, not
> a bundle.
I do not know exactly what you are looking for then.  The FW_OPT_* 
values are OR'd
together in the code.  You still want the fw_opt enum above left in 
place entirely
and then the values used in OR'd together?

>    Luis


^ permalink raw reply	[flat|nested] 6+ messages in thread

* Re: [PATCH] firmware_loader: change enum fw_opt to u32
  2020-05-22 22:49   ` Scott Branden
@ 2020-05-22 23:00     ` Luis Chamberlain
  2020-05-23  6:05       ` Greg Kroah-Hartman
  0 siblings, 1 reply; 6+ messages in thread
From: Luis Chamberlain @ 2020-05-22 23:00 UTC (permalink / raw)
  To: Scott Branden
  Cc: Greg Kroah-Hartman, David Brown, Alexander Viro, Shuah Khan,
	bjorn.andersson, Shuah Khan, Arnd Bergmann, Rafael J . Wysocki,
	linux-kernel, linux-arm-msm, linux-fsdevel, BCM Kernel Feedback,
	Olof Johansson, Andrew Morton, Dan Carpenter, Colin Ian King,
	Kees Cook, Takashi Iwai, linux-kselftest, Andy Gross

On Fri, May 22, 2020 at 03:49:05PM -0700, Scott Branden wrote:
> Hi Luis,
> 
> On 2020-05-22 3:45 p.m., Luis Chamberlain wrote:
> > On Fri, May 22, 2020 at 02:46:58PM -0700, Scott Branden wrote:
> > >   /**
> > > - * enum fw_opt - options to control firmware loading behaviour
> > > + * fw_opt - options to control firmware loading behaviour
> > >    *
> > >    * @FW_OPT_UEVENT: Enables the fallback mechanism to send a kobject uevent
> > >    *	when the firmware is not found. Userspace is in charge to load the
> > > @@ -33,15 +33,13 @@
> > >    *	the platform's main firmware. If both this fallback and the sysfs
> > >    *      fallback are enabled, then this fallback will be tried first.
> > >    */
> > > -enum fw_opt {
> > > -	FW_OPT_UEVENT			= BIT(0),
> > > -	FW_OPT_NOWAIT			= BIT(1),
> > > -	FW_OPT_USERHELPER		= BIT(2),
> > > -	FW_OPT_NO_WARN			= BIT(3),
> > > -	FW_OPT_NOCACHE			= BIT(4),
> > > -	FW_OPT_NOFALLBACK_SYSFS		= BIT(5),
> > > -	FW_OPT_FALLBACK_PLATFORM	= BIT(6),
> > > -};
> > > +#define FW_OPT_UEVENT			BIT(0)
> > > +#define FW_OPT_NOWAIT			BIT(1)
> > > +#define FW_OPT_USERHELPER		BIT(2)
> > > +#define FW_OPT_NO_WARN			BIT(3)
> > > +#define FW_OPT_NOCACHE			BIT(4)
> > > +#define FW_OPT_NOFALLBACK_SYSFS		BIT(5)
> > > +#define FW_OPT_FALLBACK_PLATFORM	BIT(6)
> > Everything looked good up to here. The enum defines each flag.
> > We just want to use an enum for *one* flag represetnation, not
> > a bundle.
>
> I do not know exactly what you are looking for then.  The FW_OPT_*
> values are OR'd together in the code.  You still want the fw_opt enum
> above left in place entirely and then the values used in OR'd
> together?

Yes, exactly. If they are combined then we just use a u32 to represent
these are then flags combined. An enum represents just *one* flag, not
a set which are OR'd together. Let me know if this is still not clear.

  Luis

^ permalink raw reply	[flat|nested] 6+ messages in thread

* Re: [PATCH] firmware_loader: change enum fw_opt to u32
  2020-05-22 23:00     ` Luis Chamberlain
@ 2020-05-23  6:05       ` Greg Kroah-Hartman
  2020-05-23  6:48         ` Luis Chamberlain
  0 siblings, 1 reply; 6+ messages in thread
From: Greg Kroah-Hartman @ 2020-05-23  6:05 UTC (permalink / raw)
  To: Luis Chamberlain
  Cc: Scott Branden, David Brown, Alexander Viro, Shuah Khan,
	bjorn.andersson, Shuah Khan, Arnd Bergmann, Rafael J . Wysocki,
	linux-kernel, linux-arm-msm, linux-fsdevel, BCM Kernel Feedback,
	Olof Johansson, Andrew Morton, Dan Carpenter, Colin Ian King,
	Kees Cook, Takashi Iwai, linux-kselftest, Andy Gross

On Fri, May 22, 2020 at 11:00:25PM +0000, Luis Chamberlain wrote:
> On Fri, May 22, 2020 at 03:49:05PM -0700, Scott Branden wrote:
> > Hi Luis,
> > 
> > On 2020-05-22 3:45 p.m., Luis Chamberlain wrote:
> > > On Fri, May 22, 2020 at 02:46:58PM -0700, Scott Branden wrote:
> > > >   /**
> > > > - * enum fw_opt - options to control firmware loading behaviour
> > > > + * fw_opt - options to control firmware loading behaviour
> > > >    *
> > > >    * @FW_OPT_UEVENT: Enables the fallback mechanism to send a kobject uevent
> > > >    *	when the firmware is not found. Userspace is in charge to load the
> > > > @@ -33,15 +33,13 @@
> > > >    *	the platform's main firmware. If both this fallback and the sysfs
> > > >    *      fallback are enabled, then this fallback will be tried first.
> > > >    */
> > > > -enum fw_opt {
> > > > -	FW_OPT_UEVENT			= BIT(0),
> > > > -	FW_OPT_NOWAIT			= BIT(1),
> > > > -	FW_OPT_USERHELPER		= BIT(2),
> > > > -	FW_OPT_NO_WARN			= BIT(3),
> > > > -	FW_OPT_NOCACHE			= BIT(4),
> > > > -	FW_OPT_NOFALLBACK_SYSFS		= BIT(5),
> > > > -	FW_OPT_FALLBACK_PLATFORM	= BIT(6),
> > > > -};
> > > > +#define FW_OPT_UEVENT			BIT(0)
> > > > +#define FW_OPT_NOWAIT			BIT(1)
> > > > +#define FW_OPT_USERHELPER		BIT(2)
> > > > +#define FW_OPT_NO_WARN			BIT(3)
> > > > +#define FW_OPT_NOCACHE			BIT(4)
> > > > +#define FW_OPT_NOFALLBACK_SYSFS		BIT(5)
> > > > +#define FW_OPT_FALLBACK_PLATFORM	BIT(6)
> > > Everything looked good up to here. The enum defines each flag.
> > > We just want to use an enum for *one* flag represetnation, not
> > > a bundle.
> >
> > I do not know exactly what you are looking for then.  The FW_OPT_*
> > values are OR'd together in the code.  You still want the fw_opt enum
> > above left in place entirely and then the values used in OR'd
> > together?
> 
> Yes, exactly. If they are combined then we just use a u32 to represent
> these are then flags combined. An enum represents just *one* flag, not
> a set which are OR'd together. Let me know if this is still not clear.

If this is the case, why have an enum at all?  What difference is it
from a #define like was done here?

thanks,

greg k-h

^ permalink raw reply	[flat|nested] 6+ messages in thread

* Re: [PATCH] firmware_loader: change enum fw_opt to u32
  2020-05-23  6:05       ` Greg Kroah-Hartman
@ 2020-05-23  6:48         ` Luis Chamberlain
  0 siblings, 0 replies; 6+ messages in thread
From: Luis Chamberlain @ 2020-05-23  6:48 UTC (permalink / raw)
  To: Greg Kroah-Hartman
  Cc: Scott Branden, David Brown, Alexander Viro, Shuah Khan,
	bjorn.andersson, Shuah Khan, Arnd Bergmann, Rafael J . Wysocki,
	linux-kernel, linux-arm-msm, linux-fsdevel, BCM Kernel Feedback,
	Olof Johansson, Andrew Morton, Dan Carpenter, Colin Ian King,
	Kees Cook, Takashi Iwai, linux-kselftest, Andy Gross

On Sat, May 23, 2020 at 08:05:48AM +0200, Greg Kroah-Hartman wrote:
> On Fri, May 22, 2020 at 11:00:25PM +0000, Luis Chamberlain wrote:
> > On Fri, May 22, 2020 at 03:49:05PM -0700, Scott Branden wrote:
> > > Hi Luis,
> > > 
> > > On 2020-05-22 3:45 p.m., Luis Chamberlain wrote:
> > > > On Fri, May 22, 2020 at 02:46:58PM -0700, Scott Branden wrote:
> > > > >   /**
> > > > > - * enum fw_opt - options to control firmware loading behaviour
> > > > > + * fw_opt - options to control firmware loading behaviour
> > > > >    *
> > > > >    * @FW_OPT_UEVENT: Enables the fallback mechanism to send a kobject uevent
> > > > >    *	when the firmware is not found. Userspace is in charge to load the
> > > > > @@ -33,15 +33,13 @@
> > > > >    *	the platform's main firmware. If both this fallback and the sysfs
> > > > >    *      fallback are enabled, then this fallback will be tried first.
> > > > >    */
> > > > > -enum fw_opt {
> > > > > -	FW_OPT_UEVENT			= BIT(0),
> > > > > -	FW_OPT_NOWAIT			= BIT(1),
> > > > > -	FW_OPT_USERHELPER		= BIT(2),
> > > > > -	FW_OPT_NO_WARN			= BIT(3),
> > > > > -	FW_OPT_NOCACHE			= BIT(4),
> > > > > -	FW_OPT_NOFALLBACK_SYSFS		= BIT(5),
> > > > > -	FW_OPT_FALLBACK_PLATFORM	= BIT(6),
> > > > > -};
> > > > > +#define FW_OPT_UEVENT			BIT(0)
> > > > > +#define FW_OPT_NOWAIT			BIT(1)
> > > > > +#define FW_OPT_USERHELPER		BIT(2)
> > > > > +#define FW_OPT_NO_WARN			BIT(3)
> > > > > +#define FW_OPT_NOCACHE			BIT(4)
> > > > > +#define FW_OPT_NOFALLBACK_SYSFS		BIT(5)
> > > > > +#define FW_OPT_FALLBACK_PLATFORM	BIT(6)
> > > > Everything looked good up to here. The enum defines each flag.
> > > > We just want to use an enum for *one* flag represetnation, not
> > > > a bundle.
> > >
> > > I do not know exactly what you are looking for then.  The FW_OPT_*
> > > values are OR'd together in the code.  You still want the fw_opt enum
> > > above left in place entirely and then the values used in OR'd
> > > together?
> > 
> > Yes, exactly. If they are combined then we just use a u32 to represent
> > these are then flags combined. An enum represents just *one* flag, not
> > a set which are OR'd together. Let me know if this is still not clear.
> 
> If this is the case, why have an enum at all?  What difference is it
> from a #define like was done here?

If used on a switch to test for cases the compiler will error if you
miss one, and it is easier to use kdoc for them.

  Luis

^ permalink raw reply	[flat|nested] 6+ messages in thread

end of thread, back to index

Thread overview: 6+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2020-05-22 21:46 [PATCH] firmware_loader: change enum fw_opt to u32 Scott Branden
2020-05-22 22:45 ` Luis Chamberlain
2020-05-22 22:49   ` Scott Branden
2020-05-22 23:00     ` Luis Chamberlain
2020-05-23  6:05       ` Greg Kroah-Hartman
2020-05-23  6:48         ` Luis Chamberlain

Linux-Fsdevel Archive on lore.kernel.org

Archives are clonable:
	git clone --mirror https://lore.kernel.org/linux-fsdevel/0 linux-fsdevel/git/0.git

	# If you have public-inbox 1.1+ installed, you may
	# initialize and index your mirror using the following commands:
	public-inbox-init -V2 linux-fsdevel linux-fsdevel/ https://lore.kernel.org/linux-fsdevel \
		linux-fsdevel@vger.kernel.org
	public-inbox-index linux-fsdevel

Example config snippet for mirrors

Newsgroup available over NNTP:
	nntp://nntp.lore.kernel.org/org.kernel.vger.linux-fsdevel


AGPL code for this site: git clone https://public-inbox.org/public-inbox.git