2011-03-08 05:40:59

by Linus Torvalds

[permalink] [raw]
Subject: Linux 2.6.38-rc8

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


2011-03-08 09:23:07

by Alexey Dobriyan

[permalink] [raw]
Subject: 2.6.38-rc8: lockdep vs nouveau

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

2011-03-08 16:53:17

by Alexey Dobriyan

[permalink] [raw]
Subject: Re: 2.6.38-rc8: lockdep vs nouveau

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

2011-03-11 09:26:20

by Henrik Rydberg

[permalink] [raw]
Subject: Re: Linux 2.6.38-rc8

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

2011-03-11 14:27:26

by Michal Marek

[permalink] [raw]
Subject: Re: Linux 2.6.38-rc8

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

2011-03-11 21:35:06

by Michal Marek

[permalink] [raw]
Subject: [PATCH] kbuild: Fix computing srcversion for modules

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

2011-03-11 23:03:42

by Henrik Rydberg

[permalink] [raw]
Subject: Re: [PATCH] kbuild: Fix computing srcversion for modules

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

2011-03-12 10:28:19

by Török Edwin

[permalink] [raw]
Subject: Re: Linux 2.6.38-rc8

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

2011-03-12 22:11:15

by Sedat Dilek

[permalink] [raw]
Subject: Re: Linux 2.6.38-rc8

[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

2011-03-15 05:04:25

by Alexander Beregalov

[permalink] [raw]
Subject: Re: [PATCH] kbuild: Fix computing srcversion for modules

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

2011-03-15 05:26:10

by Alexander Beregalov

[permalink] [raw]
Subject: Re: [PATCH] kbuild: Fix computing srcversion for modules

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.

2011-03-15 07:24:13

by Michal Marek

[permalink] [raw]
Subject: Re: [PATCH] kbuild: Fix computing srcversion for modules

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