• H
    s390x/css: unrestrict cssids · 99577c49
    Halil Pasic 提交于
    The default css 0xfe is currently restricted to virtual subchannel
    devices. The hope when the decision was made was, that non-virtual
    subchannel devices will come around when guest can exploit multiple
    channel subsystems. Since the guests generally don't do, the pain
    of the partitioned (cssid) namespace outweighs the gain.
    
    Let us remove the corresponding restrictions (virtual devices
    can be put only in 0xfe and non-virtual devices in any css except
    the 0xfe -- while s390-squash-mcss then remaps everything to cssid 0).
    
    At the same time, change our schema for generating css bus ids to put
    both virtual and non-virtual devices into the default css (spilling over
    into other css images, if needed). The intention is to deprecate
    s390-squash-mcss. With this change devices without a specified devno
    won't end up hidden to guests not supporting multiple channel subsystems,
    unless this can not be avoided (default css full).
    
    Let us also advertise the changes to the management software (so it can
    tell are cssids unrestricted or restricted).
    
    The adverse effect of getting rid of the restriction on migration should
    not be too severe.  Vfio-ccw devices are not live-migratable yet, and for
    virtual devices using the extra freedom would only make sense with the
    aforementioned guest support in place.
    
    The auto-generated bus ids are affected by both changes. We hope to not
    encounter any auto-generated bus ids in production as Libvirt is always
    explicit about the bus id.  Since 8ed179c9 ("s390x/css: catch section
    mismatch on load", 2017-05-18) the worst that can happen because the same
    device ended up having a different bus id is a cleanly failed migration.
    I find it hard to reason about the impact of changed auto-generated bus
    ids on migration for command line users as I don't know which rules is
    such an user supposed to follow.
    
    Another pain-point is down- or upgrade of QEMU for command line users.
    The old way and the new way of doing vfio-ccw are mutually incompatible.
    Libvirt is only going to support the new way, so for libvirt users, the
    possible problems at QEMU downgrade are the following. If a domain
    contains virtual devices placed into a css different than 0xfe the domain
    will refuse to start with a QEMU not having this patch. Putting devices
    into a css different that 0xfe however won't make much sense in the near
    future (guest support). Libvirt will refuse to do vfio-ccw with a QEMU
    not having this patch. This is business as usual.
    Signed-off-by: NHalil Pasic <pasic@linux.vnet.ibm.com>
    Acked-by: NChristian Borntraeger <borntraeger@de.ibm.com>
    Reviewed-by: NDong Jia Shi <bjsdjshi@linux.vnet.ibm.com>
    Message-Id: <20171206144438.28908-2-pasic@linux.vnet.ibm.com>
    Signed-off-by: NCornelia Huck <cohuck@redhat.com>
    99577c49
css.h 10.6 KB