Re: 83xx GPIO/EXT int in arch/powerpc/
From: Kumar Gala <hidden>
Date: 2007-06-12 13:31:12
What is more disturbing though, is that a number of operations on the powerpc arch seems significantly slower wrt the ppc arch. ioremap and iounmap being the most important one: we are using a small driver that uses one of the UPMs in combination with GPIOs for HPI (Host Port Interface) for TI DSPs. Where the loading of a DSP took only 3 seconds, it went up to over a minute on powerpc (same driver code).
I'm confused what you are comparing here, 3 seconds on arch=ppc vs over a minute on arch=powerpc?
Changing the driver to ioremap and unmap 0xe2400000 only once at driver initialisation and unloading (not really relevant on this embedded system, shame on me) instead twice for every word greatly improves the time (around one second). However, this optimisation has the same effect on ppc too :-/ Running the same application with the same modules on ppc and powerpc (transferring data from the network to an FPGA) has a 50% higher load on powerpc. The transfer is done with mapping user pages into the kernel and DMA'ing them over PCI. What all driver have in common is that there are quite some writes/reads to the IMMR configuration.
I'd expect the driver to be exactly the same (or close to it) for arch=ppc vs arch=powerpc.
Decreasing the read and writes to the LBC for HPI (0xe2400000) seems to improve the overall load. So my question would be if I need to specify a special section in the dts file for some reason; next to the U-Boot configuration that sends writes to this address through the UPMB? If not, is there any other reason that might account for these significant performance drops?
There shouldn't be, but if you are seeing this we really should figure out what's going on. What kernel is this on? What processor are you using? - k