diff options
author | Alexandre Oliva <lxoliva@fsfla.org> | 2012-12-07 02:48:02 +0000 |
---|---|---|
committer | Alexandre Oliva <lxoliva@fsfla.org> | 2012-12-07 02:48:02 +0000 |
commit | 92a54cec6ba672d31e88ea36886f769566cd02d8 (patch) | |
tree | 8aa9920ae9c77f869dbc664364a3d962fe81ae37 /freed-ora/current/master | |
parent | 6b81e6e2f6ea5ad4cbfadb9e1212143bc63ce7ba (diff) | |
download | linux-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-generic | 8 | ||||
-rw-r--r-- | freed-ora/current/master/config-nodebug | 112 | ||||
-rw-r--r-- | freed-ora/current/master/config-x86-generic | 2 | ||||
-rw-r--r-- | freed-ora/current/master/i82975x-edac-fix.patch | 855 | ||||
-rw-r--r-- | freed-ora/current/master/kernel.spec | 26 | ||||
-rw-r--r-- | freed-ora/current/master/patch-3.6-gnu-3.7-rc7-gnu.xz.sign | 7 | ||||
-rw-r--r-- | freed-ora/current/master/patch-3.6-gnu-3.7-rc8-gnu.xz.sign | 7 | ||||
-rw-r--r-- | freed-ora/current/master/perf-uapi-fixes2.patch | 1132 | ||||
-rw-r--r-- | freed-ora/current/master/sources | 3 |
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 |