Makes sense, likely uint32_t is used somewhere in size computations,
and we silently overflow.
We never tested so huge PCI regions, I think. Assert is likely bogus,
and just manifest we compute
addresses wrong somewhere, and things go wrong later on.
If you could figure out where it happens - guess VBox devs would
accept your change.
Generally ICH9 code shall be easier to understand and modify, although
problem could be in generic PDM code.
Nikolay
On 04/24/2013 05:47 PM, José Massada wrote:
I managed to get it to call my callbacks.
Calling PDMDevHlpMMIORegister with the phys address and the full size
does not work. By calling PDMDevHlpMMIORegister with smaller sizes
(and the correct phys address) it works.
Calling PDMDevHlpMMIORegister with phys addr 0x40000000 and
size 0x20000000 fails.
Calling PDMDevHlpMMIORegister 4 times with phys addr
0x40000000, 0x48000000, 0x50000000 and 0x58000000, and size 0x8000000
works.
Jose
On Wed, Apr 24, 2013 at 10:30 AM, José Massada <[email protected]
<mailto:[email protected]>> wrote:
Not sure if relevant but I got the following errors on the log
(the machine still loads) when using the ICH9 chipset:
00:00:11.500658 VMSetError:
/home/vbox/vbox-4.2.10/src/VBox/VMM/VMMR3/PGMPhys.cpp(4502) int
pgmPhysFreePage(VM*, GMMFREEPAGESREQ*, uint32_t*, PGMPAGE*,
RTGCPHYS); rc=VERR_PGM_PHYS_NOT_RAM
00:00:11.500676 VMSetError: GCPhys=0000000020001000 type=6
00:00:11.500723 AssertLogRel
/home/vbox/vbox-4.2.10/src/VBox/VMM/VMMR3/PGMPhys.cpp(911) int
pgmR3PhysFreePageRange(VM*, PGMRAMRANGE*, RTGCPHYS, RTGCPHYS,
uint8_t): RT_SUCCESS_NP(rc)
00:00:11.501156 VERR_PGM_PHYS_NOT_RAM (-1639) - Trying to free a
page that isn't RAM.
00:00:11.581464 AssertLogRel
/home/vbox/vbox-4.2.10/src/VBox/VMM/VMMR3/PGMPhys.cpp(2248) int
PGMR3PhysMMIORegister(VM*, RTGCPHYS, RTGCPHYS, int (*)(VM*,
RTGCPHYS, void*, void*, size_t, PGMACCESSTYPE, void*), void*,
RTHCUINTPTR, RTR0PTR, RTRCPTR, RTRCPTR, const char*):
RT_SUCCESS_NP(rc)
00:00:11.581495 cbRamRange=2097280
And when using PIIX3, I only get this next one:
00:00:11.926143 AssertLogRel
/home/vbox/vbox-4.2.10/src/VBox/VMM/VMMR3/PGMPhys.cpp(2248) int
PGMR3PhysMMIORegister(VM*, RTGCPHYS, RTGCPHYS, int (*)(VM*,
RTGCPHYS, void*, void*, size_t, PGMACCESSTYPE, void*), void*,
RTHCUINTPTR, RTR0PTR, RTRCPTR, RTRCPTR, const char*):
RT_SUCCESS_NP(rc)
00:00:11.926178 cbRamRange=2097280
Jose
On Wed, Apr 24, 2013 at 8:18 AM, José Massada
<[email protected] <mailto:[email protected]>> wrote:
I tried both but lately I've been testing with ICH9. Same
behaviour.
Jose
On 24/04/2013, at 08:08, Nikolay Igotti <[email protected]
<mailto:[email protected]>> wrote:
Which chipset you are using? ICH9 generally shall be better
suited for your needs, due to recent
PCI features support.
Nikolay
23.04.2013 18:25, José Massada пишет:
Hi all,
I'm working on a PDM virtual PCI device module and I need to
have a bar size of 512MB.
This particular PCI device uses bar 0 and 1 for register
blocks (64KB each) and bar 2 for memory (this one I need to
be 512MB or even bigger).
Registering the memory bar using the MMIO2 functions fails
when the size is bigger than 256MB (hard coded limit in the
allocation function) so I tried registering using MMIO. It
seems to work but my read and write callbacks never get
called (bar 0 and 1 also use MMIO and their callbacks always
get called). I tried decreasing the bar 2 size and the
callbacks got called.
Is this even possible without modifying VBox source code?
What am I missing?
Thanks,
Jose
_______________________________________________
vbox-dev mailing list
[email protected] <mailto:[email protected]>
https://www.virtualbox.org/mailman/listinfo/vbox-dev
_______________________________________________
vbox-dev mailing list
[email protected]
https://www.virtualbox.org/mailman/listinfo/vbox-dev