On 2025-04-24 06:48, Roger Pau Monné wrote:
On Thu, Apr 24, 2025 at 12:15:17PM +0200, Marek Marczykowski-Górecki wrote:
On Thu, Apr 24, 2025 at 09:59:00AM +0200, Roger Pau Monné wrote:
On Wed, Apr 23, 2025 at 04:51:16PM -0700, Lira, Victor M wrote:
[    4.570354] Intel(R) 2.5G Ethernet Linux Driver

[    4.579535] Copyright(c) 2018 Intel Corporation.

[    4.588898] sky2: driver version 1.30

(XEN) [   21.644361] d0v3 unable to fixup memory read from 0xfe91000c size 4: -1

This fault is unexpected, according to the identity mappings done at
domain build time:

d0: identity mappings for IOMMU:
  [00000000a0, 00000000ff] RW
  [0000009bff, 0000009fff] RW
  [00000cabc9, 00000cc14c] RW
  [00000cc389, 00000cc389] RW
  [00000cc70a, 00000cd1fe] RW
  [00000ce000, 00000cffff] RW
  [00000fd000, 00000fd2ff] RW

The page at 0xfe910 should be covered by the last range above.  I
think we have a bug somewhere that unexpectedly unmaps that address.

You sure? 0xfe910 is outside of [00000fd000, 00000fd2ff].

Oh, did and off-by-one when copying, it should have been:

d0: identity mappings for IOMMU:
  [00000000a0, 00000000ff] RW
  [0000009bff, 0000009fff] RW
  [00000cabc9, 00000cc14c] RW
  [00000cc389, 00000cc389] RW
  [00000cc70a, 00000cd1fe] RW   
  [00000ce000, 00000cffff] RW
  [00000fd000, 00000fd2ff] RW
  [00000fd304, 00000febff] RW

Where 0xfe910 is covered by the last range.

This looks like it's okay. You think the somehow the device ranges are unmapped?

I thought the immediate issue is that the e820 marks these addresses reserved. That leads to pci_check_bars()->is_memory_hole() returning false. Stefano's original patch just returned true for non-RAM memory regions and the device worked. That would leave bar->mem rangeset empty, IIUC. Not sure how that would remove mappings though.

That also changes the setting of bar->enabled, but I don't immediately see how that affects mappings.

Regards,
Jason

Reply via email to