On Mon, 24 Feb 2025 at 15:47, Brendan Jackman <jackmanb@xxxxxxxxxx> wrote: > +static inline struct page *alloc_pages_force_nid(struct kunit *test, > + gfp_t gfp, int order, int nid) > +{ > + NODEMASK_ALLOC(nodemask_t, nodemask, GFP_KERNEL); > + struct page *page; > + > + KUNIT_ASSERT_NOT_NULL(test, nodemask); > + kunit_add_action(test, action_nodemask_free, &nodemask); > + nodes_clear(*nodemask); > + node_set(nid, *nodemask); > + > + page = __alloc_pages_noprof(GFP_KERNEL, 0, nid, nodemask); Oops, it's ignoring the gfp argument here. > + { .gfp_flags = GFP_DMA32, .want_zone = ZONE_NORMAL }, And with that fixed, it becomes clear DMA32 allocations can't be expected to succeed in this zone setup. (Anyway, it's a bit of a silly test regardless, just something to illustrate the KUnit idea).