On 13/07/2023 19:18, Julien Grall wrote:
On 12/07/2023 18:04, Rahul Singh wrote:
Hi Stewart,
On 12 Jul 2023, at 2:52 pm, Stewart Hildebrand
<[email protected]> wrote:
When mapping BARs for vPCI, it's valid for a BAR mfn_t start to equal
the BAR
mfn_t end (i.e. start == end) since end is inclusive. However,
pci_check_bar()
currently returns false in this case, which results in Xen not
mapping the BAR
in the guest 2nd stage page tables. In this example boot log, Linux
has mapped
the BARs in the 1st stage, but since Xen did not map them in the 2nd
stage,
Linux encounters a data abort and panics:
[ 2.593300] pci 0000:00:00.0: BAR 0: assigned [mem
0x50008000-0x50008fff]
[ 2.593682] pci 0000:00:00.0: BAR 2: assigned [mem
0x50009000-0x50009fff]
[ 2.594066] pci 0000:00:00.0: BAR 4: assigned [mem
0x5000a000-0x5000afff]
...
[ 2.810502] virtio-pci 0000:00:00.0: enabling device (0000 -> 0002)
(XEN) 0000:00:00.0: not mapping BAR [50008, 50008] invalid position
(XEN) 0000:00:00.0: not mapping BAR [50009, 50009] invalid position
(XEN) 0000:00:00.0: not mapping BAR [5000a, 5000a] invalid position
[ 2.817502] virtio-pci 0000:00:00.0: virtio_pci: leaving for
legacy driver
[ 2.817853] virtio-pci 0000:00:00.0: enabling bus mastering
(XEN) arch/arm/traps.c:1992:d0v0 HSR=0x00000093010045
pc=0xffff8000089507d4 gva=0xffff80000c46d012 gpa=0x00000050008012
[ 2.818397] Unable to handle kernel ttbr address size fault at
virtual address ffff80000c46d012
...
Adjust the end physical address e to account for the full page when
converting
from mfn, at which point s and e cannot be equal, so drop the
equality check in
the condition.
Note that adjusting e to account for the full page also increases the
accuracy
of the subsequent is_bar_valid check.
Fixes: cc80e2bab0d0 ("xen/pci: replace call to is_memory_hole to
pci_check_bar")
Signed-off-by: Stewart Hildebrand <[email protected]>
Reviewed-by: Roger Pau Monné <[email protected]>
I tested the patch on N1SDP board everything works.
Reviewed-by: Rahul Singh <[email protected]>
Tested-by: Rahul Singh <[email protected]>
Acked-by: Julien Grall <[email protected]>
And committed.
Cheers,
--
Julien Grall