Message ID | 20230626124306.4572-5-anisinha@redhat.com |
---|---|
State | New |
Headers | show |
Series | test and QEMU fixes to ensure proper PCIE device usage | expand |
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); > > > } > > > >
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); }
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(-)