Re: 2.6.24 breaks BIOS updates on all Dell machines

2008-02-06 Thread Jean Delvare
On Tue, 5 Feb 2008 15:44:13 -0800, Greg KH wrote:
> On Tue, Feb 05, 2008 at 09:16:42PM +0100, Jean Delvare wrote:
> > This is 2.6.24, CONFIG_SYSFS_DEPRECATED=y:
> > 
> > # ls -l /sys/class/i2c-adapter/i2c-0
> > total 0
> > lrwxrwxrwx 1 root root0 f?v  5 18:07 device -> 
> > ../../../devices/pci:00/:00:01.0/:01:00.0
> > lrwxrwxrwx 1 root root0 f?v  5 18:17 i2c-dev:i2c-0 -> 
> > ../../../class/i2c-dev/i2c-0
> > -r--r--r-- 1 root root 4096 f?v  5 18:07 name
> > drwxr-xr-x 2 root root0 f?v  5 18:17 power
> > lrwxrwxrwx 1 root root0 f?v  5 18:07 subsystem -> 
> > ../../../class/i2c-adapter
> > -rw-r--r-- 1 root root 4096 f?v  5  2008 uevent
> > 
> > 2.6.24 rebuilt without CONFIG_SYSFS_DEPRECATED:
> > 
> > # ls -l /sys/class/i2c-adapter/i2c-0/
> > total 0
> > lrwxrwxrwx 1 root root0 f?v  5 18:42 device -> 
> > ../../../../../../devices/pci:00/:00:01.0/:01:00.0
> > drwxr-xr-x 3 root root0 f?v  5 18:42 i2c-0
> > -r--r--r-- 1 root root 4096 f?v  5 18:31 name
> > drwxr-xr-x 2 root root0 f?v  5 18:42 power
> > lrwxrwxrwx 1 root root0 f?v  5 18:31 subsystem -> 
> > ../../../../../../class/i2c-adapter
> > -rw-r--r-- 1 root root 4096 f?v  5  2008 uevent
> > 
> > The latter corresponds to what older kernels had ("i2c-0"). This means
> > that enabling CONFIG_SYSFS_DEPRECATED causes the i2c-dev class device
> > names to change.
> 
> Yes.  Well, no, not really.  The class device names are the same, it's
> just that it is a symlink in the DEPRECATED=Y name and a real directory
> in the =N case.
>
> > Isn't it supposed to be exactly the other way around, i.e. enabling
> > CONFIG_SYSFS_DEPRECATED should preserve the names as they were in
> > older kernels?
> 
> The real name is the same (look above, it's really called "i2c-0" in
> both cases, just that the symlink in the =Y case has to have a different
> name to handle the fact that there could be duplicate names in this
> format.
> 
> Does that help?

Not really. Why is =Y supposed to be a factor for duplicate names? The
exact same collision can happen in the =N case. This is exactly the
problem Markus and myself tried to address with
109f0e93b6b728f03c1eb4af02bc25d71b646c59. The i2c-dev class names its
class devices i2c-%d, and the firmware class as well (for i2c devices).
If 109f0e93b6b728f03c1eb4af02bc25d71b646c59 is going to be reverted,
then we will see the same collision again, but only for DEPRECATED=N.
That's rather confusing.

To add to the confusion, it seems that, in some cases, the potential
name collision is addressed by inserting a directory (named after the
class name) between the parent device and the class device. For example:

/sys/bus/pci/devices/:00:11.0/i2c-adapter/i2c-0

:00:11.0 is the PCI device, i2c-0 is the class device and
i2c-adapter is the class name.

So why isn't it done in all cases? This would solve the problem, as the
colliding class devices would finally get their own namespace:

/sys/bus/pci/devices/:00:11.0/i2c-adapter/i2c-0/i2c-dev/i2c-0
/sys/bus/pci/devices/:00:11.0/i2c-adapter/i2c-0/firmware/i2c-0

> It's really to keep older programs still work properly.  The =N case is
> what you should pay attention to for all modern distros.

Unfortunately the =N case is the one that will break when you revert
109f0e93b6b728f03c1eb4af02bc25d71b646c59.

-- 
Jean Delvare
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to [EMAIL PROTECTED]
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/


Re: 2.6.24 breaks BIOS updates on all Dell machines

2008-02-06 Thread Jean Delvare
On Tue, 5 Feb 2008 15:44:13 -0800, Greg KH wrote:
 On Tue, Feb 05, 2008 at 09:16:42PM +0100, Jean Delvare wrote:
  This is 2.6.24, CONFIG_SYSFS_DEPRECATED=y:
  
  # ls -l /sys/class/i2c-adapter/i2c-0
  total 0
  lrwxrwxrwx 1 root root0 f?v  5 18:07 device - 
  ../../../devices/pci:00/:00:01.0/:01:00.0
  lrwxrwxrwx 1 root root0 f?v  5 18:17 i2c-dev:i2c-0 - 
  ../../../class/i2c-dev/i2c-0
  -r--r--r-- 1 root root 4096 f?v  5 18:07 name
  drwxr-xr-x 2 root root0 f?v  5 18:17 power
  lrwxrwxrwx 1 root root0 f?v  5 18:07 subsystem - 
  ../../../class/i2c-adapter
  -rw-r--r-- 1 root root 4096 f?v  5  2008 uevent
  
  2.6.24 rebuilt without CONFIG_SYSFS_DEPRECATED:
  
  # ls -l /sys/class/i2c-adapter/i2c-0/
  total 0
  lrwxrwxrwx 1 root root0 f?v  5 18:42 device - 
  ../../../../../../devices/pci:00/:00:01.0/:01:00.0
  drwxr-xr-x 3 root root0 f?v  5 18:42 i2c-0
  -r--r--r-- 1 root root 4096 f?v  5 18:31 name
  drwxr-xr-x 2 root root0 f?v  5 18:42 power
  lrwxrwxrwx 1 root root0 f?v  5 18:31 subsystem - 
  ../../../../../../class/i2c-adapter
  -rw-r--r-- 1 root root 4096 f?v  5  2008 uevent
  
  The latter corresponds to what older kernels had (i2c-0). This means
  that enabling CONFIG_SYSFS_DEPRECATED causes the i2c-dev class device
  names to change.
 
 Yes.  Well, no, not really.  The class device names are the same, it's
 just that it is a symlink in the DEPRECATED=Y name and a real directory
 in the =N case.

  Isn't it supposed to be exactly the other way around, i.e. enabling
  CONFIG_SYSFS_DEPRECATED should preserve the names as they were in
  older kernels?
 
 The real name is the same (look above, it's really called i2c-0 in
 both cases, just that the symlink in the =Y case has to have a different
 name to handle the fact that there could be duplicate names in this
 format.
 
 Does that help?

Not really. Why is =Y supposed to be a factor for duplicate names? The
exact same collision can happen in the =N case. This is exactly the
problem Markus and myself tried to address with
109f0e93b6b728f03c1eb4af02bc25d71b646c59. The i2c-dev class names its
class devices i2c-%d, and the firmware class as well (for i2c devices).
If 109f0e93b6b728f03c1eb4af02bc25d71b646c59 is going to be reverted,
then we will see the same collision again, but only for DEPRECATED=N.
That's rather confusing.

To add to the confusion, it seems that, in some cases, the potential
name collision is addressed by inserting a directory (named after the
class name) between the parent device and the class device. For example:

/sys/bus/pci/devices/:00:11.0/i2c-adapter/i2c-0

:00:11.0 is the PCI device, i2c-0 is the class device and
i2c-adapter is the class name.

So why isn't it done in all cases? This would solve the problem, as the
colliding class devices would finally get their own namespace:

/sys/bus/pci/devices/:00:11.0/i2c-adapter/i2c-0/i2c-dev/i2c-0
/sys/bus/pci/devices/:00:11.0/i2c-adapter/i2c-0/firmware/i2c-0

 It's really to keep older programs still work properly.  The =N case is
 what you should pay attention to for all modern distros.

Unfortunately the =N case is the one that will break when you revert
109f0e93b6b728f03c1eb4af02bc25d71b646c59.

-- 
Jean Delvare
--
To unsubscribe from this list: send the line unsubscribe linux-kernel in
the body of a message to [EMAIL PROTECTED]
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/


Re: 2.6.24 breaks BIOS updates on all Dell machines

2008-02-05 Thread Greg KH
On Tue, Feb 05, 2008 at 09:16:42PM +0100, Jean Delvare wrote:
> On Mon, 4 Feb 2008 22:45:47 -0800, Greg KH wrote:
> > On Tue, Jan 29, 2008 at 11:15:22PM +0100, Jean Delvare wrote:
> > > I'm a bit confused. It seems to me that the "class devices" are named
> > > differently in recent kernels. The i2c-dev class devices were originally
> > > showing as i2c-%d in their parent device directories (causing the
> > > collision), and now show as i2c-dev:i2c-%d. This suggests that the
> > > collision the patch above was trying to solve is in fact already fixed
> > > (by prefixing the device name with the class name). The good news is
> > > that it would mean that we can just revert the patch in question...
> > > 
> > > But quite frankly I'm not really sure, the class devices look different
> > > on every kernel I looked at, depending on the version and whether
> > > CONFIG_SYSFS_DEPRECATED is set or not.
> > 
> > THe naming is different depending on that sysfs variable, yes.  But it
> > should be consistant other than that.  If not, please let me know.
> > 
> > And yes, we did have to add the ":" a while ago to handle the namespace
> > collisions we were having.
> 
> OK, I am officially confused now.

Heh, it is a mess :)

> This is 2.6.24, CONFIG_SYSFS_DEPRECATED=y:
> 
> # ls -l /sys/class/i2c-adapter/i2c-0
> total 0
> lrwxrwxrwx 1 root root0 f?v  5 18:07 device -> 
> ../../../devices/pci:00/:00:01.0/:01:00.0
> lrwxrwxrwx 1 root root0 f?v  5 18:17 i2c-dev:i2c-0 -> 
> ../../../class/i2c-dev/i2c-0
> -r--r--r-- 1 root root 4096 f?v  5 18:07 name
> drwxr-xr-x 2 root root0 f?v  5 18:17 power
> lrwxrwxrwx 1 root root0 f?v  5 18:07 subsystem -> 
> ../../../class/i2c-adapter
> -rw-r--r-- 1 root root 4096 f?v  5  2008 uevent
> 
> 2.6.24 rebuilt without CONFIG_SYSFS_DEPRECATED:
> 
> # ls -l /sys/class/i2c-adapter/i2c-0/
> total 0
> lrwxrwxrwx 1 root root0 f?v  5 18:42 device -> 
> ../../../../../../devices/pci:00/:00:01.0/:01:00.0
> drwxr-xr-x 3 root root0 f?v  5 18:42 i2c-0
> -r--r--r-- 1 root root 4096 f?v  5 18:31 name
> drwxr-xr-x 2 root root0 f?v  5 18:42 power
> lrwxrwxrwx 1 root root0 f?v  5 18:31 subsystem -> 
> ../../../../../../class/i2c-adapter
> -rw-r--r-- 1 root root 4096 f?v  5  2008 uevent
> 
> The latter corresponds to what older kernels had ("i2c-0"). This means
> that enabling CONFIG_SYSFS_DEPRECATED causes the i2c-dev class device
> names to change.

Yes.  Well, no, not really.  The class device names are the same, it's
just that it is a symlink in the DEPRECATED=Y name and a real directory
in the =N case.

> Isn't it supposed to be exactly the other way around, i.e. enabling
> CONFIG_SYSFS_DEPRECATED should preserve the names as they were in
> older kernels?

The real name is the same (look above, it's really called "i2c-0" in
both cases, just that the symlink in the =Y case has to have a different
name to handle the fact that there could be duplicate names in this
format.

Does that help?

It's really to keep older programs still work properly.  The =N case is
what you should pay attention to for all modern distros.

thanks,

greg k-h
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to [EMAIL PROTECTED]
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/


Re: 2.6.24 breaks BIOS updates on all Dell machines

2008-02-05 Thread Jean Delvare
On Mon, 4 Feb 2008 22:45:47 -0800, Greg KH wrote:
> On Tue, Jan 29, 2008 at 11:15:22PM +0100, Jean Delvare wrote:
> > I'm a bit confused. It seems to me that the "class devices" are named
> > differently in recent kernels. The i2c-dev class devices were originally
> > showing as i2c-%d in their parent device directories (causing the
> > collision), and now show as i2c-dev:i2c-%d. This suggests that the
> > collision the patch above was trying to solve is in fact already fixed
> > (by prefixing the device name with the class name). The good news is
> > that it would mean that we can just revert the patch in question...
> > 
> > But quite frankly I'm not really sure, the class devices look different
> > on every kernel I looked at, depending on the version and whether
> > CONFIG_SYSFS_DEPRECATED is set or not.
> 
> THe naming is different depending on that sysfs variable, yes.  But it
> should be consistant other than that.  If not, please let me know.
> 
> And yes, we did have to add the ":" a while ago to handle the namespace
> collisions we were having.

OK, I am officially confused now.

This is 2.6.24, CONFIG_SYSFS_DEPRECATED=y:

# ls -l /sys/class/i2c-adapter/i2c-0
total 0
lrwxrwxrwx 1 root root0 fév  5 18:07 device -> 
../../../devices/pci:00/:00:01.0/:01:00.0
lrwxrwxrwx 1 root root0 fév  5 18:17 i2c-dev:i2c-0 -> 
../../../class/i2c-dev/i2c-0
-r--r--r-- 1 root root 4096 fév  5 18:07 name
drwxr-xr-x 2 root root0 fév  5 18:17 power
lrwxrwxrwx 1 root root0 fév  5 18:07 subsystem -> ../../../class/i2c-adapter
-rw-r--r-- 1 root root 4096 fév  5  2008 uevent

2.6.24 rebuilt without CONFIG_SYSFS_DEPRECATED:

# ls -l /sys/class/i2c-adapter/i2c-0/
total 0
lrwxrwxrwx 1 root root0 fév  5 18:42 device -> 
../../../../../../devices/pci:00/:00:01.0/:01:00.0
drwxr-xr-x 3 root root0 fév  5 18:42 i2c-0
-r--r--r-- 1 root root 4096 fév  5 18:31 name
drwxr-xr-x 2 root root0 fév  5 18:42 power
lrwxrwxrwx 1 root root0 fév  5 18:31 subsystem -> 
../../../../../../class/i2c-adapter
-rw-r--r-- 1 root root 4096 fév  5  2008 uevent

The latter corresponds to what older kernels had ("i2c-0"). This means
that enabling CONFIG_SYSFS_DEPRECATED causes the i2c-dev class device
names to change. Isn't it supposed to be exactly the other way around,
i.e. enabling CONFIG_SYSFS_DEPRECATED should preserve the names as they
were in older kernels?

If the "$class:" prefix was added to prevent collisions (and this
sounds like a good idea), then why wasn't it added in the regular case
(CONFIG_SYSFS_DEPRECATED=n) as well?

Someone please clarify the situation.

Thanks,
-- 
Jean Delvare
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to [EMAIL PROTECTED]
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/


Re: 2.6.24 breaks BIOS updates on all Dell machines

2008-02-05 Thread Jean Delvare
On Mon, 4 Feb 2008 09:58:35 -0600, Michael E Brown wrote:
> On Sun, Feb 03, 2008 at 03:02:38PM +0100, Jean Delvare wrote:
> > Hi Michael,
> > 
> > On Tue, 29 Jan 2008 13:09:25 -0600, Michael E Brown wrote:
> > > On Tue, Jan 29, 2008 at 08:04:17PM +0100, Sytse Wielinga wrote:
> > > > I've created the simple patch below. I have no idea if it actually 
> > > > works,
> > > > though, as I don't appear to have any hardware for which a linux driver
> > > > supports firmware loading. Please comment.
> > > 
> > > You can test this rather easily. Simply modprobe the "dell_rbu" driver.
> > > You dont need any special hardware, it should load on any machine. After
> > > you have loaded it, check the sysfs path to see if it has the correct
> > > path (or some symlink thereof):
> > > 
> > > GOOD: /sys/class/firmware/dell_rbu/   
> > > BAD : /sys/class/firmware/firmware-dell_rbu/loading
> > 
> > This doesn't actually work for me. Loading the dell_rbu driver on a
> > non-Dell system doesn't create anything under /sys/class/firmware.
> 
> You have to initialize the driver first before that file appears.
> 
> [EMAIL PROTECTED] ~]# modprobe dell_rbu
> [EMAIL PROTECTED] ~]# cd /sys/devices/platform/dell_rbu/
> [EMAIL PROTECTED] dell_rbu]# ll /sys/class/firmware/dell_rbu/loading 
> ls: cannot access /sys/class/firmware/dell_rbu/loading: No such file or
> directory
> [EMAIL PROTECTED] dell_rbu]# echo -n -e 'init\0' > image_type 
> [EMAIL PROTECTED] dell_rbu]# ll /sys/class/firmware/dell_rbu/loading 
> -rw-r--r-- 1 root root 4096 2008-02-04 09:57
> /sys/class/firmware/dell_rbu/loading

Ah, OK, thanks for the hint, it works now.

-- 
Jean Delvare
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to [EMAIL PROTECTED]
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/


Re: 2.6.24 breaks BIOS updates on all Dell machines

2008-02-05 Thread Jean Delvare
On Mon, 4 Feb 2008 09:58:35 -0600, Michael E Brown wrote:
 On Sun, Feb 03, 2008 at 03:02:38PM +0100, Jean Delvare wrote:
  Hi Michael,
  
  On Tue, 29 Jan 2008 13:09:25 -0600, Michael E Brown wrote:
   On Tue, Jan 29, 2008 at 08:04:17PM +0100, Sytse Wielinga wrote:
I've created the simple patch below. I have no idea if it actually 
works,
though, as I don't appear to have any hardware for which a linux driver
supports firmware loading. Please comment.
   
   You can test this rather easily. Simply modprobe the dell_rbu driver.
   You dont need any special hardware, it should load on any machine. After
   you have loaded it, check the sysfs path to see if it has the correct
   path (or some symlink thereof):
   
   GOOD: /sys/class/firmware/dell_rbu/   
   BAD : /sys/class/firmware/firmware-dell_rbu/loading
  
  This doesn't actually work for me. Loading the dell_rbu driver on a
  non-Dell system doesn't create anything under /sys/class/firmware.
 
 You have to initialize the driver first before that file appears.
 
 [EMAIL PROTECTED] ~]# modprobe dell_rbu
 [EMAIL PROTECTED] ~]# cd /sys/devices/platform/dell_rbu/
 [EMAIL PROTECTED] dell_rbu]# ll /sys/class/firmware/dell_rbu/loading 
 ls: cannot access /sys/class/firmware/dell_rbu/loading: No such file or
 directory
 [EMAIL PROTECTED] dell_rbu]# echo -n -e 'init\0'  image_type 
 [EMAIL PROTECTED] dell_rbu]# ll /sys/class/firmware/dell_rbu/loading 
 -rw-r--r-- 1 root root 4096 2008-02-04 09:57
 /sys/class/firmware/dell_rbu/loading

Ah, OK, thanks for the hint, it works now.

-- 
Jean Delvare
--
To unsubscribe from this list: send the line unsubscribe linux-kernel in
the body of a message to [EMAIL PROTECTED]
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/


Re: 2.6.24 breaks BIOS updates on all Dell machines

2008-02-05 Thread Jean Delvare
On Mon, 4 Feb 2008 22:45:47 -0800, Greg KH wrote:
 On Tue, Jan 29, 2008 at 11:15:22PM +0100, Jean Delvare wrote:
  I'm a bit confused. It seems to me that the class devices are named
  differently in recent kernels. The i2c-dev class devices were originally
  showing as i2c-%d in their parent device directories (causing the
  collision), and now show as i2c-dev:i2c-%d. This suggests that the
  collision the patch above was trying to solve is in fact already fixed
  (by prefixing the device name with the class name). The good news is
  that it would mean that we can just revert the patch in question...
  
  But quite frankly I'm not really sure, the class devices look different
  on every kernel I looked at, depending on the version and whether
  CONFIG_SYSFS_DEPRECATED is set or not.
 
 THe naming is different depending on that sysfs variable, yes.  But it
 should be consistant other than that.  If not, please let me know.
 
 And yes, we did have to add the : a while ago to handle the namespace
 collisions we were having.

OK, I am officially confused now.

This is 2.6.24, CONFIG_SYSFS_DEPRECATED=y:

# ls -l /sys/class/i2c-adapter/i2c-0
total 0
lrwxrwxrwx 1 root root0 fév  5 18:07 device - 
../../../devices/pci:00/:00:01.0/:01:00.0
lrwxrwxrwx 1 root root0 fév  5 18:17 i2c-dev:i2c-0 - 
../../../class/i2c-dev/i2c-0
-r--r--r-- 1 root root 4096 fév  5 18:07 name
drwxr-xr-x 2 root root0 fév  5 18:17 power
lrwxrwxrwx 1 root root0 fév  5 18:07 subsystem - ../../../class/i2c-adapter
-rw-r--r-- 1 root root 4096 fév  5  2008 uevent

2.6.24 rebuilt without CONFIG_SYSFS_DEPRECATED:

# ls -l /sys/class/i2c-adapter/i2c-0/
total 0
lrwxrwxrwx 1 root root0 fév  5 18:42 device - 
../../../../../../devices/pci:00/:00:01.0/:01:00.0
drwxr-xr-x 3 root root0 fév  5 18:42 i2c-0
-r--r--r-- 1 root root 4096 fév  5 18:31 name
drwxr-xr-x 2 root root0 fév  5 18:42 power
lrwxrwxrwx 1 root root0 fév  5 18:31 subsystem - 
../../../../../../class/i2c-adapter
-rw-r--r-- 1 root root 4096 fév  5  2008 uevent

The latter corresponds to what older kernels had (i2c-0). This means
that enabling CONFIG_SYSFS_DEPRECATED causes the i2c-dev class device
names to change. Isn't it supposed to be exactly the other way around,
i.e. enabling CONFIG_SYSFS_DEPRECATED should preserve the names as they
were in older kernels?

If the $class: prefix was added to prevent collisions (and this
sounds like a good idea), then why wasn't it added in the regular case
(CONFIG_SYSFS_DEPRECATED=n) as well?

Someone please clarify the situation.

Thanks,
-- 
Jean Delvare
--
To unsubscribe from this list: send the line unsubscribe linux-kernel in
the body of a message to [EMAIL PROTECTED]
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/


Re: 2.6.24 breaks BIOS updates on all Dell machines

2008-02-05 Thread Greg KH
On Tue, Feb 05, 2008 at 09:16:42PM +0100, Jean Delvare wrote:
 On Mon, 4 Feb 2008 22:45:47 -0800, Greg KH wrote:
  On Tue, Jan 29, 2008 at 11:15:22PM +0100, Jean Delvare wrote:
   I'm a bit confused. It seems to me that the class devices are named
   differently in recent kernels. The i2c-dev class devices were originally
   showing as i2c-%d in their parent device directories (causing the
   collision), and now show as i2c-dev:i2c-%d. This suggests that the
   collision the patch above was trying to solve is in fact already fixed
   (by prefixing the device name with the class name). The good news is
   that it would mean that we can just revert the patch in question...
   
   But quite frankly I'm not really sure, the class devices look different
   on every kernel I looked at, depending on the version and whether
   CONFIG_SYSFS_DEPRECATED is set or not.
  
  THe naming is different depending on that sysfs variable, yes.  But it
  should be consistant other than that.  If not, please let me know.
  
  And yes, we did have to add the : a while ago to handle the namespace
  collisions we were having.
 
 OK, I am officially confused now.

Heh, it is a mess :)

 This is 2.6.24, CONFIG_SYSFS_DEPRECATED=y:
 
 # ls -l /sys/class/i2c-adapter/i2c-0
 total 0
 lrwxrwxrwx 1 root root0 f?v  5 18:07 device - 
 ../../../devices/pci:00/:00:01.0/:01:00.0
 lrwxrwxrwx 1 root root0 f?v  5 18:17 i2c-dev:i2c-0 - 
 ../../../class/i2c-dev/i2c-0
 -r--r--r-- 1 root root 4096 f?v  5 18:07 name
 drwxr-xr-x 2 root root0 f?v  5 18:17 power
 lrwxrwxrwx 1 root root0 f?v  5 18:07 subsystem - 
 ../../../class/i2c-adapter
 -rw-r--r-- 1 root root 4096 f?v  5  2008 uevent
 
 2.6.24 rebuilt without CONFIG_SYSFS_DEPRECATED:
 
 # ls -l /sys/class/i2c-adapter/i2c-0/
 total 0
 lrwxrwxrwx 1 root root0 f?v  5 18:42 device - 
 ../../../../../../devices/pci:00/:00:01.0/:01:00.0
 drwxr-xr-x 3 root root0 f?v  5 18:42 i2c-0
 -r--r--r-- 1 root root 4096 f?v  5 18:31 name
 drwxr-xr-x 2 root root0 f?v  5 18:42 power
 lrwxrwxrwx 1 root root0 f?v  5 18:31 subsystem - 
 ../../../../../../class/i2c-adapter
 -rw-r--r-- 1 root root 4096 f?v  5  2008 uevent
 
 The latter corresponds to what older kernels had (i2c-0). This means
 that enabling CONFIG_SYSFS_DEPRECATED causes the i2c-dev class device
 names to change.

Yes.  Well, no, not really.  The class device names are the same, it's
just that it is a symlink in the DEPRECATED=Y name and a real directory
in the =N case.

 Isn't it supposed to be exactly the other way around, i.e. enabling
 CONFIG_SYSFS_DEPRECATED should preserve the names as they were in
 older kernels?

The real name is the same (look above, it's really called i2c-0 in
both cases, just that the symlink in the =Y case has to have a different
name to handle the fact that there could be duplicate names in this
format.

Does that help?

It's really to keep older programs still work properly.  The =N case is
what you should pay attention to for all modern distros.

thanks,

greg k-h
--
To unsubscribe from this list: send the line unsubscribe linux-kernel in
the body of a message to [EMAIL PROTECTED]
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/


Re: FW: 2.6.24 breaks BIOS updates on all Dell machines

2008-02-04 Thread Greg KH
On Tue, Jan 29, 2008 at 11:15:22PM +0100, Jean Delvare wrote:
> >So, I'm all for reverting this patch.
> >
> >And then, feel free to revisit the problem by proposing something that
> >doesn't break existing users of the interface.
> 
> I'm a bit confused. It seems to me that the "class devices" are named
> differently in recent kernels. The i2c-dev class devices were originally
> showing as i2c-%d in their parent device directories (causing the
> collision), and now show as i2c-dev:i2c-%d. This suggests that the
> collision the patch above was trying to solve is in fact already fixed
> (by prefixing the device name with the class name). The good news is
> that it would mean that we can just revert the patch in question...
> 
> But quite frankly I'm not really sure, the class devices look different
> on every kernel I looked at, depending on the version and whether
> CONFIG_SYSFS_DEPRECATED is set or not.

THe naming is different depending on that sysfs variable, yes.  But it
should be consistant other than that.  If not, please let me know.

And yes, we did have to add the ":" a while ago to handle the namespace
collisions we were having.

thanks,

greg k-h
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to [EMAIL PROTECTED]
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/


Re: FW: 2.6.24 breaks BIOS updates on all Dell machines

2008-02-04 Thread Greg KH
On Tue, Jan 29, 2008 at 11:15:22PM +0100, Jean Delvare wrote:
 So, I'm all for reverting this patch.
 
 And then, feel free to revisit the problem by proposing something that
 doesn't break existing users of the interface.
 
 I'm a bit confused. It seems to me that the class devices are named
 differently in recent kernels. The i2c-dev class devices were originally
 showing as i2c-%d in their parent device directories (causing the
 collision), and now show as i2c-dev:i2c-%d. This suggests that the
 collision the patch above was trying to solve is in fact already fixed
 (by prefixing the device name with the class name). The good news is
 that it would mean that we can just revert the patch in question...
 
 But quite frankly I'm not really sure, the class devices look different
 on every kernel I looked at, depending on the version and whether
 CONFIG_SYSFS_DEPRECATED is set or not.

THe naming is different depending on that sysfs variable, yes.  But it
should be consistant other than that.  If not, please let me know.

And yes, we did have to add the : a while ago to handle the namespace
collisions we were having.

thanks,

greg k-h
--
To unsubscribe from this list: send the line unsubscribe linux-kernel in
the body of a message to [EMAIL PROTECTED]
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/


Re: 2.6.24 breaks BIOS updates on all Dell machines

2008-02-03 Thread Jean Delvare
Hi Michael,

On Tue, 29 Jan 2008 13:09:25 -0600, Michael E Brown wrote:
> On Tue, Jan 29, 2008 at 08:04:17PM +0100, Sytse Wielinga wrote:
> > I've created the simple patch below. I have no idea if it actually works,
> > though, as I don't appear to have any hardware for which a linux driver
> > supports firmware loading. Please comment.
> 
> You can test this rather easily. Simply modprobe the "dell_rbu" driver.
> You dont need any special hardware, it should load on any machine. After
> you have loaded it, check the sysfs path to see if it has the correct
> path (or some symlink thereof):
> 
> GOOD: /sys/class/firmware/dell_rbu/   
> BAD : /sys/class/firmware/firmware-dell_rbu/loading

This doesn't actually work for me. Loading the dell_rbu driver on a
non-Dell system doesn't create anything under /sys/class/firmware.

-- 
Jean Delvare
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to [EMAIL PROTECTED]
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/


Re: 2.6.24 breaks BIOS updates on all Dell machines

2008-02-03 Thread Jean Delvare
Hi Michael,

On Tue, 29 Jan 2008 13:09:25 -0600, Michael E Brown wrote:
 On Tue, Jan 29, 2008 at 08:04:17PM +0100, Sytse Wielinga wrote:
  I've created the simple patch below. I have no idea if it actually works,
  though, as I don't appear to have any hardware for which a linux driver
  supports firmware loading. Please comment.
 
 You can test this rather easily. Simply modprobe the dell_rbu driver.
 You dont need any special hardware, it should load on any machine. After
 you have loaded it, check the sysfs path to see if it has the correct
 path (or some symlink thereof):
 
 GOOD: /sys/class/firmware/dell_rbu/   
 BAD : /sys/class/firmware/firmware-dell_rbu/loading

This doesn't actually work for me. Loading the dell_rbu driver on a
non-Dell system doesn't create anything under /sys/class/firmware.

-- 
Jean Delvare
--
To unsubscribe from this list: send the line unsubscribe linux-kernel in
the body of a message to [EMAIL PROTECTED]
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/


Re: FW: 2.6.24 breaks BIOS updates on all Dell machines

2008-01-29 Thread Jean Delvare

Hi Greg,

Le 29/1/2008, "Greg KH" <[EMAIL PROTECTED]> a écrit:

>On Tue, Jan 29, 2008 at 03:59:44PM +0100, Markus Rechberger wrote:
>>> -Original Message-
>>> (...)
>>> On Tue, Jan 29, 2008 at 12:32:44AM -0600, Michael E Brown wrote:
>>>
 BIOS updates are broken on all Dell systems due to Commit
 109f0e93b6b728f03c1eb4af02bc25d71b646c59, which is now in 2.6.24.

   static inline void fw_setup_device_id(struct device *f_dev, struct
 device *dev)
   {
 -   /* XXX warning we should watch out for name collisions */
 -   strlcpy(f_dev->bus_id, dev->bus_id, BUS_ID_SIZE);
 +   snprintf(f_dev->bus_id, BUS_ID_SIZE, "firmware-%s",
 dev->bus_id);
  }

>> reverting this breaks support for several media (DVB/V4L) devices. I would
>> have to look up some bugreports the same name collision happened with
>> several different drivers.
>> There was a comment in the fw code to watch out for name collisions earlier
>> already, so it needs a fix somewhere.
>>
>> Here's some history:
>> http://mcentral.de/wiki/index.php5/Bugtracker#i2c_dev_problem
>
>Yes, but we can't break existing code that has been working for quite
>some time.  That's just unacceptable.  The i2c devices can fix things by
>changing their module names so this collision doesn't happen :)

Actually, the i2c-dev driver was there before the firmware class, so if
anything, the firmware class broke something that was working before. It
just happens that nobody really needs to poke at the i2c-dev sysfs
directories, while user-space tools need to access firmware sysfs
directories. And most people do not need i2c-dev at all.

Also note that the way firmware directories were originally named (by the
name of the device itself!) wasn't exactly smart and was calling for
confusion if not trouble IMHO.

>So, I'm all for reverting this patch.
>
>And then, feel free to revisit the problem by proposing something that
>doesn't break existing users of the interface.

I'm a bit confused. It seems to me that the "class devices" are named
differently in recent kernels. The i2c-dev class devices were originally
showing as i2c-%d in their parent device directories (causing the
collision), and now show as i2c-dev:i2c-%d. This suggests that the
collision the patch above was trying to solve is in fact already fixed
(by prefixing the device name with the class name). The good news is
that it would mean that we can just revert the patch in question...

But quite frankly I'm not really sure, the class devices look different
on every kernel I looked at, depending on the version and whether
CONFIG_SYSFS_DEPRECATED is set or not.

--
Jean Delvare
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to [EMAIL PROTECTED]
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/


Re: FW: 2.6.24 breaks BIOS updates on all Dell machines

2008-01-29 Thread Sytse Wielinga
On Tue, Jan 29, 2008 at 03:59:44PM +0100, Markus Rechberger wrote:
(quote reformatted)
> On Mon, Jan 28, 2008 at 10:44:15PM -0800, Greg KH wrote:
> > On Tue, Jan 29, 2008 at 12:32:44AM -0600, Michael E Brown wrote:
> > > BIOS updates are broken on all Dell systems due to Commit
> > > 109f0e93b6b728f03c1eb4af02bc25d71b646c59, which is now in 2.6.24.
> > > 
> > >   static inline void fw_setup_device_id(struct device *f_dev, struct
> > > device *dev)
> > >   {
> > > -   /* XXX warning we should watch out for name collisions */
> > > -   strlcpy(f_dev->bus_id, dev->bus_id, BUS_ID_SIZE);
> > > +   snprintf(f_dev->bus_id, BUS_ID_SIZE, "firmware-%s",
> > > dev->bus_id);
> > >  }
> > > 
> > > Two programs are broken by this change: 
> > > 1) dellBiosUpdate, which is part of libsmbios
> > > 2) All of the Dell Update Packages (DUPs) that are part of Dell
> > > OpenManage: each BIOS release for each of 3-4 dozen platforms.
> > > 
> > > These programs are broken due to the pathname change from
> > > /sys/class/firmware/dell_rbu/   to
> > > /sys/class/firmware/firmware-dell_rbu/loading. 
> > > 
> > > Realistically, I can fix libsmbios in a couple of weeks, but there is no
> > > way that we can go back and fix a couple hundred DUP packages for this
> > > change. If this stays, we are looking at over 6 months before we have an
> > > officially-available Dell OpenManage that can deal with it, and that
> > > would be for new BIOS releases only, I suspect.
> > > 
> > > Some of the relevant threads from when this was submitted and accepted:
> > > http://lkml.org/lkml/2005/5/23/73
> > > http://lkml.org/lkml/2005/5/23/62
> > > 
> > > Due to the extremely large and disruptive nature of this bug, it would
> > > be nice to get a 2.6.24.1 with this patch reverted.
> > > 
> > > I have copied the relevant developers at Dell who maintain this driver.
> > > Please preserve the cc: list when replying.
> > 
> > Fair enough, I have no problem reverting this.
> > 
> > Anyone want to keep it in?
>
> Hi Greg,
> 
> reverting this breaks support for several media (DVB/V4L) devices. I 
> would have to look up some bugreports the same name collision happened 
> with several different drivers.
> There was a comment in the fw code to watch out for name collisions 
> earlier already, so it needs a fix somewhere.
> 
> Here's some history:
> http://mcentral.de/wiki/index.php5/Bugtracker#i2c_dev_problem

What about creating symlinks with the old device names? That shouldn't give
rise to any collisions, as it only works in the /sys/class/firmware/ namespace
(correct me if I'm wrong, I haven't actually taken the time to investigate the
problem properly and have no experience with the firmware driver).

I've created the simple patch below. I have no idea if it actually works,
though, as I don't appear to have any hardware for which a linux driver
supports firmware loading. Please comment.

Oh, and I almost forgot to ask about __FUNCTION__, which is gcc-specific;
wouldn't it be a good idea to simply replace all occurrences in the kernel
source with __func__?

Sytse

---
 drivers/base/Kconfig  |   11 +++
 drivers/base/firmware_class.c |7 +++
 2 files changed, 18 insertions(+)

diff --git a/drivers/base/Kconfig b/drivers/base/Kconfig
index d7da109..d0a9cf6 100644
--- a/drivers/base/Kconfig
+++ b/drivers/base/Kconfig
@@ -34,6 +34,17 @@ config FW_LOADER
  require userspace firmware loading support, but a module built outside
  the kernel tree does.
 
+config FW_LOADER_SYSFS_COMPAT
+   bool "Deprecated /sys/class/firmware/ folders"
+   depends on FW_LOADER
+   default y
+   help
+ Folders in /sys/class/firmware/ have been prefixed with 'firmware-'
+ to prevent name collisions. Enable this option to create symlinks
+ for backward compatibility.
+
+ If unsure, say Y.
+
 config DEBUG_DRIVER
bool "Driver Core verbose debug messages"
depends on DEBUG_KERNEL
diff --git a/drivers/base/firmware_class.c b/drivers/base/firmware_class.c
index 0295855..f8aba6c 100644
--- a/drivers/base/firmware_class.c
+++ b/drivers/base/firmware_class.c
@@ -330,6 +330,13 @@ static int fw_register_device(struct device **dev_p, const 
char *fw_name,
   __FUNCTION__);
goto error_kfree;
}
+
+#ifdef CONFIG_FW_LOADER_SYSFS_COMPAT
+   if (sysfs_create_link(_class.subsys.kobj, _dev->kobj, 
device->bus_id))
+   printk(KERN_WARNING "%s: sysfs_create_link failed for %s\n",
+  __FUNCTION__, device->bus_id);
+#endif
+
*dev_p = f_dev;
return 0;
 
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to [EMAIL PROTECTED]
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/


Re: FW: 2.6.24 breaks BIOS updates on all Dell machines

2008-01-29 Thread Greg KH
On Tue, Jan 29, 2008 at 03:59:44PM +0100, Markus Rechberger wrote:
>> -Original Message-
>> From: Greg KH [mailto:[EMAIL PROTECTED] Sent: Tuesday, January 29, 2008 
>> 12:44 AM
>> To: Brown, Michael E
>> Cc: Jos?? Luis Tall??n; Warzecha, Douglas; Salunke, Abhay;
>> linux-kernel@vger.kernel.org; Domsch, Matt; [EMAIL PROTECTED]
>> Subject: Re: 2.6.24 breaks BIOS updates on all Dell machines
>>
>> On Tue, Jan 29, 2008 at 12:32:44AM -0600, Michael E Brown wrote:
>>   
>>> BIOS updates are broken on all Dell systems due to Commit
>>> 109f0e93b6b728f03c1eb4af02bc25d71b646c59, which is now in 2.6.24.
>>>
>>>   static inline void fw_setup_device_id(struct device *f_dev, struct
>>> device *dev)
>>>   {
>>> -   /* XXX warning we should watch out for name collisions */
>>> -   strlcpy(f_dev->bus_id, dev->bus_id, BUS_ID_SIZE);
>>> +   snprintf(f_dev->bus_id, BUS_ID_SIZE, "firmware-%s",
>>> dev->bus_id);
>>>  }
>>>
>>> Two programs are broken by this change: 1) dellBiosUpdate, which is 
>>> part of libsmbios
>>> 2) All of the Dell Update Packages (DUPs) that are part of Dell
>>> OpenManage: each BIOS release for each of 3-4 dozen platforms.
>>>
>>> These programs are broken due to the pathname change from
>>> /sys/class/firmware/dell_rbu/   to
>>> /sys/class/firmware/firmware-dell_rbu/loading. 
>>> Realistically, I can fix libsmbios in a couple of weeks, but there is
>>> 
>> no
>>   
>>> way that we can go back and fix a couple hundred DUP packages for this
>>> change. If this stays, we are looking at over 6 months before we have
>>> 
>> an
>>   
>>> officially-available Dell OpenManage that can deal with it, and that
>>> would be for new BIOS releases only, I suspect.
>>>
>>> Some of the relevant threads from when this was submitted and
>>> 
>> accepted:
>>   
>>> http://lkml.org/lkml/2005/5/23/73
>>> http://lkml.org/lkml/2005/5/23/62
>>>
>>> Due to the extremely large and disruptive nature of this bug, it would
>>> be nice to get a 2.6.24.1 with this patch reverted.
>>>
>>> I have copied the relevant developers at Dell who maintain this
>>> 
>> driver.
>>   
>>> Please preserve the cc: list when replying.
>>> 
>>
>> Fair enough, I have no problem reverting this.
>>
>> Anyone want to keep it in?
>>
>>   
> Hi Greg,
>
> reverting this breaks support for several media (DVB/V4L) devices. I would 
> have to look up some bugreports the same name collision happened with 
> several different drivers.
> There was a comment in the fw code to watch out for name collisions earlier 
> already, so it needs a fix somewhere.
>
> Here's some history:
> http://mcentral.de/wiki/index.php5/Bugtracker#i2c_dev_problem

Yes, but we can't break existing code that has been working for quite
some time.  That's just unacceptable.  The i2c devices can fix things by
changing their module names so this collision doesn't happen :)

So, I'm all for reverting this patch.

And then, feel free to revisit the problem by proposing something that
doesn't break existing users of the interface.

Michael, can you please send me a patch, and CC: [EMAIL PROTECTED] so we
make sure to get this into 2.6.24.1?

thanks,

greg k-h
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to [EMAIL PROTECTED]
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/


Re: FW: 2.6.24 breaks BIOS updates on all Dell machines

2008-01-29 Thread Markus Rechberger

[EMAIL PROTECTED] wrote:

Markus, I see you were accidentally left off the cc: list on this bug.
The change was yours, so I suspect you'll have an opinion to share with
LKML.

Thanks,
Matt

--
Matt Domsch
Linux Technology Strategist, Dell Office of the CTO
linux.dell.com & www.dell.com/linux

-Original Message-
From: Greg KH [mailto:[EMAIL PROTECTED] 
Sent: Tuesday, January 29, 2008 12:44 AM

To: Brown, Michael E
Cc: Jos?? Luis Tall??n; Warzecha, Douglas; Salunke, Abhay;
linux-kernel@vger.kernel.org; Domsch, Matt; [EMAIL PROTECTED]
Subject: Re: 2.6.24 breaks BIOS updates on all Dell machines

On Tue, Jan 29, 2008 at 12:32:44AM -0600, Michael E Brown wrote:
  

BIOS updates are broken on all Dell systems due to Commit
109f0e93b6b728f03c1eb4af02bc25d71b646c59, which is now in 2.6.24.

  static inline void fw_setup_device_id(struct device *f_dev, struct
device *dev)
  {
-   /* XXX warning we should watch out for name collisions */
-   strlcpy(f_dev->bus_id, dev->bus_id, BUS_ID_SIZE);
+   snprintf(f_dev->bus_id, BUS_ID_SIZE, "firmware-%s",
dev->bus_id);
 }

Two programs are broken by this change: 
1) dellBiosUpdate, which is part of libsmbios

2) All of the Dell Update Packages (DUPs) that are part of Dell
OpenManage: each BIOS release for each of 3-4 dozen platforms.

These programs are broken due to the pathname change from
/sys/class/firmware/dell_rbu/   to
/sys/class/firmware/firmware-dell_rbu/loading. 


Realistically, I can fix libsmbios in a couple of weeks, but there is


no
  

way that we can go back and fix a couple hundred DUP packages for this
change. If this stays, we are looking at over 6 months before we have


an
  

officially-available Dell OpenManage that can deal with it, and that
would be for new BIOS releases only, I suspect.

Some of the relevant threads from when this was submitted and


accepted:
  

http://lkml.org/lkml/2005/5/23/73
http://lkml.org/lkml/2005/5/23/62

Due to the extremely large and disruptive nature of this bug, it would
be nice to get a 2.6.24.1 with this patch reverted.

I have copied the relevant developers at Dell who maintain this


driver.
  

Please preserve the cc: list when replying.



Fair enough, I have no problem reverting this.

Anyone want to keep it in?

  

Hi Greg,

reverting this breaks support for several media (DVB/V4L) devices. I 
would have to look up some bugreports the same name collision happened 
with several different drivers.
There was a comment in the fw code to watch out for name collisions 
earlier already, so it needs a fix somewhere.


Here's some history:
http://mcentral.de/wiki/index.php5/Bugtracker#i2c_dev_problem

Markus


--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to [EMAIL PROTECTED]
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/


Re: FW: 2.6.24 breaks BIOS updates on all Dell machines

2008-01-29 Thread Markus Rechberger

[EMAIL PROTECTED] wrote:

Markus, I see you were accidentally left off the cc: list on this bug.
The change was yours, so I suspect you'll have an opinion to share with
LKML.

Thanks,
Matt

--
Matt Domsch
Linux Technology Strategist, Dell Office of the CTO
linux.dell.com  www.dell.com/linux

-Original Message-
From: Greg KH [mailto:[EMAIL PROTECTED] 
Sent: Tuesday, January 29, 2008 12:44 AM

To: Brown, Michael E
Cc: Jos?? Luis Tall??n; Warzecha, Douglas; Salunke, Abhay;
linux-kernel@vger.kernel.org; Domsch, Matt; [EMAIL PROTECTED]
Subject: Re: 2.6.24 breaks BIOS updates on all Dell machines

On Tue, Jan 29, 2008 at 12:32:44AM -0600, Michael E Brown wrote:
  

BIOS updates are broken on all Dell systems due to Commit
109f0e93b6b728f03c1eb4af02bc25d71b646c59, which is now in 2.6.24.

  static inline void fw_setup_device_id(struct device *f_dev, struct
device *dev)
  {
-   /* XXX warning we should watch out for name collisions */
-   strlcpy(f_dev-bus_id, dev-bus_id, BUS_ID_SIZE);
+   snprintf(f_dev-bus_id, BUS_ID_SIZE, firmware-%s,
dev-bus_id);
 }

Two programs are broken by this change: 
1) dellBiosUpdate, which is part of libsmbios

2) All of the Dell Update Packages (DUPs) that are part of Dell
OpenManage: each BIOS release for each of 3-4 dozen platforms.

These programs are broken due to the pathname change from
/sys/class/firmware/dell_rbu/   to
/sys/class/firmware/firmware-dell_rbu/loading. 


Realistically, I can fix libsmbios in a couple of weeks, but there is


no
  

way that we can go back and fix a couple hundred DUP packages for this
change. If this stays, we are looking at over 6 months before we have


an
  

officially-available Dell OpenManage that can deal with it, and that
would be for new BIOS releases only, I suspect.

Some of the relevant threads from when this was submitted and


accepted:
  

http://lkml.org/lkml/2005/5/23/73
http://lkml.org/lkml/2005/5/23/62

Due to the extremely large and disruptive nature of this bug, it would
be nice to get a 2.6.24.1 with this patch reverted.

I have copied the relevant developers at Dell who maintain this


driver.
  

Please preserve the cc: list when replying.



Fair enough, I have no problem reverting this.

Anyone want to keep it in?

  

Hi Greg,

reverting this breaks support for several media (DVB/V4L) devices. I 
would have to look up some bugreports the same name collision happened 
with several different drivers.
There was a comment in the fw code to watch out for name collisions 
earlier already, so it needs a fix somewhere.


Here's some history:
http://mcentral.de/wiki/index.php5/Bugtracker#i2c_dev_problem

Markus


--
To unsubscribe from this list: send the line unsubscribe linux-kernel in
the body of a message to [EMAIL PROTECTED]
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/


Re: FW: 2.6.24 breaks BIOS updates on all Dell machines

2008-01-29 Thread Sytse Wielinga
On Tue, Jan 29, 2008 at 03:59:44PM +0100, Markus Rechberger wrote:
(quote reformatted)
 On Mon, Jan 28, 2008 at 10:44:15PM -0800, Greg KH wrote:
  On Tue, Jan 29, 2008 at 12:32:44AM -0600, Michael E Brown wrote:
   BIOS updates are broken on all Dell systems due to Commit
   109f0e93b6b728f03c1eb4af02bc25d71b646c59, which is now in 2.6.24.
   
 static inline void fw_setup_device_id(struct device *f_dev, struct
   device *dev)
 {
   -   /* XXX warning we should watch out for name collisions */
   -   strlcpy(f_dev-bus_id, dev-bus_id, BUS_ID_SIZE);
   +   snprintf(f_dev-bus_id, BUS_ID_SIZE, firmware-%s,
   dev-bus_id);
}
   
   Two programs are broken by this change: 
   1) dellBiosUpdate, which is part of libsmbios
   2) All of the Dell Update Packages (DUPs) that are part of Dell
   OpenManage: each BIOS release for each of 3-4 dozen platforms.
   
   These programs are broken due to the pathname change from
   /sys/class/firmware/dell_rbu/   to
   /sys/class/firmware/firmware-dell_rbu/loading. 
   
   Realistically, I can fix libsmbios in a couple of weeks, but there is no
   way that we can go back and fix a couple hundred DUP packages for this
   change. If this stays, we are looking at over 6 months before we have an
   officially-available Dell OpenManage that can deal with it, and that
   would be for new BIOS releases only, I suspect.
   
   Some of the relevant threads from when this was submitted and accepted:
   http://lkml.org/lkml/2005/5/23/73
   http://lkml.org/lkml/2005/5/23/62
   
   Due to the extremely large and disruptive nature of this bug, it would
   be nice to get a 2.6.24.1 with this patch reverted.
   
   I have copied the relevant developers at Dell who maintain this driver.
   Please preserve the cc: list when replying.
  
  Fair enough, I have no problem reverting this.
  
  Anyone want to keep it in?

 Hi Greg,
 
 reverting this breaks support for several media (DVB/V4L) devices. I 
 would have to look up some bugreports the same name collision happened 
 with several different drivers.
 There was a comment in the fw code to watch out for name collisions 
 earlier already, so it needs a fix somewhere.
 
 Here's some history:
 http://mcentral.de/wiki/index.php5/Bugtracker#i2c_dev_problem

What about creating symlinks with the old device names? That shouldn't give
rise to any collisions, as it only works in the /sys/class/firmware/ namespace
(correct me if I'm wrong, I haven't actually taken the time to investigate the
problem properly and have no experience with the firmware driver).

I've created the simple patch below. I have no idea if it actually works,
though, as I don't appear to have any hardware for which a linux driver
supports firmware loading. Please comment.

Oh, and I almost forgot to ask about __FUNCTION__, which is gcc-specific;
wouldn't it be a good idea to simply replace all occurrences in the kernel
source with __func__?

Sytse

---
 drivers/base/Kconfig  |   11 +++
 drivers/base/firmware_class.c |7 +++
 2 files changed, 18 insertions(+)

diff --git a/drivers/base/Kconfig b/drivers/base/Kconfig
index d7da109..d0a9cf6 100644
--- a/drivers/base/Kconfig
+++ b/drivers/base/Kconfig
@@ -34,6 +34,17 @@ config FW_LOADER
  require userspace firmware loading support, but a module built outside
  the kernel tree does.
 
+config FW_LOADER_SYSFS_COMPAT
+   bool Deprecated /sys/class/firmware/ folders
+   depends on FW_LOADER
+   default y
+   help
+ Folders in /sys/class/firmware/ have been prefixed with 'firmware-'
+ to prevent name collisions. Enable this option to create symlinks
+ for backward compatibility.
+
+ If unsure, say Y.
+
 config DEBUG_DRIVER
bool Driver Core verbose debug messages
depends on DEBUG_KERNEL
diff --git a/drivers/base/firmware_class.c b/drivers/base/firmware_class.c
index 0295855..f8aba6c 100644
--- a/drivers/base/firmware_class.c
+++ b/drivers/base/firmware_class.c
@@ -330,6 +330,13 @@ static int fw_register_device(struct device **dev_p, const 
char *fw_name,
   __FUNCTION__);
goto error_kfree;
}
+
+#ifdef CONFIG_FW_LOADER_SYSFS_COMPAT
+   if (sysfs_create_link(firmware_class.subsys.kobj, f_dev-kobj, 
device-bus_id))
+   printk(KERN_WARNING %s: sysfs_create_link failed for %s\n,
+  __FUNCTION__, device-bus_id);
+#endif
+
*dev_p = f_dev;
return 0;
 
--
To unsubscribe from this list: send the line unsubscribe linux-kernel in
the body of a message to [EMAIL PROTECTED]
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/


Re: FW: 2.6.24 breaks BIOS updates on all Dell machines

2008-01-29 Thread Greg KH
On Tue, Jan 29, 2008 at 03:59:44PM +0100, Markus Rechberger wrote:
 -Original Message-
 From: Greg KH [mailto:[EMAIL PROTECTED] Sent: Tuesday, January 29, 2008 
 12:44 AM
 To: Brown, Michael E
 Cc: Jos?? Luis Tall??n; Warzecha, Douglas; Salunke, Abhay;
 linux-kernel@vger.kernel.org; Domsch, Matt; [EMAIL PROTECTED]
 Subject: Re: 2.6.24 breaks BIOS updates on all Dell machines

 On Tue, Jan 29, 2008 at 12:32:44AM -0600, Michael E Brown wrote:
   
 BIOS updates are broken on all Dell systems due to Commit
 109f0e93b6b728f03c1eb4af02bc25d71b646c59, which is now in 2.6.24.

   static inline void fw_setup_device_id(struct device *f_dev, struct
 device *dev)
   {
 -   /* XXX warning we should watch out for name collisions */
 -   strlcpy(f_dev-bus_id, dev-bus_id, BUS_ID_SIZE);
 +   snprintf(f_dev-bus_id, BUS_ID_SIZE, firmware-%s,
 dev-bus_id);
  }

 Two programs are broken by this change: 1) dellBiosUpdate, which is 
 part of libsmbios
 2) All of the Dell Update Packages (DUPs) that are part of Dell
 OpenManage: each BIOS release for each of 3-4 dozen platforms.

 These programs are broken due to the pathname change from
 /sys/class/firmware/dell_rbu/   to
 /sys/class/firmware/firmware-dell_rbu/loading. 
 Realistically, I can fix libsmbios in a couple of weeks, but there is
 
 no
   
 way that we can go back and fix a couple hundred DUP packages for this
 change. If this stays, we are looking at over 6 months before we have
 
 an
   
 officially-available Dell OpenManage that can deal with it, and that
 would be for new BIOS releases only, I suspect.

 Some of the relevant threads from when this was submitted and
 
 accepted:
   
 http://lkml.org/lkml/2005/5/23/73
 http://lkml.org/lkml/2005/5/23/62

 Due to the extremely large and disruptive nature of this bug, it would
 be nice to get a 2.6.24.1 with this patch reverted.

 I have copied the relevant developers at Dell who maintain this
 
 driver.
   
 Please preserve the cc: list when replying.
 

 Fair enough, I have no problem reverting this.

 Anyone want to keep it in?

   
 Hi Greg,

 reverting this breaks support for several media (DVB/V4L) devices. I would 
 have to look up some bugreports the same name collision happened with 
 several different drivers.
 There was a comment in the fw code to watch out for name collisions earlier 
 already, so it needs a fix somewhere.

 Here's some history:
 http://mcentral.de/wiki/index.php5/Bugtracker#i2c_dev_problem

Yes, but we can't break existing code that has been working for quite
some time.  That's just unacceptable.  The i2c devices can fix things by
changing their module names so this collision doesn't happen :)

So, I'm all for reverting this patch.

And then, feel free to revisit the problem by proposing something that
doesn't break existing users of the interface.

Michael, can you please send me a patch, and CC: [EMAIL PROTECTED] so we
make sure to get this into 2.6.24.1?

thanks,

greg k-h
--
To unsubscribe from this list: send the line unsubscribe linux-kernel in
the body of a message to [EMAIL PROTECTED]
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/


Re: FW: 2.6.24 breaks BIOS updates on all Dell machines

2008-01-29 Thread Jean Delvare

Hi Greg,

Le 29/1/2008, Greg KH [EMAIL PROTECTED] a écrit:

On Tue, Jan 29, 2008 at 03:59:44PM +0100, Markus Rechberger wrote:
 -Original Message-
 (...)
 On Tue, Jan 29, 2008 at 12:32:44AM -0600, Michael E Brown wrote:

 BIOS updates are broken on all Dell systems due to Commit
 109f0e93b6b728f03c1eb4af02bc25d71b646c59, which is now in 2.6.24.

   static inline void fw_setup_device_id(struct device *f_dev, struct
 device *dev)
   {
 -   /* XXX warning we should watch out for name collisions */
 -   strlcpy(f_dev-bus_id, dev-bus_id, BUS_ID_SIZE);
 +   snprintf(f_dev-bus_id, BUS_ID_SIZE, firmware-%s,
 dev-bus_id);
  }

 reverting this breaks support for several media (DVB/V4L) devices. I would
 have to look up some bugreports the same name collision happened with
 several different drivers.
 There was a comment in the fw code to watch out for name collisions earlier
 already, so it needs a fix somewhere.

 Here's some history:
 http://mcentral.de/wiki/index.php5/Bugtracker#i2c_dev_problem

Yes, but we can't break existing code that has been working for quite
some time.  That's just unacceptable.  The i2c devices can fix things by
changing their module names so this collision doesn't happen :)

Actually, the i2c-dev driver was there before the firmware class, so if
anything, the firmware class broke something that was working before. It
just happens that nobody really needs to poke at the i2c-dev sysfs
directories, while user-space tools need to access firmware sysfs
directories. And most people do not need i2c-dev at all.

Also note that the way firmware directories were originally named (by the
name of the device itself!) wasn't exactly smart and was calling for
confusion if not trouble IMHO.

So, I'm all for reverting this patch.

And then, feel free to revisit the problem by proposing something that
doesn't break existing users of the interface.

I'm a bit confused. It seems to me that the class devices are named
differently in recent kernels. The i2c-dev class devices were originally
showing as i2c-%d in their parent device directories (causing the
collision), and now show as i2c-dev:i2c-%d. This suggests that the
collision the patch above was trying to solve is in fact already fixed
(by prefixing the device name with the class name). The good news is
that it would mean that we can just revert the patch in question...

But quite frankly I'm not really sure, the class devices look different
on every kernel I looked at, depending on the version and whether
CONFIG_SYSFS_DEPRECATED is set or not.

--
Jean Delvare
--
To unsubscribe from this list: send the line unsubscribe linux-kernel in
the body of a message to [EMAIL PROTECTED]
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/


Re: 2.6.24 breaks BIOS updates on all Dell machines

2008-01-28 Thread Greg KH
On Tue, Jan 29, 2008 at 12:32:44AM -0600, Michael E Brown wrote:
> BIOS updates are broken on all Dell systems due to Commit
> 109f0e93b6b728f03c1eb4af02bc25d71b646c59, which is now in 2.6.24.
> 
>   static inline void fw_setup_device_id(struct device *f_dev, struct
> device *dev)
>   {
> -   /* XXX warning we should watch out for name collisions */
> -   strlcpy(f_dev->bus_id, dev->bus_id, BUS_ID_SIZE);
> +   snprintf(f_dev->bus_id, BUS_ID_SIZE, "firmware-%s",
> dev->bus_id);
>  }
> 
> Two programs are broken by this change: 
> 1) dellBiosUpdate, which is part of libsmbios
> 2) All of the Dell Update Packages (DUPs) that are part of Dell
> OpenManage: each BIOS release for each of 3-4 dozen platforms.
> 
> These programs are broken due to the pathname change from
> /sys/class/firmware/dell_rbu/   to
> /sys/class/firmware/firmware-dell_rbu/loading. 
> 
> Realistically, I can fix libsmbios in a couple of weeks, but there is no
> way that we can go back and fix a couple hundred DUP packages for this
> change. If this stays, we are looking at over 6 months before we have an
> officially-available Dell OpenManage that can deal with it, and that
> would be for new BIOS releases only, I suspect.
> 
> Some of the relevant threads from when this was submitted and accepted:
> http://lkml.org/lkml/2005/5/23/73
> http://lkml.org/lkml/2005/5/23/62
> 
> Due to the extremely large and disruptive nature of this bug, it would
> be nice to get a 2.6.24.1 with this patch reverted.
> 
> I have copied the relevant developers at Dell who maintain this driver.
> Please preserve the cc: list when replying.

Fair enough, I have no problem reverting this.

Anyone want to keep it in?

thanks,

greg k-h
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to [EMAIL PROTECTED]
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/


Re: 2.6.24 breaks BIOS updates on all Dell machines

2008-01-28 Thread Greg KH
On Tue, Jan 29, 2008 at 12:32:44AM -0600, Michael E Brown wrote:
 BIOS updates are broken on all Dell systems due to Commit
 109f0e93b6b728f03c1eb4af02bc25d71b646c59, which is now in 2.6.24.
 
   static inline void fw_setup_device_id(struct device *f_dev, struct
 device *dev)
   {
 -   /* XXX warning we should watch out for name collisions */
 -   strlcpy(f_dev-bus_id, dev-bus_id, BUS_ID_SIZE);
 +   snprintf(f_dev-bus_id, BUS_ID_SIZE, firmware-%s,
 dev-bus_id);
  }
 
 Two programs are broken by this change: 
 1) dellBiosUpdate, which is part of libsmbios
 2) All of the Dell Update Packages (DUPs) that are part of Dell
 OpenManage: each BIOS release for each of 3-4 dozen platforms.
 
 These programs are broken due to the pathname change from
 /sys/class/firmware/dell_rbu/   to
 /sys/class/firmware/firmware-dell_rbu/loading. 
 
 Realistically, I can fix libsmbios in a couple of weeks, but there is no
 way that we can go back and fix a couple hundred DUP packages for this
 change. If this stays, we are looking at over 6 months before we have an
 officially-available Dell OpenManage that can deal with it, and that
 would be for new BIOS releases only, I suspect.
 
 Some of the relevant threads from when this was submitted and accepted:
 http://lkml.org/lkml/2005/5/23/73
 http://lkml.org/lkml/2005/5/23/62
 
 Due to the extremely large and disruptive nature of this bug, it would
 be nice to get a 2.6.24.1 with this patch reverted.
 
 I have copied the relevant developers at Dell who maintain this driver.
 Please preserve the cc: list when replying.

Fair enough, I have no problem reverting this.

Anyone want to keep it in?

thanks,

greg k-h
--
To unsubscribe from this list: send the line unsubscribe linux-kernel in
the body of a message to [EMAIL PROTECTED]
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/