public inbox for linux-kernel@vger.kernel.org
 help / color / mirror / Atom feed
From: Rusty Russell <rusty@rustcorp.com.au>
To: Cong Wang <xiyou.wangcong@gmail.com>,
	Jesse Gross <jesse@nicira.com>,
	"David S. Miller" <davem@davemloft.net>,
	"Greg KH" <greg@kroah.com>
Cc: LKML <linux-kernel@vger.kernel.org>,
	Linux Kernel Network Developers <netdev@vger.kernel.org>
Subject: Re: No sysfs directory for openvswitch module when built-in
Date: Mon, 04 Feb 2013 16:29:51 +1030	[thread overview]
Message-ID: <87boc0liug.fsf@rustcorp.com.au> (raw)
In-Reply-To: <CAM_iQpVgEchb8UsxUP=w6OMbYx=zuP2yv=QwFhe8rPCbNBreVg@mail.gmail.com>

Cong Wang <xiyou.wangcong@gmail.com> writes:
> Hello, Rusty, Jesse,
>
> I met an interesting problem when I compile openvswitch module as a
> built-in (actually I compile ALL kernel modules as built-in), there is
> no /sys/module/openvswitch/ directory created by the kernel in this
> case.
...
> What's worse, the user-space init script thinks openvswitch module is
> not loaded by checking the exist of this directory, therefore refuses
> to start.

We only know built-in "modules" exist if we see a parameter or version
which mention them.  Looking for /sys/module/openvswitch/ is almost as
flawed as looking in /proc/modules.

I hacked up something which lists KBUILD_MODNAME for every element in my
kernel which did EXPORT_KERNEL or module_init, and most of them can
never be modules, though any could have parameters.  Even if we changed
the build system so we could tell things which "could have been a
module", it's silly.

In summary, you really need to test features, not presence of modules.

Cheers,
Rusty.

PS. Here's the list:

8250_core, 8250_pci, ac, access, acpi, acpi_i2c, addrconf_core, aead,
aerdriver, aes_generic, af_inet, af_netlink, af_packet, agpgart, ahci,
aio, amd, amd64_agp, amd_nb, anon_inodes, apic, arc4, argv_split, arp,
asn1_decoder, asymmetric_keys, async, ata_piix, atkbd, atomic64_32,
attr, attribute_container, autoprobe, average, backing_dev, backlight,
bad_inode, balloon_compaction, battery, bcd, bin, bio, bitblit, bitmap,
bitrev, blk_core, blk_exec, blk_flush, blk_ioc, blk_iopoll, blk_lib,
blk_map, blk_merge, blk_settings, blk_softirq, blk_tag, blk_timeout,
block_dev, boot, bootflag, bounce, bsearch, buffer, bus, bus, button,
cache_smp, capability, cfbcopyarea, cfbfillrect, cfbimgblt, cfg80211,
chainiv, char_dev, check_signature, chip, class, clock, clockevents,
clocksource, cmdline, common, common, configs, consolemap, container,
core, core, core, coredump, cpu, cpu, cpu, cpu_rmap, cpuidle, cpumask,
cputime, crc16, crc32, crc32c, crc_t10dif, cred, crypto, crypto_algapi,
crypto_blkcipher, crypto_hash, crypto_wq, cryptomgr, cstate, ctype,
datagram, datagram, dcache, dd, debug_core, debug_locks, debugfs,
dec_and_lock, delay, delayacct, dev, dev_addr_lists, devinet, devpts,
devres, devres, devres, dir, direct_io, div64, dma, dma_buf,
dma_coherent, dma_mapping, dmapool, dmi_scan, dnotify, driver, driver,
drm, drm_kms_helper, dst, dummychip, dumpstack, dumpstack_32,
dynamic_queue_limits, e1000e, e820, elevator, eseqiv, eth, ethtool,
eventfd, exec, exec_domain, exit, ext2, ext3, ext4, exthdrs_core, fan,
fb, fb_notify, fbcon, fbdev, fcntl, fib_frontend, fib_rules, fib_rules,
fib_trie, file, file, file_table, filemap, filesystems, filter,
find_last_bit, find_next_bit, firmware, firmware_class, flex_array,
flow, flow_dissector, font, fork, freezer, fremap, fs_struct,
fs_writeback, fsnotify, gcd, gen_estimator, gen_stats, generic,
generic_ops, genetlink, genhd, group, groups, halfmd4, hexdump, hid,
hid_a4tech, hid_apple, hid_belkin, hid_cherry, hid_chicony, hid_cypress,
hid_ezkey, hid_generic, hid_gyration, hid_logitech, hid_microsoft,
hid_monterey, hid_petalynx, hid_pl, hid_samsung, hid_sony, hid_sunplus,
highmem, highmem_32, host_bridge, hpet, hrtimer, htirq, hung_task,
hvc_console, hw_breakpoint, hw_breakpoint, hweight, hwmon, hypervisor,
i2c_algo_bit, i2c_boardinfo, i2c_core, i386, i386_ksyms_32, i387, i8042,
i810, i810fb, i8253, i915, icmp, ide_core, ide_gd_mod, ide_generic,
ide_pci_generic, ide_scan_pci, idr, igmp, inet_connection_sock,
inet_fragment, inet_hashtables, inet_lro, inet_timewait_sock, inetpeer,
init_32, init_task, inode, inotify_user, input_core, int_sqrt,
intel_agp, intel_gtt, io_apic, io_delay, ioapic, ioctl, ioctl, iomap,
iomap_32, iomap_copy, ioprio, ioremap, ioremap, iovec, ip_fragment,
ip_input, ip_options, ip_output, ip_sockglue, ip_tables, irq, irq,
irq_32, irq_work, irqdesc, jbd, jbd2, jiffies, kasprintf, kdebugfs, key,
keyboard, keyring, kfifo, kgdboc, klist, kmod, kobject, kobject_uevent,
krng, kstrtox, ksysfs, kthread, ladder, lcm, led_class, led_core,
led_triggers, legacy, lglock, libahci, libata, libfs, libps2,
link_watch, list_debug, list_sort, llist, locks, logo, mac80211,
maccess, main, main, main, main, manage, match, mbcache, mce, md5, md5,
memcpy_32, memory, mempool, memweight, menu, mii, misc, mlock, mm_init,
mmap, mmu_context, mmu_notifier, module, mount, mousedev, mpage, mpi,
mshyperv, msr, msr_reg_export, msr_smp, mutex, mutex_debug, n_tty,
namei, namespace, neighbour, net_namespace, net_sysfs, netevent,
netfilter, netfilter, netpoll, nf_conntrack, nf_conntrack_ipv4,
nf_defrag_ipv4, nlattr, nls_base, nmi, nobootmem, noop_iosched,
notification, notifier, nvram, oid_registry, oom_kill, open, output,
output_core, page_alloc, page_writeback, pageattr, panic, params,
paravirt, parser, partition_generic, pat, pcbios, pci, pci_dma,
pci_driver, pci_iomap, pci_quirks, pcieportdrv, pcips2, pcompress,
percpu, percpu_counter, perf_event, perf_event_amd, perf_event_amd_ibs,
perf_event_intel, perfctr_watchdog, permission, pgtable_32, physaddr,
pid, piix, ping, pipe, platform, plist, pm, pnp, posix_acl, posix_clock,
posix_timers, power_supply, printk, probe, probe_32, probe_roms, proc,
process, process_32, processor, protocol, protocol, psmouse, ptrace,
pty, public_key, qos, qos, quirks, radix_tree, ramfs, random, random32,
ratelimit, raw, rbtree, rcupdate, rcutree, read_write, readahead,
readdir, reboot, reciprocal_div, relay, remove, request_key,
request_sock, resource, rfkill, rmap, rng, rom, route, rsa, rtc,
rtmutex, rtnetlink, rwsem, rwsem, scatterlist, sch_generic, scm,
scsi_ioctl, scsi_mod, sd_mod, search, secure_seq, select, semaphore,
seq_file, serial_core, serio, setup, setup_bus, setup_percpu, setup_res,
sha1, sha1_generic, sha512_generic, shmem, signal, skbuff, slab_common,
slot, slub, smp, smp, smpboot, smpboot, sock, sock_diag, socket,
softcursor, softirq, sort, soundcore, spinlock, spinlock_debug, splice,
srcu, stack, staging, stat, statfs, stats, stop_machine, stream, string,
string_32, string_helpers, strncpy_from_user, strnlen_user, super,
suspend, swap, swapfile, symlink, sync, syncookies, sys, syscall,
syscore, sysctl, sysctl_net, sysfs, sysrq, tcp, tcp_cong, tcp_cubic,
tcp_input, tcp_ipv4, tcp_metrics, tcp_minisocks, tcp_output, tcp_timer,
therm_throt, thermal, thermal_sys, thinkpad_acpi, tick_sched, tileblit,
time, time, timeconv, timekeeping, timer, timerqueue, tlb, topology,
transport_class, traps, truncate, tsc, tty_buffer, tty_io, tty_ioctl,
tty_ldisc, tty_mutex, tty_port, udp, udplite, unix, usb_common, usbcore,
usbhid, usbmon, user, user_defined, user_return_notifier, usercopy,
usercopy_32, util, utils, uuid, vdso32_setup, version, vesafb, vgaarb,
vgacon, vgastate, video, virtio, virtio_blk, virtio_console, virtio_net,
virtio_pci, virtio_ring, vlan_core, vmalloc, vmscan, vmstat, vmware,
vpd, vsprintf, vt, vt_ioctl, wait, wakeup, workqueue, x509_key_parser,
x86_init, x_tables, xattr, xattr_acl, xfrm4_input, xfrm4_output,
xfrm_input, xfrm_output, xfrm_policy, xfrm_replay, xfrm_state,
xt_tcpudp, zlib_inflate

  reply	other threads:[~2013-02-04  6:11 UTC|newest]

Thread overview: 10+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2013-01-29 14:15 No sysfs directory for openvswitch module when built-in Cong Wang
2013-02-04  5:59 ` Rusty Russell [this message]
2013-02-05 14:28   ` Cong Wang
2013-02-05 17:59   ` Ben Hutchings
2013-02-06 23:38     ` Rusty Russell
2013-02-04 16:19 ` Stephen Hemminger
2013-02-05  6:08   ` Ben Pfaff
2013-02-05 10:49     ` Cong Wang
2013-02-05 19:15       ` Ben Pfaff
2013-02-05 22:11         ` Stephen Hemminger

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=87boc0liug.fsf@rustcorp.com.au \
    --to=rusty@rustcorp.com.au \
    --cc=davem@davemloft.net \
    --cc=greg@kroah.com \
    --cc=jesse@nicira.com \
    --cc=linux-kernel@vger.kernel.org \
    --cc=netdev@vger.kernel.org \
    --cc=xiyou.wangcong@gmail.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox