Re: BIO Usage Error or Conflicting Designs

Jens Axboe (axboe@suse.de)
Mon, 14 Jan 2002 08:23:41 +0100


On Sun, Jan 13 2002, Manfred Spraul wrote:
> >
> > Is this with the highmem debug stuff enabled? That's the only way I can
> > see this BUG triggering, otherwise q->bounce_pfn _cannot_ be smaller
> > than the max_pfn.
> >
> Have you tested that?
>
> Unless I misread arch/i386/kernel/setup.c, line 740 to 760, max_pfn is
> the upper end of the highmem area, if highmem is configured.
> For non-highmem setup, it's set to min(system_memory, 4 GB).
> It was a local variable within setup_arch, and someone made it a global
> variable.
>
> I.e. max_pfn is 1 GB with Andre's setup.
>
> His patch doesn't touch the bounce limit, the default limit from
> blk_queue_make_request() is used: BLK_BOUNCE_HIGH, which is max_low_pfn.
>
> max_low_pfn is 896 MB.
>
> --> BUG in create_bounce(), because a request comes in with a bounce
> limit less than the total system memory, and no highmem configured.

Indeed, I misread the max_pfn stuff when I added that.

--- /opt/kernel/linux-2.5.2-pre11/drivers/block/ll_rw_blk.c Thu Jan 10 09:56:52 2002
+++ drivers/block/ll_rw_blk.c Mon Jan 14 02:21:50 2002
@@ -1711,7 +1705,11 @@
printk("block: %d slots per queue, batch=%d\n", queue_nr_requests, batch_requests);

blk_max_low_pfn = max_low_pfn;
+#ifdef CONFIG_HIGHMEM
blk_max_pfn = max_pfn;
+#else
+ blk_max_pfn = max_low_pfn;
+#endif

#if defined(CONFIG_IDE) && defined(CONFIG_BLK_DEV_IDE)
ide_init(); /* this MUST precede hd_init */
--- /opt/kernel/linux-2.5.2-pre11/mm/highmem.c Thu Jan 10 09:56:53 2002
+++ mm/highmem.c Mon Jan 14 02:20:53 2002
@@ -367,12 +367,6 @@
if (pfn >= blk_max_pfn)
return;

-#ifndef CONFIG_HIGHMEM
- /*
- * should not hit for non-highmem case
- */
- BUG();
-#endif
bio_gfp = GFP_NOHIGHIO;
pool = page_pool;
} else {

-- 
Jens Axboe

- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/