]> www.infradead.org Git - users/jedix/linux-maple.git/commitdiff
uek-rpm: build: Add rpm build environment for ol6/ol7
authorSantosh Shilimkar <santosh.shilimkar@oracle.com>
Wed, 3 Dec 2014 22:44:26 +0000 (14:44 -0800)
committerSantosh Shilimkar <santosh.shilimkar@oracle.com>
Mon, 29 Jun 2015 15:35:45 +0000 (08:35 -0700)
Mostly imported from UEK3 uek-rpm environment with UEK4 related updates
and bug fixes.

Orabug: 20892775
Orabug: 21102340
Orabug: 20687425

Signed-off-by: Santosh Shilimkar <santosh.shilimkar@oracle.com>
33 files changed:
uek-rpm/ol6/check-kabi [new file with mode: 0755]
uek-rpm/ol6/debuginfo-g1.diff [new file with mode: 0644]
uek-rpm/ol6/extrakeys.pub [new file with mode: 0644]
uek-rpm/ol6/find-provides [new file with mode: 0755]
uek-rpm/ol6/genkey [new file with mode: 0644]
uek-rpm/ol6/kabi_whitelist_x86_64 [new file with mode: 0644]
uek-rpm/ol6/kabitool [new file with mode: 0755]
uek-rpm/ol6/kernel-uek.spec [new file with mode: 0644]
uek-rpm/ol6/ksplice_signing_key.x509 [new file with mode: 0644]
uek-rpm/ol6/mod-sign.sh [new file with mode: 0755]
uek-rpm/ol6/perf [new file with mode: 0644]
uek-rpm/ol6/update-el [new file with mode: 0644]
uek-rpm/ol6/update-el-ol6 [new file with mode: 0644]
uek-rpm/ol6/x509.genkey [new file with mode: 0644]
uek-rpm/ol6/x86_energy_perf_policy [new file with mode: 0644]
uek-rpm/ol7/check-kabi [new file with mode: 0755]
uek-rpm/ol7/debuginfo-g1-minusr-old-elfutils.diff [new file with mode: 0644]
uek-rpm/ol7/debuginfo-g1.diff [new file with mode: 0644]
uek-rpm/ol7/extrakeys.pub [new file with mode: 0644]
uek-rpm/ol7/find-provides [new file with mode: 0755]
uek-rpm/ol7/genkey [new file with mode: 0644]
uek-rpm/ol7/kabi_whitelist_x86_64 [new file with mode: 0644]
uek-rpm/ol7/kabitool [new file with mode: 0755]
uek-rpm/ol7/kernel-uek.spec [new file with mode: 0644]
uek-rpm/ol7/ksplice_signing_key.x509 [new file with mode: 0644]
uek-rpm/ol7/mod-sign.sh [new file with mode: 0755]
uek-rpm/ol7/perf [new file with mode: 0644]
uek-rpm/ol7/secureboot.cer [new file with mode: 0644]
uek-rpm/ol7/securebootca.cer [new file with mode: 0644]
uek-rpm/ol7/update-el [new file with mode: 0644]
uek-rpm/ol7/update-el-ol7 [new file with mode: 0644]
uek-rpm/ol7/x509.genkey [new file with mode: 0644]
uek-rpm/ol7/x86_energy_perf_policy [new file with mode: 0644]

diff --git a/uek-rpm/ol6/check-kabi b/uek-rpm/ol6/check-kabi
new file mode 100755 (executable)
index 0000000..e2fbb2b
--- /dev/null
@@ -0,0 +1,141 @@
+#!/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)
diff --git a/uek-rpm/ol6/debuginfo-g1.diff b/uek-rpm/ol6/debuginfo-g1.diff
new file mode 100644 (file)
index 0000000..619814d
--- /dev/null
@@ -0,0 +1,42 @@
+--- 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
+ }
diff --git a/uek-rpm/ol6/extrakeys.pub b/uek-rpm/ol6/extrakeys.pub
new file mode 100644 (file)
index 0000000..c1be439
Binary files /dev/null and b/uek-rpm/ol6/extrakeys.pub differ
diff --git a/uek-rpm/ol6/find-provides b/uek-rpm/ol6/find-provides
new file mode 100755 (executable)
index 0000000..e98f817
--- /dev/null
@@ -0,0 +1,44 @@
+#!/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)
diff --git a/uek-rpm/ol6/genkey b/uek-rpm/ol6/genkey
new file mode 100644 (file)
index 0000000..a511740
--- /dev/null
@@ -0,0 +1,7 @@
+%pubring kernel.pub
+%secring kernel.sec
+Key-Type: DSA
+Key-Length: 1024
+Name-Real: Oracle America, Inc.
+Name-Comment: Kernel Module GPG key
+%commit
diff --git a/uek-rpm/ol6/kabi_whitelist_x86_64 b/uek-rpm/ol6/kabi_whitelist_x86_64
new file mode 100644 (file)
index 0000000..c0f64c6
--- /dev/null
@@ -0,0 +1,1498 @@
+[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
diff --git a/uek-rpm/ol6/kabitool b/uek-rpm/ol6/kabitool
new file mode 100755 (executable)
index 0000000..69051ff
--- /dev/null
@@ -0,0 +1,103 @@
+#!/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)
diff --git a/uek-rpm/ol6/kernel-uek.spec b/uek-rpm/ol6/kernel-uek.spec
new file mode 100644 (file)
index 0000000..22b1c54
--- /dev/null
@@ -0,0 +1,1766 @@
+%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
diff --git a/uek-rpm/ol6/ksplice_signing_key.x509 b/uek-rpm/ol6/ksplice_signing_key.x509
new file mode 100644 (file)
index 0000000..ed0c391
Binary files /dev/null and b/uek-rpm/ol6/ksplice_signing_key.x509 differ
diff --git a/uek-rpm/ol6/mod-sign.sh b/uek-rpm/ol6/mod-sign.sh
new file mode 100755 (executable)
index 0000000..f8e120f
--- /dev/null
@@ -0,0 +1,29 @@
+#! /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
diff --git a/uek-rpm/ol6/perf b/uek-rpm/ol6/perf
new file mode 100644 (file)
index 0000000..ea89806
--- /dev/null
@@ -0,0 +1,12 @@
+#!/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
diff --git a/uek-rpm/ol6/update-el b/uek-rpm/ol6/update-el
new file mode 100644 (file)
index 0000000..4074fe2
--- /dev/null
@@ -0,0 +1 @@
+6.6
diff --git a/uek-rpm/ol6/update-el-ol6 b/uek-rpm/ol6/update-el-ol6
new file mode 100644 (file)
index 0000000..c596943
--- /dev/null
@@ -0,0 +1 @@
+6.4
diff --git a/uek-rpm/ol6/x509.genkey b/uek-rpm/ol6/x509.genkey
new file mode 100644 (file)
index 0000000..fbcf6f3
--- /dev/null
@@ -0,0 +1,16 @@
+[ 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
diff --git a/uek-rpm/ol6/x86_energy_perf_policy b/uek-rpm/ol6/x86_energy_perf_policy
new file mode 100644 (file)
index 0000000..9cd3c4c
--- /dev/null
@@ -0,0 +1,12 @@
+#!/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
diff --git a/uek-rpm/ol7/check-kabi b/uek-rpm/ol7/check-kabi
new file mode 100755 (executable)
index 0000000..e2fbb2b
--- /dev/null
@@ -0,0 +1,141 @@
+#!/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)
diff --git a/uek-rpm/ol7/debuginfo-g1-minusr-old-elfutils.diff b/uek-rpm/ol7/debuginfo-g1-minusr-old-elfutils.diff
new file mode 100644 (file)
index 0000000..3126081
--- /dev/null
@@ -0,0 +1,58 @@
+--- 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
+ }
diff --git a/uek-rpm/ol7/debuginfo-g1.diff b/uek-rpm/ol7/debuginfo-g1.diff
new file mode 100644 (file)
index 0000000..942bc53
--- /dev/null
@@ -0,0 +1,44 @@
+--- 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
+ }
diff --git a/uek-rpm/ol7/extrakeys.pub b/uek-rpm/ol7/extrakeys.pub
new file mode 100644 (file)
index 0000000..c1be439
Binary files /dev/null and b/uek-rpm/ol7/extrakeys.pub differ
diff --git a/uek-rpm/ol7/find-provides b/uek-rpm/ol7/find-provides
new file mode 100755 (executable)
index 0000000..e98f817
--- /dev/null
@@ -0,0 +1,44 @@
+#!/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)
diff --git a/uek-rpm/ol7/genkey b/uek-rpm/ol7/genkey
new file mode 100644 (file)
index 0000000..a511740
--- /dev/null
@@ -0,0 +1,7 @@
+%pubring kernel.pub
+%secring kernel.sec
+Key-Type: DSA
+Key-Length: 1024
+Name-Real: Oracle America, Inc.
+Name-Comment: Kernel Module GPG key
+%commit
diff --git a/uek-rpm/ol7/kabi_whitelist_x86_64 b/uek-rpm/ol7/kabi_whitelist_x86_64
new file mode 100644 (file)
index 0000000..70f4ee7
--- /dev/null
@@ -0,0 +1,1497 @@
+[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
diff --git a/uek-rpm/ol7/kabitool b/uek-rpm/ol7/kabitool
new file mode 100755 (executable)
index 0000000..69051ff
--- /dev/null
@@ -0,0 +1,103 @@
+#!/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)
diff --git a/uek-rpm/ol7/kernel-uek.spec b/uek-rpm/ol7/kernel-uek.spec
new file mode 100644 (file)
index 0000000..00a3bab
--- /dev/null
@@ -0,0 +1,1753 @@
+%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
diff --git a/uek-rpm/ol7/ksplice_signing_key.x509 b/uek-rpm/ol7/ksplice_signing_key.x509
new file mode 100644 (file)
index 0000000..ed0c391
Binary files /dev/null and b/uek-rpm/ol7/ksplice_signing_key.x509 differ
diff --git a/uek-rpm/ol7/mod-sign.sh b/uek-rpm/ol7/mod-sign.sh
new file mode 100755 (executable)
index 0000000..f8e120f
--- /dev/null
@@ -0,0 +1,29 @@
+#! /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
diff --git a/uek-rpm/ol7/perf b/uek-rpm/ol7/perf
new file mode 100644 (file)
index 0000000..ea89806
--- /dev/null
@@ -0,0 +1,12 @@
+#!/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
diff --git a/uek-rpm/ol7/secureboot.cer b/uek-rpm/ol7/secureboot.cer
new file mode 100644 (file)
index 0000000..07741a9
--- /dev/null
@@ -0,0 +1,22 @@
+-----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-----
diff --git a/uek-rpm/ol7/securebootca.cer b/uek-rpm/ol7/securebootca.cer
new file mode 100644 (file)
index 0000000..50afd44
--- /dev/null
@@ -0,0 +1,24 @@
+-----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-----
diff --git a/uek-rpm/ol7/update-el b/uek-rpm/ol7/update-el
new file mode 100644 (file)
index 0000000..0f0fefa
--- /dev/null
@@ -0,0 +1 @@
+7.1
diff --git a/uek-rpm/ol7/update-el-ol7 b/uek-rpm/ol7/update-el-ol7
new file mode 100644 (file)
index 0000000..4fedf1d
--- /dev/null
@@ -0,0 +1 @@
+7.0
diff --git a/uek-rpm/ol7/x509.genkey b/uek-rpm/ol7/x509.genkey
new file mode 100644 (file)
index 0000000..fbcf6f3
--- /dev/null
@@ -0,0 +1,16 @@
+[ 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
diff --git a/uek-rpm/ol7/x86_energy_perf_policy b/uek-rpm/ol7/x86_energy_perf_policy
new file mode 100644 (file)
index 0000000..9cd3c4c
--- /dev/null
@@ -0,0 +1,12 @@
+#!/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