[parisc-linux] B2k and CONFIG_PDC_CONSOLE pb: followup
Joel Soete
soete.joel at tiscali.be
Wed Jan 21 11:03:05 MST 2004
Hi all,
On the my b2k when I add 'CONFIG_PDC_CONSOLE' the system hang just after
"Searching for devices..." leting the led CDROM continuously bright ???
With some printk, I reach to figure out that is at the pdc_suspend_usb()
point where the boot hang. I try to bypass this and so it boot well.
In fact the big difference with a kernel without CONFIG_PDC_CONSOLE is the
early call to pdc_console_init_force() which (before register the pdc_cons
do:
[snip]
/* If the console is duplex then copy the COUT parameters to CIN.*/
if (PAGE0->mem_cons.cl_class == CL_DUPLEX)
memcpy(&PAGE0->mem_kbd, &PAGE0->mem_cons, sizeof(PAGE0->mem_cons));
/* register the pdc console */
register_console(&pdc_cons);
}
I also try to bypass this memcpy (and restore pdc_suspend_usb() call) and
it boot also well.
In sumary, on the b2k, this early memcpy() seems to break something in the
later pdc_suspend_usb() call. My problem is the pdc_suspend_usb()
which results finaly in a call to real32_call_asm(): actualy asm code in
which
it's difficult to insert printk to analyse the difference of behaviour ?)
I also already get a toc but didn't give me any relevant info on what happen
:(
Any idea to help me to get more details about this pb?
Thanks in advance,
Joel
PS:
I added some printk to get some pdc addresses:
static void pdc_console_init_force(void)
{
if (pdc_console_initialized)
return;
++pdc_console_initialized;
if (PAGE0->mem_cons.cl_class == CL_DUPLEX) {
printk(KERN_INFO "pdc_console_init_force() would set a CL_DUP.\n");
printk(KERN_INFO "PAGE0->mem_cons address: %p.\n", &PAGE0->mem_cons);
printk(KERN_INFO "PAGE0->mem_kbd address: %p.\n", &PAGE0->mem_kbd);
printk(KERN_INFO "PAGE0->mem_kbd size: %d.\n", sizeof(PAGE0->mem_cons));
};
/* If the console is duplex then copy the COUT parameters to CON.*/
/*
if (PAGE0->mem_cons.cl_class == CL_DUPLEX)
memcpy(&PAGE0->mem_kbd, &PAGE0->mem_cons, sizeof(PAGE0->mem_cons));
*/
/* register the pdc console */
register_console(&pdc_cons);
}
The 32-bit Kernel has started...
pdc_console_init_force() would set a CL_DUP.
PAGE0->mem_cons address: 100003a0.
PAGE0->mem_kbd address: 10000400.
PAGE0->mem_kbd size: 48.
But that couldn't help more for the moment :(
-------------------------------------------------------------------------
Tiscali ADSL: 12 mois à 29,50 /mois! L'Internet rapide, c'est pour tout
le monde.
http://reg.tiscali.be/default.asp?lg=fr
More information about the parisc-linux
mailing list