--- /dev/null
+#!/usr/bin/python
+#
+# check-kabi - Red Hat kABI reference checking tool
+#
+# We use this script to check against reference Module.kabi files.
+#
+# Author: Jon Masters <jcm@redhat.com>
+# Copyright (C) 2007-2009 Red Hat, Inc.
+#
+# This software may be freely redistributed under the terms of the GNU
+# General Public License (GPL).
+
+# Changelog:
+#
+# 2009/08/15 - Updated for use in RHEL6.
+# 2007/06/13 - Initial rewrite in python by Jon Masters.
+
+__author__ = "Jon Masters <jcm@redhat.com>"
+__version__ = "2.0"
+__date__ = "2009/08/15"
+__copyright__ = "Copyright (C) 2007-2009 Red Hat, Inc"
+__license__ = "GPL"
+
+import getopt
+import os
+import re
+import sha
+import string
+import sys
+
+true = 1
+false = 0
+
+def load_symvers(symvers,filename):
+ """Load a Module.symvers file."""
+
+ symvers_file = open(filename,"r")
+
+ while true:
+ in_line = symvers_file.readline()
+ if in_line == "":
+ break
+ if in_line == "\n":
+ continue
+ checksum,symbol,directory,type = string.split(in_line)
+
+ symvers[symbol] = in_line[0:-1]
+
+def load_kabi(kabi,filename):
+ """Load a Module.kabi file."""
+
+ kabi_file = open(filename,"r")
+
+ while true:
+ in_line = kabi_file.readline()
+ if in_line == "":
+ break
+ if in_line == "\n":
+ continue
+ checksum,symbol,directory,type = string.split(in_line)
+
+ kabi[symbol] = in_line[0:-1]
+
+def check_kabi(symvers,kabi):
+ """Check Module.kabi and Module.symvers files."""
+
+ fail=0
+ warn=0
+ changed_symbols=[]
+ moved_symbols=[]
+
+ for symbol in kabi:
+ abi_hash,abi_sym,abi_dir,abi_type = string.split(kabi[symbol])
+ if symvers.has_key(symbol):
+ sym_hash,sym_sym,sym_dir,sym_type = string.split(symvers[symbol])
+ if abi_hash != sym_hash:
+ fail=1
+ changed_symbols.append(symbol)
+
+ if abi_dir != sym_dir:
+ warn=1
+ moved_symbols.append(symbol)
+
+ if fail:
+ print "*** ERROR - ABI BREAKAGE WAS DETECTED ***"
+ print ""
+ print "The following symbols have been changed (this will cause an ABI breakage):"
+ print ""
+ for symbol in changed_symbols:
+ print symbol
+ print ""
+
+ if warn:
+ print "*** WARNING - ABI SYMBOLS MOVED ***"
+ print ""
+ print "The following symbols moved (typically caused by moving a symbol from being"
+ print "provided by the kernel vmlinux out to a loadable module):"
+ print ""
+ for symbol in moved_symbols:
+ print symbol
+ print ""
+
+ if fail:
+ sys.exit(1)
+ else:
+ sys.exit(0)
+
+def usage():
+ print """
+check-kabi: check Module.kabi and Module.symvers files.
+
+ check-kabi [ -k Module.kabi ] [ -s Module.symvers ]
+
+"""
+
+if __name__ == "__main__":
+
+ symvers_file = ""
+ kabi_file = ""
+
+ opts, args = getopt.getopt(sys.argv[1:], 'hk:s:')
+
+ for o, v in opts:
+ if o == "-s":
+ symvers_file = v
+ if o == "-h":
+ usage()
+ sys.exit(0)
+ if o == "-k":
+ kabi_file = v
+
+ if (symvers_file == "") or (kabi_file == ""):
+ usage()
+ sys.exit(1)
+
+ symvers={}
+ kabi={}
+
+ load_symvers(symvers,symvers_file)
+ load_kabi(kabi,kabi_file)
+ check_kabi(symvers,kabi)
--- /dev/null
+--- find-debuginfo.sh.orig 2012-09-12 20:42:13.106294407 +0100
++++ find-debuginfo.sh 2012-09-12 20:49:52.496863002 +0100
+@@ -36,6 +38,9 @@
+ --strict-build-id)
+ strict=true
+ ;;
++ -g1)
++ strip_g=full
++ ;;
+ -g)
+ strip_g=true
+ ;;
+@@ -88,11 +93,25 @@
+
+ strip_to_debug()
+ {
+- local g=
+- $strip_g && case "$(file -bi "$2")" in
+- application/x-sharedlib*) g=-g ;;
++ local use_objcopy=false
++ case "$strip_g" in
++ true) case "$(file -bi "$2")" in
++ application/x-sharedlib*) use_objcopy=true ;;
++ esac;;
++ full) use_objcopy=true;;
+ esac
+- eu-strip --remove-comment $g -f "$1" "$2" || exit
++ # Note: eu-strip fails to remove debugging info in files containing
++ # debugging relocations at present. objcopy works fine, so use that.
++ # (This does mean that .comment sections don't get stripped, but this
++ # seems an insignificant problem for now. When elfutils is fixed this
++ # hack can be removed.)
++ if $use_objcopy; then
++ objcopy --only-keep-debug "$2" "$1" || exit
++ objcopy --strip-debug "$2" "$2.tmp" || exit
++ mv -f "$2.tmp" "$2" || exit
++ else
++ eu-strip --remove-comment -f "$1" "$2" || exit
++ fi
+ chmod 444 "$1" || exit
+ }
+
--- /dev/null
+#!/usr/bin/python
+#
+# find-provides: munge the provides dependencies from the kabideps file
+#
+# This software may be freely redistributed under the terms of the GNU
+# General Public License (GPL).
+#
+# Takes a directory prefix, then outputs the kabideps file contents.
+
+__author__ = "Jon Masters <jcm@redhat.com>"
+__version__ = "1.0"
+__date__ = "Tue 25 Jul 2006 04:00 GMT"
+__copyright__ = "Copyright (C) 2006 Red Hat, Inc"
+__license__ = "GPL"
+
+import os
+import re
+import string
+import sys
+
+false = 0
+true = 1
+
+kabideps=""
+
+p = re.compile('^(.*)/symvers-(.*).gz$')
+while true:
+ foo = sys.stdin.readline()
+ if foo == "":
+ break
+ string.split(foo)
+ m = p.match(foo)
+ if m:
+ kabideps=sys.argv[1] + "/kernel-" + m.group(2) + "-kabideps"
+
+if kabideps == "":
+ sys.exit(0)
+
+if not (os.path.isfile(kabideps)):
+ sys.stderr.write(sys.argv[0] + ": cannot locate kabideps file: " + kabideps + "\n")
+ sys.exit(1)
+
+sys.stderr.write(sys.argv[0] + ": processing kABI: " + kabideps)
+os.system("cat " + kabideps)
--- /dev/null
+%pubring kernel.pub
+%secring kernel.sec
+Key-Type: DSA
+Key-Length: 1024
+Name-Real: Oracle America, Inc.
+Name-Comment: Kernel Module GPG key
+%commit
--- /dev/null
+[rhel6_x86_64_whitelist]
+ ___pskb_trim
+ __alloc_pages_nodemask
+ __alloc_percpu
+ __alloc_skb
+ __bdevname
+ __bitmap_and
+ __bitmap_complement
+ __bitmap_empty
+ __bitmap_weight
+ __blk_end_request_all
+ __blockdev_direct_IO
+ __bread
+ __brelse
+ __class_create
+ __class_register
+ __const_udelay
+ __copy_user_nocache
+ __dev_get_by_index
+ __dev_get_by_name
+ __free_pages
+ __generic_file_aio_write
+ __get_free_pages
+ __get_user_1
+ __get_user_2
+ __get_user_4
+ __get_user_8
+ __ieee80211_get_assoc_led_name
+ __ieee80211_get_radio_led_name
+ __ieee80211_get_rx_led_name
+ __ieee80211_get_tx_led_name
+ __init_rwsem
+ __init_waitqueue_head
+ __insert_inode_hash
+ __ipv6_addr_type
+ __kmalloc
+ __list_add
+ __lock_buffer
+ __lock_page
+ __mark_inode_dirty
+ __memcpy
+ __mutex_init
+ __napi_complete
+ __napi_schedule
+ __neigh_event_send
+ __netdev_alloc_skb
+ __netif_schedule
+ __next_cpu
+ __nf_ct_refresh_acct
+ __pagevec_release
+ __pci_register_driver
+ __per_cpu_offset
+ __phys_addr
+ __pskb_pull_tail
+ __put_cred
+ __put_user_1
+ __put_user_2
+ __put_user_4
+ __put_user_8
+ __register_chrdev
+ __release_region
+ __request_module
+ __request_region
+ __scsi_iterate_devices
+ __secpath_destroy
+ __set_page_dirty_nobuffers
+ __stack_chk_fail
+ __supported_pte_mask
+ __symbol_get
+ __symbol_put
+ __tasklet_hi_schedule
+ __tasklet_schedule
+ __tracepoint_kmalloc
+ __tracepoint_kmalloc_node
+ __tracepoint_module_get
+ __udelay
+ __uio_register_device
+ __unregister_chrdev
+ __vmalloc
+ __wake_up
+ __xfrm_state_destroy
+ _atomic_dec_and_lock
+ _cond_resched
+ _ctype
+ acpi_bus_generate_netlink_event
+ acpi_bus_generate_proc_event
+ acpi_bus_register_driver
+ acpi_bus_unregister_driver
+ acpi_check_region
+ acpi_check_resource_conflict
+ acpi_disabled
+ acpi_evaluate_integer
+ acpi_evaluate_object
+ acpi_get_handle
+ acpi_video_backlight_support
+ add_disk
+ add_timer
+ add_to_page_cache_locked
+ add_uevent_var
+ add_wait_queue
+ add_wait_queue_exclusive
+ alloc_chrdev_region
+ alloc_dca_provider
+ alloc_disk
+ alloc_pages_current
+ allow_signal
+ apic
+ arp_send
+ async_schedule
+ async_synchronize_full
+ atomic_notifier_call_chain
+ atomic_notifier_chain_register
+ atomic_notifier_chain_unregister
+ attribute_container_find_class_device
+ autoremove_wake_function
+ backlight_device_register
+ backlight_device_unregister
+ bdevname
+ bdget
+ bdget_disk
+ bdput
+ bio_add_page
+ bio_endio
+ bio_get_nr_vecs
+ bio_put
+ bitrev32
+ blk_alloc_queue
+ blk_cleanup_queue
+ blk_complete_request
+ blk_end_request_all
+ blk_execute_rq
+ blk_execute_rq_nowait
+ blk_fetch_request
+ blk_get_request
+ blk_init_queue
+ blk_init_tags
+ blk_integrity_register
+ blk_iopoll_complete
+ blk_iopoll_disable
+ blk_iopoll_enable
+ blk_iopoll_enabled
+ blk_iopoll_init
+ blk_iopoll_sched
+ blk_max_low_pfn
+ blk_peek_request
+ blk_put_request
+ blk_queue_alignment_offset
+ blk_queue_bounce_limit
+ blk_queue_end_tag
+ blk_queue_free_tags
+ blk_queue_init_tags
+ blk_queue_io_min
+ blk_queue_io_opt
+ blk_queue_logical_block_size
+ blk_queue_make_request
+ blk_queue_max_segment_size
+ blk_queue_merge_bvec
+ blk_queue_prep_rq
+ blk_queue_rq_timeout
+ blk_queue_softirq_done
+ blk_queue_stack_limits
+ blk_rq_map_sg
+ blk_rq_map_user
+ blk_rq_unmap_user
+ blk_run_queue
+ blk_start_queue
+ blk_start_request
+ blk_stop_queue
+ blkcipher_walk_done
+ blkcipher_walk_virt
+ blkdev_put
+ block_commit_write
+ block_read_full_page
+ block_write_begin
+ block_write_full_page
+ blocking_notifier_call_chain
+ blocking_notifier_chain_register
+ blocking_notifier_chain_unregister
+ boot_cpu_data
+ boot_tvec_bases
+ bus_register_notifier
+ bus_unregister
+ bus_unregister_notifier
+ byte_rev_table
+ cancel_delayed_work_sync
+ cancel_work_sync
+ capable
+ cdev_add
+ cdev_alloc
+ cdev_del
+ cdev_init
+ cfb_copyarea
+ cfb_fillrect
+ cfb_imageblit
+ check_disk_change
+ check_signature
+ class_create_file
+ class_destroy
+ class_remove_file
+ class_unregister
+ clear_inode
+ clear_page_dirty_for_io
+ clear_user
+ complete
+ complete_all
+ complete_and_exit
+ consume_skb
+ copy_in_user
+ cpu_khz
+ cpu_online_mask
+ cpu_possible_mask
+ cpu_present_mask
+ crc32_le
+ crc32c
+ crc_t10dif
+ create_empty_buffers
+ create_proc_entry
+ crypto_alloc_base
+ crypto_alloc_instance
+ crypto_attr_alg2
+ crypto_blkcipher_type
+ crypto_check_attr_type
+ crypto_destroy_tfm
+ crypto_drop_spawn
+ crypto_mod_put
+ crypto_register_alg
+ crypto_register_shash
+ crypto_register_template
+ crypto_spawn_tfm
+ crypto_unregister_alg
+ crypto_unregister_shash
+ crypto_unregister_template
+ crypto_xor
+ csum_ipv6_magic
+ csum_partial
+ current_fs_time
+ current_kernel_time
+ d_find_alias
+ d_instantiate
+ d_invalidate
+ d_lookup
+ d_obtain_alias
+ d_path
+ d_prune_aliases
+ d_rehash
+ d_splice_alias
+ datagram_poll
+ dca3_get_tag
+ dca_add_requester
+ dca_register_notify
+ dca_remove_requester
+ dca_unregister_notify
+ debugfs_create_bool
+ debugfs_create_dir
+ debugfs_create_file
+ debugfs_create_u8
+ debugfs_remove
+ default_llseek
+ default_wake_function
+ del_gendisk
+ del_timer
+ del_timer_sync
+ destroy_workqueue
+ dev_add_pack
+ dev_addr_add
+ dev_addr_del
+ dev_alloc_name
+ dev_base_lock
+ dev_close
+ dev_driver_string
+ dev_get_by_index
+ dev_get_by_name
+ dev_get_drvdata
+ dev_get_stats
+ dev_kfree_skb_any
+ dev_kfree_skb_irq
+ dev_mc_add
+ dev_open
+ dev_queue_xmit
+ dev_remove_pack
+ dev_set_allmulti
+ dev_set_drvdata
+ dev_set_mac_address
+ dev_set_mtu
+ dev_set_name
+ dev_set_promiscuity
+ dev_valid_name
+ device_add
+ device_create
+ device_create_file
+ device_del
+ device_destroy
+ device_for_each_child
+ device_initialize
+ device_register
+ device_remove_file
+ device_reprobe
+ device_unregister
+ devm_free_irq
+ devm_kzalloc
+ devm_request_threaded_irq
+ disable_irq
+ disable_irq_nosync
+ dma_async_device_register
+ dma_async_device_unregister
+ dma_async_tx_descriptor_init
+ dma_get_required_mask
+ dma_ops
+ dma_pool_alloc
+ dma_pool_create
+ dma_pool_destroy
+ dma_pool_free
+ dma_set_mask
+ dma_supported
+ dmam_alloc_coherent
+ dmi_check_system
+ dmi_find_device
+ dmi_first_match
+ dmi_get_date
+ dmi_get_system_info
+ dmi_match
+ dmi_walk
+ do_gettimeofday
+ do_sync_read
+ do_sync_write
+ down
+ down_interruptible
+ down_read
+ down_read_trylock
+ down_trylock
+ down_write
+ down_write_trylock
+ dput
+ driver_create_file
+ driver_for_each_device
+ driver_register
+ driver_remove_file
+ driver_unregister
+ dst_release
+ dump_stack
+ ec_read
+ ec_write
+ emergency_restart
+ enable_irq
+ end_page_writeback
+ eth_change_mtu
+ eth_mac_addr
+ eth_type_trans
+ eth_validate_addr
+ ether_setup
+ ethtool_op_get_link
+ fasync_helper
+ fb_alloc_cmap
+ fb_dealloc_cmap
+ fb_destroy_modedb
+ fb_find_mode
+ fb_get_options
+ fb_mode_option
+ fb_set_suspend
+ fb_set_var
+ fget
+ filemap_fault
+ filemap_fdatawait
+ filemap_fdatawrite
+ filemap_flush
+ filemap_write_and_wait
+ filemap_write_and_wait_range
+ filp_close
+ filp_open
+ filter_current_check_discard
+ find_first_bit
+ find_first_zero_bit
+ find_get_page
+ find_next_bit
+ find_next_zero_bit
+ find_or_create_page
+ find_vma
+ finish_wait
+ flush_scheduled_work
+ flush_signals
+ flush_workqueue
+ fput
+ framebuffer_alloc
+ framebuffer_release
+ free_buffer_head
+ free_dca_provider
+ free_dma
+ free_irq
+ free_netdev
+ free_pages
+ free_percpu
+ free_vm_area
+ generic_block_bmap
+ generic_delete_inode
+ generic_file_aio_read
+ generic_file_aio_write
+ generic_file_direct_write
+ generic_file_llseek
+ generic_file_mmap
+ generic_file_open
+ generic_fillattr
+ generic_make_request
+ generic_mii_ioctl
+ generic_permission
+ generic_read_dir
+ generic_readlink
+ generic_segment_checks
+ generic_write_checks
+ generic_write_end
+ genl_unregister_family
+ genphy_config_aneg
+ genphy_read_status
+ get_device
+ get_random_bytes
+ get_seconds
+ get_user_pages
+ get_write_access
+ get_zeroed_page
+ gnet_stats_copy_basic
+ gnet_stats_copy_queue
+ grab_cache_page_write_begin
+ have_submounts
+ hci_alloc_dev
+ hci_free_dev
+ hci_register_dev
+ hci_unregister_dev
+ hex_dump_to_buffer
+ high_memory
+ hrtimer_cancel
+ hrtimer_init
+ hrtimer_start
+ hwmon_device_register
+ hwmon_device_unregister
+ hwrng_register
+ hwrng_unregister
+ i2c_add_adapter
+ i2c_bit_add_bus
+ i2c_del_adapter
+ i2c_del_driver
+ i2c_master_recv
+ i2c_master_send
+ i2c_new_device
+ i2c_new_dummy
+ i2c_new_probed_device
+ i2c_register_driver
+ i2c_smbus_read_byte_data
+ i2c_smbus_read_i2c_block_data
+ i2c_smbus_read_word_data
+ i2c_smbus_write_byte
+ i2c_smbus_write_byte_data
+ i2c_smbus_write_word_data
+ i2c_transfer
+ i2c_unregister_device
+ icmp_send
+ ida_get_new_above
+ ida_pre_get
+ ida_remove
+ idr_destroy
+ idr_find
+ idr_for_each
+ idr_get_new
+ idr_get_new_above
+ idr_init
+ idr_pre_get
+ idr_remove
+ idr_remove_all
+ idr_replace
+ ieee80211_alloc_hw
+ ieee80211_channel_to_frequency
+ ieee80211_find_sta
+ ieee80211_free_hw
+ ieee80211_frequency_to_channel
+ ieee80211_hdrlen
+ ieee80211_queue_delayed_work
+ ieee80211_queue_work
+ ieee80211_rate_control_register
+ ieee80211_rate_control_unregister
+ ieee80211_register_hw
+ ieee80211_restart_hw
+ ieee80211_rx_irqsafe
+ ieee80211_scan_completed
+ ieee80211_start_tx_ba_cb_irqsafe
+ ieee80211_stop_queue
+ ieee80211_stop_queues
+ ieee80211_stop_tx_ba_cb_irqsafe
+ ieee80211_tx_status_irqsafe
+ ieee80211_unregister_hw
+ ieee80211_wake_queue
+ ieee80211_wake_queues
+ iget5_locked
+ iget_locked
+ igrab
+ ilookup5
+ in_group_p
+ in_aton
+ in_dev_finish_destroy
+ inet_add_protocol
+ inet_addr_type
+ inet_del_protocol
+ inet_proto_csum_replace4
+ inet_select_addr
+ inet_twsk_put
+ inetdev_by_index
+ init_net
+ init_pid_ns
+ init_special_inode
+ init_task
+ init_timer_key
+ init_uts_ns
+ inode_change_ok
+ inode_init_once
+ input_allocate_device
+ input_event
+ input_free_device
+ input_register_device
+ input_unregister_device
+ int_to_scsilun
+ interruptible_sleep_on
+ invalidate_bdev
+ invalidate_inode_pages2_range
+ invalidate_mapping_pages
+ ioctl_by_bdev
+ iomem_resource
+ ioport_resource
+ ioread16
+ ioread32
+ ioread8
+ ioremap_nocache
+ ioremap_wc
+ iounmap
+ iowrite16
+ iowrite32
+ iowrite8
+ ip6_route_output
+ ip_compute_csum
+ ip_defrag
+ ipmi_create_user
+ ipmi_destroy_user
+ ipmi_register_smi
+ ipmi_request_supply_msgs
+ ipmi_smi_msg_received
+ ipmi_smi_watcher_register
+ ipmi_smi_watcher_unregister
+ ipmi_unregister_smi
+ iput
+ ipv6_chk_addr
+ ipv6_skip_exthdr
+ is_bad_inode
+ jiffies
+ jiffies_to_clock_t
+ jiffies_to_msecs
+ jiffies_to_timeval
+ kasprintf
+ kernel_read
+ kernel_recvmsg
+ kernel_sendmsg
+ kfree
+ kfree_skb
+ kill_block_super
+ kill_fasync
+ kmem_cache_alloc
+ kmem_cache_create
+ kmem_cache_destroy
+ kmem_cache_free
+ kmemdup
+ kobject_create_and_add
+ kobject_del
+ kobject_init_and_add
+ kobject_put
+ kobject_set_name
+ kobject_uevent
+ kobject_uevent_env
+ krealloc
+ kset_create_and_add
+ kset_unregister
+ kstrdup
+ kstrndup
+ kthread_should_stop
+ kthread_stop
+ ktime_get
+ ktime_get_real
+ ktime_get_ts
+ led_classdev_register
+ led_classdev_unregister
+ led_trigger_register
+ led_trigger_unregister
+ list_del
+ local_bh_disable
+ local_bh_enable
+ local_bh_enable_ip
+ lock_rename
+ lock_sock_nested
+ lookup_one_len
+ lro_flush_all
+ lro_receive_skb
+ make_bad_inode
+ malloc_sizes
+ mapping_tagged
+ mark_buffer_async_write
+ mark_buffer_dirty
+ mark_page_accessed
+ match_int
+ match_strdup
+ match_token
+ mcount
+ mdio45_probe
+ mdio_mii_ioctl
+ mdiobus_read
+ mdiobus_write
+ mem_section
+ memchr
+ memcmp
+ memcpy
+ memcpy_fromiovec
+ memdup_user
+ memmove
+ memory_read_from_buffer
+ mempool_alloc
+ mempool_alloc_slab
+ mempool_create
+ mempool_destroy
+ mempool_free
+ mempool_free_slab
+ mempool_kfree
+ mempool_kmalloc
+ memset
+ mii_check_link
+ mii_check_media
+ mii_ethtool_gset
+ mii_ethtool_sset
+ mii_link_ok
+ mii_nway_restart
+ misc_deregister
+ misc_register
+ mnt_drop_write
+ mnt_want_write
+ mod_timer
+ module_layout
+ module_put
+ module_refcount
+ movable_zone
+ mpage_readpage
+ mpage_readpages
+ mpage_writepages
+ msecs_to_jiffies
+ msleep
+ msleep_interruptible
+ mtrr_add
+ mtrr_del
+ mutex_lock
+ mutex_lock_interruptible
+ mutex_trylock
+ mutex_unlock
+ napi_complete
+ napi_get_frags
+ napi_gro_frags
+ napi_gro_receive
+ neigh_destroy
+ net_msg_warn
+ net_ratelimit
+ netdev_features_change
+ netdev_set_master
+ netif_carrier_off
+ netif_carrier_on
+ netif_device_attach
+ netif_device_detach
+ netif_napi_add
+ netif_napi_del
+ netif_receive_skb
+ netif_rx
+ netif_rx_ni
+ netlink_broadcast
+ netlink_kernel_release
+ netlink_unicast
+ netpoll_trap
+ new_inode
+ nf_conntrack_destroy
+ nf_conntrack_helper_register
+ nf_conntrack_helper_unregister
+ nf_conntrack_untracked
+ nf_ct_expect_alloc
+ nf_ct_expect_init
+ nf_ct_expect_put
+ nf_ct_expect_related_report
+ nf_ct_l3proto_module_put
+ nf_ct_l3proto_try_module_get
+ nf_ct_unexpect_related
+ nf_log_packet
+ nf_nat_setup_info
+ nf_register_hook
+ nf_register_hooks
+ nf_unregister_hook
+ nf_unregister_hooks
+ nla_parse
+ nla_put
+ no_llseek
+ nobh_truncate_page
+ nobh_write_begin
+ nobh_write_end
+ nobh_writepage
+ node_states
+ nonseekable_open
+ noop_qdisc
+ notify_change
+ nr_cpu_ids
+ ns_to_timeval
+ num_physpages
+ on_each_cpu
+ override_creds
+ pagevec_lookup_tag
+ panic
+ panic_notifier_list
+ param_get_bool
+ param_get_byte
+ param_get_charp
+ param_get_int
+ param_get_long
+ param_get_short
+ param_get_string
+ param_get_uint
+ param_get_ulong
+ param_get_ushort
+ param_set_bool
+ param_set_byte
+ param_set_charp
+ param_set_copystring
+ param_set_int
+ param_set_long
+ param_set_short
+ param_set_uint
+ param_set_ulong
+ param_set_ushort
+ path_get
+ path_put
+ pci_add_new_bus
+ pci_assign_resource
+ pci_bus_add_devices
+ pci_bus_alloc_resource
+ pci_bus_read_config_byte
+ pci_bus_read_config_dword
+ pci_bus_read_config_word
+ pci_bus_type
+ pci_bus_write_config_byte
+ pci_bus_write_config_dword
+ pci_bus_write_config_word
+ pci_choose_state
+ pci_cleanup_aer_uncorrect_error_status
+ pci_clear_mwi
+ pci_dev_driver
+ pci_dev_get
+ pci_dev_present
+ pci_dev_put
+ pci_disable_device
+ pci_disable_link_state
+ pci_disable_msi
+ pci_disable_msix
+ pci_disable_pcie_error_reporting
+ pci_disable_rom
+ pci_disable_sriov
+ pci_enable_device
+ pci_enable_device_mem
+ pci_enable_msi_block
+ pci_enable_msix
+ pci_enable_pcie_error_reporting
+ pci_enable_sriov
+ pci_find_bus
+ pci_find_capability
+ pci_get_device
+ pci_get_slot
+ pci_get_subsys
+ pci_intx
+ pci_iomap
+ pci_ioremap_bar
+ pci_iounmap
+ pci_map_rom
+ pci_match_id
+ pci_mem_start
+ pci_msi_enabled
+ pci_pme_active
+ pci_pme_capable
+ pci_prepare_to_sleep
+ pci_read_vpd
+ pci_reenable_device
+ pci_release_region
+ pci_release_regions
+ pci_release_selected_regions
+ pci_request_region
+ pci_request_regions
+ pci_request_selected_regions
+ pci_request_selected_regions_exclusive
+ pci_restore_state
+ pci_save_state
+ pci_scan_slot
+ pci_select_bars
+ pci_set_master
+ pci_set_mwi
+ pci_set_power_state
+ pci_try_set_mwi
+ pci_unmap_rom
+ pci_unregister_driver
+ pci_wake_from_d3
+ pcibios_align_resource
+ pcie_aspm_enabled
+ pcie_set_readrq
+ pcim_enable_device
+ pcim_iomap_regions
+ pcim_iomap_regions_request_all
+ pcim_iomap_table
+ pcim_pin_device
+ pcix_get_mmrbc
+ pcix_set_mmrbc
+ perf_tp_event
+ pfifo_qdisc_ops
+ pgprot_writecombine
+ phy_driver_register
+ phy_driver_unregister
+ pid_task
+ platform_device_add
+ platform_device_add_data
+ platform_device_add_resources
+ platform_device_alloc
+ platform_device_del
+ platform_device_put
+ platform_device_register
+ platform_device_unregister
+ platform_driver_probe
+ platform_driver_register
+ platform_driver_unregister
+ platform_get_irq
+ platform_get_resource
+ pnp_activate_dev
+ pnp_device_detach
+ pnp_get_resource
+ pnp_range_reserved
+ pnp_register_driver
+ pnp_unregister_driver
+ ppp_input
+ prepare_creds
+ prepare_to_wait
+ print_hex_dump
+ print_hex_dump_bytes
+ printk
+ proc_create_data
+ proc_dointvec
+ proc_dointvec_jiffies
+ proc_dointvec_minmax
+ proc_dostring
+ proc_mkdir
+ proto_register
+ proto_unregister
+ pskb_expand_head
+ put_device
+ put_disk
+ put_page
+ put_tty_driver
+ pv_cpu_ops
+ pv_irq_ops
+ qdisc_create_dflt
+ qdisc_destroy
+ qdisc_reset
+ qdisc_tree_decrease_qlen
+ queue_delayed_work
+ queue_delayed_work_on
+ queue_work
+ queue_work_on
+ radix_tree_gang_lookup
+ radix_tree_gang_lookup_tag
+ radix_tree_tag_clear
+ raid_class_attach
+ raid_class_release
+ rate_control_send_low
+ rb_erase
+ rb_first
+ rb_insert_color
+ rb_next
+ rcu_barrier
+ read_cache_page
+ redirty_page_for_writepage
+ register_blkdev
+ register_chrdev_region
+ register_cpu_notifier
+ register_dca_provider
+ register_die_notifier
+ register_filesystem
+ register_framebuffer
+ register_ftrace_event
+ register_inet6addr_notifier
+ register_inetaddr_notifier
+ register_ip_vs_scheduler
+ register_kprobe
+ register_kretprobe
+ register_netdev
+ register_netdevice
+ register_netdevice_notifier
+ register_netevent_notifier
+ register_pernet_subsys
+ register_qdisc
+ register_reboot_notifier
+ register_sysctl_paths
+ register_sysctl_table
+ register_sysrq_key
+ register_tcf_proto_ops
+ register_xenstore_notifier
+ register_xenbus_watch
+ relay_buf_full
+ relay_close
+ relay_file_operations
+ relay_flush
+ relay_open
+ relay_switch_subbuf
+ release_and_free_resource
+ release_firmware
+ release_resource
+ release_sock
+ remap_pfn_range
+ remove_proc_entry
+ remove_wait_queue
+ request_dma
+ request_firmware
+ request_threaded_irq
+ reset_devices
+ restore_vga
+ revalidate_disk
+ revert_creds
+ rfkill_alloc
+ rfkill_destroy
+ rfkill_register
+ rfkill_unregister
+ ring_buffer_event_data
+ round_jiffies
+ round_jiffies_relative
+ rtc_device_register
+ rtc_device_unregister
+ rtc_time_to_tm
+ rtc_update_irq
+ rtc_valid_tm
+ rtnl_is_locked
+ rtnl_link_register
+ rtnl_link_unregister
+ rtnl_lock
+ rtnl_unlock
+ save_stack_trace_tsk
+ save_vga
+ sb_set_blocksize
+ schedule
+ schedule_delayed_work
+ schedule_timeout
+ schedule_timeout_interruptible
+ schedule_timeout_uninterruptible
+ schedule_work
+ scnprintf
+ scsi_add_device
+ scsi_add_host_with_dma
+ scsi_adjust_queue_depth
+ scsi_bios_ptable
+ scsi_block_requests
+ scsi_block_when_processing_errors
+ scsi_build_sense_buffer
+ scsi_cmd_ioctl
+ scsi_command_normalize_sense
+ scsi_command_size_tbl
+ scsi_device_get
+ scsi_device_lookup
+ scsi_device_lookup_by_target
+ scsi_device_put
+ scsi_device_set_state
+ scsi_device_type
+ scsi_dma_map
+ scsi_dma_unmap
+ scsi_execute_req
+ scsi_get_command
+ scsi_get_sense_info_fld
+ scsi_get_vpd_page
+ scsi_host_alloc
+ scsi_host_get
+ scsi_host_lookup
+ scsi_host_put
+ scsi_host_set_state
+ scsi_internal_device_block
+ scsi_internal_device_unblock
+ scsi_ioctl
+ scsi_is_fc_rport
+ scsi_is_host_device
+ scsi_is_sas_rphy
+ scsi_kmap_atomic_sg
+ scsi_kunmap_atomic_sg
+ scsi_logging_level
+ scsi_mode_select
+ scsi_mode_sense
+ scsi_nonblockable_ioctl
+ scsi_normalize_sense
+ scsi_partsize
+ scsi_prep_fn
+ scsi_prep_return
+ scsi_print_command
+ scsi_print_result
+ scsi_print_sense
+ scsi_put_command
+ scsi_register_driver
+ scsi_remove_device
+ scsi_remove_host
+ scsi_remove_target
+ scsi_report_bus_reset
+ scsi_report_device_reset
+ scsi_scan_host
+ scsi_scan_target
+ scsi_set_medium_removal
+ scsi_setup_blk_pc_cmnd
+ scsi_setup_fs_cmnd
+ scsi_show_extd_sense
+ scsi_show_result
+ scsi_show_sense_hdr
+ scsi_test_unit_ready
+ scsi_track_queue_full
+ scsi_unblock_requests
+ scsicam_bios_param
+ scsilun_to_int
+ sdev_evt_send_simple
+ security_inode_init_security
+ send_sig
+ seq_lseek
+ seq_open
+ seq_printf
+ seq_puts
+ seq_read
+ seq_release
+ set_blocksize
+ set_cpus_allowed_ptr
+ set_disk_ro
+ set_memory_array_uc
+ set_memory_array_wb
+ set_memory_uc
+ set_memory_wb
+ set_memory_wc
+ set_page_dirty
+ set_user_nice
+ sg_copy_from_buffer
+ sg_copy_to_buffer
+ sg_init_one
+ sg_init_table
+ sg_next
+ sget
+ shmem_file_setup
+ shrink_dcache_parent
+ sigprocmask
+ simple_empty
+ simple_read_from_buffer
+ simple_strtol
+ simple_strtoul
+ simple_strtoull
+ single_open
+ single_release
+ sk_alloc
+ sk_free
+ skb_checksum
+ skb_checksum_help
+ skb_clone
+ skb_copy
+ skb_copy_bits
+ skb_copy_datagram_iovec
+ skb_copy_expand
+ skb_dequeue
+ skb_free_datagram
+ skb_gso_segment
+ skb_make_writable
+ skb_pad
+ skb_pull
+ skb_push
+ skb_put
+ skb_queue_head
+ skb_queue_purge
+ skb_queue_tail
+ skb_realloc_headroom
+ skb_recv_datagram
+ skb_trim
+ skb_tstamp_tx
+ skb_unlink
+ smp_call_function
+ smp_call_function_single
+ snd_ac97_bus
+ snd_ac97_mixer
+ snd_ac97_resume
+ snd_ac97_suspend
+ snd_card_create
+ snd_card_disconnect
+ snd_card_free
+ snd_card_proc_new
+ snd_card_register
+ snd_component_add
+ snd_ctl_add
+ snd_ctl_boolean_mono_info
+ snd_ctl_boolean_stereo_info
+ snd_ctl_find_id
+ snd_ctl_new1
+ snd_ctl_notify
+ snd_device_free
+ snd_device_new
+ snd_dma_alloc_pages
+ snd_dma_free_pages
+ snd_hwdep_new
+ snd_info_free_entry
+ snd_info_register
+ snd_interval_refine
+ snd_iprintf
+ snd_mpu401_uart_interrupt
+ snd_mpu401_uart_new
+ snd_pci_quirk_lookup
+ snd_pcm_format_physical_width
+ snd_pcm_format_width
+ snd_pcm_hw_constraint_integer
+ snd_pcm_hw_constraint_list
+ snd_pcm_hw_constraint_minmax
+ snd_pcm_hw_constraint_msbits
+ snd_pcm_hw_constraint_step
+ snd_pcm_hw_rule_add
+ snd_pcm_lib_free_pages
+ snd_pcm_lib_ioctl
+ snd_pcm_lib_malloc_pages
+ snd_pcm_lib_preallocate_pages
+ snd_pcm_lib_preallocate_pages_for_all
+ snd_pcm_limit_hw_rates
+ snd_pcm_new
+ snd_pcm_period_elapsed
+ snd_pcm_set_ops
+ snd_pcm_set_sync
+ snd_pcm_sgbuf_ops_page
+ snd_pcm_stop
+ snd_pcm_suspend_all
+ snd_rawmidi_new
+ snd_rawmidi_receive
+ snd_rawmidi_set_ops
+ snd_rawmidi_transmit
+ snd_rawmidi_transmit_ack
+ snd_rawmidi_transmit_empty
+ snd_rawmidi_transmit_peek
+ snprintf
+ sock_alloc_send_skb
+ sock_create
+ sock_create_kern
+ sock_get_timestamp
+ sock_init_data
+ sock_no_accept
+ sock_no_bind
+ sock_no_connect
+ sock_no_getname
+ sock_no_getsockopt
+ sock_no_listen
+ sock_no_mmap
+ sock_no_sendpage
+ sock_no_setsockopt
+ sock_no_shutdown
+ sock_no_socketpair
+ sock_queue_rcv_skb
+ sock_recvmsg
+ sock_register
+ sock_release
+ sock_sendmsg
+ sock_setsockopt
+ sock_unregister
+ sock_wfree
+ sockfd_lookup
+ soft_cursor
+ sort
+ spi_attach_transport
+ spi_display_xfer_agreement
+ spi_dv_device
+ spi_populate_ppr_msg
+ spi_populate_sync_msg
+ spi_populate_width_msg
+ spi_release_transport
+ sprintf
+ sscanf
+ starget_for_each_device
+ strcat
+ strchr
+ strcmp
+ strcpy
+ string_get_size
+ strlcat
+ strlcpy
+ strlen
+ strncasecmp
+ strncat
+ strncmp
+ strncpy
+ strncpy_from_user
+ strnicmp
+ strnlen
+ strrchr
+ strsep
+ strspn
+ strstr
+ submit_bh
+ submit_bio
+ sync_blockdev
+ synchronize_irq
+ synchronize_net
+ synchronize_sched
+ sys_tz
+ sysctl_tcp_dma_copybreak
+ sysctl_vfs_cache_pressure
+ sysfs_create_bin_file
+ sysfs_create_file
+ sysfs_create_group
+ sysfs_format_mac
+ sysfs_remove_bin_file
+ sysfs_remove_file
+ sysfs_remove_group
+ sysfs_schedule_callback
+ system_state
+ tasklet_init
+ tasklet_kill
+ tc_classify
+ tcf_action_exec
+ tcf_destroy_chain
+ tcf_exts_change
+ tcf_exts_destroy
+ tcf_exts_dump
+ tcf_exts_dump_stats
+ tcf_exts_validate
+ tcf_generic_walker
+ tcf_hash_check
+ tcf_hash_create
+ tcf_hash_insert
+ tcf_register_action
+ tcf_unregister_action
+ tcp_is_cwnd_limited
+ tcp_register_congestion_control
+ tcp_reno_min_cwnd
+ tcp_slow_start
+ tcp_unregister_congestion_control
+ test_set_page_writeback
+ timecounter_cyc2time
+ timecounter_init
+ timespec_to_jiffies
+ totalram_pages
+ touch_atime
+ trace_current_buffer_lock_reserve
+ trace_define_field
+ trace_seq_printf
+ tracepoint_probe_register
+ tracepoint_probe_unregister
+ tracing_generic_entry_update
+ truncate_inode_pages
+ truncate_inode_pages_range
+ tty_buffer_request_room
+ tty_flip_buffer_push
+ tty_hangup
+ tty_hung_up_p
+ tty_insert_flip_string_flags
+ tty_ldisc_flush
+ tty_register_device
+ tty_register_driver
+ tty_register_ldisc
+ tty_set_operations
+ tty_std_termios
+ tty_termios_baud_rate
+ tty_unregister_device
+ tty_unregister_driver
+ tty_unregister_ldisc
+ tty_wakeup
+ uio_event_notify
+ uio_unregister_device
+ unlock_buffer
+ unlock_new_inode
+ unlock_page
+ unlock_rename
+ unmap_mapping_range
+ unmap_underlying_metadata
+ unregister_blkdev
+ unregister_chrdev_region
+ unregister_cpu_notifier
+ unregister_dca_provider
+ unregister_die_notifier
+ unregister_filesystem
+ unregister_framebuffer
+ unregister_inet6addr_notifier
+ unregister_inetaddr_notifier
+ unregister_ip_vs_scheduler
+ unregister_kprobe
+ unregister_kprobes
+ unregister_kretprobes
+ unregister_netdev
+ unregister_netdevice_notifier
+ unregister_netevent_notifier
+ unregister_pernet_subsys
+ unregister_qdisc
+ unregister_reboot_notifier
+ unregister_shrinker
+ unregister_sysctl_table
+ unregister_sysrq_key
+ unregister_tcf_proto_ops
+ unregister_xenbus_watch
+ up
+ up_read
+ up_write
+ usb_alloc_urb
+ usb_altnum_to_altsetting
+ usb_anchor_empty
+ usb_anchor_urb
+ usb_autopm_get_interface
+ usb_autopm_get_interface_async
+ usb_autopm_put_interface
+ usb_autopm_put_interface_async
+ usb_bulk_msg
+ usb_clear_halt
+ usb_control_msg
+ usb_deregister
+ usb_deregister_dev
+ usb_disabled
+ usb_driver_claim_interface
+ usb_driver_release_interface
+ usb_driver_set_configuration
+ usb_find_interface
+ usb_free_urb
+ usb_get_current_frame_number
+ usb_get_descriptor
+ usb_get_dev
+ usb_get_from_anchor
+ usb_get_intf
+ usb_get_status
+ usb_get_urb
+ usb_ifnum_to_if
+ usb_interrupt_msg
+ usb_kill_anchored_urbs
+ usb_kill_urb
+ usb_lock_device_for_reset
+ usb_match_id
+ usb_poison_anchored_urbs
+ usb_poison_urb
+ usb_put_dev
+ usb_put_intf
+ usb_queue_reset_device
+ usb_register_dev
+ usb_register_driver
+ usb_reset_configuration
+ usb_reset_device
+ usb_reset_endpoint
+ usb_scuttle_anchored_urbs
+ usb_serial_handle_break
+ usb_serial_handle_sysrq_char
+ usb_serial_port_softint
+ usb_serial_resume
+ usb_serial_suspend
+ usb_set_interface
+ usb_string
+ usb_submit_urb
+ usb_unanchor_urb
+ usb_unlink_anchored_urbs
+ usb_unlink_urb
+ usb_unpoison_anchored_urbs
+ usb_unpoison_urb
+ usb_wait_anchor_empty_timeout
+ usbnet_disconnect
+ usbnet_get_endpoints
+ usbnet_open
+ usbnet_probe
+ usbnet_resume
+ usbnet_start_xmit
+ usbnet_stop
+ usbnet_suspend
+ usbnet_tx_timeout
+ usecs_to_jiffies
+ vfree
+ vfs_llseek
+ vfs_read
+ vfs_write
+ vfs_writev
+ vga_client_register
+ vgacon_text_force
+ vid_from_reg
+ vid_which_vrm
+ vlan_dev_real_dev
+ vlan_dev_vlan_id
+ vm_get_page_prot
+ vm_insert_pfn
+ vmalloc
+ vmalloc_32
+ vmalloc_node
+ vmalloc_to_page
+ vmalloc_user
+ vmap
+ vprintk
+ vscnprintf
+ vsnprintf
+ vsprintf
+ vsscanf
+ vunmap
+ wait_for_completion
+ wait_for_completion_interruptible
+ wait_for_completion_interruptible_timeout
+ wait_for_completion_timeout
+ wait_on_page_bit
+ wake_up_process
+ warn_slowpath_fmt
+ warn_slowpath_null
+ wiphy_rfkill_set_hw_state
+ wireless_send_event
+ write_inode_now
+ write_one_page
+ x86_dma_fallback_dev
+ xenbus_directory
+ xenbus_read
+ xenbus_rm
+ xenbus_scanf
+ xenbus_write
+ xfrm_register_mode
+ xfrm_register_type
+ xfrm_state_lookup
+ xfrm_unregister_mode
+ xfrm_unregister_type
+ xt_register_match
+ xt_register_matches
+ xt_register_target
+ xt_unregister_match
+ xt_unregister_matches
+ xt_unregister_target
+ yield
+ zlib_inflate
+ zlib_inflateEnd
+ zlib_inflateInit2
+ zlib_inflate_workspacesize
+ __pagevec_lru_add
+ __elv_add_request
+ bd_set_size
+ bdi_register_dev
+ bdi_unregister
+ bio_copy_user
+ bio_phys_segments
+ bio_uncopy_user
+ blk_queue_bounce
+ blk_queue_segment_boundary
+ blk_rq_map_kern
+ blk_sync_queue
+ elevator_exit
+ elevator_init
+ fsync_bdev
+ invalidate_partition
+ recalc_sigpending
+ scsi_is_sdev_device
+ set_device_ro
+ _raw_read_lock_irqsave
+ _raw_read_unlock_irqrestore
+ _raw_spin_lock
+ _raw_spin_lock_irq
+ _raw_spin_lock_irqsave
+ _raw_spin_unlock_irqrestore
+ _raw_write_lock_irqsave
+ _raw_write_unlock_irqrestore
+ blkdev_get_by_dev
+ blk_start_plug
+ blk_finish_plug
+ kernel_stack
+ cpu_number
+ current_task
+ blk_queue_max_segments
+ blk_queue_max_hw_sectors
+ kmem_cache_alloc_trace
+ aio_complete
+ bio_alloc_bioset
+ bio_init
+ blkdev_get_by_path
+ blkdev_issue_discard
+ _copy_from_user
+ _copy_to_user
+ copy_user_enhanced_fast_string
+ copy_user_generic_string
+ copy_user_generic_unrolled
+ d_drop
+ dget_parent
+ d_make_root
+ drop_nlink
+ d_set_d_op
+ flock_lock_file_wait
+ fs_bio_set
+ inc_nlink
+ inode_newsize_ok
+ invalidate_inode_buffers
+ irq_fpu_usable
+ __kernel_fpu_begin
+ __kernel_fpu_end
+ kern_path
+ kthread_create_on_node
+ locks_init_lock
+ __module_get
+ mount_bdev
+ posix_lock_file
+ posix_lock_file_wait
+ posix_test_lock
+ prepare_to_wait_exclusive
+ pv_lock_ops
+ __remove_inode_hash
+ set_nlink
+ truncate_pagecache
+ truncate_setsize
+ vfs_fsync
+ vfs_readv
+ vfs_rename
--- /dev/null
+#!/usr/bin/python
+#
+# kabitool - Red Hat kABI extraction tool (version 2)
+#
+# We use this script to generate RPM dependencies based on symversions.
+#
+# Author: Jon Masters <jcm@redhat.com>
+# Copyright (C) 2009 Red Hat, Inc.
+#
+# This software may be freely redistributed under the terms of the GNU
+# General Public License (GPL).
+
+# Changelog:
+#
+# 2009/08/01 - New version based on kABI dep plan for RHEL6.
+#
+
+__author__ = "Jon Masters <jcm@redhat.com>"
+__version__ = "$Revisions: 2.0 $"
+__date__ = "$Date: 2010/09/01 04:58:18 $"
+__copyright__ = "Copyright (C) 2009 Red Hat, Inc"
+__license__ = "GPL"
+
+import getopt
+import os
+import re
+import sha
+import string
+import sys
+
+true = 1
+false = 0
+
+def load_symbols(filename):
+ """Load the kernel exported symbols from Module.symvers."""
+
+ ksyms = open(filename,"r")
+
+ symbols={}
+
+ while true:
+ line = ksyms.readline()
+ if line == "":
+ break;
+ if line == "\n":
+ continue
+ checksum,symbol,path,license = string.split(line)
+
+ symbols[symbol] = dict(checksum=checksum,
+ path=path,
+ license=license)
+
+ return symbols
+
+def output_deps(depsfile,symbols):
+
+ deps_file = open(depsfile,"w")
+
+ for symbol in sorted(symbols.keys()):
+ deps_file.write("kernel("+symbol+") = " +
+ symbols[symbol]['checksum'] + "\n")
+
+def usage():
+ print """
+kabitool: process Module.symvers into useful exported kABI dependencies
+
+ kabitool [-k kernel] [-s symbols ]
+
+ -o The file to output sorted dependencies to
+
+ -s The Module.symvers file to import from
+
+"""
+
+if __name__ == "__main__":
+
+ symdeps_file = ""
+ symvers_file = ""
+
+ opts, args = getopt.getopt(sys.argv[1:], 'ho:s:')
+
+ for o, v in opts:
+ if o == "-h":
+ usage()
+ sys.exit(0)
+ if o == "-o":
+ symdeps_file = v
+ if o == "-s":
+ symvers_file = v
+
+ if (symdeps_file == ""):
+ symdeps_file = "Module.symdeps"
+
+ if (symvers_file == ""):
+ symvers_file = "Module.symvers"
+
+ if not (os.path.isfile(symvers_file)):
+ print "cannot read Module.symvers file"
+ usage()
+ exit(1)
+
+ symbols = load_symbols(symvers_file)
+ output_deps(symdeps_file, symbols)
--- /dev/null
+%define kernel_git_commit 74c661676446c010ea6f46dab7231d98761d66a5
+%global __spec_install_pre %{___build_pre}
+
+# Errors in specfile are causing builds to fail. Adding workarounds.
+%define _unpackaged_files_terminate_build 0
+%define _missing_doc_files_terminate_build 0
+
+Summary: The Linux kernel
+
+# For a stable, released kernel, released_kernel should be 1. For rawhide
+# and/or a kernel built from an rc or git snapshot, released_kernel should
+# be 0.
+%define released_kernel 1
+# Versions of various parts
+
+# Polite request for people who spin their own kernel rpms:
+# please modify the "buildid" define in a way that identifies
+# that the kernel isn't the stock distribution kernel, for example,
+# by setting the define to ".local" or ".bz123456"
+#
+# % define buildid .local
+
+%define distro_build 0
+%define signmodules 1
+
+# base_sublevel is the kernel version we're starting with and patching
+# on top of -- for example, 2.6.22-rc7-git1 starts with a 2.6.21 base,
+# which yields a base_sublevel of 21.
+%define base_sublevel 0
+
+## If this is a released kernel ##
+%if 0%{?released_kernel}
+
+# Do we have a -stable update to apply?
+%define stable_update 0
+# Is it a -stable RC?
+%define stable_rc 0
+# Set rpm version accordingly
+%if 0%{?stable_update}
+%define stablerev .%{stable_update}
+%define stable_base %{stable_update}
+%if 0%{?stable_rc}
+# stable RCs are incremental patches, so we need the previous stable patch
+%define stable_base %(echo $((%{stable_update} - 1)))
+%endif
+%endif
+%define rpmversion 4.1.%{base_sublevel}%{?stablerev}
+
+## The not-released-kernel case ##
+%else
+# The next upstream release sublevel (base_sublevel+1)
+%define upstream_sublevel %(echo $((%{base_sublevel} + 1)))
+# The rc snapshot level
+%define rcrev 0
+# The git snapshot level
+%define gitrev 0
+# Set rpm version accordingly
+%define rpmversion 4.1.%{upstream_sublevel}
+%endif
+# Nb: The above rcrev and gitrev values automagically define Patch00 and Patch01 below.
+
+# What parts do we want to build? We must build at least one kernel.
+# These are the kernels that are built IF the architecture allows it.
+# All should default to 1 (enabled) and be flipped to 0 (disabled)
+# by later arch-specific checks.
+
+# The following build options are enabled by default.
+# Use either --without <opt> in your rpmbuild command or force values
+# to 0 in here to disable them.
+#
+# standard kernel
+%define with_up 1
+# kernel-smp (only valid for ppc 32-bit, sparc64)
+%define with_smp 1
+# kernel-kdump
+%define with_kdump 0
+# kernel-debug
+%define with_debug 1
+# kernel-doc
+%define with_doc 1
+# kernel-headers
+%define with_headers 0
+# dtrace
+%define with_dtrace 0
+# kernel-firmware
+%define with_firmware 0
+# kernel-debuginfo
+%define with_debuginfo %{?_without_debuginfo: 0} %{?!_without_debuginfo: 1}
+# kernel-bootwrapper (for creating zImages from kernel + initrd)
+%define with_bootwrapper %{?_without_bootwrapper: 0} %{?!_without_bootwrapper: 1}
+# Want to build a the vsdo directories installed
+%define with_vdso_install %{?_without_vdso_install: 0} %{?!_without_vdso_install: 1}
+
+# Build the kernel-doc package, but don't fail the build if it botches.
+# Here "true" means "continue" and "false" means "fail the build".
+%if 0%{?released_kernel}
+%define doc_build_fail false
+%else
+%define doc_build_fail true
+%endif
+
+# Control whether we perform a compat. check against published ABI.
+%ifarch sparc64
+%define with_kabichk 0
+%define fancy_debuginfo 0
+%else
+%define with_kabichk 0
+%define fancy_debuginfo 0
+%endif
+
+# Control whether we build the hmac for fips mode.
+%define with_fips %{?_without_fips: 0} %{?!_without_fips: 1}
+
+%if %{fancy_debuginfo}
+BuildRequires: rpm-build >= 4.4.2.1-4
+%define debuginfo_args --strict-build-id
+%endif
+
+# Additional options for user-friendly one-off kernel building:
+#
+# Only build the base kernel (--with baseonly):
+%define with_baseonly %{?_with_baseonly: 1} %{?!_with_baseonly: 0}
+# Only build the smp kernel (--with smponly):
+%define with_smponly %{?_with_smponly: 1} %{?!_with_smponly: 0}
+
+# should we do C=1 builds with sparse
+%define with_sparse %{?_with_sparse: 1} %{?!_with_sparse: 0}
+
+# Set debugbuildsenabled to 1 for production (build separate debug kernels)
+# and 0 for rawhide (all kernels are debug kernels).
+# See also 'make debug' and 'make release'.
+%define debugbuildsenabled 1
+
+# Want to build a vanilla kernel build without any non-upstream patches?
+# (well, almost none, we need nonintconfig for build purposes). Default to 0 (off).
+%define with_vanilla %{?_with_vanilla: 1} %{?!_with_vanilla: 0}
+
+# pkg_release is what we'll fill in for the rpm Release: field
+%if 0%{?released_kernel}
+
+%if 0%{?stable_rc}
+%define stable_rctag .rc%{stable_rc}
+%endif
+%define pkg_release 1%{?dist}uek%{?buildid}
+
+%else
+
+# non-released_kernel
+%if 0%{?rcrev}
+%define rctag .rc%rcrev
+%else
+%define rctag .rc0
+%endif
+%if 0%{?gitrev}
+%define gittag .git%gitrev
+%else
+%define gittag .git0
+%endif
+%define pkg_release 1%{?dist}uek%{?buildid}
+
+%endif
+
+# The kernel tarball/base version
+#%define kversion 4.1
+%define kversion 4.1.%{base_sublevel}
+
+%define make_target bzImage
+
+%define hdrarch %_target_cpu
+%define asmarch %_target_cpu
+
+%if 0%{!?nopatches:1}
+%define nopatches 0
+%endif
+
+%if %{with_vanilla}
+%define nopatches 1
+%endif
+
+%define with_bootwrapper 0
+
+%define pkg_release 1%{?dist}uek%{?buildid}
+
+%define KVERREL %{rpmversion}-%{pkg_release}.%{_target_cpu}
+
+%if !%{debugbuildsenabled}
+%define with_debug 0
+%endif
+
+%if !%{with_debuginfo}
+%define _enable_debug_packages 0
+%endif
+%define debuginfodir /usr/lib/debug
+
+%define with_pae 0
+
+# if requested, only build base kernel
+%if %{with_baseonly}
+%define with_smp 0
+%define with_kdump 0
+%define with_debug 0
+%endif
+
+# if requested, only build smp kernel
+%if %{with_smponly}
+%define with_up 0
+%define with_kdump 0
+%define with_debug 0
+%endif
+
+%define all_x86 i386 i686
+
+%if %{with_vdso_install}
+# These arches install vdso/ directories.
+%define vdso_arches %{all_x86} x86_64 ppc ppc64
+%endif
+
+# Overrides for generic default options
+
+# only ppc need separate smp kernels
+%ifnarch ppc alphaev56
+%define with_smp 0
+%endif
+
+# only build kernel-kdump on ppc64
+# (no relocatable kernel support upstream yet)
+#FIXME: Temporarily disabled to speed up builds.
+#ifnarch ppc64
+%define with_kdump 0
+#endif
+
+# don't do debug builds on anything but i686 and x86_64
+%ifnarch i686 x86_64
+%define with_debug 0
+%endif
+
+# only package docs noarch
+%ifnarch noarch
+%define with_doc 0
+%endif
+
+# no need to build headers again for these arches,
+# they can just use i586 and ppc64 headers
+%ifarch ppc64iseries
+%define with_headers 0
+%endif
+
+# don't build noarch kernels or headers (duh)
+%ifarch noarch
+%define with_up 0
+%define with_headers 0
+%define with_paravirt 0
+%define with_paravirt_debug 0
+%define all_arch_configs kernel-%{version}-*.config
+%define with_firmware %{?_without_firmware: 0} %{?!_without_firmware: 1}
+%endif
+
+# bootwrapper is only on ppc
+%ifnarch ppc ppc64
+%define with_bootwrapper 0
+%endif
+
+# sparse blows up on ppc64 alpha and sparc64
+%ifarch ppc64 ppc alpha sparc64
+%define with_sparse 0
+%endif
+
+# Only x86_64 does dtrace
+%ifarch x86_64
+%define with_dtrace 1
+%endif
+
+# Per-arch tweaks
+
+%ifarch %{all_x86}
+%define asmarch x86
+%define hdrarch i386
+%define all_arch_configs kernel-%{version}-i?86*.config
+%define image_install_path boot
+%define kernel_image arch/x86/boot/bzImage
+%endif
+
+%ifarch x86_64
+%define asmarch x86
+#%define all_arch_configs kernel-%{version}-x86_64*.config
+%define image_install_path boot
+%define kernel_image arch/x86/boot/bzImage
+%endif
+
+%ifarch ppc64
+%define asmarch powerpc
+%define hdrarch powerpc
+%define all_arch_configs kernel-%{version}-ppc64*.config
+%define image_install_path boot
+%define make_target vmlinux
+%define kernel_image vmlinux
+%define kernel_image_elf 1
+%endif
+
+%ifarch s390x
+%define asmarch s390
+%define hdrarch s390
+%define all_arch_configs kernel-%{version}-s390x.config
+%define image_install_path boot
+%define make_target image
+%define kernel_image arch/s390/boot/image
+%endif
+
+%ifarch sparc
+# We only build sparc headers since we dont support sparc32 hardware
+%endif
+
+%ifarch sparc64
+%define asmarch sparc
+%define all_arch_configs kernel-%{version}-sparc64*.config
+%define make_target image
+%define kernel_image arch/sparc/boot/image
+%define image_install_path boot
+%endif
+
+%ifarch ppc
+%define asmarch powerpc
+%define hdrarch powerpc
+%define all_arch_configs kernel-%{version}-ppc{-,.}*config
+%define image_install_path boot
+%define make_target vmlinux
+%define kernel_image vmlinux
+%define kernel_image_elf 1
+%endif
+
+%ifarch ia64
+%define all_arch_configs kernel-%{version}-ia64*.config
+%define image_install_path boot/efi/EFI/redhat
+%define make_target compressed
+%define kernel_image vmlinux.gz
+%endif
+
+%ifarch alpha alphaev56
+%define all_arch_configs kernel-%{version}-alpha*.config
+%define image_install_path boot
+%define make_target vmlinux
+%define kernel_image vmlinux
+%endif
+
+%ifarch %{arm}
+%define all_arch_configs kernel-%{version}-arm*.config
+%define image_install_path boot
+%define hdrarch arm
+%define make_target vmlinux
+%define kernel_image vmlinux
+%endif
+
+%if %{nopatches}
+# XXX temporary until last vdso patches are upstream
+%define vdso_arches ppc ppc64
+%endif
+
+%define oldconfig_target oldnoconfig
+
+# To temporarily exclude an architecture from being built, add it to
+# %nobuildarches. Do _NOT_ use the ExclusiveArch: line, because if we
+# don't build kernel-headers then the new build system will no longer let
+# us use the previous build of that package -- it'll just be completely AWOL.
+# Which is a BadThing(tm).
+
+# We don't build a kernel on i386; we only do kernel-headers there,
+# and we no longer build for 31bit S390. Same for 32bit sparc and arm.
+##%define nobuildarches i386 s390 sparc %{arm}
+%define nobuildarches s390 sparc %{arm}
+
+%ifarch %nobuildarches
+%define with_up 0
+%define with_smp 0
+%define with_pae 0
+%define with_kdump 0
+%define with_debuginfo 0
+%define _enable_debug_packages 0
+%define with_paravirt 0
+%define with_paravirt_debug 0
+%endif
+
+%define with_pae_debug 0
+%if %{with_pae}
+%define with_pae_debug %{with_debug}
+%endif
+
+#
+# Three sets of minimum package version requirements in the form of Conflicts:
+# to versions below the minimum
+#
+
+#
+# First the general kernel 2.6 required versions as per
+# Documentation/Changes
+#
+%define kernel_dot_org_conflicts ppp < 2.4.3-3, isdn4k-utils < 3.2-32, nfs-utils < 1.0.7-12, e2fsprogs < 1.37-4, util-linux < 2.12, jfsutils < 1.1.7-2, reiserfs-utils < 3.6.19-2, xfsprogs < 2.6.13-4, procps < 3.2.5-6.3, oprofile < 0.9.1-2
+
+#
+# Then a series of requirements that are distribution specific, either
+# because we add patches for something, or the older versions have
+# problems with the newer kernel or lack certain things that make
+# integration in the distro harder than needed.
+#
+##%define package_conflicts initscripts < 7.23, udev < 063-6, iptables < 1.3.2-1, ipw2200-firmware < 2.4, iwl4965-firmware < 228.57.2, selinux-policy-targeted < 1.25.3-14, squashfs-tools < 4.0, wireless-tools < 29-3
+%define package_conflicts initscripts < 7.23, udev < 063-6, iptables < 1.3.2-1, ipw2200-firmware < 2.4, selinux-policy-targeted < 1.25.3-14, device-mapper-multipath < 0.4.9-64, dracut < 004-303.0.3
+
+#
+# The ld.so.conf.d file we install uses syntax older ldconfig's don't grok.
+#
+%define kernel_xen_conflicts glibc < 2.3.5-1, xen < 3.0.1
+
+# upto and including kernel 2.4.9 rpms, the 4Gb+ kernel was called kernel-enterprise
+# now that the smp kernel offers this capability, obsolete the old kernel
+%define kernel_smp_obsoletes kernel-enterprise < 2.4.10
+%define kernel_PAE_obsoletes kernel-smp < 2.6.17, kernel-xen <= 2.6.27-0.2.rc0.git6.fc10
+%define kernel_PAE_provides kernel-xen = %{rpmversion}-%{pkg_release}
+
+%ifarch x86_64
+%define kernel_obsoletes kernel-xen <= 2.6.27-0.2.rc0.git6.fc10
+%define kernel_provides kernel%{?variant}-xen = %{rpmversion}-%{pkg_release}
+%endif
+
+# We moved the drm include files into kernel-headers, make sure there's
+# a recent enough libdrm-devel on the system that doesn't have those.
+%define kernel_headers_conflicts libdrm-devel < 2.4.0-0.15
+
+#
+# Packages that need to be installed before the kernel is, because the %post
+# scripts use them.
+#
+%define kernel_prereq fileutils, module-init-tools, initscripts >= 8.11.1-1, kernel-firmware = %{rpmversion}-%{pkg_release}, /sbin/new-kernel-pkg, ql23xx-firmware
+%define initrd_prereq dracut-kernel >= 004-242.0.3
+
+#
+# This macro does requires, provides, conflicts, obsoletes for a kernel package.
+# %%kernel_reqprovconf <subpackage>
+# It uses any kernel_<subpackage>_conflicts and kernel_<subpackage>_obsoletes
+# macros defined above.
+#
+%define kernel_reqprovconf \
+Provides: kernel%{?variant} = %{rpmversion}-%{pkg_release}\
+Provides: kernel%{?variant}-%{_target_cpu} = %{rpmversion}-%{pkg_release}%{?1:.%{1}}\
+Provides: kernel%{?variant}-drm = 4.3.0\
+Provides: kernel%{?variant}-drm-nouveau = 12\
+Provides: kernel%{?variant}-modeset = 1\
+Provides: kernel%{?variant}-uname-r = %{KVERREL}%{?1:.%{1}}\
+Provides: oracleasm = 2.0.5\
+%ifnarch sparc64\
+Provides: x86_energy_perf_policy = %{KVERREL}%{?1:.%{1}}\
+%endif\
+Provides: perf = %{KVERREL}%{?1:.%{1}}\
+#Provides: libperf.a = %{KVERREL}%{?1:.%{1}}\
+%ifarch sparc64\
+Provides: kernel = %{rpmversion}-%{pkg_release}\
+%endif\
+Requires(pre): %{kernel_prereq}\
+Requires(pre): %{initrd_prereq}\
+Requires(post): /sbin/new-kernel-pkg\
+Requires(preun): /sbin/new-kernel-pkg\
+Conflicts: %{kernel_dot_org_conflicts}\
+Conflicts: %{package_conflicts}\
+%{expand:%%{?kernel%{?1:_%{1}}_conflicts:Conflicts: %%{kernel%{?1:_%{1}}_conflicts}}}\
+%{expand:%%{?kernel%{?1:_%{1}}_obsoletes:Obsoletes: %%{kernel%{?1:_%{1}}_obsoletes}}}\
+%{expand:%%{?kernel%{?1:_%{1}}_provides:Provides: %%{kernel%{?1:_%{1}}_provides}}}\
+# We can't let RPM do the dependencies automatic because it'll then pick up\
+# a correct but undesirable perl dependency from the module headers which\
+# isn't required for the kernel proper to function\
+AutoReq: no\
+AutoProv: yes\
+%{nil}
+
+%define variant %{?build_variant:%{build_variant}}%{!?build_variant:-uek}
+Name: kernel%{?variant}
+Group: System Environment/Kernel
+License: GPLv2
+URL: http://www.kernel.org/
+Version: %{rpmversion}
+Release: %{pkg_release}
+# DO NOT CHANGE THE 'ExclusiveArch' LINE TO TEMPORARILY EXCLUDE AN ARCHITECTURE BUILD.
+# SET %%nobuildarches (ABOVE) INSTEAD
+ExclusiveArch: noarch %{all_x86} x86_64 paravirt paravirt-debug ppc ppc64 ia64 sparc sparc64 s390x alpha alphaev56 %{arm}
+ExclusiveOS: Linux
+
+%kernel_reqprovconf
+%ifarch x86_64
+Obsoletes: kernel-smp
+%endif
+
+
+#
+# List the packages used during the kernel build
+#
+BuildRequires: module-init-tools, patch >= 2.5.4, bash >= 2.03, sh-utils, tar
+BuildRequires: bzip2, findutils, gzip, m4, perl, make >= 3.78, diffutils, gawk
+BuildRequires: gcc >= 3.4.2, binutils >= 2.12
+BuildRequires: net-tools
+BuildRequires: elfutils-libelf-devel
+BuildRequires: python, python-devel
+BuildRequires: flex >= 2.5.19, bison >= 2.3
+BuildRequires: pkgconfig
+BuildRequires: glib2-devel
+BuildRequires: elfutils-devel
+BuildRequires: bc
+%if %{with_doc}
+BuildRequires: xmlto
+%endif
+%if %{with_sparse}
+BuildRequires: sparse >= 0.4.1
+%endif
+%if %{signmodules}
+BuildRequires: openssl
+BuildRequires: gnupg
+#BuildRequires: pesign >= 0.10-4
+%endif
+%if %{with_fips}
+BuildRequires: hmaccalc
+%endif
+%if %{with_dtrace}
+BuildRequires: libdtrace-ctf-devel >= 0.5.0
+%endif
+BuildConflicts: rhbuildsys(DiskFree) < 500Mb
+
+Source0: ftp://ftp.kernel.org/pub/linux/kernel/v2.6/linux-%{kversion}.tar.bz2
+
+%if %{signmodules}
+Source10: x509.genkey
+%endif
+
+Source13: mod-sign.sh
+%define modsign_cmd %{SOURCE13}
+
+Source14: find-provides
+Source16: perf
+Source17: kabitool
+Source18: check-kabi
+Source19: extrakeys.pub
+Source20: x86_energy_perf_policy
+
+Source1000: config-x86_64
+Source1001: config-x86_64-debug
+#Source1004: config-sparc
+#Source1005: config-sparc-debug
+
+#Source26: Module.kabi_x86_64
+
+Source201: kabi_whitelist_x86_64
+Source202: ksplice_signing_key.x509
+
+#Source300: debuginfo-g1.diff
+#Source301: debuginfo-g1-minusr-old-elfutils.diff
+
+Source300: debuginfo-g1.diff
+
+# Here should be only the patches up to the upstream canonical Linus tree.
+
+# For a stable release kernel
+%if 0%{?stable_update}
+%if 0%{?stable_base}
+%define stable_patch_00 patch-2.6.%{base_sublevel}.%{stable_base}.bz2
+Patch00: %{stable_patch_00}
+%endif
+%if 0%{?stable_rc}
+%define stable_patch_01 patch-2.6.%{base_sublevel}.%{stable_update}-rc%{stable_rc}.bz2
+Patch01: %{stable_patch_01}
+%endif
+
+# non-released_kernel case
+# These are automagically defined by the rcrev and gitrev values set up
+# near the top of this spec file.
+%else
+%if 0%{?rcrev}
+Patch00: patch-2.6.%{upstream_sublevel}-rc%{rcrev}.bz2
+%if 0%{?gitrev}
+Patch01: patch-2.6.%{upstream_sublevel}-rc%{rcrev}-git%{gitrev}.bz2
+%endif
+%else
+# pre-{base_sublevel+1}-rc1 case
+%if 0%{?gitrev}
+Patch00: patch-2.6.%{base_sublevel}-git%{gitrev}.bz2
+%endif
+%endif
+%endif
+
+%if !%{nopatches}
+# revert patches place holder
+%endif
+
+
+BuildRoot: %{_tmppath}/kernel-%{KVERREL}-root
+
+# Override find_provides to use a script that provides "kernel(symbol) = hash".
+# Pass path of the RPM temp dir containing kabideps to find-provides script.
+%global _use_internal_dependency_generator 0
+%define __find_provides %_sourcedir/find-provides %{_tmppath}
+%define __find_requires /usr/lib/rpm/redhat/find-requires kernel
+
+%description
+The kernel package contains the Linux kernel (vmlinuz), the core of any
+Linux operating system. The kernel handles the basic functions
+of the operating system: memory allocation, process allocation, device
+input and output, etc.
+
+
+%package doc
+Summary: Various documentation bits found in the kernel source
+Group: Documentation
+Obsoletes: kernel-doc
+Provides: kernel-doc
+%description doc
+This package contains documentation files from the kernel
+source. Various bits of information about the Linux kernel and the
+device drivers shipped with it are documented in these files.
+
+You'll want to install this package if you need a reference to the
+options that can be passed to Linux kernel modules at load time.
+
+
+%package headers
+Summary: Header files for the Linux kernel for use by glibc
+Group: Development/System
+Obsoletes: glibc-kernheaders
+Obsoletes: kernel-headers
+Provides: kernel-headers
+Provides: glibc-kernheaders = 3.0-46
+%description headers
+Kernel-headers includes the C header files that specify the interface
+between the Linux kernel and userspace libraries and programs. The
+header files define structures and constants that are needed for
+building most standard programs and are also needed for rebuilding the
+glibc package.
+
+%package firmware
+Summary: Firmware files used by the Linux kernel
+Group: Development/System
+# This is... complicated.
+# Look at the WHENCE file.
+License: GPL+ and GPLv2+ and MIT and Redistributable, no modification permitted
+%if "x%{?variant}" != "x"
+Provides: kernel-firmware = %{rpmversion}-%{pkg_release}
+%endif
+%ifarch sparc64
+Provides: kernel-firmware = %{rpmversion}-%{pkg_release}
+%endif
+%description firmware
+Kernel firmware includes firmware files required for some devices to
+operate.
+
+%package bootwrapper
+Summary: Boot wrapper files for generating combined kernel + initrd images
+Group: Development/System
+Requires: gzip
+%description bootwrapper
+Kernel-bootwrapper contains the wrapper code which makes bootable "zImage"
+files combining both kernel and initial ramdisk.
+
+%package debuginfo-common
+Summary: Kernel source files used by %{name}-debuginfo packages
+Group: Development/Debug
+Provides: %{name}-debuginfo-common-%{_target_cpu} = %{version}-%{release}
+%description debuginfo-common
+This package is required by %{name}-debuginfo subpackages.
+It provides the kernel source files common to all builds.
+
+
+#
+# This macro creates a kernel-<subpackage>-debuginfo package.
+# %%kernel_debuginfo_package <subpackage>
+#
+%define kernel_debuginfo_package() \
+%package %{?1:%{1}-}debuginfo\
+Summary: Debug information for package %{name}%{?1:-%{1}}\
+Group: Development/Debug\
+Requires: %{name}-debuginfo-common-%{_target_cpu} = %{version}-%{release}\
+Provides: %{name}%{?1:-%{1}}-debuginfo-%{_target_cpu} = %{version}-%{release}\
+AutoReqProv: no\
+%description -n %{name}%{?1:-%{1}}-debuginfo\
+This package provides debug information for package %{name}%{?1:-%{1}}.\
+This is required to use SystemTap with %{name}%{?1:-%{1}}-%{KVERREL}.\
+%{expand:%%global debuginfo_args %{?debuginfo_args} -p '/.*/%%{KVERREL}%{?1:\.%{1}}/.*|/.*%%{KVERREL}%{?1:\.%{1}}(\.debug)?' -o debuginfo%{?1}.list}\
+%{nil}
+
+#
+# This macro creates a kernel-<subpackage>-devel package.
+# %%kernel_devel_package <subpackage> <pretty-name>
+#
+%define kernel_devel_package() \
+%package %{?1:%{1}-}devel\
+Summary: Development package for building kernel modules to match the %{?2:%{2} }kernel\
+Group: System Environment/Kernel\
+Provides: kernel%{?variant}%{?1:-%{1}}-devel-%{_target_cpu} = %{version}-%{release}\
+Provides: kernel%{?variant}-xen-devel = %{version}-%{release}%{?1:.%{1}}\
+Provides: kernel%{?variant}-devel-%{_target_cpu} = %{version}-%{release}%{?1:.%{1}}\
+Provides: kernel%{?variant}-devel = %{version}-%{release}%{?1:.%{1}}\
+Provides: kernel%{?variant}-devel-uname-r = %{KVERREL}%{?1:.%{1}}\
+%ifarch sparc64\
+Provides: kernel-devel = %{version}-%{release}%{?1:.%{1}}\
+%endif\
+AutoReqProv: no\
+Requires(pre): /usr/bin/find\
+Requires: elfutils-libelf >= 0.158\
+Requires: elfutils-libs >= 0.158\
+%if %{with_dtrace}\
+Requires: libdtrace-ctf >= 0.5.0\
+%endif\
+%description -n kernel%{?variant}%{?1:-%{1}}-devel\
+This package provides kernel headers and makefiles sufficient to build modules\
+against the %{?2:%{2} }kernel package.\
+%{nil}
+
+#
+# This macro creates a kernel-<subpackage> and its -devel and -debuginfo too.
+# %%define variant_summary The Linux kernel compiled for <configuration>
+# %%kernel_variant_package [-n <pretty-name>] <subpackage>
+#
+%define kernel_variant_package(n:) \
+%package %1\
+Summary: %{variant_summary}\
+Group: System Environment/Kernel\
+%kernel_reqprovconf\
+%{expand:%%kernel_devel_package %1 %{!?-n:%1}%{?-n:%{-n*}}}\
+%{expand:%%kernel_debuginfo_package %1}\
+%{nil}
+
+
+# First the auxiliary packages of the main kernel package.
+%kernel_devel_package
+%kernel_debuginfo_package
+
+
+# Now, each variant package.
+
+%define variant_summary The Linux kernel compiled for SMP machines
+%kernel_variant_package -n SMP smp
+%description smp
+This package includes a SMP version of the Linux kernel. It is
+required only on machines with two or more CPUs as well as machines with
+hyperthreading technology.
+
+Install the kernel-smp package if your machine uses two or more CPUs.
+
+
+%define variant_summary The Linux kernel compiled for PAE capable machines
+%kernel_variant_package PAE
+%description PAE
+This package includes a version of the Linux kernel with support for up to
+64GB of high memory. It requires a CPU with Physical Address Extensions (PAE).
+The non-PAE kernel can only address up to 4GB of memory.
+Install the kernel-PAE package if your machine has more than 4GB of memory.
+
+
+%define variant_summary The Linux kernel compiled with extra debugging enabled for PAE capable machines
+%kernel_variant_package PAEdebug
+Obsoletes: kernel-PAE-debug
+%description PAEdebug
+This package includes a version of the Linux kernel with support for up to
+64GB of high memory. It requires a CPU with Physical Address Extensions (PAE).
+The non-PAE kernel can only address up to 4GB of memory.
+Install the kernel-PAE package if your machine has more than 4GB of memory.
+
+This variant of the kernel has numerous debugging options enabled.
+It should only be installed when trying to gather additional information
+on kernel bugs, as some of these options impact performance noticably.
+
+
+%define variant_summary The Linux kernel compiled with extra debugging enabled
+%kernel_variant_package debug
+%description debug
+The kernel package contains the Linux kernel (vmlinuz), the core of any
+Linux operating system. The kernel handles the basic functions
+of the operating system: memory allocation, process allocation, device
+input and output, etc.
+
+This variant of the kernel has numerous debugging options enabled.
+It should only be installed when trying to gather additional information
+on kernel bugs, as some of these options impact performance noticably.
+
+
+%define variant_summary A minimal Linux kernel compiled for crash dumps
+%kernel_variant_package kdump
+%description kdump
+This package includes a kdump version of the Linux kernel. It is
+required only on machines which will use the kexec-based kernel crash dump
+mechanism.
+
+
+%prep
+# do a few sanity-checks for --with *only builds
+%if %{with_baseonly}
+%if !%{with_up}%{with_pae}
+echo "Cannot build --with baseonly, up build is disabled"
+exit 1
+%endif
+%endif
+
+%if %{with_smponly}
+%if !%{with_smp}
+echo "Cannot build --with smponly, smp build is disabled"
+exit 1
+%endif
+%endif
+
+patch_command='patch -p1 -F1 -s'
+ApplyPatch()
+{
+ local patch=$1
+ shift
+ if [ ! -f $RPM_SOURCE_DIR/$patch ]; then
+ exit 1;
+ fi
+ if ! egrep "^Patch[0-9]+: $patch\$" %{_specdir}/%{name}*.spec ; then
+ [ "${patch:0:10}" != "patch-2.6." ] && echo "Patch $patch not listed in specfile" && exit 1;
+ fi
+ case "$patch" in
+ *.bz2) bunzip2 < "$RPM_SOURCE_DIR/$patch" | $patch_command ${1+"$@"} ;;
+ *.gz) gunzip < "$RPM_SOURCE_DIR/$patch" | $patch_command ${1+"$@"} ;;
+ *) $patch_command ${1+"$@"} < "$RPM_SOURCE_DIR/$patch" ;;
+ esac
+}
+
+test_config_file()
+{
+ TestConfig=$1
+ Arch=`head -n 3 .config |grep -e "Linux.*Kernel" |cut -d '/' -f 2 | cut -d ' ' -f 1`
+ if [ `make ARCH=$Arch listnewconfig 2>/dev/null | grep -c CONFIG` -ne 0 ]; then
+ echo "Following config options are unconfigured"
+ make ARCH=$Arch listnewconfig 2> /dev/null
+ echo "WARNING: Kernel version and config file missmatch"
+ echo "WARNING: This options will be unset by default in config file"
+ fi
+}
+
+# First we unpack the kernel tarball.
+# If this isn't the first make prep, we use links to the existing clean tarball
+# which speeds things up quite a bit.
+
+# Update to latest upstream.
+%if 0%{?released_kernel}
+%define vanillaversion 2.6.%{base_sublevel}
+# non-released_kernel case
+%else
+%if 0%{?rcrev}
+%define vanillaversion 2.6.%{upstream_sublevel}-rc%{rcrev}
+%if 0%{?gitrev}
+%define vanillaversion 2.6.%{upstream_sublevel}-rc%{rcrev}-git%{gitrev}
+%endif
+%else
+# pre-{base_sublevel+1}-rc1 case
+%if 0%{?gitrev}
+%define vanillaversion 2.6.%{base_sublevel}-git%{gitrev}
+%endif
+%endif
+%endif
+
+# We can share hardlinked source trees by putting a list of
+# directory names of the CVS checkouts that we want to share
+# with in .shared-srctree. (Full pathnames are required.)
+[ -f .shared-srctree ] && sharedirs=$(cat .shared-srctree)
+
+if [ ! -d kernel-%{kversion}/vanilla-%{vanillaversion} ]; then
+
+ if [ -d kernel-%{kversion}/vanilla-%{kversion} ]; then
+
+ cd kernel-%{kversion}
+
+ # Any vanilla-* directories other than the base one are stale.
+ for dir in vanilla-*; do
+ [ "$dir" = vanilla-%{kversion} ] || rm -rf $dir &
+ done
+
+ else
+
+ # Ok, first time we do a make prep.
+ rm -f pax_global_header
+ for sharedir in $sharedirs ; do
+ if [[ ! -z $sharedir && -d $sharedir/kernel-%{kversion}/vanilla-%{kversion} ]] ; then
+ break
+ fi
+ done
+ if [[ ! -z $sharedir && -d $sharedir/kernel-%{kversion}/vanilla-%{kversion} ]] ; then
+%setup -q -n kernel-%{kversion} -c -T
+ cp -rl $sharedir/kernel-%{kversion}/vanilla-%{kversion} .
+ else
+%setup -q -n kernel-%{kversion} -c
+ mv linux-%{kversion} vanilla-%{kversion}
+ fi
+
+ fi
+
+%if "%{kversion}" != "%{vanillaversion}"
+
+ for sharedir in $sharedirs ; do
+ if [[ ! -z $sharedir && -d $sharedir/kernel-%{kversion}/vanilla-%{vanillaversion} ]] ; then
+ break
+ fi
+ done
+ if [[ ! -z $sharedir && -d $sharedir/kernel-%{kversion}/vanilla-%{vanillaversion} ]] ; then
+
+ cp -rl $sharedir/kernel-%{kversion}/vanilla-%{vanillaversion} .
+
+ else
+
+ cp -rl vanilla-%{kversion} vanilla-%{vanillaversion}
+ cd vanilla-%{vanillaversion}
+
+# Update vanilla to the latest upstream.
+# (non-released_kernel case only)
+%if 0%{?rcrev}
+ ApplyPatch patch-2.6.%{upstream_sublevel}-rc%{rcrev}.bz2
+%if 0%{?gitrev}
+ ApplyPatch patch-2.6.%{upstream_sublevel}-rc%{rcrev}-git%{gitrev}.bz2
+%endif
+%else
+# pre-{base_sublevel+1}-rc1 case
+%if 0%{?gitrev}
+ ApplyPatch patch-2.6.%{base_sublevel}-git%{gitrev}.bz2
+%endif
+%endif
+
+ cd ..
+
+ fi
+
+%endif
+
+else
+ # We already have a vanilla dir.
+ cd kernel-%{kversion}
+fi
+
+if [ -d linux-%{kversion}.%{_target_cpu} ]; then
+ # Just in case we ctrl-c'd a prep already
+ rm -rf deleteme.%{_target_cpu}
+ # Move away the stale away, and delete in background.
+ mv linux-%{kversion}.%{_target_cpu} deleteme.%{_target_cpu}
+ rm -rf deleteme.%{_target_cpu} &
+fi
+
+cp -rl vanilla-%{vanillaversion} linux-%{kversion}-%{release}
+cd linux-%{kversion}-%{release}
+
+# released_kernel with possible stable updates
+%if 0%{?stable_base}
+ApplyPatch %{stable_patch_00}
+%endif
+%if 0%{?stable_rc}
+ApplyPatch %{stable_patch_01}
+%endif
+
+# Copy the RPM find-debuginfo.sh into the buildroot and patch it
+# to support -g1. (This is a patch of *RPM*, not of the kernel,
+# so it is not governed by nopatches.)
+cp %{_rpmconfigdir}/find-debuginfo.sh %{_builddir}
+patch %{_builddir}/find-debuginfo.sh %{SOURCE300}
+chmod +x %{_builddir}/find-debuginfo.sh
+
+# only deal with configs if we are going to build for the arch
+# %ifnarch %nobuildarches
+
+mkdir -p configs
+%ifarch x86_64
+ cp %{SOURCE1001} configs/config-debug
+ cp %{SOURCE1000} configs/config
+%endif #ifarch x86_64
+
+%ifarch i686
+ cp %{SOURCE1003} configs/config-debug
+ cp %{SOURCE1002} configs/config
+%endif #ifarch i686
+
+%ifarch sparc64
+ cp %{SOURCE1005} configs/config-debug
+ cp %{SOURCE1004} configs/config
+%endif #ifarch sparc
+
+cp %{SOURCE202} ksplice_signing_key.x509
+
+# get rid of unwanted files resulting from patch fuzz
+find . \( -name "*.orig" -o -name "*~" \) -exec rm -f {} \; >/dev/null
+
+###
+### build
+###
+%build
+
+%if %{with_sparse}
+%define sparse_mflags C=1
+%endif
+
+%if %{fancy_debuginfo}
+# This override tweaks the kernel makefiles so that we run debugedit on an
+# object before embedding it. When we later run find-debuginfo.sh, it will
+# run debugedit again. The edits it does change the build ID bits embedded
+# in the stripped object, but repeating debugedit is a no-op. We do it
+# beforehand to get the proper final build ID bits into the embedded image.
+# This affects the vDSO images in vmlinux, and the vmlinux image in bzImage.
+export AFTER_LINK=\
+'sh -xc "/usr/lib/rpm/debugedit -b $$RPM_BUILD_DIR -d /usr/src/debug \
+ -i $@ > $@.id"'
+%endif
+
+cp_vmlinux()
+{
+ eu-strip --remove-comment -o "$2" "$1"
+}
+
+BuildKernel() {
+ MakeTarget=$1
+ KernelImage=$2
+ Flavour=$3
+ InstallName=${4:-vmlinuz}
+
+ # Pick the right config file for the kernel we're building
+ Config=kernel-%{version}-%{_target_cpu}${Flavour:+-${Flavour}}.config
+ DevelDir=/usr/src/kernels/%{KVERREL}${Flavour:+.${Flavour}}
+
+ # When the bootable image is just the ELF kernel, strip it.
+ # We already copy the unstripped file into the debuginfo package.
+ if [ "$KernelImage" = vmlinux ]; then
+ CopyKernel=cp_vmlinux
+ else
+ CopyKernel=cp
+ fi
+
+ KernelVer=%{version}-%{release}.%{_target_cpu}${Flavour:+.${Flavour}}
+ echo BUILDING A KERNEL FOR ${Flavour} %{_target_cpu}...
+
+ # make sure EXTRAVERSION says what we want it to say
+ perl -p -i -e "s/^EXTRAVERSION.*/EXTRAVERSION = %{?stablerev}-%{release}.%{_target_cpu}${Flavour:+.${Flavour}}/" Makefile
+ #perl -p -i -e "s/^SUBLEVEL.*/SUBLEVEL = %{base_sublevel}/" Makefile
+
+ make -s mrproper
+
+ %if %{signmodules}
+ cp %{SOURCE10} .
+ chmod +x scripts/sign-file
+ %endif
+
+ if [ "$Flavour" == "debug" ]; then
+ cp configs/config-debug .config
+ else
+ cp configs/config .config
+ fi
+
+ Arch=`head -n 3 .config |grep -e "Linux.*Kernel" |cut -d '/' -f 2 | cut -d ' ' -f 1`
+ echo USING ARCH=$Arch
+ make -s ARCH=$Arch %{oldconfig_target} > /dev/null
+ make -s ARCH=$Arch V=1 %{?_smp_mflags} $MakeTarget %{?sparse_mflags}
+ make -s ARCH=$Arch V=1 %{?_smp_mflags} modules %{?sparse_mflags} || exit 1
+
+ # Start installing the results
+%if %{with_debuginfo}
+ mkdir -p $RPM_BUILD_ROOT%{debuginfodir}/boot
+ mkdir -p $RPM_BUILD_ROOT%{debuginfodir}/%{image_install_path}
+%endif
+ mkdir -p $RPM_BUILD_ROOT/%{image_install_path}
+ install -m 644 .config $RPM_BUILD_ROOT/boot/config-$KernelVer
+ install -m 644 System.map $RPM_BUILD_ROOT/boot/System.map-$KernelVer
+ touch $RPM_BUILD_ROOT/boot/initramfs-$KernelVer.img
+ if [ -f arch/$Arch/boot/zImage.stub ]; then
+ cp arch/$Arch/boot/zImage.stub $RPM_BUILD_ROOT/%{image_install_path}/zImage.stub-$KernelVer || :
+ fi
+ %if %{signmodules}
+ # Sign the image if we're using EFI
+ #% pesign -s -i $KernelImage -o vmlinuz.signed
+ # if [ -x /usr/bin/pesign -a "x86_64" == "x86_64" ]; then
+ # if [ -e /var/run/pesign/socket ]; then
+ # /usr/bin/pesign-client -t "OpenSC Card (Fedora Signer)" \
+ # -c "/CN=Fedora Secure Boot Signer" \
+ # -i $KernelImage -o vmlinuz.signed -s
+ # else
+ # /usr/bin/pesign -c "Oracle" \
+ # -i $KernelImage -o vmlinuz.signed -s
+ # fi
+ # else
+ # if [ -n "$KernelImage" -a -n "vmlinuz.signed" ]; then
+ # mv $KernelImage vmlinuz.signed
+ # elif [ -n "$KernelImage" -a -n "" ]; then
+ # touch
+ # fi
+ # fi ;
+ #
+ #mv vmlinuz.signed $KernelImage
+ %endif
+ $CopyKernel $KernelImage \
+ $RPM_BUILD_ROOT/%{image_install_path}/$InstallName-$KernelVer
+ chmod 755 $RPM_BUILD_ROOT/%{image_install_path}/$InstallName-$KernelVer
+
+%if %{with_fips}
+ # hmac sign the kernel for FIPS
+ echo "Creating hmac file: $RPM_BUILD_ROOT/%{image_install_path}/.vmlinuz-$KernelVer.hmac"
+ ls -l $RPM_BUILD_ROOT/%{image_install_path}/$InstallName-$KernelVer
+ sha512hmac $RPM_BUILD_ROOT/%{image_install_path}/$InstallName-$KernelVer | sed -e "s,$RPM_BUILD_ROOT,," > $RPM_BUILD_ROOT/%{image_install_path}/.vmlinuz-$KernelVer.hmac;
+%endif
+
+ mkdir -p $RPM_BUILD_ROOT/lib/modules/$KernelVer
+ # Override $(mod-fw) because we don't want it to install any firmware
+ # We'll do that ourselves with 'make firmware_install'
+ make -s ARCH=$Arch INSTALL_MOD_PATH=$RPM_BUILD_ROOT modules_install KERNELRELEASE=$KernelVer mod-fw=
+ # check if the modules are being signed
+
+%ifarch %{vdso_arches}
+ make -s ARCH=$Arch INSTALL_MOD_PATH=$RPM_BUILD_ROOT vdso_install KERNELRELEASE=$KernelVer
+ if grep '^CONFIG_XEN=y$' .config >/dev/null; then
+ echo > ldconfig-kernel.conf "\
+# This directive teaches ldconfig to search in nosegneg subdirectories
+# and cache the DSOs there with extra bit 0 set in their hwcap match
+# fields. In Xen guest kernels, the vDSO tells the dynamic linker to
+# search in nosegneg subdirectories and to match this extra hwcap bit
+# in the ld.so.cache file.
+hwcap 0 nosegneg"
+ fi
+ if [ ! -s ldconfig-kernel.conf ]; then
+ echo > ldconfig-kernel.conf "\
+# Placeholder file, no vDSO hwcap entries used in this kernel."
+ fi
+ %{__install} -D -m 444 ldconfig-kernel.conf \
+ $RPM_BUILD_ROOT/etc/ld.so.conf.d/kernel-$KernelVer.conf
+%endif
+%ifarch %{vdso_arches} sparc64
+%ifnarch noarch
+# build tools/perf:
+ if [ -d tools/perf ]; then
+ cd tools/perf
+ make all
+# and install it:
+# mkdir -p $RPM_BUILD_ROOT/usr/bin/$KernelVer/
+ mkdir -p $RPM_BUILD_ROOT/usr/libexec/
+ install -m 755 perf $RPM_BUILD_ROOT/usr/libexec/perf.$KernelVer
+ #install -m 755 libperf.a $RPM_BUILD_ROOT/lib/modules/$KernelVer/bin/%{_target_cpu}/libperf.a
+ cd ../..
+ fi
+%endif
+%ifarch x86_64 %{all_x86}
+# build tools/power/x86/x86_energy_perf_policy:
+ if [ -d tools/power/x86/x86_energy_perf_policy ]; then
+ cd tools/power/x86/x86_energy_perf_policy
+ make
+# and install it:
+ mkdir -p $RPM_BUILD_ROOT/usr/libexec/
+ install -m 755 x86_energy_perf_policy $RPM_BUILD_ROOT/usr/libexec/x86_energy_perf_policy.$KernelVer
+ cd ../../../../
+ fi
+%endif
+%endif
+
+ # And save the headers/makefiles etc for building modules against
+ #
+ # This all looks scary, but the end result is supposed to be:
+ # * all arch relevant include/ files
+ # * all Makefile/Kconfig files
+ # * all script/ files
+
+ rm -f $RPM_BUILD_ROOT/lib/modules/$KernelVer/build
+ rm -f $RPM_BUILD_ROOT/lib/modules/$KernelVer/source
+ mkdir -p $RPM_BUILD_ROOT/lib/modules/$KernelVer/build
+ (cd $RPM_BUILD_ROOT/lib/modules/$KernelVer ; ln -s build source)
+ # dirs for additional modules per module-init-tools, kbuild/modules.txt
+ mkdir -p $RPM_BUILD_ROOT/lib/modules/$KernelVer/extra
+ mkdir -p $RPM_BUILD_ROOT/lib/modules/$KernelVer/updates
+ mkdir -p $RPM_BUILD_ROOT/lib/modules/$KernelVer/weak-updates
+ # first copy everything
+ cp --parents `find -type f -name "Makefile*" -o -name "Kconfig*"` $RPM_BUILD_ROOT/lib/modules/$KernelVer/build
+ cp Module.symvers $RPM_BUILD_ROOT/lib/modules/$KernelVer/build
+ cp System.map $RPM_BUILD_ROOT/lib/modules/$KernelVer/build
+ if [ -s Module.markers ]; then
+ cp Module.markers $RPM_BUILD_ROOT/lib/modules/$KernelVer/build
+ fi
+
+ # create the kABI metadata for use in packaging
+ echo "**** GENERATING kernel ABI metadata ****"
+ gzip -c9 < Module.symvers > $RPM_BUILD_ROOT/boot/symvers-$KernelVer.gz
+ chmod 0755 %_sourcedir/kabitool
+ if [ -e $RPM_SOURCE_DIR/kabi_whitelist_%{_target_cpu}$Flavour ]; then
+ cp $RPM_SOURCE_DIR/kabi_whitelist_%{_target_cpu}$Flavour $RPM_BUILD_ROOT/lib/modules/$KernelVer/build/kabi_whitelist
+ fi
+ rm -f %{_tmppath}/kernel-$KernelVer-kabideps
+ %_sourcedir/kabitool -s Module.symvers -o %{_tmppath}/kernel-$KernelVer-kabideps
+
+%if %{with_kabichk}
+ echo "**** kABI checking is enabled in kernel SPEC file. ****"
+ chmod 0755 $RPM_SOURCE_DIR/check-kabi
+ if [ -e $RPM_SOURCE_DIR/Module.kabi_%{_target_cpu}$Flavour ]; then
+ cp $RPM_SOURCE_DIR/Module.kabi_%{_target_cpu}$Flavour $RPM_BUILD_ROOT/Module.kabi
+ $RPM_SOURCE_DIR/check-kabi -k $RPM_BUILD_ROOT/Module.kabi -s Module.symvers || exit 1
+ rm $RPM_BUILD_ROOT/Module.kabi # for now, don't keep it around.
+ else
+ echo "**** NOTE: Cannot find reference Module.kabi file. ****"
+ fi
+%endif
+
+ # then drop all but the needed Makefiles/Kconfig files
+ rm -rf $RPM_BUILD_ROOT/lib/modules/$KernelVer/build/Documentation
+ rm -rf $RPM_BUILD_ROOT/lib/modules/$KernelVer/build/scripts
+ rm -rf $RPM_BUILD_ROOT/lib/modules/$KernelVer/build/include
+ cp .config $RPM_BUILD_ROOT/lib/modules/$KernelVer/build
+ cp -a scripts $RPM_BUILD_ROOT/lib/modules/$KernelVer/build
+ if [ -d arch/$Arch/scripts ]; then
+ cp -a arch/$Arch/scripts $RPM_BUILD_ROOT/lib/modules/$KernelVer/build/arch/%{_arch} || :
+ fi
+ if [ -f arch/$Arch/*lds ]; then
+ cp -a arch/$Arch/*lds $RPM_BUILD_ROOT/lib/modules/$KernelVer/build/arch/%{_arch}/ || :
+ fi
+ rm -f $RPM_BUILD_ROOT/lib/modules/$KernelVer/build/scripts/*.o
+ rm -f $RPM_BUILD_ROOT/lib/modules/$KernelVer/build/scripts/*/*.o
+%ifarch ppc
+ cp -a --parents arch/powerpc/lib/crtsavres.[So] $RPM_BUILD_ROOT/lib/modules/$KernelVer/build/
+%endif
+ if [ -d arch/%{asmarch}/include ]; then
+ cp -a --parents arch/%{asmarch}/include $RPM_BUILD_ROOT/lib/modules/$KernelVer/build/
+ fi
+ cp -a --parents Kbuild $RPM_BUILD_ROOT/lib/modules/$KernelVer/build/
+ cp -a --parents kernel/bounds.c $RPM_BUILD_ROOT/lib/modules/$KernelVer/build/
+ cp -a --parents arch/%{asmarch}/kernel/asm-offsets.c $RPM_BUILD_ROOT/lib/modules/$KernelVer/build/
+%ifnarch %{sparc}
+ cp -a --parents arch/%{asmarch}/kernel/asm-offsets_64.c $RPM_BUILD_ROOT/lib/modules/$KernelVer/build/
+%endif
+ cp -a --parents security/selinux/include $RPM_BUILD_ROOT/lib/modules/$KernelVer/build/
+
+ mkdir -p $RPM_BUILD_ROOT/lib/modules/$KernelVer/build/include
+ cd include
+ cp -a acpi asm-generic clocksource config crypto drm dt-bindings generated keys kvm linux math-emu media memory misc net pcmcia ras rdma rxrpc scsi soc sound target trace uapi video xen $RPM_BUILD_ROOT/lib/modules/$KernelVer/build/include
+ asmdir=../arch/%{asmarch}/include/asm
+ cp -a $asmdir $RPM_BUILD_ROOT/lib/modules/$KernelVer/build/include/
+ cd $RPM_BUILD_ROOT/lib/modules/$KernelVer/build/include
+ ln -s $asmdir asm
+ cd -
+ # Make sure the Makefile and version.h have a matching timestamp so that
+ # external modules can be built
+ touch -r $RPM_BUILD_ROOT/lib/modules/$KernelVer/build/Makefile $RPM_BUILD_ROOT/lib/modules/$KernelVer/build/include/generated/uapi/linux/version.h
+ # Copy .config to include/config/auto.conf so "make prepare" is unnecessary.
+ cp $RPM_BUILD_ROOT/lib/modules/$KernelVer/build/.config $RPM_BUILD_ROOT/lib/modules/$KernelVer/build/include/config/auto.conf
+ cd ..
+
+%if %{fancy_debuginfo}
+ if test -s vmlinux.id; then
+ cp vmlinux.id $RPM_BUILD_ROOT/lib/modules/$KernelVer/build/vmlinux.id
+ else
+ echo >&2 "*** ERROR *** no vmlinux build ID! ***"
+ exit 1
+ fi
+%endif
+
+ #
+ # save the vmlinux file for kernel debugging into the kernel-debuginfo rpm
+ #
+%if %{with_debuginfo}
+ mkdir -p $RPM_BUILD_ROOT%{debuginfodir}/lib/modules/$KernelVer
+ cp vmlinux $RPM_BUILD_ROOT%{debuginfodir}/lib/modules/$KernelVer
+%endif
+
+ find $RPM_BUILD_ROOT/lib/modules/$KernelVer -name "*.ko" -type f >modnames
+
+ # mark modules executable so that strip-to-file can strip them
+ xargs --no-run-if-empty chmod u+x < modnames
+
+ # Generate a list of modules for block and networking.
+
+ fgrep /drivers/ modnames | xargs --no-run-if-empty nm -upA |
+ sed -n 's,^.*/\([^/]*\.ko\): *U \(.*\)$,\1 \2,p' > drivers.undef
+
+ collect_modules_list()
+ {
+ sed -r -n -e "s/^([^ ]+) \\.?($2)\$/\\1/p" drivers.undef |
+ LC_ALL=C sort -u > $RPM_BUILD_ROOT/lib/modules/$KernelVer/modules.$1
+ }
+
+ collect_modules_list networking \
+ 'register_netdev|ieee80211_register_hw|usbnet_probe|phy_driver_register|register_netdevice'
+ collect_modules_list block \
+ 'ata_scsi_ioctl|scsi_add_host|scsi_add_host_with_dma|blk_init_queue|register_mtd_blktrans|scsi_esp_register|scsi_register_device_handler|blk_queue_physical_block_size'
+ collect_modules_list drm \
+ 'drm_open|drm_init'
+ collect_modules_list modesetting \
+ 'drm_crtc_init'
+
+ # detect missing or incorrect license tags
+ rm -f modinfo
+ while read i
+ do
+ echo -n "${i#$RPM_BUILD_ROOT/lib/modules/$KernelVer/} " >> modinfo
+ /sbin/modinfo -l $i >> modinfo
+ done < modnames
+
+ egrep -v \
+ 'GPL( v2)?$|Dual BSD/GPL$|Dual MPL/GPL$|GPL and additional rights$' \
+ modinfo && exit 1
+
+ rm -f modinfo modnames
+
+%if %{signmodules}
+ # Save off the .tmp_versions/ directory. We'll use it in the
+ # __debug_install_post macro below to sign the right things
+ # Also save the signing keys so we actually sign the modules with the
+ # right key.
+ cp -r .tmp_versions .tmp_versions.sign${Flavour:+.${Flavour}}
+ cp signing_key.priv signing_key.priv.sign${Flavour:+.${Flavour}}
+ cp signing_key.x509 signing_key.x509.sign${Flavour:+.${Flavour}}
+%endif
+
+ # remove files that will be auto generated by depmod at rpm -i time
+ for i in alias ccwmap dep ieee1394map inputmap isapnpmap ofmap pcimap seriomap symbols usbmap
+ do
+ rm -f $RPM_BUILD_ROOT/lib/modules/$KernelVer/modules.$i
+ done
+
+ # Move the devel headers out of the root file system
+ mkdir -p $RPM_BUILD_ROOT/usr/src/kernels
+ mv $RPM_BUILD_ROOT/lib/modules/$KernelVer/build $RPM_BUILD_ROOT/$DevelDir
+ ln -sf ../../..$DevelDir $RPM_BUILD_ROOT/lib/modules/$KernelVer/build
+}
+
+###
+# DO it...
+###
+
+# prepare directories
+rm -rf $RPM_BUILD_ROOT
+mkdir -p $RPM_BUILD_ROOT/boot
+
+cd linux-%{version}-%{release}
+
+%if %{with_debug}
+%if %{with_up}
+BuildKernel %make_target %kernel_image debug
+%endif
+%if %{with_pae}
+BuildKernel %make_target %kernel_image PAEdebug
+%endif
+%endif
+
+%if %{with_pae}
+BuildKernel %make_target %kernel_image PAE
+%endif
+
+%if %{with_up}
+BuildKernel %make_target %kernel_image
+%endif
+
+%if %{with_smp}
+BuildKernel %make_target %kernel_image smp
+%endif
+
+%if %{with_kdump}
+BuildKernel vmlinux vmlinux kdump vmlinux
+%endif
+
+%if %{with_doc}
+# Make the HTML and man pages.
+make -j1 htmldocs mandocs || %{doc_build_fail}
+
+# sometimes non-world-readable files sneak into the kernel source tree
+chmod -R a=rX Documentation
+find Documentation -type d | xargs chmod u+w
+%endif
+
+%define dgst $((grep '^CONFIG_MODULE_SIG_SHA512=y$' .config >/dev/null && grep '^CONFIG_MODULE_SIG_HASH=\"sha512\"$' .config >/dev/null && echo sha512) || (grep '^CONFIG_MODULE_SIG_SHA256=y$' .config >/dev/null && grep '^CONFIG_MODULE_SIG_HASH=\"sha256\"$' .config >/dev/null && echo sha256))
+
+%define __modsign_install_post \
+ if [ "%{signmodules}" == "1" ]; then \
+ if [ "%{with_pae}" != "0" ]; then \
+ mv signing_key.priv.sign.PAE signing_key.priv \
+ mv signing_key.x509.sign.PAE signing_key.x509 \
+ %{modsign_cmd} $RPM_BUILD_ROOT/lib/modules/%{KVERREL}.PAE/ %{dgst} \
+ fi \
+ if [ "%{with_debug}" != "0" ]; then \
+ mv signing_key.priv.sign.debug signing_key.priv \
+ mv signing_key.x509.sign.debug signing_key.x509 \
+ %{modsign_cmd} $RPM_BUILD_ROOT/lib/modules/%{KVERREL}.debug/ %{dgst} \
+ fi \
+ if [ "%{with_pae_debug}" != "0" ]; then \
+ mv signing_key.priv.sign.PAEdebug signing_key.priv \
+ mv signing_key.x509.sign.PAEdebug signing_key.x509 \
+ %{modsign_cmd} $RPM_BUILD_ROOT/lib/modules/%{KVERREL}.PAEdebug/ %{dgst} \
+ fi \
+ if [ "%{with_up}" != "0" ]; then \
+ mv signing_key.priv.sign signing_key.priv \
+ mv signing_key.x509.sign signing_key.x509 \
+ %{modsign_cmd} $RPM_BUILD_ROOT/lib/modules/%{KVERREL}/ %{dgst} \
+ fi \
+ fi \
+%{nil}
+
+###
+### Special hacks for debuginfo subpackages.
+###
+
+# This macro is used by %%install, so we must redefine it before that.
+# TEMPORARY HACK: use the debuginfo in the build tree, passing it -g1 so as
+# to strip out only debugging sections.
+%define debug_package %{nil}
+
+%if %{with_debuginfo}
+
+%define __debug_install_post \
+ %{_builddir}/find-debuginfo.sh %{debuginfo_args} -g1 %{_builddir}/%{?buildsubdir}\
+%{nil}
+
+%ifnarch noarch
+%global __debug_package 1
+%files debuginfo-common
+%defattr(-,root,root)
+%dir /usr/src/debug
+/usr/src/debug/kernel-%{version}/linux-%{kversion}-%{release}
+%dir %{debuginfodir}
+%dir %{debuginfodir}/%{image_install_path}
+%dir %{debuginfodir}/lib
+%dir %{debuginfodir}/lib/modules
+%dir %{debuginfodir}/usr/src/kernels
+%endif
+%endif
+
+#
+# Disgusting hack alert! We need to ensure we sign modules *after* all
+# invocations of strip occur, which is in __debug_install_post if
+# find-debuginfo.sh runs, and __os_install_post if not.
+#
+%define __spec_install_post \
+ %{?__debug_package:%{__debug_install_post}}\
+ %{__arch_install_post}\
+ %{__os_install_post}\
+ %{__modsign_install_post}
+
+###
+### install
+###
+
+%install
+cd linux-%{version}-%{release}
+
+%if %{with_doc}
+docdir=$RPM_BUILD_ROOT%{_datadir}/doc/kernel-doc-%{rpmversion}
+man9dir=$RPM_BUILD_ROOT%{_datadir}/man/man9
+
+# copy the source over
+mkdir -p $docdir
+tar -f - --exclude=man --exclude='.*' -c Documentation | tar xf - -C $docdir
+
+# Install man pages for the kernel API.
+mkdir -p $man9dir
+find Documentation/DocBook/man -name '*.9.gz' -print0 |
+xargs -0 --no-run-if-empty %{__install} -m 444 -t $man9dir $m
+ls $man9dir | grep -q '' || > $man9dir/BROKEN
+%endif
+
+%ifnarch noarch
+# perf shell wrapper
+mkdir -p $RPM_BUILD_ROOT/usr/sbin/
+cp $RPM_SOURCE_DIR/perf $RPM_BUILD_ROOT/usr/sbin/perf
+chmod 0755 $RPM_BUILD_ROOT/usr/sbin/perf
+%endif
+
+%ifarch x86_64 %{all_x86}
+# x86_energy_perf_policy shell wrapper
+mkdir -p $RPM_BUILD_ROOT/usr/sbin/
+cp $RPM_SOURCE_DIR/x86_energy_perf_policy $RPM_BUILD_ROOT/usr/sbin/x86_energy_perf_policy
+chmod 0755 $RPM_BUILD_ROOT/usr/sbin/x86_energy_perf_policy
+%endif
+
+
+%if %{with_headers}
+# Install kernel headers
+make ARCH=%{hdrarch} INSTALL_HDR_PATH=$RPM_BUILD_ROOT/usr headers_install
+
+# Do headers_check but don't die if it fails.
+make ARCH=%{hdrarch} INSTALL_HDR_PATH=$RPM_BUILD_ROOT/usr headers_check \
+ > hdrwarnings.txt || :
+if grep -q exist hdrwarnings.txt; then
+ sed s:^$RPM_BUILD_ROOT/usr/include/:: hdrwarnings.txt
+ # Temporarily cause a build failure if header inconsistencies.
+ # exit 1
+fi
+
+find $RPM_BUILD_ROOT/usr/include \
+ \( -name .install -o -name .check -o \
+ -name ..install.cmd -o -name ..check.cmd \) | xargs rm -f
+
+# glibc provides scsi headers for itself, for now
+rm -rf $RPM_BUILD_ROOT/usr/include/scsi
+rm -f $RPM_BUILD_ROOT/usr/include/asm*/atomic.h
+rm -f $RPM_BUILD_ROOT/usr/include/asm*/io.h
+rm -f $RPM_BUILD_ROOT/usr/include/asm*/irq.h
+
+# these are provided by drm-devel
+rm -rf $RPM_BUILD_ROOT/usr/include/drm
+%endif
+
+%if %{with_firmware}
+mkdir -p $RPM_BUILD_ROOT/lib/firmware/%{rpmversion}-%{pkg_release}
+make INSTALL_FW_PATH=$RPM_BUILD_ROOT/lib/firmware/%{rpmversion}-%{pkg_release} firmware_install
+%endif
+
+%if %{with_bootwrapper}
+make DESTDIR=$RPM_BUILD_ROOT bootwrapper_install WRAPPER_OBJDIR=%{_libdir}/kernel-wrapper WRAPPER_DTSDIR=%{_libdir}/kernel-wrapper/dts
+%endif
+
+###
+### clean
+###
+
+%clean
+rm -rf $RPM_BUILD_ROOT
+
+###
+### scripts
+###
+
+#
+# This macro defines a %%post script for a kernel*-devel package.
+# %%kernel_devel_post [<subpackage>]
+#
+%define kernel_devel_post() \
+%{expand:%%post %{?1:%{1}-}devel}\
+if [ -f /etc/sysconfig/kernel ]\
+then\
+ . /etc/sysconfig/kernel || exit $?\
+fi\
+if [ "$HARDLINK" != "no" -a -x /usr/sbin/hardlink ]\
+then\
+ (cd /usr/src/kernels/%{kversion}-%{release}.%{_arch}%{?1:.%{1}} &&\
+ /usr/bin/find . -type f | while read f; do\
+ hardlink -c /usr/src/kernels/*.fc*.*/$f $f\
+ done)\
+fi\
+%{nil}
+
+# This macro defines a %%posttrans script for a kernel package.
+# %%kernel_variant_posttrans [<subpackage>]
+# More text can follow to go at the end of this variant's %%post.
+#
+%define kernel_variant_posttrans() \
+%{expand:%%posttrans %{?1}}\
+/sbin/new-kernel-pkg --package kernel%{?1:-%{1}} --mkinitrd --dracut --depmod --update %{KVERREL}%{?1:.%{1}} || exit $?\
+/sbin/new-kernel-pkg --package kernel%{?1:-%{1}} --rpmposttrans %{KVERREL}%{?1:.%{1}} || exit $?\
+if [ -x /sbin/weak-modules ]\
+then\
+ /sbin/weak-modules --add-kernel %{KVERREL}%{?1:.%{1}} || exit $?\
+fi\
+%{nil}
+
+#
+# This macro defines a %%post script for a kernel package and its devel package.
+# %%kernel_variant_post [-v <subpackage>] [-r <replace>]
+# More text can follow to go at the end of this variant's %%post.
+#
+%define kernel_variant_post(uv:r:) \
+%{expand:%%kernel_devel_post %{!-u:%{?-v*}}}\
+%{expand:%%kernel_variant_posttrans %{!-u:%{?-v*}}}\
+%{expand:%%post %{!-u:%{?-v*}}}\
+%{-r:\
+if [ `uname -i` == "x86_64" -o `uname -i` == "i386" ] &&\
+ [ -f /etc/sysconfig/kernel ]; then\
+ /bin/sed -r -i -e 's/^DEFAULTKERNEL=%{-r*}$/DEFAULTKERNEL=kernel%{?-v:-%{-v*}}/' /etc/sysconfig/kernel || exit $?\
+fi}\
+if grep --silent '^hwcap 0 nosegneg$' /etc/ld.so.conf.d/kernel-*.conf 2> /dev/null; then\
+ sed -i '/^hwcap 0 nosegneg$/ s/0/1/' /etc/ld.so.conf.d/kernel-*.conf\
+fi\
+/sbin/new-kernel-pkg --package kernel%{?-v:-%{-v*}} --install %{KVERREL}%{!-u:%{?-v:.%{-v*}}} || exit $?\
+ln -sf /lib/firmware/%{rpmversion}-%{pkg_release} /lib/firmware/%{rpmversion}-%{pkg_release}.%{_target_cpu} \
+%{nil}
+
+#
+# This macro defines a %%preun script for a kernel package.
+# %%kernel_variant_preun <subpackage>
+#
+%define kernel_variant_preun() \
+%{expand:%%preun %{?1}}\
+/sbin/new-kernel-pkg --rminitrd --rmmoddep --remove %{KVERREL}%{?1:.%{1}} || exit $?\
+if [ -x /sbin/weak-modules ]\
+then\
+ /sbin/weak-modules --remove-kernel %{KVERREL}%{?1:.%{1}} || exit $?\
+ rm -f /lib/firmware/%{rpmversion}-%{pkg_release}.%{_target_cpu} \
+fi\
+%{nil}
+
+#
+# This macro defines a %%pre script for a kernel package.
+# %%kernel_variant_pre <subpackage>
+#
+%define kernel_variant_pre() \
+%{expand:%%pre %{?1}}\
+message="Change references of /dev/hd in /etc/fstab to disk label"\
+if [ -f /etc/fstab ]\
+then\
+awk '($2=="/boot")&&/^\\/dev\\/hd/{print $1}' /etc/fstab | egrep -q "^/dev/hd"\
+bdretval=$?\
+awk '($2=="/")&&/^\\/dev\\/hd/{print $1}' /etc/fstab | egrep -q "^/dev/hd"\
+rdretval=$?\
+awk '($2=="/boot")&&/^LABEL=/{print $1}' /etc/fstab | egrep -q "^LABEL="\
+blretval=$?\
+awk '($2=="/")&&/^LABEL=/{print $1}' /etc/fstab | egrep -q "^LABEL="\
+rlretval=$?\
+if [ $bdretval == 0 ] || [ $rdretval == 0 ]\
+then\
+echo -e $message\
+exit 1\
+elif [ $blretval == 0 ] && [ $rlretval == 0 ]\
+then\
+grep -v "^#" /etc/fstab | egrep -q "/dev/hd"\
+if [ $? == 0 ]\
+then\
+echo -e $message\
+fi\
+elif [ $blretval == 0 ] && [ $rdretval != 0 ]\
+then\
+grep -v "^#" /etc/fstab | egrep -q "/dev/hd"\
+if [ $? == 0 ]\
+then\
+echo -e $message\
+fi\
+elif [ $bdretval != 0 ] && [ $rlretval == 0 ]\
+then\
+grep -v "^#" /etc/fstab | egrep -q "/dev/hd"\
+if [ $? == 0 ]\
+then\
+echo -e $message\
+fi\
+elif [ $bdretval != 0 ] && [ $rdretval != 0 ]\
+then\
+grep -v "^#" /etc/fstab | egrep -q "/dev/hd"\
+if [ $? == 0 ]\
+then\
+echo -e $message\
+fi\
+fi\
+fi\
+%{nil}
+
+%kernel_variant_pre
+%kernel_variant_preun
+%ifarch x86_64
+%kernel_variant_post -u -v uek -r (kernel%{variant}|kernel%{variant}-debug|kernel-ovs)
+%else
+%kernel_variant_post -u -v uek -r (kernel%{variant}|kernel%{variant}-debug|kernel-ovs)
+%endif
+
+%kernel_variant_pre smp
+%kernel_variant_preun smp
+%kernel_variant_post -v smp
+
+%kernel_variant_pre PAE
+%kernel_variant_preun PAE
+%kernel_variant_post -v PAE -r (kernel|kernel-smp|kernel-xen)
+
+%kernel_variant_pre debug
+%kernel_variant_preun debug
+%kernel_variant_post -v debug
+
+%kernel_variant_post -v PAEdebug -r (kernel|kernel-smp|kernel-xen)
+%kernel_variant_preun PAEdebug
+%kernel_variant_pre PAEdebug
+
+if [ -x /sbin/ldconfig ]
+then
+ /sbin/ldconfig -X || exit $?
+fi
+
+###
+### file lists
+###
+
+%if %{with_headers}
+%files headers
+%defattr(-,root,root)
+/usr/include/*
+%endif
+
+%if %{with_firmware}
+%files firmware
+%defattr(-,root,root)
+/lib/firmware/*
+%doc linux-%{version}-%{release}/firmware/WHENCE
+%endif
+
+%if %{with_bootwrapper}
+%files bootwrapper
+%defattr(-,root,root)
+/usr/sbin/*
+%{_libdir}/kernel-wrapper
+%endif
+
+# only some architecture builds need kernel-doc
+%if %{with_doc}
+%files doc
+%defattr(-,root,root)
+%{_datadir}/doc/kernel-doc-%{rpmversion}/Documentation/*
+%dir %{_datadir}/doc/kernel-doc-%{rpmversion}/Documentation
+%dir %{_datadir}/doc/kernel-doc-%{rpmversion}
+%{_datadir}/man/man9/*
+%endif
+
+# This is %{image_install_path} on an arch where that includes ELF files,
+# or empty otherwise.
+%define elf_image_install_path %{?kernel_image_elf:%{image_install_path}}
+
+#
+# This macro defines the %%files sections for a kernel package
+# and its devel and debuginfo packages.
+# %%kernel_variant_files [-k vmlinux] <condition> <subpackage>
+#
+%define kernel_variant_files(k:) \
+%if %{1}\
+%{expand:%%files %{?2}}\
+%defattr(-,root,root)\
+/%{image_install_path}/%{?-k:%{-k*}}%{!?-k:vmlinuz}-%{KVERREL}%{?2:.%{2}}\
+%if %{with_fips} \
+/%{image_install_path}/.vmlinuz-%{KVERREL}%{?2:.%{2}}.hmac \
+%endif \
+/boot/System.map-%{KVERREL}%{?2:.%{2}}\
+/boot/symvers-%{KVERREL}%{?2:.%{2}}.gz\
+/boot/config-%{KVERREL}%{?2:.%{2}}\
+%dir /lib/modules/%{KVERREL}%{?2:.%{2}}\
+/lib/modules/%{KVERREL}%{?2:.%{2}}/kernel\
+/lib/modules/%{KVERREL}%{?2:.%{2}}/build\
+/lib/modules/%{KVERREL}%{?2:.%{2}}/source\
+/lib/modules/%{KVERREL}%{?2:.%{2}}/extra\
+/lib/modules/%{KVERREL}%{?2:.%{2}}/updates\
+/lib/modules/%{KVERREL}%{?2:.%{2}}/weak-updates\
+%ifarch %{vdso_arches}\
+/lib/modules/%{KVERREL}%{?2:.%{2}}/vdso\
+/etc/ld.so.conf.d/kernel-%{KVERREL}%{?2:.%{2}}.conf\
+%endif\
+/lib/modules/%{KVERREL}%{?2:.%{2}}/modules.*\
+/usr/libexec/perf.%{KVERREL}%{?2:.%{2}}\
+/usr/sbin/perf\
+%ifnarch sparc64\
+/usr/libexec/x86_energy_perf_policy.%{KVERREL}%{?2:.%{2}}\
+/usr/sbin/x86_energy_perf_policy\
+%endif\
+%ghost /boot/initramfs-%{KVERREL}%{?2:.%{2}}.img\
+%{expand:%%files %{?2:%{2}-}devel}\
+%defattr(-,root,root)\
+%dir /usr/src/kernels\
+%verify(not mtime) /usr/src/kernels/%{KVERREL}%{?2:.%{2}}\
+/usr/src/kernels/%{KVERREL}%{?2:.%{2}}\
+%if %{with_debuginfo}\
+%ifnarch noarch\
+%if %{fancy_debuginfo}\
+%{expand:%%files -f debuginfo%{?2}.list %{?2:%{2}-}debuginfo}\
+%else\
+%{expand:%%files %{?2:%{2}-}debuginfo}\
+%endif\
+%defattr(-,root,root)\
+%if !%{fancy_debuginfo}\
+%if "%{elf_image_install_path}" != ""\
+%{debuginfodir}/%{elf_image_install_path}/*-%{KVERREL}%{?2:.%{2}}.debug\
+%endif\
+%{debuginfodir}/lib/modules/%{KVERREL}%{?2:.%{2}}\
+%{debuginfodir}/usr/src/kernels/%{KVERREL}%{?2:.%{2}}\
+# % {debuginfodir}/usr/bin/%{KVERREL}%{?2:.%{2}}\
+%endif\
+%endif\
+%endif\
+%endif\
+%{nil}
+
+
+%kernel_variant_files %{with_up}
+%kernel_variant_files %{with_smp} smp
+%if %{with_up}
+%kernel_variant_files %{with_debug} debug
+%endif
+%kernel_variant_files %{with_pae} PAE
+%kernel_variant_files %{with_pae_debug} PAEdebug
+%kernel_variant_files -k vmlinux %{with_kdump} kdump
+
+%changelog
--- /dev/null
+#! /bin/bash
+
+# The modules_sign target checks for corresponding .o files for every .ko that
+# is signed. This doesn't work for package builds which re-use the same build
+# directory for every flavour, and the .config may change between flavours.
+# So instead of using this script to just sign lib/modules/$KernelVer/extra,
+# sign all .ko in the buildroot.
+
+# This essentially duplicates the 'modules_sign' Kbuild target and runs the
+# same commands for those modules.
+
+moddir=$1
+dgst=$2
+
+modules=`find $moddir -name *.ko`
+
+MODSECKEY="./signing_key.priv"
+MODPUBKEY="./signing_key.x509"
+
+for mod in $modules
+do
+ dir=`dirname $mod`
+ file=`basename $mod`
+
+ ./scripts/sign-file ${dgst} ${MODSECKEY} ${MODPUBKEY} ${dir}/${file} \
+ ${dir}/${file}.signed
+ mv ${dir}/${file}.signed ${dir}/${file}
+ rm -f ${dir}/${file}.{sig,dig}
+done
--- /dev/null
+#!/bin/sh
+
+# In pathological situations, this will print some error about uname.
+kverrel="`uname -r`" || exit
+
+exec "/usr/libexec/perf.$kverrel" ${1+"$@"}
+rc=$?
+
+# We're still here, so the exec failed.
+echo >&2 "Sorry, your kernel ($kverrel) doesn't support perf."
+
+exit $rc
--- /dev/null
+[ req ]
+default_bits = 4096
+distinguished_name = req_distinguished_name
+prompt = no
+x509_extensions = myexts
+
+[ req_distinguished_name ]
+O = Oracle America, Inc.,c=US
+CN = Oracle CA Server
+emailAddress = support@oracle.com
+
+[ myexts ]
+basicConstraints=critical,CA:FALSE
+keyUsage=digitalSignature
+subjectKeyIdentifier=hash
+authorityKeyIdentifier=keyid
--- /dev/null
+#!/bin/sh
+
+# In pathological situations, this will print some error about uname.
+kverrel="`uname -r`" || exit
+
+exec "/usr/libexec/x86_energy_perf_policy.$kverrel" ${1+"$@"}
+rc=$?
+
+# We're still here, so the exec failed.
+echo >&2 "Sorry, your kernel ($kverrel) doesn't support x86_energy_perf_policy."
+
+exit $rc
--- /dev/null
+#!/usr/bin/python
+#
+# check-kabi - Red Hat kABI reference checking tool
+#
+# We use this script to check against reference Module.kabi files.
+#
+# Author: Jon Masters <jcm@redhat.com>
+# Copyright (C) 2007-2009 Red Hat, Inc.
+#
+# This software may be freely redistributed under the terms of the GNU
+# General Public License (GPL).
+
+# Changelog:
+#
+# 2009/08/15 - Updated for use in RHEL6.
+# 2007/06/13 - Initial rewrite in python by Jon Masters.
+
+__author__ = "Jon Masters <jcm@redhat.com>"
+__version__ = "2.0"
+__date__ = "2009/08/15"
+__copyright__ = "Copyright (C) 2007-2009 Red Hat, Inc"
+__license__ = "GPL"
+
+import getopt
+import os
+import re
+import sha
+import string
+import sys
+
+true = 1
+false = 0
+
+def load_symvers(symvers,filename):
+ """Load a Module.symvers file."""
+
+ symvers_file = open(filename,"r")
+
+ while true:
+ in_line = symvers_file.readline()
+ if in_line == "":
+ break
+ if in_line == "\n":
+ continue
+ checksum,symbol,directory,type = string.split(in_line)
+
+ symvers[symbol] = in_line[0:-1]
+
+def load_kabi(kabi,filename):
+ """Load a Module.kabi file."""
+
+ kabi_file = open(filename,"r")
+
+ while true:
+ in_line = kabi_file.readline()
+ if in_line == "":
+ break
+ if in_line == "\n":
+ continue
+ checksum,symbol,directory,type = string.split(in_line)
+
+ kabi[symbol] = in_line[0:-1]
+
+def check_kabi(symvers,kabi):
+ """Check Module.kabi and Module.symvers files."""
+
+ fail=0
+ warn=0
+ changed_symbols=[]
+ moved_symbols=[]
+
+ for symbol in kabi:
+ abi_hash,abi_sym,abi_dir,abi_type = string.split(kabi[symbol])
+ if symvers.has_key(symbol):
+ sym_hash,sym_sym,sym_dir,sym_type = string.split(symvers[symbol])
+ if abi_hash != sym_hash:
+ fail=1
+ changed_symbols.append(symbol)
+
+ if abi_dir != sym_dir:
+ warn=1
+ moved_symbols.append(symbol)
+
+ if fail:
+ print "*** ERROR - ABI BREAKAGE WAS DETECTED ***"
+ print ""
+ print "The following symbols have been changed (this will cause an ABI breakage):"
+ print ""
+ for symbol in changed_symbols:
+ print symbol
+ print ""
+
+ if warn:
+ print "*** WARNING - ABI SYMBOLS MOVED ***"
+ print ""
+ print "The following symbols moved (typically caused by moving a symbol from being"
+ print "provided by the kernel vmlinux out to a loadable module):"
+ print ""
+ for symbol in moved_symbols:
+ print symbol
+ print ""
+
+ if fail:
+ sys.exit(1)
+ else:
+ sys.exit(0)
+
+def usage():
+ print """
+check-kabi: check Module.kabi and Module.symvers files.
+
+ check-kabi [ -k Module.kabi ] [ -s Module.symvers ]
+
+"""
+
+if __name__ == "__main__":
+
+ symvers_file = ""
+ kabi_file = ""
+
+ opts, args = getopt.getopt(sys.argv[1:], 'hk:s:')
+
+ for o, v in opts:
+ if o == "-s":
+ symvers_file = v
+ if o == "-h":
+ usage()
+ sys.exit(0)
+ if o == "-k":
+ kabi_file = v
+
+ if (symvers_file == "") or (kabi_file == ""):
+ usage()
+ sys.exit(1)
+
+ symvers={}
+ kabi={}
+
+ load_symvers(symvers,symvers_file)
+ load_kabi(kabi,kabi_file)
+ check_kabi(symvers,kabi)
--- /dev/null
+--- find-debuginfo.sh.orig 2012-09-12 20:42:13.106294407 +0100
++++ find-debuginfo.sh 2012-09-12 20:49:52.496863002 +0100
+@@ -2,12 +2,14 @@
+ #find-debuginfo.sh - automagically generate debug info and file list
+ #for inclusion in an rpm spec file.
+ #
+-# Usage: find-debuginfo.sh [--strict-build-id] [-g]
++# Usage: find-debuginfo.sh [--strict-build-id] [-g|-g1]
+ # [-o debugfiles.list]
+ # [[-l filelist]... [-p 'pattern'] -o debuginfo.list]
+ # [builddir]
+ #
+ # The -g flag says to use strip -g instead of full strip on DSOs.
++# The -g1 flag says to use strip -g instead of full strip on
++# everything, DSO or not.
+ # The --strict-build-id flag says to exit with failure status if
+ # any ELF binary processed fails to contain a build-id note.
+ #
+@@ -36,6 +38,9 @@
+ --strict-build-id)
+ strict=true
+ ;;
++ -g1)
++ strip_g=full
++ ;;
+ -g)
+ strip_g=true
+ ;;
+@@ -88,11 +93,25 @@
+
+ strip_to_debug()
+ {
+- local g=
+- $strip_g && case "$(file -bi "$2")" in
+- application/x-sharedlib*) g=-g ;;
++ local use_objcopy=false
++ case "$strip_g" in
++ true) case "$(file -bi "$2")" in
++ application/x-sharedlib*) use_objcopy=true ;;
++ esac;;
++ full) use_objcopy=true;;
+ esac
+- eu-strip --remove-comment $g -f "$1" "$2" || exit
++ # Note: eu-strip fails to remove debugging info in files containing
++ # debugging relocations at present. objcopy works fine, so use that.
++ # (This does mean that .comment sections don't get stripped, but this
++ # seems an insignificant problem for now. When elfutils is fixed this
++ # hack can be removed.)
++ if $use_objcopy; then
++ objcopy --only-keep-debug "$2" "$1" || exit
++ objcopy --strip-debug "$2" "$2.tmp" || exit
++ mv -f "$2.tmp" "$2" || exit
++ else
++ eu-strip --remove-comment -f "$1" "$2" || exit
++ fi
+ chmod 444 "$1" || exit
+ }
+
--- /dev/null
+--- find-debuginfo.sh.orig 2014-03-04 19:27:49.318782137 -0700
++++ find-debuginfo.sh 2014-03-05 17:09:21.364094567 -0700
+@@ -65,6 +67,9 @@
+ dwz_max_die_limit=$2
+ shift
+ ;;
++ -g1)
++ strip_g=full
++ ;;
+ -g)
+ strip_g=true
+ ;;
+@@ -125,13 +130,27 @@
+
+ strip_to_debug()
+ {
+- local g=
++ local use_objcopy=false
+ local r=
+ $strip_r && r=--reloc-debug-sections
+- $strip_g && case "$(file -bi "$2")" in
+- application/x-sharedlib*) g=-g ;;
++ case "$strip_g" in
++ true) case "$(file -bi "$2")" in
++ application/x-sharedlib*) use_objcopy=true ;;
++ esac;;
++ full) use_objcopy=true;;
+ esac
+- eu-strip --remove-comment $r $g -f "$1" "$2" || exit
++ # Note: eu-strip fails to remove debugging info in files containing
++ # debugging relocations at present. objcopy works fine, so use that.
++ # (This does mean that .comment sections don't get stripped, but this
++ # seems an insignificant problem for now. When elfutils is fixed this
++ # hack can be removed.)
++ if $use_objcopy; then
++ objcopy --only-keep-debug "$2" "$1" || exit
++ objcopy --strip-debug "$2" "$2.tmp" || exit
++ mv -f "$2.tmp" "$2" || exit
++ else
++ eu-strip --remove-comment $r -f "$1" "$2" || exit
++ fi
+ chmod 444 "$1" || exit
+ }
+
--- /dev/null
+#!/usr/bin/python
+#
+# find-provides: munge the provides dependencies from the kabideps file
+#
+# This software may be freely redistributed under the terms of the GNU
+# General Public License (GPL).
+#
+# Takes a directory prefix, then outputs the kabideps file contents.
+
+__author__ = "Jon Masters <jcm@redhat.com>"
+__version__ = "1.0"
+__date__ = "Tue 25 Jul 2006 04:00 GMT"
+__copyright__ = "Copyright (C) 2006 Red Hat, Inc"
+__license__ = "GPL"
+
+import os
+import re
+import string
+import sys
+
+false = 0
+true = 1
+
+kabideps=""
+
+p = re.compile('^(.*)/symvers-(.*).gz$')
+while true:
+ foo = sys.stdin.readline()
+ if foo == "":
+ break
+ string.split(foo)
+ m = p.match(foo)
+ if m:
+ kabideps=sys.argv[1] + "/kernel-" + m.group(2) + "-kabideps"
+
+if kabideps == "":
+ sys.exit(0)
+
+if not (os.path.isfile(kabideps)):
+ sys.stderr.write(sys.argv[0] + ": cannot locate kabideps file: " + kabideps + "\n")
+ sys.exit(1)
+
+sys.stderr.write(sys.argv[0] + ": processing kABI: " + kabideps)
+os.system("cat " + kabideps)
--- /dev/null
+%pubring kernel.pub
+%secring kernel.sec
+Key-Type: DSA
+Key-Length: 1024
+Name-Real: Oracle America, Inc.
+Name-Comment: Kernel Module GPG key
+%commit
--- /dev/null
+[rhel6_x86_64_whitelist]
+ ___pskb_trim
+ __alloc_pages_nodemask
+ __alloc_percpu
+ __alloc_skb
+ __bdevname
+ __bitmap_and
+ __bitmap_complement
+ __bitmap_empty
+ __bitmap_weight
+ __blk_end_request_all
+ __blockdev_direct_IO
+ __bread
+ __brelse
+ __class_create
+ __class_register
+ __const_udelay
+ __copy_user_nocache
+ __dev_get_by_index
+ __dev_get_by_name
+ __free_pages
+ __generic_file_aio_write
+ __get_free_pages
+ __get_user_1
+ __get_user_2
+ __get_user_4
+ __get_user_8
+ __ieee80211_get_assoc_led_name
+ __ieee80211_get_radio_led_name
+ __ieee80211_get_rx_led_name
+ __ieee80211_get_tx_led_name
+ __init_rwsem
+ __init_waitqueue_head
+ __insert_inode_hash
+ __ipv6_addr_type
+ __kmalloc
+ __list_add
+ __lock_buffer
+ __lock_page
+ __mark_inode_dirty
+ __memcpy
+ __mutex_init
+ __napi_complete
+ __napi_schedule
+ __neigh_event_send
+ __netdev_alloc_skb
+ __netif_schedule
+ __next_cpu
+ __nf_ct_refresh_acct
+ __pagevec_release
+ __pci_register_driver
+ __per_cpu_offset
+ __phys_addr
+ __pskb_pull_tail
+ __put_cred
+ __put_user_1
+ __put_user_2
+ __put_user_4
+ __put_user_8
+ __register_chrdev
+ __release_region
+ __request_module
+ __request_region
+ __scsi_iterate_devices
+ __secpath_destroy
+ __set_page_dirty_nobuffers
+ __stack_chk_fail
+ __supported_pte_mask
+ __symbol_get
+ __symbol_put
+ __tasklet_hi_schedule
+ __tasklet_schedule
+ __tracepoint_kmalloc
+ __tracepoint_kmalloc_node
+ __tracepoint_module_get
+ __udelay
+ __uio_register_device
+ __unregister_chrdev
+ __vmalloc
+ __wake_up
+ __xfrm_state_destroy
+ _atomic_dec_and_lock
+ _cond_resched
+ _ctype
+ acpi_bus_generate_netlink_event
+ acpi_bus_generate_proc_event
+ acpi_bus_register_driver
+ acpi_bus_unregister_driver
+ acpi_check_region
+ acpi_check_resource_conflict
+ acpi_disabled
+ acpi_evaluate_integer
+ acpi_evaluate_object
+ acpi_get_handle
+ acpi_video_backlight_support
+ add_disk
+ add_timer
+ add_to_page_cache_locked
+ add_uevent_var
+ add_wait_queue
+ add_wait_queue_exclusive
+ alloc_chrdev_region
+ alloc_dca_provider
+ alloc_disk
+ alloc_pages_current
+ allow_signal
+ apic
+ arp_send
+ async_schedule
+ async_synchronize_full
+ atomic_notifier_call_chain
+ atomic_notifier_chain_register
+ atomic_notifier_chain_unregister
+ attribute_container_find_class_device
+ autoremove_wake_function
+ backlight_device_register
+ backlight_device_unregister
+ bdevname
+ bdget
+ bdget_disk
+ bdput
+ bio_add_page
+ bio_endio
+ bio_get_nr_vecs
+ bio_put
+ bitrev32
+ blk_alloc_queue
+ blk_cleanup_queue
+ blk_complete_request
+ blk_end_request_all
+ blk_execute_rq
+ blk_execute_rq_nowait
+ blk_fetch_request
+ blk_get_request
+ blk_init_queue
+ blk_init_tags
+ blk_integrity_register
+ blk_iopoll_complete
+ blk_iopoll_disable
+ blk_iopoll_enable
+ blk_iopoll_enabled
+ blk_iopoll_init
+ blk_iopoll_sched
+ blk_max_low_pfn
+ blk_peek_request
+ blk_put_request
+ blk_queue_alignment_offset
+ blk_queue_bounce_limit
+ blk_queue_end_tag
+ blk_queue_free_tags
+ blk_queue_init_tags
+ blk_queue_io_min
+ blk_queue_io_opt
+ blk_queue_logical_block_size
+ blk_queue_make_request
+ blk_queue_max_segment_size
+ blk_queue_merge_bvec
+ blk_queue_prep_rq
+ blk_queue_rq_timeout
+ blk_queue_softirq_done
+ blk_queue_stack_limits
+ blk_rq_map_sg
+ blk_rq_map_user
+ blk_rq_unmap_user
+ blk_run_queue
+ blk_start_queue
+ blk_start_request
+ blk_stop_queue
+ blkcipher_walk_done
+ blkcipher_walk_virt
+ blkdev_put
+ block_commit_write
+ block_read_full_page
+ block_write_begin
+ block_write_full_page
+ blocking_notifier_call_chain
+ blocking_notifier_chain_register
+ blocking_notifier_chain_unregister
+ boot_cpu_data
+ boot_tvec_bases
+ bus_register_notifier
+ bus_unregister
+ bus_unregister_notifier
+ byte_rev_table
+ cancel_delayed_work_sync
+ cancel_work_sync
+ capable
+ cdev_add
+ cdev_alloc
+ cdev_del
+ cdev_init
+ cfb_copyarea
+ cfb_fillrect
+ cfb_imageblit
+ check_disk_change
+ check_signature
+ class_create_file
+ class_destroy
+ class_remove_file
+ class_unregister
+ clear_inode
+ clear_page_dirty_for_io
+ clear_user
+ complete
+ complete_all
+ complete_and_exit
+ consume_skb
+ copy_in_user
+ cpu_khz
+ cpu_online_mask
+ cpu_possible_mask
+ cpu_present_mask
+ crc32_le
+ crc32c
+ crc_t10dif
+ create_empty_buffers
+ create_proc_entry
+ crypto_alloc_base
+ crypto_alloc_instance
+ crypto_attr_alg2
+ crypto_blkcipher_type
+ crypto_check_attr_type
+ crypto_destroy_tfm
+ crypto_drop_spawn
+ crypto_mod_put
+ crypto_register_alg
+ crypto_register_shash
+ crypto_register_template
+ crypto_spawn_tfm
+ crypto_unregister_alg
+ crypto_unregister_shash
+ crypto_unregister_template
+ crypto_xor
+ csum_ipv6_magic
+ csum_partial
+ current_fs_time
+ current_kernel_time
+ d_find_alias
+ d_instantiate
+ d_invalidate
+ d_lookup
+ d_obtain_alias
+ d_path
+ d_prune_aliases
+ d_rehash
+ d_splice_alias
+ datagram_poll
+ dca3_get_tag
+ dca_add_requester
+ dca_register_notify
+ dca_remove_requester
+ dca_unregister_notify
+ debugfs_create_bool
+ debugfs_create_dir
+ debugfs_create_file
+ debugfs_create_u8
+ debugfs_remove
+ default_llseek
+ default_wake_function
+ del_gendisk
+ del_timer
+ del_timer_sync
+ destroy_workqueue
+ dev_add_pack
+ dev_addr_add
+ dev_addr_del
+ dev_alloc_name
+ dev_base_lock
+ dev_close
+ dev_driver_string
+ dev_get_by_index
+ dev_get_by_name
+ dev_get_drvdata
+ dev_get_stats
+ dev_kfree_skb_any
+ dev_kfree_skb_irq
+ dev_mc_add
+ dev_open
+ dev_queue_xmit
+ dev_remove_pack
+ dev_set_allmulti
+ dev_set_drvdata
+ dev_set_mac_address
+ dev_set_mtu
+ dev_set_name
+ dev_set_promiscuity
+ dev_valid_name
+ device_add
+ device_create
+ device_create_file
+ device_del
+ device_destroy
+ device_for_each_child
+ device_initialize
+ device_register
+ device_remove_file
+ device_reprobe
+ device_unregister
+ devm_free_irq
+ devm_kzalloc
+ devm_request_threaded_irq
+ disable_irq
+ disable_irq_nosync
+ dma_async_device_register
+ dma_async_device_unregister
+ dma_async_tx_descriptor_init
+ dma_get_required_mask
+ dma_ops
+ dma_pool_alloc
+ dma_pool_create
+ dma_pool_destroy
+ dma_pool_free
+ dma_set_mask
+ dma_supported
+ dmam_alloc_coherent
+ dmi_check_system
+ dmi_find_device
+ dmi_first_match
+ dmi_get_date
+ dmi_get_system_info
+ dmi_match
+ dmi_walk
+ do_gettimeofday
+ do_sync_read
+ do_sync_write
+ down
+ down_interruptible
+ down_read
+ down_read_trylock
+ down_trylock
+ down_write
+ down_write_trylock
+ dput
+ driver_create_file
+ driver_for_each_device
+ driver_register
+ driver_remove_file
+ driver_unregister
+ dst_release
+ dump_stack
+ ec_read
+ ec_write
+ emergency_restart
+ enable_irq
+ end_page_writeback
+ eth_change_mtu
+ eth_mac_addr
+ eth_type_trans
+ eth_validate_addr
+ ether_setup
+ ethtool_op_get_link
+ fasync_helper
+ fb_alloc_cmap
+ fb_dealloc_cmap
+ fb_destroy_modedb
+ fb_find_mode
+ fb_get_options
+ fb_mode_option
+ fb_set_suspend
+ fb_set_var
+ fget
+ filemap_fault
+ filemap_fdatawait
+ filemap_fdatawrite
+ filemap_flush
+ filemap_write_and_wait
+ filemap_write_and_wait_range
+ filp_close
+ filp_open
+ filter_current_check_discard
+ find_first_bit
+ find_first_zero_bit
+ find_get_page
+ find_next_bit
+ find_next_zero_bit
+ find_or_create_page
+ find_vma
+ finish_wait
+ flush_scheduled_work
+ flush_signals
+ flush_workqueue
+ fput
+ framebuffer_alloc
+ framebuffer_release
+ free_buffer_head
+ free_dca_provider
+ free_dma
+ free_irq
+ free_netdev
+ free_pages
+ free_percpu
+ free_vm_area
+ generic_block_bmap
+ generic_delete_inode
+ generic_file_aio_read
+ generic_file_aio_write
+ generic_file_direct_write
+ generic_file_llseek
+ generic_file_mmap
+ generic_file_open
+ generic_fillattr
+ generic_make_request
+ generic_mii_ioctl
+ generic_permission
+ generic_read_dir
+ generic_readlink
+ generic_segment_checks
+ generic_write_checks
+ generic_write_end
+ genl_unregister_family
+ genphy_config_aneg
+ genphy_read_status
+ get_device
+ get_random_bytes
+ get_seconds
+ get_user_pages
+ get_write_access
+ get_zeroed_page
+ gnet_stats_copy_basic
+ gnet_stats_copy_queue
+ grab_cache_page_write_begin
+ have_submounts
+ hci_alloc_dev
+ hci_free_dev
+ hci_register_dev
+ hci_unregister_dev
+ hex_dump_to_buffer
+ high_memory
+ hrtimer_cancel
+ hrtimer_init
+ hrtimer_start
+ hwmon_device_register
+ hwmon_device_unregister
+ hwrng_register
+ hwrng_unregister
+ i2c_add_adapter
+ i2c_bit_add_bus
+ i2c_del_adapter
+ i2c_del_driver
+ i2c_master_recv
+ i2c_master_send
+ i2c_new_device
+ i2c_new_dummy
+ i2c_new_probed_device
+ i2c_register_driver
+ i2c_smbus_read_byte_data
+ i2c_smbus_read_i2c_block_data
+ i2c_smbus_read_word_data
+ i2c_smbus_write_byte
+ i2c_smbus_write_byte_data
+ i2c_smbus_write_word_data
+ i2c_transfer
+ i2c_unregister_device
+ icmp_send
+ ida_get_new_above
+ ida_pre_get
+ ida_remove
+ idr_destroy
+ idr_find
+ idr_for_each
+ idr_get_new
+ idr_get_new_above
+ idr_init
+ idr_pre_get
+ idr_remove
+ idr_remove_all
+ idr_replace
+ ieee80211_alloc_hw
+ ieee80211_channel_to_frequency
+ ieee80211_find_sta
+ ieee80211_free_hw
+ ieee80211_frequency_to_channel
+ ieee80211_hdrlen
+ ieee80211_queue_delayed_work
+ ieee80211_queue_work
+ ieee80211_rate_control_register
+ ieee80211_rate_control_unregister
+ ieee80211_register_hw
+ ieee80211_restart_hw
+ ieee80211_rx_irqsafe
+ ieee80211_scan_completed
+ ieee80211_start_tx_ba_cb_irqsafe
+ ieee80211_stop_queue
+ ieee80211_stop_queues
+ ieee80211_stop_tx_ba_cb_irqsafe
+ ieee80211_tx_status_irqsafe
+ ieee80211_unregister_hw
+ ieee80211_wake_queue
+ ieee80211_wake_queues
+ iget5_locked
+ iget_locked
+ igrab
+ ilookup5
+ in_group_p
+ in_aton
+ in_dev_finish_destroy
+ inet_add_protocol
+ inet_addr_type
+ inet_del_protocol
+ inet_proto_csum_replace4
+ inet_select_addr
+ inet_twsk_put
+ inetdev_by_index
+ init_net
+ init_pid_ns
+ init_special_inode
+ init_task
+ init_timer_key
+ init_uts_ns
+ inode_change_ok
+ inode_init_once
+ input_allocate_device
+ input_event
+ input_free_device
+ input_register_device
+ input_unregister_device
+ int_to_scsilun
+ interruptible_sleep_on
+ invalidate_bdev
+ invalidate_inode_pages2_range
+ invalidate_mapping_pages
+ ioctl_by_bdev
+ iomem_resource
+ ioport_resource
+ ioread16
+ ioread32
+ ioread8
+ ioremap_nocache
+ ioremap_wc
+ iounmap
+ iowrite16
+ iowrite32
+ iowrite8
+ ip6_route_output
+ ip_compute_csum
+ ip_defrag
+ ipmi_create_user
+ ipmi_destroy_user
+ ipmi_register_smi
+ ipmi_request_supply_msgs
+ ipmi_smi_msg_received
+ ipmi_smi_watcher_register
+ ipmi_smi_watcher_unregister
+ ipmi_unregister_smi
+ iput
+ ipv6_chk_addr
+ ipv6_skip_exthdr
+ is_bad_inode
+ jiffies
+ jiffies_to_clock_t
+ jiffies_to_msecs
+ jiffies_to_timeval
+ kasprintf
+ kernel_read
+ kernel_recvmsg
+ kernel_sendmsg
+ kfree
+ kfree_skb
+ kill_block_super
+ kill_fasync
+ kmem_cache_alloc
+ kmem_cache_create
+ kmem_cache_destroy
+ kmem_cache_free
+ kmemdup
+ kobject_create_and_add
+ kobject_del
+ kobject_init_and_add
+ kobject_put
+ kobject_set_name
+ kobject_uevent
+ kobject_uevent_env
+ krealloc
+ kset_create_and_add
+ kset_unregister
+ kstrdup
+ kstrndup
+ kthread_should_stop
+ kthread_stop
+ ktime_get
+ ktime_get_real
+ ktime_get_ts
+ led_classdev_register
+ led_classdev_unregister
+ led_trigger_register
+ led_trigger_unregister
+ list_del
+ local_bh_disable
+ local_bh_enable
+ local_bh_enable_ip
+ lock_rename
+ lock_sock_nested
+ lookup_one_len
+ lro_flush_all
+ lro_receive_skb
+ make_bad_inode
+ malloc_sizes
+ mapping_tagged
+ mark_buffer_async_write
+ mark_buffer_dirty
+ mark_page_accessed
+ match_int
+ match_strdup
+ match_token
+ mdio45_probe
+ mdio_mii_ioctl
+ mdiobus_read
+ mdiobus_write
+ mem_section
+ memchr
+ memcmp
+ memcpy
+ memcpy_fromiovec
+ memdup_user
+ memmove
+ memory_read_from_buffer
+ mempool_alloc
+ mempool_alloc_slab
+ mempool_create
+ mempool_destroy
+ mempool_free
+ mempool_free_slab
+ mempool_kfree
+ mempool_kmalloc
+ memset
+ mii_check_link
+ mii_check_media
+ mii_ethtool_gset
+ mii_ethtool_sset
+ mii_link_ok
+ mii_nway_restart
+ misc_deregister
+ misc_register
+ mnt_drop_write
+ mnt_want_write
+ mod_timer
+ module_layout
+ module_put
+ module_refcount
+ movable_zone
+ mpage_readpage
+ mpage_readpages
+ mpage_writepages
+ msecs_to_jiffies
+ msleep
+ msleep_interruptible
+ mtrr_add
+ mtrr_del
+ mutex_lock
+ mutex_lock_interruptible
+ mutex_trylock
+ mutex_unlock
+ napi_complete
+ napi_get_frags
+ napi_gro_frags
+ napi_gro_receive
+ neigh_destroy
+ net_msg_warn
+ net_ratelimit
+ netdev_features_change
+ netdev_set_master
+ netif_carrier_off
+ netif_carrier_on
+ netif_device_attach
+ netif_device_detach
+ netif_napi_add
+ netif_napi_del
+ netif_receive_skb
+ netif_rx
+ netif_rx_ni
+ netlink_broadcast
+ netlink_kernel_release
+ netlink_unicast
+ netpoll_trap
+ new_inode
+ nf_conntrack_destroy
+ nf_conntrack_helper_register
+ nf_conntrack_helper_unregister
+ nf_conntrack_untracked
+ nf_ct_expect_alloc
+ nf_ct_expect_init
+ nf_ct_expect_put
+ nf_ct_expect_related_report
+ nf_ct_l3proto_module_put
+ nf_ct_l3proto_try_module_get
+ nf_ct_unexpect_related
+ nf_log_packet
+ nf_nat_setup_info
+ nf_register_hook
+ nf_register_hooks
+ nf_unregister_hook
+ nf_unregister_hooks
+ nla_parse
+ nla_put
+ no_llseek
+ nobh_truncate_page
+ nobh_write_begin
+ nobh_write_end
+ nobh_writepage
+ node_states
+ nonseekable_open
+ noop_qdisc
+ notify_change
+ nr_cpu_ids
+ ns_to_timeval
+ num_physpages
+ on_each_cpu
+ override_creds
+ pagevec_lookup_tag
+ panic
+ panic_notifier_list
+ param_get_bool
+ param_get_byte
+ param_get_charp
+ param_get_int
+ param_get_long
+ param_get_short
+ param_get_string
+ param_get_uint
+ param_get_ulong
+ param_get_ushort
+ param_set_bool
+ param_set_byte
+ param_set_charp
+ param_set_copystring
+ param_set_int
+ param_set_long
+ param_set_short
+ param_set_uint
+ param_set_ulong
+ param_set_ushort
+ path_get
+ path_put
+ pci_add_new_bus
+ pci_assign_resource
+ pci_bus_add_devices
+ pci_bus_alloc_resource
+ pci_bus_read_config_byte
+ pci_bus_read_config_dword
+ pci_bus_read_config_word
+ pci_bus_type
+ pci_bus_write_config_byte
+ pci_bus_write_config_dword
+ pci_bus_write_config_word
+ pci_choose_state
+ pci_cleanup_aer_uncorrect_error_status
+ pci_clear_mwi
+ pci_dev_driver
+ pci_dev_get
+ pci_dev_present
+ pci_dev_put
+ pci_disable_device
+ pci_disable_link_state
+ pci_disable_msi
+ pci_disable_msix
+ pci_disable_pcie_error_reporting
+ pci_disable_rom
+ pci_disable_sriov
+ pci_enable_device
+ pci_enable_device_mem
+ pci_enable_msi_block
+ pci_enable_msix
+ pci_enable_pcie_error_reporting
+ pci_enable_sriov
+ pci_find_bus
+ pci_find_capability
+ pci_get_device
+ pci_get_slot
+ pci_get_subsys
+ pci_intx
+ pci_iomap
+ pci_ioremap_bar
+ pci_iounmap
+ pci_map_rom
+ pci_match_id
+ pci_mem_start
+ pci_msi_enabled
+ pci_pme_active
+ pci_pme_capable
+ pci_prepare_to_sleep
+ pci_read_vpd
+ pci_reenable_device
+ pci_release_region
+ pci_release_regions
+ pci_release_selected_regions
+ pci_request_region
+ pci_request_regions
+ pci_request_selected_regions
+ pci_request_selected_regions_exclusive
+ pci_restore_state
+ pci_save_state
+ pci_scan_slot
+ pci_select_bars
+ pci_set_master
+ pci_set_mwi
+ pci_set_power_state
+ pci_try_set_mwi
+ pci_unmap_rom
+ pci_unregister_driver
+ pci_wake_from_d3
+ pcibios_align_resource
+ pcie_aspm_enabled
+ pcie_set_readrq
+ pcim_enable_device
+ pcim_iomap_regions
+ pcim_iomap_regions_request_all
+ pcim_iomap_table
+ pcim_pin_device
+ pcix_get_mmrbc
+ pcix_set_mmrbc
+ perf_tp_event
+ pfifo_qdisc_ops
+ pgprot_writecombine
+ phy_driver_register
+ phy_driver_unregister
+ pid_task
+ platform_device_add
+ platform_device_add_data
+ platform_device_add_resources
+ platform_device_alloc
+ platform_device_del
+ platform_device_put
+ platform_device_register
+ platform_device_unregister
+ platform_driver_probe
+ platform_driver_register
+ platform_driver_unregister
+ platform_get_irq
+ platform_get_resource
+ pnp_activate_dev
+ pnp_device_detach
+ pnp_get_resource
+ pnp_range_reserved
+ pnp_register_driver
+ pnp_unregister_driver
+ ppp_input
+ prepare_creds
+ prepare_to_wait
+ print_hex_dump
+ print_hex_dump_bytes
+ printk
+ proc_create_data
+ proc_dointvec
+ proc_dointvec_jiffies
+ proc_dointvec_minmax
+ proc_dostring
+ proc_mkdir
+ proto_register
+ proto_unregister
+ pskb_expand_head
+ put_device
+ put_disk
+ put_page
+ put_tty_driver
+ pv_cpu_ops
+ pv_irq_ops
+ qdisc_create_dflt
+ qdisc_destroy
+ qdisc_reset
+ qdisc_tree_decrease_qlen
+ queue_delayed_work
+ queue_delayed_work_on
+ queue_work
+ queue_work_on
+ radix_tree_gang_lookup
+ radix_tree_gang_lookup_tag
+ radix_tree_tag_clear
+ raid_class_attach
+ raid_class_release
+ rate_control_send_low
+ rb_erase
+ rb_first
+ rb_insert_color
+ rb_next
+ rcu_barrier
+ read_cache_page
+ redirty_page_for_writepage
+ register_blkdev
+ register_chrdev_region
+ register_cpu_notifier
+ register_dca_provider
+ register_die_notifier
+ register_filesystem
+ register_framebuffer
+ register_ftrace_event
+ register_inet6addr_notifier
+ register_inetaddr_notifier
+ register_ip_vs_scheduler
+ register_kprobe
+ register_kretprobe
+ register_netdev
+ register_netdevice
+ register_netdevice_notifier
+ register_netevent_notifier
+ register_pernet_subsys
+ register_qdisc
+ register_reboot_notifier
+ register_sysctl_paths
+ register_sysctl_table
+ register_sysrq_key
+ register_tcf_proto_ops
+ register_xenstore_notifier
+ register_xenbus_watch
+ relay_buf_full
+ relay_close
+ relay_file_operations
+ relay_flush
+ relay_open
+ relay_switch_subbuf
+ release_and_free_resource
+ release_firmware
+ release_resource
+ release_sock
+ remap_pfn_range
+ remove_proc_entry
+ remove_wait_queue
+ request_dma
+ request_firmware
+ request_threaded_irq
+ reset_devices
+ restore_vga
+ revalidate_disk
+ revert_creds
+ rfkill_alloc
+ rfkill_destroy
+ rfkill_register
+ rfkill_unregister
+ ring_buffer_event_data
+ round_jiffies
+ round_jiffies_relative
+ rtc_device_register
+ rtc_device_unregister
+ rtc_time_to_tm
+ rtc_update_irq
+ rtc_valid_tm
+ rtnl_is_locked
+ rtnl_link_register
+ rtnl_link_unregister
+ rtnl_lock
+ rtnl_unlock
+ save_stack_trace_tsk
+ save_vga
+ sb_set_blocksize
+ schedule
+ schedule_delayed_work
+ schedule_timeout
+ schedule_timeout_interruptible
+ schedule_timeout_uninterruptible
+ schedule_work
+ scnprintf
+ scsi_add_device
+ scsi_add_host_with_dma
+ scsi_adjust_queue_depth
+ scsi_bios_ptable
+ scsi_block_requests
+ scsi_block_when_processing_errors
+ scsi_build_sense_buffer
+ scsi_cmd_ioctl
+ scsi_command_normalize_sense
+ scsi_command_size_tbl
+ scsi_device_get
+ scsi_device_lookup
+ scsi_device_lookup_by_target
+ scsi_device_put
+ scsi_device_set_state
+ scsi_device_type
+ scsi_dma_map
+ scsi_dma_unmap
+ scsi_execute_req
+ scsi_get_command
+ scsi_get_sense_info_fld
+ scsi_get_vpd_page
+ scsi_host_alloc
+ scsi_host_get
+ scsi_host_lookup
+ scsi_host_put
+ scsi_host_set_state
+ scsi_internal_device_block
+ scsi_internal_device_unblock
+ scsi_ioctl
+ scsi_is_fc_rport
+ scsi_is_host_device
+ scsi_is_sas_rphy
+ scsi_kmap_atomic_sg
+ scsi_kunmap_atomic_sg
+ scsi_logging_level
+ scsi_mode_select
+ scsi_mode_sense
+ scsi_nonblockable_ioctl
+ scsi_normalize_sense
+ scsi_partsize
+ scsi_prep_fn
+ scsi_prep_return
+ scsi_print_command
+ scsi_print_result
+ scsi_print_sense
+ scsi_put_command
+ scsi_register_driver
+ scsi_remove_device
+ scsi_remove_host
+ scsi_remove_target
+ scsi_report_bus_reset
+ scsi_report_device_reset
+ scsi_scan_host
+ scsi_scan_target
+ scsi_set_medium_removal
+ scsi_setup_blk_pc_cmnd
+ scsi_setup_fs_cmnd
+ scsi_show_extd_sense
+ scsi_show_result
+ scsi_show_sense_hdr
+ scsi_test_unit_ready
+ scsi_track_queue_full
+ scsi_unblock_requests
+ scsicam_bios_param
+ scsilun_to_int
+ sdev_evt_send_simple
+ security_inode_init_security
+ send_sig
+ seq_lseek
+ seq_open
+ seq_printf
+ seq_puts
+ seq_read
+ seq_release
+ set_blocksize
+ set_cpus_allowed_ptr
+ set_disk_ro
+ set_memory_array_uc
+ set_memory_array_wb
+ set_memory_uc
+ set_memory_wb
+ set_memory_wc
+ set_page_dirty
+ set_user_nice
+ sg_copy_from_buffer
+ sg_copy_to_buffer
+ sg_init_one
+ sg_init_table
+ sg_next
+ sget
+ shmem_file_setup
+ shrink_dcache_parent
+ sigprocmask
+ simple_empty
+ simple_read_from_buffer
+ simple_strtol
+ simple_strtoul
+ simple_strtoull
+ single_open
+ single_release
+ sk_alloc
+ sk_free
+ skb_checksum
+ skb_checksum_help
+ skb_clone
+ skb_copy
+ skb_copy_bits
+ skb_copy_datagram_iovec
+ skb_copy_expand
+ skb_dequeue
+ skb_free_datagram
+ skb_gso_segment
+ skb_make_writable
+ skb_pad
+ skb_pull
+ skb_push
+ skb_put
+ skb_queue_head
+ skb_queue_purge
+ skb_queue_tail
+ skb_realloc_headroom
+ skb_recv_datagram
+ skb_trim
+ skb_tstamp_tx
+ skb_unlink
+ smp_call_function
+ smp_call_function_single
+ snd_ac97_bus
+ snd_ac97_mixer
+ snd_ac97_resume
+ snd_ac97_suspend
+ snd_card_create
+ snd_card_disconnect
+ snd_card_free
+ snd_card_proc_new
+ snd_card_register
+ snd_component_add
+ snd_ctl_add
+ snd_ctl_boolean_mono_info
+ snd_ctl_boolean_stereo_info
+ snd_ctl_find_id
+ snd_ctl_new1
+ snd_ctl_notify
+ snd_device_free
+ snd_device_new
+ snd_dma_alloc_pages
+ snd_dma_free_pages
+ snd_hwdep_new
+ snd_info_free_entry
+ snd_info_register
+ snd_interval_refine
+ snd_iprintf
+ snd_mpu401_uart_interrupt
+ snd_mpu401_uart_new
+ snd_pci_quirk_lookup
+ snd_pcm_format_physical_width
+ snd_pcm_format_width
+ snd_pcm_hw_constraint_integer
+ snd_pcm_hw_constraint_list
+ snd_pcm_hw_constraint_minmax
+ snd_pcm_hw_constraint_msbits
+ snd_pcm_hw_constraint_step
+ snd_pcm_hw_rule_add
+ snd_pcm_lib_free_pages
+ snd_pcm_lib_ioctl
+ snd_pcm_lib_malloc_pages
+ snd_pcm_lib_preallocate_pages
+ snd_pcm_lib_preallocate_pages_for_all
+ snd_pcm_limit_hw_rates
+ snd_pcm_new
+ snd_pcm_period_elapsed
+ snd_pcm_set_ops
+ snd_pcm_set_sync
+ snd_pcm_sgbuf_ops_page
+ snd_pcm_stop
+ snd_pcm_suspend_all
+ snd_rawmidi_new
+ snd_rawmidi_receive
+ snd_rawmidi_set_ops
+ snd_rawmidi_transmit
+ snd_rawmidi_transmit_ack
+ snd_rawmidi_transmit_empty
+ snd_rawmidi_transmit_peek
+ snprintf
+ sock_alloc_send_skb
+ sock_create
+ sock_create_kern
+ sock_get_timestamp
+ sock_init_data
+ sock_no_accept
+ sock_no_bind
+ sock_no_connect
+ sock_no_getname
+ sock_no_getsockopt
+ sock_no_listen
+ sock_no_mmap
+ sock_no_sendpage
+ sock_no_setsockopt
+ sock_no_shutdown
+ sock_no_socketpair
+ sock_queue_rcv_skb
+ sock_recvmsg
+ sock_register
+ sock_release
+ sock_sendmsg
+ sock_setsockopt
+ sock_unregister
+ sock_wfree
+ sockfd_lookup
+ soft_cursor
+ sort
+ spi_attach_transport
+ spi_display_xfer_agreement
+ spi_dv_device
+ spi_populate_ppr_msg
+ spi_populate_sync_msg
+ spi_populate_width_msg
+ spi_release_transport
+ sprintf
+ sscanf
+ starget_for_each_device
+ strcat
+ strchr
+ strcmp
+ strcpy
+ string_get_size
+ strlcat
+ strlcpy
+ strlen
+ strncasecmp
+ strncat
+ strncmp
+ strncpy
+ strncpy_from_user
+ strnicmp
+ strnlen
+ strrchr
+ strsep
+ strspn
+ strstr
+ submit_bh
+ submit_bio
+ sync_blockdev
+ synchronize_irq
+ synchronize_net
+ synchronize_sched
+ sys_tz
+ sysctl_tcp_dma_copybreak
+ sysctl_vfs_cache_pressure
+ sysfs_create_bin_file
+ sysfs_create_file
+ sysfs_create_group
+ sysfs_format_mac
+ sysfs_remove_bin_file
+ sysfs_remove_file
+ sysfs_remove_group
+ sysfs_schedule_callback
+ system_state
+ tasklet_init
+ tasklet_kill
+ tc_classify
+ tcf_action_exec
+ tcf_destroy_chain
+ tcf_exts_change
+ tcf_exts_destroy
+ tcf_exts_dump
+ tcf_exts_dump_stats
+ tcf_exts_validate
+ tcf_generic_walker
+ tcf_hash_check
+ tcf_hash_create
+ tcf_hash_insert
+ tcf_register_action
+ tcf_unregister_action
+ tcp_is_cwnd_limited
+ tcp_register_congestion_control
+ tcp_reno_min_cwnd
+ tcp_slow_start
+ tcp_unregister_congestion_control
+ test_set_page_writeback
+ timecounter_cyc2time
+ timecounter_init
+ timespec_to_jiffies
+ totalram_pages
+ touch_atime
+ trace_current_buffer_lock_reserve
+ trace_define_field
+ trace_seq_printf
+ tracepoint_probe_register
+ tracepoint_probe_unregister
+ tracing_generic_entry_update
+ truncate_inode_pages
+ truncate_inode_pages_range
+ tty_buffer_request_room
+ tty_flip_buffer_push
+ tty_hangup
+ tty_hung_up_p
+ tty_insert_flip_string_flags
+ tty_ldisc_flush
+ tty_register_device
+ tty_register_driver
+ tty_register_ldisc
+ tty_set_operations
+ tty_std_termios
+ tty_termios_baud_rate
+ tty_unregister_device
+ tty_unregister_driver
+ tty_unregister_ldisc
+ tty_wakeup
+ uio_event_notify
+ uio_unregister_device
+ unlock_buffer
+ unlock_new_inode
+ unlock_page
+ unlock_rename
+ unmap_mapping_range
+ unmap_underlying_metadata
+ unregister_blkdev
+ unregister_chrdev_region
+ unregister_cpu_notifier
+ unregister_dca_provider
+ unregister_die_notifier
+ unregister_filesystem
+ unregister_framebuffer
+ unregister_inet6addr_notifier
+ unregister_inetaddr_notifier
+ unregister_ip_vs_scheduler
+ unregister_kprobe
+ unregister_kprobes
+ unregister_kretprobes
+ unregister_netdev
+ unregister_netdevice_notifier
+ unregister_netevent_notifier
+ unregister_pernet_subsys
+ unregister_qdisc
+ unregister_reboot_notifier
+ unregister_shrinker
+ unregister_sysctl_table
+ unregister_sysrq_key
+ unregister_tcf_proto_ops
+ unregister_xenbus_watch
+ up
+ up_read
+ up_write
+ usb_alloc_urb
+ usb_altnum_to_altsetting
+ usb_anchor_empty
+ usb_anchor_urb
+ usb_autopm_get_interface
+ usb_autopm_get_interface_async
+ usb_autopm_put_interface
+ usb_autopm_put_interface_async
+ usb_bulk_msg
+ usb_clear_halt
+ usb_control_msg
+ usb_deregister
+ usb_deregister_dev
+ usb_disabled
+ usb_driver_claim_interface
+ usb_driver_release_interface
+ usb_driver_set_configuration
+ usb_find_interface
+ usb_free_urb
+ usb_get_current_frame_number
+ usb_get_descriptor
+ usb_get_dev
+ usb_get_from_anchor
+ usb_get_intf
+ usb_get_status
+ usb_get_urb
+ usb_ifnum_to_if
+ usb_interrupt_msg
+ usb_kill_anchored_urbs
+ usb_kill_urb
+ usb_lock_device_for_reset
+ usb_match_id
+ usb_poison_anchored_urbs
+ usb_poison_urb
+ usb_put_dev
+ usb_put_intf
+ usb_queue_reset_device
+ usb_register_dev
+ usb_register_driver
+ usb_reset_configuration
+ usb_reset_device
+ usb_reset_endpoint
+ usb_scuttle_anchored_urbs
+ usb_serial_handle_break
+ usb_serial_handle_sysrq_char
+ usb_serial_port_softint
+ usb_serial_resume
+ usb_serial_suspend
+ usb_set_interface
+ usb_string
+ usb_submit_urb
+ usb_unanchor_urb
+ usb_unlink_anchored_urbs
+ usb_unlink_urb
+ usb_unpoison_anchored_urbs
+ usb_unpoison_urb
+ usb_wait_anchor_empty_timeout
+ usbnet_disconnect
+ usbnet_get_endpoints
+ usbnet_open
+ usbnet_probe
+ usbnet_resume
+ usbnet_start_xmit
+ usbnet_stop
+ usbnet_suspend
+ usbnet_tx_timeout
+ usecs_to_jiffies
+ vfree
+ vfs_llseek
+ vfs_read
+ vfs_write
+ vfs_writev
+ vga_client_register
+ vgacon_text_force
+ vid_from_reg
+ vid_which_vrm
+ vlan_dev_real_dev
+ vlan_dev_vlan_id
+ vm_get_page_prot
+ vm_insert_pfn
+ vmalloc
+ vmalloc_32
+ vmalloc_node
+ vmalloc_to_page
+ vmalloc_user
+ vmap
+ vprintk
+ vscnprintf
+ vsnprintf
+ vsprintf
+ vsscanf
+ vunmap
+ wait_for_completion
+ wait_for_completion_interruptible
+ wait_for_completion_interruptible_timeout
+ wait_for_completion_timeout
+ wait_on_page_bit
+ wake_up_process
+ warn_slowpath_fmt
+ warn_slowpath_null
+ wiphy_rfkill_set_hw_state
+ wireless_send_event
+ write_inode_now
+ write_one_page
+ x86_dma_fallback_dev
+ xenbus_directory
+ xenbus_read
+ xenbus_rm
+ xenbus_scanf
+ xenbus_write
+ xfrm_register_mode
+ xfrm_register_type
+ xfrm_state_lookup
+ xfrm_unregister_mode
+ xfrm_unregister_type
+ xt_register_match
+ xt_register_matches
+ xt_register_target
+ xt_unregister_match
+ xt_unregister_matches
+ xt_unregister_target
+ yield
+ zlib_inflate
+ zlib_inflateEnd
+ zlib_inflateInit2
+ zlib_inflate_workspacesize
+ __pagevec_lru_add
+ __elv_add_request
+ bd_set_size
+ bdi_register_dev
+ bdi_unregister
+ bio_copy_user
+ bio_phys_segments
+ bio_uncopy_user
+ blk_queue_bounce
+ blk_queue_segment_boundary
+ blk_rq_map_kern
+ blk_sync_queue
+ elevator_exit
+ elevator_init
+ fsync_bdev
+ invalidate_partition
+ recalc_sigpending
+ scsi_is_sdev_device
+ set_device_ro
+ _raw_read_lock_irqsave
+ _raw_read_unlock_irqrestore
+ _raw_spin_lock
+ _raw_spin_lock_irq
+ _raw_spin_lock_irqsave
+ _raw_spin_unlock_irqrestore
+ _raw_write_lock_irqsave
+ _raw_write_unlock_irqrestore
+ blkdev_get_by_dev
+ blk_start_plug
+ blk_finish_plug
+ kernel_stack
+ cpu_number
+ current_task
+ blk_queue_max_segments
+ blk_queue_max_hw_sectors
+ kmem_cache_alloc_trace
+ aio_complete
+ bio_alloc_bioset
+ bio_init
+ blkdev_get_by_path
+ blkdev_issue_discard
+ _copy_from_user
+ _copy_to_user
+ copy_user_enhanced_fast_string
+ copy_user_generic_string
+ copy_user_generic_unrolled
+ d_drop
+ dget_parent
+ d_make_root
+ drop_nlink
+ d_set_d_op
+ flock_lock_file_wait
+ fs_bio_set
+ inc_nlink
+ inode_newsize_ok
+ invalidate_inode_buffers
+ irq_fpu_usable
+ __kernel_fpu_begin
+ __kernel_fpu_end
+ kern_path
+ kthread_create_on_node
+ locks_init_lock
+ __module_get
+ mount_bdev
+ posix_lock_file
+ posix_lock_file_wait
+ posix_test_lock
+ prepare_to_wait_exclusive
+ pv_lock_ops
+ __remove_inode_hash
+ set_nlink
+ truncate_pagecache
+ truncate_setsize
+ vfs_fsync
+ vfs_readv
+ vfs_rename
--- /dev/null
+#!/usr/bin/python
+#
+# kabitool - Red Hat kABI extraction tool (version 2)
+#
+# We use this script to generate RPM dependencies based on symversions.
+#
+# Author: Jon Masters <jcm@redhat.com>
+# Copyright (C) 2009 Red Hat, Inc.
+#
+# This software may be freely redistributed under the terms of the GNU
+# General Public License (GPL).
+
+# Changelog:
+#
+# 2009/08/01 - New version based on kABI dep plan for RHEL6.
+#
+
+__author__ = "Jon Masters <jcm@redhat.com>"
+__version__ = "$Revisions: 2.0 $"
+__date__ = "$Date: 2010/09/01 04:58:18 $"
+__copyright__ = "Copyright (C) 2009 Red Hat, Inc"
+__license__ = "GPL"
+
+import getopt
+import os
+import re
+import sha
+import string
+import sys
+
+true = 1
+false = 0
+
+def load_symbols(filename):
+ """Load the kernel exported symbols from Module.symvers."""
+
+ ksyms = open(filename,"r")
+
+ symbols={}
+
+ while true:
+ line = ksyms.readline()
+ if line == "":
+ break;
+ if line == "\n":
+ continue
+ checksum,symbol,path,license = string.split(line)
+
+ symbols[symbol] = dict(checksum=checksum,
+ path=path,
+ license=license)
+
+ return symbols
+
+def output_deps(depsfile,symbols):
+
+ deps_file = open(depsfile,"w")
+
+ for symbol in sorted(symbols.keys()):
+ deps_file.write("kernel("+symbol+") = " +
+ symbols[symbol]['checksum'] + "\n")
+
+def usage():
+ print """
+kabitool: process Module.symvers into useful exported kABI dependencies
+
+ kabitool [-k kernel] [-s symbols ]
+
+ -o The file to output sorted dependencies to
+
+ -s The Module.symvers file to import from
+
+"""
+
+if __name__ == "__main__":
+
+ symdeps_file = ""
+ symvers_file = ""
+
+ opts, args = getopt.getopt(sys.argv[1:], 'ho:s:')
+
+ for o, v in opts:
+ if o == "-h":
+ usage()
+ sys.exit(0)
+ if o == "-o":
+ symdeps_file = v
+ if o == "-s":
+ symvers_file = v
+
+ if (symdeps_file == ""):
+ symdeps_file = "Module.symdeps"
+
+ if (symvers_file == ""):
+ symvers_file = "Module.symvers"
+
+ if not (os.path.isfile(symvers_file)):
+ print "cannot read Module.symvers file"
+ usage()
+ exit(1)
+
+ symbols = load_symbols(symvers_file)
+ output_deps(symdeps_file, symbols)
--- /dev/null
+%define kernel_git_commit 74c661676446c010ea6f46dab7231d98761d66a5
+%global __spec_install_pre %{___build_pre}
+
+# Errors in specfile are causing builds to fail. Adding workarounds.
+%define _unpackaged_files_terminate_build 0
+%define _missing_doc_files_terminate_build 0
+
+Summary: The Linux kernel
+
+# For a stable, released kernel, released_kernel should be 1. For rawhide
+# and/or a kernel built from an rc or git snapshot, released_kernel should
+# be 0.
+%define released_kernel 1
+# Versions of various parts
+
+# Polite request for people who spin their own kernel rpms:
+# please modify the "buildid" define in a way that identifies
+# that the kernel isn't the stock distribution kernel, for example,
+# by setting the define to ".local" or ".bz123456"
+#
+# % define buildid .local
+
+%define distro_build 0
+%define signmodules 1
+
+# base_sublevel is the kernel version we're starting with and patching
+# on top of -- for example, 2.6.22-rc7-git1 starts with a 2.6.21 base,
+# which yields a base_sublevel of 21.
+%define base_sublevel 0
+
+## If this is a released kernel ##
+%if 0%{?released_kernel}
+
+# Do we have a -stable update to apply?
+%define stable_update 0
+# Is it a -stable RC?
+%define stable_rc 0
+# Set rpm version accordingly
+%if 0%{?stable_update}
+%define stablerev .%{stable_update}
+%define stable_base %{stable_update}
+%if 0%{?stable_rc}
+# stable RCs are incremental patches, so we need the previous stable patch
+%define stable_base %(echo $((%{stable_update} - 1)))
+%endif
+%endif
+%define rpmversion 4.1.%{base_sublevel}%{?stablerev}
+
+## The not-released-kernel case ##
+%else
+# The next upstream release sublevel (base_sublevel+1)
+%define upstream_sublevel %(echo $((%{base_sublevel} + 1)))
+# The rc snapshot level
+%define rcrev 0
+# The git snapshot level
+%define gitrev 0
+# Set rpm version accordingly
+%define rpmversion 4.1.%{upstream_sublevel}
+%endif
+# Nb: The above rcrev and gitrev values automagically define Patch00 and Patch01 below.
+
+# What parts do we want to build? We must build at least one kernel.
+# These are the kernels that are built IF the architecture allows it.
+# All should default to 1 (enabled) and be flipped to 0 (disabled)
+# by later arch-specific checks.
+
+# The following build options are enabled by default.
+# Use either --without <opt> in your rpmbuild command or force values
+# to 0 in here to disable them.
+#
+# standard kernel
+%define with_up 1
+# kernel-smp (only valid for ppc 32-bit, sparc64)
+%define with_smp 1
+# kernel-kdump
+%define with_kdump 0
+# kernel-debug
+%define with_debug 1
+# kernel-doc
+%define with_doc 1
+# kernel-headers
+%define with_headers 0
+# dtrace
+%define with_dtrace 0
+# kernel-firmware
+%define with_firmware 0
+# kernel-debuginfo
+%define with_debuginfo %{?_without_debuginfo: 0} %{?!_without_debuginfo: 1}
+# kernel-bootwrapper (for creating zImages from kernel + initrd)
+%define with_bootwrapper %{?_without_bootwrapper: 0} %{?!_without_bootwrapper: 1}
+# Want to build a the vsdo directories installed
+%define with_vdso_install %{?_without_vdso_install: 0} %{?!_without_vdso_install: 1}
+
+# Build the kernel-doc package, but don't fail the build if it botches.
+# Here "true" means "continue" and "false" means "fail the build".
+%if 0%{?released_kernel}
+%define doc_build_fail false
+%else
+%define doc_build_fail true
+%endif
+
+# Control whether we perform a compat. check against published ABI.
+%ifarch sparc64
+%define with_kabichk 0
+%define fancy_debuginfo 0
+%else
+%define with_kabichk 0
+%define fancy_debuginfo 0
+%endif
+
+# Control whether we build the hmac for fips mode.
+%define with_fips %{?_without_fips: 0} %{?!_without_fips: 1}
+
+%if %{fancy_debuginfo}
+BuildRequires: rpm-build >= 4.4.2.1-4
+%define debuginfo_args --strict-build-id
+%endif
+
+# Additional options for user-friendly one-off kernel building:
+#
+# Only build the base kernel (--with baseonly):
+%define with_baseonly %{?_with_baseonly: 1} %{?!_with_baseonly: 0}
+# Only build the smp kernel (--with smponly):
+%define with_smponly %{?_with_smponly: 1} %{?!_with_smponly: 0}
+
+# should we do C=1 builds with sparse
+%define with_sparse %{?_with_sparse: 1} %{?!_with_sparse: 0}
+
+# Set debugbuildsenabled to 1 for production (build separate debug kernels)
+# and 0 for rawhide (all kernels are debug kernels).
+# See also 'make debug' and 'make release'.
+%define debugbuildsenabled 1
+
+# Want to build a vanilla kernel build without any non-upstream patches?
+# (well, almost none, we need nonintconfig for build purposes). Default to 0 (off).
+%define with_vanilla %{?_with_vanilla: 1} %{?!_with_vanilla: 0}
+
+# pkg_release is what we'll fill in for the rpm Release: field
+%if 0%{?released_kernel}
+
+%if 0%{?stable_rc}
+%define stable_rctag .rc%{stable_rc}
+%endif
+%define pkg_release 1%{?dist}uek%{?buildid}
+
+%else
+
+# non-released_kernel
+%if 0%{?rcrev}
+%define rctag .rc%rcrev
+%else
+%define rctag .rc0
+%endif
+%if 0%{?gitrev}
+%define gittag .git%gitrev
+%else
+%define gittag .git0
+%endif
+%define pkg_release 1%{?dist}uek%{?buildid}
+
+%endif
+
+# The kernel tarball/base version
+#%define kversion 4.1
+%define kversion 4.1.%{base_sublevel}
+
+%define make_target bzImage
+
+%define hdrarch %_target_cpu
+%define asmarch %_target_cpu
+
+%if 0%{!?nopatches:1}
+%define nopatches 0
+%endif
+
+%if %{with_vanilla}
+%define nopatches 1
+%endif
+
+%define with_bootwrapper 0
+
+%define pkg_release 1%{?dist}uek%{?buildid}
+
+%define KVERREL %{rpmversion}-%{pkg_release}.%{_target_cpu}
+
+%if !%{debugbuildsenabled}
+%define with_debug 0
+%endif
+
+%if !%{with_debuginfo}
+%define _enable_debug_packages 0
+%endif
+%define debuginfodir /usr/lib/debug
+
+%define with_pae 0
+
+# if requested, only build base kernel
+%if %{with_baseonly}
+%define with_smp 0
+%define with_kdump 0
+%define with_debug 0
+%endif
+
+# if requested, only build smp kernel
+%if %{with_smponly}
+%define with_up 0
+%define with_kdump 0
+%define with_debug 0
+%endif
+
+%define all_x86 i386 i686
+
+%if %{with_vdso_install}
+# These arches install vdso/ directories.
+%define vdso_arches %{all_x86} x86_64 ppc ppc64
+%endif
+
+# Overrides for generic default options
+
+# only ppc need separate smp kernels
+%ifnarch ppc alphaev56
+%define with_smp 0
+%endif
+
+# only build kernel-kdump on ppc64
+# (no relocatable kernel support upstream yet)
+#FIXME: Temporarily disabled to speed up builds.
+#ifnarch ppc64
+%define with_kdump 0
+#endif
+
+# don't do debug builds on anything but i686 and x86_64
+%ifnarch i686 x86_64
+%define with_debug 0
+%endif
+
+# only package docs noarch
+%ifnarch noarch
+%define with_doc 0
+%endif
+
+# no need to build headers again for these arches,
+# they can just use i586 and ppc64 headers
+%ifarch ppc64iseries
+%define with_headers 0
+%endif
+
+# don't build noarch kernels or headers (duh)
+%ifarch noarch
+%define with_up 0
+%define with_headers 0
+%define with_paravirt 0
+%define with_paravirt_debug 0
+%define all_arch_configs kernel-%{version}-*.config
+%define with_firmware %{?_without_firmware: 0} %{?!_without_firmware: 1}
+%endif
+
+# bootwrapper is only on ppc
+%ifnarch ppc ppc64
+%define with_bootwrapper 0
+%endif
+
+# sparse blows up on ppc64 alpha and sparc64
+%ifarch ppc64 ppc alpha sparc64
+%define with_sparse 0
+%endif
+
+# Only x86_64 does dtrace
+%ifarch x86_64
+%define with_dtrace 1
+%endif
+
+# Per-arch tweaks
+
+%ifarch %{all_x86}
+%define asmarch x86
+%define hdrarch i386
+%define all_arch_configs kernel-%{version}-i?86*.config
+%define image_install_path boot
+%define kernel_image arch/x86/boot/bzImage
+%endif
+
+%ifarch x86_64
+%define asmarch x86
+#%define all_arch_configs kernel-%{version}-x86_64*.config
+%define image_install_path boot
+%define kernel_image arch/x86/boot/bzImage
+%endif
+
+%ifarch ppc64
+%define asmarch powerpc
+%define hdrarch powerpc
+%define all_arch_configs kernel-%{version}-ppc64*.config
+%define image_install_path boot
+%define make_target vmlinux
+%define kernel_image vmlinux
+%define kernel_image_elf 1
+%endif
+
+%ifarch s390x
+%define asmarch s390
+%define hdrarch s390
+%define all_arch_configs kernel-%{version}-s390x.config
+%define image_install_path boot
+%define make_target image
+%define kernel_image arch/s390/boot/image
+%endif
+
+%ifarch sparc
+# We only build sparc headers since we dont support sparc32 hardware
+%endif
+
+%ifarch sparc64
+%define asmarch sparc
+%define all_arch_configs kernel-%{version}-sparc64*.config
+%define make_target image
+%define kernel_image arch/sparc/boot/image
+%define image_install_path boot
+%endif
+
+%ifarch ppc
+%define asmarch powerpc
+%define hdrarch powerpc
+%define all_arch_configs kernel-%{version}-ppc{-,.}*config
+%define image_install_path boot
+%define make_target vmlinux
+%define kernel_image vmlinux
+%define kernel_image_elf 1
+%endif
+
+%ifarch ia64
+%define all_arch_configs kernel-%{version}-ia64*.config
+%define image_install_path boot/efi/EFI/redhat
+%define make_target compressed
+%define kernel_image vmlinux.gz
+%endif
+
+%ifarch alpha alphaev56
+%define all_arch_configs kernel-%{version}-alpha*.config
+%define image_install_path boot
+%define make_target vmlinux
+%define kernel_image vmlinux
+%endif
+
+%ifarch %{arm}
+%define all_arch_configs kernel-%{version}-arm*.config
+%define image_install_path boot
+%define hdrarch arm
+%define make_target vmlinux
+%define kernel_image vmlinux
+%endif
+
+%if %{nopatches}
+# XXX temporary until last vdso patches are upstream
+%define vdso_arches ppc ppc64
+%endif
+
+%define oldconfig_target oldnoconfig
+
+# To temporarily exclude an architecture from being built, add it to
+# %nobuildarches. Do _NOT_ use the ExclusiveArch: line, because if we
+# don't build kernel-headers then the new build system will no longer let
+# us use the previous build of that package -- it'll just be completely AWOL.
+# Which is a BadThing(tm).
+
+# We don't build a kernel on i386; we only do kernel-headers there,
+# and we no longer build for 31bit S390. Same for 32bit sparc and arm.
+##%define nobuildarches i386 s390 sparc %{arm}
+%define nobuildarches s390 sparc %{arm}
+
+%ifarch %nobuildarches
+%define with_up 0
+%define with_smp 0
+%define with_pae 0
+%define with_kdump 0
+%define with_debuginfo 0
+%define _enable_debug_packages 0
+%define with_paravirt 0
+%define with_paravirt_debug 0
+%endif
+
+%define with_pae_debug 0
+%if %{with_pae}
+%define with_pae_debug %{with_debug}
+%endif
+
+#
+# Three sets of minimum package version requirements in the form of Conflicts:
+# to versions below the minimum
+#
+
+#
+# First the general kernel 2.6 required versions as per
+# Documentation/Changes
+#
+%define kernel_dot_org_conflicts ppp < 2.4.3-3, isdn4k-utils < 3.2-32, nfs-utils < 1.0.7-12, e2fsprogs < 1.37-4, util-linux < 2.12, jfsutils < 1.1.7-2, reiserfs-utils < 3.6.19-2, xfsprogs < 2.6.13-4, procps < 3.2.5-6.3, oprofile < 0.9.1-2
+
+#
+# Then a series of requirements that are distribution specific, either
+# because we add patches for something, or the older versions have
+# problems with the newer kernel or lack certain things that make
+# integration in the distro harder than needed.
+#
+##%define package_conflicts initscripts < 7.23, udev < 063-6, iptables < 1.3.2-1, ipw2200-firmware < 2.4, iwl4965-firmware < 228.57.2, selinux-policy-targeted < 1.25.3-14, squashfs-tools < 4.0, wireless-tools < 29-3
+%define package_conflicts initscripts < 7.23, udev < 063-6, iptables < 1.3.2-1, ipw2200-firmware < 2.4, selinux-policy-targeted < 1.25.3-14, device-mapper-multipath < 0.4.9-64, dracut < 004-303.0.3
+
+#
+# The ld.so.conf.d file we install uses syntax older ldconfig's don't grok.
+#
+%define kernel_xen_conflicts glibc < 2.3.5-1, xen < 3.0.1
+
+# upto and including kernel 2.4.9 rpms, the 4Gb+ kernel was called kernel-enterprise
+# now that the smp kernel offers this capability, obsolete the old kernel
+%define kernel_smp_obsoletes kernel-enterprise < 2.4.10
+%define kernel_PAE_obsoletes kernel-smp < 2.6.17, kernel-xen <= 2.6.27-0.2.rc0.git6.fc10
+%define kernel_PAE_provides kernel-xen = %{rpmversion}-%{pkg_release}
+
+%ifarch x86_64
+%define kernel_obsoletes kernel-xen <= 2.6.27-0.2.rc0.git6.fc10
+%define kernel_provides kernel%{?variant}-xen = %{rpmversion}-%{pkg_release}
+%endif
+
+# We moved the drm include files into kernel-headers, make sure there's
+# a recent enough libdrm-devel on the system that doesn't have those.
+%define kernel_headers_conflicts libdrm-devel < 2.4.0-0.15
+
+#
+# Packages that need to be installed before the kernel is, because the %post
+# scripts use them.
+#
+%define kernel_prereq fileutils, module-init-tools, initscripts >= 8.11.1-1, kernel-firmware = %{rpmversion}-%{pkg_release}, /sbin/new-kernel-pkg
+%define initrd_prereq dracut-kernel >= 004-242.0.3
+
+#
+# This macro does requires, provides, conflicts, obsoletes for a kernel package.
+# %%kernel_reqprovconf <subpackage>
+# It uses any kernel_<subpackage>_conflicts and kernel_<subpackage>_obsoletes
+# macros defined above.
+#
+%define kernel_reqprovconf \
+Provides: kernel%{?variant} = %{rpmversion}-%{pkg_release}\
+Provides: kernel%{?variant}-%{_target_cpu} = %{rpmversion}-%{pkg_release}%{?1:.%{1}}\
+Provides: kernel%{?variant}-drm = 4.3.0\
+Provides: kernel%{?variant}-drm-nouveau = 12\
+Provides: kernel%{?variant}-modeset = 1\
+Provides: kernel%{?variant}-uname-r = %{KVERREL}%{?1:.%{1}}\
+Provides: oracleasm = 2.0.5\
+%ifnarch sparc64\
+Provides: x86_energy_perf_policy = %{KVERREL}%{?1:.%{1}}\
+%endif\
+Provides: perf = %{KVERREL}%{?1:.%{1}}\
+#Provides: libperf.a = %{KVERREL}%{?1:.%{1}}\
+%ifarch sparc64\
+Provides: kernel = %{rpmversion}-%{pkg_release}\
+%endif\
+Requires(pre): %{kernel_prereq}\
+Requires(pre): %{initrd_prereq}\
+Requires(post): /sbin/new-kernel-pkg\
+Requires(preun): /sbin/new-kernel-pkg\
+Conflicts: %{kernel_dot_org_conflicts}\
+Conflicts: %{package_conflicts}\
+%{expand:%%{?kernel%{?1:_%{1}}_conflicts:Conflicts: %%{kernel%{?1:_%{1}}_conflicts}}}\
+%{expand:%%{?kernel%{?1:_%{1}}_obsoletes:Obsoletes: %%{kernel%{?1:_%{1}}_obsoletes}}}\
+%{expand:%%{?kernel%{?1:_%{1}}_provides:Provides: %%{kernel%{?1:_%{1}}_provides}}}\
+# We can't let RPM do the dependencies automatic because it'll then pick up\
+# a correct but undesirable perl dependency from the module headers which\
+# isn't required for the kernel proper to function\
+AutoReq: no\
+AutoProv: yes\
+%{nil}
+
+%define variant %{?build_variant:%{build_variant}}%{!?build_variant:-uek}
+Name: kernel%{?variant}
+Group: System Environment/Kernel
+License: GPLv2
+URL: http://www.kernel.org/
+Version: %{rpmversion}
+Release: %{pkg_release}
+# DO NOT CHANGE THE 'ExclusiveArch' LINE TO TEMPORARILY EXCLUDE AN ARCHITECTURE BUILD.
+# SET %%nobuildarches (ABOVE) INSTEAD
+ExclusiveArch: noarch %{all_x86} x86_64 paravirt paravirt-debug ppc ppc64 ia64 sparc sparc64 s390x alpha alphaev56 %{arm}
+ExclusiveOS: Linux
+
+%kernel_reqprovconf
+%ifarch x86_64
+Obsoletes: kernel-smp
+%endif
+
+
+#
+# List the packages used during the kernel build
+#
+BuildRequires: module-init-tools, patch >= 2.5.4, bash >= 2.03, sh-utils, tar
+BuildRequires: bzip2, findutils, gzip, m4, perl, make >= 3.78, diffutils, gawk
+BuildRequires: gcc >= 3.4.2, binutils >= 2.12
+BuildRequires: net-tools
+BuildRequires: elfutils-libelf-devel
+BuildRequires: python, python-devel
+BuildRequires: flex >= 2.5.19, bison >= 2.3
+BuildRequires: pkgconfig
+BuildRequires: glib2-devel
+BuildRequires: elfutils-devel
+BuildRequires: bc
+%if %{with_doc}
+BuildRequires: xmlto
+%endif
+%if %{with_sparse}
+BuildRequires: sparse >= 0.4.1
+%endif
+%if %{signmodules}
+BuildRequires: openssl
+BuildRequires: gnupg
+BuildRequires: pesign >= 0.10-4
+%endif
+%if %{with_fips}
+BuildRequires: hmaccalc
+%endif
+%if %{with_dtrace}
+BuildRequires: libdtrace-ctf-devel >= 0.5.0
+%endif
+BuildConflicts: rhbuildsys(DiskFree) < 500Mb
+
+Source0: ftp://ftp.kernel.org/pub/linux/kernel/v2.6/linux-%{kversion}.tar.bz2
+
+%if %{signmodules}
+Source10: x509.genkey
+%endif
+
+Source13: mod-sign.sh
+%define modsign_cmd %{SOURCE13}
+
+Source14: find-provides
+Source16: perf
+Source17: kabitool
+Source18: check-kabi
+Source19: extrakeys.pub
+Source20: x86_energy_perf_policy
+Source21: securebootca.cer
+Source22: secureboot.cer
+
+Source1000: config-x86_64
+Source1001: config-x86_64-debug
+#Source1004: config-sparc
+#Source1005: config-sparc-debug
+
+#Source26: Module.kabi_x86_64
+
+Source201: kabi_whitelist_x86_64
+Source202: ksplice_signing_key.x509
+
+Source300: debuginfo-g1.diff
+Source301: debuginfo-g1-minusr-old-elfutils.diff
+
+# Here should be only the patches up to the upstream canonical Linus tree.
+
+# For a stable release kernel
+%if 0%{?stable_update}
+%if 0%{?stable_base}
+%define stable_patch_00 patch-2.6.%{base_sublevel}.%{stable_base}.bz2
+Patch00: %{stable_patch_00}
+%endif
+%if 0%{?stable_rc}
+%define stable_patch_01 patch-2.6.%{base_sublevel}.%{stable_update}-rc%{stable_rc}.bz2
+Patch01: %{stable_patch_01}
+%endif
+
+# non-released_kernel case
+# These are automagically defined by the rcrev and gitrev values set up
+# near the top of this spec file.
+%else
+%if 0%{?rcrev}
+Patch00: patch-2.6.%{upstream_sublevel}-rc%{rcrev}.bz2
+%if 0%{?gitrev}
+Patch01: patch-2.6.%{upstream_sublevel}-rc%{rcrev}-git%{gitrev}.bz2
+%endif
+%else
+# pre-{base_sublevel+1}-rc1 case
+%if 0%{?gitrev}
+Patch00: patch-2.6.%{base_sublevel}-git%{gitrev}.bz2
+%endif
+%endif
+%endif
+
+%if !%{nopatches}
+# revert patches place holder
+%endif
+
+
+BuildRoot: %{_tmppath}/kernel-%{KVERREL}-root
+
+# Override find_provides to use a script that provides "kernel(symbol) = hash".
+# Pass path of the RPM temp dir containing kabideps to find-provides script.
+%global _use_internal_dependency_generator 0
+%define __find_provides %_sourcedir/find-provides %{_tmppath}
+%define __find_requires /usr/lib/rpm/redhat/find-requires kernel
+
+%description
+The kernel package contains the Linux kernel (vmlinuz), the core of any
+Linux operating system. The kernel handles the basic functions
+of the operating system: memory allocation, process allocation, device
+input and output, etc.
+
+
+%package doc
+Summary: Various documentation bits found in the kernel source
+Group: Documentation
+Obsoletes: kernel-doc
+Provides: kernel-doc
+%description doc
+This package contains documentation files from the kernel
+source. Various bits of information about the Linux kernel and the
+device drivers shipped with it are documented in these files.
+
+You'll want to install this package if you need a reference to the
+options that can be passed to Linux kernel modules at load time.
+
+
+%package headers
+Summary: Header files for the Linux kernel for use by glibc
+Group: Development/System
+Obsoletes: glibc-kernheaders
+Obsoletes: kernel-headers
+Provides: kernel-headers
+Provides: glibc-kernheaders = 3.0-46
+%description headers
+Kernel-headers includes the C header files that specify the interface
+between the Linux kernel and userspace libraries and programs. The
+header files define structures and constants that are needed for
+building most standard programs and are also needed for rebuilding the
+glibc package.
+
+%package firmware
+Summary: Firmware files used by the Linux kernel
+Group: Development/System
+# This is... complicated.
+# Look at the WHENCE file.
+License: GPL+ and GPLv2+ and MIT and Redistributable, no modification permitted
+%if "x%{?variant}" != "x"
+Provides: kernel-firmware = %{rpmversion}-%{pkg_release}
+%endif
+%ifarch sparc64
+Provides: kernel-firmware = %{rpmversion}-%{pkg_release}
+%endif
+%description firmware
+Kernel firmware includes firmware files required for some devices to
+operate.
+
+%package bootwrapper
+Summary: Boot wrapper files for generating combined kernel + initrd images
+Group: Development/System
+Requires: gzip
+%description bootwrapper
+Kernel-bootwrapper contains the wrapper code which makes bootable "zImage"
+files combining both kernel and initial ramdisk.
+
+%package debuginfo-common
+Summary: Kernel source files used by %{name}-debuginfo packages
+Group: Development/Debug
+Provides: %{name}-debuginfo-common-%{_target_cpu} = %{version}-%{release}
+%description debuginfo-common
+This package is required by %{name}-debuginfo subpackages.
+It provides the kernel source files common to all builds.
+
+
+#
+# This macro creates a kernel-<subpackage>-debuginfo package.
+# %%kernel_debuginfo_package <subpackage>
+#
+%define kernel_debuginfo_package() \
+%package %{?1:%{1}-}debuginfo\
+Summary: Debug information for package %{name}%{?1:-%{1}}\
+Group: Development/Debug\
+Requires: %{name}-debuginfo-common-%{_target_cpu} = %{version}-%{release}\
+Provides: %{name}%{?1:-%{1}}-debuginfo-%{_target_cpu} = %{version}-%{release}\
+AutoReqProv: no\
+%description -n %{name}%{?1:-%{1}}-debuginfo\
+This package provides debug information for package %{name}%{?1:-%{1}}.\
+This is required to use SystemTap with %{name}%{?1:-%{1}}-%{KVERREL}.\
+%{expand:%%global debuginfo_args %{?debuginfo_args} -p '/.*/%%{KVERREL}%{?1:\.%{1}}/.*|/.*%%{KVERREL}%{?1:\.%{1}}(\.debug)?' -o debuginfo%{?1}.list}\
+%{nil}
+
+#
+# This macro creates a kernel-<subpackage>-devel package.
+# %%kernel_devel_package <subpackage> <pretty-name>
+#
+%define kernel_devel_package() \
+%package %{?1:%{1}-}devel\
+Summary: Development package for building kernel modules to match the %{?2:%{2} }kernel\
+Group: System Environment/Kernel\
+Provides: kernel%{?variant}%{?1:-%{1}}-devel-%{_target_cpu} = %{version}-%{release}\
+Provides: kernel%{?variant}-xen-devel = %{version}-%{release}%{?1:.%{1}}\
+Provides: kernel%{?variant}-devel-%{_target_cpu} = %{version}-%{release}%{?1:.%{1}}\
+Provides: kernel%{?variant}-devel = %{version}-%{release}%{?1:.%{1}}\
+Provides: kernel%{?variant}-devel-uname-r = %{KVERREL}%{?1:.%{1}}\
+%ifarch sparc64\
+Provides: kernel-devel = %{version}-%{release}%{?1:.%{1}}\
+%endif\
+AutoReqProv: no\
+Requires(pre): /usr/bin/find\
+Requires: elfutils-libelf >= 0.160\
+Requires: elfutils-libs >= 0.160\
+%if %{with_dtrace}\
+Requires: libdtrace-ctf >= 0.5.0\
+%endif\
+%description -n kernel%{?variant}%{?1:-%{1}}-devel\
+This package provides kernel headers and makefiles sufficient to build modules\
+against the %{?2:%{2} }kernel package.\
+%{nil}
+
+#
+# This macro creates a kernel-<subpackage> and its -devel and -debuginfo too.
+# %%define variant_summary The Linux kernel compiled for <configuration>
+# %%kernel_variant_package [-n <pretty-name>] <subpackage>
+#
+%define kernel_variant_package(n:) \
+%package %1\
+Summary: %{variant_summary}\
+Group: System Environment/Kernel\
+%kernel_reqprovconf\
+%{expand:%%kernel_devel_package %1 %{!?-n:%1}%{?-n:%{-n*}}}\
+%{expand:%%kernel_debuginfo_package %1}\
+%{nil}
+
+
+# First the auxiliary packages of the main kernel package.
+%kernel_devel_package
+%kernel_debuginfo_package
+
+
+# Now, each variant package.
+
+%define variant_summary The Linux kernel compiled for SMP machines
+%kernel_variant_package -n SMP smp
+%description smp
+This package includes a SMP version of the Linux kernel. It is
+required only on machines with two or more CPUs as well as machines with
+hyperthreading technology.
+
+Install the kernel-smp package if your machine uses two or more CPUs.
+
+
+%define variant_summary The Linux kernel compiled for PAE capable machines
+%kernel_variant_package PAE
+%description PAE
+This package includes a version of the Linux kernel with support for up to
+64GB of high memory. It requires a CPU with Physical Address Extensions (PAE).
+The non-PAE kernel can only address up to 4GB of memory.
+Install the kernel-PAE package if your machine has more than 4GB of memory.
+
+
+%define variant_summary The Linux kernel compiled with extra debugging enabled for PAE capable machines
+%kernel_variant_package PAEdebug
+Obsoletes: kernel-PAE-debug
+%description PAEdebug
+This package includes a version of the Linux kernel with support for up to
+64GB of high memory. It requires a CPU with Physical Address Extensions (PAE).
+The non-PAE kernel can only address up to 4GB of memory.
+Install the kernel-PAE package if your machine has more than 4GB of memory.
+
+This variant of the kernel has numerous debugging options enabled.
+It should only be installed when trying to gather additional information
+on kernel bugs, as some of these options impact performance noticably.
+
+
+%define variant_summary The Linux kernel compiled with extra debugging enabled
+%kernel_variant_package debug
+%description debug
+The kernel package contains the Linux kernel (vmlinuz), the core of any
+Linux operating system. The kernel handles the basic functions
+of the operating system: memory allocation, process allocation, device
+input and output, etc.
+
+This variant of the kernel has numerous debugging options enabled.
+It should only be installed when trying to gather additional information
+on kernel bugs, as some of these options impact performance noticably.
+
+
+%define variant_summary A minimal Linux kernel compiled for crash dumps
+%kernel_variant_package kdump
+%description kdump
+This package includes a kdump version of the Linux kernel. It is
+required only on machines which will use the kexec-based kernel crash dump
+mechanism.
+
+
+%prep
+# do a few sanity-checks for --with *only builds
+%if %{with_baseonly}
+%if !%{with_up}%{with_pae}
+echo "Cannot build --with baseonly, up build is disabled"
+exit 1
+%endif
+%endif
+
+%if %{with_smponly}
+%if !%{with_smp}
+echo "Cannot build --with smponly, smp build is disabled"
+exit 1
+%endif
+%endif
+
+patch_command='patch -p1 -F1 -s'
+ApplyPatch()
+{
+ local patch=$1
+ shift
+ if [ ! -f $RPM_SOURCE_DIR/$patch ]; then
+ exit 1;
+ fi
+ if ! egrep "^Patch[0-9]+: $patch\$" %{_specdir}/%{name}*.spec ; then
+ [ "${patch:0:10}" != "patch-2.6." ] && echo "Patch $patch not listed in specfile" && exit 1;
+ fi
+ case "$patch" in
+ *.bz2) bunzip2 < "$RPM_SOURCE_DIR/$patch" | $patch_command ${1+"$@"} ;;
+ *.gz) gunzip < "$RPM_SOURCE_DIR/$patch" | $patch_command ${1+"$@"} ;;
+ *) $patch_command ${1+"$@"} < "$RPM_SOURCE_DIR/$patch" ;;
+ esac
+}
+
+test_config_file()
+{
+ TestConfig=$1
+ Arch=`head -n 3 .config |grep -e "Linux.*Kernel" |cut -d '/' -f 2 | cut -d ' ' -f 1`
+ if [ `make ARCH=$Arch listnewconfig 2>/dev/null | grep -c CONFIG` -ne 0 ]; then
+ echo "Following config options are unconfigured"
+ make ARCH=$Arch listnewconfig 2> /dev/null
+ echo "WARNING: Kernel version and config file missmatch"
+ echo "WARNING: This options will be unset by default in config file"
+ fi
+}
+
+# First we unpack the kernel tarball.
+# If this isn't the first make prep, we use links to the existing clean tarball
+# which speeds things up quite a bit.
+
+# Update to latest upstream.
+%if 0%{?released_kernel}
+%define vanillaversion 2.6.%{base_sublevel}
+# non-released_kernel case
+%else
+%if 0%{?rcrev}
+%define vanillaversion 2.6.%{upstream_sublevel}-rc%{rcrev}
+%if 0%{?gitrev}
+%define vanillaversion 2.6.%{upstream_sublevel}-rc%{rcrev}-git%{gitrev}
+%endif
+%else
+# pre-{base_sublevel+1}-rc1 case
+%if 0%{?gitrev}
+%define vanillaversion 2.6.%{base_sublevel}-git%{gitrev}
+%endif
+%endif
+%endif
+
+# We can share hardlinked source trees by putting a list of
+# directory names of the CVS checkouts that we want to share
+# with in .shared-srctree. (Full pathnames are required.)
+[ -f .shared-srctree ] && sharedirs=$(cat .shared-srctree)
+
+if [ ! -d kernel-%{kversion}/vanilla-%{vanillaversion} ]; then
+
+ if [ -d kernel-%{kversion}/vanilla-%{kversion} ]; then
+
+ cd kernel-%{kversion}
+
+ # Any vanilla-* directories other than the base one are stale.
+ for dir in vanilla-*; do
+ [ "$dir" = vanilla-%{kversion} ] || rm -rf $dir &
+ done
+
+ else
+
+ # Ok, first time we do a make prep.
+ rm -f pax_global_header
+ for sharedir in $sharedirs ; do
+ if [[ ! -z $sharedir && -d $sharedir/kernel-%{kversion}/vanilla-%{kversion} ]] ; then
+ break
+ fi
+ done
+ if [[ ! -z $sharedir && -d $sharedir/kernel-%{kversion}/vanilla-%{kversion} ]] ; then
+%setup -q -n kernel-%{kversion} -c -T
+ cp -rl $sharedir/kernel-%{kversion}/vanilla-%{kversion} .
+ else
+%setup -q -n kernel-%{kversion} -c
+ mv linux-%{kversion} vanilla-%{kversion}
+ fi
+
+ fi
+
+%if "%{kversion}" != "%{vanillaversion}"
+
+ for sharedir in $sharedirs ; do
+ if [[ ! -z $sharedir && -d $sharedir/kernel-%{kversion}/vanilla-%{vanillaversion} ]] ; then
+ break
+ fi
+ done
+ if [[ ! -z $sharedir && -d $sharedir/kernel-%{kversion}/vanilla-%{vanillaversion} ]] ; then
+
+ cp -rl $sharedir/kernel-%{kversion}/vanilla-%{vanillaversion} .
+
+ else
+
+ cp -rl vanilla-%{kversion} vanilla-%{vanillaversion}
+ cd vanilla-%{vanillaversion}
+
+# Update vanilla to the latest upstream.
+# (non-released_kernel case only)
+%if 0%{?rcrev}
+ ApplyPatch patch-2.6.%{upstream_sublevel}-rc%{rcrev}.bz2
+%if 0%{?gitrev}
+ ApplyPatch patch-2.6.%{upstream_sublevel}-rc%{rcrev}-git%{gitrev}.bz2
+%endif
+%else
+# pre-{base_sublevel+1}-rc1 case
+%if 0%{?gitrev}
+ ApplyPatch patch-2.6.%{base_sublevel}-git%{gitrev}.bz2
+%endif
+%endif
+
+ cd ..
+
+ fi
+
+%endif
+
+else
+ # We already have a vanilla dir.
+ cd kernel-%{kversion}
+fi
+
+if [ -d linux-%{kversion}.%{_target_cpu} ]; then
+ # Just in case we ctrl-c'd a prep already
+ rm -rf deleteme.%{_target_cpu}
+ # Move away the stale away, and delete in background.
+ mv linux-%{kversion}.%{_target_cpu} deleteme.%{_target_cpu}
+ rm -rf deleteme.%{_target_cpu} &
+fi
+
+cp -rl vanilla-%{vanillaversion} linux-%{kversion}-%{release}
+cd linux-%{kversion}-%{release}
+
+# released_kernel with possible stable updates
+%if 0%{?stable_base}
+ApplyPatch %{stable_patch_00}
+%endif
+%if 0%{?stable_rc}
+ApplyPatch %{stable_patch_01}
+%endif
+
+# Copy the RPM find-debuginfo.sh into the buildroot and patch it
+# to support -g1. (This is a patch of *RPM*, not of the kernel,
+# so it is not governed by nopatches.)
+cp %{_rpmconfigdir}/find-debuginfo.sh %{_builddir}
+patch %{_builddir}/find-debuginfo.sh %{SOURCE300} || \
+ { mv -f %{_builddir}/find-debuginfo.sh.orig %{_builddir}/find-debuginfo.sh && \
+ patch %{_builddir}/find-debuginfo.sh %{SOURCE301}; }
+chmod +x %{_builddir}/find-debuginfo.sh
+
+# only deal with configs if we are going to build for the arch
+# %ifnarch %nobuildarches
+
+mkdir -p configs
+%ifarch x86_64
+ cp %{SOURCE1001} configs/config-debug
+ cp %{SOURCE1000} configs/config
+%endif #ifarch x86_64
+
+%ifarch i686
+ cp %{SOURCE1003} configs/config-debug
+ cp %{SOURCE1002} configs/config
+%endif #ifarch i686
+
+%ifarch sparc64
+ cp %{SOURCE1005} configs/config-debug
+ cp %{SOURCE1004} configs/config
+%endif #ifarch sparc
+
+cp %{SOURCE202} ksplice_signing_key.x509
+
+# get rid of unwanted files resulting from patch fuzz
+find . \( -name "*.orig" -o -name "*~" \) -exec rm -f {} \; >/dev/null
+
+###
+### build
+###
+%build
+
+%if %{with_sparse}
+%define sparse_mflags C=1
+%endif
+
+%if %{fancy_debuginfo}
+# This override tweaks the kernel makefiles so that we run debugedit on an
+# object before embedding it. When we later run find-debuginfo.sh, it will
+# run debugedit again. The edits it does change the build ID bits embedded
+# in the stripped object, but repeating debugedit is a no-op. We do it
+# beforehand to get the proper final build ID bits into the embedded image.
+# This affects the vDSO images in vmlinux, and the vmlinux image in bzImage.
+export AFTER_LINK=\
+'sh -xc "/usr/lib/rpm/debugedit -b $$RPM_BUILD_DIR -d /usr/src/debug \
+ -i $@ > $@.id"'
+%endif
+
+cp_vmlinux()
+{
+ eu-strip --remove-comment -o "$2" "$1"
+}
+
+BuildKernel() {
+ MakeTarget=$1
+ KernelImage=$2
+ Flavour=$3
+ InstallName=${4:-vmlinuz}
+
+ # Pick the right config file for the kernel we're building
+ Config=kernel-%{version}-%{_target_cpu}${Flavour:+-${Flavour}}.config
+ DevelDir=/usr/src/kernels/%{KVERREL}${Flavour:+.${Flavour}}
+
+ # When the bootable image is just the ELF kernel, strip it.
+ # We already copy the unstripped file into the debuginfo package.
+ if [ "$KernelImage" = vmlinux ]; then
+ CopyKernel=cp_vmlinux
+ else
+ CopyKernel=cp
+ fi
+
+ KernelVer=%{version}-%{release}.%{_target_cpu}${Flavour:+.${Flavour}}
+ echo BUILDING A KERNEL FOR ${Flavour} %{_target_cpu}...
+
+ # make sure EXTRAVERSION says what we want it to say
+ perl -p -i -e "s/^EXTRAVERSION.*/EXTRAVERSION = %{?stablerev}-%{release}.%{_target_cpu}${Flavour:+.${Flavour}}/" Makefile
+ #perl -p -i -e "s/^SUBLEVEL.*/SUBLEVEL = %{base_sublevel}/" Makefile
+
+ make -s mrproper
+
+ %if %{signmodules}
+ cp %{SOURCE10} .
+ chmod +x scripts/sign-file
+ %endif
+
+ if [ "$Flavour" == "debug" ]; then
+ cp configs/config-debug .config
+ else
+ cp configs/config .config
+ fi
+
+ Arch=`head -n 3 .config |grep -e "Linux.*Kernel" |cut -d '/' -f 2 | cut -d ' ' -f 1`
+ echo USING ARCH=$Arch
+ make -s ARCH=$Arch %{oldconfig_target} > /dev/null
+ make -s ARCH=$Arch V=1 %{?_smp_mflags} $MakeTarget %{?sparse_mflags}
+ make -s ARCH=$Arch V=1 %{?_smp_mflags} modules %{?sparse_mflags} || exit 1
+
+ # Start installing the results
+%if %{with_debuginfo}
+ mkdir -p $RPM_BUILD_ROOT%{debuginfodir}/boot
+ mkdir -p $RPM_BUILD_ROOT%{debuginfodir}/%{image_install_path}
+%endif
+ mkdir -p $RPM_BUILD_ROOT/%{image_install_path}
+ install -m 644 .config $RPM_BUILD_ROOT/boot/config-$KernelVer
+ install -m 644 System.map $RPM_BUILD_ROOT/boot/System.map-$KernelVer
+ touch $RPM_BUILD_ROOT/boot/initramfs-$KernelVer.img
+ if [ -f arch/$Arch/boot/zImage.stub ]; then
+ cp arch/$Arch/boot/zImage.stub $RPM_BUILD_ROOT/%{image_install_path}/zImage.stub-$KernelVer || :
+ fi
+ %if %{signmodules}
+ %ifarch x86_64
+ # Sign the image if we're using EFI
+ %pesign -s -i $KernelImage -o $KernelImage.signed -a %{SOURCE21} -c %{SOURCE22} -n oraclesecureboot
+ mv $KernelImage.signed $KernelImage
+ %endif
+ %endif
+ $CopyKernel $KernelImage \
+ $RPM_BUILD_ROOT/%{image_install_path}/$InstallName-$KernelVer
+ chmod 755 $RPM_BUILD_ROOT/%{image_install_path}/$InstallName-$KernelVer
+
+%if %{with_fips}
+ # hmac sign the kernel for FIPS
+ echo "Creating hmac file: $RPM_BUILD_ROOT/%{image_install_path}/.vmlinuz-$KernelVer.hmac"
+ ls -l $RPM_BUILD_ROOT/%{image_install_path}/$InstallName-$KernelVer
+ sha512hmac $RPM_BUILD_ROOT/%{image_install_path}/$InstallName-$KernelVer | sed -e "s,$RPM_BUILD_ROOT,," > $RPM_BUILD_ROOT/%{image_install_path}/.vmlinuz-$KernelVer.hmac;
+%endif
+
+ mkdir -p $RPM_BUILD_ROOT/lib/modules/$KernelVer
+ # Override $(mod-fw) because we don't want it to install any firmware
+ # We'll do that ourselves with 'make firmware_install'
+ make -s ARCH=$Arch INSTALL_MOD_PATH=$RPM_BUILD_ROOT modules_install KERNELRELEASE=$KernelVer mod-fw=
+ # check if the modules are being signed
+
+%ifarch %{vdso_arches}
+ make -s ARCH=$Arch INSTALL_MOD_PATH=$RPM_BUILD_ROOT vdso_install KERNELRELEASE=$KernelVer
+ if grep '^CONFIG_XEN=y$' .config >/dev/null; then
+ echo > ldconfig-kernel.conf "\
+# This directive teaches ldconfig to search in nosegneg subdirectories
+# and cache the DSOs there with extra bit 0 set in their hwcap match
+# fields. In Xen guest kernels, the vDSO tells the dynamic linker to
+# search in nosegneg subdirectories and to match this extra hwcap bit
+# in the ld.so.cache file.
+hwcap 0 nosegneg"
+ fi
+ if [ ! -s ldconfig-kernel.conf ]; then
+ echo > ldconfig-kernel.conf "\
+# Placeholder file, no vDSO hwcap entries used in this kernel."
+ fi
+ %{__install} -D -m 444 ldconfig-kernel.conf \
+ $RPM_BUILD_ROOT/etc/ld.so.conf.d/kernel-$KernelVer.conf
+%endif
+%ifarch %{vdso_arches} sparc64
+%ifnarch noarch
+# build tools/perf:
+ if [ -d tools/perf ]; then
+ cd tools/perf
+ make all
+# and install it:
+# mkdir -p $RPM_BUILD_ROOT/usr/bin/$KernelVer/
+ mkdir -p $RPM_BUILD_ROOT/usr/libexec/
+ install -m 755 perf $RPM_BUILD_ROOT/usr/libexec/perf.$KernelVer
+ #install -m 755 libperf.a $RPM_BUILD_ROOT/lib/modules/$KernelVer/bin/%{_target_cpu}/libperf.a
+ cd ../..
+ fi
+%endif
+%ifarch x86_64 %{all_x86}
+# build tools/power/x86/x86_energy_perf_policy:
+ if [ -d tools/power/x86/x86_energy_perf_policy ]; then
+ cd tools/power/x86/x86_energy_perf_policy
+ make
+# and install it:
+ mkdir -p $RPM_BUILD_ROOT/usr/libexec/
+ install -m 755 x86_energy_perf_policy $RPM_BUILD_ROOT/usr/libexec/x86_energy_perf_policy.$KernelVer
+ cd ../../../../
+ fi
+%endif
+%endif
+
+ # And save the headers/makefiles etc for building modules against
+ #
+ # This all looks scary, but the end result is supposed to be:
+ # * all arch relevant include/ files
+ # * all Makefile/Kconfig files
+ # * all script/ files
+
+ rm -f $RPM_BUILD_ROOT/lib/modules/$KernelVer/build
+ rm -f $RPM_BUILD_ROOT/lib/modules/$KernelVer/source
+ mkdir -p $RPM_BUILD_ROOT/lib/modules/$KernelVer/build
+ (cd $RPM_BUILD_ROOT/lib/modules/$KernelVer ; ln -s build source)
+ # dirs for additional modules per module-init-tools, kbuild/modules.txt
+ mkdir -p $RPM_BUILD_ROOT/lib/modules/$KernelVer/extra
+ mkdir -p $RPM_BUILD_ROOT/lib/modules/$KernelVer/updates
+ mkdir -p $RPM_BUILD_ROOT/lib/modules/$KernelVer/weak-updates
+ # first copy everything
+ cp --parents `find -type f -name "Makefile*" -o -name "Kconfig*"` $RPM_BUILD_ROOT/lib/modules/$KernelVer/build
+ cp Module.symvers $RPM_BUILD_ROOT/lib/modules/$KernelVer/build
+ cp System.map $RPM_BUILD_ROOT/lib/modules/$KernelVer/build
+ if [ -s Module.markers ]; then
+ cp Module.markers $RPM_BUILD_ROOT/lib/modules/$KernelVer/build
+ fi
+
+ # create the kABI metadata for use in packaging
+ echo "**** GENERATING kernel ABI metadata ****"
+ gzip -c9 < Module.symvers > $RPM_BUILD_ROOT/boot/symvers-$KernelVer.gz
+ chmod 0755 %_sourcedir/kabitool
+ if [ -e $RPM_SOURCE_DIR/kabi_whitelist_%{_target_cpu}$Flavour ]; then
+ cp $RPM_SOURCE_DIR/kabi_whitelist_%{_target_cpu}$Flavour $RPM_BUILD_ROOT/lib/modules/$KernelVer/build/kabi_whitelist
+ fi
+ rm -f %{_tmppath}/kernel-$KernelVer-kabideps
+ %_sourcedir/kabitool -s Module.symvers -o %{_tmppath}/kernel-$KernelVer-kabideps
+
+%if %{with_kabichk}
+ echo "**** kABI checking is enabled in kernel SPEC file. ****"
+ chmod 0755 $RPM_SOURCE_DIR/check-kabi
+ if [ -e $RPM_SOURCE_DIR/Module.kabi_%{_target_cpu}$Flavour ]; then
+ cp $RPM_SOURCE_DIR/Module.kabi_%{_target_cpu}$Flavour $RPM_BUILD_ROOT/Module.kabi
+ $RPM_SOURCE_DIR/check-kabi -k $RPM_BUILD_ROOT/Module.kabi -s Module.symvers || exit 1
+ rm $RPM_BUILD_ROOT/Module.kabi # for now, don't keep it around.
+ else
+ echo "**** NOTE: Cannot find reference Module.kabi file. ****"
+ fi
+%endif
+
+ # then drop all but the needed Makefiles/Kconfig files
+ rm -rf $RPM_BUILD_ROOT/lib/modules/$KernelVer/build/Documentation
+ rm -rf $RPM_BUILD_ROOT/lib/modules/$KernelVer/build/scripts
+ rm -rf $RPM_BUILD_ROOT/lib/modules/$KernelVer/build/include
+ cp .config $RPM_BUILD_ROOT/lib/modules/$KernelVer/build
+ cp -a scripts $RPM_BUILD_ROOT/lib/modules/$KernelVer/build
+ if [ -d arch/$Arch/scripts ]; then
+ cp -a arch/$Arch/scripts $RPM_BUILD_ROOT/lib/modules/$KernelVer/build/arch/%{_arch} || :
+ fi
+ if [ -f arch/$Arch/*lds ]; then
+ cp -a arch/$Arch/*lds $RPM_BUILD_ROOT/lib/modules/$KernelVer/build/arch/%{_arch}/ || :
+ fi
+ rm -f $RPM_BUILD_ROOT/lib/modules/$KernelVer/build/scripts/*.o
+ rm -f $RPM_BUILD_ROOT/lib/modules/$KernelVer/build/scripts/*/*.o
+%ifarch ppc
+ cp -a --parents arch/powerpc/lib/crtsavres.[So] $RPM_BUILD_ROOT/lib/modules/$KernelVer/build/
+%endif
+ if [ -d arch/%{asmarch}/include ]; then
+ cp -a --parents arch/%{asmarch}/include $RPM_BUILD_ROOT/lib/modules/$KernelVer/build/
+ fi
+ cp -a --parents Kbuild $RPM_BUILD_ROOT/lib/modules/$KernelVer/build/
+ cp -a --parents kernel/bounds.c $RPM_BUILD_ROOT/lib/modules/$KernelVer/build/
+ cp -a --parents arch/%{asmarch}/kernel/asm-offsets.c $RPM_BUILD_ROOT/lib/modules/$KernelVer/build/
+%ifnarch %{sparc}
+ cp -a --parents arch/%{asmarch}/kernel/asm-offsets_64.c $RPM_BUILD_ROOT/lib/modules/$KernelVer/build/
+%endif
+ cp -a --parents security/selinux/include $RPM_BUILD_ROOT/lib/modules/$KernelVer/build/
+
+ mkdir -p $RPM_BUILD_ROOT/lib/modules/$KernelVer/build/include
+ cd include
+ cp -a acpi asm-generic clocksource config crypto drm dt-bindings generated keys kvm linux math-emu media memory misc net pcmcia ras rdma rxrpc scsi soc sound target trace uapi video xen $RPM_BUILD_ROOT/lib/modules/$KernelVer/build/include
+ asmdir=../arch/%{asmarch}/include/asm
+ cp -a $asmdir $RPM_BUILD_ROOT/lib/modules/$KernelVer/build/include/
+ cd $RPM_BUILD_ROOT/lib/modules/$KernelVer/build/include
+ ln -s $asmdir asm
+ cd -
+ # Make sure the Makefile and version.h have a matching timestamp so that
+ # external modules can be built
+ touch -r $RPM_BUILD_ROOT/lib/modules/$KernelVer/build/Makefile $RPM_BUILD_ROOT/lib/modules/$KernelVer/build/include/generated/uapi/linux/version.h
+ # Copy .config to include/config/auto.conf so "make prepare" is unnecessary.
+ cp $RPM_BUILD_ROOT/lib/modules/$KernelVer/build/.config $RPM_BUILD_ROOT/lib/modules/$KernelVer/build/include/config/auto.conf
+ cd ..
+
+%if %{fancy_debuginfo}
+ if test -s vmlinux.id; then
+ cp vmlinux.id $RPM_BUILD_ROOT/lib/modules/$KernelVer/build/vmlinux.id
+ else
+ echo >&2 "*** ERROR *** no vmlinux build ID! ***"
+ exit 1
+ fi
+%endif
+
+ #
+ # save the vmlinux file for kernel debugging into the kernel-debuginfo rpm
+ #
+%if %{with_debuginfo}
+ mkdir -p $RPM_BUILD_ROOT%{debuginfodir}/lib/modules/$KernelVer
+ cp vmlinux $RPM_BUILD_ROOT%{debuginfodir}/lib/modules/$KernelVer
+%endif
+
+ find $RPM_BUILD_ROOT/lib/modules/$KernelVer -name "*.ko" -type f >modnames
+
+ # mark modules executable so that strip-to-file can strip them
+ xargs --no-run-if-empty chmod u+x < modnames
+
+ # Generate a list of modules for block and networking.
+
+ fgrep /drivers/ modnames | xargs --no-run-if-empty nm -upA |
+ sed -n 's,^.*/\([^/]*\.ko\): *U \(.*\)$,\1 \2,p' > drivers.undef
+
+ collect_modules_list()
+ {
+ sed -r -n -e "s/^([^ ]+) \\.?($2)\$/\\1/p" drivers.undef |
+ LC_ALL=C sort -u > $RPM_BUILD_ROOT/lib/modules/$KernelVer/modules.$1
+ }
+
+ collect_modules_list networking \
+ 'register_netdev|ieee80211_register_hw|usbnet_probe|phy_driver_register|register_netdevice'
+ collect_modules_list block \
+ 'ata_scsi_ioctl|scsi_add_host|scsi_add_host_with_dma|blk_init_queue|register_mtd_blktrans|scsi_esp_register|scsi_register_device_handler|blk_queue_physical_block_size'
+ collect_modules_list drm \
+ 'drm_open|drm_init'
+ collect_modules_list modesetting \
+ 'drm_crtc_init'
+
+ # detect missing or incorrect license tags
+ rm -f modinfo
+ while read i
+ do
+ echo -n "${i#$RPM_BUILD_ROOT/lib/modules/$KernelVer/} " >> modinfo
+ /sbin/modinfo -l $i >> modinfo
+ done < modnames
+
+ egrep -v \
+ 'GPL( v2)?$|Dual BSD/GPL$|Dual MPL/GPL$|GPL and additional rights$' \
+ modinfo && exit 1
+
+ rm -f modinfo modnames
+
+%if %{signmodules}
+ # Save off the .tmp_versions/ directory. We'll use it in the
+ # __debug_install_post macro below to sign the right things
+ # Also save the signing keys so we actually sign the modules with the
+ # right key.
+ cp -r .tmp_versions .tmp_versions.sign${Flavour:+.${Flavour}}
+ cp signing_key.priv signing_key.priv.sign${Flavour:+.${Flavour}}
+ cp signing_key.x509 signing_key.x509.sign${Flavour:+.${Flavour}}
+%endif
+
+ # remove files that will be auto generated by depmod at rpm -i time
+ for i in alias ccwmap dep ieee1394map inputmap isapnpmap ofmap pcimap seriomap symbols usbmap
+ do
+ rm -f $RPM_BUILD_ROOT/lib/modules/$KernelVer/modules.$i
+ done
+
+ # Move the devel headers out of the root file system
+ mkdir -p $RPM_BUILD_ROOT/usr/src/kernels
+ mv $RPM_BUILD_ROOT/lib/modules/$KernelVer/build $RPM_BUILD_ROOT/$DevelDir
+ ln -sf $DevelDir $RPM_BUILD_ROOT/lib/modules/$KernelVer/build
+}
+
+###
+# DO it...
+###
+
+# prepare directories
+rm -rf $RPM_BUILD_ROOT
+mkdir -p $RPM_BUILD_ROOT/boot
+
+cd linux-%{version}-%{release}
+
+%if %{with_debug}
+%if %{with_up}
+BuildKernel %make_target %kernel_image debug
+%endif
+%if %{with_pae}
+BuildKernel %make_target %kernel_image PAEdebug
+%endif
+%endif
+
+%if %{with_pae}
+BuildKernel %make_target %kernel_image PAE
+%endif
+
+%if %{with_up}
+BuildKernel %make_target %kernel_image
+%endif
+
+%if %{with_smp}
+BuildKernel %make_target %kernel_image smp
+%endif
+
+%if %{with_kdump}
+BuildKernel vmlinux vmlinux kdump vmlinux
+%endif
+
+%if %{with_doc}
+# Make the HTML and man pages.
+make -j1 htmldocs mandocs || %{doc_build_fail}
+
+# sometimes non-world-readable files sneak into the kernel source tree
+chmod -R a=rX Documentation
+find Documentation -type d | xargs chmod u+w
+%endif
+
+%define dgst $((grep '^CONFIG_MODULE_SIG_SHA512=y$' .config >/dev/null && grep '^CONFIG_MODULE_SIG_HASH=\"sha512\"$' .config >/dev/null && echo sha512) || (grep '^CONFIG_MODULE_SIG_SHA256=y$' .config >/dev/null && grep '^CONFIG_MODULE_SIG_HASH=\"sha256\"$' .config >/dev/null && echo sha256))
+
+%define __modsign_install_post \
+ if [ "%{signmodules}" == "1" ]; then \
+ if [ "%{with_pae}" != "0" ]; then \
+ mv signing_key.priv.sign.PAE signing_key.priv \
+ mv signing_key.x509.sign.PAE signing_key.x509 \
+ %{modsign_cmd} $RPM_BUILD_ROOT/lib/modules/%{KVERREL}.PAE/ %{dgst} \
+ fi \
+ if [ "%{with_debug}" != "0" ]; then \
+ mv signing_key.priv.sign.debug signing_key.priv \
+ mv signing_key.x509.sign.debug signing_key.x509 \
+ %{modsign_cmd} $RPM_BUILD_ROOT/lib/modules/%{KVERREL}.debug/ %{dgst} \
+ fi \
+ if [ "%{with_pae_debug}" != "0" ]; then \
+ mv signing_key.priv.sign.PAEdebug signing_key.priv \
+ mv signing_key.x509.sign.PAEdebug signing_key.x509 \
+ %{modsign_cmd} $RPM_BUILD_ROOT/lib/modules/%{KVERREL}.PAEdebug/ %{dgst} \
+ fi \
+ if [ "%{with_up}" != "0" ]; then \
+ mv signing_key.priv.sign signing_key.priv \
+ mv signing_key.x509.sign signing_key.x509 \
+ %{modsign_cmd} $RPM_BUILD_ROOT/lib/modules/%{KVERREL}/ %{dgst} \
+ fi \
+ fi \
+%{nil}
+
+###
+### Special hacks for debuginfo subpackages.
+###
+
+# This macro is used by %%install, so we must redefine it before that.
+# TEMPORARY HACK: use the debuginfo in the build tree, passing it -g1 so as
+# to strip out only debugging sections.
+%define debug_package %{nil}
+
+%if %{with_debuginfo}
+
+%define __debug_install_post \
+ %{_builddir}/find-debuginfo.sh %{debuginfo_args} -g1 %{_builddir}/%{?buildsubdir}\
+%{nil}
+
+%ifnarch noarch
+%global __debug_package 1
+%files debuginfo-common
+%defattr(-,root,root)
+%dir /usr/src/debug
+/usr/src/debug/kernel-%{version}/linux-%{kversion}-%{release}
+%dir %{debuginfodir}
+%dir %{debuginfodir}/%{image_install_path}
+%dir %{debuginfodir}/lib
+%dir %{debuginfodir}/lib/modules
+%dir %{debuginfodir}/usr/src/kernels
+%endif
+%endif
+
+#
+# Disgusting hack alert! We need to ensure we sign modules *after* all
+# invocations of strip occur, which is in __debug_install_post if
+# find-debuginfo.sh runs, and __os_install_post if not.
+#
+%define __spec_install_post \
+ %{?__debug_package:%{__debug_install_post}}\
+ %{__arch_install_post}\
+ %{__os_install_post}\
+ %{__modsign_install_post}
+
+###
+### install
+###
+
+%install
+cd linux-%{version}-%{release}
+
+%if %{with_doc}
+docdir=$RPM_BUILD_ROOT%{_datadir}/doc/kernel-doc-%{rpmversion}
+man9dir=$RPM_BUILD_ROOT%{_datadir}/man/man9
+
+# copy the source over
+mkdir -p $docdir
+tar -f - --exclude=man --exclude='.*' -c Documentation | tar xf - -C $docdir
+
+# Install man pages for the kernel API.
+mkdir -p $man9dir
+find Documentation/DocBook/man -name '*.9.gz' -print0 |
+xargs -0 --no-run-if-empty %{__install} -m 444 -t $man9dir $m
+ls $man9dir | grep -q '' || > $man9dir/BROKEN
+%endif
+
+%ifnarch noarch
+# perf shell wrapper
+mkdir -p $RPM_BUILD_ROOT/usr/sbin/
+cp $RPM_SOURCE_DIR/perf $RPM_BUILD_ROOT/usr/sbin/perf
+chmod 0755 $RPM_BUILD_ROOT/usr/sbin/perf
+%endif
+
+%ifarch x86_64 %{all_x86}
+# x86_energy_perf_policy shell wrapper
+mkdir -p $RPM_BUILD_ROOT/usr/sbin/
+cp $RPM_SOURCE_DIR/x86_energy_perf_policy $RPM_BUILD_ROOT/usr/sbin/x86_energy_perf_policy
+chmod 0755 $RPM_BUILD_ROOT/usr/sbin/x86_energy_perf_policy
+%endif
+
+
+%if %{with_headers}
+# Install kernel headers
+make ARCH=%{hdrarch} INSTALL_HDR_PATH=$RPM_BUILD_ROOT/usr headers_install
+
+# Do headers_check but don't die if it fails.
+make ARCH=%{hdrarch} INSTALL_HDR_PATH=$RPM_BUILD_ROOT/usr headers_check \
+ > hdrwarnings.txt || :
+if grep -q exist hdrwarnings.txt; then
+ sed s:^$RPM_BUILD_ROOT/usr/include/:: hdrwarnings.txt
+ # Temporarily cause a build failure if header inconsistencies.
+ # exit 1
+fi
+
+find $RPM_BUILD_ROOT/usr/include \
+ \( -name .install -o -name .check -o \
+ -name ..install.cmd -o -name ..check.cmd \) | xargs rm -f
+
+# glibc provides scsi headers for itself, for now
+rm -rf $RPM_BUILD_ROOT/usr/include/scsi
+rm -f $RPM_BUILD_ROOT/usr/include/asm*/atomic.h
+rm -f $RPM_BUILD_ROOT/usr/include/asm*/io.h
+rm -f $RPM_BUILD_ROOT/usr/include/asm*/irq.h
+
+# these are provided by drm-devel
+rm -rf $RPM_BUILD_ROOT/usr/include/drm
+%endif
+
+%if %{with_firmware}
+mkdir -p $RPM_BUILD_ROOT/lib/firmware/%{rpmversion}-%{pkg_release}
+make INSTALL_FW_PATH=$RPM_BUILD_ROOT/lib/firmware/%{rpmversion}-%{pkg_release} firmware_install
+%endif
+
+%if %{with_bootwrapper}
+make DESTDIR=$RPM_BUILD_ROOT bootwrapper_install WRAPPER_OBJDIR=%{_libdir}/kernel-wrapper WRAPPER_DTSDIR=%{_libdir}/kernel-wrapper/dts
+%endif
+
+###
+### clean
+###
+
+%clean
+rm -rf $RPM_BUILD_ROOT
+
+###
+### scripts
+###
+
+#
+# This macro defines a %%post script for a kernel*-devel package.
+# %%kernel_devel_post [<subpackage>]
+#
+%define kernel_devel_post() \
+%{expand:%%post %{?1:%{1}-}devel}\
+if [ -f /etc/sysconfig/kernel ]\
+then\
+ . /etc/sysconfig/kernel || exit $?\
+fi\
+if [ "$HARDLINK" != "no" -a -x /usr/sbin/hardlink ]\
+then\
+ (cd /usr/src/kernels/%{kversion}-%{release}.%{_arch}%{?1:.%{1}} &&\
+ /usr/bin/find . -type f | while read f; do\
+ hardlink -c /usr/src/kernels/*.fc*.*/$f $f\
+ done)\
+fi\
+%{nil}
+
+# This macro defines a %%posttrans script for a kernel package.
+# %%kernel_variant_posttrans [<subpackage>]
+# More text can follow to go at the end of this variant's %%post.
+#
+%define kernel_variant_posttrans() \
+%{expand:%%posttrans %{?1}}\
+/sbin/new-kernel-pkg --package kernel%{?1:-%{1}} --mkinitrd --dracut --depmod --update %{KVERREL}%{?1:.%{1}} || exit $?\
+/sbin/new-kernel-pkg --package kernel%{?1:-%{1}} --rpmposttrans %{KVERREL}%{?1:.%{1}} || exit $?\
+if [ -x /sbin/weak-modules ]\
+then\
+ /sbin/weak-modules --add-kernel %{KVERREL}%{?1:.%{1}} || exit $?\
+fi\
+%{nil}
+
+#
+# This macro defines a %%post script for a kernel package and its devel package.
+# %%kernel_variant_post [-v <subpackage>] [-r <replace>]
+# More text can follow to go at the end of this variant's %%post.
+#
+%define kernel_variant_post(uv:r:) \
+%{expand:%%kernel_devel_post %{!-u:%{?-v*}}}\
+%{expand:%%kernel_variant_posttrans %{!-u:%{?-v*}}}\
+%{expand:%%post %{!-u:%{?-v*}}}\
+%{-r:\
+if [ `uname -i` == "x86_64" -o `uname -i` == "i386" ] &&\
+ [ -f /etc/sysconfig/kernel ]; then\
+ /bin/sed -r -i -e 's/^DEFAULTKERNEL=%{-r*}$/DEFAULTKERNEL=kernel%{?-v:-%{-v*}}/' /etc/sysconfig/kernel || exit $?\
+fi}\
+if grep --silent '^hwcap 0 nosegneg$' /etc/ld.so.conf.d/kernel-*.conf 2> /dev/null; then\
+ sed -i '/^hwcap 0 nosegneg$/ s/0/1/' /etc/ld.so.conf.d/kernel-*.conf\
+fi\
+/sbin/new-kernel-pkg --package kernel%{?-v:-%{-v*}} --install %{KVERREL}%{!-u:%{?-v:.%{-v*}}} || exit $?\
+ln -sf /lib/firmware/%{rpmversion}-%{pkg_release} /lib/firmware/%{rpmversion}-%{pkg_release}.%{_target_cpu} \
+%{nil}
+
+#
+# This macro defines a %%preun script for a kernel package.
+# %%kernel_variant_preun <subpackage>
+#
+%define kernel_variant_preun() \
+%{expand:%%preun %{?1}}\
+/sbin/new-kernel-pkg --rminitrd --rmmoddep --remove %{KVERREL}%{?1:.%{1}} || exit $?\
+if [ -x /sbin/weak-modules ]\
+then\
+ /sbin/weak-modules --remove-kernel %{KVERREL}%{?1:.%{1}} || exit $?\
+ rm -f /lib/firmware/%{rpmversion}-%{pkg_release}.%{_target_cpu} \
+fi\
+%{nil}
+
+#
+# This macro defines a %%pre script for a kernel package.
+# %%kernel_variant_pre <subpackage>
+#
+%define kernel_variant_pre() \
+%{expand:%%pre %{?1}}\
+message="Change references of /dev/hd in /etc/fstab to disk label"\
+if [ -f /etc/fstab ]\
+then\
+awk '($2=="/boot")&&/^\\/dev\\/hd/{print $1}' /etc/fstab | egrep -q "^/dev/hd"\
+bdretval=$?\
+awk '($2=="/")&&/^\\/dev\\/hd/{print $1}' /etc/fstab | egrep -q "^/dev/hd"\
+rdretval=$?\
+awk '($2=="/boot")&&/^LABEL=/{print $1}' /etc/fstab | egrep -q "^LABEL="\
+blretval=$?\
+awk '($2=="/")&&/^LABEL=/{print $1}' /etc/fstab | egrep -q "^LABEL="\
+rlretval=$?\
+if [ $bdretval == 0 ] || [ $rdretval == 0 ]\
+then\
+echo -e $message\
+exit 1\
+elif [ $blretval == 0 ] && [ $rlretval == 0 ]\
+then\
+grep -v "^#" /etc/fstab | egrep -q "/dev/hd"\
+if [ $? == 0 ]\
+then\
+echo -e $message\
+fi\
+elif [ $blretval == 0 ] && [ $rdretval != 0 ]\
+then\
+grep -v "^#" /etc/fstab | egrep -q "/dev/hd"\
+if [ $? == 0 ]\
+then\
+echo -e $message\
+fi\
+elif [ $bdretval != 0 ] && [ $rlretval == 0 ]\
+then\
+grep -v "^#" /etc/fstab | egrep -q "/dev/hd"\
+if [ $? == 0 ]\
+then\
+echo -e $message\
+fi\
+elif [ $bdretval != 0 ] && [ $rdretval != 0 ]\
+then\
+grep -v "^#" /etc/fstab | egrep -q "/dev/hd"\
+if [ $? == 0 ]\
+then\
+echo -e $message\
+fi\
+fi\
+fi\
+%{nil}
+
+%kernel_variant_pre
+%kernel_variant_preun
+%ifarch x86_64
+%kernel_variant_post -u -v uek -r (kernel%{variant}|kernel%{variant}-debug|kernel-ovs)
+%else
+%kernel_variant_post -u -v uek -r (kernel%{variant}|kernel%{variant}-debug|kernel-ovs)
+%endif
+
+%kernel_variant_pre smp
+%kernel_variant_preun smp
+%kernel_variant_post -v smp
+
+%kernel_variant_pre PAE
+%kernel_variant_preun PAE
+%kernel_variant_post -v PAE -r (kernel|kernel-smp|kernel-xen)
+
+%kernel_variant_pre debug
+%kernel_variant_preun debug
+%kernel_variant_post -v debug
+
+%kernel_variant_post -v PAEdebug -r (kernel|kernel-smp|kernel-xen)
+%kernel_variant_preun PAEdebug
+%kernel_variant_pre PAEdebug
+
+if [ -x /sbin/ldconfig ]
+then
+ /sbin/ldconfig -X || exit $?
+fi
+
+###
+### file lists
+###
+
+%if %{with_headers}
+%files headers
+%defattr(-,root,root)
+/usr/include/*
+%endif
+
+%if %{with_firmware}
+%files firmware
+%defattr(-,root,root)
+/lib/firmware/*
+%doc linux-%{version}-%{release}/firmware/WHENCE
+%endif
+
+%if %{with_bootwrapper}
+%files bootwrapper
+%defattr(-,root,root)
+/usr/sbin/*
+%{_libdir}/kernel-wrapper
+%endif
+
+# only some architecture builds need kernel-doc
+%if %{with_doc}
+%files doc
+%defattr(-,root,root)
+%{_datadir}/doc/kernel-doc-%{rpmversion}/Documentation/*
+%dir %{_datadir}/doc/kernel-doc-%{rpmversion}/Documentation
+%dir %{_datadir}/doc/kernel-doc-%{rpmversion}
+%{_datadir}/man/man9/*
+%endif
+
+# This is %{image_install_path} on an arch where that includes ELF files,
+# or empty otherwise.
+%define elf_image_install_path %{?kernel_image_elf:%{image_install_path}}
+
+#
+# This macro defines the %%files sections for a kernel package
+# and its devel and debuginfo packages.
+# %%kernel_variant_files [-k vmlinux] <condition> <subpackage>
+#
+%define kernel_variant_files(k:) \
+%if %{1}\
+%{expand:%%files %{?2}}\
+%defattr(-,root,root)\
+/%{image_install_path}/%{?-k:%{-k*}}%{!?-k:vmlinuz}-%{KVERREL}%{?2:.%{2}}\
+%if %{with_fips} \
+/%{image_install_path}/.vmlinuz-%{KVERREL}%{?2:.%{2}}.hmac \
+%endif \
+/boot/System.map-%{KVERREL}%{?2:.%{2}}\
+/boot/symvers-%{KVERREL}%{?2:.%{2}}.gz\
+/boot/config-%{KVERREL}%{?2:.%{2}}\
+%dir /lib/modules/%{KVERREL}%{?2:.%{2}}\
+/lib/modules/%{KVERREL}%{?2:.%{2}}/kernel\
+/lib/modules/%{KVERREL}%{?2:.%{2}}/build\
+/lib/modules/%{KVERREL}%{?2:.%{2}}/source\
+/lib/modules/%{KVERREL}%{?2:.%{2}}/extra\
+/lib/modules/%{KVERREL}%{?2:.%{2}}/updates\
+/lib/modules/%{KVERREL}%{?2:.%{2}}/weak-updates\
+%ifarch %{vdso_arches}\
+/lib/modules/%{KVERREL}%{?2:.%{2}}/vdso\
+/etc/ld.so.conf.d/kernel-%{KVERREL}%{?2:.%{2}}.conf\
+%endif\
+/lib/modules/%{KVERREL}%{?2:.%{2}}/modules.*\
+/usr/libexec/perf.%{KVERREL}%{?2:.%{2}}\
+/usr/sbin/perf\
+%ifnarch sparc64\
+/usr/libexec/x86_energy_perf_policy.%{KVERREL}%{?2:.%{2}}\
+/usr/sbin/x86_energy_perf_policy\
+%endif\
+%ghost /boot/initramfs-%{KVERREL}%{?2:.%{2}}.img\
+%{expand:%%files %{?2:%{2}-}devel}\
+%defattr(-,root,root)\
+%dir /usr/src/kernels\
+%verify(not mtime) /usr/src/kernels/%{KVERREL}%{?2:.%{2}}\
+/usr/src/kernels/%{KVERREL}%{?2:.%{2}}\
+%if %{with_debuginfo}\
+%ifnarch noarch\
+%if %{fancy_debuginfo}\
+%{expand:%%files -f debuginfo%{?2}.list %{?2:%{2}-}debuginfo}\
+%else\
+%{expand:%%files %{?2:%{2}-}debuginfo}\
+%endif\
+%defattr(-,root,root)\
+%if !%{fancy_debuginfo}\
+%if "%{elf_image_install_path}" != ""\
+%{debuginfodir}/%{elf_image_install_path}/*-%{KVERREL}%{?2:.%{2}}.debug\
+%endif\
+%{debuginfodir}/lib/modules/%{KVERREL}%{?2:.%{2}}\
+%{debuginfodir}/usr/src/kernels/%{KVERREL}%{?2:.%{2}}\
+# % {debuginfodir}/usr/bin/%{KVERREL}%{?2:.%{2}}\
+%endif\
+%endif\
+%endif\
+%endif\
+%{nil}
+
+
+%kernel_variant_files %{with_up}
+%kernel_variant_files %{with_smp} smp
+%if %{with_up}
+%kernel_variant_files %{with_debug} debug
+%endif
+%kernel_variant_files %{with_pae} PAE
+%kernel_variant_files %{with_pae_debug} PAEdebug
+%kernel_variant_files -k vmlinux %{with_kdump} kdump
+
+%changelog
--- /dev/null
+#! /bin/bash
+
+# The modules_sign target checks for corresponding .o files for every .ko that
+# is signed. This doesn't work for package builds which re-use the same build
+# directory for every flavour, and the .config may change between flavours.
+# So instead of using this script to just sign lib/modules/$KernelVer/extra,
+# sign all .ko in the buildroot.
+
+# This essentially duplicates the 'modules_sign' Kbuild target and runs the
+# same commands for those modules.
+
+moddir=$1
+dgst=$2
+
+modules=`find $moddir -name *.ko`
+
+MODSECKEY="./signing_key.priv"
+MODPUBKEY="./signing_key.x509"
+
+for mod in $modules
+do
+ dir=`dirname $mod`
+ file=`basename $mod`
+
+ ./scripts/sign-file ${dgst} ${MODSECKEY} ${MODPUBKEY} ${dir}/${file} \
+ ${dir}/${file}.signed
+ mv ${dir}/${file}.signed ${dir}/${file}
+ rm -f ${dir}/${file}.{sig,dig}
+done
--- /dev/null
+#!/bin/sh
+
+# In pathological situations, this will print some error about uname.
+kverrel="`uname -r`" || exit
+
+exec "/usr/libexec/perf.$kverrel" ${1+"$@"}
+rc=$?
+
+# We're still here, so the exec failed.
+echo >&2 "Sorry, your kernel ($kverrel) doesn't support perf."
+
+exit $rc
--- /dev/null
+-----BEGIN CERTIFICATE-----
+MIIDmzCCAoMCAQEwDQYJKoZIhvcNAQELBQAwgY4xCzAJBgNVBAYTAlVTMRMwEQYD
+VQQIDApDYWxpZm9ybmlhMRcwFQYDVQQHDA5SZWR3b29kIFNob3JlczEbMBkGA1UE
+CgwST3JhY2xlIENvcnBvcmF0aW9uMRUwEwYDVQQLDAxPcmFjbGUgTGludXgxHTAb
+BgNVBAMMFE9yYWNsZSBMaW51eCBUZXN0IENBMB4XDTE0MDcwOTIzNTAzN1oXDTE2
+MDcwODIzNTAzN1owgZcxCzAJBgNVBAYTAlVTMRMwEQYDVQQIDApDYWxpZm9ybmlh
+MRcwFQYDVQQHDA5SZWR3b29kIFNob3JlczEbMBkGA1UECgwST3JhY2xlIENvcnBv
+cmF0aW9uMRUwEwYDVQQLDAxPcmFjbGUgTGludXgxJjAkBgNVBAMMHU9yYWNsZSBM
+aW51eCBUZXN0IENlcnRpZmljYXRlMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIB
+CgKCAQEAt6ApcdbkIjGOynChsPJ1R0X56mse4Nrx3x/UBCYLMUFzy3xoAghPpg9P
+oy1L7pTndq/AG5/4AfPc9PMpd/5fsTHVQpEd7KPWhVKqxDqEl3Hwqq7o3eA0jm08
+EzY+4XPDR1w95WLmyUdg66dfQopZXiOfqtEaMM1cm5uPJj+aSOlCi34aBMqetQvE
++3gALEeQWhL4vDpQV800dC9oHj/mDBtrAfZCJRriAla2nT60B+EnCXJJkWqvQzFK
+7C7hSCQAC0enJY9IrIBKFFzYl4Wnh1Ib+E6v4XUzlP6Sbo6YpZv+ZlE/qB68qAV8
+lI1Ws4sXFxRwDmGb6L+4kcTTeTC9CwIDAQABMA0GCSqGSIb3DQEBCwUAA4IBAQAv
+gz/A3KCTMrXc7iWyxeqOmC+Y2O1uW3vVqQTfRjg7QoeTr3esz3dnQmPGEmRjNNhs
+G5+ayM2i9hXzdZiOPauN/TChmzebAkIp7L+6OQ5OFSaI/VRquo9REg71C+qxBgaq
+9HrbRcTSmqnutl4yviUtxkSn8M/9QurwUM+G8AMXbTcRzLEKIzgh4dO1JgnumlPj
+xq1yRbltfgqV7jRIsp0Od05A0SkNjBqgiCyCXx+4k01J0ULYDCBubkO6wPO7pLMZ
+i4tFe4F6rZYTt7c3YO4cep+03BGHf/DhtWLaSNninXzMmXzzYkDirgJo+yKZ4p/S
+CMkkkj4XPvp+rpVBSVwM
+-----END CERTIFICATE-----
--- /dev/null
+-----BEGIN CERTIFICATE-----
+MIID8TCCAtmgAwIBAgIJAPX+4S5CjpxUMA0GCSqGSIb3DQEBCwUAMIGOMQswCQYD
+VQQGEwJVUzETMBEGA1UECAwKQ2FsaWZvcm5pYTEXMBUGA1UEBwwOUmVkd29vZCBT
+aG9yZXMxGzAZBgNVBAoMEk9yYWNsZSBDb3Jwb3JhdGlvbjEVMBMGA1UECwwMT3Jh
+Y2xlIExpbnV4MR0wGwYDVQQDDBRPcmFjbGUgTGludXggVGVzdCBDQTAeFw0xNDA3
+MDkyMzQ4MDRaFw0xNjA3MDgyMzQ4MDRaMIGOMQswCQYDVQQGEwJVUzETMBEGA1UE
+CAwKQ2FsaWZvcm5pYTEXMBUGA1UEBwwOUmVkd29vZCBTaG9yZXMxGzAZBgNVBAoM
+Ek9yYWNsZSBDb3Jwb3JhdGlvbjEVMBMGA1UECwwMT3JhY2xlIExpbnV4MR0wGwYD
+VQQDDBRPcmFjbGUgTGludXggVGVzdCBDQTCCASIwDQYJKoZIhvcNAQEBBQADggEP
+ADCCAQoCggEBANRDM0CmbyKR2t6/L237SDk0b9RXaYnm0ISXYTWFLwsAC7ho9p9s
+mcgwLbqRSwSIgeabtnR7dV/cuttF+zX3p8DsL8cRqvtyQfEx0RIKAKdoSPmegCAe
+dD20guafNbAyJyLL82aVbwCcO03HrRdaNYinpBpJ6YQqK2RuZDB9+RJbn9fOl/V6
+3vyjfo6zLtvEIJKFqFpbgfOkSMW/WSVQiBsPSFdGYMzWgL1ve2mNVMJC7cFGYGi1
+QQIEjWxhU5qJSt4MgN4Z6FKvbXuNuA0V0Zf98vVtvnDYMzgdZPAh2dIpSmOKPMRK
+HhL1+H+bGN8D994B6Hr+qSbRWcMPQCEBjrcCAwEAAaNQME4wHQYDVR0OBBYEFOdy
+f8p/1DSV07XM2TXRqO4eK7B3MB8GA1UdIwQYMBaAFOdyf8p/1DSV07XM2TXRqO4e
+K7B3MAwGA1UdEwQFMAMBAf8wDQYJKoZIhvcNAQELBQADggEBAEcwzk/jmsbM6EEe
+eqKwhEejAqUvJlLlU/jHBaI3BGs1KijWXYvSTlf9/LG1BjaIvPRXHILHUmV5USvA
+wOgtwx02/6Uvw1BFxbPQrpT4EtEy5Mv0HCV8Bld8cFuT2YeTBNyzlkKL3eAoU8Ub
+l8j9Z4Xy0QLWMc/6iWueKmhZcJJ84jO3MYIh8k7bMys3rKllPe7M/H0hZxNpHgCM
+Xd6x64psNzDVa2awrQnnF2jIA55b6h0NwoK2YwK7z0gwG0BCgJvU0OE/ypTbhcdk
+4uH6HUYIYmUqaziN36MY7gp9M7JG+/Xh1WJd0btzDLdSvz2j4oD4sSQHaRwoZ0Bg
+A2IE8vw=
+-----END CERTIFICATE-----
--- /dev/null
+[ req ]
+default_bits = 4096
+distinguished_name = req_distinguished_name
+prompt = no
+x509_extensions = myexts
+
+[ req_distinguished_name ]
+O = Oracle America, Inc.,c=US
+CN = Oracle CA Server
+emailAddress = support@oracle.com
+
+[ myexts ]
+basicConstraints=critical,CA:FALSE
+keyUsage=digitalSignature
+subjectKeyIdentifier=hash
+authorityKeyIdentifier=keyid
--- /dev/null
+#!/bin/sh
+
+# In pathological situations, this will print some error about uname.
+kverrel="`uname -r`" || exit
+
+exec "/usr/libexec/x86_energy_perf_policy.$kverrel" ${1+"$@"}
+rc=$?
+
+# We're still here, so the exec failed.
+echo >&2 "Sorry, your kernel ($kverrel) doesn't support x86_energy_perf_policy."
+
+exit $rc