RE: Memory allocation modifications in ibm_newemac driver AND sil24 driver

2010-09-02 Thread Jonathan Haws
>> Can anyone explain to me why I would be getting this error in the >> first place? Why is it failing to allocate a page when there are >> pages available? That does not make any sense to me. > order:1 > It's failing to allocate -two- pages. Good point. However, why is it failing? According

RE: Memory allocation modifications in ibm_newemac driver

2010-09-01 Thread Jonathan Haws
Apparently I spoke too soon - sorry about that. I am still getting the error when I try to write to disk and receive on the network at the same time. Here is the output: blastee: page allocation failure. order:1, mode:0x4020 Call Trace: [ccea9a40] [c0006ef0] show_stack+0x44/0x16c (unreliable)

RE: Memory allocation modifications in ibm_newemac driver

2010-09-01 Thread Jonathan Haws
Okay, I think I have all the issues worked out and can now send and receive any size packet without a hiccup. I have tested this in our system setup as well with data being sent out to disk and did not see any problems there either (since it only ever allocates a single page, never more). Is t

RE: Memory allocation modifications in ibm_newemac driver

2010-09-01 Thread Jonathan Haws
I found out what was causing the crash, but still am not there and could use some direction: What was happening was that I was not allocating a new SKB to replace the one in the ring that was being passed up the stack. I have remedied that and am now having another issue: Once the ring index

RE: Disable Caching for mmap() address

2009-11-12 Thread Jonathan Haws
> On Mon, 2009-11-09 at 16:21 -0700, Jonathan Haws wrote: > > All, > > > > I would like to disable caching for an address that was returned > from a call to mmap(). I am using this address for DMA operations > in user space and want to make sure that the data cache is t

Invalidate Data Cache from User Space

2009-11-09 Thread Jonathan Haws
All, I have a routine to invalidate the data cache from user space (since I do not believe there is a standard routine I can use outside of kernel space??). Here is the code: .text; .globl cacheInvalidate405; cacheInvalidate405: /* * r3 = Data cache * r4

Disable Caching for mmap() address

2009-11-09 Thread Jonathan Haws
All, I would like to disable caching for an address that was returned from a call to mmap(). I am using this address for DMA operations in user space and want to make sure that the data cache is turned off for that buffer. The way this works is the driver simply takes an address I provide and

Interrupts not Firing on PPC405EX

2009-11-05 Thread Jonathan Haws
All, I am having some troubles getting interrupts to fire from my kernel module. I have connected the ISR with a call to request_irq() and have configured my device to generate interrupts. However, my ISR is called once when I connect the interrupt for the first time. After that it never is

RE: DMA to User-Space

2009-11-04 Thread Jonathan Haws
> 1. I open /dev/mem and get a file descriptor > 2. I use mmap to reserve some physical addresses for my buffers in > user space. > 3. I give that address to the FPGA for DMA use. > 4. When I get the FPGA interrupt, I invalidate the data cache and > write the data to disk > > Does that sound like

RE: DMA to User-Space

2009-11-04 Thread Jonathan Haws
> Jonathan Haws wrote: > > All, > > > > I have what may be an unconventional question: > > > > Our application consists of data being captured by an FPGA, > processed, and transferred to SDRAM. I simply give the FPGA an > address of where I want it stored

DMA to User-Space

2009-11-03 Thread Jonathan Haws
All, I have what may be an unconventional question: Our application consists of data being captured by an FPGA, processed, and transferred to SDRAM. I simply give the FPGA an address of where I want it stored in SDRAM and it simply DMAs the data over and interrupts me when finished. I then t

RE: Accessing flash directly from User Space [SOLVED]

2009-10-30 Thread Jonathan Haws
> Michael Buesch wrote: > > Yes, I think the barrier is wrong. > > Please try with > > > > #define mb()__asm__ __volatile__("eieio\n sync\n" : : : > "memory") > > > For uncached memory, eieio should be enough. I tried eieio alone and it did not work. It needed the above command to take

RE: Accessing flash directly from User Space [SOLVED]

2009-10-30 Thread Jonathan Haws
> On Friday 30 October 2009 16:08:55 Alessandro Rubini wrote: > > > asm("eieio; sync"); > > > > Hmm... > > : : : "memory" > > > > And, doesn't ";" start a comment in assembly? (no, not on powerpc > it seems) > > Yes, I think the barrier is wrong. > Please try with > > #define mb() __asm__ __

RE: Accessing flash directly from User Space [SOLVED]

2009-10-30 Thread Jonathan Haws
> On Friday 30 October 2009 15:50:22 Jonathan Haws wrote: > > > I suspect that the msync() was merely serving as a very > heavyweight > > > memory barrier. > > > > I did try hacking the mb() calls from the kernel source to use > them in user space, but they

RE: Accessing flash directly from User Space [SOLVED]

2009-10-30 Thread Jonathan Haws
> On Thu, Oct 29, 2009 at 10:00:28AM +0100, Joakim Tjernlund wrote: > > > I have found the problem. It occurred to me in the shower (okay > not really, > > > but most good ideas happen there). > > > > > > What was happening is that I was in fact able to write to the > correct > > > registers. How

RE: Accessing flash directly from User Space

2009-10-29 Thread Jonathan Haws
> Looking through our notes and talking with the engineer > who was performing the tests, it was exactly that - MTD was waiting > for a signal that was produced differently than the hardware > ready signal. By simply polling the flash until the hardware > ready signal toggled we were able to get

RE: Accessing flash directly from User Space [SOLVED]

2009-10-29 Thread Jonathan Haws
> > > Anyway, to make a long story short, I inserted an msync() after > each > > > assignment to the flash. This resolved my problem and I can now > program my flash. > > > > Ouch, this was news to me too. Calling msync() after every write > kills performance. > > We use mmap(/dev/mem) to access H

RE: Accessing flash directly from User Space [SOLVED]

2009-10-29 Thread Jonathan Haws
> Does O_DIRECT help? (you may need to define _GNU_SOURCE before > #include) Nope, O_DIRECT did not help - in fact it caused the application to crash. Why that is I am not sure, but it crashed. ___ Linuxppc-dev mailing list Linuxppc-dev@lists.ozlabs.o

RE: Accessing flash directly from User Space

2009-10-29 Thread Jonathan Haws
> On Tue, Oct 27, 2009 at 04:52:40PM -0600, Jonathan Haws wrote: > > > Will the device respond to 0x1234 being written at offset zero? > You > > > generally have to poke these things pretty specifically in order > to > > > get > > > them to go into

RE: Accessing flash directly from User Space [SOLVED]

2009-10-28 Thread Jonathan Haws
> > On Tue, Oct 27, 2009 at 04:24:53PM -0600, Jonathan Haws wrote: > > >> >>> How can I get that pointer? Unfortunately I cannot simply > > use > > >> the > > >> >>> > > >> >> address of the flash. Is there

RE: Accessing flash directly from User Space

2009-10-28 Thread Jonathan Haws
> On Tue, 2009-10-27 at 16:52 -0600, Jonathan Haws wrote: > > > Jonathan Haws wrote: > > > > I had thought about using MTD, but decided against it because > with > > > > previous benchmarking that we did with MTD and our custom > driver, > > > we

RE: Accessing flash directly from User Space

2009-10-28 Thread Jonathan Haws
> On Tue, Oct 27, 2009 at 04:24:53PM -0600, Jonathan Haws wrote: > >> >>> How can I get that pointer? Unfortunately I cannot simply > use > >> the > >> >>> > >> >> address of the flash. Is there some magical function call

RE: Accessing flash directly from User Space

2009-10-27 Thread Jonathan Haws
> Jonathan Haws wrote: > >>> flash[0] = 0x1234; > >>> msync(flash, NOR_FLASH_SIZE, MS_SYNC | MS_INVALIDATE); > >>> printf("flash[0] = %#04x\n", flash[0]); > >>> > >>> That prints flash[0] = 0x7f45. I have verif

RE: Accessing flash directly from User Space

2009-10-27 Thread Jonathan Haws
> > Okay, I now have access to the flash memory, however when I write > to it the writes do not take. I have tried calling msync() on the > mapping to no avail. I have opened the fd with O_SYNC, but cannot > get things to work right. > > > > Here are the calls: > > > > int fd = open("/dev/mem

RE: Accessing flash directly from User Space

2009-10-27 Thread Jonathan Haws
> > Okay, I now have access to the flash memory, however when I write > to > > it the writes do not take. > > > > (PROT_READ | PROT_WRITE), MAP_PRIVATE, fd, > > MAP_SHARED. Bill told you. With MAP_PRIVATE you write to a local > in-ram copy of the data, not to the original on

RE: Accessing flash directly from User Space

2009-10-27 Thread Jonathan Haws
> >>> How can I get that pointer? Unfortunately I cannot simply use > the > >>> > >> address of the flash. Is there some magical function call that > >> gives me access to that portion of the memory space? > >> > >> $ man 2 mmap > >> > >> You want MAP_SHARED and O_SYNC. > >> > > > > > > To use th

RE: Accessing flash directly from User Space

2009-10-27 Thread Jonathan Haws
> Jonathan Haws wrote: > >>> How can I get that pointer? Unfortunately I cannot simply use > the > >>> > >> address of the flash. Is there some magical function call that > >> gives me access to that portion of the memory space? > >> &

RE: Accessing flash directly from User Space

2009-10-27 Thread Jonathan Haws
> > How can I get that pointer? Unfortunately I cannot simply use the > address of the flash. Is there some magical function call that > gives me access to that portion of the memory space? > > > > $ man 2 mmap > > You want MAP_SHARED and O_SYNC. To use that I need to have a file descriptor t

Accessing flash directly from User Space

2009-10-27 Thread Jonathan Haws
I know this is probably a really dumb question, but a wise man once said that the only stupid question is the one that is not asked. So, I have written a flash driver in VxWorks that simply addresses the flash directly and handles all the hardware accesses just fine. I am porting that to Linux

RE: Network Stack SKB Reallocation

2009-10-27 Thread Jonathan Haws
ld love to be able to use a 9000 byte MTU without getting out of memory errors simply due to fragmentation. HTH, Jonathan > > -Original Message- > From: linuxppc-dev-bounces+john.p.price=l-3com@lists.ozlabs.org > [mailto:linuxppc-dev-bounces+john.p.price=l- > 3com@lis

RE: Network Stack SKB Reallocation

2009-10-26 Thread Jonathan Haws
October 2009 19:43:00 Jonathan Haws wrote: > > Quick question about the network stack in general: > > > > Does the stack itself release an SKB allocated by the device > driver back to the heap upstream, or does it require that the device > driver handle that? >

Network Stack SKB Reallocation

2009-10-26 Thread Jonathan Haws
Quick question about the network stack in general: Does the stack itself release an SKB allocated by the device driver back to the heap upstream, or does it require that the device driver handle that? Thanks! Jonathan ___ Linuxppc-dev mailing list L

Jumbo Frame bug in ibm_newemac driver (was Jumbo Frames, sil24 SATA driver, and kswapd0 page allocation failures)

2009-10-26 Thread Jonathan Haws
Okay, I need to revisit this issue. I have had my time taken away for other things the past couple of months, but I am now back at this network issue. Here is what I have done: 1. I modified the ibm_newemac driver to follow scatter-gather chains on the RX path. The idea was to setup the drive

RE: Page map BUG on program exit

2009-10-23 Thread Jonathan Haws
(34113). - Jake Magee On Thu, Oct 22, 2009 at 3:57 PM, Jonathan Haws mailto:jonathan.h...@sdl.usu.edu>> wrote: All, I am using a 405EX CPU on a custom board. The layout and hardware is very similar to the AMCC Kilauea board. Here is the output of uname -a: Linux (none) 2.6.30.3-wolverine

Page map BUG on program exit

2009-10-22 Thread Jonathan Haws
All, I am using a 405EX CPU on a custom board. The layout and hardware is very similar to the AMCC Kilauea board. Here is the output of uname -a: Linux (none) 2.6.30.3-wolverine-dirty #3 PREEMPT Thu Sep 10 11:41:37 MDT 2009 ppc unknown I am getting the following BUG output when my program ex

RE: Jumbo Frames, sil24 SATA driver, and kswapd0 page allocation failures

2009-08-18 Thread Jonathan Haws
> If the hardware supports it, the best way to deal with it is to set > up > the driver so that it only ever deals in single pages. I am working on fixing the driver to support NETIF_F_SG and have changed how it receives packets to follow how the e1000 driver does it. Here is where I am at: W

Jumbo Frames, sil24 SATA driver, and kswapd0 page allocation failures

2009-08-12 Thread Jonathan Haws
All, I am having some issues with my target and was hoping that someone could lend a hand. I am using an AMCC 405EX (Kilauea) board running Linux kernel 2.6.31. Here is the problem. I have some code that receives jumbo frames via the EMAC, sticks the data in a buffer, and writes the data out

Jumbo Frames, sil24 SATA driver, and kswapd0 page allocation failures

2009-08-12 Thread Jonathan Haws
All, I am having some issues with my target and was hoping that someone could lend a hand. I am using an AMCC 405EX (Kilauea) board running Linux kernel 2.6.31. Here is the problem. I have some code that receives jumbo frames via the EMAC, sticks the data in a buffer, and writes the data out