Merge with /home/shaggy/git/linus-clean/
This commit is contained in:
commit
01fa90cb2f
|
@ -33,3 +33,6 @@ The result of the execution of this aml method is
|
||||||
attached to /proc/acpi/hotkey/poll_method, which is dnyamically
|
attached to /proc/acpi/hotkey/poll_method, which is dnyamically
|
||||||
created. Please use command "cat /proc/acpi/hotkey/polling_method"
|
created. Please use command "cat /proc/acpi/hotkey/polling_method"
|
||||||
to retrieve it.
|
to retrieve it.
|
||||||
|
|
||||||
|
Note: Use cmdline "acpi_generic_hotkey" to over-ride
|
||||||
|
loading any platform specific drivers.
|
||||||
|
|
|
@ -159,6 +159,11 @@ running once the system is up.
|
||||||
|
|
||||||
acpi_fake_ecdt [HW,ACPI] Workaround failure due to BIOS lacking ECDT
|
acpi_fake_ecdt [HW,ACPI] Workaround failure due to BIOS lacking ECDT
|
||||||
|
|
||||||
|
acpi_generic_hotkey [HW,ACPI]
|
||||||
|
Allow consolidated generic hotkey driver to
|
||||||
|
over-ride platform specific driver.
|
||||||
|
See also Documentation/acpi-hotkey.txt.
|
||||||
|
|
||||||
ad1816= [HW,OSS]
|
ad1816= [HW,OSS]
|
||||||
Format: <io>,<irq>,<dma>,<dma2>
|
Format: <io>,<irq>,<dma>,<dma2>
|
||||||
See also Documentation/sound/oss/AD1816.
|
See also Documentation/sound/oss/AD1816.
|
||||||
|
|
|
@ -266,20 +266,6 @@ port an old driver to the new PCI interface. They are no longer present
|
||||||
in the kernel as they aren't compatible with hotplug or PCI domains or
|
in the kernel as they aren't compatible with hotplug or PCI domains or
|
||||||
having sane locking.
|
having sane locking.
|
||||||
|
|
||||||
pcibios_present() and Since ages, you don't need to test presence
|
|
||||||
pci_present() of PCI subsystem when trying to talk to it.
|
|
||||||
If it's not there, the list of PCI devices
|
|
||||||
is empty and all functions for searching for
|
|
||||||
devices just return NULL.
|
|
||||||
pcibios_(read|write)_* Superseded by their pci_(read|write)_*
|
|
||||||
counterparts.
|
|
||||||
pcibios_find_* Superseded by their pci_get_* counterparts.
|
|
||||||
pci_for_each_dev() Superseded by pci_get_device()
|
|
||||||
pci_for_each_dev_reverse() Superseded by pci_find_device_reverse()
|
|
||||||
pci_for_each_bus() Superseded by pci_find_next_bus()
|
|
||||||
pci_find_device() Superseded by pci_get_device()
|
pci_find_device() Superseded by pci_get_device()
|
||||||
pci_find_subsys() Superseded by pci_get_subsys()
|
pci_find_subsys() Superseded by pci_get_subsys()
|
||||||
pci_find_slot() Superseded by pci_get_slot()
|
pci_find_slot() Superseded by pci_get_slot()
|
||||||
pcibios_find_class() Superseded by pci_get_class()
|
|
||||||
pci_find_class() Superseded by pci_get_class()
|
|
||||||
pci_(read|write)_*_nodev() Superseded by pci_bus_(read|write)_*()
|
|
||||||
|
|
12
MAINTAINERS
12
MAINTAINERS
|
@ -1825,6 +1825,12 @@ P: Greg Kroah-Hartman
|
||||||
M: greg@kroah.com
|
M: greg@kroah.com
|
||||||
S: Maintained
|
S: Maintained
|
||||||
|
|
||||||
|
PCIE HOTPLUG DRIVER
|
||||||
|
P: Kristen Carlson Accardi
|
||||||
|
M: kristen.c.accardi@intel.com
|
||||||
|
L: pcihpd-discuss@lists.sourceforge.net
|
||||||
|
S: Maintained
|
||||||
|
|
||||||
PCMCIA SUBSYSTEM
|
PCMCIA SUBSYSTEM
|
||||||
P: Linux PCMCIA Team
|
P: Linux PCMCIA Team
|
||||||
L: http://lists.infradead.org/mailman/listinfo/linux-pcmcia
|
L: http://lists.infradead.org/mailman/listinfo/linux-pcmcia
|
||||||
|
@ -2201,6 +2207,12 @@ W: http://projects.buici.com/arm
|
||||||
L: linux-arm-kernel@lists.arm.linux.org.uk (subscribers-only)
|
L: linux-arm-kernel@lists.arm.linux.org.uk (subscribers-only)
|
||||||
S: Maintained
|
S: Maintained
|
||||||
|
|
||||||
|
SHPC HOTPLUG DRIVER
|
||||||
|
P: Kristen Carlson Accardi
|
||||||
|
M: kristen.c.accardi@intel.com
|
||||||
|
L: pcihpd-discuss@lists.sourceforge.net
|
||||||
|
S: Maintained
|
||||||
|
|
||||||
SPARC (sparc32):
|
SPARC (sparc32):
|
||||||
P: William L. Irwin
|
P: William L. Irwin
|
||||||
M: wli@holomorphy.com
|
M: wli@holomorphy.com
|
||||||
|
|
|
@ -32,32 +32,12 @@
|
||||||
/* The HvReleaseData is the root of the information shared between
|
/* The HvReleaseData is the root of the information shared between
|
||||||
* the hypervisor and Linux.
|
* the hypervisor and Linux.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
/*
|
|
||||||
* WARNING - magic here
|
|
||||||
*
|
|
||||||
* Ok, this is a horrid hack below, but marginally better than the
|
|
||||||
* alternatives. What we really want is just to initialize
|
|
||||||
* hvReleaseData in C as in the #if 0 section here. However, gcc
|
|
||||||
* refuses to believe that (u32)&x is a constant expression, so will
|
|
||||||
* not allow the xMsNucDataOffset field to be properly initialized.
|
|
||||||
* So, we declare hvReleaseData in inline asm instead. We use inline
|
|
||||||
* asm, rather than a .S file, because the assembler won't generate
|
|
||||||
* the necessary relocation for the LparMap either, unless that symbol
|
|
||||||
* is declared in the same source file. Finally, we put the asm in a
|
|
||||||
* dummy, attribute-used function, instead of at file scope, because
|
|
||||||
* file scope asms don't allow contraints. We want to use the "i"
|
|
||||||
* constraints to put sizeof() and offsetof() expressions in there,
|
|
||||||
* because including asm/offsets.h in C code then stringifying causes
|
|
||||||
* all manner of warnings.
|
|
||||||
*/
|
|
||||||
#if 0
|
|
||||||
struct HvReleaseData hvReleaseData = {
|
struct HvReleaseData hvReleaseData = {
|
||||||
.xDesc = 0xc8a5d9c4, /* "HvRD" ebcdic */
|
.xDesc = 0xc8a5d9c4, /* "HvRD" ebcdic */
|
||||||
.xSize = sizeof(struct HvReleaseData),
|
.xSize = sizeof(struct HvReleaseData),
|
||||||
.xVpdAreasPtrOffset = offsetof(struct naca_struct, xItVpdAreas),
|
.xVpdAreasPtrOffset = offsetof(struct naca_struct, xItVpdAreas),
|
||||||
.xSlicNacaAddr = &naca, /* 64-bit Naca address */
|
.xSlicNacaAddr = &naca, /* 64-bit Naca address */
|
||||||
.xMsNucDataOffset = (u32)((unsigned long)&xLparMap - KERNELBASE),
|
.xMsNucDataOffset = LPARMAP_PHYS,
|
||||||
.xFlags = HVREL_TAGSINACTIVE /* tags inactive */
|
.xFlags = HVREL_TAGSINACTIVE /* tags inactive */
|
||||||
/* 64 bit */
|
/* 64 bit */
|
||||||
/* shared processors */
|
/* shared processors */
|
||||||
|
@ -70,63 +50,6 @@ struct HvReleaseData hvReleaseData = {
|
||||||
0xa7, 0x40, 0xf2, 0x4b,
|
0xa7, 0x40, 0xf2, 0x4b,
|
||||||
0xf4, 0x4b, 0xf6, 0xf4 },
|
0xf4, 0x4b, 0xf6, 0xf4 },
|
||||||
};
|
};
|
||||||
#endif
|
|
||||||
|
|
||||||
|
|
||||||
extern struct HvReleaseData hvReleaseData;
|
|
||||||
|
|
||||||
static void __attribute_used__ hvReleaseData_wrapper(void)
|
|
||||||
{
|
|
||||||
/* This doesn't appear to need any alignment (even 4 byte) */
|
|
||||||
asm volatile (
|
|
||||||
" lparMapPhys = xLparMap - %3\n"
|
|
||||||
" .data\n"
|
|
||||||
" .globl hvReleaseData\n"
|
|
||||||
"hvReleaseData:\n"
|
|
||||||
" .long 0xc8a5d9c4\n" /* xDesc */
|
|
||||||
/* "HvRD" in ebcdic */
|
|
||||||
" .short %0\n" /* xSize */
|
|
||||||
" .short %1\n" /* xVpdAreasPtrOffset */
|
|
||||||
" .llong naca\n" /* xSlicNacaAddr */
|
|
||||||
" .long lparMapPhys\n" /* xMsNucDataOffset */
|
|
||||||
" .long 0\n" /* xRsvd1 */
|
|
||||||
" .short %2\n" /* xFlags */
|
|
||||||
" .short 4\n" /* xVrmIndex - v5r2m0 */
|
|
||||||
" .short 3\n" /* xMinSupportedPlicVrmIndex - v5r1m0 */
|
|
||||||
" .short 3\n" /* xMinCompatablePlicVrmIndex - v5r1m0 */
|
|
||||||
" .long 0xd38995a4\n" /* xVrmName */
|
|
||||||
" .long 0xa740f24b\n" /* "Linux 2.4.64" ebcdic */
|
|
||||||
" .long 0xf44bf6f4\n"
|
|
||||||
" . = hvReleaseData + %0\n"
|
|
||||||
" .previous\n"
|
|
||||||
: : "i"(sizeof(hvReleaseData)),
|
|
||||||
"i"(offsetof(struct naca_struct, xItVpdAreas)),
|
|
||||||
"i"(HVREL_TAGSINACTIVE /* tags inactive, 64 bit, */
|
|
||||||
/* shared processors, HMT allowed */
|
|
||||||
| 6), /* TEMP: This allows non-GA drivers */
|
|
||||||
"i"(KERNELBASE)
|
|
||||||
);
|
|
||||||
}
|
|
||||||
|
|
||||||
struct LparMap __attribute__((aligned (16))) xLparMap = {
|
|
||||||
.xNumberEsids = HvEsidsToMap,
|
|
||||||
.xNumberRanges = HvRangesToMap,
|
|
||||||
.xSegmentTableOffs = STAB0_PAGE,
|
|
||||||
|
|
||||||
.xEsids = {
|
|
||||||
{ .xKernelEsid = GET_ESID(KERNELBASE),
|
|
||||||
.xKernelVsid = KERNEL_VSID(KERNELBASE), },
|
|
||||||
{ .xKernelEsid = GET_ESID(VMALLOCBASE),
|
|
||||||
.xKernelVsid = KERNEL_VSID(VMALLOCBASE), },
|
|
||||||
},
|
|
||||||
|
|
||||||
.xRanges = {
|
|
||||||
{ .xPages = HvPagesToMap,
|
|
||||||
.xOffset = 0,
|
|
||||||
.xVPN = KERNEL_VSID(KERNELBASE) << (SID_SHIFT - PAGE_SHIFT),
|
|
||||||
},
|
|
||||||
},
|
|
||||||
};
|
|
||||||
|
|
||||||
extern void system_reset_iSeries(void);
|
extern void system_reset_iSeries(void);
|
||||||
extern void machine_check_iSeries(void);
|
extern void machine_check_iSeries(void);
|
||||||
|
|
|
@ -73,3 +73,8 @@ obj-$(CONFIG_ALTIVEC) += vecemu.o vector.o
|
||||||
obj-$(CONFIG_KPROBES) += kprobes.o
|
obj-$(CONFIG_KPROBES) += kprobes.o
|
||||||
|
|
||||||
CFLAGS_ioctl32.o += -Ifs/
|
CFLAGS_ioctl32.o += -Ifs/
|
||||||
|
|
||||||
|
ifeq ($(CONFIG_PPC_ISERIES),y)
|
||||||
|
arch/ppc64/kernel/head.o: arch/ppc64/kernel/lparmap.s
|
||||||
|
AFLAGS_head.o += -Iarch/ppc64/kernel
|
||||||
|
endif
|
||||||
|
|
|
@ -38,6 +38,7 @@
|
||||||
#include <asm/cputable.h>
|
#include <asm/cputable.h>
|
||||||
#include <asm/setup.h>
|
#include <asm/setup.h>
|
||||||
#include <asm/hvcall.h>
|
#include <asm/hvcall.h>
|
||||||
|
#include <asm/iSeries/LparMap.h>
|
||||||
|
|
||||||
#ifdef CONFIG_PPC_ISERIES
|
#ifdef CONFIG_PPC_ISERIES
|
||||||
#define DO_SOFT_DISABLE
|
#define DO_SOFT_DISABLE
|
||||||
|
@ -679,6 +680,11 @@ hardware_interrupt_iSeries_masked:
|
||||||
.globl fwnmi_data_area
|
.globl fwnmi_data_area
|
||||||
fwnmi_data_area:
|
fwnmi_data_area:
|
||||||
|
|
||||||
|
#ifdef CONFIG_PPC_ISERIES
|
||||||
|
. = LPARMAP_PHYS
|
||||||
|
#include "lparmap.s"
|
||||||
|
#endif /* CONFIG_PPC_ISERIES */
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Vectors for the FWNMI option. Share common code.
|
* Vectors for the FWNMI option. Share common code.
|
||||||
*/
|
*/
|
||||||
|
|
|
@ -0,0 +1,31 @@
|
||||||
|
/*
|
||||||
|
* Copyright (C) 2005 Stephen Rothwell IBM Corp.
|
||||||
|
*
|
||||||
|
* This program is free software; you can redistribute it and/or
|
||||||
|
* modify it under the terms of the GNU General Public License
|
||||||
|
* as published by the Free Software Foundation; either version
|
||||||
|
* 2 of the License, or (at your option) any later version.
|
||||||
|
*/
|
||||||
|
#include <asm/mmu.h>
|
||||||
|
#include <asm/page.h>
|
||||||
|
#include <asm/iSeries/LparMap.h>
|
||||||
|
|
||||||
|
const struct LparMap __attribute__((__section__(".text"))) xLparMap = {
|
||||||
|
.xNumberEsids = HvEsidsToMap,
|
||||||
|
.xNumberRanges = HvRangesToMap,
|
||||||
|
.xSegmentTableOffs = STAB0_PAGE,
|
||||||
|
|
||||||
|
.xEsids = {
|
||||||
|
{ .xKernelEsid = GET_ESID(KERNELBASE),
|
||||||
|
.xKernelVsid = KERNEL_VSID(KERNELBASE), },
|
||||||
|
{ .xKernelEsid = GET_ESID(VMALLOCBASE),
|
||||||
|
.xKernelVsid = KERNEL_VSID(VMALLOCBASE), },
|
||||||
|
},
|
||||||
|
|
||||||
|
.xRanges = {
|
||||||
|
{ .xPages = HvPagesToMap,
|
||||||
|
.xOffset = 0,
|
||||||
|
.xVPN = KERNEL_VSID(KERNELBASE) << (SID_SHIFT - PAGE_SHIFT),
|
||||||
|
},
|
||||||
|
},
|
||||||
|
};
|
|
@ -71,7 +71,7 @@ EXPORT_SYMBOL(acpi_in_debugger);
|
||||||
extern char line_buf[80];
|
extern char line_buf[80];
|
||||||
#endif /*ENABLE_DEBUGGER*/
|
#endif /*ENABLE_DEBUGGER*/
|
||||||
|
|
||||||
int acpi_specific_hotkey_enabled;
|
int acpi_specific_hotkey_enabled = TRUE;
|
||||||
EXPORT_SYMBOL(acpi_specific_hotkey_enabled);
|
EXPORT_SYMBOL(acpi_specific_hotkey_enabled);
|
||||||
|
|
||||||
static unsigned int acpi_irq_irq;
|
static unsigned int acpi_irq_irq;
|
||||||
|
@ -1162,11 +1162,11 @@ __setup("acpi_wake_gpes_always_on", acpi_wake_gpes_always_on_setup);
|
||||||
int __init
|
int __init
|
||||||
acpi_hotkey_setup(char *str)
|
acpi_hotkey_setup(char *str)
|
||||||
{
|
{
|
||||||
acpi_specific_hotkey_enabled = TRUE;
|
acpi_specific_hotkey_enabled = FALSE;
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
__setup("acpi_specific_hotkey", acpi_hotkey_setup);
|
__setup("acpi_generic_hotkey", acpi_hotkey_setup);
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* max_cstate is defined in the base kernel so modules can
|
* max_cstate is defined in the base kernel so modules can
|
||||||
|
|
|
@ -299,6 +299,11 @@ static void class_dev_release(struct kobject * kobj)
|
||||||
|
|
||||||
pr_debug("device class '%s': release.\n", cd->class_id);
|
pr_debug("device class '%s': release.\n", cd->class_id);
|
||||||
|
|
||||||
|
if (cd->devt_attr) {
|
||||||
|
kfree(cd->devt_attr);
|
||||||
|
cd->devt_attr = NULL;
|
||||||
|
}
|
||||||
|
|
||||||
if (cls->release)
|
if (cls->release)
|
||||||
cls->release(cd);
|
cls->release(cd);
|
||||||
else {
|
else {
|
||||||
|
@ -591,11 +596,8 @@ void class_device_del(struct class_device *class_dev)
|
||||||
|
|
||||||
if (class_dev->dev)
|
if (class_dev->dev)
|
||||||
sysfs_remove_link(&class_dev->kobj, "device");
|
sysfs_remove_link(&class_dev->kobj, "device");
|
||||||
if (class_dev->devt_attr) {
|
if (class_dev->devt_attr)
|
||||||
class_device_remove_file(class_dev, class_dev->devt_attr);
|
class_device_remove_file(class_dev, class_dev->devt_attr);
|
||||||
kfree(class_dev->devt_attr);
|
|
||||||
class_dev->devt_attr = NULL;
|
|
||||||
}
|
|
||||||
class_device_remove_attrs(class_dev);
|
class_device_remove_attrs(class_dev);
|
||||||
|
|
||||||
kobject_hotplug(&class_dev->kobj, KOBJ_REMOVE);
|
kobject_hotplug(&class_dev->kobj, KOBJ_REMOVE);
|
||||||
|
|
|
@ -23,7 +23,7 @@
|
||||||
* along with this program; if not, write to the Free Software
|
* along with this program; if not, write to the Free Software
|
||||||
* Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
|
* Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
|
||||||
*
|
*
|
||||||
* Send feedback to <greg@kroah.com>, <dely.l.sy@intel.com>
|
* Send feedback to <greg@kroah.com>, <kristen.c.accardi@intel.com>
|
||||||
*
|
*
|
||||||
*/
|
*/
|
||||||
#ifndef _PCIEHP_H
|
#ifndef _PCIEHP_H
|
||||||
|
|
|
@ -23,7 +23,7 @@
|
||||||
* along with this program; if not, write to the Free Software
|
* along with this program; if not, write to the Free Software
|
||||||
* Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
|
* Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
|
||||||
*
|
*
|
||||||
* Send feedback to <greg@kroah.com>, <dely.l.sy@intel.com>
|
* Send feedback to <greg@kroah.com>, <kristen.c.accardi@intel.com>
|
||||||
*
|
*
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
|
|
@ -23,7 +23,7 @@
|
||||||
* along with this program; if not, write to the Free Software
|
* along with this program; if not, write to the Free Software
|
||||||
* Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
|
* Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
|
||||||
*
|
*
|
||||||
* Send feedback to <greg@kroah.com>, <dely.l.sy@intel.com>
|
* Send feedback to <greg@kroah.com>, <kristen.c.accardi@intel.com>
|
||||||
*
|
*
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
|
|
@ -23,7 +23,7 @@
|
||||||
* along with this program; if not, write to the Free Software
|
* along with this program; if not, write to the Free Software
|
||||||
* Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
|
* Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
|
||||||
*
|
*
|
||||||
* Send feedback to <greg@kroah.com>,<dely.l.sy@intel.com>
|
* Send feedback to <greg@kroah.com>,<kristen.c.accardi@intel.com>
|
||||||
*
|
*
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
|
|
@ -23,7 +23,7 @@
|
||||||
* along with this program; if not, write to the Free Software
|
* along with this program; if not, write to the Free Software
|
||||||
* Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
|
* Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
|
||||||
*
|
*
|
||||||
* Send feedback to <greg@kroah.com>, <dely.l.sy@intel.com>
|
* Send feedback to <greg@kroah.com>, <kristen.c.accardi@intel.com>
|
||||||
*
|
*
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
|
|
@ -23,7 +23,7 @@
|
||||||
* along with this program; if not, write to the Free Software
|
* along with this program; if not, write to the Free Software
|
||||||
* Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
|
* Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
|
||||||
*
|
*
|
||||||
* Send feedback to <greg@kroah.com>, <dely.l.sy@intel.com>
|
* Send feedback to <greg@kroah.com>, <kristen.c.accardi@intel.com>
|
||||||
*
|
*
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
|
|
@ -20,7 +20,7 @@
|
||||||
* along with this program; if not, write to the Free Software
|
* along with this program; if not, write to the Free Software
|
||||||
* Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
|
* Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
|
||||||
*
|
*
|
||||||
* Send feedback to <dely.l.sy@intel.com>
|
* Send feedback to <kristen.c.accardi@intel.com>
|
||||||
*
|
*
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
|
|
@ -23,7 +23,7 @@
|
||||||
* along with this program; if not, write to the Free Software
|
* along with this program; if not, write to the Free Software
|
||||||
* Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
|
* Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
|
||||||
*
|
*
|
||||||
* Send feedback to <greg@kroah.com>, <dely.l.sy@intel.com>
|
* Send feedback to <greg@kroah.com>, <kristen.c.accardi@intel.com>
|
||||||
*
|
*
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
|
|
@ -23,7 +23,7 @@
|
||||||
* along with this program; if not, write to the Free Software
|
* along with this program; if not, write to the Free Software
|
||||||
* Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
|
* Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
|
||||||
*
|
*
|
||||||
* Send feedback to <greg@kroah.com>, <dely.l.sy@intel.com>
|
* Send feedback to <greg@kroah.com>, <kristen.c.accardi@intel.com>
|
||||||
*
|
*
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
|
|
@ -23,7 +23,7 @@
|
||||||
* along with this program; if not, write to the Free Software
|
* along with this program; if not, write to the Free Software
|
||||||
* Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
|
* Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
|
||||||
*
|
*
|
||||||
* Send feedback to <greg@kroah.com>,<dely.l.sy@intel.com>
|
* Send feedback to <greg@kroah.com>,<kristen.c.accardi@intel.com>
|
||||||
*
|
*
|
||||||
*/
|
*/
|
||||||
#ifndef _SHPCHP_H
|
#ifndef _SHPCHP_H
|
||||||
|
|
|
@ -23,7 +23,7 @@
|
||||||
* along with this program; if not, write to the Free Software
|
* along with this program; if not, write to the Free Software
|
||||||
* Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
|
* Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
|
||||||
*
|
*
|
||||||
* Send feedback to <greg@kroah.com>, <dely.l.sy@intel.com>
|
* Send feedback to <greg@kroah.com>, <kristen.c.accardi@intel.com>
|
||||||
*
|
*
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
|
|
@ -23,7 +23,7 @@
|
||||||
* along with this program; if not, write to the Free Software
|
* along with this program; if not, write to the Free Software
|
||||||
* Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
|
* Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
|
||||||
*
|
*
|
||||||
* Send feedback to <greg@kroah.com>, <dely.l.sy@intel.com>
|
* Send feedback to <greg@kroah.com>, <kristen.c.accardi@intel.com>
|
||||||
*
|
*
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
|
|
@ -23,7 +23,7 @@
|
||||||
* along with this program; if not, write to the Free Software
|
* along with this program; if not, write to the Free Software
|
||||||
* Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
|
* Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
|
||||||
*
|
*
|
||||||
* Send feedback to <greg@kroah.com>,<dely.l.sy@intel.com>
|
* Send feedback to <greg@kroah.com>,<kristen.c.accardi@intel.com>
|
||||||
*
|
*
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
|
|
@ -23,7 +23,7 @@
|
||||||
* along with this program; if not, write to the Free Software
|
* along with this program; if not, write to the Free Software
|
||||||
* Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
|
* Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
|
||||||
*
|
*
|
||||||
* Send feedback to <greg@kroah.com>, <dely.l.sy@intel.com>
|
* Send feedback to <greg@kroah.com>, <kristen.c.accardi@intel.com>
|
||||||
*
|
*
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
|
|
@ -23,7 +23,7 @@
|
||||||
* along with this program; if not, write to the Free Software
|
* along with this program; if not, write to the Free Software
|
||||||
* Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
|
* Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
|
||||||
*
|
*
|
||||||
* Send feedback to <greg@kroah.com>, <dely.l.sy@intel.com>
|
* Send feedback to <greg@kroah.com>, <kristen.c.accardi@intel.com>
|
||||||
*
|
*
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
|
|
@ -20,7 +20,7 @@
|
||||||
* along with this program; if not, write to the Free Software
|
* along with this program; if not, write to the Free Software
|
||||||
* Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
|
* Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
|
||||||
*
|
*
|
||||||
* Send feedback to <dely.l.sy@intel.com>
|
* Send feedback to <kristen.c.accardi@intel.com>
|
||||||
*
|
*
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
|
|
@ -23,7 +23,7 @@
|
||||||
* along with this program; if not, write to the Free Software
|
* along with this program; if not, write to the Free Software
|
||||||
* Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
|
* Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
|
||||||
*
|
*
|
||||||
* Send feedback to <greg@kroah.com>,<dely.l.sy@intel.com>
|
* Send feedback to <greg@kroah.com>,<kristen.c.accardi@intel.com>
|
||||||
*
|
*
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
|
|
@ -23,7 +23,7 @@
|
||||||
* along with this program; if not, write to the Free Software
|
* along with this program; if not, write to the Free Software
|
||||||
* Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
|
* Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
|
||||||
*
|
*
|
||||||
* Send feedback to <greg@kroah.com>, <dely.l.sy@intel.com>
|
* Send feedback to <greg@kroah.com>, <kristen.c.accardi@intel.com>
|
||||||
*
|
*
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
|
|
@ -23,7 +23,7 @@
|
||||||
* along with this program; if not, write to the Free Software
|
* along with this program; if not, write to the Free Software
|
||||||
* Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
|
* Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
|
||||||
*
|
*
|
||||||
* Send feedback to <greg@kroah.com>, <dely.l.sy@intel.com>
|
* Send feedback to <greg@kroah.com>, <kristen.c.accardi@intel.com>
|
||||||
*
|
*
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
|
|
@ -23,7 +23,7 @@
|
||||||
* along with this program; if not, write to the Free Software
|
* along with this program; if not, write to the Free Software
|
||||||
* Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
|
* Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
|
||||||
*
|
*
|
||||||
* Send feedback to <greg@kroah.com>, <dely.l.sy@intel.com>
|
* Send feedback to <greg@kroah.com>, <kristen.c.accardi@intel.com>
|
||||||
*
|
*
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
|
|
@ -453,7 +453,7 @@ static void enable_msi_mode(struct pci_dev *dev, int pos, int type)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
static void disable_msi_mode(struct pci_dev *dev, int pos, int type)
|
void disable_msi_mode(struct pci_dev *dev, int pos, int type)
|
||||||
{
|
{
|
||||||
u16 control;
|
u16 control;
|
||||||
|
|
||||||
|
@ -699,6 +699,9 @@ int pci_enable_msi(struct pci_dev* dev)
|
||||||
if (!pci_msi_enable || !dev)
|
if (!pci_msi_enable || !dev)
|
||||||
return status;
|
return status;
|
||||||
|
|
||||||
|
if (dev->no_msi)
|
||||||
|
return status;
|
||||||
|
|
||||||
temp = dev->irq;
|
temp = dev->irq;
|
||||||
|
|
||||||
if ((status = msi_init()) < 0)
|
if ((status = msi_init()) < 0)
|
||||||
|
|
|
@ -47,6 +47,12 @@ extern int pci_msi_quirk;
|
||||||
#define pci_msi_quirk 0
|
#define pci_msi_quirk 0
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
#ifdef CONFIG_PCI_MSI
|
||||||
|
void disable_msi_mode(struct pci_dev *dev, int pos, int type);
|
||||||
|
#else
|
||||||
|
static inline void disable_msi_mode(struct pci_dev *dev, int pos, int type) { }
|
||||||
|
#endif
|
||||||
|
|
||||||
extern int pcie_mch_quirk;
|
extern int pcie_mch_quirk;
|
||||||
extern struct device_attribute pci_dev_attrs[];
|
extern struct device_attribute pci_dev_attrs[];
|
||||||
extern struct class_device_attribute class_device_attr_cpuaffinity;
|
extern struct class_device_attribute class_device_attr_cpuaffinity;
|
||||||
|
|
|
@ -1291,6 +1291,27 @@ DECLARE_PCI_FIXUP_FINAL(PCI_VENDOR_ID_INTEL, PCI_DEVICE_ID_INTEL_E7520_MCH, quir
|
||||||
DECLARE_PCI_FIXUP_FINAL(PCI_VENDOR_ID_INTEL, PCI_DEVICE_ID_INTEL_E7320_MCH, quirk_pcie_mch );
|
DECLARE_PCI_FIXUP_FINAL(PCI_VENDOR_ID_INTEL, PCI_DEVICE_ID_INTEL_E7320_MCH, quirk_pcie_mch );
|
||||||
DECLARE_PCI_FIXUP_FINAL(PCI_VENDOR_ID_INTEL, PCI_DEVICE_ID_INTEL_E7525_MCH, quirk_pcie_mch );
|
DECLARE_PCI_FIXUP_FINAL(PCI_VENDOR_ID_INTEL, PCI_DEVICE_ID_INTEL_E7525_MCH, quirk_pcie_mch );
|
||||||
|
|
||||||
|
|
||||||
|
/*
|
||||||
|
* It's possible for the MSI to get corrupted if shpc and acpi
|
||||||
|
* are used together on certain PXH-based systems.
|
||||||
|
*/
|
||||||
|
static void __devinit quirk_pcie_pxh(struct pci_dev *dev)
|
||||||
|
{
|
||||||
|
disable_msi_mode(dev, pci_find_capability(dev, PCI_CAP_ID_MSI),
|
||||||
|
PCI_CAP_ID_MSI);
|
||||||
|
dev->no_msi = 1;
|
||||||
|
|
||||||
|
printk(KERN_WARNING "PCI: PXH quirk detected, "
|
||||||
|
"disabling MSI for SHPC device\n");
|
||||||
|
}
|
||||||
|
DECLARE_PCI_FIXUP_EARLY(PCI_VENDOR_ID_INTEL, PCI_DEVICE_ID_INTEL_PXHD_0, quirk_pcie_pxh);
|
||||||
|
DECLARE_PCI_FIXUP_EARLY(PCI_VENDOR_ID_INTEL, PCI_DEVICE_ID_INTEL_PXHD_1, quirk_pcie_pxh);
|
||||||
|
DECLARE_PCI_FIXUP_EARLY(PCI_VENDOR_ID_INTEL, PCI_DEVICE_ID_INTEL_PXH_0, quirk_pcie_pxh);
|
||||||
|
DECLARE_PCI_FIXUP_EARLY(PCI_VENDOR_ID_INTEL, PCI_DEVICE_ID_INTEL_PXH_1, quirk_pcie_pxh);
|
||||||
|
DECLARE_PCI_FIXUP_EARLY(PCI_VENDOR_ID_INTEL, PCI_DEVICE_ID_INTEL_PXHV, quirk_pcie_pxh);
|
||||||
|
|
||||||
|
|
||||||
static void __devinit quirk_netmos(struct pci_dev *dev)
|
static void __devinit quirk_netmos(struct pci_dev *dev)
|
||||||
{
|
{
|
||||||
unsigned int num_parallel = (dev->subsystem_device & 0xf0) >> 4;
|
unsigned int num_parallel = (dev->subsystem_device & 0xf0) >> 4;
|
||||||
|
|
|
@ -342,9 +342,6 @@ static void wacom_graphire_irq(struct urb *urb, struct pt_regs *regs)
|
||||||
goto exit;
|
goto exit;
|
||||||
}
|
}
|
||||||
|
|
||||||
x = le16_to_cpu(*(__le16 *) &data[2]);
|
|
||||||
y = le16_to_cpu(*(__le16 *) &data[4]);
|
|
||||||
|
|
||||||
input_regs(dev, regs);
|
input_regs(dev, regs);
|
||||||
|
|
||||||
if (data[1] & 0x10) { /* in prox */
|
if (data[1] & 0x10) { /* in prox */
|
||||||
|
@ -373,15 +370,17 @@ static void wacom_graphire_irq(struct urb *urb, struct pt_regs *regs)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (data[1] & 0x80) {
|
if (data[1] & 0x90) {
|
||||||
|
x = le16_to_cpu(*(__le16 *) &data[2]);
|
||||||
|
y = le16_to_cpu(*(__le16 *) &data[4]);
|
||||||
input_report_abs(dev, ABS_X, x);
|
input_report_abs(dev, ABS_X, x);
|
||||||
input_report_abs(dev, ABS_Y, y);
|
input_report_abs(dev, ABS_Y, y);
|
||||||
}
|
if (wacom->tool[0] != BTN_TOOL_MOUSE) {
|
||||||
if (wacom->tool[0] != BTN_TOOL_MOUSE) {
|
input_report_abs(dev, ABS_PRESSURE, le16_to_cpu(*(__le16 *) &data[6]));
|
||||||
input_report_abs(dev, ABS_PRESSURE, le16_to_cpu(*(__le16 *) &data[6]));
|
input_report_key(dev, BTN_TOUCH, data[1] & 0x01);
|
||||||
input_report_key(dev, BTN_TOUCH, data[1] & 0x01);
|
input_report_key(dev, BTN_STYLUS, data[1] & 0x02);
|
||||||
input_report_key(dev, BTN_STYLUS, data[1] & 0x02);
|
input_report_key(dev, BTN_STYLUS2, data[1] & 0x04);
|
||||||
input_report_key(dev, BTN_STYLUS2, data[1] & 0x04);
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
input_report_key(dev, wacom->tool[0], data[1] & 0x10);
|
input_report_key(dev, wacom->tool[0], data[1] & 0x10);
|
||||||
|
@ -568,7 +567,7 @@ static void wacom_intuos_irq(struct urb *urb, struct pt_regs *regs)
|
||||||
|
|
||||||
/* Cintiq doesn't send data when RDY bit isn't set */
|
/* Cintiq doesn't send data when RDY bit isn't set */
|
||||||
if ((wacom->features->type == CINTIQ) && !(data[1] & 0x40))
|
if ((wacom->features->type == CINTIQ) && !(data[1] & 0x40))
|
||||||
return;
|
goto exit;
|
||||||
|
|
||||||
if (wacom->features->type >= INTUOS3) {
|
if (wacom->features->type >= INTUOS3) {
|
||||||
input_report_abs(dev, ABS_X, (data[2] << 9) | (data[3] << 1) | ((data[9] >> 1) & 1));
|
input_report_abs(dev, ABS_X, (data[2] << 9) | (data[3] << 1) | ((data[9] >> 1) & 1));
|
||||||
|
|
|
@ -2,6 +2,8 @@
|
||||||
* The USB Monitor, inspired by Dave Harding's USBMon.
|
* The USB Monitor, inspired by Dave Harding's USBMon.
|
||||||
*
|
*
|
||||||
* mon_main.c: Main file, module initiation and exit, registrations, etc.
|
* mon_main.c: Main file, module initiation and exit, registrations, etc.
|
||||||
|
*
|
||||||
|
* Copyright (C) 2005 Pete Zaitcev (zaitcev@redhat.com)
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#include <linux/kernel.h>
|
#include <linux/kernel.h>
|
||||||
|
@ -311,7 +313,7 @@ static int __init mon_init(void)
|
||||||
|
|
||||||
mondir = debugfs_create_dir("usbmon", NULL);
|
mondir = debugfs_create_dir("usbmon", NULL);
|
||||||
if (IS_ERR(mondir)) {
|
if (IS_ERR(mondir)) {
|
||||||
printk(KERN_NOTICE TAG ": debugs is not available\n");
|
printk(KERN_NOTICE TAG ": debugfs is not available\n");
|
||||||
return -ENODEV;
|
return -ENODEV;
|
||||||
}
|
}
|
||||||
if (mondir == NULL) {
|
if (mondir == NULL) {
|
||||||
|
|
|
@ -1,5 +1,7 @@
|
||||||
/*
|
/*
|
||||||
* The USB Monitor, inspired by Dave Harding's USBMon.
|
* The USB Monitor, inspired by Dave Harding's USBMon.
|
||||||
|
*
|
||||||
|
* Copyright (C) 2005 Pete Zaitcev (zaitcev@redhat.com)
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#ifndef __USB_MON_H
|
#ifndef __USB_MON_H
|
||||||
|
|
|
@ -128,6 +128,10 @@ void jfs_delete_inode(struct inode *inode)
|
||||||
{
|
{
|
||||||
jfs_info("In jfs_delete_inode, inode = 0x%p", inode);
|
jfs_info("In jfs_delete_inode, inode = 0x%p", inode);
|
||||||
|
|
||||||
|
if (is_bad_inode(inode) ||
|
||||||
|
(JFS_IP(inode)->fileset != cpu_to_le32(FILESYSTEM_I)))
|
||||||
|
return;
|
||||||
|
|
||||||
if (test_cflag(COMMIT_Freewmap, inode))
|
if (test_cflag(COMMIT_Freewmap, inode))
|
||||||
jfs_free_zero_link(inode);
|
jfs_free_zero_link(inode);
|
||||||
|
|
||||||
|
|
|
@ -191,7 +191,7 @@ static int lbmIOWait(struct lbuf * bp, int flag);
|
||||||
static bio_end_io_t lbmIODone;
|
static bio_end_io_t lbmIODone;
|
||||||
static void lbmStartIO(struct lbuf * bp);
|
static void lbmStartIO(struct lbuf * bp);
|
||||||
static void lmGCwrite(struct jfs_log * log, int cant_block);
|
static void lmGCwrite(struct jfs_log * log, int cant_block);
|
||||||
static int lmLogSync(struct jfs_log * log, int nosyncwait);
|
static int lmLogSync(struct jfs_log * log, int hard_sync);
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
@ -915,19 +915,17 @@ static void lmPostGC(struct lbuf * bp)
|
||||||
* if new sync address is available
|
* if new sync address is available
|
||||||
* (normally the case if sync() is executed by back-ground
|
* (normally the case if sync() is executed by back-ground
|
||||||
* process).
|
* process).
|
||||||
* if not, explicitly run jfs_blogsync() to initiate
|
|
||||||
* getting of new sync address.
|
|
||||||
* calculate new value of i_nextsync which determines when
|
* calculate new value of i_nextsync which determines when
|
||||||
* this code is called again.
|
* this code is called again.
|
||||||
*
|
*
|
||||||
* PARAMETERS: log - log structure
|
* PARAMETERS: log - log structure
|
||||||
* nosyncwait - 1 if called asynchronously
|
* hard_sync - 1 to force all metadata to be written
|
||||||
*
|
*
|
||||||
* RETURN: 0
|
* RETURN: 0
|
||||||
*
|
*
|
||||||
* serialization: LOG_LOCK() held on entry/exit
|
* serialization: LOG_LOCK() held on entry/exit
|
||||||
*/
|
*/
|
||||||
static int lmLogSync(struct jfs_log * log, int nosyncwait)
|
static int lmLogSync(struct jfs_log * log, int hard_sync)
|
||||||
{
|
{
|
||||||
int logsize;
|
int logsize;
|
||||||
int written; /* written since last syncpt */
|
int written; /* written since last syncpt */
|
||||||
|
@ -941,11 +939,18 @@ static int lmLogSync(struct jfs_log * log, int nosyncwait)
|
||||||
unsigned long flags;
|
unsigned long flags;
|
||||||
|
|
||||||
/* push dirty metapages out to disk */
|
/* push dirty metapages out to disk */
|
||||||
list_for_each_entry(sbi, &log->sb_list, log_list) {
|
if (hard_sync)
|
||||||
filemap_flush(sbi->ipbmap->i_mapping);
|
list_for_each_entry(sbi, &log->sb_list, log_list) {
|
||||||
filemap_flush(sbi->ipimap->i_mapping);
|
filemap_fdatawrite(sbi->ipbmap->i_mapping);
|
||||||
filemap_flush(sbi->direct_inode->i_mapping);
|
filemap_fdatawrite(sbi->ipimap->i_mapping);
|
||||||
}
|
filemap_fdatawrite(sbi->direct_inode->i_mapping);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
list_for_each_entry(sbi, &log->sb_list, log_list) {
|
||||||
|
filemap_flush(sbi->ipbmap->i_mapping);
|
||||||
|
filemap_flush(sbi->ipimap->i_mapping);
|
||||||
|
filemap_flush(sbi->direct_inode->i_mapping);
|
||||||
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* forward syncpt
|
* forward syncpt
|
||||||
|
@ -1021,10 +1026,6 @@ static int lmLogSync(struct jfs_log * log, int nosyncwait)
|
||||||
/* next syncpt trigger = written + more */
|
/* next syncpt trigger = written + more */
|
||||||
log->nextsync = written + more;
|
log->nextsync = written + more;
|
||||||
|
|
||||||
/* return if lmLogSync() from outside of transaction, e.g., sync() */
|
|
||||||
if (nosyncwait)
|
|
||||||
return lsn;
|
|
||||||
|
|
||||||
/* if number of bytes written from last sync point is more
|
/* if number of bytes written from last sync point is more
|
||||||
* than 1/4 of the log size, stop new transactions from
|
* than 1/4 of the log size, stop new transactions from
|
||||||
* starting until all current transactions are completed
|
* starting until all current transactions are completed
|
||||||
|
@ -1049,11 +1050,12 @@ static int lmLogSync(struct jfs_log * log, int nosyncwait)
|
||||||
*
|
*
|
||||||
* FUNCTION: write log SYNCPT record for specified log
|
* FUNCTION: write log SYNCPT record for specified log
|
||||||
*
|
*
|
||||||
* PARAMETERS: log - log structure
|
* PARAMETERS: log - log structure
|
||||||
|
* hard_sync - set to 1 to force metadata to be written
|
||||||
*/
|
*/
|
||||||
void jfs_syncpt(struct jfs_log *log)
|
void jfs_syncpt(struct jfs_log *log, int hard_sync)
|
||||||
{ LOG_LOCK(log);
|
{ LOG_LOCK(log);
|
||||||
lmLogSync(log, 1);
|
lmLogSync(log, hard_sync);
|
||||||
LOG_UNLOCK(log);
|
LOG_UNLOCK(log);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -510,6 +510,6 @@ extern int lmLogFormat(struct jfs_log *log, s64 logAddress, int logSize);
|
||||||
extern int lmGroupCommit(struct jfs_log *, struct tblock *);
|
extern int lmGroupCommit(struct jfs_log *, struct tblock *);
|
||||||
extern int jfsIOWait(void *);
|
extern int jfsIOWait(void *);
|
||||||
extern void jfs_flush_journal(struct jfs_log * log, int wait);
|
extern void jfs_flush_journal(struct jfs_log * log, int wait);
|
||||||
extern void jfs_syncpt(struct jfs_log *log);
|
extern void jfs_syncpt(struct jfs_log *log, int hard_sync);
|
||||||
|
|
||||||
#endif /* _H_JFS_LOGMGR */
|
#endif /* _H_JFS_LOGMGR */
|
||||||
|
|
|
@ -552,6 +552,11 @@ void txEnd(tid_t tid)
|
||||||
* synchronize with logsync barrier
|
* synchronize with logsync barrier
|
||||||
*/
|
*/
|
||||||
if (test_bit(log_SYNCBARRIER, &log->flag)) {
|
if (test_bit(log_SYNCBARRIER, &log->flag)) {
|
||||||
|
TXN_UNLOCK();
|
||||||
|
|
||||||
|
/* write dirty metadata & forward log syncpt */
|
||||||
|
jfs_syncpt(log, 1);
|
||||||
|
|
||||||
jfs_info("log barrier off: 0x%x", log->lsn);
|
jfs_info("log barrier off: 0x%x", log->lsn);
|
||||||
|
|
||||||
/* enable new transactions start */
|
/* enable new transactions start */
|
||||||
|
@ -560,11 +565,6 @@ void txEnd(tid_t tid)
|
||||||
/* wakeup all waitors for logsync barrier */
|
/* wakeup all waitors for logsync barrier */
|
||||||
TXN_WAKEUP(&log->syncwait);
|
TXN_WAKEUP(&log->syncwait);
|
||||||
|
|
||||||
TXN_UNLOCK();
|
|
||||||
|
|
||||||
/* forward log syncpt */
|
|
||||||
jfs_syncpt(log);
|
|
||||||
|
|
||||||
goto wakeup;
|
goto wakeup;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -657,7 +657,9 @@ struct tlock *txLock(tid_t tid, struct inode *ip, struct metapage * mp,
|
||||||
/* only anonymous txn.
|
/* only anonymous txn.
|
||||||
* Remove from anon_list
|
* Remove from anon_list
|
||||||
*/
|
*/
|
||||||
|
TXN_LOCK();
|
||||||
list_del_init(&jfs_ip->anon_inode_list);
|
list_del_init(&jfs_ip->anon_inode_list);
|
||||||
|
TXN_UNLOCK();
|
||||||
}
|
}
|
||||||
jfs_ip->atlhead = tlck->next;
|
jfs_ip->atlhead = tlck->next;
|
||||||
} else {
|
} else {
|
||||||
|
|
|
@ -114,6 +114,8 @@ static void jfs_destroy_inode(struct inode *inode)
|
||||||
{
|
{
|
||||||
struct jfs_inode_info *ji = JFS_IP(inode);
|
struct jfs_inode_info *ji = JFS_IP(inode);
|
||||||
|
|
||||||
|
BUG_ON(!list_empty(&ji->anon_inode_list));
|
||||||
|
|
||||||
spin_lock_irq(&ji->ag_lock);
|
spin_lock_irq(&ji->ag_lock);
|
||||||
if (ji->active_ag != -1) {
|
if (ji->active_ag != -1) {
|
||||||
struct bmap *bmap = JFS_SBI(inode->i_sb)->bmap;
|
struct bmap *bmap = JFS_SBI(inode->i_sb)->bmap;
|
||||||
|
@ -531,7 +533,7 @@ static int jfs_sync_fs(struct super_block *sb, int wait)
|
||||||
/* log == NULL indicates read-only mount */
|
/* log == NULL indicates read-only mount */
|
||||||
if (log) {
|
if (log) {
|
||||||
jfs_flush_journal(log, wait);
|
jfs_flush_journal(log, wait);
|
||||||
jfs_syncpt(log);
|
jfs_syncpt(log, 0);
|
||||||
}
|
}
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
|
|
|
@ -29,7 +29,7 @@ struct desc_struct {
|
||||||
};
|
};
|
||||||
|
|
||||||
#define desc_empty(desc) \
|
#define desc_empty(desc) \
|
||||||
(!((desc)->a + (desc)->b))
|
(!((desc)->a | (desc)->b))
|
||||||
|
|
||||||
#define desc_equal(desc1, desc2) \
|
#define desc_equal(desc1, desc2) \
|
||||||
(((desc1)->a == (desc2)->a) && ((desc1)->b == (desc2)->b))
|
(((desc1)->a == (desc2)->a) && ((desc1)->b == (desc2)->b))
|
||||||
|
|
|
@ -19,6 +19,8 @@
|
||||||
#ifndef _LPARMAP_H
|
#ifndef _LPARMAP_H
|
||||||
#define _LPARMAP_H
|
#define _LPARMAP_H
|
||||||
|
|
||||||
|
#ifndef __ASSEMBLY__
|
||||||
|
|
||||||
#include <asm/types.h>
|
#include <asm/types.h>
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|
@ -71,6 +73,11 @@ struct LparMap {
|
||||||
} xRanges[HvRangesToMap];
|
} xRanges[HvRangesToMap];
|
||||||
};
|
};
|
||||||
|
|
||||||
extern struct LparMap xLparMap;
|
extern const struct LparMap xLparMap;
|
||||||
|
|
||||||
|
#endif /* __ASSEMBLY__ */
|
||||||
|
|
||||||
|
/* the fixed address where the LparMap exists */
|
||||||
|
#define LPARMAP_PHYS 0x7000
|
||||||
|
|
||||||
#endif /* _LPARMAP_H */
|
#endif /* _LPARMAP_H */
|
||||||
|
|
|
@ -32,7 +32,7 @@
|
||||||
#define ID_MASK 0x00200000
|
#define ID_MASK 0x00200000
|
||||||
|
|
||||||
#define desc_empty(desc) \
|
#define desc_empty(desc) \
|
||||||
(!((desc)->a + (desc)->b))
|
(!((desc)->a | (desc)->b))
|
||||||
|
|
||||||
#define desc_equal(desc1, desc2) \
|
#define desc_equal(desc1, desc2) \
|
||||||
(((desc1)->a == (desc2)->a) && ((desc1)->b == (desc2)->b))
|
(((desc1)->a == (desc2)->a) && ((desc1)->b == (desc2)->b))
|
||||||
|
|
|
@ -556,6 +556,7 @@ struct pci_dev {
|
||||||
/* keep track of device state */
|
/* keep track of device state */
|
||||||
unsigned int is_enabled:1; /* pci_enable_device has been called */
|
unsigned int is_enabled:1; /* pci_enable_device has been called */
|
||||||
unsigned int is_busmaster:1; /* device is busmaster */
|
unsigned int is_busmaster:1; /* device is busmaster */
|
||||||
|
unsigned int no_msi:1; /* device may not use msi */
|
||||||
|
|
||||||
u32 saved_config_space[16]; /* config space saved at suspend time */
|
u32 saved_config_space[16]; /* config space saved at suspend time */
|
||||||
struct bin_attribute *rom_attr; /* attribute descriptor for sysfs ROM entry */
|
struct bin_attribute *rom_attr; /* attribute descriptor for sysfs ROM entry */
|
||||||
|
|
|
@ -2281,6 +2281,11 @@
|
||||||
#define PCI_VENDOR_ID_INTEL 0x8086
|
#define PCI_VENDOR_ID_INTEL 0x8086
|
||||||
#define PCI_DEVICE_ID_INTEL_EESSC 0x0008
|
#define PCI_DEVICE_ID_INTEL_EESSC 0x0008
|
||||||
#define PCI_DEVICE_ID_INTEL_21145 0x0039
|
#define PCI_DEVICE_ID_INTEL_21145 0x0039
|
||||||
|
#define PCI_DEVICE_ID_INTEL_PXHD_0 0x0320
|
||||||
|
#define PCI_DEVICE_ID_INTEL_PXHD_1 0x0321
|
||||||
|
#define PCI_DEVICE_ID_INTEL_PXH_0 0x0329
|
||||||
|
#define PCI_DEVICE_ID_INTEL_PXH_1 0x032A
|
||||||
|
#define PCI_DEVICE_ID_INTEL_PXHV 0x032C
|
||||||
#define PCI_DEVICE_ID_INTEL_82375 0x0482
|
#define PCI_DEVICE_ID_INTEL_82375 0x0482
|
||||||
#define PCI_DEVICE_ID_INTEL_82424 0x0483
|
#define PCI_DEVICE_ID_INTEL_82424 0x0483
|
||||||
#define PCI_DEVICE_ID_INTEL_82378 0x0484
|
#define PCI_DEVICE_ID_INTEL_82378 0x0484
|
||||||
|
|
Loading…
Reference in New Issue