public inbox for ltp@lists.linux.it
 help / color / mirror / Atom feed
From: Petr Vorel <pvorel@suse.cz>
To: ltp@lists.linux.it
Subject: [LTP] [PATCH 2/2] tpci: accept ENOMEM resource failure with virtio-pci
Date: Mon, 28 Jun 2021 22:24:27 +0200	[thread overview]
Message-ID: <YNov+zuL+C4JFlsJ@pevik> (raw)
In-Reply-To: <20210618130536.54806-2-krzysztof.kozlowski@canonical.com>

Hi Krzysztof,

> Assigning the memory prefetch resource to virtio-pci might fail on VM
> guests.  For example on Oracle cloud instance (describing itself as
> "Hardware name: QEMU Standard PC (i440FX + PIIX, 1996), BIOS 1.4.1
> 12/03/2020"):

>     test_pci   76  TFAIL  :  tpci.c:73: PCI bus 00 slot 20 : Test-case '12'

I'm not sure if we don't cover actual bug. Because I haven't found any issues on
virtio_pci used on VM boxes. But probably failing to assign memory is something
else than kernel bug.

> In dmesg:

>     ltp_tpci: test-case 12
>     ltp_tpci: assign resources
>     ltp_tpci: assign resource #0
>     ltp_tpci: name = 0000:00:04.0, flags = 262401, start 0xc000, end 0xc03f
>     ltp_tpci: assign resource #1
>     ltp_tpci: name = 0000:00:04.0, flags = 262656, start 0xc1010000, end 0xc1010fff
>     ltp_tpci: assign resource #2
>     ltp_tpci: name = 0000:00:04.0, flags = 0, start 0x0, end 0x0
>     ltp_tpci: assign resource #3
>     ltp_tpci: name = 0000:00:04.0, flags = 0, start 0x0, end 0x0
>     ltp_tpci: assign resource #4
>     ltp_tpci: name = 0000:00:04.0, flags = 538190348, start 0x800004000, end 0x800007fff
>     virtio-pci 0000:00:04.0: BAR 4: no space for [mem size 0x00004000 64bit pref]
>     virtio-pci 0000:00:04.0: BAR 4: failed to assign [mem size 0x00004000 64bit pref]

> Signed-off-by: Krzysztof Kozlowski <krzysztof.kozlowski@canonical.com>

> ---

> Found the failure on multiple different kernels in different cloud
> providers (Oracle, AWS, Azure):
> https://bugs.launchpad.net/ubuntu/+source/linux/+bug/1878389
> ---
>  .../device-drivers/pci/tpci_kernel/ltp_tpci.c     | 15 ++++++++++++---
>  1 file changed, 12 insertions(+), 3 deletions(-)

> diff --git a/testcases/kernel/device-drivers/pci/tpci_kernel/ltp_tpci.c b/testcases/kernel/device-drivers/pci/tpci_kernel/ltp_tpci.c
> index f2d4a4ba497c..41462d4ead6d 100644
> --- a/testcases/kernel/device-drivers/pci/tpci_kernel/ltp_tpci.c
> +++ b/testcases/kernel/device-drivers/pci/tpci_kernel/ltp_tpci.c
> @@ -108,8 +108,9 @@ static int probe_pci_dev(unsigned int bus, unsigned int slot)
>  	if (!dev || !dev->driver)
>  		return -ENODEV;

> -	prk_info("found pci_dev '%s', bus %u, devfn %u",
> -		pci_name(dev), bus, slot);
> +	prk_info("found pci_dev '%s', driver '%s', bus %u, devfn %u",
> +		pci_name(dev), (dev->driver) ? dev->driver->name : "",
> +		bus, slot);

>  	ltp_pci.dev = dev;
>  	ltp_pci.bus = dev->bus;
> @@ -444,7 +445,15 @@ static int test_assign_resources(void)
>  			r->flags & IORESOURCE_PREFETCH) {
>  			ret = pci_assign_resource(dev, i);
>  			prk_info("assign resource to '%d', ret '%d'", i, ret);
> -			rc |= (ret < 0 && ret != -EBUSY) ? TFAIL : TPASS;
> +			if (dev->driver && !strncmp(dev->driver->name, "virtio-pci",
> +						    strlen("virtio-pci"))) {
> +				if (ret < 0 && ret != -EBUSY && ret != -ENOMEM)
> +					rc |= TFAIL;
> +				else

Shouldn't ENOMEM/EBUSY result to TCONF or TBROK?

https://github.com/linux-test-project/ltp/wiki/C-Test-API#12-basic-test-interface

Kind regards,
Petr

> +					rc |= TPASS;
> +			} else {
> +				rc |= (ret < 0 && ret != -EBUSY) ? TFAIL : TPASS;
> +			}
>  		}
>  	}

  reply	other threads:[~2021-06-28 20:24 UTC|newest]

Thread overview: 6+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2021-06-18 13:05 [LTP] [PATCH 1/2] tpci: fix NULL pointer dereference on wrong test invocation Krzysztof Kozlowski
2021-06-18 13:05 ` [LTP] [PATCH 2/2] tpci: accept ENOMEM resource failure with virtio-pci Krzysztof Kozlowski
2021-06-28 20:24   ` Petr Vorel [this message]
2021-07-26 11:43     ` Petr Vorel
2021-06-24 19:32 ` [LTP] [PATCH 1/2] tpci: fix NULL pointer dereference on wrong test invocation Krzysztof Kozlowski
2021-06-28 20:00   ` Petr Vorel

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=YNov+zuL+C4JFlsJ@pevik \
    --to=pvorel@suse.cz \
    --cc=ltp@lists.linux.it \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox