linux-arm-kernel.lists.infradead.org archive mirror
 help / color / mirror / Atom feed
* Sparsemem  on EP93XX
@ 2009-10-03 19:19 Christian Gagneraud
  2009-10-03 19:41 ` Russell King - ARM Linux
  0 siblings, 1 reply; 8+ messages in thread
From: Christian Gagneraud @ 2009-10-03 19:19 UTC (permalink / raw)
  To: linux-arm-kernel

Hi all,

I'm trying to get a TS72XX board working with sparsemem, but got 
unlucky so far. I've read all related threads in the archive and 
especially this one:
http://marc.info/?l=linux-arm&m=122754446724900&w=2

Here is the patch I've applied:

diff --git a/arch/arm/Kconfig b/arch/arm/Kconfig
index 1c4119c..0f1d52f 100644
--- a/arch/arm/Kconfig
+++ b/arch/arm/Kconfig
@@ -288,6 +288,7 @@ config ARCH_EP93XX
         select CPU_ARM920T
         select ARM_AMBA
         select ARM_VIC
+       select ARCH_SPARSEMEM_ENABLE
         select GENERIC_GPIO
         select HAVE_CLK
         select COMMON_CLKDEV
diff --git a/arch/arm/include/asm/memory.h b/arch/arm/include/asm/memory.h
index cefedf0..6be9d9b 100644
--- a/arch/arm/include/asm/memory.h
+++ b/arch/arm/include/asm/memory.h
@@ -125,8 +125,10 @@
   * private definitions which should NOT be used outside memory.h
   * files.  Use virt_to_phys/phys_to_virt/__pa/__va instead.
   */
+#ifndef __phys_to_virt
  #define __virt_to_phys(x)      ((x) - PAGE_OFFSET + PHYS_OFFSET)
  #define __phys_to_virt(x)      ((x) - PHYS_OFFSET + PAGE_OFFSET)
+#endif

  /*
   * Convert a physical address to a Page Frame Number and back
diff --git a/arch/arm/mach-ep93xx/include/mach/memory.h 
b/arch/arm/mach-ep93xx/include/mach/memory.h
index 554064e..4cb3329 100644
--- a/arch/arm/mach-ep93xx/include/mach/memory.h
+++ b/arch/arm/mach-ep93xx/include/mach/memory.h
@@ -19,4 +19,34 @@
  #error "Kconfig bug: No EP93xx PHYS_OFFSET set"
  #endif

+#ifdef CONFIG_MACH_TS72XX
+/*
+ * Non-linear mapping like so:
+ * phys       => virt
+ * 0x00000000 => 0xc0000000
+ * 0x01000000 => 0xc1000000
+ * 0x04000000 => 0xc4000000
+ * 0x05000000 => 0xc5000000
+ * 0xe0000000 => 0xc8000000
+ * 0xe1000000 => 0xc9000000
+ * 0xe4000000 => 0xcc000000
+ * 0xe5000000 => 0xcd000000
+ *
+ * As suggested here: http://marc.info/?l=linux-arm&m=122754446724900&w=2
+ *
+ * Note that static inline functions won't work here because
+ * arch/arm/include/asm/memory.h uses "#ifndef __virt_to_phys" to 
check whether to
+ * use generic functions or not.
+ */
+#define __phys_to_virt(p)   \
+            (((p) & 0x07ffffff) | (((p) & 0xe0000000) ? 0x08000000 : 
0) | PAGE_OFFSET)
+
+#define __virt_to_phys(v)   \
+            (((v) & 0x07ffffff) | (((v) & 0x08000000) ? 0xe0000000 : 0 ))
+
+#define SECTION_SIZE_BITS 24
+#define MAX_PHYSMEM_BITS 32
+
+#endif /* CONFIG_ARCH_TS72XX */
+
  #endif

I have forced some early debugging and dump the meminfo passed by the 
bootloader in bootmem_init() (just to be sure of the mem config) and 
here is the output i got:

Using base address 0x00218000 and length 0x000ab888
Uncompressing Linux............................................... 
done, booting the kernel.
<5>Linux version 2.6.32-rc2-twm0.0 (cgagneraud at archeopterix) (gcc 
version 4.3.3 (Sourcery G++ Lite 2009q1-203) ) #23 Sat Oct 3 20:01:39 
IST 2
009
CPU: ARM920T [41129200] revision 0 (ARMv4T), cr=40007177
CPU: VIVT data cache, VIVT instruction cache
Machine: Technologic Systems TS-72xx SBC
Memory policy: ECC disabled, Data cache writeback
meminfo has 8 banks:
00: start = 0x00000000
     size  = 0x00800000
     node  = 0x00000000
     hm    = 0x00000000
01: start = 0x01000000
     size  = 0x00800000
     node  = 0x00000000
     hm    = 0x00000000
02: start = 0x04000000
     size  = 0x00800000
     node  = 0x00000000
     hm    = 0x00000000
03: start = 0x05000000
     size  = 0x00800000
     node  = 0x00000000
     hm    = 0x00000000
04: start = 0xE0000000
     size  = 0x00800000
     node  = 0x00000000
     hm    = 0x00000000
05: start = 0xE1000000
     size  = 0x00800000
     node  = 0x00000000
     hm    = 0x00000000
06: start = 0xE4000000
     size  = 0x00800000
     node  = 0x00000000
     hm    = 0x00000000
07: start = 0xE5000000
     size  = 0x00800000
     node  = 0x00000000
     hm    = 0x00000000
<6>bootmem::init_bootmem_core nid=0 start=0 map=18a end=e5800 
mapsize=1cb00
<6>bootmem::mark_bootmem_node nid=0 start=0 end=800 reserve=0 flags=0
<6>bootmem::__free nid=0 start=0 end=800
<6>bootmem::mark_bootmem_node nid=0 start=1000 end=1800 reserve=0 flags=0
<6>bootmem::__free nid=0 start=1000 end=1800
<6>bootmem::mark_bootmem_node nid=0 start=4000 end=4800 reserve=0 flags=0
<6>bootmem::__free nid=0 start=4000 end=4800
<6>bootmem::mark_bootmem_node nid=0 start=5000 end=5800 reserve=0 flags=0
<6>bootmem::__free nid=0 start=5000 end=5800
<6>bootmem::mark_bootmem_node nid=0 start=e0000 end=e0800 reserve=0 
flags=0
<6>bootmem::__free nid=0 start=e0000 end=e0800
<6>bootmem::mark_bootmem_node nid=0 start=e1000 end=e1800 reserve=0 
flags=0
<6>bootmem::__free nid=0 start=e1000 end=e1800
<6>bootmem::mark_bootmem_node nid=0 start=e4000 end=e4800 reserve=0 
flags=0
<6>bootmem::__free nid=0 start=e4000 end=e4800
<6>bootmem::mark_bootmem_node nid=0 start=e5000 end=e5800 reserve=0 
flags=0
<6>bootmem::__free nid=0 start=e5000 end=e5800
<6>bootmem::mark_bootmem_node nid=0 start=18a end=1a7 reserve=1 flags=0
<6>bootmem::__reserve nid=0 start=18a end=1a7 flags=0
<6>bootmem::mark_bootmem_node nid=0 start=8 end=18a reserve=1 flags=0
<6>bootmem::__reserve nid=0 start=8 end=18a flags=0
<6>bootmem::mark_bootmem_node nid=0 start=4 end=8 reserve=1 flags=0
<6>bootmem::__reserve nid=0 start=4 end=8 flags=0
<7>On node 0 totalpages: 16384
<6>bootmem::alloc_bootmem_core nid=0 size=1cb0000 [7344 pages] 
align=20 goal=e7ffffff limit=0
<6>bootmem::alloc_bootmem_core nid=0 size=1cb0000 [7344 pages] 
align=20 goal=0 limit=0
<1>bootmem alloc of 30081024 bytes failed!
<0>Kernel panic - not syncing: Out of memory
Backtrace:
[<c001c750>] (dump_backtrace+0x0/0x10c) from [<c0120c0c>] 
(dump_stack+0x18/0x1c)
  r7:00000020 r6:c01618d0 r5:00000000 r4:01cb0000
[<c0120bf4>] (dump_stack+0x0/0x1c) from [<c0120c5c>] (panic+0x4c/0x12c)
[<c0120c10>] (panic+0x0/0x12c) from [<c000f298>] 
(___alloc_bootmem+0x30/0x38)
  r3:ffffffff r2:c0156140 r1:600000d3 r0:c0144420
[<c000f268>] (___alloc_bootmem+0x0/0x38) from [<c000f310>] 
(___alloc_bootmem_node+0x70/0x74)
  r5:00000000 r4:c0017280
[<c000f2a0>] (___alloc_bootmem_node+0x0/0x74) from [<c000f3ec>] 
(__alloc_bootmem_node+0x44/0x90)
  r8:c0160de4 r7:01cb0000 r6:e7ffffff r5:00000020 r4:c0160de4
[<c000f3a8>] (__alloc_bootmem_node+0x0/0x90) from [<c0120a90>] 
(alloc_node_mem_map+0x74/0x90)
  r7:000e5800 r6:c0151ef0 r5:c0160de4 r4:00000000
[<c0120a1c>] (alloc_node_mem_map+0x0/0x90) from [<c000fb40>] 
(free_area_init_node+0x74/0x3d0)
  r5:000e5800 r4:00000000
[<c000facc>] (free_area_init_node+0x0/0x3d0) from [<c000aaa8>] 
(bootmem_init+0x22c/0x484)
[<c000a87c>] (bootmem_init+0x0/0x484) from [<c000ba70>] 
(paging_init+0x55c/0x758)
[<c000b514>] (paging_init+0x0/0x758) from [<c0009e8c>] 
(setup_arch+0x2e4/0x720)
[<c0009ba8>] (setup_arch+0x0/0x720) from [<c000898c>] 
(start_kernel+0x5c/0x264)
[<c0008930>] (start_kernel+0x0/0x264) from [<00008038>] (0x8038)
  r5:c0161728 r4:40007175

Then I tried digging into the code by following the backtrace, but 
couldn't spot anything!

If I force the machine to see only 32MB then it boots fine, I've done 
this by passing the mem=stuff on the command line.
I've even tried to force using 2 nodes by over-writing bank->node, 
first node for the low part, and second node for the upper part 
(0xeX000000) and it boots fine as well, the difference is that the 
kernel says that it sees 8 banks of 8MB each, but report only 32MB of 
free memory (only node 0 is used I guess).

Obviously, I've missed something, any helps are welcome.

Thanks,
Chris

^ permalink raw reply related	[flat|nested] 8+ messages in thread

* Sparsemem  on EP93XX
  2009-10-03 19:19 Sparsemem on EP93XX Christian Gagneraud
@ 2009-10-03 19:41 ` Russell King - ARM Linux
  2009-10-03 19:49   ` Christian Gagneraud
  2009-10-03 19:55   ` Christian Gagneraud
  0 siblings, 2 replies; 8+ messages in thread
From: Russell King - ARM Linux @ 2009-10-03 19:41 UTC (permalink / raw)
  To: linux-arm-kernel

On Sat, Oct 03, 2009 at 08:19:48PM +0100, Christian Gagneraud wrote:
> Hi all,
>
> I'm trying to get a TS72XX board working with sparsemem, but got unlucky 
> so far. I've read all related threads in the archive and especially this 
> one:
> http://marc.info/?l=linux-arm&m=122754446724900&w=2
>
> Here is the patch I've applied:
>
> diff --git a/arch/arm/Kconfig b/arch/arm/Kconfig
> index 1c4119c..0f1d52f 100644
> --- a/arch/arm/Kconfig
> +++ b/arch/arm/Kconfig
> @@ -288,6 +288,7 @@ config ARCH_EP93XX
>         select CPU_ARM920T
>         select ARM_AMBA
>         select ARM_VIC
> +       select ARCH_SPARSEMEM_ENABLE
>         select GENERIC_GPIO
>         select HAVE_CLK
>         select COMMON_CLKDEV

In spite of the above...

> <7>On node 0 totalpages: 16384
> <6>bootmem::alloc_bootmem_core nid=0 size=1cb0000 [7344 pages] align=20 
> goal=e7ffffff limit=0
> <6>bootmem::alloc_bootmem_core nid=0 size=1cb0000 [7344 pages] align=20 
> goal=0 limit=0
> <1>bootmem alloc of 30081024 bytes failed!
> <0>Kernel panic - not syncing: Out of memory
> Backtrace:
> [<c001c750>] (dump_backtrace+0x0/0x10c) from [<c0120c0c>]  
> (dump_stack+0x18/0x1c)
>  r7:00000020 r6:c01618d0 r5:00000000 r4:01cb0000
> [<c0120bf4>] (dump_stack+0x0/0x1c) from [<c0120c5c>] (panic+0x4c/0x12c)
> [<c0120c10>] (panic+0x0/0x12c) from [<c000f298>]  
> (___alloc_bootmem+0x30/0x38)
>  r3:ffffffff r2:c0156140 r1:600000d3 r0:c0144420
> [<c000f268>] (___alloc_bootmem+0x0/0x38) from [<c000f310>]  
> (___alloc_bootmem_node+0x70/0x74)
>  r5:00000000 r4:c0017280
> [<c000f2a0>] (___alloc_bootmem_node+0x0/0x74) from [<c000f3ec>]  
> (__alloc_bootmem_node+0x44/0x90)
>  r8:c0160de4 r7:01cb0000 r6:e7ffffff r5:00000020 r4:c0160de4
> [<c000f3a8>] (__alloc_bootmem_node+0x0/0x90) from [<c0120a90>]  
> (alloc_node_mem_map+0x74/0x90)

This seems to suggest that sparsemem is still disabled, since
alloc_bootmem_node will only be called from alloc_node_mem_map
if FLAT_NODE_MEM_MAP is enabled, and this should not be enabled
with sparsemem.

Seeing your .config file might be useful.

^ permalink raw reply	[flat|nested] 8+ messages in thread

* Sparsemem  on EP93XX
  2009-10-03 19:41 ` Russell King - ARM Linux
@ 2009-10-03 19:49   ` Christian Gagneraud
  2009-10-03 19:54     ` Russell King - ARM Linux
  2009-10-03 19:55   ` Christian Gagneraud
  1 sibling, 1 reply; 8+ messages in thread
From: Christian Gagneraud @ 2009-10-03 19:49 UTC (permalink / raw)
  To: linux-arm-kernel

Russell King - ARM Linux wrote:
> On Sat, Oct 03, 2009 at 08:19:48PM +0100, Christian Gagneraud wrote:
>> Hi all,
>>
>> I'm trying to get a TS72XX board working with sparsemem, but got unlucky 
>> so far. I've read all related threads in the archive and especially this 
>> one:
>> http://marc.info/?l=linux-arm&m=122754446724900&w=2
>>
>> Here is the patch I've applied:
>>
>> diff --git a/arch/arm/Kconfig b/arch/arm/Kconfig
>> index 1c4119c..0f1d52f 100644
>> --- a/arch/arm/Kconfig
>> +++ b/arch/arm/Kconfig
>> @@ -288,6 +288,7 @@ config ARCH_EP93XX
>>         select CPU_ARM920T
>>         select ARM_AMBA
>>         select ARM_VIC
>> +       select ARCH_SPARSEMEM_ENABLE
>>         select GENERIC_GPIO
>>         select HAVE_CLK
>>         select COMMON_CLKDEV
> 
> In spite of the above...
> 
>> <7>On node 0 totalpages: 16384
>> <6>bootmem::alloc_bootmem_core nid=0 size=1cb0000 [7344 pages] align=20 
>> goal=e7ffffff limit=0
>> <6>bootmem::alloc_bootmem_core nid=0 size=1cb0000 [7344 pages] align=20 
>> goal=0 limit=0
>> <1>bootmem alloc of 30081024 bytes failed!
>> <0>Kernel panic - not syncing: Out of memory
>> Backtrace:
>> [<c001c750>] (dump_backtrace+0x0/0x10c) from [<c0120c0c>]  
>> (dump_stack+0x18/0x1c)
>>  r7:00000020 r6:c01618d0 r5:00000000 r4:01cb0000
>> [<c0120bf4>] (dump_stack+0x0/0x1c) from [<c0120c5c>] (panic+0x4c/0x12c)
>> [<c0120c10>] (panic+0x0/0x12c) from [<c000f298>]  
>> (___alloc_bootmem+0x30/0x38)
>>  r3:ffffffff r2:c0156140 r1:600000d3 r0:c0144420
>> [<c000f268>] (___alloc_bootmem+0x0/0x38) from [<c000f310>]  
>> (___alloc_bootmem_node+0x70/0x74)
>>  r5:00000000 r4:c0017280
>> [<c000f2a0>] (___alloc_bootmem_node+0x0/0x74) from [<c000f3ec>]  
>> (__alloc_bootmem_node+0x44/0x90)
>>  r8:c0160de4 r7:01cb0000 r6:e7ffffff r5:00000020 r4:c0160de4
>> [<c000f3a8>] (__alloc_bootmem_node+0x0/0x90) from [<c0120a90>]  
>> (alloc_node_mem_map+0x74/0x90)
> 
> This seems to suggest that sparsemem is still disabled, since
> alloc_bootmem_node will only be called from alloc_node_mem_map
> if FLAT_NODE_MEM_MAP is enabled, and this should not be enabled
> with sparsemem.
> 
> Seeing your .config file might be useful.

Here is the relevant parts:
#
# Automatically generated make config: don't edit
# Linux kernel version: 2.6.32-rc2
# Sat Oct  3 19:44:47 2009
#
CONFIG_ARM=y
CONFIG_SYS_SUPPORTS_APM_EMULATION=y
CONFIG_GENERIC_GPIO=y
CONFIG_GENERIC_HARDIRQS=y
CONFIG_STACKTRACE_SUPPORT=y
CONFIG_HAVE_LATENCYTOP_SUPPORT=y
CONFIG_LOCKDEP_SUPPORT=y
CONFIG_TRACE_IRQFLAGS_SUPPORT=y
CONFIG_HARDIRQS_SW_RESEND=y
CONFIG_GENERIC_IRQ_PROBE=y
CONFIG_RWSEM_GENERIC_SPINLOCK=y
CONFIG_GENERIC_HWEIGHT=y
CONFIG_GENERIC_CALIBRATE_DELAY=y
CONFIG_GENERIC_HARDIRQS_NO__DO_IRQ=y
CONFIG_VECTORS_BASE=0xffff0000
CONFIG_DEFCONFIG_LIST="/lib/modules/$UNAME_RELEASE/.config"
CONFIG_CONSTRUCTORS=y

#
# General setup
#
# CONFIG_EXPERIMENTAL is not set
CONFIG_BROKEN_ON_SMP=y
CONFIG_INIT_ENV_ARG_LIMIT=32
CONFIG_LOCALVERSION="-twm0.0"
# CONFIG_LOCALVERSION_AUTO is not set
CONFIG_SWAP=y
# CONFIG_SYSVIPC is not set
# CONFIG_BSD_PROCESS_ACCT is not set

#
# RCU Subsystem
#
CONFIG_TREE_RCU=y
# CONFIG_TREE_PREEMPT_RCU is not set
# CONFIG_RCU_TRACE is not set
CONFIG_RCU_FANOUT=32
# CONFIG_RCU_FANOUT_EXACT is not set
# CONFIG_TREE_RCU_TRACE is not set
# CONFIG_IKCONFIG is not set
CONFIG_LOG_BUF_SHIFT=17
# CONFIG_CGROUPS is not set
# CONFIG_SYSFS_DEPRECATED_V2 is not set
# CONFIG_RELAY is not set
CONFIG_NAMESPACES=y
# CONFIG_UTS_NS is not set
# CONFIG_BLK_DEV_INITRD is not set
# CONFIG_CC_OPTIMIZE_FOR_SIZE is not set
CONFIG_SYSCTL=y
CONFIG_ANON_INODES=y
# CONFIG_EMBEDDED is not set
CONFIG_UID16=y
CONFIG_SYSCTL_SYSCALL=y
CONFIG_KALLSYMS=y
# CONFIG_KALLSYMS_ALL is not set
# CONFIG_KALLSYMS_EXTRA_PASS is not set
CONFIG_HOTPLUG=y
CONFIG_PRINTK=y
CONFIG_BUG=y
CONFIG_ELF_CORE=y
CONFIG_BASE_FULL=y
CONFIG_FUTEX=y
CONFIG_EPOLL=y
CONFIG_SIGNALFD=y
CONFIG_TIMERFD=y
CONFIG_EVENTFD=y
CONFIG_SHMEM=y
CONFIG_AIO=y

#
# Kernel Performance Events And Counters
#
CONFIG_VM_EVENT_COUNTERS=y
CONFIG_SLUB_DEBUG=y
CONFIG_COMPAT_BRK=y
# CONFIG_SLAB is not set
CONFIG_SLUB=y
# CONFIG_SLOB is not set
# CONFIG_PROFILING is not set
CONFIG_HAVE_OPROFILE=y
CONFIG_HAVE_KPROBES=y
CONFIG_HAVE_KRETPROBES=y
CONFIG_HAVE_CLK=y

#
# GCOV-based kernel profiling
#
# CONFIG_SLOW_WORK is not set
CONFIG_HAVE_GENERIC_DMA_COHERENT=y
CONFIG_SLABINFO=y
CONFIG_RT_MUTEXES=y
CONFIG_BASE_SMALL=0
# CONFIG_MODULES is not set
CONFIG_BLOCK=y
# CONFIG_LBDAF is not set
# CONFIG_BLK_DEV_BSG is not set
# CONFIG_BLK_DEV_INTEGRITY is not set

#
# IO Schedulers
#
CONFIG_IOSCHED_NOOP=y
# CONFIG_IOSCHED_AS is not set
# CONFIG_IOSCHED_DEADLINE is not set
# CONFIG_IOSCHED_CFQ is not set
# CONFIG_DEFAULT_AS is not set
# CONFIG_DEFAULT_DEADLINE is not set
# CONFIG_DEFAULT_CFQ is not set
CONFIG_DEFAULT_NOOP=y
CONFIG_DEFAULT_IOSCHED="noop"
# CONFIG_FREEZER is not set

#
# System Type
#
CONFIG_MMU=y
# CONFIG_ARCH_AAEC2000 is not set
# CONFIG_ARCH_INTEGRATOR is not set
# CONFIG_ARCH_REALVIEW is not set
# CONFIG_ARCH_VERSATILE is not set
# CONFIG_ARCH_AT91 is not set
# CONFIG_ARCH_CLPS711X is not set
# CONFIG_ARCH_GEMINI is not set
# CONFIG_ARCH_EBSA110 is not set
CONFIG_ARCH_EP93XX=y
# CONFIG_ARCH_FOOTBRIDGE is not set
# CONFIG_ARCH_MXC is not set
# CONFIG_ARCH_STMP3XXX is not set
# CONFIG_ARCH_NETX is not set
# CONFIG_ARCH_H720X is not set
# CONFIG_ARCH_NOMADIK is not set
# CONFIG_ARCH_IOP13XX is not set
# CONFIG_ARCH_IOP32X is not set
# CONFIG_ARCH_IOP33X is not set
# CONFIG_ARCH_IXP23XX is not set
# CONFIG_ARCH_IXP2000 is not set
# CONFIG_ARCH_IXP4XX is not set
# CONFIG_ARCH_L7200 is not set
# CONFIG_ARCH_KIRKWOOD is not set
# CONFIG_ARCH_LOKI is not set
# CONFIG_ARCH_MV78XX0 is not set
# CONFIG_ARCH_ORION5X is not set
# CONFIG_ARCH_MMP is not set
# CONFIG_ARCH_KS8695 is not set
# CONFIG_ARCH_NS9XXX is not set
# CONFIG_ARCH_W90X900 is not set
# CONFIG_ARCH_PNX4008 is not set
# CONFIG_ARCH_PXA is not set
# CONFIG_ARCH_MSM is not set
# CONFIG_ARCH_RPC is not set
# CONFIG_ARCH_SA1100 is not set
# CONFIG_ARCH_S3C2410 is not set
# CONFIG_ARCH_S3C64XX is not set
# CONFIG_ARCH_S5PC1XX is not set
# CONFIG_ARCH_SHARK is not set
# CONFIG_ARCH_LH7A40X is not set
# CONFIG_ARCH_U300 is not set
# CONFIG_ARCH_DAVINCI is not set
# CONFIG_ARCH_OMAP is not set
# CONFIG_ARCH_BCMRING is not set

#
# Cirrus EP93xx Implementation Options
#
# CONFIG_CRUNCH is not set
CONFIG_CR1_NFBIT=y

#
# EP93xx Platforms
#
CONFIG_EP93XX_SDCE3_SYNC_PHYS_OFFSET=y
# CONFIG_EP93XX_SDCE0_PHYS_OFFSET is not set
# CONFIG_EP93XX_SDCE1_PHYS_OFFSET is not set
# CONFIG_EP93XX_SDCE2_PHYS_OFFSET is not set
# CONFIG_EP93XX_SDCE3_ASYNC_PHYS_OFFSET is not set
# CONFIG_MACH_ADSSPHERE is not set
# CONFIG_MACH_EDB9301 is not set
# CONFIG_MACH_EDB9302 is not set
# CONFIG_MACH_EDB9307 is not set
# CONFIG_MACH_EDB9312 is not set
# CONFIG_MACH_EDB9315 is not set
# CONFIG_MACH_GESBC9312 is not set
# CONFIG_MACH_MICRO9H is not set
# CONFIG_MACH_MICRO9L is not set
CONFIG_MACH_TS72XX=y
CONFIG_EP93XX_EARLY_UART1=y
# CONFIG_EP93XX_EARLY_UART2 is not set
# CONFIG_EP93XX_EARLY_UART3 is not set
CONFIG_MACH_TS72XX_FORCE_MACHINEID=y

#
# Processor Type
#
CONFIG_CPU_32=y
CONFIG_CPU_ARM920T=y
CONFIG_CPU_32v4T=y
CONFIG_CPU_ABRT_EV4T=y
CONFIG_CPU_PABRT_NOIFAR=y
CONFIG_CPU_CACHE_V4WT=y
CONFIG_CPU_CACHE_VIVT=y
CONFIG_CPU_COPY_V4WB=y
CONFIG_CPU_TLB_V4WBI=y
CONFIG_CPU_CP15=y
CONFIG_CPU_CP15_MMU=y

#
# Processor Features
#
CONFIG_ARM_THUMB=y
# CONFIG_CPU_ICACHE_DISABLE is not set
# CONFIG_CPU_DCACHE_DISABLE is not set
# CONFIG_CPU_DCACHE_WRITETHROUGH is not set
CONFIG_ARM_L1_CACHE_SHIFT=5
CONFIG_ARM_VIC=y
CONFIG_ARM_VIC_NR=2
CONFIG_COMMON_CLKDEV=y

#
# Bus support
#
CONFIG_ARM_AMBA=y
# CONFIG_PCI_SYSCALL is not set
# CONFIG_ARCH_SUPPORTS_MSI is not set
# CONFIG_PCCARD is not set


#
# Kernel Features
#
CONFIG_VMSPLIT_3G=y
# CONFIG_VMSPLIT_2G is not set
# CONFIG_VMSPLIT_1G is not set
CONFIG_PAGE_OFFSET=0xC0000000
CONFIG_PREEMPT_NONE=y
# CONFIG_PREEMPT_VOLUNTARY is not set
# CONFIG_PREEMPT is not set
CONFIG_HZ=100
CONFIG_AEABI=y
CONFIG_ARCH_HAS_HOLES_MEMORYMODEL=y
CONFIG_ARCH_SPARSEMEM_ENABLE=y
CONFIG_ARCH_SPARSEMEM_DEFAULT=y
# CONFIG_ARCH_SELECT_MEMORY_MODEL is not set
CONFIG_FLATMEM=y
CONFIG_FLAT_NODE_MEM_MAP=y
CONFIG_PAGEFLAGS_EXTENDED=y
CONFIG_SPLIT_PTLOCK_CPUS=4096
# CONFIG_PHYS_ADDR_T_64BIT is not set
CONFIG_ZONE_DMA_FLAG=0
CONFIG_VIRT_TO_BUS=y
CONFIG_HAVE_MLOCK=y
CONFIG_HAVE_MLOCKED_PAGE_BIT=y
# CONFIG_KSM is not set
CONFIG_DEFAULT_MMAP_MIN_ADDR=4096
CONFIG_ALIGNMENT_TRAP=y


Chris

^ permalink raw reply	[flat|nested] 8+ messages in thread

* Sparsemem  on EP93XX
  2009-10-03 19:49   ` Christian Gagneraud
@ 2009-10-03 19:54     ` Russell King - ARM Linux
  2009-10-03 20:07       ` Christian Gagneraud
  0 siblings, 1 reply; 8+ messages in thread
From: Russell King - ARM Linux @ 2009-10-03 19:54 UTC (permalink / raw)
  To: linux-arm-kernel

On Sat, Oct 03, 2009 at 08:49:01PM +0100, Christian Gagneraud wrote:
> # CONFIG_EXPERIMENTAL is not set
...
> CONFIG_ARCH_HAS_HOLES_MEMORYMODEL=y
> CONFIG_ARCH_SPARSEMEM_ENABLE=y
> CONFIG_ARCH_SPARSEMEM_DEFAULT=y
> # CONFIG_ARCH_SELECT_MEMORY_MODEL is not set
> CONFIG_FLATMEM=y
> CONFIG_FLAT_NODE_MEM_MAP=y

So yes, flatmem is still enabled... because there's a condition missing
in mm/Kconfig.  Try this patch:

diff --git a/mm/Kconfig b/mm/Kconfig
index 2477607..95b2965 100644
--- a/mm/Kconfig
+++ b/mm/Kconfig
@@ -67,7 +67,7 @@ config DISCONTIGMEM
 
 config SPARSEMEM
 	def_bool y
-	depends on SPARSEMEM_MANUAL
+	depends on (!SELECT_MEMORY_MODEL && ARCH_SPARSEMEM_ENABLE) || SPARSEMEM_MANUAL
 
 config FLATMEM
 	def_bool y

^ permalink raw reply related	[flat|nested] 8+ messages in thread

* Sparsemem  on EP93XX
  2009-10-03 19:41 ` Russell King - ARM Linux
  2009-10-03 19:49   ` Christian Gagneraud
@ 2009-10-03 19:55   ` Christian Gagneraud
  2009-10-03 20:00     ` Russell King - ARM Linux
  1 sibling, 1 reply; 8+ messages in thread
From: Christian Gagneraud @ 2009-10-03 19:55 UTC (permalink / raw)
  To: linux-arm-kernel

Sorry if you get this message twice, but time to time, my emails are 
rejected by caramon.arm.linux.org.uk because of reverse DNS stuff. 
Second time lucky?

Chris

Russell King - ARM Linux wrote:
> On Sat, Oct 03, 2009 at 08:19:48PM +0100, Christian Gagneraud wrote:
>> Hi all,
>>
>> I'm trying to get a TS72XX board working with sparsemem, but got unlucky 
>> so far. I've read all related threads in the archive and especially this 
>> one:
>> http://marc.info/?l=linux-arm&m=122754446724900&w=2
>>
>> Here is the patch I've applied:
>>
>> diff --git a/arch/arm/Kconfig b/arch/arm/Kconfig
>> index 1c4119c..0f1d52f 100644
>> --- a/arch/arm/Kconfig
>> +++ b/arch/arm/Kconfig
>> @@ -288,6 +288,7 @@ config ARCH_EP93XX
>>         select CPU_ARM920T
>>         select ARM_AMBA
>>         select ARM_VIC
>> +       select ARCH_SPARSEMEM_ENABLE
>>         select GENERIC_GPIO
>>         select HAVE_CLK
>>         select COMMON_CLKDEV
> 
> In spite of the above...
> 
>> <7>On node 0 totalpages: 16384
>> <6>bootmem::alloc_bootmem_core nid=0 size=1cb0000 [7344 pages] align=20 
>> goal=e7ffffff limit=0
>> <6>bootmem::alloc_bootmem_core nid=0 size=1cb0000 [7344 pages] align=20 
>> goal=0 limit=0
>> <1>bootmem alloc of 30081024 bytes failed!
>> <0>Kernel panic - not syncing: Out of memory
>> Backtrace:
>> [<c001c750>] (dump_backtrace+0x0/0x10c) from [<c0120c0c>]  
>> (dump_stack+0x18/0x1c)
>>  r7:00000020 r6:c01618d0 r5:00000000 r4:01cb0000
>> [<c0120bf4>] (dump_stack+0x0/0x1c) from [<c0120c5c>] (panic+0x4c/0x12c)
>> [<c0120c10>] (panic+0x0/0x12c) from [<c000f298>]  
>> (___alloc_bootmem+0x30/0x38)
>>  r3:ffffffff r2:c0156140 r1:600000d3 r0:c0144420
>> [<c000f268>] (___alloc_bootmem+0x0/0x38) from [<c000f310>]  
>> (___alloc_bootmem_node+0x70/0x74)
>>  r5:00000000 r4:c0017280
>> [<c000f2a0>] (___alloc_bootmem_node+0x0/0x74) from [<c000f3ec>]  
>> (__alloc_bootmem_node+0x44/0x90)
>>  r8:c0160de4 r7:01cb0000 r6:e7ffffff r5:00000020 r4:c0160de4
>> [<c000f3a8>] (__alloc_bootmem_node+0x0/0x90) from [<c0120a90>]  
>> (alloc_node_mem_map+0x74/0x90)
> 
> This seems to suggest that sparsemem is still disabled, since
> alloc_bootmem_node will only be called from alloc_node_mem_map
> if FLAT_NODE_MEM_MAP is enabled, and this should not be enabled
> with sparsemem.
> 
> Seeing your .config file might be useful.

Here is the relevant parts:
#
# Automatically generated make config: don't edit
# Linux kernel version: 2.6.32-rc2
# Sat Oct  3 19:44:47 2009
#
CONFIG_ARM=y
CONFIG_SYS_SUPPORTS_APM_EMULATION=y
CONFIG_GENERIC_GPIO=y
CONFIG_GENERIC_HARDIRQS=y
CONFIG_STACKTRACE_SUPPORT=y
CONFIG_HAVE_LATENCYTOP_SUPPORT=y
CONFIG_LOCKDEP_SUPPORT=y
CONFIG_TRACE_IRQFLAGS_SUPPORT=y
CONFIG_HARDIRQS_SW_RESEND=y
CONFIG_GENERIC_IRQ_PROBE=y
CONFIG_RWSEM_GENERIC_SPINLOCK=y
CONFIG_GENERIC_HWEIGHT=y
CONFIG_GENERIC_CALIBRATE_DELAY=y
CONFIG_GENERIC_HARDIRQS_NO__DO_IRQ=y
CONFIG_VECTORS_BASE=0xffff0000
CONFIG_DEFCONFIG_LIST="/lib/modules/$UNAME_RELEASE/.config"
CONFIG_CONSTRUCTORS=y

#
# General setup
#
# CONFIG_EXPERIMENTAL is not set
CONFIG_BROKEN_ON_SMP=y
CONFIG_INIT_ENV_ARG_LIMIT=32
CONFIG_LOCALVERSION="-twm0.0"
# CONFIG_LOCALVERSION_AUTO is not set
CONFIG_SWAP=y
# CONFIG_SYSVIPC is not set
# CONFIG_BSD_PROCESS_ACCT is not set

#
# RCU Subsystem
#
CONFIG_TREE_RCU=y
# CONFIG_TREE_PREEMPT_RCU is not set
# CONFIG_RCU_TRACE is not set
CONFIG_RCU_FANOUT=32
# CONFIG_RCU_FANOUT_EXACT is not set
# CONFIG_TREE_RCU_TRACE is not set
# CONFIG_IKCONFIG is not set
CONFIG_LOG_BUF_SHIFT=17
# CONFIG_CGROUPS is not set
# CONFIG_SYSFS_DEPRECATED_V2 is not set
# CONFIG_RELAY is not set
CONFIG_NAMESPACES=y
# CONFIG_UTS_NS is not set
# CONFIG_BLK_DEV_INITRD is not set
# CONFIG_CC_OPTIMIZE_FOR_SIZE is not set
CONFIG_SYSCTL=y
CONFIG_ANON_INODES=y
# CONFIG_EMBEDDED is not set
CONFIG_UID16=y
CONFIG_SYSCTL_SYSCALL=y
CONFIG_KALLSYMS=y
# CONFIG_KALLSYMS_ALL is not set
# CONFIG_KALLSYMS_EXTRA_PASS is not set
CONFIG_HOTPLUG=y
CONFIG_PRINTK=y
CONFIG_BUG=y
CONFIG_ELF_CORE=y
CONFIG_BASE_FULL=y
CONFIG_FUTEX=y
CONFIG_EPOLL=y
CONFIG_SIGNALFD=y
CONFIG_TIMERFD=y
CONFIG_EVENTFD=y
CONFIG_SHMEM=y
CONFIG_AIO=y

#
# Kernel Performance Events And Counters
#
CONFIG_VM_EVENT_COUNTERS=y
CONFIG_SLUB_DEBUG=y
CONFIG_COMPAT_BRK=y
# CONFIG_SLAB is not set
CONFIG_SLUB=y
# CONFIG_SLOB is not set
# CONFIG_PROFILING is not set
CONFIG_HAVE_OPROFILE=y
CONFIG_HAVE_KPROBES=y
CONFIG_HAVE_KRETPROBES=y
CONFIG_HAVE_CLK=y

#
# GCOV-based kernel profiling
#
# CONFIG_SLOW_WORK is not set
CONFIG_HAVE_GENERIC_DMA_COHERENT=y
CONFIG_SLABINFO=y
CONFIG_RT_MUTEXES=y
CONFIG_BASE_SMALL=0
# CONFIG_MODULES is not set
CONFIG_BLOCK=y
# CONFIG_LBDAF is not set
# CONFIG_BLK_DEV_BSG is not set
# CONFIG_BLK_DEV_INTEGRITY is not set

#
# IO Schedulers
#
CONFIG_IOSCHED_NOOP=y
# CONFIG_IOSCHED_AS is not set
# CONFIG_IOSCHED_DEADLINE is not set
# CONFIG_IOSCHED_CFQ is not set
# CONFIG_DEFAULT_AS is not set
# CONFIG_DEFAULT_DEADLINE is not set
# CONFIG_DEFAULT_CFQ is not set
CONFIG_DEFAULT_NOOP=y
CONFIG_DEFAULT_IOSCHED="noop"
# CONFIG_FREEZER is not set

#
# System Type
#
CONFIG_MMU=y
# CONFIG_ARCH_AAEC2000 is not set
# CONFIG_ARCH_INTEGRATOR is not set
# CONFIG_ARCH_REALVIEW is not set
# CONFIG_ARCH_VERSATILE is not set
# CONFIG_ARCH_AT91 is not set
# CONFIG_ARCH_CLPS711X is not set
# CONFIG_ARCH_GEMINI is not set
# CONFIG_ARCH_EBSA110 is not set
CONFIG_ARCH_EP93XX=y
# CONFIG_ARCH_FOOTBRIDGE is not set
# CONFIG_ARCH_MXC is not set
# CONFIG_ARCH_STMP3XXX is not set
# CONFIG_ARCH_NETX is not set
# CONFIG_ARCH_H720X is not set
# CONFIG_ARCH_NOMADIK is not set
# CONFIG_ARCH_IOP13XX is not set
# CONFIG_ARCH_IOP32X is not set
# CONFIG_ARCH_IOP33X is not set
# CONFIG_ARCH_IXP23XX is not set
# CONFIG_ARCH_IXP2000 is not set
# CONFIG_ARCH_IXP4XX is not set
# CONFIG_ARCH_L7200 is not set
# CONFIG_ARCH_KIRKWOOD is not set
# CONFIG_ARCH_LOKI is not set
# CONFIG_ARCH_MV78XX0 is not set
# CONFIG_ARCH_ORION5X is not set
# CONFIG_ARCH_MMP is not set
# CONFIG_ARCH_KS8695 is not set
# CONFIG_ARCH_NS9XXX is not set
# CONFIG_ARCH_W90X900 is not set
# CONFIG_ARCH_PNX4008 is not set
# CONFIG_ARCH_PXA is not set
# CONFIG_ARCH_MSM is not set
# CONFIG_ARCH_RPC is not set
# CONFIG_ARCH_SA1100 is not set
# CONFIG_ARCH_S3C2410 is not set
# CONFIG_ARCH_S3C64XX is not set
# CONFIG_ARCH_S5PC1XX is not set
# CONFIG_ARCH_SHARK is not set
# CONFIG_ARCH_LH7A40X is not set
# CONFIG_ARCH_U300 is not set
# CONFIG_ARCH_DAVINCI is not set
# CONFIG_ARCH_OMAP is not set
# CONFIG_ARCH_BCMRING is not set

#
# Cirrus EP93xx Implementation Options
#
# CONFIG_CRUNCH is not set
CONFIG_CR1_NFBIT=y

#
# EP93xx Platforms
#
CONFIG_EP93XX_SDCE3_SYNC_PHYS_OFFSET=y
# CONFIG_EP93XX_SDCE0_PHYS_OFFSET is not set
# CONFIG_EP93XX_SDCE1_PHYS_OFFSET is not set
# CONFIG_EP93XX_SDCE2_PHYS_OFFSET is not set
# CONFIG_EP93XX_SDCE3_ASYNC_PHYS_OFFSET is not set
# CONFIG_MACH_ADSSPHERE is not set
# CONFIG_MACH_EDB9301 is not set
# CONFIG_MACH_EDB9302 is not set
# CONFIG_MACH_EDB9307 is not set
# CONFIG_MACH_EDB9312 is not set
# CONFIG_MACH_EDB9315 is not set
# CONFIG_MACH_GESBC9312 is not set
# CONFIG_MACH_MICRO9H is not set
# CONFIG_MACH_MICRO9L is not set
CONFIG_MACH_TS72XX=y
CONFIG_EP93XX_EARLY_UART1=y
# CONFIG_EP93XX_EARLY_UART2 is not set
# CONFIG_EP93XX_EARLY_UART3 is not set
CONFIG_MACH_TS72XX_FORCE_MACHINEID=y

#
# Processor Type
#
CONFIG_CPU_32=y
CONFIG_CPU_ARM920T=y
CONFIG_CPU_32v4T=y
CONFIG_CPU_ABRT_EV4T=y
CONFIG_CPU_PABRT_NOIFAR=y
CONFIG_CPU_CACHE_V4WT=y
CONFIG_CPU_CACHE_VIVT=y
CONFIG_CPU_COPY_V4WB=y
CONFIG_CPU_TLB_V4WBI=y
CONFIG_CPU_CP15=y
CONFIG_CPU_CP15_MMU=y

#
# Processor Features
#
CONFIG_ARM_THUMB=y
# CONFIG_CPU_ICACHE_DISABLE is not set
# CONFIG_CPU_DCACHE_DISABLE is not set
# CONFIG_CPU_DCACHE_WRITETHROUGH is not set
CONFIG_ARM_L1_CACHE_SHIFT=5
CONFIG_ARM_VIC=y
CONFIG_ARM_VIC_NR=2
CONFIG_COMMON_CLKDEV=y

#
# Bus support
#
CONFIG_ARM_AMBA=y
# CONFIG_PCI_SYSCALL is not set
# CONFIG_ARCH_SUPPORTS_MSI is not set
# CONFIG_PCCARD is not set


#
# Kernel Features
#
CONFIG_VMSPLIT_3G=y
# CONFIG_VMSPLIT_2G is not set
# CONFIG_VMSPLIT_1G is not set
CONFIG_PAGE_OFFSET=0xC0000000
CONFIG_PREEMPT_NONE=y
# CONFIG_PREEMPT_VOLUNTARY is not set
# CONFIG_PREEMPT is not set
CONFIG_HZ=100
CONFIG_AEABI=y
CONFIG_ARCH_HAS_HOLES_MEMORYMODEL=y
CONFIG_ARCH_SPARSEMEM_ENABLE=y
CONFIG_ARCH_SPARSEMEM_DEFAULT=y
# CONFIG_ARCH_SELECT_MEMORY_MODEL is not set
CONFIG_FLATMEM=y
CONFIG_FLAT_NODE_MEM_MAP=y
CONFIG_PAGEFLAGS_EXTENDED=y
CONFIG_SPLIT_PTLOCK_CPUS=4096
# CONFIG_PHYS_ADDR_T_64BIT is not set
CONFIG_ZONE_DMA_FLAG=0
CONFIG_VIRT_TO_BUS=y
CONFIG_HAVE_MLOCK=y
CONFIG_HAVE_MLOCKED_PAGE_BIT=y
# CONFIG_KSM is not set
CONFIG_DEFAULT_MMAP_MIN_ADDR=4096
CONFIG_ALIGNMENT_TRAP=y


Chris

^ permalink raw reply	[flat|nested] 8+ messages in thread

* Sparsemem  on EP93XX
  2009-10-03 19:55   ` Christian Gagneraud
@ 2009-10-03 20:00     ` Russell King - ARM Linux
  2009-10-03 20:06       ` Christian Gagneraud
  0 siblings, 1 reply; 8+ messages in thread
From: Russell King - ARM Linux @ 2009-10-03 20:00 UTC (permalink / raw)
  To: linux-arm-kernel

On Sat, Oct 03, 2009 at 08:55:06PM +0100, Christian Gagneraud wrote:
> Sorry if you get this message twice, but time to time, my emails are  
> rejected by caramon.arm.linux.org.uk because of reverse DNS stuff.  
> Second time lucky?

Suggest you talk to your mail admin about getting that fixed:

   no IP address found for host 133.155.reserved.hosting365.ie

I can't relax this restriction at my end without the machine dying under
todays excessive spam load.

^ permalink raw reply	[flat|nested] 8+ messages in thread

* Sparsemem  on EP93XX
  2009-10-03 20:00     ` Russell King - ARM Linux
@ 2009-10-03 20:06       ` Christian Gagneraud
  0 siblings, 0 replies; 8+ messages in thread
From: Christian Gagneraud @ 2009-10-03 20:06 UTC (permalink / raw)
  To: linux-arm-kernel

Russell King - ARM Linux wrote:
> On Sat, Oct 03, 2009 at 08:55:06PM +0100, Christian Gagneraud wrote:
>> Sorry if you get this message twice, but time to time, my emails are  
>> rejected by caramon.arm.linux.org.uk because of reverse DNS stuff.  
>> Second time lucky?
> 
> Suggest you talk to your mail admin about getting that fixed:
> 
>    no IP address found for host 133.155.reserved.hosting365.ie

OK, I have to look at this, but it seems actually to happen only if 
linux-arm-kernel at lists.infradead.org is in CC, not if it is in TO. For 
testing purpose, this email is sent to the list and you are CC.
The previous one was send to you and CC to the ML.

Thanks,
Chris
> 
> I can't relax this restriction at my end without the machine dying under
> todays excessive spam load.

^ permalink raw reply	[flat|nested] 8+ messages in thread

* Sparsemem  on EP93XX
  2009-10-03 19:54     ` Russell King - ARM Linux
@ 2009-10-03 20:07       ` Christian Gagneraud
  0 siblings, 0 replies; 8+ messages in thread
From: Christian Gagneraud @ 2009-10-03 20:07 UTC (permalink / raw)
  To: linux-arm-kernel

Russell King - ARM Linux wrote:
> On Sat, Oct 03, 2009 at 08:49:01PM +0100, Christian Gagneraud wrote:
>> # CONFIG_EXPERIMENTAL is not set
> ...
>> CONFIG_ARCH_HAS_HOLES_MEMORYMODEL=y
>> CONFIG_ARCH_SPARSEMEM_ENABLE=y
>> CONFIG_ARCH_SPARSEMEM_DEFAULT=y
>> # CONFIG_ARCH_SELECT_MEMORY_MODEL is not set
>> CONFIG_FLATMEM=y
>> CONFIG_FLAT_NODE_MEM_MAP=y
> 
> So yes, flatmem is still enabled... because there's a condition missing
> in mm/Kconfig.  Try this patch:
> 
> diff --git a/mm/Kconfig b/mm/Kconfig
> index 2477607..95b2965 100644
> --- a/mm/Kconfig
> +++ b/mm/Kconfig
> @@ -67,7 +67,7 @@ config DISCONTIGMEM
>  
>  config SPARSEMEM
>  	def_bool y
> -	depends on SPARSEMEM_MANUAL
> +	depends on (!SELECT_MEMORY_MODEL && ARCH_SPARSEMEM_ENABLE) || SPARSEMEM_MANUAL
>  
>  config FLATMEM
>  	def_bool y

Yeah!!! It works now! :)

Thank you very much!

Chris.

> 
> 
> _______________________________________________
> linux-arm-kernel mailing list
> linux-arm-kernel at lists.infradead.org
> http://lists.infradead.org/mailman/listinfo/linux-arm-kernel

^ permalink raw reply	[flat|nested] 8+ messages in thread

end of thread, other threads:[~2009-10-03 20:07 UTC | newest]

Thread overview: 8+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2009-10-03 19:19 Sparsemem on EP93XX Christian Gagneraud
2009-10-03 19:41 ` Russell King - ARM Linux
2009-10-03 19:49   ` Christian Gagneraud
2009-10-03 19:54     ` Russell King - ARM Linux
2009-10-03 20:07       ` Christian Gagneraud
2009-10-03 19:55   ` Christian Gagneraud
2009-10-03 20:00     ` Russell King - ARM Linux
2009-10-03 20:06       ` Christian Gagneraud

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).