Messages in this thread | | | Date | Fri, 11 Jun 2010 10:41:05 -0700 | From | "H. Peter Anvin" <> | Subject | Re: [RFC][PATCH 0/4] x86: ioremap() problem in X86_32 PAE |
| |
On 06/11/2010 02:17 AM, Kenji Kaneshige wrote: > > By the way, I'm wondering some change might be needed also in PCI side. > For example, current PCI subsystem disables 64-bit BAR with address > higher than 32-bit assigned if sizeof(resource_size_t) is less than 8. > But it doesn't care the case sizeof(resource_size_t) is equal to 8 on > the system that cannot handle whole 64-bit physical address, like > X86_32 PAE. In relation to this, my system is doing the following > interesting behavior. > > - On x86_32 without PAE, ioatdma works because 64-bit BAR is once > cleared and then lower address is assigned again. > > - On x86_32 with PAE, ioatdma doesn' work even with my patch set. > Without my patch, kernel hangup or panic happens. With my patch, > ioatdma driver fails to initialize the device because ioremap() > returns NULL. > > Anyway, I think ioremap() problem needs to be fixed first. >
We had a patch in for a while to cap the physical address space to the number of bits supported by the CPU. It got removed because it caused a regression, which turned out to be because it exposed another bug (which has since been fixed) -- I have been meaning to put it back in.
-hpa
| |