Messages in this thread | | | Date | Fri, 17 Apr 2015 09:46:05 -0600 | From | Jens Axboe <> | Subject | Re: Upstream kernel fails to run on qemu-sparc64 due to commit 889fa31f0 (blk-mq: reduce unnecessary software queue looping) |
| |
On 04/17/2015 09:31 AM, Guenter Roeck wrote: > Hi Jens, > > On Fri, Apr 17, 2015 at 08:26:11AM -0600, Jens Axboe wrote: >>>> >>> As additional information: >>> >>> + * Set the map size to the number of mapped software queues. >>> + * This is more accurate and more efficient than looping >>> + * over all possibly mapped software queues. >>> + */ >>> + map->map_size = hctx->nr_ctx / map->bits_per_word; >>> >>> On my system, hctx->nr_ctx is 1, and map->bits_per_word is 8. >>> Thus map->map_size is set to 0, which doesn't make much sense. >> >> >>> The system comes up if I replace the above code with >>> map->map_size = DIV_ROUND_UP(hctx->nr_ctx, map->bits_per_word); >>> >>> I have no idea if that is the correct fix, though. >> >> Ugh, yes indeed, looks like the <= was lost from a previous patch. Now I >> wonder why it I didn't see any hangs with this... Thanks for reporting, I'll >> get a fix in today. >> > Assuming that nr_ctx reflects the number of (online) CPUs, my guess is that > you may have a multiple of bits_per_word CPUs in your system.
Ah yes, now it makes sense. Smallest box I have is 8 CPUs, and generally map bits_per_word is in the 5-6 range. So it ends up working out for my case, ->map_size would be >= 1.
-- Jens Axboe
| |