On Sun, Mar 16, 2008 at 09:27:37PM +0100, Giuseppe Sacco wrote: > the gcc I am using in versione 4.1.2. Any help is really appreciated. 4.2.1 generates nearly the same (reasonable) code. The major difference between the version with printk and the version without is the size of the local stack. I guess this prevents killing of *cd. Could you try the hack below and tell me, if it helps ? This hack ensures, that the buffer given to the scsi driver is one cache line big (at least on R5k O2s). If this helps, there are more places to fix for non-coherent machines... Thomas. diff --git a/drivers/cdrom/cdrom.c b/drivers/cdrom/cdrom.c index 12f5bae..acb98a8 100644 --- a/drivers/cdrom/cdrom.c +++ b/drivers/cdrom/cdrom.c @@ -482,7 +482,7 @@ int cdrom_get_media_event(struct cdrom_device_info *cdi, struct media_event_desc *med) { struct packet_command cgc; - unsigned char buffer[8]; + unsigned char buffer[32]; struct event_header *eh = (struct event_header *) buffer; init_cdrom_command(&cgc, buffer, sizeof(buffer), CGC_DATA_READ); -- Crap can work. Given enough thrust pigs will fly, but it's not necessary a good idea. [ RFC1925, 2.3 ]