Linux PCI subsystem development
 help / color / mirror / Atom feed
From: Precific <precification@posteo.de>
To: Alex Williamson <alex.williamson@redhat.com>
Cc: Peter Xu <peterx@redhat.com>,
	Athul Krishna <athul.krishna.kr@protonmail.com>,
	Bjorn Helgaas <helgaas@kernel.org>,
	"kvm@vger.kernel.org" <kvm@vger.kernel.org>,
	Linux PCI <linux-pci@vger.kernel.org>,
	"regressions@lists.linux.dev" <regressions@lists.linux.dev>
Subject: Re: [bugzilla-daemon@kernel.org: [Bug 219619] New: vfio-pci: screen graphics artifacts after 6.12 kernel upgrade]
Date: Tue, 31 Dec 2024 15:44:13 +0000	[thread overview]
Message-ID: <bba03a61-9504-40d0-9b2c-115b4f70e8ca@posteo.de> (raw)
In-Reply-To: <20241230182737.154cd33a.alex.williamson@redhat.com>



On 31.12.24 02:27, Alex Williamson wrote:
> On Mon, 30 Dec 2024 21:03:30 +0000
> Precific <precification@posteo.de> wrote:
> 
>> In my case, commenting out (1) the huge_fault callback assignment from
>> f9e54c3a2f5b suffices for GPU initialization in the guest, even if (2)
>> the 'install everything' loop is still removed.
>>
>> I have uploaded host kernel logs with vfio-pci-core debugging enabled
>> (one log with stock sources, one large log with vfio-pci-core's
>> huge_fault handler patched out):
>> https://bugzilla.kernel.org/show_bug.cgi?id=219619#c1
>> I'm not sure if the logs of handled faults say much about what
>> specifically goes wrong here, though.
>>
>> The dmesg portion attached to my mail is of a Linux guest failing to
>> initialize the GPU (BAR 0 size 16GB with 12GB of VRAM).
> 
> Thanks for the logs with debugging enabled.  Would you be able to
> repeat the test with QEMU 9.2?  There's a patch in there that aligns
> the mmaps, which should avoid mixing 1G and 2MB pages for huge faults.
> With this you should only see order 18 mappings for BAR0.
> 
> Also, in a different direction, it would be interesting to run tests
> disabling 1G huge pages and 2MB huge pages independently.  The
> following would disable 1G pages:
> 
> diff --git a/drivers/vfio/pci/vfio_pci_core.c b/drivers/vfio/pci/vfio_pci_core.c
> index 1ab58da9f38a..dd3b748f9d33 100644
> --- a/drivers/vfio/pci/vfio_pci_core.c
> +++ b/drivers/vfio/pci/vfio_pci_core.c
> @@ -1684,7 +1684,7 @@ static vm_fault_t vfio_pci_mmap_huge_fault(struct vm_fault *vmf,
>   							     PFN_DEV), false);
>   		break;
>   #endif
> -#ifdef CONFIG_ARCH_SUPPORTS_PUD_PFNMAP
> +#if 0
>   	case PUD_ORDER:
>   		ret = vmf_insert_pfn_pud(vmf, __pfn_to_pfn_t(pfn + pgoff,
>   							     PFN_DEV), false);
> 
> This should disable 2M pages:
> 
> diff --git a/drivers/vfio/pci/vfio_pci_core.c b/drivers/vfio/pci/vfio_pci_core.c
> index 1ab58da9f38a..d7dd359e19bb 100644
> --- a/drivers/vfio/pci/vfio_pci_core.c
> +++ b/drivers/vfio/pci/vfio_pci_core.c
> @@ -1678,7 +1678,7 @@ static vm_fault_t vfio_pci_mmap_huge_fault(struct vm_fault *vmf,
>   	case 0:
>   		ret = vmf_insert_pfn(vma, vmf->address, pfn + pgoff);
>   		break;
> -#ifdef CONFIG_ARCH_SUPPORTS_PMD_PFNMAP
> +#if 0
>   	case PMD_ORDER:
>   		ret = vmf_insert_pfn_pmd(vmf, __pfn_to_pfn_t(pfn + pgoff,
>   							     PFN_DEV), false);
> 
> And applying both together should be functionally equivalent to
> pre-v6.12.  Thanks,
> 
> Alex
> 

Logs with QEMU 9.1.2 vs. 9.2.0, all huge_page sizes/1G only/2M only: 
https://bugzilla.kernel.org/show_bug.cgi?id=219619#c3

You're right, I was still using QEMU 9.1.2. With 9.2.0, the 
passed-through GPU works fine indeed with both Linux and Windows guests.

The huge_fault calls are aligned nicely with QEMU 9.2.0. Only the lower 
16MB of BAR 0 see repeated calls at 2M/4K page sizes but no misalignment.
The QEMU 9.1.2 'stock' log shows a misalignment with 1G faults (order 
18), e.g., huge_faulting 0x40000 pages at page offset 0 and later 
0x4000. I'm not sure if that is a problem, or if the offsets are simply 
masked off to the correct alignment.
QEMU 9.1.2 also works with 1G pages disabled. Perhaps coincidentally, 
the offsets are aligned properly for order 9 (0x200 'page offset' 
increments) from what I've seen.

Thanks,
Precific

  reply	other threads:[~2024-12-31 15:44 UTC|newest]

Thread overview: 14+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2024-12-22 22:36 [bugzilla-daemon@kernel.org: [Bug 219619] New: vfio-pci: screen graphics artifacts after 6.12 kernel upgrade] Bjorn Helgaas
2024-12-23  7:37 ` Athul Krishna
2024-12-23 16:59   ` Peter Xu
2024-12-23 18:15     ` Alex Williamson
2024-12-24 18:06       ` Athul Krishna
2024-12-30 21:03     ` Precific
2024-12-31  1:27       ` Alex Williamson
2024-12-31 15:44         ` Precific [this message]
2024-12-31 16:07           ` Alex Williamson
2025-01-01  3:10             ` Precific
2025-01-02 16:39             ` Peter Xu
2025-01-02 17:04               ` Alex Williamson
2025-01-02 18:38                 ` Alex Williamson
2025-02-25 17:59                   ` Bjorn Helgaas

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=bba03a61-9504-40d0-9b2c-115b4f70e8ca@posteo.de \
    --to=precification@posteo.de \
    --cc=alex.williamson@redhat.com \
    --cc=athul.krishna.kr@protonmail.com \
    --cc=helgaas@kernel.org \
    --cc=kvm@vger.kernel.org \
    --cc=linux-pci@vger.kernel.org \
    --cc=peterx@redhat.com \
    --cc=regressions@lists.linux.dev \
    /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