• Josh Triplett's avatar
    nvme: Check for readiness more quickly, to speed up boot time · 3e98c244
    Josh Triplett authored
    After initialization, nvme_wait_ready checks for readiness every 100ms,
    even though the drive may be ready far sooner than that. This delays
    system boot by hundreds of milliseconds. Reduce the delay, checking for
    readiness every millisecond instead.
    
    Boot-time tests on an AWS c5.12xlarge:
    
    Before:
    [    0.546936] initcall nvme_init+0x0/0x5b returned 0 after 37 usecs
    ...
    [    0.764178] nvme nvme0: 2/0/0 default/read/poll queues
    [    0.768424]  nvme0n1: p1
    [    0.774132] EXT4-fs (nvme0n1p1): mounted filesystem with ordered data mode. Opts: (null)
    [    0.774146] VFS: Mounted root (ext4 filesystem) on device 259:1.
    ...
    [    0.788141] Run /sbin/init as init process
    
    After:
    [    0.537088] initcall nvme_init+0x0/0x5b returned 0 after 37 usecs
    ...
    [    0.543457] nvme nvme0: 2/0/0 default/read/poll queues
    [    0.548473]  nvme0n1: p1
    [    0.554339] EXT4-fs (nvme0n1p1): mounted filesystem with ordered data mode. Opts: (null)
    [    0.554344] VFS: Mounted root (ext4 filesystem) on device 259:1.
    ...
    [    0.567931] Run /sbin/init as init process
    Signed-off-by: default avatarJosh Triplett <josh@joshtriplett.org>
    Reviewed-by: default avatarSagi Grimberg <sagi@grimberg.me>
    Reviewed-by: default avatarChaitanya Kulkarni <chaitanya.kulkarni@wdc.com>
    Signed-off-by: default avatarKeith Busch <kbusch@kernel.org>
    3e98c244
core.c 109 KB