[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [Qemu-devel] [PATCH v3] qdev/core: fix qbus_is_full()
From: |
Eduardo Habkost |
Subject: |
Re: [Qemu-devel] [PATCH v3] qdev/core: fix qbus_is_full() |
Date: |
Thu, 28 Feb 2019 14:17:41 -0300 |
User-agent: |
Mutt/1.10.1 (2018-07-13) |
On Mon, Dec 17, 2018 at 10:57:30AM -0500, Tony Krowiak wrote:
> The qbus_is_full(BusState *bus) function (qdev_monitor.c) compares the
> max_index
> value of the BusState structure with the max_dev value of the BusClass
> structure
> to determine whether the maximum number of children has been reached for the
> bus. The problem is, the max_index field of the BusState structure does not
> necessarily reflect the number of devices that have been plugged into
> the bus.
>
> Whenever a child device is plugged into the bus, the bus's max_index value is
> assigned to the child device and then incremented. If the child is
> subsequently
> unplugged, the value of the max_index does not change and no longer reflects
> the
> number of children.
>
> When the bus's max_index value reaches the maximum number of devices
> allowed for the bus (i.e., the max_dev field in the BusClass structure),
> attempts to plug another device will be rejected claiming that the bus is
> full -- even if the bus is actually empty.
>
> To resolve the problem, a new 'num_children' field is being added to the
> BusState structure to keep track of the number of children plugged into the
> bus. It will be incremented when a child is plugged, and decremented when a
> child is unplugged.
>
> Signed-off-by: Tony Krowiak <address@hidden>
> Reviewed-by: Pierre Morel<address@hidden>
> Reviewed-by: Halil Pasic <address@hidden>
Queued on machine-next, thanks!
--
Eduardo