On Thu, 18 Jan 2024 at 06:49, Kai <kai.k...@windriver.com> wrote:
>
> On 1/18/24 01:31, Peter Maydell wrote:
> > (cc'd the people listed for this file in MAINTAINERS)
> >
> > On Tue, 9 Jan 2024 at 13:53, Kai Kang <kai.k...@windriver.com> wrote:
> >> When this section of source codes were added via commit:
> >>
> >> * 02e2da45c4 Add common BusState
> >>
> >> it added devices to bus with LIST_INSERT_HEAD() which operated on the
> >> single direction list. It didn't have something like LIST_INSERT_TAIL()
> >> at that time and kept that way when turned to QTAILQ.
> >>
> >> Then it causes the fist device in qemu command line inserted at the end
> >> of the bus child link list. And when realize them, the first device will
> >> be the last one to be realized.
> >>
> >> Replace QTAILQ_INSERT_HEAD_RCU() with QTAILQ_INSERT_TAIL_RCU() to make
> >> sure that devices are added to bus with the sequence in the command
> >> line.
> > What are the problems being caused by the the list items being added
> > in reverse order? Your commit message doesn't say what specific
> > bug or problem it's trying to fix.
>
> The problem I met was just as I asked for for help in the maillist on
> Dec 18, 2023.
>
> The indexes of serial isa devices changes with the commit dcdbfaafe90a
> since qemu 6.2.0.
> Before the commit, it creates devices literally with "1" & "2":
>
> @@ -1252,8 +1222,6 @@ static void build_isa_devices_aml(Aml *table)
>           aml_append(scope, build_fdc_device_aml(fdc));
>       }
>       aml_append(scope, build_lpt_device_aml());
> -    build_com_device_aml(scope, 1);
> -    build_com_device_aml(scope, 2);
>
> After apply the commit, it uses the 'aml builder' way and the devices
> are handled in reverse way.
> Then the indexes are reversed. It affects guest os such as freebsd. When
> run `pstat -t` on freebsd
> with qemu, the sequence of the output is not right.
>
> root@freebsd:~ # pstat -t
>        LINE   INQ  CAN  LIN  LOW  OUTQ  USE  LOW   COL  SESS  PGID STATE
>       ttyu2     0    0    0    0     0    0    0     0     0     0 IC
>       ttyu3     0    0    0    0     0    0    0     0     0     0 IC
>       ttyu1     0    0    0    0     0    0    0     0     0     0 IC
>       ttyu0  1920    0    0  192  1984    0  199     0   664   668 ICOi
>
> It is expected with ascend order which keeps the same behavior with
> older version qemu.

Thanks. This seems like something that should be fixed in
the AML related code, not here.

-- PMM

Reply via email to