On Tue, Jul 15, 2025 at 03:41:16PM -0000, Michael van Elst wrote:
> >I understand kprintf operates at IPL_HIGH, while the USB subssytem
> >processes I/O at IPL_SOFTCLOCK. Does that mean I just cannot rely 
> >on USB for console output?
> 
> It can only work if USB is used in polling mode, which usually also means
> that you must not use that USB controller for anything else.

I had great success with a kernel thread that takes care of the
actual USB output, while being fed by cn_tab->cn_putc() through a 
ring buffer. That works well for displaying kernel messages. 

cn_tab->cn_getc() is another beast. It is called at splhigh and
wants a char immediatly. I have red the polling code used by ukbd.c
and uhidev.c I understand it needs to use usbd_open_pipe_intr()
and that this uses an interrupt endpoint, not a bulk one.

The USB to serial adapter has no interrupt endpoint, hence I 
understand I cannot use the polling mode. You suggest it could
be set controller-wide, which is admissible when cn_tab->cn_getc()
is used: root device prompt on boot -a, and in DDB.  

But how heavily should the current code be refactored to do that?

-- 
Emmanuel Dreyfus
m...@netbsd.org

Reply via email to