All of lore.kernel.org
 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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.