I would have been ok with releasing this as the final 38, but I'm
going to be partially unreachable for several days next week, so I
felt there was no point in opening the merge window yet.
Also, we do have regressions. Some of them hopefully fixed here, but
it won't hurt to give it another week.
Not everything here is strictly a regression: the i_nlink fixes are
long-standing races (very unlikely ones, admittedly), and the alpha
updates just convert the irq chip descriptions so that we can enable
GENERIC_HARDIRQS_NO_DEPRECATED on alpha too. But most everything is
pretty simple, and the diffstat is fairly flat with nothing huge that
stands out.
40% drivers, 35% arch updates (alpha and arm), with the rest being fs,
net and some block layer updates.
So please keep testing,
Linus
---
Aaro Koskinen (1):
arm: mach-omap2: smartreflex: fix another memory leak
Al Viro (8):
sysv: i_nlink races in rename()
ufs: i_nlink races in rename()
minix: i_nlink races in rename()
nilfs2: i_nlink races in rename()
exofs: i_nlink races in rename()
fix reiserfs mkdir() breakage
udf: fix i_nlink limit
hfs: fix rename() over non-empty directory
Alex Elder (1):
xfs: zero proper structure size for geometry calls
Alexandre Bounine (1):
RapidIO: Update MAINTAINERS
Amit Shah (1):
virtio: console: Don't access vqs if device was unplugged
Andi Kleen (4):
mm: change alloc_pages_vma to pass down the policy node for local policy
mm: add alloc_page_vma_node()
mm: preserve original node for transparent huge page copies
mm: use correct numa policy node for transparent hugepages
Andres Salomon (2):
x86: OLPC: have prom_early_alloc BUG rather than return NULL
of/promtree: allow DT device matching by fixing 'name' brokenness (v5)
Andrey Vagin (1):
netlink: handle errors from netlink_dump()
Anton Blanchard (2):
powerpc/kexec: Restore ppc_md.machine_kexec
RxRPC: Fix v1 keys
Arnaldo Carvalho de Melo (1):
dccp: Change maintainer
Axel Lin (5):
net/fec: fix unterminated platform_device_id table
davinci: cpufreq: fix section mismatch warning
drivers/rtc/rtc-s3c.c: fix prototype for s3c_rtc_setaie()
drivers/misc/bmp085.c: add MODULE_DEVICE_TABLE
drivers/video/backlight/ltv350qv.c: fix a memory leak
Banajit Goswami (1):
ARM: S5P64X0: Fix number of GPIO lines in Bank F
Ben Dooks (3):
ARM: S3C64XX: Fix keypad setup to configure correct number of rows
ARM: S3C64XX: Add clock for i2c1
ARM: S3C64XX: Reduce output of s3c64xx_dma_init1()
Ben Hutchings (1):
block: fix kernel-doc format for blkdev_issue_zeroout
Ben Skeggs (3):
drm/nouveau: allocate kernel's notifier object at end of block
drm/nouveau: fix regression causing ttm to not be able to evict vram
drm/nv50-nvc0: prevent multiple vm/bar flushes occuring simultanenously
Bruce Allan (1):
e1000e: disable broken PHY wakeup for ICH10 LOMs, use MAC wakeup instead
Chih-Wei Huang (1):
ALSA: hda - Fix unable to record issue on ASUS N82JV
Chris Wilson (4):
Revert "drm/i915: fix corruptions on i8xx due to relaxed fencing"
drm/i915: Do not overflow the MMADDR write FIFO
drm/i915: Disable GPU semaphores by default
drm/i915: Rebind the buffer if its alignment constraints changes
with tiling
Christian Lamparter (1):
p54usb: add Senao NUB-350 usbid
Dan Carpenter (1):
[S390] keyboard: integer underflow bug
Dave Jones (1):
[CPUFREQ] Fix another notifier leak in powernow-k8.
Dave Kleikamp (1):
MAINTAINERS: Update shaggy's email address
David Henningsson (1):
ALSA: HDA: Realtek: Fixup jack detection to input subsystem
David Howells (2):
AF_RXRPC: Handle receiving ACKALL packets
DNS: Fix a NULL pointer deref when trying to read an error key
[CVE-2011-1076]
Dimitris Papastamos (2):
ASoC: WM8994: Don't disable the AIF[1|2]CLK_ENA unconditionaly
ASoC: WM8994: Ensure late enable events are processed for the ADCs
Dmitry Eremin-Solenikov (4):
ARM: pxa/tosa: drop setting LED trigger name, as it's unsupported now
ARM: pxa/colibri: don't register pxa2xx-pcmcia nodes on
non-colibri platforms
ARM: pxa: enable pxa-pcm-audio on pxa210/pxa25x platform
ARM: pxa/tosa: register wm9712 codec device
Dmitry Kravkov (5):
bnx2x: (NPAR mode) Fix FW initialization
bnx2x: Fix nvram test for single port devices.
bnx2x: Fix ethtool -t link test for MF (non-pmf) devices.
bnx2x: properly configure coefficients for MinBW algorithm (NPAR mode).
bnx2x: update driver version to 1.62.00-6
Dmitry Shmidt (1):
mmc: sdio: Allow sdio operations in other threads during sdio_add_func()
Francesco Virlinzi (1):
sh: Change __nosave_XXX symbols to long
Fry, Donald H (1):
iwlagn: Support new 5000 microcode.
Gerrit Renker (1):
dccp: fix oops on Reset after close
Hagen Paul Pfeifer (1):
net: handle addr_type of 0 properly
Hari Kanigeri (1):
omap: mailbox: resolve hang issue
Hegde, Vinay (1):
davinci_emac: Add Carrier Link OK check in Davinci RX Handler
Hirosh Dabui (1):
davinci: tnetv107x: fix register indexing for GPIOs numbers > 31
Ilya Yanok (1):
dnet: fix wrong use of platform_set_drvdata()
Jamie Iles (1):
macb: don't use platform_set_drvdata() on a net_device
Jan Engelhardt (1):
netfilter: nf_log: avoid oops in (un)bind with invalid nfproto values
Jan Niehusmann (1):
drm/i915: fix memory corruption with GM965 and >4GB RAM
Jan Puk (1):
carl9170: add Airlive X.USB a/b/g/n USBID
Jay Vosburgh (1):
MAINTAINERS: Add Andy Gospodarek as co-maintainer.
Jeff Kirsher (1):
igb: fix sparse warning
Jiri Slaby (1):
[CPUFREQ] fix BUG on cpufreq policy init failure
Jochen Friedrich (1):
mfd: Fix NULL pointer due to non-initialized ucb1x00-ts absinfo
John Fastabend (1):
net: dcbnl: check correct ops in dcbnl_ieee_set()
Josh Hunt (1):
ext2: Fix link count corruption under heavy link+rename load
Julian Anastasov (1):
ipvs: fix dst_lock locking on dest update
Jussi Kivilinna (1):
rndis_wlan: use power save only for BCM4320b
Justin Mattock (1):
drivers:isdn:istream.c Fix typo pice to piece
K.Prasad (1):
powerpc: Fix call to flush_ptrace_hw_breakpoint()
Ken Kawasaki (1):
fmvj18x_cs: add new id
Kukjin Kim (2):
ARM: 6761/1: Update number of VIC for S5PV210
ARM: 6762/1: Update number of VIC for S5P6442 and S5PC100
Kuninori Morimoto (4):
ARM: mach-shmobile: ap4evb: fixup memory initialize for zboot
ARM: mach-shmobile: mackerel: fixup memory initialize for zboot
ARM: mach-shmobile: ap4evb: modify LCDC clock divider value
ARM: mach-shmobile: mackerel: modify LCDC clock divider value
Kurt Van Dijck (1):
CAN: add controller hardware name for Softing cards
Kyungmin Park (1):
MAINTAINERS: add maintainer of Samsung Mobile Machine support
Lars Ellenberg (1):
net: fix nla_policy_len to actually _iterate_ over the policy
Lars-Peter Clausen (2):
ARM: S3C2440: Select missing S3C_DEV_USB_HOST on GTA02
ARM: S3C2440: Fix usage gpio bank j pin definitions on GTA02
Len Brown (2):
intel_idle: disable NHM/WSM HW C-state auto-demotion
intel_idle: disable Atom/Lincroft HW C-state auto-demotion
Lennert Buytenhek (1):
mfd: Fix ASIC3 build with GENERIC_HARDIRQS_NO_DEPRECATED
Li Zefan (1):
cpuset: add a missing unlock in cpuset_write_resmask()
Linus Torvalds (2):
Mark ptrace_{traceme,attach,detach} static
Linux 2.6.38-rc8
Lucian Adrian Grijincu (1):
sysctl: ipv6: use correct net in ipv6_sysctl_rtcache_flush
Magnus Damm (2):
ARM: mach-shmobile: AG5EVM MIPI-DSI LCD reset delay fix
ARM: mach-shmobile: Add sh73a0 MIPI-CSI and CEU clocks
Manjunathappa, Prakash (1):
mfd: Fix DaVinci voice codec device name
Mark Brown (7):
ASoC: Fix WM9081 platform data initialisation
mfd: Don't suspend WM8994 if the CODEC is not suspended
ARM: SAMSUNG: Include devs.h in dev-uart.c to prototype devices
ARM: S3C64XX: Staticise non-exported GPIO to interrupt functions
ARM: S3C64XX: Tone down SDHCI debugging
ARM: S3C64XX: Fix build with WM1190 disabled and WM1192 enabled
on SMDK6410
ARM: S3C64XX: Update regulator names for debugfs compatiblity on SMDK6410
Martin Schwidefsky (2):
[S390] xpram: remove __initdata attribute from module parameters
[S390] tape: deadlock on system work queue
Michael Chan (2):
cnic: Prevent status block race conditions with hardware
cnic: Fix lost interrupt on bnx2x
Michal Simek (1):
of: Add missing of_address.h to xilinx ehci driver
Mike Frysinger (2):
Blackfin: outs[lwb]: make sure count is greater than 0
Blackfin: iflush: update anomaly 05000491 workaround
Morten Holst Larsen (1):
Fix typo in call to irq_to_desc()
Naga Chumbalkar (1):
[CPUFREQ] p4-clockmod: print EST-capable warning message only once
Neil Brown (1):
[CPUFREQ] Missing "unregister_cpu_notifier" in powernow-k8.c
Neil Horman (1):
nfs4: Ensure that ACL pages sent over NFS were not allocated
from the slab (v3)
Nicolas Pitre (1):
ARM: 6765/1: remove obsolete comment from asm/mach/arch.h
Nobuhiro Iwamatsu (2):
sh: sh7750: move machtypes.h to include/generated
sh: sh7750: Fix incompatible pointer type
Paul Bolle (1):
of/flattree: Drop an uninteresting message to pr_debug level
Peter Zijlstra (1):
powerpc/mm: Make hpte_need_flush() safe for preemption
Petr Uzel (1):
block: kill loop_mutex
Rafael J. Wysocki (1):
ACPI / ACPICA: Implicit notify for multiple devices
Rajashekhara, Sudhakar (1):
davinci: da8xx/omap-l1x: add platform device for davinci-pcm-audio
Randy Dunlap (1):
net: update Documentation/networking/00-INDEX
Richard Samson (1):
ALSA: hda - add new Fermi 5xx codec IDs to snd-hda
Ryusuke Konishi (1):
nilfs2: fix regression that i-flag is not set on changeless checkpoints
R?mi Denis-Courmont (1):
f_phonet: avoid pskb_pull(), fix OOPS with CONFIG_HIGHMEM
Sage Weil (9):
Revert "ceph: keep reference to parent inode on ceph_dentry"
ceph: do not set I_COMPLETE
ceph: do not clear I_COMPLETE from d_release
libceph: fix handling of short returns from get_user_pages
libceph: retry after authorization failure
libceph: fix msgr backoff
libceph: fix msgr keepalive flag
libceph: fix msgr standby handling
ceph: no .snap inside of snapped namespace
Sergei Shtylyov (1):
DaVinci: fix compilation warnings in <mach/clkdev.h>
Shweta Gulati (1):
OMAP2+: PM: SmartReflex: fix memory leaks in Smartreflex driver
Stanislaw Gruszka (2):
ath9k: correct ath9k_hw_set_interrupts
r8169: disable ASPM
Stephen Hemminger (2):
skge: don't mark carrier down at start
e1000: fix sparse warning
Stuart Menefy (2):
sh: Ensure ST40-300 BogoMIPS value is consistent
sh: Flush executable pages in copy_user_highpage
Sujith Manoharan (1):
ath9k_htc: Fix an endian issue
Takashi Iwai (1):
ALSA: hda - Don't set to D3 in Cirrus errata init verbs
Tao Ma (1):
blktrace: Remove blk_fill_rwbs_rq.
Tejun Heo (2):
block: add @force_kblockd to __blk_run_queue()
block: blk-flush shouldn't call directly into q->request_fn()
__blk_run_queue()
Thomas Gleixner (19):
alpha: Pyxis convert irq_chip functions
alpha: srm: Convert irq_chip functions
alpha: i8259, alcor, jensen wildfire: Convert irq_chip
alpha: cabriolet: Convert irq_chip functions
alpha: dp264: Convert irq_chip functions
alpha: eb64p: Convert irq_chip functions
alpha: eiger: Convert irq_chip functions
alpha: marvel: Convert irq_chip functions
alpha: mikasa: Convert irq_chip functions
alpha: rawhide: Convert irq_chip functions
alpha: noritake: Convert irq_chip functions
alpha: rx164: Convert irq_chip functions
alpha: sable: Convert irq_chip functions
alpha: takara: Convert irq_chip functions
alpha: titan: Convert irq_chip functions
alpha: irq: Remove pointless irq status manipulation
alpha: irq: Convert affinity to use irq_data
alpha: Enable GENERIC_HARDIRQS_NO_DEPRECATED
pps: make pps_gen_parport depend on BROKEN
Uwe Kleine-K?nig (1):
ARM: 6757/1: fix tlb.h induced linux/swap.h build failure
Vasiliy Kulikov (1):
ACPI / debugfs: Fix buffer overflows, double free
Vivek Goyal (1):
blk-throttle: Do not use kblockd workqueue for throtl work
Vladislav Zolotarov (3):
bnx2x: Add a missing bit for PXP parity register of 57712.
bnx2x: perform statistics "action" before state transition.
bnx2x: properly calculate lro_mss
Will Deacon (2):
ARM: 6767/1: ptrace: fix register indexing in GETHBPREGS request
ARM: 6768/1: hw_breakpoint: ensure debug logic is powered up on v7 cores
roel (1):
drm: index i shadowed in 2nd loop
[email protected] (1):
mfd: Avoid tps6586x burst writes
Happened at boot.
[drm] Initialized drm 1.1.0 20060810
nouveau 0000:01:00.0: PCI INT A -> GSI 16 (level, low) -> IRQ 16
nouveau 0000:01:00.0: setting latency timer to 64
[drm] nouveau 0000:01:00.0: Detected an NV50 generation card (0x450100a2)
[drm] nouveau 0000:01:00.0: Attempting to load BIOS image from PRAMIN
[drm] nouveau 0000:01:00.0: ... appears to be valid
[drm] nouveau 0000:01:00.0: BIT BIOS found
[drm] nouveau 0000:01:00.0: Bios version 60.80.13.00
[drm] nouveau 0000:01:00.0: TMDS table version 2.0
[drm] nouveau 0000:01:00.0: BIT table 'd' not found
[drm] nouveau 0000:01:00.0: Found Display Configuration Block version 4.0
[drm] nouveau 0000:01:00.0: Raw DCB entry 0: 04000320 00000028
[drm] nouveau 0000:01:00.0: Raw DCB entry 1: 01000322 00000030
[drm] nouveau 0000:01:00.0: Raw DCB entry 2: 02011310 00000028
[drm] nouveau 0000:01:00.0: Raw DCB entry 3: 02011312 00000030
[drm] nouveau 0000:01:00.0: Raw DCB entry 4: 010223f1 00c1c020
[drm] nouveau 0000:01:00.0: DCB connector table: VHER 0x40 5 6 2
[drm] nouveau 0000:01:00.0: 0: 0x00001030: type 0x30 idx 0 tag 0x07
[drm] nouveau 0000:01:00.0: 1: 0x00002130: type 0x30 idx 1 tag 0x08
[drm] nouveau 0000:01:00.0: 2: 0x00000210: type 0x10 idx 2 tag 0xff
[drm] nouveau 0000:01:00.0: 3: 0x00000211: type 0x11 idx 3 tag 0xff
[drm] nouveau 0000:01:00.0: 4: 0x00000213: type 0x13 idx 4 tag 0xff
[drm] nouveau 0000:01:00.0: Parsing VBIOS init table 0 at offset 0xBC7E
[drm] nouveau 0000:01:00.0: Parsing VBIOS init table 1 at offset 0xBE86
[drm] nouveau 0000:01:00.0: Parsing VBIOS init table 2 at offset 0xD041
[drm] nouveau 0000:01:00.0: Parsing VBIOS init table 3 at offset 0xD130
[drm] nouveau 0000:01:00.0: Parsing VBIOS init table 4 at offset 0xD2E7
[drm] nouveau 0000:01:00.0: Parsing VBIOS init table at offset 0xD34C
[drm] nouveau 0000:01:00.0: 0xD34C: Condition still not met after 20ms, skipping following opcodes
[drm] nouveau 0000:01:00.0: 1 available performance level(s)
[drm] nouveau 0000:01:00.0: 0: memory 900MHz core 576MHz shader 1350MHz voltage 1300mV fanspeed 100%
[drm] nouveau 0000:01:00.0: c: memory 396MHz core 198MHz shader 1188MHz
[TTM] Zone kernel: Available graphics memory: 4074414 kiB.
[TTM] Zone dma32: Available graphics memory: 2097152 kiB.
[TTM] Initializing pool allocator.
[drm] nouveau 0000:01:00.0: Detected 768MiB VRAM
mtrr: type mismatch for d0000000,10000000 old: write-back new: write-combining
[drm] nouveau 0000:01:00.0: 512 MiB GART (aperture)
[drm] nouveau 0000:01:00.0: DCB encoder 1 unknown
[drm] nouveau 0000:01:00.0: TV-1 has no encoders, removing
[drm] Supports vblank timestamp caching Rev 1 (10.10.2010).
[drm] No driver support for vblank timestamp query.
=========================================================
[ INFO: possible irq lock inversion dependency detected ]
2.6.38-rc8 #9
---------------------------------------------------------
kworker/0:1/0 just changed the state of lock:
(&(&dev_priv->context_switch_lock)->rlock){-.....}, at: [<ffffffff812a6727>] nouveau_irq_handler+0x57/0x150
but this lock took another, HARDIRQ-unsafe lock in the past:
(&(&dev_priv->ramin_lock)->rlock){+.+...}
and interrupts could create inverse lock ordering between them.
other info that might help us debug this:
no locks held by kworker/0:1/0.
the shortest dependencies between 2nd lock and 1st lock:
-> (&(&dev_priv->ramin_lock)->rlock){+.+...} ops: 24866 {
HARDIRQ-ON-W at:
[<ffffffff8109ba2e>] __lock_acquire+0xbee/0x1c40
[<ffffffff8109cada>] lock_acquire+0x5a/0x70
[<ffffffff814c5846>] _raw_spin_lock+0x36/0x50
[<ffffffff812a555b>] nouveau_gpuobj_new+0xab/0x2e0
[<ffffffff813011de>] nv50_instmem_init+0x12e/0x6d0
[<ffffffff812a0c86>] nouveau_card_init+0x446/0x1680
[<ffffffff812a22f3>] nouveau_load+0x433/0x700
[<ffffffff8128b08a>] drm_get_pci_dev+0x18a/0x2a0
[<ffffffff814bf023>] nouveau_pci_probe+0x10/0x12
[<ffffffff8120ffe2>] local_pci_probe+0x12/0x20
[<ffffffff812102a0>] pci_device_probe+0x80/0xb0
[<ffffffff81325c09>] driver_probe_device+0x89/0x1a0
[<ffffffff81325dbb>] __driver_attach+0x9b/0xa0
[<ffffffff813252f8>] bus_for_each_dev+0x68/0x90
[<ffffffff81325a49>] driver_attach+0x19/0x20
[<ffffffff81324b68>] bus_add_driver+0x1a8/0x270
[<ffffffff813260a8>] driver_register+0x78/0x140
[<ffffffff81210521>] __pci_register_driver+0x61/0xe0
[<ffffffff8128b26a>] drm_pci_init+0xca/0xe0
[<ffffffff81283f13>] drm_init+0x53/0x70
[<ffffffff818fc779>] nouveau_init+0x48/0x4a
[<ffffffff818de5f6>] do_one_initcall+0x7a/0x12e
[<ffffffff818de80c>] kernel_init+0x142/0x1c6
[<ffffffff81032f14>] kernel_thread_helper+0x4/0x10
SOFTIRQ-ON-W at:
[<ffffffff8109ba64>] __lock_acquire+0xc24/0x1c40
[<ffffffff8109cada>] lock_acquire+0x5a/0x70
[<ffffffff814c5846>] _raw_spin_lock+0x36/0x50
[<ffffffff812a555b>] nouveau_gpuobj_new+0xab/0x2e0
[<ffffffff813011de>] nv50_instmem_init+0x12e/0x6d0
[<ffffffff812a0c86>] nouveau_card_init+0x446/0x1680
[<ffffffff812a22f3>] nouveau_load+0x433/0x700
[<ffffffff8128b08a>] drm_get_pci_dev+0x18a/0x2a0
[<ffffffff814bf023>] nouveau_pci_probe+0x10/0x12
[<ffffffff8120ffe2>] local_pci_probe+0x12/0x20
[<ffffffff812102a0>] pci_device_probe+0x80/0xb0
[<ffffffff81325c09>] driver_probe_device+0x89/0x1a0
[<ffffffff81325dbb>] __driver_attach+0x9b/0xa0
[<ffffffff813252f8>] bus_for_each_dev+0x68/0x90
[<ffffffff81325a49>] driver_attach+0x19/0x20
[<ffffffff81324b68>] bus_add_driver+0x1a8/0x270
[<ffffffff813260a8>] driver_register+0x78/0x140
[<ffffffff81210521>] __pci_register_driver+0x61/0xe0
[<ffffffff8128b26a>] drm_pci_init+0xca/0xe0
[<ffffffff81283f13>] drm_init+0x53/0x70
[<ffffffff818fc779>] nouveau_init+0x48/0x4a
[<ffffffff818de5f6>] do_one_initcall+0x7a/0x12e
[<ffffffff818de80c>] kernel_init+0x142/0x1c6
[<ffffffff81032f14>] kernel_thread_helper+0x4/0x10
INITIAL USE at:
[<ffffffff8109b2fb>] __lock_acquire+0x4bb/0x1c40
[<ffffffff8109cada>] lock_acquire+0x5a/0x70
[<ffffffff814c5846>] _raw_spin_lock+0x36/0x50
[<ffffffff812a555b>] nouveau_gpuobj_new+0xab/0x2e0
[<ffffffff813011de>] nv50_instmem_init+0x12e/0x6d0
[<ffffffff812a0c86>] nouveau_card_init+0x446/0x1680
[<ffffffff812a22f3>] nouveau_load+0x433/0x700
[<ffffffff8128b08a>] drm_get_pci_dev+0x18a/0x2a0
[<ffffffff814bf023>] nouveau_pci_probe+0x10/0x12
[<ffffffff8120ffe2>] local_pci_probe+0x12/0x20
[<ffffffff812102a0>] pci_device_probe+0x80/0xb0
[<ffffffff81325c09>] driver_probe_device+0x89/0x1a0
[<ffffffff81325dbb>] __driver_attach+0x9b/0xa0
[<ffffffff813252f8>] bus_for_each_dev+0x68/0x90
[<ffffffff81325a49>] driver_attach+0x19/0x20
[<ffffffff81324b68>] bus_add_driver+0x1a8/0x270
[<ffffffff813260a8>] driver_register+0x78/0x140
[<ffffffff81210521>] __pci_register_driver+0x61/0xe0
[<ffffffff8128b26a>] drm_pci_init+0xca/0xe0
[<ffffffff81283f13>] drm_init+0x53/0x70
[<ffffffff818fc779>] nouveau_init+0x48/0x4a
[<ffffffff818de5f6>] do_one_initcall+0x7a/0x12e
[<ffffffff818de80c>] kernel_init+0x142/0x1c6
[<ffffffff81032f14>] kernel_thread_helper+0x4/0x10
}
... key at: [<ffffffff822bd7b8>] __key.40392+0x0/0x8
... acquired at:
[<ffffffff8109cada>] lock_acquire+0x5a/0x70
[<ffffffff814c5846>] _raw_spin_lock+0x36/0x50
[<ffffffff81300bbd>] nv50_instmem_flush+0x1d/0x90
[<ffffffff812d2050>] nv50_fifo_create_context+0x260/0x340
[<ffffffff812a2f9d>] nouveau_channel_alloc+0x33d/0x6d0
[<ffffffff812a0dea>] nouveau_card_init+0x5aa/0x1680
[<ffffffff812a22f3>] nouveau_load+0x433/0x700
[<ffffffff8128b08a>] drm_get_pci_dev+0x18a/0x2a0
[<ffffffff814bf023>] nouveau_pci_probe+0x10/0x12
[<ffffffff8120ffe2>] local_pci_probe+0x12/0x20
[<ffffffff812102a0>] pci_device_probe+0x80/0xb0
[<ffffffff81325c09>] driver_probe_device+0x89/0x1a0
[<ffffffff81325dbb>] __driver_attach+0x9b/0xa0
[<ffffffff813252f8>] bus_for_each_dev+0x68/0x90
[<ffffffff81325a49>] driver_attach+0x19/0x20
[<ffffffff81324b68>] bus_add_driver+0x1a8/0x270
[<ffffffff813260a8>] driver_register+0x78/0x140
[<ffffffff81210521>] __pci_register_driver+0x61/0xe0
[<ffffffff8128b26a>] drm_pci_init+0xca/0xe0
[<ffffffff81283f13>] drm_init+0x53/0x70
[<ffffffff818fc779>] nouveau_init+0x48/0x4a
[<ffffffff818de5f6>] do_one_initcall+0x7a/0x12e
[<ffffffff818de80c>] kernel_init+0x142/0x1c6
[<ffffffff81032f14>] kernel_thread_helper+0x4/0x10
-> (&(&dev_priv->context_switch_lock)->rlock){-.....} ops: 6 {
IN-HARDIRQ-W at:
[<ffffffff8109bb7c>] __lock_acquire+0xd3c/0x1c40
[<ffffffff8109cada>] lock_acquire+0x5a/0x70
[<ffffffff814c5961>] _raw_spin_lock_irqsave+0x41/0x60
[<ffffffff812a6727>] nouveau_irq_handler+0x57/0x150
[<ffffffff810adfca>] handle_IRQ_event+0x3a/0xe0
[<ffffffff810b0778>] handle_fasteoi_irq+0x78/0x100
[<ffffffff81034e3d>] handle_irq+0x1d/0x30
[<ffffffff81034338>] do_IRQ+0x58/0xd0
[<ffffffff814c66d3>] ret_from_intr+0x0/0x13
[<ffffffff8103129b>] cpu_idle+0xab/0x110
[<ffffffff8190ab59>] start_secondary+0x1e2/0x1e9
INITIAL USE at:
[<ffffffff8109b2fb>] __lock_acquire+0x4bb/0x1c40
[<ffffffff8109cada>] lock_acquire+0x5a/0x70
[<ffffffff814c5961>] _raw_spin_lock_irqsave+0x41/0x60
[<ffffffff812a667a>] nouveau_irq_register+0x3a/0x70
[<ffffffff8131b8ed>] nv50_gpio_init+0x7d/0x130
[<ffffffff812a0cc3>] nouveau_card_init+0x483/0x1680
[<ffffffff812a22f3>] nouveau_load+0x433/0x700
[<ffffffff8128b08a>] drm_get_pci_dev+0x18a/0x2a0
[<ffffffff814bf023>] nouveau_pci_probe+0x10/0x12
[<ffffffff8120ffe2>] local_pci_probe+0x12/0x20
[<ffffffff812102a0>] pci_device_probe+0x80/0xb0
[<ffffffff81325c09>] driver_probe_device+0x89/0x1a0
[<ffffffff81325dbb>] __driver_attach+0x9b/0xa0
[<ffffffff813252f8>] bus_for_each_dev+0x68/0x90
[<ffffffff81325a49>] driver_attach+0x19/0x20
[<ffffffff81324b68>] bus_add_driver+0x1a8/0x270
[<ffffffff813260a8>] driver_register+0x78/0x140
[<ffffffff81210521>] __pci_register_driver+0x61/0xe0
[<ffffffff8128b26a>] drm_pci_init+0xca/0xe0
[<ffffffff81283f13>] drm_init+0x53/0x70
[<ffffffff818fc779>] nouveau_init+0x48/0x4a
[<ffffffff818de5f6>] do_one_initcall+0x7a/0x12e
[<ffffffff818de80c>] kernel_init+0x142/0x1c6
[<ffffffff81032f14>] kernel_thread_helper+0x4/0x10
}
... key at: [<ffffffff822bd798>] __key.41016+0x0/0x8
... acquired at:
[<ffffffff81099cd2>] check_usage_forwards+0xa2/0x110
[<ffffffff810990b7>] mark_lock+0x1f7/0x630
[<ffffffff8109bb7c>] __lock_acquire+0xd3c/0x1c40
[<ffffffff8109cada>] lock_acquire+0x5a/0x70
[<ffffffff814c5961>] _raw_spin_lock_irqsave+0x41/0x60
[<ffffffff812a6727>] nouveau_irq_handler+0x57/0x150
[<ffffffff810adfca>] handle_IRQ_event+0x3a/0xe0
[<ffffffff810b0778>] handle_fasteoi_irq+0x78/0x100
[<ffffffff81034e3d>] handle_irq+0x1d/0x30
[<ffffffff81034338>] do_IRQ+0x58/0xd0
[<ffffffff814c66d3>] ret_from_intr+0x0/0x13
[<ffffffff8103129b>] cpu_idle+0xab/0x110
[<ffffffff8190ab59>] start_secondary+0x1e2/0x1e9
stack backtrace:
Pid: 0, comm: kworker/0:1 Not tainted 2.6.38-rc8 #9
Call Trace:
<IRQ> [<ffffffff81099c09>] ? print_irq_inversion_bug+0x139/0x160
[<ffffffff81099c30>] ? check_usage_forwards+0x0/0x110
[<ffffffff81099cd2>] ? check_usage_forwards+0xa2/0x110
[<ffffffff810990b7>] ? mark_lock+0x1f7/0x630
[<ffffffff8109bb7c>] ? __lock_acquire+0xd3c/0x1c40
[<ffffffff8109b2fb>] ? __lock_acquire+0x4bb/0x1c40
[<ffffffff81099755>] ? trace_hardirqs_on_caller+0x65/0x180
[<ffffffff810b244a>] ? check_for_new_grace_period+0xaa/0x120
[<ffffffff8109cada>] ? lock_acquire+0x5a/0x70
[<ffffffff812a6727>] ? nouveau_irq_handler+0x57/0x150
[<ffffffff814c5961>] ? _raw_spin_lock_irqsave+0x41/0x60
[<ffffffff812a6727>] ? nouveau_irq_handler+0x57/0x150
[<ffffffff812a6727>] ? nouveau_irq_handler+0x57/0x150
[<ffffffff810adfca>] ? handle_IRQ_event+0x3a/0xe0
[<ffffffff810b0778>] ? handle_fasteoi_irq+0x78/0x100
[<ffffffff81034e3d>] ? handle_irq+0x1d/0x30
[<ffffffff81034338>] ? do_IRQ+0x58/0xd0
[<ffffffff814c66d3>] ? ret_from_intr+0x0/0x13
<EOI> [<ffffffff8103a749>] ? mwait_idle+0x89/0xc0
[<ffffffff8103a740>] ? mwait_idle+0x80/0xc0
[<ffffffff8103129b>] ? cpu_idle+0xab/0x110
[<ffffffff8190ab59>] ? start_secondary+0x1e2/0x1e9
[drm] nouveau 0000:01:00.0: allocated 1280x1024 fb: 0x60000000, bo ffff88023f6e9120
Console: switching to colour frame buffer device 160x64
fb0: nouveaufb frame buffer device
drm: registered panic notifier
[drm] Initialized nouveau 0.0.16 20090420 for 0000:01:00.0 on minor 0
...
On Tue, Mar 08, 2011 at 11:22:54AM +0200, Alexey Dobriyan wrote:
> [drm] No driver support for vblank timestamp query.
>
> =========================================================
> [ INFO: possible irq lock inversion dependency detected ]
> 2.6.38-rc8 #9
> ---------------------------------------------------------
> kworker/0:1/0 just changed the state of lock:
> (&(&dev_priv->context_switch_lock)->rlock){-.....}, at: [<ffffffff812a6727>] nouveau_irq_handler+0x57/0x150
And then, there is this:
...
[12085.767490] [drm] nouveau 0000:01:00.0: PGRAPH - TRAP_TPDMA - VM: Trapped write at 00417c1400 status 0000cb20 channel 2 (0x00000906)
[12085.767493] [drm] nouveau 0000:01:00.0: PGRAPH_TRAP_TPDMA_2D - TP 0 - Unknown fault at address 00417c1400
[12085.767496] [drm] nouveau 0000:01:00.0: PGRAPH_TRAP_TPDMA_2D - TP 0 - e0c: 00000000, e18: 00000000, e1c: 00120000, e20: 00000011, e24: 0c030000
[12085.767503] [drm] nouveau 0000:01:00.0: PGRAPH - TRAP
[12085.767507] [drm] nouveau 0000:01:00.0: PGRAPH - ch 2 (0x0000906000) subc 2 class 0x502d mthd 0x0860 data 0x00000000
...
[19445.986827] [drm] nouveau 0000:01:00.0: PGRAPH - TRAP_TPDMA - VM: Trapped write at 00417c2400 status 0000cb20 channel 2 (0x00000906)
[19445.986835] [drm] nouveau 0000:01:00.0: PGRAPH_TRAP_TPDMA_2D - TP 0 - Unknown fault at address 0040b16300
[19445.986841] [drm] nouveau 0000:01:00.0: PGRAPH_TRAP_TPDMA_2D - TP 0 - e0c: 00000000, e18: 00000000, e1c: 000c0000, e20: 00000011, e24: 0c030000
[19445.986851] [drm] nouveau 0000:01:00.0: PGRAPH - TRAP
[19445.986860] [drm] nouveau 0000:01:00.0: PGRAPH - ch 2 (0x0000906000) subc 2 class 0x502d mthd 0x0860 data 0x6e51504f
[19458.826528] [drm] nouveau 0000:01:00.0: PGRAPH - TRAP_TPDMA - VM: Trapped write at 0040b17b00 status 0000cb20 channel 2 (0x00000906)
[19458.826535] [drm] nouveau 0000:01:00.0: PGRAPH_TRAP_TPDMA_2D - TP 0 - Unknown fault at address 0041a61300
[19458.826542] [drm] nouveau 0000:01:00.0: PGRAPH_TRAP_TPDMA_2D - TP 0 - e0c: 00000000, e18: 00000000, e1c: 000c0000, e20: 00000011, e24: 0c030000
[19458.826552] [drm] nouveau 0000:01:00.0: PGRAPH - TRAP
[19458.826561] [drm] nouveau 0000:01:00.0: PGRAPH - ch 2 (0x0000906000) subc 2 class 0x502d mthd 0x0860 data 0x6e51504f
...
[26658.316541] [drm] nouveau 0000:01:00.0: PGRAPH - TRAP_TPDMA - VM: Trapped write at 0041a62300 status 0000cb20 channel 2 (0x00000906)
[26658.316545] [drm] nouveau 0000:01:00.0: PGRAPH_TRAP_TPDMA_2D - TP 0 - Unknown fault at address 0041cfc300
[26658.316548] [drm] nouveau 0000:01:00.0: PGRAPH_TRAP_TPDMA_2D - TP 0 - e0c: 00000000, e18: 00000000, e1c: 000c0020, e20: 00000011, e24: 0c030000
[26658.316555] [drm] nouveau 0000:01:00.0: PGRAPH - TRAP
[26658.316559] [drm] nouveau 0000:01:00.0: PGRAPH - ch 2 (0x0000906000) subc 2 class 0x502d mthd 0x0860 data 0x6b4e4d4d
[27184.011732] [drm] nouveau 0000:01:00.0: PGRAPH - TRAP_TPDMA - VM: Trapped write at 0041bf4300 status 0000cb20 channel 2 (0x00000906)
[27184.011735] [drm] nouveau 0000:01:00.0: PGRAPH_TRAP_TPDMA_2D - TP 0 - Unknown fault at address 0041bf4300
[27184.011738] [drm] nouveau 0000:01:00.0: PGRAPH_TRAP_TPDMA_2D - TP 0 - e0c: 00000000, e18: 00000000, e1c: 000c0020, e20: 00000011, e24: 0c030000
[27184.011745] [drm] nouveau 0000:01:00.0: PGRAPH - TRAP
[27184.011749] [drm] nouveau 0000:01:00.0: PGRAPH - ch 2 (0x0000906000) subc 2 class 0x502d mthd 0x0860 data 0x6b4e4d4d
[27184.011767] [drm] nouveau 0000:01:00.0: PGRAPH - TRAP_TPDMA - VM: Trapped write at 0041bf5400 status 0000cb20 channel 2 (0x00000906)
[27184.011769] [drm] nouveau 0000:01:00.0: PGRAPH_TRAP_TPDMA_2D - TP 0 - Unknown fault at address 0041bf5400
[27184.011772] [drm] nouveau 0000:01:00.0: PGRAPH_TRAP_TPDMA_2D - TP 0 - e0c: 00000000, e18: 00000000, e1c: 00100046, e20: 00000011, e24: 0c030000
[27184.011779] [drm] nouveau 0000:01:00.0: PGRAPH - TRAP
[27184.011782] [drm] nouveau 0000:01:00.0: PGRAPH - ch 2 (0x0000906000) subc 2 class 0x502d mthd 0x0860 data 0x61474646
[27184.011800] [drm] nouveau 0000:01:00.0: PGRAPH - TRAP_TPDMA - VM: Trapped write at 0041bf5c00 status 0000cb20 channel 2 (0x00000906)
[27184.011802] [drm] nouveau 0000:01:00.0: PGRAPH_TRAP_TPDMA_2D - TP 0 - Unknown fault at address 0041bf5c00
[27184.011804] [drm] nouveau 0000:01:00.0: PGRAPH_TRAP_TPDMA_2D - TP 0 - e0c: 00000000, e18: 00000000, e1c: 0012005e, e20: 00000011, e24: 0c030000
[27184.011811] [drm] nouveau 0000:01:00.0: PGRAPH - TRAP
[27184.011814] [drm] nouveau 0000:01:00.0: PGRAPH - ch 2 (0x0000906000) subc 2 class 0x502d mthd 0x0860 data 0x09060606
[27184.011835] [drm] nouveau 0000:01:00.0: PGRAPH - TRAP_TPDMA - VM: Trapped write at 0041bf6d00 status 0000cb20 channel 2 (0x00000906)
[27184.011836] [drm] nouveau 0000:01:00.0: PGRAPH_TRAP_TPDMA_2D - TP 0 - Unknown fault at address 0041bf6d00
[27184.011838] [drm] nouveau 0000:01:00.0: PGRAPH_TRAP_TPDMA_2D - TP 0 - e0c: 00000000, e18: 00000000, e1c: 00140076, e20: 00000011, e24: 0c030000
[27184.011845] [drm] nouveau 0000:01:00.0: PGRAPH - TRAP
[27184.011848] [drm] nouveau 0000:01:00.0: PGRAPH - ch 2 (0x0000906000) subc 2 class 0x502d mthd 0x0860 data 0x00000000
[27184.011865] [drm] nouveau 0000:01:00.0: PGRAPH - TRAP_TPDMA - VM: Trapped write at 0041bf7500 status 0000cb20 channel 2 (0x00000906)
[27184.011867] [drm] nouveau 0000:01:00.0: PGRAPH_TRAP_TPDMA_2D - TP 0 - Unknown fault at address 0041bf7500
[27184.011869] [drm] nouveau 0000:01:00.0: PGRAPH_TRAP_TPDMA_2D - TP 0 - e0c: 00000000, e18: 00000000, e1c: 0016008e, e20: 00000011, e24: 0c030000
[27184.011876] [drm] nouveau 0000:01:00.0: PGRAPH - TRAP
[27184.011879] [drm] nouveau 0000:01:00.0: PGRAPH - ch 2 (0x0000906000) subc 2 class 0x502d mthd 0x060c data 0x0000000a
[27236.139499] [drm] nouveau 0000:01:00.0: PGRAPH - TRAP_TPDMA - VM: Trapped write at 0041cc0300 status 0000cb20 channel 2 (0x00000906)
[27236.139503] [drm] nouveau 0000:01:00.0: PGRAPH_TRAP_TPDMA_2D - TP 0 - Unknown fault at address 0041cc0300
[27236.139505] [drm] nouveau 0000:01:00.0: PGRAPH_TRAP_TPDMA_2D - TP 0 - e0c: 00000000, e18: 00000000, e1c: 000e0020, e20: 00000011, e24: 0c030000
[27236.139513] [drm] nouveau 0000:01:00.0: PGRAPH - TRAP
[27236.139516] [drm] nouveau 0000:01:00.0: PGRAPH - ch 2 (0x0000906000) subc 2 class 0x502d mthd 0x0860 data 0x684c4b4b
[27236.139535] [drm] nouveau 0000:01:00.0: PGRAPH - TRAP_TPDMA - VM: Trapped write at 0041cc4400 status 0000cb20 channel 2 (0x00000906)
[27236.139537] [drm] nouveau 0000:01:00.0: PGRAPH_TRAP_TPDMA_2D - TP 0 - Unknown fault at address 0041cc4400
[27236.139539] [drm] nouveau 0000:01:00.0: PGRAPH_TRAP_TPDMA_2D - TP 0 - e0c: 00000000, e18: 00000000, e1c: 001000a0, e20: 00000011, e24: 0c030000
[27236.139546] [drm] nouveau 0000:01:00.0: PGRAPH - TRAP
[27236.139549] [drm] nouveau 0000:01:00.0: PGRAPH - ch 2 (0x0000906000) subc 2 class 0x502d mthd 0x0860 data 0x09060606
[27259.300269] [drm] nouveau 0000:01:00.0: PGRAPH - TRAP_TPDMA - VM: Trapped write at 00418c5400 status 0000cb20 channel 2 (0x00000906)
[27259.300276] [drm] nouveau 0000:01:00.0: PGRAPH_TRAP_TPDMA_2D - TP 0 - Unknown fault at address 00418c5400
[27259.300283] [drm] nouveau 0000:01:00.0: PGRAPH_TRAP_TPDMA_2D - TP 0 - e0c: 00000000, e18: 00000000, e1c: 00120020, e20: 00000011, e24: 0c030000
[27259.300293] [drm] nouveau 0000:01:00.0: PGRAPH - TRAP
[27259.300301] [drm] nouveau 0000:01:00.0: PGRAPH - ch 2 (0x0000906000) subc 2 class 0x502d mthd 0x0860 data 0x00000000
[27259.300324] [drm] nouveau 0000:01:00.0: PGRAPH - TRAP_TPDMA - VM: Trapped write at 00418c5500 status 0000cb20 channel 2 (0x00000906)
[27259.300329] [drm] nouveau 0000:01:00.0: PGRAPH_TRAP_TPDMA_2D - TP 0 - Unknown fault at address 00418c5500
[27259.300335] [drm] nouveau 0000:01:00.0: PGRAPH_TRAP_TPDMA_2D - TP 0 - e0c: 00000000, e18: 00000000, e1c: 00160020, e20: 00000011, e24: 0c030000
[27259.300345] [drm] nouveau 0000:01:00.0: PGRAPH - TRAP
[27259.300352] [drm] nouveau 0000:01:00.0: PGRAPH - ch 2 (0x0000906000) subc 2 class 0x502d mthd 0x060c data 0x0000000a
On Mon, Mar 07, 2011 at 09:40:04PM -0800, Linus Torvalds wrote:
> I would have been ok with releasing this as the final 38, but I'm
> going to be partially unreachable for several days next week, so I
> felt there was no point in opening the merge window yet.
>
> Also, we do have regressions. Some of them hopefully fixed here, but
> it won't hurt to give it another week.
>
> Not everything here is strictly a regression: the i_nlink fixes are
> long-standing races (very unlikely ones, admittedly), and the alpha
> updates just convert the irq chip descriptions so that we can enable
> GENERIC_HARDIRQS_NO_DEPRECATED on alpha too. But most everything is
> pretty simple, and the diffstat is fairly flat with nothing huge that
> stands out.
>
> 40% drivers, 35% arch updates (alpha and arm), with the rest being fs,
> net and some block layer updates.
>
> So please keep testing,
Hi Linus,
I stumbled upon this problem when a dkms package install claimed to
already have the latest version of a module, only it clearly did not.
It turns out the module srcversion is not unique. Doing a
cat /sys/module/*/srcversion | sort | uniq -c
shows something like this:
mainline>cat /sys/module/*/srcversion | sort | uniq -c
1 3EF20C25CC62BD750F4C3F3
1 41024DA8E830C7DAE171017
1 47AD35AE180473EB06EED32
19 533BB7E5866E52F63B9ACCB
1 598C709DDDAB55EB331379A
1 5AC5CB9DA8C242CBC76EEC0
1 AAD974CC23F320629986F38
2 AEBBDFD273E0316FD4E5D04
[...]
Bisecting leads to this commit
commit b7bd182176960fdd139486cadb9962b39f8a2b50
Author: Michal Marek <[email protected]>
fixdep: Do not record dependency on the source file itself
which seems to be a change to the build system. Reverting followed by
"make clean" cures the symptoms, and all module srcversions are again
unique. Just doing make after the revert does not work, which seems
reasonable. However, I can't even begin to imagine what the real
reason is.
The patch below is what fixes it for me.
Thanks,
Henrik
---
>From 0004c5bdc44c22646269756b0e0bbff1a7a30ac3 Mon Sep 17 00:00:00 2001
From: Henrik Rydberg <[email protected]>
Date: Fri, 11 Mar 2011 09:54:33 +0100
Subject: [PATCH] Revert "fixdep: Do not record dependency on the source file itself"
In 2.6.38-rc8, the module srcversion is not unique. Doing a
cat /sys/module/*/srcversion | sort | uniq -c
shows something like this:
mainline>cat /sys/module/*/srcversion | sort | uniq -c
1 3EF20C25CC62BD750F4C3F3
1 41024DA8E830C7DAE171017
1 47AD35AE180473EB06EED32
19 533BB7E5866E52F63B9ACCB
1 598C709DDDAB55EB331379A
1 5AC5CB9DA8C242CBC76EEC0
1 AAD974CC23F320629986F38
2 AEBBDFD273E0316FD4E5D04
[...]
Bisecting leads to this commit
commit b7bd182176960fdd139486cadb9962b39f8a2b50
Author: Michal Marek <[email protected]>
fixdep: Do not record dependency on the source file itself
which is a change to the build system. Reverting followed by "make
clean" cures the symptoms and all module srcversions are unique. Just
doing make after the revert does not work.
I can't even begin to imagine what the real reason is.
This reverts commit b7bd182176960fdd139486cadb9962b39f8a2b50.
---
scripts/basic/fixdep.c | 12 +-----------
1 files changed, 1 insertions(+), 11 deletions(-)
diff --git a/scripts/basic/fixdep.c b/scripts/basic/fixdep.c
index 6c94c6c..c9a16ab 100644
--- a/scripts/basic/fixdep.c
+++ b/scripts/basic/fixdep.c
@@ -315,7 +315,6 @@ static void parse_dep_file(void *map, size_t len)
char *end = m + len;
char *p;
char s[PATH_MAX];
- int first;
p = strchr(m, ':');
if (!p) {
@@ -328,7 +327,6 @@ static void parse_dep_file(void *map, size_t len)
clear_config();
- first = 1;
while (m < end) {
while (m < end && (*m == ' ' || *m == '\\' || *m == '\n'))
m++;
@@ -342,17 +340,9 @@ static void parse_dep_file(void *map, size_t len)
if (strrcmp(s, "include/generated/autoconf.h") &&
strrcmp(s, "arch/um/include/uml-config.h") &&
strrcmp(s, ".ver")) {
- /*
- * Do not output the first dependency (the
- * source file), so that kbuild is not confused
- * if a .c file is rewritten into .S or vice
- * versa.
- */
- if (!first)
- printf(" %s \\\n", s);
+ printf(" %s \\\n", s);
do_config_file(s);
}
- first = 0;
m = p + 1;
}
printf("\n%s: $(deps_%s)\n\n", target, target);
--
1.7.4.1
On 11.3.2011 10:28, Henrik Rydberg wrote:
> On Mon, Mar 07, 2011 at 09:40:04PM -0800, Linus Torvalds wrote:
>> I would have been ok with releasing this as the final 38, but I'm
>> going to be partially unreachable for several days next week, so I
>> felt there was no point in opening the merge window yet.
>>
>> Also, we do have regressions. Some of them hopefully fixed here, but
>> it won't hurt to give it another week.
>>
>> Not everything here is strictly a regression: the i_nlink fixes are
>> long-standing races (very unlikely ones, admittedly), and the alpha
>> updates just convert the irq chip descriptions so that we can enable
>> GENERIC_HARDIRQS_NO_DEPRECATED on alpha too. But most everything is
>> pretty simple, and the diffstat is fairly flat with nothing huge that
>> stands out.
>>
>> 40% drivers, 35% arch updates (alpha and arm), with the rest being fs,
>> net and some block layer updates.
>>
>> So please keep testing,
>
> Hi Linus,
>
> I stumbled upon this problem when a dkms package install claimed to
> already have the latest version of a module, only it clearly did not.
>
> It turns out the module srcversion is not unique. Doing a
>
> cat /sys/module/*/srcversion | sort | uniq -c
>
> shows something like this:
>
> mainline>cat /sys/module/*/srcversion | sort | uniq -c
> 1 3EF20C25CC62BD750F4C3F3
> 1 41024DA8E830C7DAE171017
> 1 47AD35AE180473EB06EED32
> 19 533BB7E5866E52F63B9ACCB
> 1 598C709DDDAB55EB331379A
> 1 5AC5CB9DA8C242CBC76EEC0
> 1 AAD974CC23F320629986F38
> 2 AEBBDFD273E0316FD4E5D04
> [...]
>
> Bisecting leads to this commit
>
> commit b7bd182176960fdd139486cadb9962b39f8a2b50
> Author: Michal Marek <[email protected]>
>
> fixdep: Do not record dependency on the source file itself
>
> which seems to be a change to the build system. Reverting followed by
> "make clean" cures the symptoms, and all module srcversions are again
> unique. Just doing make after the revert does not work, which seems
> reasonable. However, I can't even begin to imagine what the real
> reason is.
>
> The patch below is what fixes it for me.
>
> Thanks,
> Henrik
>
> ---
>
> From 0004c5bdc44c22646269756b0e0bbff1a7a30ac3 Mon Sep 17 00:00:00 2001
> From: Henrik Rydberg <[email protected]>
> Date: Fri, 11 Mar 2011 09:54:33 +0100
> Subject: [PATCH] Revert "fixdep: Do not record dependency on the source file itself"
>
> In 2.6.38-rc8, the module srcversion is not unique. Doing a
>
> cat /sys/module/*/srcversion | sort | uniq -c
>
> shows something like this:
>
> mainline>cat /sys/module/*/srcversion | sort | uniq -c
> 1 3EF20C25CC62BD750F4C3F3
> 1 41024DA8E830C7DAE171017
> 1 47AD35AE180473EB06EED32
> 19 533BB7E5866E52F63B9ACCB
> 1 598C709DDDAB55EB331379A
> 1 5AC5CB9DA8C242CBC76EEC0
> 1 AAD974CC23F320629986F38
> 2 AEBBDFD273E0316FD4E5D04
> [...]
>
> Bisecting leads to this commit
>
> commit b7bd182176960fdd139486cadb9962b39f8a2b50
> Author: Michal Marek <[email protected]>
>
> fixdep: Do not record dependency on the source file itself
>
> which is a change to the build system. Reverting followed by "make
> clean" cures the symptoms and all module srcversions are unique. Just
> doing make after the revert does not work.
>
> I can't even begin to imagine what the real reason is.
The problem is that the code to calculate the checksums
(scripts/mod/sumversions.c) is parsing the *.cmd files to find out what
sources were used to build a given object file. One option is to let
fixdep record the *.[cS] separately, so that it does not confuse make,
but it available for modpost. I'll think about it a bit more.
Michal
Recent change to fixdep:
commit b7bd182176960fdd139486cadb9962b39f8a2b50
Author: Michal Marek <[email protected]>
Date: Thu Feb 17 15:13:54 2011 +0100
fixdep: Do not record dependency on the source file itself
changed the format of the *.cmd files without realizing that it is also
used by modpost. Put the path to the source file to the file back, in a
special variable, so that modpost sees all source files when calculating
srcversion for modules.
Reported-by: Henrik Rydberg <[email protected]>
Signed-off-by: Michal Marek <[email protected]>
---
scripts/basic/fixdep.c | 19 +++++++++++++------
scripts/mod/sumversion.c | 19 +++++++++++++++++--
2 files changed, 30 insertions(+), 8 deletions(-)
diff --git a/scripts/basic/fixdep.c b/scripts/basic/fixdep.c
index 6c94c6c..291228e 100644
--- a/scripts/basic/fixdep.c
+++ b/scripts/basic/fixdep.c
@@ -309,6 +309,11 @@ static void do_config_file(const char *filename)
close(fd);
}
+/*
+ * Important: The below generated source_foo.o and deps_foo.o variable
+ * assignments are parsed not only by make, but also by the rather simple
+ * parser in scripts/mod/sumversion.c.
+ */
static void parse_dep_file(void *map, size_t len)
{
char *m = map;
@@ -323,7 +328,6 @@ static void parse_dep_file(void *map, size_t len)
exit(1);
}
memcpy(s, m, p-m); s[p-m] = 0;
- printf("deps_%s := \\\n", target);
m = p+1;
clear_config();
@@ -343,12 +347,15 @@ static void parse_dep_file(void *map, size_t len)
strrcmp(s, "arch/um/include/uml-config.h") &&
strrcmp(s, ".ver")) {
/*
- * Do not output the first dependency (the
- * source file), so that kbuild is not confused
- * if a .c file is rewritten into .S or vice
- * versa.
+ * Do not list the source file as dependency, so that
+ * kbuild is not confused if a .c file is rewritten
+ * into .S or vice versa. Storing it in source_* is
+ * needed for modpost to compute srcversions.
*/
- if (!first)
+ if (first) {
+ printf("source_%s := %s\n\n", target, s);
+ printf("deps_%s := \\\n", target);
+ } else
printf(" %s \\\n", s);
do_config_file(s);
}
diff --git a/scripts/mod/sumversion.c b/scripts/mod/sumversion.c
index ecf9c7d..9dfcd6d 100644
--- a/scripts/mod/sumversion.c
+++ b/scripts/mod/sumversion.c
@@ -300,8 +300,8 @@ static int is_static_library(const char *objfile)
return 0;
}
-/* We have dir/file.o. Open dir/.file.o.cmd, look for deps_ line to
- * figure out source file. */
+/* We have dir/file.o. Open dir/.file.o.cmd, look for source_ and deps_ line
+ * to figure out source files. */
static int parse_source_files(const char *objfile, struct md4_ctx *md)
{
char *cmd, *file, *line, *dir;
@@ -340,6 +340,21 @@ static int parse_source_files(const char *objfile, struct md4_ctx *md)
*/
while ((line = get_next_line(&pos, file, flen)) != NULL) {
char* p = line;
+
+ if (strncmp(line, "source_", sizeof("source_")-1) == 0) {
+ p = strrchr(line, ' ');
+ if (!p) {
+ warn("malformed line: %s\n", line);
+ goto out_file;
+ }
+ p++;
+ if (!parse_file(p, md)) {
+ warn("could not open %s: %s\n",
+ p, strerror(errno));
+ goto out_file;
+ }
+ continue;
+ }
if (strncmp(line, "deps_", sizeof("deps_")-1) == 0) {
check_files = 1;
continue;
--
1.7.4.1
On Fri, Mar 11, 2011 at 10:34:47PM +0100, Michal Marek wrote:
> Recent change to fixdep:
>
> commit b7bd182176960fdd139486cadb9962b39f8a2b50
> Author: Michal Marek <[email protected]>
> Date: Thu Feb 17 15:13:54 2011 +0100
>
> fixdep: Do not record dependency on the source file itself
>
> changed the format of the *.cmd files without realizing that it is also
> used by modpost. Put the path to the source file to the file back, in a
> special variable, so that modpost sees all source files when calculating
> srcversion for modules.
>
> Reported-by: Henrik Rydberg <[email protected]>
> Signed-off-by: Michal Marek <[email protected]>
> ---
Solves the problem, and the patch looks reasonable.
Tested-by: Henrik Rydberg <[email protected]>
Thanks!
Henrik
On 2011-03-08 07:40, Linus Torvalds wrote:
> So please keep testing,
Doesn't build:
arch/x86/kernel/entry_64.S: Assembler messages:
arch/x86/kernel/entry_64.S:1531: Error: .size expression does not
evaluate to a constant
make[2]: *** [arch/x86/kernel/entry_64.o] Error 1
make[1]: *** [arch/x86/kernel] Error 2
make: *** [arch/x86] Error 2
Must be due to recent binutils upgrade, because 2.6.37 doesn't build
anymore either.
Looks like these patches are needed:
http://git.kernel.org/?p=linux/kernel/git/hjl/linux-2.6.37.y.git;a=commitdiff;h=2c5ce9c1b8eb927c131a31d4466e24e00647e9cb
https://patchwork.kernel.org/patch/606241/
Best regards,
--Edwin
[QUOTE]
On 2011-03-08 07:40, Linus Torvalds wrote:
> So please keep testing,
Doesn't build:
arch/x86/kernel/entry_64.S: Assembler messages:
arch/x86/kernel/entry_64.S:1531: Error: .size expression does not
evaluate to a constant
make[2]: *** [arch/x86/kernel/entry_64.o] Error 1
make[1]: *** [arch/x86/kernel] Error 2
make: *** [arch/x86] Error 2
Must be due to recent binutils upgrade, because 2.6.37 doesn't build
anymore either.
Looks like these patches are needed:
http://git.kernel.org/?p=linux/kernel/git/hjl/linux-2.6.37.y.git;a=commitdiff;h=2c5ce9c1b8eb927c131a31d4466e24e00647e9cb
https://patchwork.kernel.org/patch/606241/
Best regards,
--Edwin
[/QUOTE]
There was a long discussion caused by a breakage in linux-next with a
2.21-snapshot release of binutils in Debian/sid:
"Re: linux-next: Tree for March 8 (BROKEN: arch/x86/kernel/entry_32.S?
Debian's binutils/as?)"
The result were two patches [1] and [2] which helped to build a
linux-next kernel with new binutils.
[1] affects also 2.6.38, [2] is for linux-next (upcoming 2.6.39).
Ingo combined both fixes as one [3] and accepted it to
tip:x86/trampoline (see [4]).
This single fix found already its way to linux-next tree (where I am on).
- Sedat -
[1] https://patchwork.kernel.org/patch/619081/
[2] https://patchwork.kernel.org/patch/619611/
[3] https://patchwork.kernel.org/patch/621001/
[4] http://git.kernel.org/?p=linux/kernel/git/tip/linux-2.6-tip.git;a=commit;h=2ae9d293b14d17f35eff624272cfecac7979a2ee
On 12 March 2011 02:06, Henrik Rydberg <[email protected]> wrote:
> On Fri, Mar 11, 2011 at 10:34:47PM +0100, Michal Marek wrote:
>> Recent change to fixdep:
>>
>> commit b7bd182176960fdd139486cadb9962b39f8a2b50
>> Author: Michal Marek <[email protected]>
>> Date: Thu Feb 17 15:13:54 2011 +0100
>>
>> fixdep: Do not record dependency on the source file itself
>>
>> changed the format of the *.cmd files without realizing that it is also
>> used by modpost. Put the path to the source file to the file back, in a
>> special variable, so that modpost sees all source files when calculating
>> srcversion for modules.
>>
Hi Michal,
There is something wrong with the patch,
I can't compile 2.6.38 neither linux-next on sparc64:
$ make CROSS_COMPILE=sparc64-unknown-linux-gnu-
CHK include/linux/version.h
CHK include/generated/utsrelease.h
UPD include/generated/utsrelease.h
CC kernel/bounds.s
GEN include/generated/bounds.h
CC arch/sparc/kernel/asm-offsets.s
GEN include/generated/asm-offsets.h
CALL scripts/checksyscalls.sh
CC scripts/mod/empty.o
MKELF scripts/mod/elfconfig.h
HOSTCC scripts/mod/file2alias.o
HOSTCC scripts/mod/modpost.o
HOSTCC scripts/mod/sumversion.o
HOSTLD scripts/mod/modpost
/usr/lib/gcc/sparc-unknown-linux-gnu/4.5.2/../../../../sparc-unknown-linux-gnu/bin/ld:
scripts/mod/sumversion.o: Relocations in generic ELF (EM: 3)
scripts/mod/sumversion.o: could not read symbols: File in wrong format
collect2: ld returned 1 exit status
$ file scripts/mod/sumversion.o
scripts/mod/sumversion.o: ELF 32-bit LSB relocatable, Intel 80386,
version 1 (SYSV), not stripped
Why 386?
gcc both sparc and sparc64 are 4.5.2, ld/binutils is 2.21
On 15 March 2011 08:04, Alexander Beregalov <[email protected]> wrote:
> On 12 March 2011 02:06, Henrik Rydberg <[email protected]> wrote:
>> On Fri, Mar 11, 2011 at 10:34:47PM +0100, Michal Marek wrote:
>>> Recent change to fixdep:
>>>
>>> commit b7bd182176960fdd139486cadb9962b39f8a2b50
>>> Author: Michal Marek <[email protected]>
>>> Date: Thu Feb 17 15:13:54 2011 +0100
>>>
>>> fixdep: Do not record dependency on the source file itself
>>>
>>> changed the format of the *.cmd files without realizing that it is also
>>> used by modpost. Put the path to the source file to the file back, in a
>>> special variable, so that modpost sees all source files when calculating
>>> srcversion for modules.
>>>
>
> Hi Michal,
>
> There is something wrong with the patch,
> I can't compile 2.6.38 neither linux-next on sparc64:
>
> $ make CROSS_COMPILE=sparc64-unknown-linux-gnu-
> CHK include/linux/version.h
> CHK include/generated/utsrelease.h
> UPD include/generated/utsrelease.h
> CC kernel/bounds.s
> GEN include/generated/bounds.h
> CC arch/sparc/kernel/asm-offsets.s
> GEN include/generated/asm-offsets.h
> CALL scripts/checksyscalls.sh
> CC scripts/mod/empty.o
> MKELF scripts/mod/elfconfig.h
> HOSTCC scripts/mod/file2alias.o
> HOSTCC scripts/mod/modpost.o
> HOSTCC scripts/mod/sumversion.o
> HOSTLD scripts/mod/modpost
> /usr/lib/gcc/sparc-unknown-linux-gnu/4.5.2/../../../../sparc-unknown-linux-gnu/bin/ld:
> scripts/mod/sumversion.o: Relocations in generic ELF (EM: 3)
> scripts/mod/sumversion.o: could not read symbols: File in wrong format
> collect2: ld returned 1 exit status
>
> $ file scripts/mod/sumversion.o
> scripts/mod/sumversion.o: ELF 32-bit LSB relocatable, Intel 80386,
> version 1 (SYSV), not stripped
>
> Why 386?
>
> gcc both sparc and sparc64 are 4.5.2, ld/binutils is 2.21
>
Sorry for the noise, it's my fault.
I use distcc for distributing sparc64-unknown-linux-gnu-gcc calls to x86 host.
I should not distribute plain 'gcc' calls.
On 15.3.2011 06:04, Alexander Beregalov wrote:
> On 12 March 2011 02:06, Henrik Rydberg <[email protected]> wrote:
>> On Fri, Mar 11, 2011 at 10:34:47PM +0100, Michal Marek wrote:
>>> Recent change to fixdep:
>>>
>>> commit b7bd182176960fdd139486cadb9962b39f8a2b50
>>> Author: Michal Marek <[email protected]>
>>> Date: Thu Feb 17 15:13:54 2011 +0100
>>>
>>> fixdep: Do not record dependency on the source file itself
>>>
>>> changed the format of the *.cmd files without realizing that it is also
>>> used by modpost. Put the path to the source file to the file back, in a
>>> special variable, so that modpost sees all source files when calculating
>>> srcversion for modules.
>>>
>
> Hi Michal,
>
> There is something wrong with the patch,
> I can't compile 2.6.38 neither linux-next on sparc64:
>
> $ make CROSS_COMPILE=sparc64-unknown-linux-gnu-
> CHK include/linux/version.h
> CHK include/generated/utsrelease.h
> UPD include/generated/utsrelease.h
> CC kernel/bounds.s
> GEN include/generated/bounds.h
> CC arch/sparc/kernel/asm-offsets.s
> GEN include/generated/asm-offsets.h
> CALL scripts/checksyscalls.sh
> CC scripts/mod/empty.o
> MKELF scripts/mod/elfconfig.h
> HOSTCC scripts/mod/file2alias.o
> HOSTCC scripts/mod/modpost.o
> HOSTCC scripts/mod/sumversion.o
> HOSTLD scripts/mod/modpost
> /usr/lib/gcc/sparc-unknown-linux-gnu/4.5.2/../../../../sparc-unknown-linux-gnu/bin/ld:
> scripts/mod/sumversion.o: Relocations in generic ELF (EM: 3)
> scripts/mod/sumversion.o: could not read symbols: File in wrong format
> collect2: ld returned 1 exit status
>
> $ file scripts/mod/sumversion.o
> scripts/mod/sumversion.o: ELF 32-bit LSB relocatable, Intel 80386,
> version 1 (SYSV), not stripped
>
> Why 386?
I don't know. If you are building on x86 for sparc, then the host
executables have to be x86. Please provide details. But I'm quite sure
that the above patch is not the cause.
Michal