Two tests have confirmed that the nvidia driver DKMS package security patches are the cause of the breakage to nvclock/smartdimmer. The upshot is that maybe 'nvclock' should be removed from the archives since the security patches
appear sane and are important to protect most users.
After reversing the recent security update patch 'smartdimmer' was able to request all but one memory region - PRAMIN.
After also removing from the base nvidia package the blacklist for IS_REG_RANGE_WITHIN_MAPPING(nv, 0x700000, 0x100000, offset, length) the program was able to map all memory successfully.
Unfortunately another SIGSEGV occurs whilst calling getpagesize() in unmap_dev_mem() for PCIO (140737354022912 is 0x7ffff7fe4000). I'm not clear how or why getpagesize() should SIGSEGV.
...
(gdb) c
Continuing.
OK: map_mem(): PCIO register 0xd5601000 requested 0x2000 and received 0x2000 after 0 attempts at 0x7ffff7fe4000
Breakpoint 7, map_dev_mem (dev=0x61f0d0, map=0x7fffffffe250) at back_linux.c:266
(gdb) c
...
Program received signal SIGSEGV, Segmentation fault.
0x00007ffff75c35fb in __GI___getpagesize () at ../sysdeps/unix/sysv/linux/getpagesize.c:31
31 ../sysdeps/unix/sysv/linux/getpagesize.c: No such file or directory.
(gdb) bt full
#0 0x00007ffff75c35fb in __GI___getpagesize () at ../sysdeps/unix/sysv/linux/getpagesize.c:31 __PRETTY_FUNCTION__ = "__getpagesize"
#1 0x000000000040c27a in unmap_dev_mem (Base=140737354022912, Size=8192) at back_linux.c:292
alignOff = 0
#2 0x0000000000401f43 in unmap_mem () at backend.c:150
No locals.
#3 0x00000000004022dd in unset_card () at backend.c:252
No locals.
#4 0x000000000040dd83 in create_config (file=0x61f030 "/home/tj/.nvclock/config") at config.c:611
section = "hw0"
bios = "/home/tj/.nvclock/bios0.rom\000\377\177\000\000\020\360a\000\000\000\000\000\a\000\000\000\000\000\000\000\200\343\377\377\377\177\000\000\020\360a\000\000\000\000\000\001\000\000\000\000\000\000\000A\360a\000\000\000\000"
base_freq = 27000
i = 0
#5 0x000000000040d013 in open_config () at config.c:309
file = 0x61f030 "/home/tj/.nvclock/config"
home = 0x7fffffffef22 "/home/tj"
stat_buf = {st_dev = 34, st_ino = 1417714, st_nlink = 2, st_mode = 16877, st_uid = 1000, st_gid = 1000, __pad0 = 0,
st_rdev = 0, st_size = 4096, st_blksize = 4096, st_blocks = 8, st_atim = {tv_sec = 1345644438, tv_nsec = 0}, st_mtim = {
tv_sec = 1345749948, tv_nsec = 0}, st_ctim = {tv_sec = 1345749948, tv_nsec = 0}, __unused = {0, 0, 0}}
#6 0x000000000040ba6c in init_nvclock () at back_linux.c:108
nv_driver = 2
#7 0x00000000004016ff in sd_init () at smartdimmer.c:74
No locals.
#8 0x00000000004018a8 in main (argc=2, argv=0x7fffffffe5d8) at smartdimmer.c:132
optind = 0
options = 2
setvalue = 0
c = -1
Two tests have confirmed that the nvidia driver DKMS package security patches are the cause of the breakage to nvclock/ smartdimmer. The upshot is that maybe 'nvclock' should be removed from the archives since the security patches
appear sane and are important to protect most users.
After reversing the recent security update patch 'smartdimmer' was able to request all but one memory region - PRAMIN.
After also removing from the base nvidia package the blacklist for IS_REG_ RANGE_WITHIN_ MAPPING( nv, 0x700000, 0x100000, offset, length) the program was able to map all memory successfully.
Unfortunately another SIGSEGV occurs whilst calling getpagesize() in unmap_dev_mem() for PCIO (140737354022912 is 0x7ffff7fe4000). I'm not clear how or why getpagesize() should SIGSEGV.
...
(gdb) c
Continuing.
OK: map_mem(): PCIO register 0xd5601000 requested 0x2000 and received 0x2000 after 0 attempts at 0x7ffff7fe4000
Breakpoint 7, map_dev_mem (dev=0x61f0d0, map=0x7fffffffe250) at back_linux.c:266
(gdb) c
...
Program received signal SIGSEGV, Segmentation fault. unix/sysv/ linux/getpagesi ze.c:31 unix/sysv/ linux/getpagesi ze.c: No such file or directory. unix/sysv/ linux/getpagesi ze.c:31
__PRETTY_ FUNCTION_ _ = "__getpagesize" 022912, Size=8192) at back_linux.c:292 tj/.nvclock/ config" ) at config.c:611 tj/.nvclock/ bios0.rom\ 000\377\ 177\000\ 000\020\ 360a\000\ 000\000\ 000\000\ a\000\000\ 000\000\ 000\000\ 000\200\ 343\377\ 377\377\ 177\000\ 000\020\ 360a\000\ 000\000\ 000\000\ 001\000\ 000\000\ 000\000\ 000\000A\ 360a\000\ 000\000\ 000" tj/.nvclock/ config" e5d8) at smartdimmer.c:132
0x00007ffff75c35fb in __GI___getpagesize () at ../sysdeps/
31 ../sysdeps/
(gdb) bt full
#0 0x00007ffff75c35fb in __GI___getpagesize () at ../sysdeps/
#1 0x000000000040c27a in unmap_dev_mem (Base=140737354
alignOff = 0
#2 0x0000000000401f43 in unmap_mem () at backend.c:150
No locals.
#3 0x00000000004022dd in unset_card () at backend.c:252
No locals.
#4 0x000000000040dd83 in create_config (file=0x61f030 "/home/
section = "hw0"
bios = "/home/
base_freq = 27000
i = 0
#5 0x000000000040d013 in open_config () at config.c:309
file = 0x61f030 "/home/
home = 0x7fffffffef22 "/home/tj"
stat_buf = {st_dev = 34, st_ino = 1417714, st_nlink = 2, st_mode = 16877, st_uid = 1000, st_gid = 1000, __pad0 = 0,
st_rdev = 0, st_size = 4096, st_blksize = 4096, st_blocks = 8, st_atim = {tv_sec = 1345644438, tv_nsec = 0}, st_mtim = {
tv_sec = 1345749948, tv_nsec = 0}, st_ctim = {tv_sec = 1345749948, tv_nsec = 0}, __unused = {0, 0, 0}}
#6 0x000000000040ba6c in init_nvclock () at back_linux.c:108
nv_driver = 2
#7 0x00000000004016ff in sd_init () at smartdimmer.c:74
No locals.
#8 0x00000000004018a8 in main (argc=2, argv=0x7fffffff
optind = 0
options = 2
setvalue = 0
c = -1