Hi all,

Nice to talk to everyone at the online Hurd party!

Thanks to Samuel for fine grained review/debugging yesterday:

With this v4 patch series that trumps all my previous attempts,
we have 64b SMP booting to userspace, (well almost...)

There are two known remaining issues with this patchset:

1. There is a problem with the recent changes regarding
   _Xmach_port_set_ktype -> ipc_kobject_set that causes a hang
   only on SMP kernels, which can be temporarily worked around by
   reverting commit:
   fdfca0e8 "Add mach_port_set_ktype RPC to set ktype of a user port"
   but we really ought to dig into it and fix this.

2. There is a page fault in 64b SMP when attempting to boot with
   multiple cpus, but this is a vast improvement from not being
   able to compile a 64b SMP kernel at all.

TESTED:

UP+apic i386: boots

UP+apic x86_64: boots

SMP+apic -smp 1 i386
[   3.2700050] cd0(ahcisata0:2:0): using PIO mode 4, DMA mode 2, Ultra-DMA mode 
5 (Ultra/100) (using DMA), NCQ (31 tags)
^D
Stopped at  ipc_kobject_set+0x22:       movl    0(%edx),%eax
ipc_kobject_set(f5fac168,0,1c,f5409ec4,f5bf4e78)+0x22
mach_port_set_ktype(c10be720,f5bf4e70,4d,1,1c)+0x87
_Xmach_port_set_ktype(f6185010,fa0aa010,1,f6185048,3b9ac9ff)+0xab
ipc_kobject_server(f6185000,f5bf4e70,f5bdbea0,0)+0x93
mach_msg_trap(bfffbba4,3,38,20,5)+0x73f
\>>>>> user space <<<<<
db{0}>
(but boots with mentioned commit reverted)

SMP+apic -smp 6 i386
[   3.2900050] cd0(ahcisata0:2:0): using PIO mode 4, DMA mode 2, Ultra-DMA mode 
5 (Ultra/100) (using DMA), NCQ (31 tags)
^D
Stopped at  ipc_kobject_set+0x24:       testl   %eax,%eax
ipc_kobject_set(f67fb530,0,1c,f5bdbec4,f5bf4e78)+0x24
mach_port_set_ktype(c10be720,f5bf4e70,4d,1,1c)+0x87
_Xmach_port_set_ktype(f6195010,fa09a010,1,f6195048,3b9ac9ff)+0xab
ipc_kobject_server(f6195000,f5bf4e70,f5bd5ea0,0)+0x93
mach_msg_trap(bfffbba4,3,38,20,5)+0x73f
\>>>>> user space <<<<<
db{0}>
(but boots with mentioned commit reverted)

SMP+apic -smp 1 x86_64
[   3.2800050] cd0(ahcisata0:2:0): using PIO mode 4, DMA mode 2, Ultra-DMA mode 
5 (Ultra/100) (using DMA), NCQ (31 tags)
^D
Stopped at  ipc_kobject_set+0x12:       TODO
ipc_kobject_set(...)+0x12
_Xmach_port_set_ktype(...)+0xc3
ipc_kobject_server(...)+0xac
mach_msg_trap(...)+0x7b3
syscall64(...)+0xea
\>>>>> user space <<<<<
db{0}>
(but boots with mentioned commit reverted)

SMP+apic -smp 6 x86_64
[   1.0000050] ahcisata0: 64-bit DMA
trace/tu
Debugger(...)+0x15
Panic(...)+0x10f
kernel_trap(ffffffffdc2e0e78)+0x25c
\>>>>> Page fault (14) for  4000000036 at 0x4000000036 <<<<<
0x4000000036(
no memory is assigned to address 4000000036
...)
\>>>>> user space <<<<<
0x0()
db{4}>
(does not quite boot)

Thanks,
Damien




Reply via email to