The test attaches both a SCSI controller and a pcie-to-pci bridge on the same
pcie-root-port. This is incorrect since only one downstream device can be
attached to a pcie-root-port. Further, in the test scenario, there is no need
to attach a pcie-root-port to the root complex. A SCSI controller can be
attached to a pcie-to-pci bridge which in turn can be directly attached to the
root bus (peie.0). Fix the test and simplify it.
CC: mst@redhat.com
CC: imammedo@redhat.com
CC: Michael Labiuk <michael.labiuk@virtuozzo.com>
Signed-off-by: Ani Sinha <anisinha@redhat.com>
---
tests/qtest/hd-geo-test.c | 18 ++++++++----------
1 file changed, 8 insertions(+), 10 deletions(-)
diff --git a/tests/qtest/hd-geo-test.c b/tests/qtest/hd-geo-test.c
index 5aa258a2b3..d08bffad91 100644
--- a/tests/qtest/hd-geo-test.c
+++ b/tests/qtest/hd-geo-test.c
@@ -784,14 +784,12 @@ static void test_override_scsi(void)
test_override(args, "pc", expected);
}
-static void setup_pci_bridge(TestArgs *args, const char *id, const char *rootid)
+static void setup_pci_bridge(TestArgs *args, const char *id)
{
- char *root, *br;
- root = g_strdup_printf("-device pcie-root-port,id=%s", rootid);
- br = g_strdup_printf("-device pcie-pci-bridge,bus=%s,id=%s", rootid, id);
+ char *br;
+ br = g_strdup_printf("-device pcie-pci-bridge,bus=pcie.0,id=%s", id);
- args->argc = append_arg(args->argc, args->argv, ARGV_SIZE, root);
args->argc = append_arg(args->argc, args->argv, ARGV_SIZE, br);
}
@@ -811,8 +809,8 @@ static void test_override_scsi_q35(void)
add_drive_with_mbr(args, empty_mbr, 1);
add_drive_with_mbr(args, empty_mbr, 1);
add_drive_with_mbr(args, empty_mbr, 1);
- setup_pci_bridge(args, "pcie.0", "br");
- add_scsi_controller(args, "lsi53c895a", "br", 3);
+ setup_pci_bridge(args, "pcie-pci-br");
+ add_scsi_controller(args, "lsi53c895a", "pcie-pci-br", 3);
add_scsi_disk(args, 0, 0, 0, 0, 0, 10000, 120, 30);
add_scsi_disk(args, 1, 0, 0, 1, 0, 9000, 120, 30);
add_scsi_disk(args, 2, 0, 0, 2, 0, 1, 0, 0);
@@ -868,9 +866,9 @@ static void test_override_virtio_blk_q35(void)
};
add_drive_with_mbr(args, empty_mbr, 1);
add_drive_with_mbr(args, empty_mbr, 1);
- setup_pci_bridge(args, "pcie.0", "br");
- add_virtio_disk(args, 0, "br", 3, 10000, 120, 30);
- add_virtio_disk(args, 1, "br", 4, 9000, 120, 30);
+ setup_pci_bridge(args, "pcie-pci-br");
+ add_virtio_disk(args, 0, "pcie-pci-br", 3, 10000, 120, 30);
+ add_virtio_disk(args, 1, "pcie-pci-br", 4, 9000, 120, 30);
test_override(args, "q35", expected);
}
--
2.39.1
On Mon, 26 Jun 2023 18:13:05 +0530
Ani Sinha <anisinha@redhat.com> wrote:
> The test attaches both a SCSI controller and a pcie-to-pci bridge on the same
> pcie-root-port.
at slot addresses ...
> This is incorrect since only one downstream device can be
> attached to a pcie-root-port.
not true in case of multifunction
perhaps
s/only one downstream device/a downstream device/
s/can be attached to/can be attached to slot 0/
also point out mess with pcie.0 bus name used for as id for bridge.
> Further, in the test scenario, there is no need
> to attach a pcie-root-port to the root complex. A SCSI controller can be
> attached to a pcie-to-pci bridge which in turn can be directly attached to the
> root bus (peie.0). Fix the test and simplify it.
>
> CC: mst@redhat.com
> CC: imammedo@redhat.com
> CC: Michael Labiuk <michael.labiuk@virtuozzo.com>
>
> Signed-off-by: Ani Sinha <anisinha@redhat.com>
> ---
> tests/qtest/hd-geo-test.c | 18 ++++++++----------
> 1 file changed, 8 insertions(+), 10 deletions(-)
>
> diff --git a/tests/qtest/hd-geo-test.c b/tests/qtest/hd-geo-test.c
> index 5aa258a2b3..d08bffad91 100644
> --- a/tests/qtest/hd-geo-test.c
> +++ b/tests/qtest/hd-geo-test.c
> @@ -784,14 +784,12 @@ static void test_override_scsi(void)
> test_override(args, "pc", expected);
> }
>
> -static void setup_pci_bridge(TestArgs *args, const char *id, const char *rootid)
> +static void setup_pci_bridge(TestArgs *args, const char *id)
> {
>
> - char *root, *br;
> - root = g_strdup_printf("-device pcie-root-port,id=%s", rootid);
> - br = g_strdup_printf("-device pcie-pci-bridge,bus=%s,id=%s", rootid, id);
> + char *br;
> + br = g_strdup_printf("-device pcie-pci-bridge,bus=pcie.0,id=%s", id);
>
> - args->argc = append_arg(args->argc, args->argv, ARGV_SIZE, root);
> args->argc = append_arg(args->argc, args->argv, ARGV_SIZE, br);
> }
>
> @@ -811,8 +809,8 @@ static void test_override_scsi_q35(void)
> add_drive_with_mbr(args, empty_mbr, 1);
> add_drive_with_mbr(args, empty_mbr, 1);
> add_drive_with_mbr(args, empty_mbr, 1);
> - setup_pci_bridge(args, "pcie.0", "br");
> - add_scsi_controller(args, "lsi53c895a", "br", 3);
> + setup_pci_bridge(args, "pcie-pci-br");
> + add_scsi_controller(args, "lsi53c895a", "pcie-pci-br", 3);
> add_scsi_disk(args, 0, 0, 0, 0, 0, 10000, 120, 30);
> add_scsi_disk(args, 1, 0, 0, 1, 0, 9000, 120, 30);
> add_scsi_disk(args, 2, 0, 0, 2, 0, 1, 0, 0);
> @@ -868,9 +866,9 @@ static void test_override_virtio_blk_q35(void)
> };
> add_drive_with_mbr(args, empty_mbr, 1);
> add_drive_with_mbr(args, empty_mbr, 1);
> - setup_pci_bridge(args, "pcie.0", "br");
> - add_virtio_disk(args, 0, "br", 3, 10000, 120, 30);
> - add_virtio_disk(args, 1, "br", 4, 9000, 120, 30);
> + setup_pci_bridge(args, "pcie-pci-br");
> + add_virtio_disk(args, 0, "pcie-pci-br", 3, 10000, 120, 30);
> + add_virtio_disk(args, 1, "pcie-pci-br", 4, 9000, 120, 30);
> test_override(args, "q35", expected);
> }
>
On Mon, Jun 26, 2023 at 03:30:14PM +0200, Igor Mammedov wrote:
> On Mon, 26 Jun 2023 18:13:05 +0530
> Ani Sinha <anisinha@redhat.com> wrote:
>
> > The test attaches both a SCSI controller and a pcie-to-pci bridge on the same
> > pcie-root-port.
>
> at slot addresses ...
> > This is incorrect since only one downstream device can be
> > attached to a pcie-root-port.
> not true in case of multifunction
> perhaps
> s/only one downstream device/a downstream device/
> s/can be attached to/can be attached to slot 0/
The limitation is that devices can only be attached to slot 0.
BTW once we have ARI all these checks will have to be rewritten.
> also point out mess with pcie.0 bus name used for as id for bridge.
>
> > Further, in the test scenario, there is no need
> > to attach a pcie-root-port to the root complex. A SCSI controller can be
> > attached to a pcie-to-pci bridge which in turn can be directly attached to the
> > root bus (peie.0). Fix the test and simplify it.
> >
> > CC: mst@redhat.com
> > CC: imammedo@redhat.com
> > CC: Michael Labiuk <michael.labiuk@virtuozzo.com>
> >
> > Signed-off-by: Ani Sinha <anisinha@redhat.com>
> > ---
> > tests/qtest/hd-geo-test.c | 18 ++++++++----------
> > 1 file changed, 8 insertions(+), 10 deletions(-)
> >
> > diff --git a/tests/qtest/hd-geo-test.c b/tests/qtest/hd-geo-test.c
> > index 5aa258a2b3..d08bffad91 100644
> > --- a/tests/qtest/hd-geo-test.c
> > +++ b/tests/qtest/hd-geo-test.c
> > @@ -784,14 +784,12 @@ static void test_override_scsi(void)
> > test_override(args, "pc", expected);
> > }
> >
> > -static void setup_pci_bridge(TestArgs *args, const char *id, const char *rootid)
> > +static void setup_pci_bridge(TestArgs *args, const char *id)
> > {
> >
> > - char *root, *br;
> > - root = g_strdup_printf("-device pcie-root-port,id=%s", rootid);
> > - br = g_strdup_printf("-device pcie-pci-bridge,bus=%s,id=%s", rootid, id);
> > + char *br;
> > + br = g_strdup_printf("-device pcie-pci-bridge,bus=pcie.0,id=%s", id);
> >
> > - args->argc = append_arg(args->argc, args->argv, ARGV_SIZE, root);
> > args->argc = append_arg(args->argc, args->argv, ARGV_SIZE, br);
> > }
> >
> > @@ -811,8 +809,8 @@ static void test_override_scsi_q35(void)
> > add_drive_with_mbr(args, empty_mbr, 1);
> > add_drive_with_mbr(args, empty_mbr, 1);
> > add_drive_with_mbr(args, empty_mbr, 1);
> > - setup_pci_bridge(args, "pcie.0", "br");
> > - add_scsi_controller(args, "lsi53c895a", "br", 3);
> > + setup_pci_bridge(args, "pcie-pci-br");
> > + add_scsi_controller(args, "lsi53c895a", "pcie-pci-br", 3);
> > add_scsi_disk(args, 0, 0, 0, 0, 0, 10000, 120, 30);
> > add_scsi_disk(args, 1, 0, 0, 1, 0, 9000, 120, 30);
> > add_scsi_disk(args, 2, 0, 0, 2, 0, 1, 0, 0);
> > @@ -868,9 +866,9 @@ static void test_override_virtio_blk_q35(void)
> > };
> > add_drive_with_mbr(args, empty_mbr, 1);
> > add_drive_with_mbr(args, empty_mbr, 1);
> > - setup_pci_bridge(args, "pcie.0", "br");
> > - add_virtio_disk(args, 0, "br", 3, 10000, 120, 30);
> > - add_virtio_disk(args, 1, "br", 4, 9000, 120, 30);
> > + setup_pci_bridge(args, "pcie-pci-br");
> > + add_virtio_disk(args, 0, "pcie-pci-br", 3, 10000, 120, 30);
> > + add_virtio_disk(args, 1, "pcie-pci-br", 4, 9000, 120, 30);
> > test_override(args, "q35", expected);
> > }
> >
On Mon, 26 Jun 2023 09:53:40 -0400
"Michael S. Tsirkin" <mst@redhat.com> wrote:
> On Mon, Jun 26, 2023 at 03:30:14PM +0200, Igor Mammedov wrote:
> > On Mon, 26 Jun 2023 18:13:05 +0530
> > Ani Sinha <anisinha@redhat.com> wrote:
> >
> > > The test attaches both a SCSI controller and a pcie-to-pci bridge on the same
> > > pcie-root-port.
> >
> > at slot addresses ...
> > > This is incorrect since only one downstream device can be
> > > attached to a pcie-root-port.
> > not true in case of multifunction
> > perhaps
> > s/only one downstream device/a downstream device/
> > s/can be attached to/can be attached to slot 0/
>
> The limitation is that devices can only be attached to slot 0.
>
> BTW once we have ARI all these checks will have to be rewritten.
I'm under impression that we already support ARI (pcie_ari_init)
>
>
>
> > also point out mess with pcie.0 bus name used for as id for bridge.
> >
> > > Further, in the test scenario, there is no need
> > > to attach a pcie-root-port to the root complex. A SCSI controller can be
> > > attached to a pcie-to-pci bridge which in turn can be directly attached to the
> > > root bus (peie.0). Fix the test and simplify it.
> > >
> > > CC: mst@redhat.com
> > > CC: imammedo@redhat.com
> > > CC: Michael Labiuk <michael.labiuk@virtuozzo.com>
> > >
> > > Signed-off-by: Ani Sinha <anisinha@redhat.com>
> > > ---
> > > tests/qtest/hd-geo-test.c | 18 ++++++++----------
> > > 1 file changed, 8 insertions(+), 10 deletions(-)
> > >
> > > diff --git a/tests/qtest/hd-geo-test.c b/tests/qtest/hd-geo-test.c
> > > index 5aa258a2b3..d08bffad91 100644
> > > --- a/tests/qtest/hd-geo-test.c
> > > +++ b/tests/qtest/hd-geo-test.c
> > > @@ -784,14 +784,12 @@ static void test_override_scsi(void)
> > > test_override(args, "pc", expected);
> > > }
> > >
> > > -static void setup_pci_bridge(TestArgs *args, const char *id, const char *rootid)
> > > +static void setup_pci_bridge(TestArgs *args, const char *id)
> > > {
> > >
> > > - char *root, *br;
> > > - root = g_strdup_printf("-device pcie-root-port,id=%s", rootid);
> > > - br = g_strdup_printf("-device pcie-pci-bridge,bus=%s,id=%s", rootid, id);
> > > + char *br;
> > > + br = g_strdup_printf("-device pcie-pci-bridge,bus=pcie.0,id=%s", id);
> > >
> > > - args->argc = append_arg(args->argc, args->argv, ARGV_SIZE, root);
> > > args->argc = append_arg(args->argc, args->argv, ARGV_SIZE, br);
> > > }
> > >
> > > @@ -811,8 +809,8 @@ static void test_override_scsi_q35(void)
> > > add_drive_with_mbr(args, empty_mbr, 1);
> > > add_drive_with_mbr(args, empty_mbr, 1);
> > > add_drive_with_mbr(args, empty_mbr, 1);
> > > - setup_pci_bridge(args, "pcie.0", "br");
> > > - add_scsi_controller(args, "lsi53c895a", "br", 3);
> > > + setup_pci_bridge(args, "pcie-pci-br");
> > > + add_scsi_controller(args, "lsi53c895a", "pcie-pci-br", 3);
> > > add_scsi_disk(args, 0, 0, 0, 0, 0, 10000, 120, 30);
> > > add_scsi_disk(args, 1, 0, 0, 1, 0, 9000, 120, 30);
> > > add_scsi_disk(args, 2, 0, 0, 2, 0, 1, 0, 0);
> > > @@ -868,9 +866,9 @@ static void test_override_virtio_blk_q35(void)
> > > };
> > > add_drive_with_mbr(args, empty_mbr, 1);
> > > add_drive_with_mbr(args, empty_mbr, 1);
> > > - setup_pci_bridge(args, "pcie.0", "br");
> > > - add_virtio_disk(args, 0, "br", 3, 10000, 120, 30);
> > > - add_virtio_disk(args, 1, "br", 4, 9000, 120, 30);
> > > + setup_pci_bridge(args, "pcie-pci-br");
> > > + add_virtio_disk(args, 0, "pcie-pci-br", 3, 10000, 120, 30);
> > > + add_virtio_disk(args, 1, "pcie-pci-br", 4, 9000, 120, 30);
> > > test_override(args, "q35", expected);
> > > }
> > >
>
© 2016 - 2026 Red Hat, Inc.