[PATCH v8 4/6] serial: 8250: drain canceled TX DMA before reusing its buffer

Andy Shevchenko andriy.shevchenko at linux.intel.com
Fri Oct 30 02:33:23 PDT 2026


On Thu, Oct 29, 2026 at 11:15:23AM -0600, James Hilliard wrote:
> On Thu, Oct 29, 2026 at 8:19 AM Andy Shevchenko
> <andriy.shevchenko at linux.intel.com> wrote:
> > On Thu, Oct 29, 2026 at 01:37:00AM -0600, James Hilliard wrote:

...

> > > -     bool                    shutting_down;
> > > +     bool                    shutting_down:1;
> > > +     bool                    tx_terminating:1;
> > > +     bool                    tx_flushed:1;
> >
> > What is the meaning of bool XXX:1? Have you checked with `pahole` the result?
> 
> These are one-bit boolean fields, intended to pack the state flags
> into one byte.
> 
> I've now compared layout probes using the kernel type definitions and
> saved build flags, changing only those bitfields to ordinary bools.
> For the complete v8 structure, including the RX flags, pahole reports:
> 
>                             Bitfields   Plain bool
>     ARM32 / Clang               212         220
>     ARM64 / GCC                 368         376
>     ARM64 / GCC / PREEMPT_RT     368         376
> 
> The sizes are in bytes. All six flags share one byte in the packed
> version. This saves eight bytes in each checked configuration.

Thanks for checking!

> The packing is a layout choice, not an atomicity mechanism; updates
> still require the UART port lock. Given the measured saving, I'd keep
> it unless there is another concern with using bool bitfields here.

I'm just worrying that bool bitfields are implementation defined and
might have some side-effects. But I see elsewhere in the kernel similar
approach, so I guess so far it didn't trigger any suspicious behaviour.

-- 
With Best Regards,
Andy Shevchenko





More information about the linux-arm-kernel mailing list