mirror of
https://github.com/Motorhead1991/qemu.git
synced 2025-08-02 15:23:53 -06:00
s390x/css: realize css_create_sch
The S390 virtual css support already has a mechanism to create a virtual subchannel and provide it to the guest. However, to pass-through subchannels to a guest, we need to introduce a new mechanism to create the subchannel according to the real device information. Thus we reconstruct css_create_virtual_sch to a new css_create_sch function to handle all these cases and do allocation and initialization of the subchannel according to the device type and machine configuration. Reviewed-by: Pierre Morel <pmorel@linux.vnet.ibm.com> Signed-off-by: Dong Jia Shi <bjsdjshi@linux.vnet.ibm.com> Message-Id: <20170517004813.58227-6-bjsdjshi@linux.vnet.ibm.com> Signed-off-by: Cornelia Huck <cornelia.huck@de.ibm.com>
This commit is contained in:
parent
8f3cf0128c
commit
817d4a6bc8
7 changed files with 76 additions and 20 deletions
|
@ -192,16 +192,25 @@ extern PropertyInfo css_devid_ro_propinfo;
|
|||
/**
|
||||
* Create a subchannel for the given bus id.
|
||||
*
|
||||
* If @p bus_id is valid, verify that it uses the virtual channel
|
||||
* subsystem id and is not already in use, and find a free subchannel
|
||||
* id for it. If @p bus_id is not valid, find a free subchannel id and
|
||||
* device number across all subchannel sets. If either of the former
|
||||
* actions succeed, allocate a subchannel structure, initialise it
|
||||
* with the bus id, subchannel id and device number, register it with
|
||||
* the CSS and return it. Otherwise return NULL.
|
||||
* If @p bus_id is valid, and @p squash_mcss is true, verify that it is
|
||||
* not already in use in the default css, and find a free devno from the
|
||||
* default css image for it.
|
||||
* If @p bus_id is valid, and @p squash_mcss is false, verify that it is
|
||||
* not already in use, and find a free devno for it.
|
||||
* If @p bus_id is not valid, and if either @p squash_mcss or @p is_virtual
|
||||
* is true, find a free subchannel id and device number across all
|
||||
* subchannel sets from the default css image.
|
||||
* If @p bus_id is not valid, and if both @p squash_mcss and @p is_virtual
|
||||
* are false, find a non-full css image and find a free subchannel id and
|
||||
* device number across all subchannel sets from it.
|
||||
*
|
||||
* If either of the former actions succeed, allocate a subchannel structure,
|
||||
* initialise it with the bus id, subchannel id and device number, register
|
||||
* it with the CSS and return it. Otherwise return NULL.
|
||||
*
|
||||
* The caller becomes owner of the returned subchannel structure and
|
||||
* is responsible for unregistering and freeing it.
|
||||
*/
|
||||
SubchDev *css_create_virtual_sch(CssDevId bus_id, Error **errp);
|
||||
SubchDev *css_create_sch(CssDevId bus_id, bool is_virtual, bool squash_mcss,
|
||||
Error **errp);
|
||||
#endif
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue