On Fri, Jan 26, 2024 at 10:08:16AM -0800, Abhishek Pandit-Subedi wrote: > On Thu, Jan 25, 2024 at 5:50 PM Greg Kroah-Hartman > <gregkh@xxxxxxxxxxxxxxxxxxx> wrote: > > > > On Thu, Jan 25, 2024 at 04:21:47PM -0800, Abhishek Pandit-Subedi wrote: > > > On Thu, Jan 25, 2024 at 3:03 PM Greg Kroah-Hartman > > > <gregkh@xxxxxxxxxxxxxxxxxxx> wrote: > > > > > > > > On Wed, Jan 24, 2024 at 04:44:53PM -0800, Abhishek Pandit-Subedi wrote: > > > > > diff --git a/drivers/usb/typec/ucsi/ucsi.h b/drivers/usb/typec/ucsi/ucsi.h > > > > > index bec920fa6b8a..94b373378f63 100644 > > > > > --- a/drivers/usb/typec/ucsi/ucsi.h > > > > > +++ b/drivers/usb/typec/ucsi/ucsi.h > > > > > @@ -3,6 +3,7 @@ > > > > > #ifndef __DRIVER_USB_TYPEC_UCSI_H > > > > > #define __DRIVER_USB_TYPEC_UCSI_H > > > > > > > > > > +#include <asm-generic/unaligned.h> > > > > > > > > Do you really need to include a asm/ include file? This feels very > > > > wrong. > > > > > > I didn't see any header in include/linux that already had these > > > unaligned access functions so I opted to include > > > asm-generic/unaligned.h. Is there a reason not to use an asm/ include > > > file? > > > > Yes, you should never need to include a asm/ file, unless you are > > arch-specific code. > > > > But the big issue is that you don't really need this, right? > > The UCSI struct definitions have lots of unaligned bit ranges (and I > will be refactoring <linux/bitfield.h> to support this but that's > coming later). As an example, the GET_CONNECTOR_STATUS data structure > has unaligned fields from bit 88-145. > Rather than define my own macro, it was suggested I use the > get_unaligned_le32 functions (see > https://chromium-review.googlesource.com/c/chromiumos/third_party/kernel/+/5195032/3..4/drivers/usb/typec/ucsi/ucsi.h#b183). > > I did a quick ripgrep on the drivers folder -- it looks like the "You > should never need to include a asm/ file unless you are arch specific" > isn't being followed for this file: > $ (cd drivers && rg -g '*.h' "unaligned\.h" -l) | wc -l > 22 > > The unaligned access functions (get_unaligned_le16, > get_unaligned_le32, etc) are really useful and widely used. Maybe they > SHOULD be exposed from a <linux/unaligned.h> since they are so useful? > I can send a follow-on patch that creates <linux/unaligned.h> (that > simply just includes <asm/unaligned.h>) and moves all includes of > <asm/unaligned.h> outside of "arch" to the linux header instead (this > will also create a checkpatch warning now as you are expecting). This is being worked on, see: https://lore.kernel.org/r/20231212024920.GG1674809@ZenIV thanks, greg k-h