[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [PATCH v2] xen/console: Skip switching serial input to non existing domains


  • To: Michal Orzel <michal.orzel@xxxxxxx>
  • From: Jan Beulich <jbeulich@xxxxxxxx>
  • Date: Thu, 16 Mar 2023 17:02:07 +0100
  • Arc-authentication-results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=suse.com; dmarc=pass action=none header.from=suse.com; dkim=pass header.d=suse.com; arc=none
  • Arc-message-signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=EJw+kdHW6nBpOkf32c4UzYbO+1SkkSt7A3sx7OmIXQ8=; b=Txa6o1/kqQvOX/LRhyxhVA5Dt6PHg/Mejo5YwJ/sYXtACN0uIYOQhoc5RPAi3nycxhtQVbMSpkBOzojpGeALJWZa4yIpdwBHR6f7a96U+yP1G6c/acxhgcvHakFgWIIosw7zeXswlnqXyXDmhro3htI5Hq+0zv5+oOSQ0Ltiz+scHQ88tAlRYZwBKjpdB1KvKx4r4Qfq2zJWrZn0rzps6is80C6qWMMUxwuh1dCAMFe5HLOJBuBRC+vmBZK91oqe/FkhWloLcM39bd2pgsSs77bb+Yf7dSMM1ze0etF9Kazdtvfnw417iLwIW/PZkGkbcaOgYYHBWvgw4RrDaMQRNA==
  • Arc-seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=QcML9wCty+SneC6QGjLrgocADXY4ZooD/4nmdamHXRtRAMKLhnlY+2nTCsKqOov2GjehaCKWibENkaGsDlYE1pb9s8U9pMKeaEGZ1ZjeTrgQt9bvNJRZnmiROJ/IxcUHZmWQ0Ow5CbFIUXnRPUjGY8Za26XCqrDFgU1zO5IvYK4TQBKJy9B59SOxC3AnTe1FrbVr6qdLXJT0UuiHjXZCdzjlQQl2pP5jV8NDij0vHSWD7XFRzrn2/+FYbRHa6P3cBV3fTxSQ0ZRD2hMzcpKSkmsS7LELJTw1FhdGS5H32jjl3aa1QmSgUjAbDsYSsFjyxP2MHs0lu5fb94ooqdF9XQ==
  • Authentication-results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=suse.com;
  • Cc: Andrew Cooper <andrew.cooper3@xxxxxxxxxx>, George Dunlap <george.dunlap@xxxxxxxxxx>, Julien Grall <julien@xxxxxxx>, Stefano Stabellini <sstabellini@xxxxxxxxxx>, Wei Liu <wl@xxxxxxx>, xen-devel@xxxxxxxxxxxxxxxxxxxx
  • Delivery-date: Thu, 16 Mar 2023 16:02:19 +0000
  • List-id: Xen developer discussion <xen-devel.lists.xenproject.org>

On 16.03.2023 15:15, Michal Orzel wrote:
> 
> 
> On 16/03/2023 12:11, Jan Beulich wrote:
>> Caution: This message originated from an External Source. Use proper caution 
>> when opening attachments, clicking links, or responding.
>>
>>
>> On 16.03.2023 11:26, Michal Orzel wrote:
>>> --- a/xen/drivers/char/console.c
>>> +++ b/xen/drivers/char/console.c
>>> @@ -490,7 +490,24 @@ static void switch_serial_input(void)
>>>      }
>>>      else
>>>      {
>>> -        console_rx++;
>>> +        unsigned int next_rx = console_rx + 1;
>>> +
>>> +        /* Skip switching serial input to non existing domains */
>>> +        while ( next_rx < max_init_domid + 1 )
>>> +        {
>>> +            struct domain *d = rcu_lock_domain_by_id(next_rx - 1);
>>> +
>>> +            if ( d )
>>> +            {
>>> +                rcu_unlock_domain(d);
>>> +                break;
>>> +            }
>>> +
>>> +            next_rx++;
>>> +        }
>>> +
>>> +        console_rx = next_rx;
>>> +
>>>          printk("*** Serial input to DOM%d", console_rx - 1);
>>>      }
>>
>> While at the first glance (when you sent it in reply to v1) it looked okay,
>> I'm afraid it really isn't: Please consider what happens when the last of
>> the DomU-s doesn't exist anymore. (You don't really check whether it still
>> exists, because the range check comes ahead of the existence one.) In that
>> case you want to move from second-to-last to Xen. I expect the entire
>> if/else construct wants to be inside the loop.
> I did this deliberately because I do not think the situation you describe is 
> possible
> (i.e. no domains at all - Xen still usable). With hardware domain in place, 
> we can e.g. destroy the domain
> which would invoke domain_kill() -> domain_destroy() that would free domain 
> struct.
> Without hwdom, the domain cannot kill/destroy itself. It can do the shutdown 
> but it will not
> destroy it (at least this is what I tested). So I do not think there can be a 
> scenario where
> there is not a single domain while Xen running and be usable.

I didn't talk about "no domain left at all", but about the case where the
domain with the highest domain ID is gone.

Jan



 


Rackspace

Lists.xenproject.org is hosted with RackSpace, monitoring our
servers 24x7x365 and backed by RackSpace's Fanatical Support®.