Re: [PATCH 19/23] objtool: decode instructions and resolve branch targets in parallel

From: Lorenzo Stoakes (ARM)

Date: Sun Sep 13 2026 - 12:24:00 EST


On Sat, Sep 12, 2026 at 04:39:49PM -0700, Josh Poimboeuf wrote:
> On Tue, Sep 08, 2026 at 09:55:19PM +0100, Lorenzo Stoakes (ARM) wrote:
> > +/* Only an object this large, e.g. vmlinux.o, is decoded on several threads. */
> > +#define DECODE_THREADED_MIN_TEXT SZ_8M
> > +/* Only decoding and the branch passes are threaded, so more gains nothing. */
> > +#define DECODE_MAX_THREADS 16
> > +#define DECODE_RANGES_PER_THREAD 4
> > +
> > +/*
> > + * sec_offset_hash() keys on OFFSET_STRIDE windows, so the instructions of a
> > + * window share a chain and buckets beyond one per window would sit empty.
> > + */
> > +#define INSN_HASH_BYTES_PER_BUCKET OFFSET_STRIDE
> > +#define INSN_HASH_MIN_BITS 10
> > +
> > +static unsigned long total_text_size(struct objtool_file *file)
> > +{
> > + unsigned long size = 0;
> > + struct section *sec;
> > +
> > + for_each_sec(file->elf, sec)
> > + if (is_text_sec(sec))
> > + size += sec_size(sec);
> > +
> > + return size;
> > +}
> > +
> > +static int alloc_insn_hash(struct objtool_file *file, unsigned long text_size)
> > +{
> > + const unsigned long nr_buckets = text_size / INSN_HASH_BYTES_PER_BUCKET;
> > + const int bits = ilog2(nr_buckets);
> > +
> > + file->insn_hash_bits = max(INSN_HASH_MIN_BITS, bits);
> > + file->insn_hash = calloc(1UL << file->insn_hash_bits,
> > + sizeof(*file->insn_hash));
> > + if (!file->insn_hash) {
> > + ERROR_GLIBC("calloc");
> > + return -1;
> > + }
> > +
> > + if (opts.stats)
> > + printf("insn_hash_bits: %d\n", file->insn_hash_bits);
> > +
> > + return 0;
> > +}
>
> The dynamic insn hash sizing should probably be its own patch. It's a
> standalone improvement, and much more obviously correct compared to the
> rest of patch. I suspect it will make a big difference on allyesconfig.

Thanks, will split out!

>
> The rest of the patch looks ok to me, though it needs to be reviewed
> very carefully (which I haven't done yet). I'd like to see a Sashiko
> review (I wasn't able to find these patches on sashiko.dev for some
> reason).

https://sashiko.dev/#/patchset/20260908-build-speedup-v1-0-5dc1ac01672d%40kernel.org
seems to be it?

I will work through the reports for v2!

>
> --
> Josh

--
Cheers, Lorenzo