• Keith Busch's avatar
    nvme-pci: Separate IO and admin queue IRQ vectors · 22b55601
    Keith Busch authored
    The admin and first IO queues shared the first irq vector, which has an
    affinity mask including cpu0. If a system allows cpu0 to be offlined,
    the admin queue may not be usable if no other CPUs in the affinity mask
    are online. This is a problem since unlike IO queues, there is only
    one admin queue that always needs to be usable.
    
    To fix, this patch allocates one pre_vector for the admin queue that
    is assigned all CPUs, so will always be accessible. The IO queues are
    assigned the remaining managed vectors.
    
    In case a controller has only one interrupt vector available, the admin
    and IO queues will share the pre_vector with all CPUs assigned.
    
    Cc: Jianchao Wang <jianchao.w.wang@oracle.com>
    Cc: Ming Lei <ming.lei@redhat.com>
    Signed-off-by: default avatarKeith Busch <keith.busch@intel.com>
    Reviewed-by: default avatarChristoph Hellwig <hch@lst.de>
    Reviewed-by: default avatarMing Lei <ming.lei@redhat.com>
    Signed-off-by: default avatarJens Axboe <axboe@kernel.dk>
    22b55601
pci.c 69.6 KB