summaryrefslogtreecommitdiffstats
path: root/freed-ora/current/master
diff options
context:
space:
mode:
authorAlexandre Oliva <lxoliva@fsfla.org>2012-12-07 02:48:02 +0000
committerAlexandre Oliva <lxoliva@fsfla.org>2012-12-07 02:48:02 +0000
commit92a54cec6ba672d31e88ea36886f769566cd02d8 (patch)
tree8aa9920ae9c77f869dbc664364a3d962fe81ae37 /freed-ora/current/master
parent6b81e6e2f6ea5ad4cbfadb9e1212143bc63ce7ba (diff)
downloadlinux-libre-raptor-92a54cec6ba672d31e88ea36886f769566cd02d8.tar.gz
linux-libre-raptor-92a54cec6ba672d31e88ea36886f769566cd02d8.zip
3.7.0-0.rc8.git0.1.fc19.gnu
Diffstat (limited to 'freed-ora/current/master')
-rw-r--r--freed-ora/current/master/config-generic8
-rw-r--r--freed-ora/current/master/config-nodebug112
-rw-r--r--freed-ora/current/master/config-x86-generic2
-rw-r--r--freed-ora/current/master/i82975x-edac-fix.patch855
-rw-r--r--freed-ora/current/master/kernel.spec26
-rw-r--r--freed-ora/current/master/patch-3.6-gnu-3.7-rc7-gnu.xz.sign7
-rw-r--r--freed-ora/current/master/patch-3.6-gnu-3.7-rc8-gnu.xz.sign7
-rw-r--r--freed-ora/current/master/perf-uapi-fixes2.patch1132
-rw-r--r--freed-ora/current/master/sources3
9 files changed, 83 insertions, 2069 deletions
diff --git a/freed-ora/current/master/config-generic b/freed-ora/current/master/config-generic
index f079eb084..a60e6094d 100644
--- a/freed-ora/current/master/config-generic
+++ b/freed-ora/current/master/config-generic
@@ -1513,13 +1513,13 @@ CONFIG_B43_SDIO=y
CONFIG_B43_BCMA=y
# CONFIG_B43_BCMA_EXTRA is not set
CONFIG_B43_BCMA_PIO=y
-CONFIG_B43_DEBUG=y
+# CONFIG_B43_DEBUG is not set
CONFIG_B43_PHY_LP=y
CONFIG_B43_PHY_N=y
CONFIG_B43_PHY_HT=y
# CONFIG_B43_FORCE_PIO is not set
CONFIG_B43LEGACY=m
-CONFIG_B43LEGACY_DEBUG=y
+# CONFIG_B43LEGACY_DEBUG is not set
CONFIG_B43LEGACY_DMA=y
CONFIG_B43LEGACY_PIO=y
CONFIG_B43LEGACY_DMA_AND_PIO_MODE=y
@@ -3112,7 +3112,7 @@ CONFIG_USB_STORAGE_REALTEK=m
CONFIG_REALTEK_AUTOPM=y
CONFIG_USB_STORAGE_ENE_UB6250=m
# CONFIG_USB_LIBUSUAL is not set
-CONFIG_USB_UAS=m
+# CONFIG_USB_UAS is not set
#
@@ -4078,7 +4078,7 @@ CONFIG_IBMASR=m
CONFIG_PM_DEBUG=y
CONFIG_PM_TRACE=y
CONFIG_PM_TRACE_RTC=y
-CONFIG_PM_TEST_SUSPEND=y
+# CONFIG_PM_TEST_SUSPEND is not set
CONFIG_PM_RUNTIME=y
# CONFIG_PM_OPP is not set
# CONFIG_PM_AUTOSLEEP is not set
diff --git a/freed-ora/current/master/config-nodebug b/freed-ora/current/master/config-nodebug
index b52b784e9..c471b853e 100644
--- a/freed-ora/current/master/config-nodebug
+++ b/freed-ora/current/master/config-nodebug
@@ -2,111 +2,111 @@ CONFIG_SND_VERBOSE_PRINTK=y
CONFIG_SND_DEBUG=y
CONFIG_SND_PCM_XRUN_DEBUG=y
-CONFIG_DEBUG_ATOMIC_SLEEP=y
-
-CONFIG_DEBUG_MUTEXES=y
-CONFIG_DEBUG_RT_MUTEXES=y
-CONFIG_DEBUG_LOCK_ALLOC=y
-CONFIG_PROVE_LOCKING=y
-CONFIG_DEBUG_SPINLOCK=y
-CONFIG_PROVE_RCU=y
+# CONFIG_DEBUG_ATOMIC_SLEEP is not set
+
+# CONFIG_DEBUG_MUTEXES is not set
+# CONFIG_DEBUG_RT_MUTEXES is not set
+# CONFIG_DEBUG_LOCK_ALLOC is not set
+# CONFIG_PROVE_LOCKING is not set
+# CONFIG_DEBUG_SPINLOCK is not set
+# CONFIG_PROVE_RCU is not set
# CONFIG_PROVE_RCU_REPEATEDLY is not set
-CONFIG_DEBUG_PER_CPU_MAPS=y
+# CONFIG_DEBUG_PER_CPU_MAPS is not set
CONFIG_CPUMASK_OFFSTACK=y
-CONFIG_CPU_NOTIFIER_ERROR_INJECT=m
+# CONFIG_CPU_NOTIFIER_ERROR_INJECT is not set
-CONFIG_FAULT_INJECTION=y
-CONFIG_FAILSLAB=y
-CONFIG_FAIL_PAGE_ALLOC=y
-CONFIG_FAIL_MAKE_REQUEST=y
-CONFIG_FAULT_INJECTION_DEBUG_FS=y
-CONFIG_FAULT_INJECTION_STACKTRACE_FILTER=y
-CONFIG_FAIL_IO_TIMEOUT=y
-CONFIG_FAIL_MMC_REQUEST=y
+# CONFIG_FAULT_INJECTION is not set
+# CONFIG_FAILSLAB is not set
+# CONFIG_FAIL_PAGE_ALLOC is not set
+# CONFIG_FAIL_MAKE_REQUEST is not set
+# CONFIG_FAULT_INJECTION_DEBUG_FS is not set
+# CONFIG_FAULT_INJECTION_STACKTRACE_FILTER is not set
+# CONFIG_FAIL_IO_TIMEOUT is not set
+# CONFIG_FAIL_MMC_REQUEST is not set
-CONFIG_SLUB_DEBUG_ON=y
+# CONFIG_SLUB_DEBUG_ON is not set
-CONFIG_LOCK_STAT=y
+# CONFIG_LOCK_STAT is not set
-CONFIG_DEBUG_STACK_USAGE=y
+# CONFIG_DEBUG_STACK_USAGE is not set
-CONFIG_ACPI_DEBUG=y
+# CONFIG_ACPI_DEBUG is not set
# CONFIG_ACPI_DEBUG_FUNC_TRACE is not set
-CONFIG_DEBUG_SG=y
+# CONFIG_DEBUG_SG is not set
# CONFIG_DEBUG_PAGEALLOC is not set
-CONFIG_DEBUG_WRITECOUNT=y
-CONFIG_DEBUG_OBJECTS=y
+# CONFIG_DEBUG_WRITECOUNT is not set
+# CONFIG_DEBUG_OBJECTS is not set
# CONFIG_DEBUG_OBJECTS_SELFTEST is not set
-CONFIG_DEBUG_OBJECTS_FREE=y
-CONFIG_DEBUG_OBJECTS_TIMERS=y
-CONFIG_DEBUG_OBJECTS_RCU_HEAD=y
+# CONFIG_DEBUG_OBJECTS_FREE is not set
+# CONFIG_DEBUG_OBJECTS_TIMERS is not set
+# CONFIG_DEBUG_OBJECTS_RCU_HEAD is not set
CONFIG_DEBUG_OBJECTS_ENABLE_DEFAULT=1
-CONFIG_X86_PTDUMP=y
+# CONFIG_X86_PTDUMP is not set
-CONFIG_CAN_DEBUG_DEVICES=y
+# CONFIG_CAN_DEBUG_DEVICES is not set
-CONFIG_MODULE_FORCE_UNLOAD=y
+# CONFIG_MODULE_FORCE_UNLOAD is not set
-CONFIG_SYSCTL_SYSCALL_CHECK=y
+# CONFIG_SYSCTL_SYSCALL_CHECK is not set
-CONFIG_DEBUG_NOTIFIERS=y
+# CONFIG_DEBUG_NOTIFIERS is not set
-CONFIG_DMA_API_DEBUG=y
+# CONFIG_DMA_API_DEBUG is not set
-CONFIG_MMIOTRACE=y
+# CONFIG_MMIOTRACE is not set
-CONFIG_DEBUG_CREDENTIALS=y
+# CONFIG_DEBUG_CREDENTIALS is not set
# off in both production debug and nodebug builds,
# on in rawhide nodebug builds
-CONFIG_DEBUG_FORCE_WEAK_PER_CPU=y
+# CONFIG_DEBUG_FORCE_WEAK_PER_CPU is not set
-CONFIG_EXT4_DEBUG=y
+# CONFIG_EXT4_DEBUG is not set
-CONFIG_DEBUG_PERF_USE_VMALLOC=y
+# CONFIG_DEBUG_PERF_USE_VMALLOC is not set
-CONFIG_JBD2_DEBUG=y
+# CONFIG_JBD2_DEBUG is not set
-CONFIG_NFSD_FAULT_INJECTION=y
+# CONFIG_NFSD_FAULT_INJECTION is not set
-CONFIG_DEBUG_BLK_CGROUP=y
+# CONFIG_DEBUG_BLK_CGROUP is not set
-CONFIG_DRBD_FAULT_INJECTION=y
+# CONFIG_DRBD_FAULT_INJECTION is not set
-CONFIG_ATH_DEBUG=y
-CONFIG_CARL9170_DEBUGFS=y
-CONFIG_IWLWIFI_DEVICE_TRACING=y
+# CONFIG_ATH_DEBUG is not set
+# CONFIG_CARL9170_DEBUGFS is not set
+# CONFIG_IWLWIFI_DEVICE_TRACING is not set
-CONFIG_DEBUG_OBJECTS_WORK=y
+# CONFIG_DEBUG_OBJECTS_WORK is not set
-CONFIG_DMADEVICES_DEBUG=y
-CONFIG_DMADEVICES_VDEBUG=y
+# CONFIG_DMADEVICES_DEBUG is not set
+# CONFIG_DMADEVICES_VDEBUG is not set
CONFIG_PM_ADVANCED_DEBUG=y
-CONFIG_CEPH_LIB_PRETTYDEBUG=y
-CONFIG_QUOTA_DEBUG=y
+# CONFIG_CEPH_LIB_PRETTYDEBUG is not set
+# CONFIG_QUOTA_DEBUG is not set
CONFIG_PCI_DEFAULT_USE_CRS=y
CONFIG_KGDB_KDB=y
CONFIG_KDB_KEYBOARD=y
-CONFIG_DEBUG_OBJECTS_PERCPU_COUNTER=y
-CONFIG_TEST_LIST_SORT=y
+# CONFIG_DEBUG_OBJECTS_PERCPU_COUNTER is not set
+# CONFIG_TEST_LIST_SORT is not set
-CONFIG_DETECT_HUNG_TASK=y
+# CONFIG_DETECT_HUNG_TASK is not set
CONFIG_DEFAULT_HUNG_TASK_TIMEOUT=120
# CONFIG_BOOTPARAM_HUNG_TASK_PANIC is not set
-CONFIG_X86_BOOTPARAM_MEMORY_CORRUPTION_CHECK=y
+# CONFIG_X86_BOOTPARAM_MEMORY_CORRUPTION_CHECK is not set
-CONFIG_DEBUG_KMEMLEAK=y
+# CONFIG_DEBUG_KMEMLEAK is not set
CONFIG_DEBUG_KMEMLEAK_EARLY_LOG_SIZE=1024
# CONFIG_DEBUG_KMEMLEAK_TEST is not set
CONFIG_DEBUG_KMEMLEAK_DEFAULT_OFF=y
diff --git a/freed-ora/current/master/config-x86-generic b/freed-ora/current/master/config-x86-generic
index 1716194e5..2bcd498eb 100644
--- a/freed-ora/current/master/config-x86-generic
+++ b/freed-ora/current/master/config-x86-generic
@@ -320,7 +320,7 @@ CONFIG_STRICT_DEVMEM=y
# CONFIG_MEMTEST is not set
# CONFIG_DEBUG_TLBFLUSH is not set
-CONFIG_MAXSMP=y
+# CONFIG_MAXSMP is not set
CONFIG_HP_ILO=m
diff --git a/freed-ora/current/master/i82975x-edac-fix.patch b/freed-ora/current/master/i82975x-edac-fix.patch
deleted file mode 100644
index f44ac7791..000000000
--- a/freed-ora/current/master/i82975x-edac-fix.patch
+++ /dev/null
@@ -1,855 +0,0 @@
-commit 9370a8d717720f6b17221490fea8d798396d9f2f
-Author: Mauro Carvalho Chehab <mchehab@redhat.com>
-Date: Mon Oct 15 21:49:35 2012 -0300
-
- i82975x_edac: Use the edac standard debug macro
-
- Instead of declaring its own debug macro, that requires
- to uncomment part of the code, use the edac standard macro
- to add the debug code, and the edac debug level to print it,
- just like any other EDAC driver.
-
- Signed-off-by: Mauro Carvalho Chehab <mchehab@redhat.com>
-
-diff --git a/drivers/edac/i82975x_edac.c b/drivers/edac/i82975x_edac.c
-index a980204..f998d2c 100644
---- a/drivers/edac/i82975x_edac.c
-+++ b/drivers/edac/i82975x_edac.c
-@@ -435,11 +435,9 @@ static void i82975x_init_csrows(struct mem_ctl_info *mci,
- }
- }
-
--/* #define i82975x_DEBUG_IOMEM */
--
--#ifdef i82975x_DEBUG_IOMEM
--static void i82975x_print_dram_timings(void __iomem *mch_window)
-+static void i82975x_print_dram_config(void __iomem *mch_window, u32 mchbar, u32 *drc)
- {
-+#ifdef CONFIG_EDAC_DEBUG
- /*
- * The register meanings are from Intel specs;
- * (shows 13-5-5-5 for 800-DDR2)
-@@ -448,26 +446,63 @@ static void i82975x_print_dram_timings(void __iomem *mch_window)
- */
- static const int caslats[4] = { 5, 4, 3, 6 };
- u32 dtreg[2];
-+ u8 c0drb[4];
-+ u8 c1drb[4];
-+
-+ if (!edac_debug_level)
-+ return;
-+
-+ i82975x_printk(KERN_INFO, "MCHBAR real = %0x, remapped = %p\n",
-+ mchbar, mch_window);
-+
-+ c0drb[0] = readb(mch_window + I82975X_DRB_CH0R0);
-+ c0drb[1] = readb(mch_window + I82975X_DRB_CH0R1);
-+ c0drb[2] = readb(mch_window + I82975X_DRB_CH0R2);
-+ c0drb[3] = readb(mch_window + I82975X_DRB_CH0R3);
-+ c1drb[0] = readb(mch_window + I82975X_DRB_CH1R0);
-+ c1drb[1] = readb(mch_window + I82975X_DRB_CH1R1);
-+ c1drb[2] = readb(mch_window + I82975X_DRB_CH1R2);
-+ c1drb[3] = readb(mch_window + I82975X_DRB_CH1R3);
-+ i82975x_printk(KERN_INFO, "DRBCH0R0 = 0x%02x\n", c0drb[0]);
-+ i82975x_printk(KERN_INFO, "DRBCH0R1 = 0x%02x\n", c0drb[1]);
-+ i82975x_printk(KERN_INFO, "DRBCH0R2 = 0x%02x\n", c0drb[2]);
-+ i82975x_printk(KERN_INFO, "DRBCH0R3 = 0x%02x\n", c0drb[3]);
-+ i82975x_printk(KERN_INFO, "DRBCH1R0 = 0x%02x\n", c1drb[0]);
-+ i82975x_printk(KERN_INFO, "DRBCH1R1 = 0x%02x\n", c1drb[1]);
-+ i82975x_printk(KERN_INFO, "DRBCH1R2 = 0x%02x\n", c1drb[2]);
-+ i82975x_printk(KERN_INFO, "DRBCH1R3 = 0x%02x\n", c1drb[3]);
-+
-+ i82975x_printk(KERN_INFO, "DRC_CH0 = %0x, %s\n", drc[0],
-+ ((drc[0] >> 21) & 3) == 1 ?
-+ "ECC enabled" : "ECC disabled");
-+ i82975x_printk(KERN_INFO, "DRC_CH1 = %0x, %s\n", drc[1],
-+ ((drc[1] >> 21) & 3) == 1 ?
-+ "ECC enabled" : "ECC disabled");
-+
-+ i82975x_printk(KERN_INFO, "C0 BNKARC = %0x\n",
-+ readw(mch_window + I82975X_C0BNKARC));
-+ i82975x_printk(KERN_INFO, "C1 BNKARC = %0x\n",
-+ readw(mch_window + I82975X_C1BNKARC));
-
- dtreg[0] = readl(mch_window + 0x114);
- dtreg[1] = readl(mch_window + 0x194);
-- i82975x_printk(KERN_INFO, "DRAM Timings : Ch0 Ch1\n"
-+ i82975x_printk(KERN_INFO,
-+ "DRAM Timings : Ch0 Ch1\n"
- " RAS Active Min = %d %d\n"
- " CAS latency = %d %d\n"
- " RAS to CAS = %d %d\n"
- " RAS precharge = %d %d\n",
- (dtreg[0] >> 19 ) & 0x0f,
-- (dtreg[1] >> 19) & 0x0f,
-+ (dtreg[1] >> 19) & 0x0f,
- caslats[(dtreg[0] >> 8) & 0x03],
-- caslats[(dtreg[1] >> 8) & 0x03],
-+ caslats[(dtreg[1] >> 8) & 0x03],
- ((dtreg[0] >> 4) & 0x07) + 2,
-- ((dtreg[1] >> 4) & 0x07) + 2,
-+ ((dtreg[1] >> 4) & 0x07) + 2,
- (dtreg[0] & 0x07) + 2,
-- (dtreg[1] & 0x07) + 2
-+ (dtreg[1] & 0x07) + 2
- );
--
--}
- #endif
-+}
-
- static int i82975x_probe1(struct pci_dev *pdev, int dev_idx)
- {
-@@ -480,10 +515,6 @@ static int i82975x_probe1(struct pci_dev *pdev, int dev_idx)
- u32 drc[2];
- struct i82975x_error_info discard;
- int chans;
--#ifdef i82975x_DEBUG_IOMEM
-- u8 c0drb[4];
-- u8 c1drb[4];
--#endif
-
- edac_dbg(0, "\n");
-
-@@ -495,45 +526,11 @@ static int i82975x_probe1(struct pci_dev *pdev, int dev_idx)
- mchbar &= 0xffffc000; /* bits 31:14 used for 16K window */
- mch_window = ioremap_nocache(mchbar, 0x1000);
-
--#ifdef i82975x_DEBUG_IOMEM
-- i82975x_printk(KERN_INFO, "MCHBAR real = %0x, remapped = %p\n",
-- mchbar, mch_window);
--
-- c0drb[0] = readb(mch_window + I82975X_DRB_CH0R0);
-- c0drb[1] = readb(mch_window + I82975X_DRB_CH0R1);
-- c0drb[2] = readb(mch_window + I82975X_DRB_CH0R2);
-- c0drb[3] = readb(mch_window + I82975X_DRB_CH0R3);
-- c1drb[0] = readb(mch_window + I82975X_DRB_CH1R0);
-- c1drb[1] = readb(mch_window + I82975X_DRB_CH1R1);
-- c1drb[2] = readb(mch_window + I82975X_DRB_CH1R2);
-- c1drb[3] = readb(mch_window + I82975X_DRB_CH1R3);
-- i82975x_printk(KERN_INFO, "DRBCH0R0 = 0x%02x\n", c0drb[0]);
-- i82975x_printk(KERN_INFO, "DRBCH0R1 = 0x%02x\n", c0drb[1]);
-- i82975x_printk(KERN_INFO, "DRBCH0R2 = 0x%02x\n", c0drb[2]);
-- i82975x_printk(KERN_INFO, "DRBCH0R3 = 0x%02x\n", c0drb[3]);
-- i82975x_printk(KERN_INFO, "DRBCH1R0 = 0x%02x\n", c1drb[0]);
-- i82975x_printk(KERN_INFO, "DRBCH1R1 = 0x%02x\n", c1drb[1]);
-- i82975x_printk(KERN_INFO, "DRBCH1R2 = 0x%02x\n", c1drb[2]);
-- i82975x_printk(KERN_INFO, "DRBCH1R3 = 0x%02x\n", c1drb[3]);
--#endif
--
- drc[0] = readl(mch_window + I82975X_DRC_CH0M0);
- drc[1] = readl(mch_window + I82975X_DRC_CH1M0);
--#ifdef i82975x_DEBUG_IOMEM
-- i82975x_printk(KERN_INFO, "DRC_CH0 = %0x, %s\n", drc[0],
-- ((drc[0] >> 21) & 3) == 1 ?
-- "ECC enabled" : "ECC disabled");
-- i82975x_printk(KERN_INFO, "DRC_CH1 = %0x, %s\n", drc[1],
-- ((drc[1] >> 21) & 3) == 1 ?
-- "ECC enabled" : "ECC disabled");
-
-- i82975x_printk(KERN_INFO, "C0 BNKARC = %0x\n",
-- readw(mch_window + I82975X_C0BNKARC));
-- i82975x_printk(KERN_INFO, "C1 BNKARC = %0x\n",
-- readw(mch_window + I82975X_C1BNKARC));
-- i82975x_print_dram_timings(mch_window);
-- goto fail1;
--#endif
-+ i82975x_print_dram_config(mch_window, mchbar, drc);
-+
- if (!(((drc[0] >> 21) & 3) == 1 || ((drc[1] >> 21) & 3) == 1)) {
- i82975x_printk(KERN_INFO, "ECC disabled on both channels.\n");
- goto fail1;
-
-commit 8992ed2f4295eab137e1713fa16be5546a759373
-Author: Mauro Carvalho Chehab <mchehab@redhat.com>
-Date: Mon Oct 15 21:48:48 2012 -0300
-
- i82975x_edac: Fix dimm label initialization
-
- The driver has only 4 hardcoded labels, but allows much more memory.
- Fix it by removing the hardcoded logic, using snprintf() instead.
-
- [ 19.833972] general protection fault: 0000 [#1] SMP
- [ 19.837733] Modules linked in: i82975x_edac(+) edac_core firewire_ohci firewire_core crc_itu_t nouveau mxm_wmi wmi video i2c_algo_bit drm_kms_helper ttm drm i2c_core
- [ 19.837733] CPU 0
- [ 19.837733] Pid: 390, comm: udevd Not tainted 3.6.1-1.fc17.x86_64.debug #1 Dell Inc. Precision WorkStation 390 /0MY510
- [ 19.837733] RIP: 0010:[<ffffffff813463a8>] [<ffffffff813463a8>] strncpy+0x18/0x30
- [ 19.837733] RSP: 0018:ffff880078535b68 EFLAGS: 00010202
- [ 19.837733] RAX: ffff880069fa9708 RBX: ffff880078588000 RCX: ffff880069fa9708
- [ 19.837733] RDX: 000000000000001f RSI: 5f706f5f63616465 RDI: ffff880069fa9708
- [ 19.837733] RBP: ffff880078535b68 R08: ffff880069fa9727 R09: 000000000000fffe
- [ 19.837733] R10: 0000000000000000 R11: 0000000000000000 R12: 0000000000000003
- [ 19.837733] R13: 0000000000000000 R14: ffff880069fa9290 R15: ffff880079624a80
- [ 19.837733] FS: 00007f3de01ee840(0000) GS:ffff88007c400000(0000) knlGS:0000000000000000
- [ 19.837733] CS: 0010 DS: 0000 ES: 0000 CR0: 0000000080050033
- [ 19.837733] CR2: 00007f3de00b9000 CR3: 0000000078dbc000 CR4: 00000000000007f0
- [ 19.837733] DR0: 0000000000000000 DR1: 0000000000000000 DR2: 0000000000000000
- [ 19.837733] DR3: 0000000000000000 DR6: 00000000ffff0ff0 DR7: 0000000000000400
- [ 19.837733] Process udevd (pid: 390, threadinfo ffff880078534000, task ffff880079642450)
- [ 19.837733] Stack:
- [ 19.837733] ffff880078535c18 ffffffffa017c6b8 00040000816d627f ffff880079624a88
- [ 19.837733] ffffc90004cd6000 ffff880079624520 ffff88007ac21148 0000000000000000
- [ 19.837733] 0000000000000000 0004000000000000 feda000078535bc8 ffffffff810d696d
- [ 19.837733] Call Trace:
- [ 19.837733] [<ffffffffa017c6b8>] i82975x_init_one+0x2e6/0x3e6 [i82975x_edac]
- ...
-
- Fix bug reported at:
- https://bugzilla.redhat.com/show_bug.cgi?id=848149
- And, very likely:
- https://bbs.archlinux.org/viewtopic.php?id=148033
- https://bugzilla.kernel.org/show_bug.cgi?id=47171
-
- Cc: Alan Cox <alan@lxorguk.ukuu.org.uk>
- Signed-off-by: Mauro Carvalho Chehab <mchehab@redhat.com>
-
-diff --git a/drivers/edac/i82975x_edac.c b/drivers/edac/i82975x_edac.c
-index 069e26c..a980204 100644
---- a/drivers/edac/i82975x_edac.c
-+++ b/drivers/edac/i82975x_edac.c
-@@ -370,10 +370,6 @@ static enum dev_type i82975x_dram_type(void __iomem *mch_window, int rank)
- static void i82975x_init_csrows(struct mem_ctl_info *mci,
- struct pci_dev *pdev, void __iomem *mch_window)
- {
-- static const char *labels[4] = {
-- "DIMM A1", "DIMM A2",
-- "DIMM B1", "DIMM B2"
-- };
- struct csrow_info *csrow;
- unsigned long last_cumul_size;
- u8 value;
-@@ -423,9 +419,10 @@ static void i82975x_init_csrows(struct mem_ctl_info *mci,
- dimm = mci->csrows[index]->channels[chan]->dimm;
-
- dimm->nr_pages = nr_pages / csrow->nr_channels;
-- strncpy(csrow->channels[chan]->dimm->label,
-- labels[(index >> 1) + (chan * 2)],
-- EDAC_MC_LABEL_LEN);
-+
-+ snprintf(csrow->channels[chan]->dimm->label, EDAC_MC_LABEL_LEN, "DIMM %c%d",
-+ (chan == 0) ? 'A' : 'B',
-+ index);
- dimm->grain = 1 << 7; /* 128Byte cache-line resolution */
- dimm->dtype = i82975x_dram_type(mch_window, index);
- dimm->mtype = MEM_DDR2; /* I82975x supports only DDR2 */
-commit 6e7636c972951ba0c6c640758b1dcc7667cb2415
-Author: Mauro Carvalho Chehab <mchehab@redhat.com>
-Date: Tue Oct 16 15:30:23 2012 -0300
-
- i82975x_edac: rewrite the entire fill/report logic
-
- There are so many bugs at the fill/error report logic that
- the code ended by being re-written.
-
- Issues solved:
-
- - DIMM labels were "randomly" filled: they won't
- match the memory layout, due to a series of bugs on it;
-
- - The memory controller supports 3 different modes:
- single, dual interleaved and dual async. The logic there were
- written considering the dual interleaved one (yet, some
- single mode support was there);
-
- - The boundary limit to decide on each channel the error happens,
- at dual interleaved mode, is given by bit 6 of the error address,
- and not bit 1. The practical effect is that Corrected errors
- will have a 50% of chance of pointing to the right DIMM. Only
- the DIMM pair logic were OK;
-
- - The asymetric mode weren't properly supported. The driver would
- handle an asymetric mode as 'single mode', with doesn't actually
- match it, creating some weird real/virtual DIMM mappings.
-
- - Some other random bugs got fixed.
-
- Tested on a Dell Precision N390, on dual interleaved mode.
-
- Signed-off-by: Mauro Carvalho Chehab <mchehab@redhat.com>
-
-diff --git a/drivers/edac/i82975x_edac.c b/drivers/edac/i82975x_edac.c
-index f998d2c..082e91e 100644
---- a/drivers/edac/i82975x_edac.c
-+++ b/drivers/edac/i82975x_edac.c
-@@ -6,7 +6,17 @@
- * GNU General Public License.
- *
- * Written by Arvind R.
-- * Copied from i82875p_edac.c source:
-+ * Copied from i82875p_edac.c source,
-+ *
-+ * (c) 2012 Mauro Carvalho Chehab <mchehab@redhat.com>
-+ * Driver re-written in order to fix lots of issues on it:
-+ * - Fix Single Mode;
-+ * - Add support for Asymetrical mode
-+ * - Fix several issues with Interleaved mode
-+ * - Fix memory label logic
-+ *
-+ * Intel datasheet: Intel(R) 975X Express Chipset Datasheet
-+ * http://www.intel.com/assets/pdf/datasheet/310158.pdf
- */
-
- #include <linux/module.h>
-@@ -29,8 +39,8 @@
- #define PCI_DEVICE_ID_INTEL_82975_0 0x277c
- #endif /* PCI_DEVICE_ID_INTEL_82975_0 */
-
--#define I82975X_NR_DIMMS 8
--#define I82975X_NR_CSROWS(nr_chans) (I82975X_NR_DIMMS / (nr_chans))
-+#define DIMMS_PER_CHANNEL 4
-+#define NUM_CHANNELS 2
-
- /* Intel 82975X register addresses - device 0 function 0 - DRAM Controller */
- #define I82975X_EAP 0x58 /* Dram Error Address Pointer (32b)
-@@ -112,7 +122,7 @@ NOTE: Only ONE of the three must be enabled
- /* NOTE: Following addresses have to indexed using MCHBAR offset (44h, 32b) */
- /* Intel 82975x memory mapped register space */
-
--#define I82975X_DRB_SHIFT 25 /* fixed 32MiB grain */
-+#define I82975X_DRB_SHIFT 25 /* fixed 2^25 = 32 MiB grain */
-
- #define I82975X_DRB 0x100 /* DRAM Row Boundary (8b x 8)
- *
-@@ -152,6 +162,10 @@ NOTE: Only ONE of the three must be enabled
- #define I82975X_DRA_CH1R01 0x188
- #define I82975X_DRA_CH1R23 0x189
-
-+/* Channels 0/1 DRAM Timing Register 1 */
-+#define I82975X_C0DRT1 0x114
-+#define I82975X_C1DRT1 0x194
-+
-
- #define I82975X_BNKARC 0x10e /* Type of device in each rank - Bank Arch (16b)
- *
-@@ -206,8 +220,16 @@ enum i82975x_chips {
- I82975X = 0,
- };
-
-+struct mem_range {
-+ u32 start, end;
-+};
-+
- struct i82975x_pvt {
-- void __iomem *mch_window;
-+ void __iomem *mch_window;
-+ int num_channels;
-+ bool is_symetric;
-+ u8 drb[DIMMS_PER_CHANNEL][NUM_CHANNELS];
-+ struct mem_range page[DIMMS_PER_CHANNEL][NUM_CHANNELS];
- };
-
- struct i82975x_dev_info {
-@@ -278,8 +300,10 @@ static void i82975x_get_error_info(struct mem_ctl_info *mci,
- static int i82975x_process_error_info(struct mem_ctl_info *mci,
- struct i82975x_error_info *info, int handle_errors)
- {
-- int row, chan;
-- unsigned long offst, page;
-+ struct i82975x_pvt *pvt = mci->pvt_info;
-+ struct mem_range *range;
-+ unsigned int row, chan, grain;
-+ unsigned long offst, page;
-
- if (!(info->errsts2 & 0x0003))
- return 0;
-@@ -293,36 +317,70 @@ static int i82975x_process_error_info(struct mem_ctl_info *mci,
- info->errsts = info->errsts2;
- }
-
-+ /* Calculate page and offset of the error */
-+
- page = (unsigned long) info->eap;
- page >>= 1;
-+
- if (info->xeap & 1)
- page |= 0x80000000;
- page >>= (PAGE_SHIFT - 1);
-- row = edac_mc_find_csrow_by_page(mci, page);
--
-- if (row == -1) {
-- i82975x_mc_printk(mci, KERN_ERR, "error processing EAP:\n"
-- "\tXEAP=%u\n"
-- "\t EAP=0x%08x\n"
-- "\tPAGE=0x%08x\n",
-- (info->xeap & 1) ? 1 : 0, info->eap, (unsigned int) page);
-- return 0;
-+
-+ if (pvt->is_symetric)
-+ grain = 1 << 7;
-+ else
-+ grain = 1 << 6;
-+
-+ offst = info->eap & ((1 << PAGE_SHIFT) - (1 << grain));
-+
-+ /*
-+ * Search for the DIMM chip that match the error page.
-+ *
-+ * On Symmetric mode, this will always return channel = 0, as
-+ * both channel A and B ranges are identical.
-+ * A latter logic will determinte the channel on symetric mode
-+ *
-+ * On asymetric mode or single mode, there will be just one match,
-+ * that will point to the csrow with the error.
-+ */
-+ for (chan = 0; chan < pvt->num_channels; chan++) {
-+ for (row = 0; row < DIMMS_PER_CHANNEL; row++) {
-+ range = &pvt->page[row][chan];
-+
-+ if (page >= range->start && page <= range->end)
-+ goto found;
-+ }
- }
-- chan = (mci->csrows[row]->nr_channels == 1) ? 0 : info->eap & 1;
-- offst = info->eap
-- & ((1 << PAGE_SHIFT) -
-- (1 << mci->csrows[row]->channels[chan]->dimm->grain));
-+ chan = -1;
-+ row = -1;
-
-- if (info->errsts & 0x0002)
-+found:
-+ if (info->errsts & 0x0002) {
-+ /*
-+ * On uncorrected error, ECC doesn't allow do determine the
-+ * channel where the error has occurred.
-+ */
- edac_mc_handle_error(HW_EVENT_ERR_UNCORRECTED, mci, 1,
- page, offst, 0,
- row, -1, -1,
- "i82975x UE", "");
-- else
-- edac_mc_handle_error(HW_EVENT_ERR_CORRECTED, mci, 1,
-- page, offst, info->derrsyn,
-- row, chan ? chan : 0, -1,
-- "i82975x CE", "");
-+ return 1;
-+ }
-+
-+ if (pvt->is_symetric && row >= 0) {
-+ /*
-+ * On Symetric mode, the memory switch happens after each
-+ * cache line (64 byte boundary). Channel 0 goes first.
-+ */
-+ if (info->eap & (1 << 6))
-+ chan = 1;
-+ else
-+ chan = 0;
-+ }
-+ edac_mc_handle_error(HW_EVENT_ERR_CORRECTED, mci, 1,
-+ page, offst, info->derrsyn,
-+ row, chan, -1,
-+ "i82975x CE", "");
-
- return 1;
- }
-@@ -331,111 +389,143 @@ static void i82975x_check(struct mem_ctl_info *mci)
- {
- struct i82975x_error_info info;
-
-- edac_dbg(1, "MC%d\n", mci->mc_idx);
-+ edac_dbg(4, "MC%d\n", mci->mc_idx);
- i82975x_get_error_info(mci, &info);
- i82975x_process_error_info(mci, &info, 1);
- }
-
--/* Return 1 if dual channel mode is active. Else return 0. */
--static int dual_channel_active(void __iomem *mch_window)
-+/**
-+ * detect_memory_style - Detect on what mode the memory controller is programmed
-+ *
-+ * @pvt: pointer to the private structure
-+ *
-+ * This function detects how many channels are in use, and if the memory
-+ * controller is in symetric (interleaved) or asymetric mode. There's no
-+ * need to distinguish between asymetric and single mode, as the routines
-+ * that fill the csrows data and handle error are written in order to handle
-+ * both at the same way.
-+ */
-+static void detect_memory_style(struct i82975x_pvt *pvt)
- {
-- /*
-- * We treat interleaved-symmetric configuration as dual-channel - EAP's
-- * bit-0 giving the channel of the error location.
-- *
-- * All other configurations are treated as single channel - the EAP's
-- * bit-0 will resolve ok in symmetric area of mixed
-- * (symmetric/asymmetric) configurations
-- */
-- u8 drb[4][2];
- int row;
-- int dualch;
-+ bool has_chan_a = false;
-+ bool has_chan_b = false;
-+
-+ pvt->is_symetric = true;
-+ pvt->num_channels = 0;
-+
-+ for (row = 0; row < DIMMS_PER_CHANNEL; row++) {
-+ pvt->drb[row][0] = readb(pvt->mch_window + I82975X_DRB + row);
-+ pvt->drb[row][1] = readb(pvt->mch_window + I82975X_DRB + row + 0x80);
-+
-+ /* On symetric mode, both channels have the same boundaries */
-+ if (pvt->drb[row][0] != pvt->drb[row][1])
-+ pvt->is_symetric = false;
-
-- for (dualch = 1, row = 0; dualch && (row < 4); row++) {
-- drb[row][0] = readb(mch_window + I82975X_DRB + row);
-- drb[row][1] = readb(mch_window + I82975X_DRB + row + 0x80);
-- dualch = dualch && (drb[row][0] == drb[row][1]);
-+ if (pvt->drb[row][0])
-+ has_chan_a = true;
-+ if (pvt->drb[row][1])
-+ has_chan_b = true;
- }
-- return dualch;
--}
-
--static enum dev_type i82975x_dram_type(void __iomem *mch_window, int rank)
--{
-- /*
-- * ECC is possible on i92975x ONLY with DEV_X8
-- */
-- return DEV_X8;
-+ if (has_chan_a)
-+ pvt->num_channels++;
-+
-+ if (has_chan_b)
-+ pvt->num_channels++;
- }
-
- static void i82975x_init_csrows(struct mem_ctl_info *mci,
-- struct pci_dev *pdev, void __iomem *mch_window)
-+ struct i82975x_pvt *pvt,
-+ struct pci_dev *pdev)
- {
-- struct csrow_info *csrow;
-- unsigned long last_cumul_size;
-- u8 value;
-- u32 cumul_size, nr_pages;
-- int index, chan;
-- struct dimm_info *dimm;
-- enum dev_type dtype;
--
-- last_cumul_size = 0;
-+ struct dimm_info *dimm;
-+ struct mem_range *range;
-+ u8 boundary;
-+ u32 initial_page = 0, last_page;
-+ int row, chan;
-
- /*
-- * 82875 comment:
-- * The dram row boundary (DRB) reg values are boundary address
-- * for each DRAM row with a granularity of 32 or 64MB (single/dual
-- * channel operation). DRB regs are cumulative; therefore DRB7 will
-- * contain the total memory contained in all rows.
-- *
-+ * This chipset provides 3 address modes:
-+ * Single channel - either Channel A or channel B is filled
-+ * Dual channel, interleaved: Memory is organized in pairs,
-+ * where channel A gets the lower address for each pair
-+ * Dual channel, asymmetric: Channel A memory goes first.
-+ * In order to cover all modes, we need to start describing
-+ * memories considering the dual channel, asymmetric one.
- */
-
-- for (index = 0; index < mci->nr_csrows; index++) {
-- csrow = mci->csrows[index];
--
-- value = readb(mch_window + I82975X_DRB + index +
-- ((index >= 4) ? 0x80 : 0));
-- cumul_size = value;
-- cumul_size <<= (I82975X_DRB_SHIFT - PAGE_SHIFT);
-- /*
-- * Adjust cumul_size w.r.t number of channels
-- *
-- */
-- if (csrow->nr_channels > 1)
-- cumul_size <<= 1;
-- edac_dbg(3, "(%d) cumul_size 0x%x\n", index, cumul_size);
--
-- nr_pages = cumul_size - last_cumul_size;
-- if (!nr_pages)
-- continue;
--
-+ for (chan = 0; chan < pvt->num_channels; chan++) {
- /*
-- * Initialise dram labels
-- * index values:
-- * [0-7] for single-channel; i.e. csrow->nr_channels = 1
-- * [0-3] for dual-channel; i.e. csrow->nr_channels = 2
-+ * On symetric mode, both channels start from address 0
- */
-- dtype = i82975x_dram_type(mch_window, index);
-- for (chan = 0; chan < csrow->nr_channels; chan++) {
-- dimm = mci->csrows[index]->channels[chan]->dimm;
--
-- dimm->nr_pages = nr_pages / csrow->nr_channels;
--
-- snprintf(csrow->channels[chan]->dimm->label, EDAC_MC_LABEL_LEN, "DIMM %c%d",
-- (chan == 0) ? 'A' : 'B',
-- index);
-- dimm->grain = 1 << 7; /* 128Byte cache-line resolution */
-- dimm->dtype = i82975x_dram_type(mch_window, index);
-+ if (pvt->is_symetric)
-+ initial_page = 0;
-+
-+ for (row = 0; row < DIMMS_PER_CHANNEL; row++) {
-+ boundary = pvt->drb[row][chan];
-+ dimm = mci->csrows[row]->channels[chan]->dimm;
-+
-+ last_page = boundary << (I82975X_DRB_SHIFT - PAGE_SHIFT);
-+ dimm->nr_pages = last_page - initial_page;
-+ if (!dimm->nr_pages)
-+ continue;
-+
-+ range = &pvt->page[row][chan];
-+ range->start = initial_page;
-+ range->end = range->start + dimm->nr_pages - 1;
-+
-+ /*
-+ * Grain is one cache-line:
-+ * On dual symetric mode, it is 128 Bytes;
-+ * On single mode or asymetric, it is 64 bytes.
-+ */
-+ if (pvt->is_symetric) {
-+ dimm->grain = 1 << 7;
-+
-+ /*
-+ * In dual interleaved mode, the addresses
-+ * need to be multiplied by 2, as both
-+ * channels are interlaced, and the boundary
-+ * limit there actually match each DIMM size
-+ */
-+ range->start <<= 1;
-+ range->end <<= 1;
-+ } else {
-+ dimm->grain = 1 << 6;
-+ }
-+
-+ snprintf(dimm->label,
-+ EDAC_MC_LABEL_LEN, "DIMM %c%d",
-+ (chan == 0) ? 'A' : 'B', row);
- dimm->mtype = MEM_DDR2; /* I82975x supports only DDR2 */
- dimm->edac_mode = EDAC_SECDED; /* only supported */
-- }
-
-- csrow->first_page = last_cumul_size;
-- csrow->last_page = cumul_size - 1;
-- last_cumul_size = cumul_size;
-+ /*
-+ * This chipset supports both x8 and x16 memories,
-+ * but datasheet doesn't describe how to distinguish
-+ * between them.
-+ *
-+ * Also, the "Rank" comment at initial_page 17 says that
-+ * ECC is only available with x8 memories. As this
-+ * driver doesn't even initialize without ECC, better
-+ * to assume that everything is x8. This is not
-+ * actually true, on a mixed ECC/non-ECC scenario.
-+ */
-+ dimm->dtype = DEV_X8;
-+
-+ edac_dbg(1,
-+ "%s: from page 0x%08x to 0x%08x (size: 0x%08x pages)\n",
-+ dimm->label,
-+ range->start, range->end,
-+ dimm->nr_pages);
-+ initial_page = last_page;
-+ }
- }
- }
-
--static void i82975x_print_dram_config(void __iomem *mch_window, u32 mchbar, u32 *drc)
-+static void i82975x_print_dram_config(struct i82975x_pvt *pvt,
-+ u32 mchbar, u32 *drc)
- {
- #ifdef CONFIG_EDAC_DEBUG
- /*
-@@ -444,63 +534,57 @@ static void i82975x_print_dram_config(void __iomem *mch_window, u32 mchbar, u32
- * Asus P5W Bios reports 15-5-4-4
- * What's your religion?
- */
-- static const int caslats[4] = { 5, 4, 3, 6 };
-- u32 dtreg[2];
-- u8 c0drb[4];
-- u8 c1drb[4];
-+ static const int caslats[4] = { 5, 4, 3, 6 };
-+ u32 dtreg[2];
-+ int row;
-
-+ /* Show memory config if debug level is 1 or upper */
- if (!edac_debug_level)
- return;
-
- i82975x_printk(KERN_INFO, "MCHBAR real = %0x, remapped = %p\n",
-- mchbar, mch_window);
--
-- c0drb[0] = readb(mch_window + I82975X_DRB_CH0R0);
-- c0drb[1] = readb(mch_window + I82975X_DRB_CH0R1);
-- c0drb[2] = readb(mch_window + I82975X_DRB_CH0R2);
-- c0drb[3] = readb(mch_window + I82975X_DRB_CH0R3);
-- c1drb[0] = readb(mch_window + I82975X_DRB_CH1R0);
-- c1drb[1] = readb(mch_window + I82975X_DRB_CH1R1);
-- c1drb[2] = readb(mch_window + I82975X_DRB_CH1R2);
-- c1drb[3] = readb(mch_window + I82975X_DRB_CH1R3);
-- i82975x_printk(KERN_INFO, "DRBCH0R0 = 0x%02x\n", c0drb[0]);
-- i82975x_printk(KERN_INFO, "DRBCH0R1 = 0x%02x\n", c0drb[1]);
-- i82975x_printk(KERN_INFO, "DRBCH0R2 = 0x%02x\n", c0drb[2]);
-- i82975x_printk(KERN_INFO, "DRBCH0R3 = 0x%02x\n", c0drb[3]);
-- i82975x_printk(KERN_INFO, "DRBCH1R0 = 0x%02x\n", c1drb[0]);
-- i82975x_printk(KERN_INFO, "DRBCH1R1 = 0x%02x\n", c1drb[1]);
-- i82975x_printk(KERN_INFO, "DRBCH1R2 = 0x%02x\n", c1drb[2]);
-- i82975x_printk(KERN_INFO, "DRBCH1R3 = 0x%02x\n", c1drb[3]);
--
-- i82975x_printk(KERN_INFO, "DRC_CH0 = %0x, %s\n", drc[0],
-+ mchbar, pvt->mch_window);
-+
-+ for (row = 0; row < DIMMS_PER_CHANNEL; row++) {
-+ if (row)
-+ /* Only show if at least one bank is filled */
-+ if ((pvt->drb[row][0] == pvt->drb[row-1][0]) &&
-+ (pvt->drb[row][1] == pvt->drb[row-1][1]))
-+ continue;
-+
-+ i82975x_printk(KERN_INFO,
-+ "DRAM%i Rank Boundary Address: Channel A: 0x%08x; Channel B: 0x%08x\n",
-+ row,
-+ pvt->drb[row][0],
-+ pvt->drb[row][1]);
-+ }
-+
-+ i82975x_printk(KERN_INFO, "DRAM Controller mode Channel A: = 0x%08x (%s); Channel B: 0x%08x (%s)\n",
-+ drc[0],
- ((drc[0] >> 21) & 3) == 1 ?
-- "ECC enabled" : "ECC disabled");
-- i82975x_printk(KERN_INFO, "DRC_CH1 = %0x, %s\n", drc[1],
-+ "ECC enabled" : "ECC disabled",
-+ drc[1],
- ((drc[1] >> 21) & 3) == 1 ?
- "ECC enabled" : "ECC disabled");
-
-- i82975x_printk(KERN_INFO, "C0 BNKARC = %0x\n",
-- readw(mch_window + I82975X_C0BNKARC));
-- i82975x_printk(KERN_INFO, "C1 BNKARC = %0x\n",
-- readw(mch_window + I82975X_C1BNKARC));
--
-- dtreg[0] = readl(mch_window + 0x114);
-- dtreg[1] = readl(mch_window + 0x194);
-- i82975x_printk(KERN_INFO,
-- "DRAM Timings : Ch0 Ch1\n"
-- " RAS Active Min = %d %d\n"
-- " CAS latency = %d %d\n"
-- " RAS to CAS = %d %d\n"
-- " RAS precharge = %d %d\n",
-- (dtreg[0] >> 19 ) & 0x0f,
-- (dtreg[1] >> 19) & 0x0f,
-- caslats[(dtreg[0] >> 8) & 0x03],
-- caslats[(dtreg[1] >> 8) & 0x03],
-- ((dtreg[0] >> 4) & 0x07) + 2,
-- ((dtreg[1] >> 4) & 0x07) + 2,
-+ i82975x_printk(KERN_INFO, "Bank Architecture Channel A: 0x%08x, Channel B: 0x%08x\n",
-+ readw(pvt->mch_window + I82975X_C0BNKARC),
-+ readw(pvt->mch_window + I82975X_C1BNKARC));
-+
-+ dtreg[0] = readl(pvt->mch_window + I82975X_C0DRT1);
-+ dtreg[1] = readl(pvt->mch_window + I82975X_C1DRT1);
-+ i82975x_printk(KERN_INFO, "DRAM Timings : ChA ChB\n");
-+ i82975x_printk(KERN_INFO, " RAS Active Min = %2d %2d\n",
-+ (dtreg[0] >> 19 ) & 0x0f,(dtreg[1] >> 19) & 0x0f);
-+ i82975x_printk(KERN_INFO, " CAS latency = %2d %2d\n",
-+ caslats[(dtreg[0] >> 8) & 0x03],
-+ caslats[(dtreg[1] >> 8) & 0x03]);
-+ i82975x_printk(KERN_INFO, " RAS to CAS = %2d %2d\n",
-+ ((dtreg[0] >> 4) & 0x07) + 2,
-+ ((dtreg[1] >> 4) & 0x07) + 2);
-+ i82975x_printk(KERN_INFO, " RAS precharge = %2d %2d\n",
- (dtreg[0] & 0x07) + 2,
-- (dtreg[1] & 0x07) + 2
-- );
-+ (dtreg[1] & 0x07) + 2);
- #endif
- }
-
-@@ -509,12 +593,10 @@ static int i82975x_probe1(struct pci_dev *pdev, int dev_idx)
- int rc = -ENODEV;
- struct mem_ctl_info *mci;
- struct edac_mc_layer layers[2];
-- struct i82975x_pvt *pvt;
-- void __iomem *mch_window;
-+ struct i82975x_pvt tmp_pvt, *pvt;
- u32 mchbar;
- u32 drc[2];
- struct i82975x_error_info discard;
-- int chans;
-
- edac_dbg(0, "\n");
-
-@@ -524,26 +606,35 @@ static int i82975x_probe1(struct pci_dev *pdev, int dev_idx)
- goto fail0;
- }
- mchbar &= 0xffffc000; /* bits 31:14 used for 16K window */
-- mch_window = ioremap_nocache(mchbar, 0x1000);
-+ tmp_pvt.mch_window = ioremap_nocache(mchbar, 0x1000);
-+ if (!tmp_pvt.mch_window) {
-+ i82975x_printk(KERN_ERR, "Couldn't map MCHBAR registers.\n");
-+ rc = -ENOMEM;
-+ goto fail0;
-+ }
-
-- drc[0] = readl(mch_window + I82975X_DRC_CH0M0);
-- drc[1] = readl(mch_window + I82975X_DRC_CH1M0);
-+ drc[0] = readl(tmp_pvt.mch_window + I82975X_DRC_CH0M0);
-+ drc[1] = readl(tmp_pvt.mch_window + I82975X_DRC_CH1M0);
-+
-+ detect_memory_style(&tmp_pvt);
-+ if (!tmp_pvt.num_channels) {
-+ edac_dbg(3, "No memories installed? This shouldn't be running!\n");
-+ goto fail0;
-+ }
-
-- i82975x_print_dram_config(mch_window, mchbar, drc);
-+ i82975x_print_dram_config(&tmp_pvt, mchbar, drc);
-
- if (!(((drc[0] >> 21) & 3) == 1 || ((drc[1] >> 21) & 3) == 1)) {
- i82975x_printk(KERN_INFO, "ECC disabled on both channels.\n");
- goto fail1;
- }
-
-- chans = dual_channel_active(mch_window) + 1;
--
- /* assuming only one controller, index thus is 0 */
- layers[0].type = EDAC_MC_LAYER_CHIP_SELECT;
-- layers[0].size = I82975X_NR_DIMMS;
-+ layers[0].size = DIMMS_PER_CHANNEL;
- layers[0].is_virt_csrow = true;
- layers[1].type = EDAC_MC_LAYER_CHANNEL;
-- layers[1].size = I82975X_NR_CSROWS(chans);
-+ layers[1].size = tmp_pvt.num_channels;
- layers[1].is_virt_csrow = false;
- mci = edac_mc_alloc(0, ARRAY_SIZE(layers), layers, sizeof(*pvt));
- if (!mci) {
-@@ -562,10 +653,12 @@ static int i82975x_probe1(struct pci_dev *pdev, int dev_idx)
- mci->dev_name = pci_name(pdev);
- mci->edac_check = i82975x_check;
- mci->ctl_page_to_phys = NULL;
-+
- edac_dbg(3, "init pvt\n");
- pvt = (struct i82975x_pvt *) mci->pvt_info;
-- pvt->mch_window = mch_window;
-- i82975x_init_csrows(mci, pdev, mch_window);
-+ *pvt = tmp_pvt;
-+
-+ i82975x_init_csrows(mci, pvt, pdev);
- mci->scrub_mode = SCRUB_HW_SRC;
- i82975x_get_error_info(mci, &discard); /* clear counters */
-
-@@ -583,7 +676,7 @@ fail2:
- edac_mc_free(mci);
-
- fail1:
-- iounmap(mch_window);
-+ iounmap(tmp_pvt.mch_window);
- fail0:
- return rc;
- }
diff --git a/freed-ora/current/master/kernel.spec b/freed-ora/current/master/kernel.spec
index 5491e4acd..0548b69df 100644
--- a/freed-ora/current/master/kernel.spec
+++ b/freed-ora/current/master/kernel.spec
@@ -131,9 +131,9 @@ Summary: The Linux kernel
# The next upstream release sublevel (base_sublevel+1)
%define upstream_sublevel %(echo $((%{base_sublevel} + 1)))
# The rc snapshot level
-%define rcrev 7
+%define rcrev 8
# The git snapshot level
-%define gitrev 2
+%define gitrev 0
# Set rpm version accordingly
%define rpmversion 3.%{upstream_sublevel}.0
%endif
@@ -203,7 +203,7 @@ Summary: The Linux kernel
# 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 0
+%define debugbuildsenabled 1
# Want to build a vanilla kernel build without any non-upstream patches?
%define with_vanilla %{?_with_vanilla: 1} %{?!_with_vanilla: 0}
@@ -216,7 +216,7 @@ Summary: The Linux kernel
%define doc_build_fail true
%endif
-%define rawhide_skip_docs 1
+%define rawhide_skip_docs 0
%if 0%{?rawhide_skip_docs}
%define with_doc 0
%define doc_build_fail true
@@ -792,8 +792,6 @@ Patch14000: hibernate-freeze-filesystems.patch
Patch14010: lis3-improve-handling-of-null-rate.patch
-Patch19001: i82975x-edac-fix.patch
-
# ARM
Patch21000: arm-export-read_current_timer.patch
Patch21001: arm-allnoconfig-error-__LINUX_ARM_ARCH__-undeclared.patch
@@ -819,8 +817,6 @@ Patch22001: selinux-apply-different-permission-to-ptrace-child.patch
# Build patch, should go away
Patch22070: irqnr-build.patch
-Patch22073: perf-uapi-fixes2.patch
-
#rhbz 874791
Patch22125: Bluetooth-Add-support-for-BCM20702A0.patch
@@ -1590,8 +1586,6 @@ ApplyPatch efi-dont-map-boot-services-on-32bit.patch
ApplyPatch lis3-improve-handling-of-null-rate.patch
-ApplyPatch i82975x-edac-fix.patch
-
#rhbz 754518
ApplyPatch scsi-sd_revalidate_disk-prevent-NULL-ptr-deref.patch
@@ -1603,8 +1597,6 @@ ApplyPatch selinux-apply-different-permission-to-ptrace-child.patch
#Build patch, should go away
ApplyPatch irqnr-build.patch
-ApplyPatch perf-uapi-fixes2.patch
-
#rhbz 874791
ApplyPatch Bluetooth-Add-support-for-BCM20702A0.patch
@@ -2498,6 +2490,16 @@ fi
# ||----w |
# || ||
%changelog
+* Wed Dec 5 2012 Alexandre Oliva <lxoliva@fsfla.org> -libre
+- GNU Linux-libre 3.7-rc8-gnu
+
+* Tue Dec 04 2012 Josh Boyer <jwboyer@redhat.com> - 3.7.0-0.rc8.git0.1
+- Linux v3.7-rc8
+- Disable debugging options.
+
+* Sun Dec 02 2012 Josh Boyer <jwboyer@redhat.com> - 3.7.0-0.rc7.git3.1
+- Linux v3.7-rc7-163-g3c46f3d
+
* Fri Nov 30 2012 Justin M. Forbes <jforbes@redhat.com> - 3.7.0-0.rc7.git2.1
- Linux v3.7-rc7-71-ge9296e8
diff --git a/freed-ora/current/master/patch-3.6-gnu-3.7-rc7-gnu.xz.sign b/freed-ora/current/master/patch-3.6-gnu-3.7-rc7-gnu.xz.sign
deleted file mode 100644
index bb11b8116..000000000
--- a/freed-ora/current/master/patch-3.6-gnu-3.7-rc7-gnu.xz.sign
+++ /dev/null
@@ -1,7 +0,0 @@
------BEGIN PGP SIGNATURE-----
-Version: GnuPG v2.0.18 (GNU/Linux)
-
-iEYEABECAAYFAlC03qUACgkQvLfPh359R6dlegCggsc1jTyiGfPL8l7z899NX5yK
-IlAAnRjUWvndPOLFx0FnOvB/23DeOMct
-=eFWA
------END PGP SIGNATURE-----
diff --git a/freed-ora/current/master/patch-3.6-gnu-3.7-rc8-gnu.xz.sign b/freed-ora/current/master/patch-3.6-gnu-3.7-rc8-gnu.xz.sign
new file mode 100644
index 000000000..246257002
--- /dev/null
+++ b/freed-ora/current/master/patch-3.6-gnu-3.7-rc8-gnu.xz.sign
@@ -0,0 +1,7 @@
+-----BEGIN PGP SIGNATURE-----
+Version: GnuPG v2.0.18 (GNU/Linux)
+
+iEYEABECAAYFAlC+BRoACgkQvLfPh359R6eH4gCfVbgWk0uLoeXX3baxJs9m1gGQ
+AiEAnRN9SaNk0ld54msthGr805ugZDYk
+=h4mh
+-----END PGP SIGNATURE-----
diff --git a/freed-ora/current/master/perf-uapi-fixes2.patch b/freed-ora/current/master/perf-uapi-fixes2.patch
deleted file mode 100644
index d7bdfab21..000000000
--- a/freed-ora/current/master/perf-uapi-fixes2.patch
+++ /dev/null
@@ -1,1132 +0,0 @@
-From ef79375f0f77e13a42eb3adf858fdd26b21f453a Mon Sep 17 00:00:00 2001
-From: Xiao Guangrong <xiaoguangrong@linux.vnet.ibm.com>
-Date: Thu, 15 Nov 2012 14:17:01 +0800
-Subject: [PATCH 1/7] perf kvm: rename perf_kvm to perf_kvm_stat
-
-Then, let it only be used in 'perf kvm stat'
-
-Signed-off-by: Xiao Guangrong <xiaoguangrong@linux.vnet.ibm.com>
----
- tools/perf/builtin-kvm.c | 111 +++++++++++++++++++++++++----------------------
- 1 file changed, 60 insertions(+), 51 deletions(-)
-
-diff --git a/tools/perf/builtin-kvm.c b/tools/perf/builtin-kvm.c
-index 260abc5..7bd8358 100644
---- a/tools/perf/builtin-kvm.c
-+++ b/tools/perf/builtin-kvm.c
-@@ -58,7 +58,7 @@ struct kvm_event_key {
- };
-
-
--struct perf_kvm;
-+struct perf_kvm_stat;
-
- struct kvm_events_ops {
- bool (*is_begin_event)(struct perf_evsel *evsel,
-@@ -66,7 +66,7 @@ struct kvm_events_ops {
- struct event_key *key);
- bool (*is_end_event)(struct perf_evsel *evsel,
- struct perf_sample *sample, struct event_key *key);
-- void (*decode_key)(struct perf_kvm *kvm, struct event_key *key,
-+ void (*decode_key)(struct perf_kvm_stat *kvm, struct event_key *key,
- char decode[20]);
- const char *name;
- };
-@@ -79,7 +79,7 @@ struct exit_reasons_table {
- #define EVENTS_BITS 12
- #define EVENTS_CACHE_SIZE (1UL << EVENTS_BITS)
-
--struct perf_kvm {
-+struct perf_kvm_stat {
- struct perf_tool tool;
- struct perf_session *session;
-
-@@ -146,7 +146,7 @@ static struct exit_reasons_table svm_exit_reasons[] = {
- SVM_EXIT_REASONS
- };
-
--static const char *get_exit_reason(struct perf_kvm *kvm, u64 exit_code)
-+static const char *get_exit_reason(struct perf_kvm_stat *kvm, u64 exit_code)
- {
- int i = kvm->exit_reasons_size;
- struct exit_reasons_table *tbl = kvm->exit_reasons;
-@@ -162,7 +162,7 @@ static const char *get_exit_reason(struct perf_kvm *kvm, u64 exit_code)
- return "UNKNOWN";
- }
-
--static void exit_event_decode_key(struct perf_kvm *kvm,
-+static void exit_event_decode_key(struct perf_kvm_stat *kvm,
- struct event_key *key,
- char decode[20])
- {
-@@ -228,7 +228,7 @@ static bool mmio_event_end(struct perf_evsel *evsel, struct perf_sample *sample,
- return false;
- }
-
--static void mmio_event_decode_key(struct perf_kvm *kvm __maybe_unused,
-+static void mmio_event_decode_key(struct perf_kvm_stat *kvm __maybe_unused,
- struct event_key *key,
- char decode[20])
- {
-@@ -271,7 +271,7 @@ static bool ioport_event_end(struct perf_evsel *evsel,
- return kvm_entry_event(evsel);
- }
-
--static void ioport_event_decode_key(struct perf_kvm *kvm __maybe_unused,
-+static void ioport_event_decode_key(struct perf_kvm_stat *kvm __maybe_unused,
- struct event_key *key,
- char decode[20])
- {
-@@ -286,7 +286,7 @@ static struct kvm_events_ops ioport_events = {
- .name = "IO Port Access"
- };
-
--static bool register_kvm_events_ops(struct perf_kvm *kvm)
-+static bool register_kvm_events_ops(struct perf_kvm_stat *kvm)
- {
- bool ret = true;
-
-@@ -311,7 +311,7 @@ struct vcpu_event_record {
- };
-
-
--static void init_kvm_event_record(struct perf_kvm *kvm)
-+static void init_kvm_event_record(struct perf_kvm_stat *kvm)
- {
- int i;
-
-@@ -360,7 +360,7 @@ static struct kvm_event *kvm_alloc_init_event(struct event_key *key)
- return event;
- }
-
--static struct kvm_event *find_create_kvm_event(struct perf_kvm *kvm,
-+static struct kvm_event *find_create_kvm_event(struct perf_kvm_stat *kvm,
- struct event_key *key)
- {
- struct kvm_event *event;
-@@ -381,7 +381,7 @@ static struct kvm_event *find_create_kvm_event(struct perf_kvm *kvm,
- return event;
- }
-
--static bool handle_begin_event(struct perf_kvm *kvm,
-+static bool handle_begin_event(struct perf_kvm_stat *kvm,
- struct vcpu_event_record *vcpu_record,
- struct event_key *key, u64 timestamp)
- {
-@@ -425,7 +425,7 @@ static bool update_kvm_event(struct kvm_event *event, int vcpu_id,
- return true;
- }
-
--static bool handle_end_event(struct perf_kvm *kvm,
-+static bool handle_end_event(struct perf_kvm_stat *kvm,
- struct vcpu_event_record *vcpu_record,
- struct event_key *key,
- u64 timestamp)
-@@ -486,7 +486,7 @@ struct vcpu_event_record *per_vcpu_record(struct thread *thread,
- return thread->priv;
- }
-
--static bool handle_kvm_event(struct perf_kvm *kvm,
-+static bool handle_kvm_event(struct perf_kvm_stat *kvm,
- struct thread *thread,
- struct perf_evsel *evsel,
- struct perf_sample *sample)
-@@ -541,7 +541,7 @@ static struct kvm_event_key keys[] = {
- { NULL, NULL }
- };
-
--static bool select_key(struct perf_kvm *kvm)
-+static bool select_key(struct perf_kvm_stat *kvm)
- {
- int i;
-
-@@ -577,7 +577,8 @@ static void insert_to_result(struct rb_root *result, struct kvm_event *event,
- rb_insert_color(&event->rb, result);
- }
-
--static void update_total_count(struct perf_kvm *kvm, struct kvm_event *event)
-+static void
-+update_total_count(struct perf_kvm_stat *kvm, struct kvm_event *event)
- {
- int vcpu = kvm->trace_vcpu;
-
-@@ -590,7 +591,7 @@ static bool event_is_valid(struct kvm_event *event, int vcpu)
- return !!get_event_count(event, vcpu);
- }
-
--static void sort_result(struct perf_kvm *kvm)
-+static void sort_result(struct perf_kvm_stat *kvm)
- {
- unsigned int i;
- int vcpu = kvm->trace_vcpu;
-@@ -627,7 +628,7 @@ static void print_vcpu_info(int vcpu)
- pr_info("VCPU %d:\n\n", vcpu);
- }
-
--static void print_result(struct perf_kvm *kvm)
-+static void print_result(struct perf_kvm_stat *kvm)
- {
- char decode[20];
- struct kvm_event *event;
-@@ -670,7 +671,8 @@ static int process_sample_event(struct perf_tool *tool,
- struct machine *machine)
- {
- struct thread *thread = machine__findnew_thread(machine, sample->tid);
-- struct perf_kvm *kvm = container_of(tool, struct perf_kvm, tool);
-+ struct perf_kvm_stat *kvm = container_of(tool, struct perf_kvm_stat,
-+ tool);
-
- if (thread == NULL) {
- pr_debug("problem processing %d event, skipping it.\n",
-@@ -701,7 +703,7 @@ static int get_cpu_isa(struct perf_session *session)
- return isa;
- }
-
--static int read_events(struct perf_kvm *kvm)
-+static int read_events(struct perf_kvm_stat *kvm)
- {
- int ret;
-
-@@ -750,7 +752,7 @@ static bool verify_vcpu(int vcpu)
- return true;
- }
-
--static int kvm_events_report_vcpu(struct perf_kvm *kvm)
-+static int kvm_events_report_vcpu(struct perf_kvm_stat *kvm)
- {
- int ret = -EINVAL;
- int vcpu = kvm->trace_vcpu;
-@@ -798,7 +800,8 @@ static const char * const record_args[] = {
- _p; \
- })
-
--static int kvm_events_record(struct perf_kvm *kvm, int argc, const char **argv)
-+static int
-+kvm_events_record(struct perf_kvm_stat *kvm, int argc, const char **argv)
- {
- unsigned int rec_argc, i, j;
- const char **rec_argv;
-@@ -821,7 +824,8 @@ static int kvm_events_record(struct perf_kvm *kvm, int argc, const char **argv)
- return cmd_record(i, rec_argv, NULL);
- }
-
--static int kvm_events_report(struct perf_kvm *kvm, int argc, const char **argv)
-+static int
-+kvm_events_report(struct perf_kvm_stat *kvm, int argc, const char **argv)
- {
- const struct option kvm_events_report_options[] = {
- OPT_STRING(0, "event", &kvm->report_event, "report event",
-@@ -864,24 +868,36 @@ static void print_kvm_stat_usage(void)
- printf("\nOtherwise, it is the alias of 'perf stat':\n");
- }
-
--static int kvm_cmd_stat(struct perf_kvm *kvm, int argc, const char **argv)
-+static int kvm_cmd_stat(const char *file_name, int argc, const char **argv)
- {
-+ struct perf_kvm_stat kvm = {
-+ .file_name = file_name,
-+
-+ .trace_vcpu = -1,
-+ .report_event = "vmexit",
-+ .sort_key = "sample",
-+
-+ .exit_reasons = svm_exit_reasons,
-+ .exit_reasons_size = ARRAY_SIZE(svm_exit_reasons),
-+ .exit_reasons_isa = "SVM",
-+ };
-+
- if (argc == 1) {
- print_kvm_stat_usage();
- goto perf_stat;
- }
-
- if (!strncmp(argv[1], "rec", 3))
-- return kvm_events_record(kvm, argc - 1, argv + 1);
-+ return kvm_events_record(&kvm, argc - 1, argv + 1);
-
- if (!strncmp(argv[1], "rep", 3))
-- return kvm_events_report(kvm, argc - 1 , argv + 1);
-+ return kvm_events_report(&kvm, argc - 1 , argv + 1);
-
- perf_stat:
- return cmd_stat(argc, argv, NULL);
- }
-
--static int __cmd_record(struct perf_kvm *kvm, int argc, const char **argv)
-+static int __cmd_record(const char *file_name, int argc, const char **argv)
- {
- int rec_argc, i = 0, j;
- const char **rec_argv;
-@@ -890,7 +906,7 @@ static int __cmd_record(struct perf_kvm *kvm, int argc, const char **argv)
- rec_argv = calloc(rec_argc + 1, sizeof(char *));
- rec_argv[i++] = strdup("record");
- rec_argv[i++] = strdup("-o");
-- rec_argv[i++] = strdup(kvm->file_name);
-+ rec_argv[i++] = strdup(file_name);
- for (j = 1; j < argc; j++, i++)
- rec_argv[i] = argv[j];
-
-@@ -899,7 +915,7 @@ static int __cmd_record(struct perf_kvm *kvm, int argc, const char **argv)
- return cmd_record(i, rec_argv, NULL);
- }
-
--static int __cmd_report(struct perf_kvm *kvm, int argc, const char **argv)
-+static int __cmd_report(const char *file_name, int argc, const char **argv)
- {
- int rec_argc, i = 0, j;
- const char **rec_argv;
-@@ -908,7 +924,7 @@ static int __cmd_report(struct perf_kvm *kvm, int argc, const char **argv)
- rec_argv = calloc(rec_argc + 1, sizeof(char *));
- rec_argv[i++] = strdup("report");
- rec_argv[i++] = strdup("-i");
-- rec_argv[i++] = strdup(kvm->file_name);
-+ rec_argv[i++] = strdup(file_name);
- for (j = 1; j < argc; j++, i++)
- rec_argv[i] = argv[j];
-
-@@ -917,7 +933,8 @@ static int __cmd_report(struct perf_kvm *kvm, int argc, const char **argv)
- return cmd_report(i, rec_argv, NULL);
- }
-
--static int __cmd_buildid_list(struct perf_kvm *kvm, int argc, const char **argv)
-+static int
-+__cmd_buildid_list(const char *file_name, int argc, const char **argv)
- {
- int rec_argc, i = 0, j;
- const char **rec_argv;
-@@ -926,7 +943,7 @@ static int __cmd_buildid_list(struct perf_kvm *kvm, int argc, const char **argv)
- rec_argv = calloc(rec_argc + 1, sizeof(char *));
- rec_argv[i++] = strdup("buildid-list");
- rec_argv[i++] = strdup("-i");
-- rec_argv[i++] = strdup(kvm->file_name);
-+ rec_argv[i++] = strdup(file_name);
- for (j = 1; j < argc; j++, i++)
- rec_argv[i] = argv[j];
-
-@@ -937,20 +954,12 @@ static int __cmd_buildid_list(struct perf_kvm *kvm, int argc, const char **argv)
-
- int cmd_kvm(int argc, const char **argv, const char *prefix __maybe_unused)
- {
-- struct perf_kvm kvm = {
-- .trace_vcpu = -1,
-- .report_event = "vmexit",
-- .sort_key = "sample",
--
-- .exit_reasons = svm_exit_reasons,
-- .exit_reasons_size = ARRAY_SIZE(svm_exit_reasons),
-- .exit_reasons_isa = "SVM",
-- };
-+ const char *file_name;
-
- const struct option kvm_options[] = {
-- OPT_STRING('i', "input", &kvm.file_name, "file",
-+ OPT_STRING('i', "input", &file_name, "file",
- "Input file name"),
-- OPT_STRING('o', "output", &kvm.file_name, "file",
-+ OPT_STRING('o', "output", &file_name, "file",
- "Output file name"),
- OPT_BOOLEAN(0, "guest", &perf_guest,
- "Collect guest os data"),
-@@ -985,32 +994,32 @@ int cmd_kvm(int argc, const char **argv, const char *prefix __maybe_unused)
- if (!perf_host)
- perf_guest = 1;
-
-- if (!kvm.file_name) {
-+ if (!file_name) {
- if (perf_host && !perf_guest)
-- kvm.file_name = strdup("perf.data.host");
-+ file_name = strdup("perf.data.host");
- else if (!perf_host && perf_guest)
-- kvm.file_name = strdup("perf.data.guest");
-+ file_name = strdup("perf.data.guest");
- else
-- kvm.file_name = strdup("perf.data.kvm");
-+ file_name = strdup("perf.data.kvm");
-
-- if (!kvm.file_name) {
-+ if (!file_name) {
- pr_err("Failed to allocate memory for filename\n");
- return -ENOMEM;
- }
- }
-
- if (!strncmp(argv[0], "rec", 3))
-- return __cmd_record(&kvm, argc, argv);
-+ return __cmd_record(file_name, argc, argv);
- else if (!strncmp(argv[0], "rep", 3))
-- return __cmd_report(&kvm, argc, argv);
-+ return __cmd_report(file_name, argc, argv);
- else if (!strncmp(argv[0], "diff", 4))
- return cmd_diff(argc, argv, NULL);
- else if (!strncmp(argv[0], "top", 3))
- return cmd_top(argc, argv, NULL);
- else if (!strncmp(argv[0], "buildid-list", 12))
-- return __cmd_buildid_list(&kvm, argc, argv);
-+ return __cmd_buildid_list(file_name, argc, argv);
- else if (!strncmp(argv[0], "stat", 4))
-- return kvm_cmd_stat(&kvm, argc, argv);
-+ return kvm_cmd_stat(file_name, argc, argv);
- else
- usage_with_options(kvm_usage, kvm_options);
-
---
-1.7.12.1
-
-
-From afb33bc55fb0d038ae8d8e6970ce01cb1180fc9d Mon Sep 17 00:00:00 2001
-From: Xiao Guangrong <xiaoguangrong@linux.vnet.ibm.com>
-Date: Mon, 19 Nov 2012 16:19:21 +0800
-Subject: [PATCH 2/7] perf kvm: fix building perf kvm on PowerPC
-
-On 11/15/2012 06:46 PM, David Howells wrote:
-> Xiao Guangrong <xiaoguangrong@linux.vnet.ibm.com> wrote:
->
->> Now, 'perf kvm stat' is only supported on x86, let its code depend
->> on ARCH_X86 to fix building it on other architectures
->
-> Other parts of perf do this sort of thing:
->
-> #if defined(__x86_64__) || defined(__i386__)
->
-
-Yes, thanks for you point it out, David! How about this one?
-
-Subject: [PATCH 2/2] perf kvm: fix building perf kvm on PowerPC
-
-Now, 'perf kvm stat' is only supported on x86, let its code depend
-on ARCH_X86 to fix building it on other architectures
-
-Signed-off-by: Xiao Guangrong <xiaoguangrong@linux.vnet.ibm.com>
----
- tools/perf/builtin-kvm.c | 4 ++++
- 1 file changed, 4 insertions(+)
-
-diff --git a/tools/perf/builtin-kvm.c b/tools/perf/builtin-kvm.c
-index 7bd8358..6d103a9 100644
---- a/tools/perf/builtin-kvm.c
-+++ b/tools/perf/builtin-kvm.c
-@@ -22,6 +22,7 @@
- #include <pthread.h>
- #include <math.h>
-
-+#if defined(__i386__) || defined(__x86_64__)
- #include "../../arch/x86/include/asm/svm.h"
- #include "../../arch/x86/include/asm/vmx.h"
- #include "../../arch/x86/include/asm/kvm.h"
-@@ -896,6 +897,7 @@ static int kvm_cmd_stat(const char *file_name, int argc, const char **argv)
- perf_stat:
- return cmd_stat(argc, argv, NULL);
- }
-+#endif
-
- static int __cmd_record(const char *file_name, int argc, const char **argv)
- {
-@@ -1018,8 +1020,10 @@ int cmd_kvm(int argc, const char **argv, const char *prefix __maybe_unused)
- return cmd_top(argc, argv, NULL);
- else if (!strncmp(argv[0], "buildid-list", 12))
- return __cmd_buildid_list(file_name, argc, argv);
-+#if defined(__i386__) || defined(__x86_64__)
- else if (!strncmp(argv[0], "stat", 4))
- return kvm_cmd_stat(file_name, argc, argv);
-+#endif
- else
- usage_with_options(kvm_usage, kvm_options);
-
---
-1.7.12.1
-
-
-From da7616139c67ee09d223706514a92b25ef113ee3 Mon Sep 17 00:00:00 2001
-From: David Howells <dhowells@redhat.com>
-Date: Mon, 5 Nov 2012 14:33:42 +0000
-Subject: [PATCH 3/7] x86: Export asm/{svm.h,vmx.h,perf_regs.h}
-
-Export asm/{svm.h,vmx.h,perf_regs.h} so that they can be disintegrated.
-
-It looks from previous commits that the first two should have been exported,
-but the header-y lines weren't added to the Kbuild.
-
-I'm guessing that asm/perf_regs.h should be exported too.
-
-Signed-off-by: David Howells <dhowells@redhat.com>
----
- arch/x86/include/asm/Kbuild | 3 +++
- 1 file changed, 3 insertions(+)
-
-diff --git a/arch/x86/include/asm/Kbuild b/arch/x86/include/asm/Kbuild
-index 66e5f0e..79fd8a3 100644
---- a/arch/x86/include/asm/Kbuild
-+++ b/arch/x86/include/asm/Kbuild
-@@ -12,6 +12,7 @@ header-y += mce.h
- header-y += msr-index.h
- header-y += msr.h
- header-y += mtrr.h
-+header-y += perf_regs.h
- header-y += posix_types_32.h
- header-y += posix_types_64.h
- header-y += posix_types_x32.h
-@@ -19,8 +20,10 @@ header-y += prctl.h
- header-y += processor-flags.h
- header-y += ptrace-abi.h
- header-y += sigcontext32.h
-+header-y += svm.h
- header-y += ucontext.h
- header-y += vm86.h
-+header-y += vmx.h
- header-y += vsyscall.h
-
- genhdr-y += unistd_32.h
---
-1.7.12.1
-
-
-From 0d7cd7aa2500f2f4dd5b8d3cb365bbb1874f10d2 Mon Sep 17 00:00:00 2001
-From: David Howells <dhowells@redhat.com>
-Date: Mon, 5 Nov 2012 15:15:22 +0000
-Subject: [PATCH 4/7] UAPI: Export and disintegrate linux/hw_breakpoint.h
-
-Export and UAPI disintegrate linux/hw_breakpoint.h, which I think should've
-been exported previously so that perf can access the bits.
-
-Signed-off-by: David Howells <dhowells@redhat.com>
----
- include/linux/hw_breakpoint.h | 31 +------------------------------
- include/uapi/linux/Kbuild | 1 +
- include/uapi/linux/hw_breakpoint.h | 30 ++++++++++++++++++++++++++++++
- 3 files changed, 32 insertions(+), 30 deletions(-)
- create mode 100644 include/uapi/linux/hw_breakpoint.h
-
-diff --git a/include/linux/hw_breakpoint.h b/include/linux/hw_breakpoint.h
-index 6ae9c63..0464c85 100644
---- a/include/linux/hw_breakpoint.h
-+++ b/include/linux/hw_breakpoint.h
-@@ -1,35 +1,8 @@
- #ifndef _LINUX_HW_BREAKPOINT_H
- #define _LINUX_HW_BREAKPOINT_H
-
--enum {
-- HW_BREAKPOINT_LEN_1 = 1,
-- HW_BREAKPOINT_LEN_2 = 2,
-- HW_BREAKPOINT_LEN_4 = 4,
-- HW_BREAKPOINT_LEN_8 = 8,
--};
--
--enum {
-- HW_BREAKPOINT_EMPTY = 0,
-- HW_BREAKPOINT_R = 1,
-- HW_BREAKPOINT_W = 2,
-- HW_BREAKPOINT_RW = HW_BREAKPOINT_R | HW_BREAKPOINT_W,
-- HW_BREAKPOINT_X = 4,
-- HW_BREAKPOINT_INVALID = HW_BREAKPOINT_RW | HW_BREAKPOINT_X,
--};
--
--enum bp_type_idx {
-- TYPE_INST = 0,
--#ifdef CONFIG_HAVE_MIXED_BREAKPOINTS_REGS
-- TYPE_DATA = 0,
--#else
-- TYPE_DATA = 1,
--#endif
-- TYPE_MAX
--};
--
--#ifdef __KERNEL__
--
- #include <linux/perf_event.h>
-+#include <uapi/linux/hw_breakpoint.h>
-
- #ifdef CONFIG_HAVE_HW_BREAKPOINT
-
-@@ -151,6 +124,4 @@ static inline struct arch_hw_breakpoint *counter_arch_bp(struct perf_event *bp)
- }
-
- #endif /* CONFIG_HAVE_HW_BREAKPOINT */
--#endif /* __KERNEL__ */
--
- #endif /* _LINUX_HW_BREAKPOINT_H */
-diff --git a/include/uapi/linux/Kbuild b/include/uapi/linux/Kbuild
-index e194387..19e765f 100644
---- a/include/uapi/linux/Kbuild
-+++ b/include/uapi/linux/Kbuild
-@@ -415,3 +415,4 @@ header-y += wireless.h
- header-y += x25.h
- header-y += xattr.h
- header-y += xfrm.h
-+header-y += hw_breakpoint.h
-diff --git a/include/uapi/linux/hw_breakpoint.h b/include/uapi/linux/hw_breakpoint.h
-new file mode 100644
-index 0000000..b04000a
---- /dev/null
-+++ b/include/uapi/linux/hw_breakpoint.h
-@@ -0,0 +1,30 @@
-+#ifndef _UAPI_LINUX_HW_BREAKPOINT_H
-+#define _UAPI_LINUX_HW_BREAKPOINT_H
-+
-+enum {
-+ HW_BREAKPOINT_LEN_1 = 1,
-+ HW_BREAKPOINT_LEN_2 = 2,
-+ HW_BREAKPOINT_LEN_4 = 4,
-+ HW_BREAKPOINT_LEN_8 = 8,
-+};
-+
-+enum {
-+ HW_BREAKPOINT_EMPTY = 0,
-+ HW_BREAKPOINT_R = 1,
-+ HW_BREAKPOINT_W = 2,
-+ HW_BREAKPOINT_RW = HW_BREAKPOINT_R | HW_BREAKPOINT_W,
-+ HW_BREAKPOINT_X = 4,
-+ HW_BREAKPOINT_INVALID = HW_BREAKPOINT_RW | HW_BREAKPOINT_X,
-+};
-+
-+enum bp_type_idx {
-+ TYPE_INST = 0,
-+#ifdef CONFIG_HAVE_MIXED_BREAKPOINTS_REGS
-+ TYPE_DATA = 0,
-+#else
-+ TYPE_DATA = 1,
-+#endif
-+ TYPE_MAX
-+};
-+
-+#endif /* _UAPI_LINUX_HW_BREAKPOINT_H */
---
-1.7.12.1
-
-
-From fe8c6a916b2cab61db535d64d653f859b337fede Mon Sep 17 00:00:00 2001
-From: David Howells <dhowells@redhat.com>
-Date: Mon, 5 Nov 2012 15:15:24 +0000
-Subject: [PATCH 5/7] tools: Define a Makefile function to do subdir
- processing
-
-Define a Makefile function that can be called with $(call ...) to wrap the
-subdir make invocations in tools/Makefile.
-
-This will allow us in the next patch to insert bits in there to honour O=
-flags when called from the top-level Makefile.
-
-Signed-off-by: David Howells <dhowells@redhat.com>
----
- tools/Makefile | 24 ++++++++++++------------
- tools/scripts/Makefile.include | 8 ++++++++
- 2 files changed, 20 insertions(+), 12 deletions(-)
-
-diff --git a/tools/Makefile b/tools/Makefile
-index 3ae4394..1f9a529 100644
---- a/tools/Makefile
-+++ b/tools/Makefile
-@@ -31,44 +31,44 @@ help:
- @echo ' clean: a summary clean target to clean _all_ folders'
-
- cpupower: FORCE
-- $(QUIET_SUBDIR0)power/$@/ $(QUIET_SUBDIR1)
-+ $(call descend,power/$@)
-
- firewire lguest perf usb virtio vm: FORCE
-- $(QUIET_SUBDIR0)$@/ $(QUIET_SUBDIR1)
-+ $(call descend,$@)
-
- selftests: FORCE
-- $(QUIET_SUBDIR0)testing/$@/ $(QUIET_SUBDIR1)
-+ $(call descend,testing/$@)
-
- turbostat x86_energy_perf_policy: FORCE
-- $(QUIET_SUBDIR0)power/x86/$@/ $(QUIET_SUBDIR1)
-+ $(call descend,power/x86/$@)
-
- cpupower_install:
-- $(QUIET_SUBDIR0)power/$(@:_install=)/ $(QUIET_SUBDIR1) install
-+ $(call descend,power/$(@:_install=),install)
-
- firewire_install lguest_install perf_install usb_install virtio_install vm_install:
-- $(QUIET_SUBDIR0)$(@:_install=)/ $(QUIET_SUBDIR1) install
-+ $(call descend,$(@:_install=),install)
-
- selftests_install:
-- $(QUIET_SUBDIR0)testing/$(@:_clean=)/ $(QUIET_SUBDIR1) install
-+ $(call descend,testing/$(@:_clean=),install)
-
- turbostat_install x86_energy_perf_policy_install:
-- $(QUIET_SUBDIR0)power/x86/$(@:_install=)/ $(QUIET_SUBDIR1) install
-+ $(call descend,power/x86/$(@:_install=),install)
-
- install: cpupower_install firewire_install lguest_install perf_install \
- selftests_install turbostat_install usb_install virtio_install \
- vm_install x86_energy_perf_policy_install
-
- cpupower_clean:
-- $(QUIET_SUBDIR0)power/cpupower/ $(QUIET_SUBDIR1) clean
-+ $(call descend,power/cpupower,clean)
-
- firewire_clean lguest_clean perf_clean usb_clean virtio_clean vm_clean:
-- $(QUIET_SUBDIR0)$(@:_clean=)/ $(QUIET_SUBDIR1) clean
-+ $(call descend,$(@:_clean=),clean)
-
- selftests_clean:
-- $(QUIET_SUBDIR0)testing/$(@:_clean=)/ $(QUIET_SUBDIR1) clean
-+ $(call descend,testing/$(@:_clean=),clean)
-
- turbostat_clean x86_energy_perf_policy_clean:
-- $(QUIET_SUBDIR0)power/x86/$(@:_clean=)/ $(QUIET_SUBDIR1) clean
-+ $(call descend,power/x86/$(@:_clean=),clean)
-
- clean: cpupower_clean firewire_clean lguest_clean perf_clean selftests_clean \
- turbostat_clean usb_clean virtio_clean vm_clean \
-diff --git a/tools/scripts/Makefile.include b/tools/scripts/Makefile.include
-index 96ce80a..4a9e317 100644
---- a/tools/scripts/Makefile.include
-+++ b/tools/scripts/Makefile.include
-@@ -41,6 +41,14 @@ else
- NO_SUBDIR = :
- endif
-
-+#
-+# Define a callable command for descending to a new directory
-+#
-+# Call by doing: $(call descend,directory[,target])
-+#
-+descend = \
-+ $(QUIET_SUBDIR0)$(1) $(QUIET_SUBDIR1) $(2)
-+
- QUIET_SUBDIR0 = +$(MAKE) -C # space to separate -C and subdir
- QUIET_SUBDIR1 =
-
---
-1.7.12.1
-
-
-From 148e4a394ba91d46b311d2d108f1a541b337103f Mon Sep 17 00:00:00 2001
-From: David Howells <dhowells@redhat.com>
-Date: Mon, 5 Nov 2012 21:02:08 +0000
-Subject: [PATCH 6/7] tools: Honour the O= flag when tool build called from a
- higher Makefile
-
-Honour the O= flag that was passed to a higher level Makefile and then passed
-down as part of a tool build.
-
-To make this work, the top-level Makefile passes the original O= flag and
-subdir=tools to the tools/Makefile, and that in turn passes
-subdir=$(O)/$(subdir)/foodir when building tool foo in directory
-$(O)/$(subdir)/foodir (where the intervening slashes aren't added if an
-element is missing).
-
-For example, take perf. This is found in tools/perf/. Assume we're building
-into directory ~/zebra/, so we pass O=~/zebra to make. Dependening on where
-we run the build from, we see:
-
- make run in dir $(OUTPUT) dir
- ======================= ==================
- linux ~/zebra/tools/perf/
- linux/tools ~/zebra/perf/
- linux/tools/perf ~/zebra/
-
-and if O= is not set, we get:
-
- make run in dir $(OUTPUT) dir
- ======================= ==================
- linux linux/tools/perf/
- linux/tools linux/tools/perf/
- linux/tools/perf linux/tools/perf/
-
-The output directories are created by the descend function if they don't
-already exist.
-
-Signed-off-by: David Howells <dhowells@redhat.com>
----
- Makefile | 6 ++++--
- tools/scripts/Makefile.include | 17 +++++++++++++----
- 2 files changed, 17 insertions(+), 6 deletions(-)
-
-diff --git a/Makefile b/Makefile
-index 9f6ca12..fda5b97 100644
---- a/Makefile
-+++ b/Makefile
-@@ -1321,10 +1321,12 @@ kernelversion:
-
- # Clear a bunch of variables before executing the submake
- tools/: FORCE
-- $(Q)$(MAKE) LDFLAGS= MAKEFLAGS= -C $(src)/tools/
-+ $(Q)mkdir -p $(objtree)/tools
-+ $(Q)$(MAKE) LDFLAGS= MAKEFLAGS= O=$(objtree) subdir=tools -C $(src)/tools/
-
- tools/%: FORCE
-- $(Q)$(MAKE) LDFLAGS= MAKEFLAGS= -C $(src)/tools/ $*
-+ $(Q)mkdir -p $(objtree)/tools
-+ $(Q)$(MAKE) LDFLAGS= MAKEFLAGS= O=$(objtree) subdir=tools -C $(src)/tools/ $*
-
- # Single targets
- # ---------------------------------------------------------------------------
-diff --git a/tools/scripts/Makefile.include b/tools/scripts/Makefile.include
-index 4a9e317..87467b1 100644
---- a/tools/scripts/Makefile.include
-+++ b/tools/scripts/Makefile.include
-@@ -1,8 +1,11 @@
--ifeq ("$(origin O)", "command line")
-+ifeq ($(origin O), command line)
- dummy := $(if $(shell test -d $(O) || echo $(O)),$(error O=$(O) does not exist),)
- ABSOLUTE_O := $(shell cd $(O) ; pwd)
-- OUTPUT := $(ABSOLUTE_O)/
-+ OUTPUT := $(ABSOLUTE_O)/$(if $(subdir),$(subdir)/)
- COMMAND_O := O=$(ABSOLUTE_O)
-+ifeq ($(objtree),)
-+ objtree := $(O)
-+endif
- endif
-
- ifneq ($(OUTPUT),)
-@@ -47,9 +50,10 @@ endif
- # Call by doing: $(call descend,directory[,target])
- #
- descend = \
-- $(QUIET_SUBDIR0)$(1) $(QUIET_SUBDIR1) $(2)
-+ +mkdir -p $(OUTPUT)$(1) && \
-+ $(MAKE) $(COMMAND_O) subdir=$(if $(subdir),$(subdir)/$(1),$(1)) $(PRINT_DIR) -C $(1)
-
--QUIET_SUBDIR0 = +$(MAKE) -C # space to separate -C and subdir
-+QUIET_SUBDIR0 = +$(MAKE) $(COMMAND_O) -C # space to separate -C and subdir
- QUIET_SUBDIR1 =
-
- ifneq ($(findstring $(MAKEFLAGS),s),s)
-@@ -64,5 +68,10 @@ ifndef V
- $(MAKE) $(PRINT_DIR) -C $$subdir
- QUIET_FLEX = @echo ' ' FLEX $@;
- QUIET_BISON = @echo ' ' BISON $@;
-+
-+ descend = \
-+ @echo ' ' DESCEND $(1); \
-+ mkdir -p $(OUTPUT)$(1) && \
-+ $(MAKE) $(COMMAND_O) subdir=$(if $(subdir),$(subdir)/$(1),$(1)) $(PRINT_DIR) -C $(1)
- endif
- endif
---
-1.7.12.1
-
-
-From 2ed84acacff79f3b469fb53627dd042c53f2fcaa Mon Sep 17 00:00:00 2001
-From: David Howells <dhowells@redhat.com>
-Date: Mon, 5 Nov 2012 23:03:12 +0000
-Subject: [PATCH 7/7] perf: Make perf build for x86 with UAPI disintegration
- applied
-
-Make perf build for x86 once the UAPI disintegration patches for that arch
-have been applied by adding the appropriate -I flags - in the right order -
-and then converting some #includes that use ../.. notation to find main kernel
-headerfiles to use <asm/foo.h> and <linux/foo.h> instead.
-
-Note that -Iarch/foo/include/uapi is present _before_ -Iarch/foo/include.
-This makes sure we get the userspace version of the pt_regs struct. Ideally,
-we wouldn't have the latter -I flag at all, but unfortunately we want
-asm/svm.h and asm/vmx.h in buildin-kvm.c and these aren't part of the UAPI -
-at least not for x86. I wonder if the bits outside of the __KERNEL__ guards
-*should* be transferred there.
-
-I note also that perf seems to do its dependency handling manually by listing
-all the header files it might want to use in LIB_H in the Makefile. Can this
-be changed to use -MD?
-
-Signed-off-by: David Howells <dhowells@redhat.com>
----
- tools/perf/Makefile | 26 +++++++++++++++++++++++++-
- tools/perf/arch/x86/include/perf_regs.h | 2 +-
- tools/perf/builtin-kvm.c | 6 +++---
- tools/perf/builtin-test.c | 2 +-
- tools/perf/perf.h | 16 +++-------------
- tools/perf/util/evsel.c | 4 ++--
- tools/perf/util/evsel.h | 2 +-
- tools/perf/util/header.h | 2 +-
- tools/perf/util/parse-events-test.c | 2 +-
- tools/perf/util/parse-events.c | 2 +-
- tools/perf/util/parse-events.h | 2 +-
- tools/perf/util/pmu.h | 2 +-
- tools/perf/util/session.h | 2 +-
- 13 files changed, 42 insertions(+), 28 deletions(-)
-
-diff --git a/tools/perf/Makefile b/tools/perf/Makefile
-index 00deed4d..4d4b54f 100644
---- a/tools/perf/Makefile
-+++ b/tools/perf/Makefile
-@@ -169,7 +169,31 @@ endif
-
- ### --- END CONFIGURATION SECTION ---
-
--BASIC_CFLAGS = -Iutil/include -Iarch/$(ARCH)/include -I$(OUTPUT)util -I$(TRACE_EVENT_DIR) -D_LARGEFILE64_SOURCE -D_FILE_OFFSET_BITS=64 -D_GNU_SOURCE
-+ifeq ($(srctree),)
-+srctree := $(patsubst %/,%,$(dir $(shell pwd)))
-+srctree := $(patsubst %/,%,$(dir $(srctree)))
-+#$(info Determined 'srctree' to be $(srctree))
-+endif
-+
-+ifneq ($(objtree),)
-+#$(info Determined 'objtree' to be $(objtree))
-+endif
-+
-+ifneq ($(OUTPUT),)
-+#$(info Determined 'OUTPUT' to be $(OUTPUT))
-+endif
-+
-+BASIC_CFLAGS = \
-+ -Iutil/include \
-+ -Iarch/$(ARCH)/include \
-+ $(if $(objtree),-I$(objtree)/arch/$(ARCH)/include/generated/uapi) \
-+ -I$(srctree)/arch/$(ARCH)/include/uapi \
-+ -I$(srctree)/arch/$(ARCH)/include \
-+ $(if $(objtree),-I$(objtree)/include/generated/uapi) \
-+ -I$(srctree)/include/uapi \
-+ -I$(OUTPUT)util \
-+ -I$(TRACE_EVENT_DIR) \
-+ -D_LARGEFILE64_SOURCE -D_FILE_OFFSET_BITS=64 -D_GNU_SOURCE
- BASIC_LDFLAGS =
-
- # Guard against environment variables
-diff --git a/tools/perf/arch/x86/include/perf_regs.h b/tools/perf/arch/x86/include/perf_regs.h
-index 46fc9f1..7fcdcdb 100644
---- a/tools/perf/arch/x86/include/perf_regs.h
-+++ b/tools/perf/arch/x86/include/perf_regs.h
-@@ -3,7 +3,7 @@
-
- #include <stdlib.h>
- #include "../../util/types.h"
--#include "../../../../../arch/x86/include/asm/perf_regs.h"
-+#include <asm/perf_regs.h>
-
- #ifndef ARCH_X86_64
- #define PERF_REGS_MASK ((1ULL << PERF_REG_X86_32_MAX) - 1)
-diff --git a/tools/perf/builtin-kvm.c b/tools/perf/builtin-kvm.c
-index 6d103a9..283b439 100644
---- a/tools/perf/builtin-kvm.c
-+++ b/tools/perf/builtin-kvm.c
-@@ -23,9 +23,9 @@
- #include <math.h>
-
- #if defined(__i386__) || defined(__x86_64__)
--#include "../../arch/x86/include/asm/svm.h"
--#include "../../arch/x86/include/asm/vmx.h"
--#include "../../arch/x86/include/asm/kvm.h"
-+#include <asm/svm.h>
-+#include <asm/vmx.h>
-+#include <asm/kvm.h>
-
- struct event_key {
- #define INVALID_KEY (~0ULL)
-diff --git a/tools/perf/builtin-test.c b/tools/perf/builtin-test.c
-index 484f26c..3626a01 100644
---- a/tools/perf/builtin-test.c
-+++ b/tools/perf/builtin-test.c
-@@ -15,7 +15,7 @@
- #include "util/thread_map.h"
- #include "util/pmu.h"
- #include "event-parse.h"
--#include "../../include/linux/hw_breakpoint.h"
-+#include "../../include/uapi/linux/hw_breakpoint.h"
-
- #include <sys/mman.h>
-
-diff --git a/tools/perf/perf.h b/tools/perf/perf.h
-index c50985e..238f923 100644
---- a/tools/perf/perf.h
-+++ b/tools/perf/perf.h
-@@ -5,8 +5,9 @@ struct winsize;
-
- void get_term_dimensions(struct winsize *ws);
-
-+#include <asm/unistd.h>
-+
- #if defined(__i386__)
--#include "../../arch/x86/include/asm/unistd.h"
- #define rmb() asm volatile("lock; addl $0,0(%%esp)" ::: "memory")
- #define cpu_relax() asm volatile("rep; nop" ::: "memory");
- #define CPUINFO_PROC "model name"
-@@ -16,7 +17,6 @@ void get_term_dimensions(struct winsize *ws);
- #endif
-
- #if defined(__x86_64__)
--#include "../../arch/x86/include/asm/unistd.h"
- #define rmb() asm volatile("lfence" ::: "memory")
- #define cpu_relax() asm volatile("rep; nop" ::: "memory");
- #define CPUINFO_PROC "model name"
-@@ -26,20 +26,17 @@ void get_term_dimensions(struct winsize *ws);
- #endif
-
- #ifdef __powerpc__
--#include "../../arch/powerpc/include/asm/unistd.h"
- #define rmb() asm volatile ("sync" ::: "memory")
- #define cpu_relax() asm volatile ("" ::: "memory");
- #define CPUINFO_PROC "cpu"
- #endif
-
- #ifdef __s390__
--#include "../../arch/s390/include/asm/unistd.h"
- #define rmb() asm volatile("bcr 15,0" ::: "memory")
- #define cpu_relax() asm volatile("" ::: "memory");
- #endif
-
- #ifdef __sh__
--#include "../../arch/sh/include/asm/unistd.h"
- #if defined(__SH4A__) || defined(__SH5__)
- # define rmb() asm volatile("synco" ::: "memory")
- #else
-@@ -50,35 +47,30 @@ void get_term_dimensions(struct winsize *ws);
- #endif
-
- #ifdef __hppa__
--#include "../../arch/parisc/include/asm/unistd.h"
- #define rmb() asm volatile("" ::: "memory")
- #define cpu_relax() asm volatile("" ::: "memory");
- #define CPUINFO_PROC "cpu"
- #endif
-
- #ifdef __sparc__
--#include "../../arch/sparc/include/uapi/asm/unistd.h"
- #define rmb() asm volatile("":::"memory")
- #define cpu_relax() asm volatile("":::"memory")
- #define CPUINFO_PROC "cpu"
- #endif
-
- #ifdef __alpha__
--#include "../../arch/alpha/include/asm/unistd.h"
- #define rmb() asm volatile("mb" ::: "memory")
- #define cpu_relax() asm volatile("" ::: "memory")
- #define CPUINFO_PROC "cpu model"
- #endif
-
- #ifdef __ia64__
--#include "../../arch/ia64/include/asm/unistd.h"
- #define rmb() asm volatile ("mf" ::: "memory")
- #define cpu_relax() asm volatile ("hint @pause" ::: "memory")
- #define CPUINFO_PROC "model name"
- #endif
-
- #ifdef __arm__
--#include "../../arch/arm/include/asm/unistd.h"
- /*
- * Use the __kuser_memory_barrier helper in the CPU helper page. See
- * arch/arm/kernel/entry-armv.S in the kernel source for details.
-@@ -89,13 +81,11 @@ void get_term_dimensions(struct winsize *ws);
- #endif
-
- #ifdef __aarch64__
--#include "../../arch/arm64/include/asm/unistd.h"
- #define rmb() asm volatile("dmb ld" ::: "memory")
- #define cpu_relax() asm volatile("yield" ::: "memory")
- #endif
-
- #ifdef __mips__
--#include "../../arch/mips/include/asm/unistd.h"
- #define rmb() asm volatile( \
- ".set mips2\n\t" \
- "sync\n\t" \
-@@ -112,7 +102,7 @@ void get_term_dimensions(struct winsize *ws);
- #include <sys/types.h>
- #include <sys/syscall.h>
-
--#include "../../include/uapi/linux/perf_event.h"
-+#include <linux/perf_event.h>
- #include "util/types.h"
- #include <stdbool.h>
-
-diff --git a/tools/perf/util/evsel.c b/tools/perf/util/evsel.c
-index 618d411..d144d46 100644
---- a/tools/perf/util/evsel.c
-+++ b/tools/perf/util/evsel.c
-@@ -18,8 +18,8 @@
- #include "cpumap.h"
- #include "thread_map.h"
- #include "target.h"
--#include "../../../include/linux/hw_breakpoint.h"
--#include "../../../include/uapi/linux/perf_event.h"
-+#include <linux/hw_breakpoint.h>
-+#include <linux/perf_event.h>
- #include "perf_regs.h"
-
- #define FD(e, x, y) (*(int *)xyarray__entry(e->fd, x, y))
-diff --git a/tools/perf/util/evsel.h b/tools/perf/util/evsel.h
-index 6f94d6d..bb84275 100644
---- a/tools/perf/util/evsel.h
-+++ b/tools/perf/util/evsel.h
-@@ -3,7 +3,7 @@
-
- #include <linux/list.h>
- #include <stdbool.h>
--#include "../../../include/uapi/linux/perf_event.h"
-+#include <linux/perf_event.h>
- #include "types.h"
- #include "xyarray.h"
- #include "cgroup.h"
-diff --git a/tools/perf/util/header.h b/tools/perf/util/header.h
-index 879d215..9bc0078 100644
---- a/tools/perf/util/header.h
-+++ b/tools/perf/util/header.h
-@@ -1,7 +1,7 @@
- #ifndef __PERF_HEADER_H
- #define __PERF_HEADER_H
-
--#include "../../../include/uapi/linux/perf_event.h"
-+#include <linux/perf_event.h>
- #include <sys/types.h>
- #include <stdbool.h>
- #include "types.h"
-diff --git a/tools/perf/util/parse-events-test.c b/tools/perf/util/parse-events-test.c
-index 516ecd9..6ef213b 100644
---- a/tools/perf/util/parse-events-test.c
-+++ b/tools/perf/util/parse-events-test.c
-@@ -3,7 +3,7 @@
- #include "evsel.h"
- #include "evlist.h"
- #include "sysfs.h"
--#include "../../../include/linux/hw_breakpoint.h"
-+#include <linux/hw_breakpoint.h>
-
- #define TEST_ASSERT_VAL(text, cond) \
- do { \
-diff --git a/tools/perf/util/parse-events.c b/tools/perf/util/parse-events.c
-index 75c7b0f..6b6d03e 100644
---- a/tools/perf/util/parse-events.c
-+++ b/tools/perf/util/parse-events.c
-@@ -1,4 +1,4 @@
--#include "../../../include/linux/hw_breakpoint.h"
-+#include <linux/hw_breakpoint.h>
- #include "util.h"
- #include "../perf.h"
- #include "evlist.h"
-diff --git a/tools/perf/util/parse-events.h b/tools/perf/util/parse-events.h
-index 839230c..2820c40 100644
---- a/tools/perf/util/parse-events.h
-+++ b/tools/perf/util/parse-events.h
-@@ -7,7 +7,7 @@
- #include <linux/list.h>
- #include <stdbool.h>
- #include "types.h"
--#include "../../../include/uapi/linux/perf_event.h"
-+#include <linux/perf_event.h>
- #include "types.h"
-
- struct list_head;
-diff --git a/tools/perf/util/pmu.h b/tools/perf/util/pmu.h
-index 39f3aba..fdeb8ac 100644
---- a/tools/perf/util/pmu.h
-+++ b/tools/perf/util/pmu.h
-@@ -2,7 +2,7 @@
- #define __PMU_H
-
- #include <linux/bitops.h>
--#include "../../../include/uapi/linux/perf_event.h"
-+#include <linux/perf_event.h>
-
- enum {
- PERF_PMU_FORMAT_VALUE_CONFIG,
-diff --git a/tools/perf/util/session.h b/tools/perf/util/session.h
-index dd64261..0eae00a 100644
---- a/tools/perf/util/session.h
-+++ b/tools/perf/util/session.h
-@@ -7,7 +7,7 @@
- #include "symbol.h"
- #include "thread.h"
- #include <linux/rbtree.h>
--#include "../../../include/uapi/linux/perf_event.h"
-+#include <linux/perf_event.h>
-
- struct sample_queue;
- struct ip_callchain;
---
-1.7.12.1
-
diff --git a/freed-ora/current/master/sources b/freed-ora/current/master/sources
index 9765b4db3..ac32f5273 100644
--- a/freed-ora/current/master/sources
+++ b/freed-ora/current/master/sources
@@ -1,3 +1,2 @@
a2312edd0265b5b07bd4b50afae2b380 linux-libre-3.6-gnu.tar.xz
-6fe955e3dca54068c6aee5cf3a9b5e76 patch-3.6-gnu-3.7-rc7-gnu.xz
-5fad2c5202ae8e9376edea2bd86671b4 patch-3.7-rc7-git2.xz
+4efda14c3cc09eef4a7ac9dda72efb81 patch-3.6-gnu-3.7-rc8-gnu.xz
OpenPOWER on IntegriCloud