Damien Zammit, le lun. 07 sept. 2020 11:16:13 +1000, a ecrit: > On 6/9/20 11:17 pm, Samuel Thibault wrote: > > One issue remains, however: Xorg's vesa driver produces > > > > [1669282.478] (II) VESA(0): initializing int10 > > [1669282.478] (EE) VESA(0): Cannot read int vect > > > > which comes from hw/xfree86/int10/generic.c xf86ExtendedInitInt10: > > > > if (!sysMem) > > pci_device_map_legacy(pInt->dev, V_BIOS, BIOS_SIZE + SYS_BIOS - > > V_BIOS, > > PCI_DEV_MAP_FLAG_WRITABLE, &sysMem); > > It appears that it's trying to map more than BIOS_SIZE, which probably fails > under the current scheme. > Perhaps we need to make overreads return zeroes instead of failure?
No, that part of the code works fine. Looking closer, I noticed that in if (!readIntVec(pInt->dev, base, LOW_PAGE_SIZE)) { LOW_PAGE_SIZE is 0x600, that's what is passed as len in if (pci_device_map_legacy(dev, 0, len, 0, &map)) So I guess that the problem is that gnu's version of map_dev_mem is missing rounding up the len like mmap does. Samuel