It is performing higher-order atomic allocations then falling back, so failures are expected. Suppress the scary warnings. --- 25-akpm/drivers/scsi/sg.c | 7 ++++++- 1 files changed, 6 insertions(+), 1 deletion(-) diff -puN drivers/scsi/sg.c~sg-mm-warning-suppression drivers/scsi/sg.c --- 25/drivers/scsi/sg.c~sg-mm-warning-suppression Wed Feb 4 14:16:49 2004 +++ 25-akpm/drivers/scsi/sg.c Wed Feb 4 14:17:57 2004 @@ -2532,13 +2532,18 @@ static char * sg_page_malloc(int rqSz, int lowDma, int *retSzp) { char *resp = NULL; - int page_mask = lowDma ? (GFP_ATOMIC | GFP_DMA) : GFP_ATOMIC; + int page_mask; int order, a_size; int resSz = rqSz; if (rqSz <= 0) return resp; + if (lowDma) + page_mask = GFP_ATOMIC | GFP_DMA | __GFP_NOWARN; + else + page_mask = GFP_ATOMIC | __GFP_NOWARN; + for (order = 0, a_size = PAGE_SIZE; a_size < rqSz; order++, a_size <<= 1) ; resp = (char *) __get_free_pages(page_mask, order); _