[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Re: Improving Performance



On Tue, 11 Mar 2014, Michael Schmitz wrote:
> > People that need to use ST RAM because the have too little TT RAM, could
> > still use the -s kernel option and enable ST RAM for kernel.
> > 
> > Perhaps an option to specify the video RAM adress space is easier to
> > implement to the existing memory model?
> 
> The address space set aside for video still needs to be mapped. The current
> stram_alloc() interface does reqire that mapping to be set up by the generic
> memory map initialization first. That's what I mentioned below - I haven't
> found a quick and easy way to change that at first glance. Suggestions welcome
> - I can't spend much time on this at present.

Does the hack below (not even compile-tested) work? It maps pool_size
(default 1 MiB) of ST-RAM and makes the pool use that.

Make sure the ST-RAM is not mentioned in your memfile.

diff --git a/arch/m68k/atari/stram.c b/arch/m68k/atari/stram.c
index e8e797e672e0..f658421e9a08 100644
--- a/arch/m68k/atari/stram.c
+++ b/arch/m68k/atari/stram.c
@@ -66,25 +66,17 @@ early_param("stram_pool", atari_stram_setup);
  */
 void __init atari_stram_init(void)
 {
-	int i;
-	void *stram_start;
-
 	/*
-	 * determine whether kernel code resides in ST-RAM
-	 * (then ST-RAM is the first memory block at virtual 0x0)
+	 * Skip page 0, as the fhe first 2 KiB are supervisor-only!
 	 */
-	stram_start = phys_to_virt(0);
-	kernel_in_stram = (stram_start == 0);
-return;
-
-	for (i = 0; i < m68k_num_memory; ++i) {
-		if (m68k_memory[i].addr == 0) {
-			return;
-		}
-	}
+	void *stram_start = ioremap(PAGE_SIZE, pool_size);
+
+	stram_pool.start = (resource_size_t)stram_start;
+	stram_pool.end = stram_pool.start + pool_size - 1;
+	request_resource(&iomem_resource, &stram_pool);
 
-	/* Should never come here! (There is always ST-Ram!) */
-	panic("atari_stram_init: no ST-RAM found!");
+	pr_debug("atari_stram pool: size = %lu bytes, resource = %pR\n",
+		 pool_size, &stram_pool);
 }
 
 
@@ -94,19 +86,6 @@ return;
  */
 void __init atari_stram_reserve_pages(void *start_mem)
 {
-	/*
-	 * always reserve first page of ST-RAM, the first 2 KiB are
-	 * supervisor-only!
-	 */
-	if (!kernel_in_stram)
-		reserve_bootmem(0, PAGE_SIZE, BOOTMEM_DEFAULT);
-
-	stram_pool.start = (resource_size_t)alloc_bootmem_low_pages(pool_size);
-	stram_pool.end = stram_pool.start + pool_size - 1;
-	request_resource(&iomem_resource, &stram_pool);
-
-	pr_debug("atari_stram pool: size = %lu bytes, resource = %pR\n",
-		 pool_size, &stram_pool);
 }
 
 
Gr{oetje,eeting}s,

						Geert

--
Geert Uytterhoeven -- There's lots of Linux beyond ia32 -- geert@linux-m68k.org

In personal conversations with technical people, I call myself a hacker. But
when I'm talking to journalists I just say "programmer" or something like that.
							    -- Linus Torvalds


Reply to: