On Fri, Jan 26, 2024 at 10:30 AM Greg Kroah-Hartman <gregkh@xxxxxxxxxxxxxxxxxxx> wrote: > > 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 Thanks, I see the move here: https://git.kernel.org/pub/scm/linux/kernel/git/viro/vfs.git/commit/?h=headers.unaligned&id=3169da8e80dfca2bcbfb6e998e2f36bcdcd5895a I'm not sure how the logistics of this is going to work but I assume it's ok to merge with <asm/unaligned.h> for now and let the later merge from viro fix this? (+Viro as FYI) I'll send up Patch 3 of this series with the fixes discussed (use asm/unaligned.h and reorder includes) Abhishek