On 24/02/13 12:32, Andreas Färber wrote: > Am 22.02.2013 20:01, schrieb Jens Freimann: >> From: Christian Borntraeger <borntrae...@de.ibm.com> >> >> We have to consider the m bit to find the real channel subsystem when >> determining the last subchannel. >> >> If we fail to take this into account, removal of a subchannel in >> the middle of a big list of devices will stop device detection after >> a reboot. >> >> Signed-off-by: Christian Borntraeger <borntrae...@de.ibm.com> >> Signed-off-by: Jens Freimann <jf...@linux.vnet.ibm.com> >> Reviewed-by: Cornelia Huck <cornelia.h...@de.ibm.com> >> --- >> hw/s390x/css.c | 11 +++++++---- >> target-s390x/cpu.h | 2 +- >> target-s390x/ioinst.c | 2 +- >> 3 files changed, 9 insertions(+), 6 deletions(-) >> >> diff --git a/hw/s390x/css.c b/hw/s390x/css.c >> index 3244201..8240e48 100644 >> --- a/hw/s390x/css.c >> +++ b/hw/s390x/css.c >> @@ -988,15 +988,18 @@ int css_do_rchp(uint8_t cssid, uint8_t chpid) >> return 0; >> } >> >> -bool css_schid_final(uint8_t cssid, uint8_t ssid, uint16_t schid) >> +bool css_schid_final(int m, uint8_t cssid, uint8_t ssid, uint16_t schid) >> { >> SubchSet *set; >> + uint8_t real_cssid; >> >> - if (cssid > MAX_CSSID || ssid > MAX_SSID || !channel_subsys->css[cssid] >> || >> - !channel_subsys->css[cssid]->sch_set[ssid]) { >> + real_cssid = (!m && (cssid == 0)) ? channel_subsys->default_cssid : >> cssid; > > If m is a single bit and only used as boolean here, any reason not to > make the argument a bool?
Consistency - the calling code also has m defined as int (the whole css and ioinst code) - making it bool wouldnt fit into that code. Furthermore, bool doesnt seem to be the perfect fit for a bit, a bit is 0 or 1 and not true or false. If bool, the variable should be called mbitset or something like that. Christian Christian