Re: [9fans] usb ohci question
In general, there are more ilocks than needed, out of paranoia. I don't have the code here now, but you might be right. thanks On Tue, Feb 22, 2011 at 5:42 PM, wrote: > >>But I think you found a bug. > > Ok, so maybe the first ilock/iunlock pair isn't needed? The controller > can't see the task descriptors that have been chained on to the > endpoint until the "tail" element of the endpoint descriptor is set, > so any potential interrupts during the sequence won't affect anything. > > rod > >
Re: [9fans] usb ohci question
>But I think you found a bug. Ok, so maybe the first ilock/iunlock pair isn't needed? The controller can't see the task descriptors that have been chained on to the endpoint until the "tail" element of the endpoint descriptor is set, so any potential interrupts during the sequence won't affect anything. rod
Re: [9fans] usb ohci question
Oh, sorry, I forgot that the page-in operation might require an interrupt from the disk or network controller in order to reload the page. Phil; Le 22/02/2011 16:31, Philippe Anel a écrit : Hello, A 'page-in' occurs on page fault exception, which cannot be masked. Phil; Le 22/02/2011 16:10, r...@hemiola.co.uk a écrit : I'm struggling to understand the ins and outs of the usb ohci driver (usbohci.c) and have a question (well, several). If one writes to an endpoint, then "epio" gets called. This in turn does ilock(ctrl) which disables interrupts on my single-processor machine. Then "epgettd" is called several times to allocate transfer descriptors. Each call to epgettd copies a portion from the user space buffer which was passed as a parameter to "epio". What happens here if the user space buffer is in a page which is not present? Is it possible for a page-in to happen even when interrupts are disabled by the ilock? Thanks for any insight. rod
Re: [9fans] usb ohci question
Hello, A 'page-in' occurs on page fault exception, which cannot be masked. Phil; Le 22/02/2011 16:10, r...@hemiola.co.uk a écrit : I'm struggling to understand the ins and outs of the usb ohci driver (usbohci.c) and have a question (well, several). If one writes to an endpoint, then "epio" gets called. This in turn does ilock(ctrl) which disables interrupts on my single-processor machine. Then "epgettd" is called several times to allocate transfer descriptors. Each call to epgettd copies a portion from the user space buffer which was passed as a parameter to "epio". What happens here if the user space buffer is in a page which is not present? Is it possible for a page-in to happen even when interrupts are disabled by the ilock? Thanks for any insight. rod
Re: [9fans] usb ohci question
I'll look again (just did). But I think you found a bug. On Tue, Feb 22, 2011 at 4:10 PM, wrote: > I'm struggling to understand the ins and outs of the usb ohci driver > (usbohci.c) and have a question (well, several). > > If one writes to an endpoint, then "epio" gets called. This in turn > does ilock(ctrl) which disables interrupts on my single-processor > machine. Then "epgettd" is called several times to allocate transfer > descriptors. Each call to epgettd copies a portion from the user space > buffer which was passed as a parameter to "epio". > > What happens here if the user space buffer is in a page which is not > present? Is it possible for a page-in to happen even when interrupts > are disabled by the ilock? > > Thanks for any insight. > > rod > >