Re: Improving Performance

2014-03-27 Thread schmitz

Hi Geert,

Hi Michael,

On Tue, Mar 25, 2014 at 8:53 AM, schmitz
schm...@biophys.uni-duesseldorf.de wrote:
  

How can I delay the call to atari_stram_reserve_pages() until after VM init,
but before driver initcalls?



arch_initcall()?
subsys_initcall()?
  


Right - I'll try and see what works. Could only think of 
device_initcall() which might have been too late.



Or you can delay the ioremap() until the first caller of atari_stram_alloc()?
  


Messy.


If the kernel runs in ST-RAM, I think you have to keep the reservation in
early code, to avoid no ST-RAM being available later.
  


Yep, that was the reason it was called from early setup. Still a bit 
messy but can't be helped for now.


Thanks,

   Michael



Gr{oetje,eeting}s,

Geert

--
Geert Uytterhoeven -- There's lots of Linux beyond ia32 -- ge...@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
  



--
To UNSUBSCRIBE, email to debian-68k-requ...@lists.debian.org
with a subject of unsubscribe. Trouble? Contact listmas...@lists.debian.org
Archive: https://lists.debian.org/5333cb38.9090...@biophys.uni-duesseldorf.de



Re: Improving Performance

2014-03-27 Thread schmitz

Hi Geert,
 

The problem is - it dies when calling ioremap:

   stram_virt_offset = ioremap(stram_pool.start,
   resource_size(stram_pool) - 
stram_pool.start);



Why do you subtract stram_pool.start from the size again?
  


Good question - no idea where that got left over from.


Answer: misplaced bracket. Your suggestion for using ioremap had one 
bracket missing, and I picked the wrong place to add it :-(


Using ioremap in an arch_initcall() context does work - with that, atafb 
can be simplified to set the right cache mode unconditionally again. 
Only tested in ARAnyM so far, so this will need testing on real hardware 
again after cleaning up the patches a bit more. Should get to that over 
the weekend.


With a view towards supporting hardware that does not rely on ST-RAM for 
frame buffer memory, we may need a virt/phys translation that works on 
both ioremapped and kmalloced memory. Has this been done before?


Cheers,

   Michael


--
To UNSUBSCRIBE, email to debian-68k-requ...@lists.debian.org
with a subject of unsubscribe. Trouble? Contact listmas...@lists.debian.org
Archive: https://lists.debian.org/5333dd87.8010...@biophys.uni-duesseldorf.de



Re: Improving Performance

2014-03-25 Thread schmitz

Hi Geert,

Hi Michael,

On Sat, Mar 15, 2014 at 7:29 PM, schmitz
schm...@biophys.uni-duesseldorf.de wrote:
  

The problem is - it dies when calling ioremap:

   stram_virt_offset = ioremap(stram_pool.start,
   resource_size(stram_pool) - stram_pool.start);



Why do you subtract stram_pool.start from the size again?
  


Good question - no idea where that got left over from.

Regarding your other comment that ioremap may be called too early into 
the boot - you're right, the kernel dies before it reports any VM stats. 
The full log up to that point is:


Linux version 3.14.0-rc6-atari-164151-g0939d5c (schmitz@xplor) (gcc 
version 4.6.3 (GCC) ) #209 Mon Mar 17 21:13:51 NZDT 2014

Saving 174 bytes of bootinfo
console [debug0] enabled
Atari hardware found: VIDEL STDMA-SCSI ST_MFP YM2149 PCM CODEC DSP56K 
SCC_DMA SCC ANALOG_JOY BLITTER IDE TT_CLK FDC_SPEED

Ignoring memory chunk at 0x0:0xe0 before the first chunk
Fix your bootloader or use a memfile to make use of this area!
On node 0 totalpages: 130688
free_area_init_node: node 0, pgdat 002b95d8, node_mem_map 0037c000
 DMA zone: 1149 pages used for memmap
 DMA zone: 0 pages reserved
 DMA zone: 130688 pages, LIFO batch:31
atari_stram pool: kernel not in ST-RAM, using ioremap!
atari_stram pool: size = 1048576 bytes, resource = [??? 
0x1000-0x00100fff flags 0x0]

atari_stram pool: start = 1000, end = 00100fff
Unable to handle kernel NULL pointer dereference at virtual address   (null)
Oops: 
Modules linked in:
PC: [000896a4] kmem_cache_alloc+0x10/0x9a
SR: 2700  SP: 0029ded0  a2: 002a42d8
d0: 80d0d1: 0013d2: 80d0d3: 0007ff90
d4: 0001d5: 00d0a0: 0029c000a1: 002a762e
Process swapper (pid: 0, task=002a42d8)
Frame format=4 fault addr= fslw=01050200
Stack from 0029df0c:
   0010 0008 0021705a 002db308 0007ff90  80d0 
0010
    0001 1000 0021705a 00080bbe 0010 0001 
0001
   2000 d000 00d0 6bb4 6bb4 0010 0001 
0001
   0008 0021705a 002b9070 000b3ef4 0021705a 002db308 002d55e8 
0029dfc8
   002d626e 1000 0010 0001 002b907c 002d4844 012f9fd0 
002eb0ae
      003bee10 01001000 0021705a  
0029dff8



How can I delay the call to atari_stram_reserve_pages() until after VM 
init, but before driver initcalls?


Cheers,

   Michael


--
To UNSUBSCRIBE, email to debian-68k-requ...@lists.debian.org
with a subject of unsubscribe. Trouble? Contact listmas...@lists.debian.org
Archive: https://lists.debian.org/533135ec.6040...@biophys.uni-duesseldorf.de



Re: Improving Performance

2014-03-25 Thread Geert Uytterhoeven
Hi Michael,

On Tue, Mar 25, 2014 at 8:53 AM, schmitz
schm...@biophys.uni-duesseldorf.de wrote:
 How can I delay the call to atari_stram_reserve_pages() until after VM init,
 but before driver initcalls?

arch_initcall()?
subsys_initcall()?

Or you can delay the ioremap() until the first caller of atari_stram_alloc()?

If the kernel runs in ST-RAM, I think you have to keep the reservation in
early code, to avoid no ST-RAM being available later.

Gr{oetje,eeting}s,

Geert

--
Geert Uytterhoeven -- There's lots of Linux beyond ia32 -- ge...@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


-- 
To UNSUBSCRIBE, email to debian-68k-requ...@lists.debian.org
with a subject of unsubscribe. Trouble? Contact listmas...@lists.debian.org
Archive: 
https://lists.debian.org/CAMuHMdUxuPdZ_VwmMvF-6X2LwO=krk_AskpZfiB+4zQf6TWG=a...@mail.gmail.com



Re: Improving Performance

2014-03-23 Thread Geert Uytterhoeven
Hi Michael,

On Sat, Mar 15, 2014 at 7:29 PM, schmitz
schm...@biophys.uni-duesseldorf.de wrote:
 The problem is - it dies when calling ioremap:

stram_virt_offset = ioremap(stram_pool.start,
resource_size(stram_pool) - stram_pool.start);

Why do you subtract stram_pool.start from the size again?

Gr{oetje,eeting}s,

Geert

--
Geert Uytterhoeven -- There's lots of Linux beyond ia32 -- ge...@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


-- 
To UNSUBSCRIBE, email to debian-68k-requ...@lists.debian.org
with a subject of unsubscribe. Trouble? Contact listmas...@lists.debian.org
Archive: 
https://lists.debian.org/CAMuHMdUcuZAN6zZZjUsXSpFze768fA9AcQ6T0UOig-my=fb...@mail.gmail.com



Re: Improving Performance

2014-03-19 Thread schmitz

Hi Andreas,

schmitz schm...@biophys.uni-duesseldorf.de writes:

  

Andreas,

works, but doesn't quite do what I need - to emulate the behaviour of
ataboot, the ST-RAM chunk needs to be added after the FastRAM one, not
omitted.



Does that work?
  


Should work - did you change anything else than swapping the meminfo 
chunk order? I'd tried that in the meantime and I do get the kernel to 
boot up to the point where atafb is initialized, On my Falcon, it just 
hangs there. Aranym reports a double bus fault, and quits.


Some oblique virt==phys assumptions in atafb, or early startup mappings 
did not survive past mem init (unlikely).


I'll try your new patch on a vanila aranym source next, to make sure I 
didn't botch anything.


Thanks,

   Michael



Andreas.

diff --git c/src/bootos_linux.cpp w/src/bootos_linux.cpp
index 78adbb8..8bd25ad 100644
--- c/src/bootos_linux.cpp
+++ w/src/bootos_linux.cpp
@@ -409,9 +409,10 @@ int LinuxBootOs::checkKernel(void)
 Elf32_Ehdr *kexec_elf; /* header of kernel executable */
 Elf32_Phdr *kernel_phdrs;
unsigned long min_addr=0x, max_addr=0;
-   unsigned long kernel_size, mem_ptr;
+   unsigned long kernel_size, mem_ptr, kernel_offset;
int i;
const char *kname, *kernel_name=vmlinux;
+   bool load_to_fastram = bx_options.lilo.load_to_fastram  FastRAMSize  
0;
 
 	kexec_elf = (Elf32_Ehdr *) kernel;

if (memcmp( kexec_elf-e_ident[EI_MAG0], ELFMAG, SELFMAG ) == 0) {
@@ -475,6 +476,10 @@ int LinuxBootOs::checkKernel(void)
kernel_size = max_addr - min_addr;
D(bug(lilo: kernel_size=%lu,kernel_size));
 
+	if (load_to_fastram)

+   kernel_offset = FastRAMBase;
+   else
+   kernel_offset = 0;
mem_ptr = KERNEL_START;
for (i=0; iSDL_SwapBE16(kexec_elf-e_phnum); i++) {
unsigned long segment_length;
@@ -490,21 +495,29 @@ int LinuxBootOs::checkKernel(void)
}
segment_ptr =  SDL_SwapBE32(kernel_phdrs[i].p_vaddr)-PAGE_SIZE;
 
-		memcpy(((char *)RAMBaseHost) + mem_ptr + segment_ptr, ((char *) kexec_elf) + segment_offset, segment_length);

+   if (load_to_fastram)
+   memcpy(FastRAMBaseHost + mem_ptr + segment_ptr, (char 
*) kexec_elf + segment_offset, segment_length);
+   else
+   memcpy(RAMBaseHost + mem_ptr + segment_ptr, (char *) 
kexec_elf + segment_offset, segment_length);
 
-	D(bug(lilo: Copied segment %d: 0x%08x,0x%08x at 0x%08x,i,segment_offset,segment_length,mem_ptr+segment_ptr));

+   D(bug(lilo: Copied segment %d: 0x%08x,0x%08x at 
0x%08x,i,segment_offset,segment_length,kernel_offset+mem_ptr+segment_ptr));
}
 
 	/*--- Copy the ramdisk after kernel (and reserved bootinfo) ---*/

if (ramdisk  ramdisk_length) {
unsigned long rd_start;
unsigned long rd_len;
+   unsigned long rd_offset;
 
+		if (load_to_fastram)

+   rd_offset = KERNEL_START + kernel_size + MAX_BI_SIZE;
+   else
+   rd_offset = 0;
rd_len = ramdisk_length - RAMDISK_FS_START;
-   if (FastRAMSizerd_len) {
+   if (FastRAMSize  rd_offset + rd_len) {
/* Load in FastRAM */
-   rd_start = FastRAMBase;
-   memcpy(FastRAMBaseHost, ((unsigned char *)ramdisk) + 
RAMDISK_FS_START, rd_len);
+   rd_start = FastRAMBase + rd_offset;
+   memcpy(FastRAMBaseHost + rd_offset, (unsigned char 
*)ramdisk + RAMDISK_FS_START, rd_len);
} else {
/* Load in ST-RAM */
rd_start = RAMSize - rd_len;
@@ -519,7 +532,7 @@ int LinuxBootOs::checkKernel(void)
for (i=0; i16; i++) {
uint32 *tmp;
 
-			tmp = (uint32 *)(((unsigned char *)FastRAMBaseHost) /*+ rd_start*/ + 512);

+   tmp = (uint32 *)((unsigned char *)FastRAMBaseHost + 
rd_offset + 512);
D(bug(lilo: ramdisk[%d]=0x%08x,i, 
SDL_SwapBE32(tmp[i])));
}
 #endif
@@ -557,10 +570,14 @@ int LinuxBootOs::checkKernel(void)
bi.mch_type = SDL_SwapBE32(ATARI_MACH_AB40);
 
 	bi.num_memory=0;

-   ADD_CHUNK(0, RAMSize);
+   /* If loading to FastRAM switch the order of ST and Fast RAM */
+   if (!load_to_fastram)
+   ADD_CHUNK(0, RAMSize);
if (FastRAMSize0) {
ADD_CHUNK(FastRAMBase, FastRAMSize);
}
+   if (load_to_fastram)
+   ADD_CHUNK(0, RAMSize);
bi.num_memory=SDL_SwapBE32(bi.num_memory);
 
 	if (!create_bootinfo()) {

@@ -569,24 +586,30 @@ int LinuxBootOs::checkKernel(void)
}
 
 	/*--- Copy boot info in RAM ---*/

-   memcpy(RAMBaseHost + KERNEL_START + kernel_size, bi_union.record, 
bi_size);
-D(bug(lilo: bootinfo at 0x%08x,KERNEL_START + 

Re: Improving Performance

2014-03-19 Thread schmitz

Stefan,


In that case, it might be sufficient to change the fixed Videl base
address to a variable one in the atafb driver, and perhaps use kmalloc
instead of stram_alloc to allocate the frame buffer. If someone with
access to this hardware is interested in giving this a try, I'd be happy
to elaborate.


Yeah, i'd be happy to try.


Regarding the ideas about support for kernel in ST-RAM with framebuffer 
support that Geert and I bounced around - see my two patches to the 
lists a few minutes ago.


With Andreas' ARAnyM patch, this can all be tested without hardware. 
Allocation of framebuffer memory from ST-RAM does work, but atafb init 
causes a double bus fault at present. Not certain why that is - missing 
mapping, or some bug in atafb that does only manifest when virtual and 
physical addresses are different.


Cheers,

   Michael


--
To UNSUBSCRIBE, email to debian-68k-requ...@lists.debian.org
with a subject of unsubscribe. Trouble? Contact listmas...@lists.debian.org
Archive: https://lists.debian.org/532949cd.9070...@biophys.uni-duesseldorf.de



Re: Improving Performance

2014-03-19 Thread Andreas Schwab
schmitz schm...@biophys.uni-duesseldorf.de writes:

 Should work - did you change anything else than swapping the meminfo chunk
 order?

Only renaming [LILO]SkipSTRAM to [LILO]LoadToFastRAM.

Andreas.

-- 
Andreas Schwab, sch...@linux-m68k.org
GPG Key fingerprint = 58CA 54C7 6D53 942B 1756  01D3 44D5 214B 8276 4ED5
And now for something completely different.


-- 
To UNSUBSCRIBE, email to debian-68k-requ...@lists.debian.org
with a subject of unsubscribe. Trouble? Contact listmas...@lists.debian.org
Archive: https://lists.debian.org/mvmha6usivl@hawking.suse.de



Re: Improving Performance

2014-03-18 Thread Ingo Jürgensmann
Am 18.03.2014 um 01:59 schrieb schmitz schm...@biophys.uni-duesseldorf.de:

 Stefan - Geert's ioremap trick does not absolve us from having ST-RAM mapped 
 in the first place. This is shaping up more complex than I thought.

Would it work when SPARSEMEM would be available on m68k? I thought that's what 
it's all about: making different kind of memory available to the system and 
being able to load the kernel where you want have it to run from. 

-- 
Ciao...//  Fon: 0381-2744150
  Ingo   \X/   http://blog.windfluechter.net


gpg pubkey:  http://www.juergensmann.de/ij_public_key.asc


--
To UNSUBSCRIBE, email to debian-68k-requ...@lists.debian.org
with a subject of unsubscribe. Trouble? Contact listmas...@lists.debian.org
Archive: 
https://lists.debian.org/31bb4a85-b524-473f-b7c7-5d26df38a...@2014.bluespice.org



Re: Improving Performance

2014-03-18 Thread schmitz

Ingo,

Am 18.03.2014 um 01:59 schrieb schmitz schm...@biophys.uni-duesseldorf.de:

  

Stefan - Geert's ioremap trick does not absolve us from having ST-RAM mapped in 
the first place. This is shaping up more complex than I thought.



Would it work when SPARSEMEM would be available on m68k? I thought that's what it's all about: making different kind of memory available to the system and being able to load the kernel where you want have it to run from. 
  
sparsemem support would solve many of our problems. I haven't heard 
anyone volunteer to write sparsemem support for m68k, though.


Cheers,

   Michael




--
To UNSUBSCRIBE, email to debian-68k-requ...@lists.debian.org
with a subject of unsubscribe. Trouble? Contact listmas...@lists.debian.org
Archive: https://lists.debian.org/5327f0b3.3090...@biophys.uni-duesseldorf.de



Re: Improving Performance

2014-03-17 Thread schmitz

Andreas,

works, but doesn't quite do what I need - to emulate the behaviour of 
ataboot, the ST-RAM chunk needs to be added after the FastRAM one, not 
omitted.


I'll play a bit with your patch, should be easy to modify unless I'm 
missing something.


Stefan - Geert's ioremap trick does not absolve us from having ST-RAM 
mapped in the first place. This is shaping up more complex than I thought.


Cheers,

   Michael

Michael Schmitz schm...@biophys.uni-duesseldorf.de writes:

  

I haven't found a way to tell ARAnyM to load the kernel to FastRAM, so
this will need testing on real hardware,



Can you try this patch?  Use [LILO] SkipSTRAM = true to enable.

Andreas.

diff --git a/src/bootos_linux.cpp b/src/bootos_linux.cpp
index 78adbb8..c0e55bb 100644
--- a/src/bootos_linux.cpp
+++ b/src/bootos_linux.cpp
@@ -409,7 +409,7 @@ int LinuxBootOs::checkKernel(void)
 Elf32_Ehdr *kexec_elf; /* header of kernel executable */
 Elf32_Phdr *kernel_phdrs;
unsigned long min_addr=0x, max_addr=0;
-   unsigned long kernel_size, mem_ptr;
+   unsigned long kernel_size, mem_ptr, kernel_offset;
int i;
const char *kname, *kernel_name=vmlinux;
 
@@ -475,6 +475,10 @@ int LinuxBootOs::checkKernel(void)

kernel_size = max_addr - min_addr;
D(bug(lilo: kernel_size=%lu,kernel_size));
 
+	if (bx_options.lilo.skip_stram)

+   kernel_offset = FastRAMBase;
+   else
+   kernel_offset = 0;
mem_ptr = KERNEL_START;
for (i=0; iSDL_SwapBE16(kexec_elf-e_phnum); i++) {
unsigned long segment_length;
@@ -490,21 +494,29 @@ int LinuxBootOs::checkKernel(void)
}
segment_ptr =  SDL_SwapBE32(kernel_phdrs[i].p_vaddr)-PAGE_SIZE;
 
-		memcpy(((char *)RAMBaseHost) + mem_ptr + segment_ptr, ((char *) kexec_elf) + segment_offset, segment_length);

+   if (bx_options.lilo.skip_stram)
+   memcpy (FastRAMBaseHost + mem_ptr + segment_ptr, (char 
*) kexec_elf + segment_offset, segment_length);
+   else
+   memcpy(RAMBaseHost + mem_ptr + segment_ptr, (char *) 
kexec_elf + segment_offset, segment_length);
 
-	D(bug(lilo: Copied segment %d: 0x%08x,0x%08x at 0x%08x,i,segment_offset,segment_length,mem_ptr+segment_ptr));

+   D(bug(lilo: Copied segment %d: 0x%08x,0x%08x at 
0x%08x,i,segment_offset,segment_length,kernel_offset+mem_ptr+segment_ptr));
}
 
 	/*--- Copy the ramdisk after kernel (and reserved bootinfo) ---*/

if (ramdisk  ramdisk_length) {
unsigned long rd_start;
unsigned long rd_len;
+   unsigned long rd_offset;
 
+		if (bx_options.lilo.skip_stram)

+   rd_offset = KERNEL_START + kernel_size + MAX_BI_SIZE;
+   else
+   rd_offset = 0;
rd_len = ramdisk_length - RAMDISK_FS_START;
-   if (FastRAMSizerd_len) {
+   if (FastRAMSize  rd_offset + rd_len) {
/* Load in FastRAM */
-   rd_start = FastRAMBase;
-   memcpy(FastRAMBaseHost, ((unsigned char *)ramdisk) + 
RAMDISK_FS_START, rd_len);
+   rd_start = FastRAMBase + rd_offset;
+   memcpy(FastRAMBaseHost + rd_offset, (unsigned char 
*)ramdisk + RAMDISK_FS_START, rd_len);
} else {
/* Load in ST-RAM */
rd_start = RAMSize - rd_len;
@@ -519,7 +531,7 @@ int LinuxBootOs::checkKernel(void)
for (i=0; i16; i++) {
uint32 *tmp;
 
-			tmp = (uint32 *)(((unsigned char *)FastRAMBaseHost) /*+ rd_start*/ + 512);

+   tmp = (uint32 *)((unsigned char *)FastRAMBaseHost + 
rd_offset + 512);
D(bug(lilo: ramdisk[%d]=0x%08x,i, 
SDL_SwapBE32(tmp[i])));
}
 #endif
@@ -557,7 +569,8 @@ int LinuxBootOs::checkKernel(void)
bi.mch_type = SDL_SwapBE32(ATARI_MACH_AB40);
 
 	bi.num_memory=0;

-   ADD_CHUNK(0, RAMSize);
+   if (!bx_options.lilo.skip_stram)
+   ADD_CHUNK(0, RAMSize);
if (FastRAMSize0) {
ADD_CHUNK(FastRAMBase, FastRAMSize);
}
@@ -569,24 +582,30 @@ int LinuxBootOs::checkKernel(void)
}
 
 	/*--- Copy boot info in RAM ---*/

-   memcpy(RAMBaseHost + KERNEL_START + kernel_size, bi_union.record, 
bi_size);
-D(bug(lilo: bootinfo at 0x%08x,KERNEL_START + kernel_size));
+   if (bx_options.lilo.skip_stram)
+   memcpy(FastRAMBaseHost + KERNEL_START + kernel_size, 
bi_union.record, bi_size);
+   else
+   memcpy(RAMBaseHost + KERNEL_START + kernel_size, 
bi_union.record, bi_size);
+   D(bug(lilo: bootinfo at 0x%08x, kernel_offset + KERNEL_START + 
kernel_size));
 
 	for (i=0; i16; i++) {

uint32 *tmp;
 
-		tmp = (uint32 *)(((unsigned char *)RAMBaseHost) + KERNEL_START + 

Re: Improving Performance

2014-03-16 Thread Geert Uytterhoeven
Hi Michael,

 git clone git://git.kernel.org/pub/scm/utils/kernel/kexec/kexec-tools.git

 Fails with:

 schmitz@hobbes:~/kexec-tools$ make
 gcc -g -O2 -fno-strict-aliasing -Wall -Wstrict-prototypes -I./include
 -I./util_lib/include -Iinclude/  -I./kexec/arch/m68k/include  -c -MD -o
 kexec/kexec.o kexec/kexec.c
 In file included from kexec/kexec.c:44:
 kexec/kexec-syscall.h:52:2: #error Unknown processor architecture. Needs a
 kexec_load syscall number.
 In file included from kexec/kexec.c:44:

Strange.

 kexec/kexec-syscall.h: In function `kexec_load':
 kexec/kexec-syscall.h:61: error: `__NR_kexec_load' undeclared (first use in
 this function)
 kexec/kexec-syscall.h:61: error: (Each undeclared identifier is reported
 only once
 kexec/kexec-syscall.h:61: error: for each function it appears in.)
 make: *** [kexec/kexec.o] Error 1

 (no syscall no. defined in the kernel headers).

Hmm, I probably used a unistd.h that did have the syscall number defined,
cfr. below.

 In file included from kexec/arch/m68k/kexec-m68k.c:19:
 kexec/arch/m68k/bootinfo.h:12: error: syntax error before __be16

 Missing typedefs for __u16, __u32, __be16 and __be32  (the former two being
 present in /usr/include/asm/types.h but not picked up from there). Patch
 attached as well - may be harmful on more recent m68k installations.

I did intend this to be used with recent kernel headers, as created by
make headers_install for v3.14-rc1 and later.

That was BTW my main motivation to clean up asm/bootinfo.h: before
v3.14-rc1, make headers_install would install asm/bootinfo.h at
all, so you had to rely on the very old version from glibc-headers.

I'll look in the preprocessor issue later.

Gr{oetje,eeting}s,

Geert

--
Geert Uytterhoeven -- There's lots of Linux beyond ia32 -- ge...@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


-- 
To UNSUBSCRIBE, email to debian-68k-requ...@lists.debian.org
with a subject of unsubscribe. Trouble? Contact listmas...@lists.debian.org
Archive: 
https://lists.debian.org/camuhmdxcoto3rlb+opro8zh--g-pw7xn6dsduxwkf+3mw+s...@mail.gmail.com



Re: Improving Performance

2014-03-15 Thread schmitz

Geert,




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.

  
Sort of - boots with kernel in ST-RAM, but nothing shown on the 
screen. SCSI appears to allocate DMA-able memory though:




Turns out the test for kernel in ST-RAM is faulty. I'll have to find a 
better test,



atafb_init: start
atafb_init: initializing Falcon hw
atafb: screen_base 007f4000 real_screen_base 007f4000 screen_len 69632
Determined 640x400, depth 1
  virtual 640x870
Console: switching to mono frame buffer device 80x25
fb0: frame buffer device, using 68K of video memory


That's just the same behaviour as before, when the kernel was loaded to 
FastRAM.


Cheers,

   Michael


--
To UNSUBSCRIBE, email to debian-68k-requ...@lists.debian.org
with a subject of unsubscribe. Trouble? Contact listmas...@lists.debian.org
Archive: https://lists.debian.org/5324928d.6040...@biophys.uni-duesseldorf.de



Re: Improving Performance

2014-03-15 Thread schmitz

Geert,


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.

  
Sort of - boots with kernel in ST-RAM, but nothing shown on the 
screen. SCSI appears to allocate DMA-able memory though:




Turns out the test for kernel in ST-RAM is faulty. I'll have to find a 
better test,


Checking for the first memory chunk address to be located at 0x0 works 
(the bootloader will place the chunk with the kernel loaded in to first).


The problem is - it dies when calling ioremap:

   stram_virt_offset = ioremap(stram_pool.start,
   resource_size(stram_pool) - 
stram_pool.start);


I guess the FastRAM chunk is mapped at virtual address 0, and ST-RAM is 
unmapped?


Cheers,

   Michael






atafb_init: start
atafb_init: initializing Falcon hw
atafb: screen_base 007f4000 real_screen_base 007f4000 screen_len 69632
Determined 640x400, depth 1
  virtual 640x870
Console: switching to mono frame buffer device 80x25
fb0: frame buffer device, using 68K of video memory


That's just the same behaviour as before, when the kernel was loaded 
to FastRAM.


Cheers,

   Michael





--
To UNSUBSCRIBE, email to debian-68k-requ...@lists.debian.org
with a subject of unsubscribe. Trouble? Contact listmas...@lists.debian.org
Archive: https://lists.debian.org/53249c01.3000...@biophys.uni-duesseldorf.de



Re: Improving Performance

2014-03-15 Thread Michael Schmitz

Geert,

git clone 
git://git.kernel.org/pub/scm/utils/kernel/kexec/kexec-tools.git

cd kexec-tools
./bootstrap
./configure
make install

It has less build requirements than ARAnyM ;-)




Missing typedefs for __u16, __u32, __be16 and __be32  (the former two 
being present in /usr/include/asm/types.h but not picked up from 
there). Patch attached as well - may be harmful on more recent m68k 
installations.


Untested, yet.


Works - now what's the proper way to invoke kexec to boot into the 
loaded kernel?


kexec -e will reboot right away with no shufdown. Does kexec (no 
arguments) perform a regular shutdown? Will this use the machine reset 
vector to boot, or just run kexec -e instead of halting?


Cheers,

Michael


--
To UNSUBSCRIBE, email to debian-68k-requ...@lists.debian.org
with a subject of unsubscribe. Trouble? Contact listmas...@lists.debian.org
Archive: 
https://lists.debian.org/77f8c9c6b9ee1ca900232c7bfd53e...@biophys.uni-duesseldorf.de



Re: Improving Performance

2014-03-14 Thread Michael Schmitz

Geert,

Sort of - boots with kernel in ST-RAM, but nothing shown on the 
screen. SCSI

appears to allocate DMA-able memory though:



Ignoring memory chunk at 0x0:0xe0 before the first chunk


Haha, you still have it in the bootinfo. Fortunately Linux doesn't use 
it ;-)


No idea how to suppress it - that would need changes to the bootstrap.



More debugging of atafb needed - I have a hunch that the ioremapped 
kernel

virtual address is being used as physical address for atafb.


Indeed, atafb needs the physical address, so the ioremap() should be 
moved

from atari_stram_init() to atafb.
That'll complicate matters (kernel in ST-RAM vs. not), see further 
below.


There may be other virt/phys bugs in atafb, as before virt == phys for 
ST-RAM,

so conversion didn't matter.

screen_info.screen_base should be the virtual address,
fb_fix_info.smem_start should be the physical address.


OK, I'll go through atafb to check - I remember it uses screen_base and 
real_screen_base so we might just need to set them up right.




For comparison, amiga_chip_alloc() always returns virtual addresses.
Conversion is done through ZTWO_VADDR()/ZTWO_PADDR(), which is
just an offset, as we always map the first 16 MiB using transparent 
translation.


That's set up in head,S, and not unmapped later, right?



Ah, perhaps you can do something similar? Hence keep the ioremap() in
atari_stram_init(), and provide helpers atari_stram_to_virt() and
atari_stram_to_phys() for phys/virt conversion?
The helpers can be no-ops if ST-RAM is not ioremapped().
That way the drivers don't need to know.


We'll have to do it that way - there's no generic virt_to_phys for 
ioremapped memory AFAIR.




One other thing: for bookkeeping, it would be better if the pool is 
registered
using the physical addresses, as its resources will show up in 
/proc/iomem.


Hence:

stram_pool.start = PAGE_SIZE;
stram_pool.end = stram_pool.start + pool_size - 1;

stram_virt_offset = ioremap(stram_pool.start,
resource_len(stram_pool) - stram_pool.start;

and

void *atari_stram_to_virt(unsigned long phys)
{
return (void *)(phys + stram_virt_offset);
}



That should work. I'll look at that as time permits.


(if the kernel is in ST-RAM, stram_virt_offset should be 0);

and call atari_stram_to_virt() just before returning from 
atari_stram_alloc().


Same for the virt to phys conversion in atari_stram_free().

Need to batten down the hatches now - we expect cyclone Lusi to hit 
from

tomorrow.


Keep Lusi out. The only cyclones that belong near a hacker's house are 
Altera

Cyclones ;-)


These don't come in 130 k gust units, I hope ... Less rain, more wind 
seems to be the theme for overnight and tomorrow.


Cheers,

Michael


--
To UNSUBSCRIBE, email to debian-68k-requ...@lists.debian.org
with a subject of unsubscribe. Trouble? Contact listmas...@lists.debian.org
Archive: 
https://lists.debian.org/6ad3513fe2e5f3edf576e7a25e535...@biophys.uni-duesseldorf.de



Re: Improving Performance

2014-03-14 Thread schmitz

Geert,

Hi Michael,

On Thu, Mar 13, 2014 at 7:35 AM, schmitz
schm...@biophys.uni-duesseldorf.de wrote:
  

(Neither do I have kexec tools yet - nice plug though, Geert! I definitely
need to play with kexec.)



git clone git://git.kernel.org/pub/scm/utils/kernel/kexec/kexec-tools.git
cd kexec-tools
./bootstrap
./configure
make install

It has less build requirements than ARAnyM ;-)
  


Fails with:

schmitz@hobbes:~/kexec-tools$ make
gcc -g -O2 -fno-strict-aliasing -Wall -Wstrict-prototypes -I./include 
-I./util_lib/include -Iinclude/  -I./kexec/arch/m68k/include  -c -MD -o 
kexec/kexec.o kexec/kexec.c

In file included from kexec/kexec.c:44:
kexec/kexec-syscall.h:52:2: #error Unknown processor architecture. Needs 
a kexec_load syscall number.

In file included from kexec/kexec.c:44:
kexec/kexec-syscall.h: In function `kexec_load':
kexec/kexec-syscall.h:61: error: `__NR_kexec_load' undeclared (first use 
in this function)
kexec/kexec-syscall.h:61: error: (Each undeclared identifier is reported 
only once

kexec/kexec-syscall.h:61: error: for each function it appears in.)
make: *** [kexec/kexec.o] Error 1

(no syscall no. defined in the kernel headers).

Hmmm - the backup #ifdef __m68k__ does not appear to trigger, maybe it's 
__mc68000__ instead?


See attached - not really enough yet, though:

In file included from kexec/arch/m68k/kexec-m68k.c:19:
kexec/arch/m68k/bootinfo.h:12: error: syntax error before __be16
kexec/arch/m68k/bootinfo.h:12: warning: no semicolon at end of struct or 
union
kexec/arch/m68k/bootinfo.h:13: warning: type defaults to `int' in 
declaration of `size'
kexec/arch/m68k/bootinfo.h:13: warning: data definition has no type or 
storage class

kexec/arch/m68k/bootinfo.h:15: error: syntax error before __be32
kexec/arch/m68k/bootinfo.h:15: warning: no semicolon at end of struct or 
union
kexec/arch/m68k/bootinfo.h:17: warning: type defaults to `int' in 
declaration of `machtype'
kexec/arch/m68k/bootinfo.h:17: warning: data definition has no type or 
storage class

kexec/arch/m68k/bootinfo.h:19: error: syntax error before __be32
kexec/arch/m68k/bootinfo.h:19: warning: no semicolon at end of struct or 
union
kexec/arch/m68k/bootinfo.h:20: warning: type defaults to `int' in 
declaration of `size'
kexec/arch/m68k/bootinfo.h:20: warning: data definition has no type or 
storage class
kexec/arch/m68k/bootinfo.h:21: warning: type defaults to `int' in 
declaration of `mem_info'
kexec/arch/m68k/bootinfo.h:21: warning: data definition has no type or 
storage class

kexec/arch/m68k/bootinfo.h:23: error: syntax error before '}' token
make: *** [kexec/arch/m68k/kexec-m68k.o] Error 1

Missing typedefs for __u16, __u32, __be16 and __be32  (the former two 
being present in /usr/include/asm/types.h but not picked up from there). 
Patch attached as well - may be harmful on more recent m68k installations.


Untested, yet.

Cheers,

   Michael



From 546c34daf7100f529aa350b3adbf5d6bebf3 Mon Sep 17 00:00:00 2001
From: Michael Schmitz schm...@debian.org
Date: Sat, 15 Mar 2014 12:59:29 +1300
Subject: [PATCH] Fix m68k default syscall #define

Signed-off-by: Michael Schmitz schm...@debian.org
---
 kexec/kexec-syscall.h |2 +-
 1 files changed, 1 insertions(+), 1 deletions(-)

diff --git a/kexec/kexec-syscall.h b/kexec/kexec-syscall.h
index 6238044..92efbf2 100644
--- a/kexec/kexec-syscall.h
+++ b/kexec/kexec-syscall.h
@@ -118,7 +118,7 @@ static inline long kexec_load(void *entry, unsigned long nr_segments,
 #if defined(__mips__)
 #define KEXEC_ARCH_NATIVE	KEXEC_ARCH_MIPS
 #endif
-#ifdef __m68k__
+#if defined(__m68k__) || defined(__mc68000__)
 #define KEXEC_ARCH_NATIVE	KEXEC_ARCH_68K
 #endif
 
-- 
1.5.6

From 22ba5a8482a7c4aeb0d154f5155b1623ac5830c6 Mon Sep 17 00:00:00 2001
From: Michael Schmitz schm...@debian.org
Date: Sat, 15 Mar 2014 13:30:48 +1300
Subject: [PATCH] more m68k compile fixes

Signed-off-by: Michael Schmitz schm...@debian.org
---
 kexec/arch/m68k/bootinfo.h |   11 +++
 1 files changed, 11 insertions(+), 0 deletions(-)

diff --git a/kexec/arch/m68k/bootinfo.h b/kexec/arch/m68k/bootinfo.h
index b6f453d..33d36c1 100644
--- a/kexec/arch/m68k/bootinfo.h
+++ b/kexec/arch/m68k/bootinfo.h
@@ -3,6 +3,17 @@
 #define DEFAULT_BOOTINFO_FILE	/proc/bootinfo
 #define MAX_BOOTINFO_SIZE	1536
 
+/*
+ * These went missing from my m68k system - MSch
+ */
+
+typedef unsigned short  __u16;
+typedef unsigned int__u32;
+
+typedef __u16   __le16;
+typedef __u16   __be16;
+typedef __u32   __le32;
+typedef __u32   __be32;
 
 /*
  *  Convenience overlay of several struct bi_record variants
-- 
1.5.6



Re: Improving Performance

2014-03-13 Thread schmitz

Thorsten,

Michael Schmitz dixit:

  

I haven't found a way to tell ARAnyM to load the kernel to FastRAM, so this
will need testing on real hardware,



BOOTSTRA.TTP works on TOS/MiNT, IIRC.
  


True, I just don't have TOS or MiNT installed on any ARAnyM disk image I 
have.


(Neither do I have kexec tools yet - nice plug though, Geert! I 
definitely need to play with kexec.)


Odd as it may sound - testing on the actual Falcon may be the quickest 
option after all :-)


Cheers,

   Michael


--
To UNSUBSCRIBE, email to debian-68k-requ...@lists.debian.org
with a subject of unsubscribe. Trouble? Contact listmas...@lists.debian.org
Archive: https://lists.debian.org/532151b4.7020...@biophys.uni-duesseldorf.de



Re: Improving Performance

2014-03-13 Thread Geert Uytterhoeven
Hi Michael,

On Thu, Mar 13, 2014 at 7:35 AM, schmitz
schm...@biophys.uni-duesseldorf.de wrote:
 (Neither do I have kexec tools yet - nice plug though, Geert! I definitely
 need to play with kexec.)

git clone git://git.kernel.org/pub/scm/utils/kernel/kexec/kexec-tools.git
cd kexec-tools
./bootstrap
./configure
make install

It has less build requirements than ARAnyM ;-)

Gr{oetje,eeting}s,

Geert

--
Geert Uytterhoeven -- There's lots of Linux beyond ia32 -- ge...@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


-- 
To UNSUBSCRIBE, email to debian-68k-requ...@lists.debian.org
with a subject of unsubscribe. Trouble? Contact listmas...@lists.debian.org
Archive: 
https://lists.debian.org/CAMuHMdX5XW96NcDVxcr2DHS7L0+oCszRp0vUw8TEx=tnb+u...@mail.gmail.com



Re: Improving Performance

2014-03-13 Thread schmitz

Andreas,

I haven't found a way to tell ARAnyM to load the kernel to FastRAM, so
this will need testing on real hardware,



Can you try this patch?  Use [LILO] SkipSTRAM = true to enable.
  


Thanks for providing this patch - I will have to check whether I can get 
all packages I need to compile ARAnyM on my PC (last time I tried, it 
was a bit tricky).


Cheers,

   Michael



Andreas.

diff --git a/src/bootos_linux.cpp b/src/bootos_linux.cpp
index 78adbb8..c0e55bb 100644
--- a/src/bootos_linux.cpp
+++ b/src/bootos_linux.cpp
@@ -409,7 +409,7 @@ int LinuxBootOs::checkKernel(void)
 Elf32_Ehdr *kexec_elf; /* header of kernel executable */
 Elf32_Phdr *kernel_phdrs;
unsigned long min_addr=0x, max_addr=0;
-   unsigned long kernel_size, mem_ptr;
+   unsigned long kernel_size, mem_ptr, kernel_offset;
int i;
const char *kname, *kernel_name=vmlinux;
 
@@ -475,6 +475,10 @@ int LinuxBootOs::checkKernel(void)

kernel_size = max_addr - min_addr;
D(bug(lilo: kernel_size=%lu,kernel_size));
 
+	if (bx_options.lilo.skip_stram)

+   kernel_offset = FastRAMBase;
+   else
+   kernel_offset = 0;
mem_ptr = KERNEL_START;
for (i=0; iSDL_SwapBE16(kexec_elf-e_phnum); i++) {
unsigned long segment_length;
@@ -490,21 +494,29 @@ int LinuxBootOs::checkKernel(void)
}
segment_ptr =  SDL_SwapBE32(kernel_phdrs[i].p_vaddr)-PAGE_SIZE;
 
-		memcpy(((char *)RAMBaseHost) + mem_ptr + segment_ptr, ((char *) kexec_elf) + segment_offset, segment_length);

+   if (bx_options.lilo.skip_stram)
+   memcpy (FastRAMBaseHost + mem_ptr + segment_ptr, (char 
*) kexec_elf + segment_offset, segment_length);
+   else
+   memcpy(RAMBaseHost + mem_ptr + segment_ptr, (char *) 
kexec_elf + segment_offset, segment_length);
 
-	D(bug(lilo: Copied segment %d: 0x%08x,0x%08x at 0x%08x,i,segment_offset,segment_length,mem_ptr+segment_ptr));

+   D(bug(lilo: Copied segment %d: 0x%08x,0x%08x at 
0x%08x,i,segment_offset,segment_length,kernel_offset+mem_ptr+segment_ptr));
}
 
 	/*--- Copy the ramdisk after kernel (and reserved bootinfo) ---*/

if (ramdisk  ramdisk_length) {
unsigned long rd_start;
unsigned long rd_len;
+   unsigned long rd_offset;
 
+		if (bx_options.lilo.skip_stram)

+   rd_offset = KERNEL_START + kernel_size + MAX_BI_SIZE;
+   else
+   rd_offset = 0;
rd_len = ramdisk_length - RAMDISK_FS_START;
-   if (FastRAMSizerd_len) {
+   if (FastRAMSize  rd_offset + rd_len) {
/* Load in FastRAM */
-   rd_start = FastRAMBase;
-   memcpy(FastRAMBaseHost, ((unsigned char *)ramdisk) + 
RAMDISK_FS_START, rd_len);
+   rd_start = FastRAMBase + rd_offset;
+   memcpy(FastRAMBaseHost + rd_offset, (unsigned char 
*)ramdisk + RAMDISK_FS_START, rd_len);
} else {
/* Load in ST-RAM */
rd_start = RAMSize - rd_len;
@@ -519,7 +531,7 @@ int LinuxBootOs::checkKernel(void)
for (i=0; i16; i++) {
uint32 *tmp;
 
-			tmp = (uint32 *)(((unsigned char *)FastRAMBaseHost) /*+ rd_start*/ + 512);

+   tmp = (uint32 *)((unsigned char *)FastRAMBaseHost + 
rd_offset + 512);
D(bug(lilo: ramdisk[%d]=0x%08x,i, 
SDL_SwapBE32(tmp[i])));
}
 #endif
@@ -557,7 +569,8 @@ int LinuxBootOs::checkKernel(void)
bi.mch_type = SDL_SwapBE32(ATARI_MACH_AB40);
 
 	bi.num_memory=0;

-   ADD_CHUNK(0, RAMSize);
+   if (!bx_options.lilo.skip_stram)
+   ADD_CHUNK(0, RAMSize);
if (FastRAMSize0) {
ADD_CHUNK(FastRAMBase, FastRAMSize);
}
@@ -569,24 +582,30 @@ int LinuxBootOs::checkKernel(void)
}
 
 	/*--- Copy boot info in RAM ---*/

-   memcpy(RAMBaseHost + KERNEL_START + kernel_size, bi_union.record, 
bi_size);
-D(bug(lilo: bootinfo at 0x%08x,KERNEL_START + kernel_size));
+   if (bx_options.lilo.skip_stram)
+   memcpy(FastRAMBaseHost + KERNEL_START + kernel_size, 
bi_union.record, bi_size);
+   else
+   memcpy(RAMBaseHost + KERNEL_START + kernel_size, 
bi_union.record, bi_size);
+   D(bug(lilo: bootinfo at 0x%08x, kernel_offset + KERNEL_START + 
kernel_size));
 
 	for (i=0; i16; i++) {

uint32 *tmp;
 
-		tmp = (uint32 *)(((unsigned char *)RAMBaseHost) + KERNEL_START + kernel_size);

+   if (bx_options.lilo.skip_stram)
+   tmp = (uint32 *)((unsigned char *)FastRAMBaseHost + 
KERNEL_START + kernel_size);
+   else
+   tmp = (uint32 *)((unsigned char *)RAMBaseHost + 
KERNEL_START + 

Re: Improving Performance

2014-03-13 Thread schmitz

Geert,

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.

  
Sort of - boots with kernel in ST-RAM, but nothing shown on the screen. 
SCSI appears to allocate DMA-able memory though:


Linux version 3.14.0-rc6-atari-164136-g430db49 (schmitz@xplor) (gcc 
version 4.6

.3 (GCC) ) #189 Thu Mar 13 20:43:55 NZDT 2014
console [debug0] enabled
Atari hardware found: VIDEL STDMA-SCSI ST_MFP YM2149 PCM CODEC DSP56K 
SCC_DMA S

CC ANALOG_JOY BLITTER IDE TT_CLK FDC_SPEED
Ignoring memory chunk at 0x0:0xe0 before the first chunk
Fix your bootloader or use a memfile to make use of this area!
On node 0 totalpages: 130688
free_area_init_node: node 0, pgdat 002b7490, node_mem_map 00372000
 DMA zone: 1149 pages used for memmap
 DMA zone: 0 pages reserved
 DMA zone: 130688 pages, LIFO batch:31
atari_stram pool: size = 1048576 bytes, resource = [??? 
0x007f4000-0x008f3fff f

lags 0x0]
atari_stram pool: start = 7f4000, end = 8f3fff
pcpu-alloc: s0 r0 d32768 u32768 alloc=1*32768
pcpu-alloc: [0] 0
Built 1 zonelists in Zone order, mobility grouping on.  Total pages: 129539

atafb_init: start
atafb_init: initializing Falcon hw
atafb: screen_base 007f4000 real_screen_base 007f4000 screen_len 69632
Determined 640x400, depth 1
  virtual 640x870
Console: switching to mono frame buffer device 80x25
fb0: frame buffer device, using 68K of video memory

Doesn't reboot cleanly, though. Machine is not recognized as a Falcon by 
TOS on reboot (hard reboot sorts that out).


My version of your patch (minus verbosity additions) attached - booting 
in ST-RAM still works as it should. I've left the normal case allocs in 
atari_stram_reserve_pages(), and your change in atari_stram_init() for 
simplicity. Should probably both go into the same function if possible.


More debugging of atafb needed - I have a hunch that the ioremapped 
kernel virtual address is being used as physical address for atafb.


Need to batten down the hatches now - we expect cyclone Lusi to hit from 
tomorrow.


Cheers,

   Michael





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 -- ge...@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.

Re: Improving Performance

2014-03-13 Thread schmitz

Geert

(Neither do I have kexec tools yet - nice plug though, Geert! I definitely
need to play with kexec.)



git clone git://git.kernel.org/pub/scm/utils/kernel/kexec/kexec-tools.git
cd kexec-tools
./bootstrap
./configure
make install

It has less build requirements than ARAnyM ;-)
  


Other than git (don't have that on the Falcon) :-)

Thanks, I'll give that a try.

Cheers,

   Michael



Gr{oetje,eeting}s,

Geert

--
Geert Uytterhoeven -- There's lots of Linux beyond ia32 -- ge...@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
  



--
To UNSUBSCRIBE, email to debian-68k-requ...@lists.debian.org
with a subject of unsubscribe. Trouble? Contact listmas...@lists.debian.org
Archive: https://lists.debian.org/53216d20.6030...@biophys.uni-duesseldorf.de



Re: Improving Performance

2014-03-13 Thread Geert Uytterhoeven
Hi Michael,

On Thu, Mar 13, 2014 at 9:22 AM, schmitz
schm...@biophys.uni-duesseldorf.de wrote:
 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.

 Sort of - boots with kernel in ST-RAM, but nothing shown on the screen. SCSI
 appears to allocate DMA-able memory though:

 Ignoring memory chunk at 0x0:0xe0 before the first chunk

Haha, you still have it in the bootinfo. Fortunately Linux doesn't use it ;-)

 More debugging of atafb needed - I have a hunch that the ioremapped kernel
 virtual address is being used as physical address for atafb.

Indeed, atafb needs the physical address, so the ioremap() should be moved
from atari_stram_init() to atafb.
That'll complicate matters (kernel in ST-RAM vs. not), see further below.

There may be other virt/phys bugs in atafb, as before virt == phys for ST-RAM,
so conversion didn't matter.

screen_info.screen_base should be the virtual address,
fb_fix_info.smem_start should be the physical address.

For comparison, amiga_chip_alloc() always returns virtual addresses.
Conversion is done through ZTWO_VADDR()/ZTWO_PADDR(), which is
just an offset, as we always map the first 16 MiB using transparent translation.

Ah, perhaps you can do something similar? Hence keep the ioremap() in
atari_stram_init(), and provide helpers atari_stram_to_virt() and
atari_stram_to_phys() for phys/virt conversion?
The helpers can be no-ops if ST-RAM is not ioremapped().
That way the drivers don't need to know.

One other thing: for bookkeeping, it would be better if the pool is registered
using the physical addresses, as its resources will show up in /proc/iomem.

Hence:

stram_pool.start = PAGE_SIZE;
stram_pool.end = stram_pool.start + pool_size - 1;

stram_virt_offset = ioremap(stram_pool.start,
resource_len(stram_pool) - stram_pool.start;

and

void *atari_stram_to_virt(unsigned long phys)
{
return (void *)(phys + stram_virt_offset);
}

(if the kernel is in ST-RAM, stram_virt_offset should be 0);

and call atari_stram_to_virt() just before returning from atari_stram_alloc().

Same for the virt to phys conversion in atari_stram_free().

 Need to batten down the hatches now - we expect cyclone Lusi to hit from
 tomorrow.

Keep Lusi out. The only cyclones that belong near a hacker's house are Altera
Cyclones ;-)

Gr{oetje,eeting}s,

Geert

--
Geert Uytterhoeven -- There's lots of Linux beyond ia32 -- ge...@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


-- 
To UNSUBSCRIBE, email to debian-68k-requ...@lists.debian.org
with a subject of unsubscribe. Trouble? Contact listmas...@lists.debian.org
Archive: 
https://lists.debian.org/camuhmdu55sfxr4-dy-l8yvwdqxdk0fdoy4h4jmszuod3qwc...@mail.gmail.com



Re: Improving Performance

2014-03-13 Thread Thorsten Glaser
schmitz dixit:

 BOOTSTRA.TTP works on TOS/MiNT, IIRC.

 True, I just don't have TOS or MiNT installed on any ARAnyM disk image I have.

Just tell ARAnyM to use a host directory as C: for TOS/MiNT.
It will not exist in Linux, but by then we won’t need it either ☺

(I’ve just used Afros as a base. Or the tarball from the
guys from #atari-home. It’s been some time…)

As for ARAnyM: apt-get source aranym; apt-get build-dep aranym ☻

bye,
//mirabilos
-- 
theftf Ich gebs zu, jupp ist cool
-- theftf zu Natureshadow beim Fixen von Debian


--
To UNSUBSCRIBE, email to debian-68k-requ...@lists.debian.org
with a subject of unsubscribe. Trouble? Contact listmas...@lists.debian.org
Archive: 
https://lists.debian.org/pine.bsm.4.64l.1403131430240.29...@herc.mirbsd.org



Re: Improving Performance

2014-03-12 Thread Michael Schmitz

Geert,

might well work, and can be conditionalized to handle pool allocation  
the old way if the kernel is in ST-RAM, and your way otherwise. Thanks  
for coming up with this hack.


There's no memfile - ST-RAM is always ignored by mem_init if the kernel  
is in FastRAM.


I haven't found a way to tell ARAnyM to load the kernel to FastRAM, so  
this will need testing on real hardware,


Michael



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 --  
ge...@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


--  
To UNSUBSCRIBE, email to debian-68k-requ...@lists.debian.org
with a subject of unsubscribe. Trouble? Contact  
listmas...@lists.debian.org
Archive:  
https://lists.debian.org/ 
alpine.deb.2.02.1403110924010.29...@ayla.of.borg



--
To UNSUBSCRIBE, email to debian-68k-requ...@lists.debian.org
with a subject of unsubscribe. Trouble? Contact listmas...@lists.debian.org
Archive: 
https://lists.debian.org/f6446182f8bba93c21011252fa9d4...@biophys.uni-duesseldorf.de



Re: Improving Performance

2014-03-12 Thread Michael Schmitz

Stefan,


Adding an option to the atafb video driver make use of the SuperVidel
hardware would be the easiest option. The SuperVidel base address is
fixed, and it can use any chunk of FastRAM for frame buffer, 
presumably?


The SuperVidel has 128MB Video RAM (DDR2 SDRAM):


Thanks, that'll make it easier, we just need to ioremap a chunk of the 
video RAM.




0xA000 16MB - this is a shadow of ST RAM in DDR2 SDRAM
Write access to ST RAM will be sniffed and done to the shadow RAM 
automagically.


We can't write to ST-RAM if the kernel is in FastRAM, for now. The bus 
snooping is done for the entire 16 MB, in hardware? The atafb driver 
would need to keep well clear of that segment if ST-RAM is used by the 
kernel (i.e. kernel in ST-RAM).




0xA100 112MB - this is the general purpose Video/graphics RAM
Can be read/write accessed as Byte/Word/Long


Here you can find the SV memory map: 
http://hencox.dyndns.org/homepage/Self/SuperVidelMemoryMap.pdf


Thanks, that might come in handy.





In that case, it might be sufficient to change the fixed Videl base
address to a variable one in the atafb driver, and perhaps use kmalloc
instead of stram_alloc to allocate the frame buffer. If someone with
access to this hardware is interested in giving this a try, I'd be 
happy

to elaborate.


Yeah, i'd be happy to try.


OK, I'll have a look at the atafb code and try to see where it will 
need changes.
Replacing stram_alloc by ioremap of a chunk at 0xA100 and 
hardcoding the Videl base address for that of the Supervidel (if 
necessary) is what I'd try first.




(You'd need to compile your own kernels, and having a serial cable
between the SCC modem port and some other computer for capturing 
kernel

boot logs would be a clear bonus.)


I can surely need a helping hand in this, (compile kernel) but i found
someone who showed me how to set up a crosscompiler and kernelconfig.


The last crosscompiler I got was from kernel.org, following a hint from 
Geert. I can provide a fairly minimal .config (for CT60, so no 030 
support).


Geert's Atari defconfig ought to be a good starting point, too.

Cheers,

Michael




Will figure out.

Thanks so far,
Stefan


--
To UNSUBSCRIBE, email to debian-68k-requ...@lists.debian.org
with a subject of unsubscribe. Trouble? Contact 
listmas...@lists.debian.org

Archive: https://lists.debian.org/531f0aa8.5000...@abbuc.de



--
To UNSUBSCRIBE, email to debian-68k-requ...@lists.debian.org
with a subject of unsubscribe. Trouble? Contact listmas...@lists.debian.org
Archive: 
https://lists.debian.org/3fcaf4e28342ffc69bc2a3ac605d4...@biophys.uni-duesseldorf.de



Re: Improving Performance

2014-03-12 Thread Geert Uytterhoeven
On Wed, Mar 12, 2014 at 8:09 AM, Michael Schmitz
schm...@biophys.uni-duesseldorf.de wrote:
 I haven't found a way to tell ARAnyM to load the kernel to FastRAM, so this
 will need testing on real hardware,

You can, with kexec and a separate bootinfo file that contains TT RAM only.

Gr{oetje,eeting}s,

Geert

--
Geert Uytterhoeven -- There's lots of Linux beyond ia32 -- ge...@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


-- 
To UNSUBSCRIBE, email to debian-68k-requ...@lists.debian.org
with a subject of unsubscribe. Trouble? Contact listmas...@lists.debian.org
Archive: 
https://lists.debian.org/camuhmdx9n9pgpuodwsw-dplnnks8ace2zjznzw-usmlhdl+...@mail.gmail.com



Re: Improving Performance

2014-03-12 Thread Andreas Schwab
Geert Uytterhoeven ge...@linux-m68k.org writes:

 On Wed, Mar 12, 2014 at 8:09 AM, Michael Schmitz
 schm...@biophys.uni-duesseldorf.de wrote:
 I haven't found a way to tell ARAnyM to load the kernel to FastRAM, so this
 will need testing on real hardware,

 You can, with kexec and a separate bootinfo file that contains TT RAM only.

Though it would be nice if the builtin lilo could do it directly.

Andreas.

-- 
Andreas Schwab, sch...@linux-m68k.org
GPG Key fingerprint = 58CA 54C7 6D53 942B 1756  01D3 44D5 214B 8276 4ED5
And now for something completely different.


-- 
To UNSUBSCRIBE, email to debian-68k-requ...@lists.debian.org
with a subject of unsubscribe. Trouble? Contact listmas...@lists.debian.org
Archive: https://lists.debian.org/87fvmnpvzw@igel.home



Re: Improving Performance

2014-03-12 Thread Thorsten Glaser
Michael Schmitz dixit:

 I haven't found a way to tell ARAnyM to load the kernel to FastRAM, so this
 will need testing on real hardware,

BOOTSTRA.TTP works on TOS/MiNT, IIRC.

bye,
//mirabilos
-- 
mirabilos Owāte Jong… isch owāte disch gleisch…
Natureshadow Ich kenn nur Oblate
mirabilos Lernenz Platt
Natureshadow Ich bin zu dick für Platt


--
To UNSUBSCRIBE, email to debian-68k-requ...@lists.debian.org
with a subject of unsubscribe. Trouble? Contact listmas...@lists.debian.org
Archive: 
https://lists.debian.org/pine.bsm.4.64l.1403121212090.1...@herc.mirbsd.org



Re: Improving Performance

2014-03-11 Thread Michael Schmitz

Stefan,

Yes, the Falcon IDE is not too fast. But loading the OS needs 10 
minutes.

That can't honestly be the fault of a slow IDE bus.


Just saying your comparison wasn't entirely fair.


I wouldn't mind losing all ST RAM. The option to NOT load kernel into
ST RAM is there, but it simply hangs. I guess this is because of the
Atari tries to allocate video memory in ST RAM, which in this case is 
not accessible, correct?


Correct.

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.




There is an PCI bus upgrade to the Falcon, which enables tu use ATi 
Radeon 7500-9250 cards and there also exists (i have this) a 
Supervidel.
Supervidel is an extension card to the Falcon 060 upgrade. Its 
register compatible to the original Videl graphics chip of Falcon 030.


Both, ATi Radeon and SuperVidel have video RAM outside the ST RAM.
Thus a kernel option like VRAM = adress would probably get it 
going...


I'm aware of other video options - some will need to write the 
necessary code to make use of these.


Adding an option to the atafb video driver make use of the SuperVidel 
hardware would be the easiest option. The SuperVidel base address is 
fixed, and it can use any chunk of FastRAM for frame buffer, 
presumably?


In that case, it might be sufficient to change the fixed Videl base 
address to a variable one in the atafb driver, and perhaps use kmalloc 
instead of stram_alloc to allocate the frame buffer. If someone with 
access to this hardware is interested in giving this a try, I'd be 
happy to elaborate.


(You'd need to compile your own kernels, and having a serial cable 
between the SCC modem port and some other computer for capturing kernel 
boot logs would be a clear bonus.)


Cheers,

Michael





Greetings,
Stefan


Am 08.03.2014 00:19, schrieb Michael Schmitz:

Stefan,

your point regarding ST-RAM performance is well taken - in fact, it 
has

been raised before. Repeatedly.

What keeps us from placing the kernel in TT--RAM is the simple fact 
that
under the current memory model used by m68k, we will lose all of 
ST-RAM

for use by either the kernel or user space. Traditionally, the memory
chunk that the kernel is located in will be the first chunk listed in
the bootinfo, and also the first one to be initialized for use by the
kernel. The currently employed memory model does require memory chunks
to be in ascending order. ST-RAM as second chunk violates that
assumption. There may be a way to make use of defined portions of 
ST-RAM

as IO memory, but that has not been tested so far. I need to look into
how much effort this would take.

Switching to a different memory model will need someone to dig into 
the

arcana of memory management - this ought to be possible to test on
ARAnyM. Both Atari and Amifga stand to benefit from this, by the way.
The port has recently procured RAM expansions for Amiga that don't 
work
with the current memory model either, and need a different memory 
model
for much the same reason. What we lack is someone with enough Linux 
and

m68k memory management skills, apparently.

Bear in mind that disk I/O on the Falcon is bound to be slower than on
the Amigas (IDE on the slow bus vs. SCSI, I would presume). If you're
feeling bold, give the Falcon SCSI driver a try, but please apply all 
of

the recent patches posted to linux-m68k first.

Cheers,

 Michael


Am 08.03.2014 um 06:33 schrieb Stefan Niestegge:


Hi debian/68k people,

i know, while using Aranym for running debian-68k on Atari-compatible
machine, it doesn't make a noticeable (if any) performance difference
to boot the kernel with -s option (put Kernel in ST-RAM).

But if you run it on a real 680x0 machine, which in my case is a
Falcon with 100 MHz 68060 CPU, 512MB TT-RAM (read: FAST RAM, clocked
at full CPU clock on a 32 bit bus) and 14MB ST-RAM (read: SLOW RAM,
16MHz on a 16bit bus), there is a huge performance loss.

Last weekend i attended to a computer meeting, where someone ran
debian-68k on his Amiga 1200 (Blizzard 1230 CPU upgrade, 50 MHz CPU
clock, 64MB FAST RAM (but iirc on Blizzard 1230 RAM clock is half CPU
clock). This machine _easily_ outperformed mine, though having much
lower raw power.

Wouldn't it be the right way to fix the Atari-branch kernel to get
it running from TT RAM as on the Amiga? The Amigas 2 MB Chip RAM is
not used by the linux kernel, only for video-RAM.

If some developer lives halfway near me, i'd even lend him/her my

Re: Improving Performance

2014-03-11 Thread Geert Uytterhoeven
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 -- ge...@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


-- 
To UNSUBSCRIBE, email to debian-68k-requ...@lists.debian.org
with a subject of unsubscribe. Trouble? Contact listmas...@lists.debian.org
Archive: 
https://lists.debian.org/alpine.deb.2.02.1403110924010.29...@ayla.of.borg



Re: Improving Performance

2014-03-11 Thread Stefan Niestegge

Am 11.03.2014 07:14, schrieb Michael Schmitz:

Stefan,


Yes, the Falcon IDE is not too fast. But loading the OS needs 10 minutes.
That can't honestly be the fault of a slow IDE bus.


Just saying your comparison wasn't entirely fair.


Ah, okay :) It was Amiga against Atari - never entirely fair, haha.



There is an PCI bus upgrade to the Falcon, which enables tu use ATi
Radeon 7500-9250 cards and there also exists (i have this) a Supervidel.
Supervidel is an extension card to the Falcon 060 upgrade. Its
register compatible to the original Videl graphics chip of Falcon 030.

Both, ATi Radeon and SuperVidel have video RAM outside the ST RAM.
Thus a kernel option like VRAM = adress would probably get it going...


I'm aware of other video options - some will need to write the necessary
code to make use of these.

Adding an option to the atafb video driver make use of the SuperVidel
hardware would be the easiest option. The SuperVidel base address is
fixed, and it can use any chunk of FastRAM for frame buffer, presumably?


The SuperVidel has 128MB Video RAM (DDR2 SDRAM):

0xA000 16MB - this is a shadow of ST RAM in DDR2 SDRAM
Write access to ST RAM will be sniffed and done to the shadow RAM 
automagically.


0xA100 112MB - this is the general purpose Video/graphics RAM
Can be read/write accessed as Byte/Word/Long


Here you can find the SV memory map: 
http://hencox.dyndns.org/homepage/Self/SuperVidelMemoryMap.pdf




In that case, it might be sufficient to change the fixed Videl base
address to a variable one in the atafb driver, and perhaps use kmalloc
instead of stram_alloc to allocate the frame buffer. If someone with
access to this hardware is interested in giving this a try, I'd be happy
to elaborate.


Yeah, i'd be happy to try.


(You'd need to compile your own kernels, and having a serial cable
between the SCC modem port and some other computer for capturing kernel
boot logs would be a clear bonus.)


I can surely need a helping hand in this, (compile kernel) but i found
someone who showed me how to set up a crosscompiler and kernelconfig.

Will figure out.

Thanks so far,
Stefan


--
To UNSUBSCRIBE, email to debian-68k-requ...@lists.debian.org
with a subject of unsubscribe. Trouble? Contact listmas...@lists.debian.org
Archive: https://lists.debian.org/531f0aa8.5000...@abbuc.de



Re: Improving Performance

2014-03-08 Thread Stefan Niestegge

Hi Michael,

Yes, the Falcon IDE is not too fast. But loading the OS needs 10 minutes.
That can't honestly be the fault of a slow IDE bus.

I wouldn't mind losing all ST RAM. The option to NOT load kernel into
ST RAM is there, but it simply hangs. I guess this is because of the
Atari tries to allocate video memory in ST RAM, which in this case is 
not accessible, correct?


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?


There is an PCI bus upgrade to the Falcon, which enables tu use ATi 
Radeon 7500-9250 cards and there also exists (i have this) a Supervidel.
Supervidel is an extension card to the Falcon 060 upgrade. Its register 
compatible to the original Videl graphics chip of Falcon 030.


Both, ATi Radeon and SuperVidel have video RAM outside the ST RAM.
Thus a kernel option like VRAM = adress would probably get it going...


Greetings,
Stefan


Am 08.03.2014 00:19, schrieb Michael Schmitz:

Stefan,

your point regarding ST-RAM performance is well taken - in fact, it has
been raised before. Repeatedly.

What keeps us from placing the kernel in TT--RAM is the simple fact that
under the current memory model used by m68k, we will lose all of ST-RAM
for use by either the kernel or user space. Traditionally, the memory
chunk that the kernel is located in will be the first chunk listed in
the bootinfo, and also the first one to be initialized for use by the
kernel. The currently employed memory model does require memory chunks
to be in ascending order. ST-RAM as second chunk violates that
assumption. There may be a way to make use of defined portions of ST-RAM
as IO memory, but that has not been tested so far. I need to look into
how much effort this would take.

Switching to a different memory model will need someone to dig into the
arcana of memory management - this ought to be possible to test on
ARAnyM. Both Atari and Amifga stand to benefit from this, by the way.
The port has recently procured RAM expansions for Amiga that don't work
with the current memory model either, and need a different memory model
for much the same reason. What we lack is someone with enough Linux and
m68k memory management skills, apparently.

Bear in mind that disk I/O on the Falcon is bound to be slower than on
the Amigas (IDE on the slow bus vs. SCSI, I would presume). If you're
feeling bold, give the Falcon SCSI driver a try, but please apply all of
the recent patches posted to linux-m68k first.

Cheers,

 Michael


Am 08.03.2014 um 06:33 schrieb Stefan Niestegge:


Hi debian/68k people,

i know, while using Aranym for running debian-68k on Atari-compatible
machine, it doesn't make a noticeable (if any) performance difference
to boot the kernel with -s option (put Kernel in ST-RAM).

But if you run it on a real 680x0 machine, which in my case is a
Falcon with 100 MHz 68060 CPU, 512MB TT-RAM (read: FAST RAM, clocked
at full CPU clock on a 32 bit bus) and 14MB ST-RAM (read: SLOW RAM,
16MHz on a 16bit bus), there is a huge performance loss.

Last weekend i attended to a computer meeting, where someone ran
debian-68k on his Amiga 1200 (Blizzard 1230 CPU upgrade, 50 MHz CPU
clock, 64MB FAST RAM (but iirc on Blizzard 1230 RAM clock is half CPU
clock). This machine _easily_ outperformed mine, though having much
lower raw power.

Wouldn't it be the right way to fix the Atari-branch kernel to get
it running from TT RAM as on the Amiga? The Amigas 2 MB Chip RAM is
not used by the linux kernel, only for video-RAM.

If some developer lives halfway near me, i'd even lend him/her my
(precious) Falcon to have hardware to test.

I am on my way to write a good debian-68k install walkthrough for
Atari Falcon, because its quite tricky to get it running.

But with this poor performance, i don't know if its worth the effort.


Any suggestions are very welcome, i have my Falcon set up on my main
desk and latest debian-68k is installed. Network support works nicely.
I even compiled my favorite console IRC client on it.

greetings,
Stefan


--
To UNSUBSCRIBE, email to debian-68k-requ...@lists.debian.org
with a subject of unsubscribe. Trouble? Contact
listmas...@lists.debian.org
Archive: https://lists.debian.org/531a0303.7000...@osnanet.de






--
To UNSUBSCRIBE, email to debian-68k-requ...@lists.debian.org
with a subject of unsubscribe. Trouble? Contact listmas...@lists.debian.org
Archive: https://lists.debian.org/531b272c.2050...@abbuc.de



Re: Improving Performance

2014-03-07 Thread Stefan Niestegge

Sorry, this went into the thread here, was aimed to be a new one.

Stefan


--
To UNSUBSCRIBE, email to debian-68k-requ...@lists.debian.org
with a subject of unsubscribe. Trouble? Contact listmas...@lists.debian.org
Archive: https://lists.debian.org/531a0881.7010...@osnanet.de



Re: Improving Performance

2014-03-07 Thread Michael Schmitz

Stefan,

your point regarding ST-RAM performance is well taken - in fact, it has 
been raised before. Repeatedly.


What keeps us from placing the kernel in TT--RAM is the simple fact 
that under the current memory model used by m68k, we will lose all of 
ST-RAM for use by either the kernel or user space. Traditionally, the 
memory chunk that the kernel is located in will be the first chunk 
listed in the bootinfo, and also the first one to be initialized for 
use by the kernel. The currently employed memory model does require 
memory chunks to be in ascending order. ST-RAM as second chunk violates 
that assumption. There may be a way to make use of defined portions of 
ST-RAM as IO memory, but that has not been tested so far. I need to 
look into how much effort this would take.


Switching to a different memory model will need someone to dig into the 
arcana of memory management - this ought to be possible to test on 
ARAnyM. Both Atari and Amifga stand to benefit from this, by the way. 
The port has recently procured RAM expansions for Amiga that don't work 
with the current memory model either, and need a different memory model 
for much the same reason. What we lack is someone with enough Linux and 
m68k memory management skills, apparently.


Bear in mind that disk I/O on the Falcon is bound to be slower than on 
the Amigas (IDE on the slow bus vs. SCSI, I would presume). If you're 
feeling bold, give the Falcon SCSI driver a try, but please apply all 
of the recent patches posted to linux-m68k first.


Cheers,

Michael


Am 08.03.2014 um 06:33 schrieb Stefan Niestegge:


Hi debian/68k people,

i know, while using Aranym for running debian-68k on Atari-compatible 
machine, it doesn't make a noticeable (if any) performance difference 
to boot the kernel with -s option (put Kernel in ST-RAM).


But if you run it on a real 680x0 machine, which in my case is a
Falcon with 100 MHz 68060 CPU, 512MB TT-RAM (read: FAST RAM, clocked 
at full CPU clock on a 32 bit bus) and 14MB ST-RAM (read: SLOW RAM, 
16MHz on a 16bit bus), there is a huge performance loss.


Last weekend i attended to a computer meeting, where someone ran 
debian-68k on his Amiga 1200 (Blizzard 1230 CPU upgrade, 50 MHz CPU 
clock, 64MB FAST RAM (but iirc on Blizzard 1230 RAM clock is half CPU 
clock). This machine _easily_ outperformed mine, though having much 
lower raw power.


Wouldn't it be the right way to fix the Atari-branch kernel to get
it running from TT RAM as on the Amiga? The Amigas 2 MB Chip RAM is 
not used by the linux kernel, only for video-RAM.


If some developer lives halfway near me, i'd even lend him/her my 
(precious) Falcon to have hardware to test.


I am on my way to write a good debian-68k install walkthrough for 
Atari Falcon, because its quite tricky to get it running.


But with this poor performance, i don't know if its worth the effort.


Any suggestions are very welcome, i have my Falcon set up on my main 
desk and latest debian-68k is installed. Network support works nicely.

I even compiled my favorite console IRC client on it.

greetings,
Stefan


--
To UNSUBSCRIBE, email to debian-68k-requ...@lists.debian.org
with a subject of unsubscribe. Trouble? Contact 
listmas...@lists.debian.org

Archive: https://lists.debian.org/531a0303.7000...@osnanet.de



--
To UNSUBSCRIBE, email to debian-68k-requ...@lists.debian.org
with a subject of unsubscribe. Trouble? Contact listmas...@lists.debian.org
Archive: 
https://lists.debian.org/93b1215c8e15cb5da77afd7375e52...@biophys.uni-duesseldorf.de