Commit ebec8ca6 authored by Linus Torvalds's avatar Linus Torvalds

Import 2.3.25

parent 5bdbe23a
......@@ -286,6 +286,10 @@ W: http://math-www.uni-paderborn.de/~axel/
D: Configuration help text support
D: Linux CD and Support Giveaway List
N: Erik Inge Bols
E: knan@mo.himolde.no
D: Misc kernel hacks
N: Zoltan Boszormenyi
E: zboszor@mol.hu
D: MTRR emulation with Cyrix style ARR registers
......
......@@ -20,6 +20,7 @@ restrictions referred to are that the relevant option is valid if:
ISDN Appropriate ISDN support is enabled.
JOY Appropriate joystick support is enabled.
LP Printer support is enabled.
LOOP Loopback device support is enabled.
MCA MCA bus support is enabled.
MDA The MDA console is enabled.
MOUSE Appropriate mouse support is enabled.
......@@ -208,6 +209,9 @@ or lp=auto driver. 'lp=reset' (which can be specified in
mac5380= [HW,SCSI]
max_loop=[0-255] [LOOP] States the maximum number of loopback devices
that can be mounted.
maxcpus= [SMP] States the maximum number of processors that
an SMP kernel should make use of.
......
......@@ -133,6 +133,12 @@
#include <asm/uaccess.h>
#include <asm/desc.h>
/*
* Make APM look as much as just another ACPI module as possible..
*/
#include <linux/acpi.h>
EXPORT_SYMBOL(apm_register_callback);
EXPORT_SYMBOL(apm_unregister_callback);
......@@ -1400,6 +1406,11 @@ static int apm(void *unused)
apm_bios_info.flags &= ~APM_BIOS_DISENGAGED;
}
/* Install our power off handler.. */
#ifdef CONFIG_APM_POWER_OFF
acpi_power_off = apm_power_off;
#endif
apm_mainloop();
return 0;
}
......
......@@ -45,6 +45,7 @@ EXPORT_SYMBOL(disable_irq);
EXPORT_SYMBOL(disable_irq_nosync);
EXPORT_SYMBOL(kernel_thread);
EXPORT_SYMBOL(acpi_idle);
EXPORT_SYMBOL(acpi_power_off);
EXPORT_SYMBOL_NOVERS(__down_failed);
EXPORT_SYMBOL_NOVERS(__down_failed_interruptible);
......
......@@ -29,9 +29,6 @@
#include <linux/delay.h>
#include <linux/reboot.h>
#include <linux/init.h>
#if defined(CONFIG_APM) && defined(CONFIG_APM_POWER_OFF)
#include <linux/apm_bios.h>
#endif
#include <asm/uaccess.h>
#include <asm/pgtable.h>
......@@ -66,6 +63,11 @@ void enable_hlt(void)
*/
void (*acpi_idle)(void) = NULL;
/*
* Power off function, if any
*/
void (*acpi_power_off)(void) = NULL;
/*
* The idle thread. There's no useful work to be
* done, so just try to conserve power and have a
......@@ -310,9 +312,8 @@ void machine_halt(void)
void machine_power_off(void)
{
#if defined(CONFIG_APM) && defined(CONFIG_APM_POWER_OFF)
apm_power_off();
#endif
if (acpi_power_off)
acpi_power_off();
}
......
This diff is collapsed.
This diff is collapsed.
......@@ -23,9 +23,12 @@
* Reed H. Petty, rhp@draper.net
*
* Maximum number of loop devices now dynamic via max_loop module parameter.
* Still fixed at 8 devices when compiled into the kernel normally.
* Russell Kroll <rkroll@exploits.org> 19990701
*
* Maximum number of loop devices when compiled-in now selectable by passing
* max_loop=<1-255> to the kernel on boot.
* Erik I. Bols, <eriki@himolde.no>, Oct 31, 1999
*
* Still To Fix:
* - Advisory locking is ignored here.
* - Should use an own CAP_* category instead of CAP_SYS_ADMIN
......@@ -723,15 +726,12 @@ int __init loop_init(void)
}
if ((max_loop < 1) || (max_loop > 255)) {
printk (KERN_WARNING "loop: max_loop must be between 1 and 255\n");
return -EINVAL;
printk (KERN_WARNING "loop: invalid max_loop (must be between 1 and 255), using default (8)\n");
max_loop = 8;
}
#ifndef MODULE
printk(KERN_INFO "loop: registered device at major %d\n", MAJOR_NR);
#else
printk(KERN_INFO "loop: enabling %d loop devices\n", max_loop);
#endif
loop_dev = kmalloc (max_loop * sizeof(struct loop_device), GFP_KERNEL);
if (!loop_dev) {
......@@ -778,3 +778,13 @@ void cleanup_module(void)
kfree (loop_blksizes);
}
#endif
#ifndef MODULE
static int __init max_loop_setup(char *str)
{
max_loop = simple_strtol(str,NULL,0);
return 1;
}
__setup("max_loop=", max_loop_setup);
#endif
......@@ -74,6 +74,7 @@ static struct ctl_table_header *acpi_sysctl = NULL;
static struct acpi_facp *acpi_facp = NULL;
static int acpi_fake_facp = 0;
static struct acpi_facs *acpi_facs = NULL;
static unsigned long acpi_facp_addr = 0;
static unsigned long acpi_dsdt_addr = 0;
......@@ -88,8 +89,19 @@ static unsigned long acpi_p_lvl2_lat = ~0UL;
static unsigned long acpi_p_lvl3_lat = ~0UL;
/* Initialize to guaranteed harmless port read */
static unsigned long acpi_p_lvl2 = 0x80;
static unsigned long acpi_p_lvl3 = 0x80;
static unsigned long acpi_p_lvl2 = ACPI_P_LVL_DISABLED;
static unsigned long acpi_p_lvl3 = ACPI_P_LVL_DISABLED;
// bits 8-15 are SLP_TYPa, bits 0-7 are SLP_TYPb
static unsigned long acpi_slp_typ[] =
{
ACPI_SLP_TYP_DISABLED, /* S0 */
ACPI_SLP_TYP_DISABLED, /* S1 */
ACPI_SLP_TYP_DISABLED, /* S2 */
ACPI_SLP_TYP_DISABLED, /* S3 */
ACPI_SLP_TYP_DISABLED, /* S4 */
ACPI_SLP_TYP_DISABLED /* S5 */
};
static struct ctl_table acpi_table[] =
{
......@@ -125,10 +137,14 @@ static struct ctl_table acpi_table[] =
{ACPI_P_LVL2_LAT, "p_lvl2_lat",
&acpi_p_lvl2_lat, sizeof(acpi_p_lvl2_lat),
0600, NULL, &acpi_do_ulong},
0644, NULL, &acpi_do_ulong},
{ACPI_P_LVL3_LAT, "p_lvl3_lat",
&acpi_p_lvl3_lat, sizeof(acpi_p_lvl3_lat),
0644, NULL, &acpi_do_ulong},
{ACPI_S5_SLP_TYP, "s5_slp_typ",
&acpi_slp_typ[5], sizeof(acpi_slp_typ[5]),
0600, NULL, &acpi_do_ulong},
{0}
......@@ -136,7 +152,7 @@ static struct ctl_table acpi_table[] =
static struct ctl_table acpi_dir_table[] =
{
{CTL_ACPI, "acpi", NULL, 0, 0500, acpi_table},
{CTL_ACPI, "acpi", NULL, 0, 0555, acpi_table},
{0}
};
......@@ -379,6 +395,11 @@ static int __init acpi_find_tables(void)
acpi_facp = (struct acpi_facp*) dt;
acpi_facp_addr = *rsdt_entry;
acpi_dsdt_addr = acpi_facp->dsdt;
if (acpi_facp->facs) {
acpi_facs = (struct acpi_facs*)
acpi_map_table(acpi_facp->facs);
}
}
else {
acpi_unmap_table(dt);
......@@ -405,6 +426,7 @@ static void acpi_destroy_tables(void)
acpi_unmap_table((struct acpi_table*) acpi_facp);
else
kfree(acpi_facp);
acpi_unmap_table((struct acpi_table*) acpi_facs);
}
/*
......@@ -575,8 +597,8 @@ static void acpi_idle_handler(void)
case 3:
pm2_cnt = acpi_facp->pm2_cnt;
if (pm2_cnt) {
/* Disable PCI arbitration while sleeping,
to avoid DMA corruption? */
/* Disable PCI arbitration while sleeping,
to avoid DMA corruption? */
outb(inb(pm2_cnt) | ACPI_ARB_DIS, pm2_cnt);
inb(acpi_p_lvl3);
outb(inb(pm2_cnt) & ~ACPI_ARB_DIS, pm2_cnt);
......@@ -601,6 +623,42 @@ static void acpi_idle_handler(void)
sleep_level = 1;
}
/*
* Enter system sleep state
*/
static void acpi_enter_sx(int state)
{
unsigned long slp_typ = acpi_slp_typ[state];
if (slp_typ != ACPI_SLP_TYP_DISABLED) {
u16 typa, typb, value;
// bits 8-15 are SLP_TYPa, bits 0-7 are SLP_TYPb
typa = (slp_typ >> 8) & 0xff;
typb = slp_typ & 0xff;
typa = ((typa << ACPI_SLP_TYP_SHIFT) & ACPI_SLP_TYP_MASK);
typb = ((typb << ACPI_SLP_TYP_SHIFT) & ACPI_SLP_TYP_MASK);
// set SLP_TYPa/b and SLP_EN
if (acpi_facp->pm1a_cnt) {
value = inw(acpi_facp->pm1a_cnt) & ~ACPI_SLP_TYP_MASK;
outw(value | typa | ACPI_SLP_EN, acpi_facp->pm1a_cnt);
}
if (acpi_facp->pm1b_cnt) {
value = inw(acpi_facp->pm1b_cnt) & ~ACPI_SLP_TYP_MASK;
outw(value | typb | ACPI_SLP_EN, acpi_facp->pm1b_cnt);
}
}
}
/*
* Enter soft-off (S5)
*/
static void acpi_power_off_handler(void)
{
acpi_enter_sx(5);
}
/*
* Claim ACPI I/O ports
*/
......@@ -806,7 +864,7 @@ static int acpi_do_event(ctl_table *ctl,
size_t *len)
{
u32 pm1_status = 0, gpe_status = 0;
char str[4 * sizeof(u32) + 6];
char str[4 * sizeof(u32) + 7];
int size;
if (write)
......@@ -879,6 +937,7 @@ static int __init acpi_init(void)
return 0;
#endif
acpi_power_off = acpi_power_off_handler;
acpi_idle = acpi_idle_handler;
return 0;
......@@ -890,6 +949,7 @@ static int __init acpi_init(void)
static void __exit acpi_exit(void)
{
acpi_idle = NULL;
acpi_power_off = NULL;
unregister_sysctl_table(acpi_sysctl);
acpi_disable(acpi_facp);
......
......@@ -4,11 +4,11 @@
if [ "$CONFIG_EXPERIMENTAL" = "y" ]; then
comment 'Linux/SPARC audio subsystem (EXPERIMENTAL)'
comment 'Linux/SPARC audio subsystem (EXPERIMENTAL)'
tristate 'Audio support (EXPERIMENTAL)' CONFIG_SPARCAUDIO
dep_tristate ' AMD7930 Lowlevel Driver' CONFIG_SPARCAUDIO_AMD7930 $CONFIG_SPARCAUDIO
dep_tristate ' CS4231 Lowlevel Driver' CONFIG_SPARCAUDIO_CS4231 $CONFIG_SPARCAUDIO
dep_tristate ' DBRI Lowlevel Driver' CONFIG_SPARCAUDIO_DBRI $CONFIG_SPARCAUDIO
dep_tristate ' Dummy Lowlevel Driver' CONFIG_SPARCAUDIO_DUMMY $CONFIG_SPARCAUDIO
tristate 'Audio support (EXPERIMENTAL)' CONFIG_SPARCAUDIO
dep_tristate ' AMD7930 Lowlevel Driver' CONFIG_SPARCAUDIO_AMD7930 $CONFIG_SPARCAUDIO
dep_tristate ' CS4231 Lowlevel Driver' CONFIG_SPARCAUDIO_CS4231 $CONFIG_SPARCAUDIO
dep_tristate ' DBRI Lowlevel Driver' CONFIG_SPARCAUDIO_DBRI $CONFIG_SPARCAUDIO
dep_tristate ' Dummy Lowlevel Driver' CONFIG_SPARCAUDIO_DUMMY $CONFIG_SPARCAUDIO
fi
......@@ -2,21 +2,21 @@ comment 'Misc Linux/SPARC drivers'
tristate '/dev/openprom device support' CONFIG_SUN_OPENPROMIO
tristate 'Mostek real time clock support' CONFIG_SUN_MOSTEK_RTC
if [ "$ARCH" = "sparc64" ]; then
if [ "$CONFIG_PCI" = "y" ]; then
tristate 'Siemens SAB82532 serial support' CONFIG_SAB82532
fi
tristate 'OBP Flash Device support' CONFIG_OBP_FLASH
if [ "$CONFIG_PCI" = "y" ]; then
tristate 'Siemens SAB82532 serial support' CONFIG_SAB82532
fi
tristate 'OBP Flash Device support' CONFIG_OBP_FLASH
fi
if [ "$CONFIG_EXPERIMENTAL" = "y" ]; then
tristate 'Bidirectional parallel port support (obsolete)' CONFIG_SUN_BPP
tristate 'Videopix Frame Grabber (EXPERIMENTAL)' CONFIG_SUN_VIDEOPIX
tristate 'Aurora Multiboard 1600se (EXPERIMENTAL)' CONFIG_SUN_AURORA
tristate 'Tadpole TS102 Microcontroller support' CONFIG_TADPOLE_TS102_UCTRL
tristate 'Bidirectional parallel port support (OBSOLETE)' CONFIG_SUN_BPP
tristate 'Videopix Frame Grabber (EXPERIMENTAL)' CONFIG_SUN_VIDEOPIX
tristate 'Aurora Multiboard 1600se (EXPERIMENTAL)' CONFIG_SUN_AURORA
tristate 'Tadpole TS102 Microcontroller support (EXPERIMENTAL)' CONFIG_TADPOLE_TS102_UCTRL
# XXX Why don't we do "source drivers/char/Config.in" somewhere?
if [ "$CONFIG_PCI" = "y" ]; then
define_bool CONFIG_APM_RTC_IS_GMT y # no shit
bool 'PC-style RTC' CONFIG_RTC
fi
# XXX Why don't we do "source drivers/char/Config.in" somewhere?
if [ "$CONFIG_PCI" = "y" ]; then
define_bool CONFIG_APM_RTC_IS_GMT y # no shit
bool 'PC-style RTC' CONFIG_RTC
fi
fi
......@@ -263,6 +263,7 @@ static struct dev_info device_list[] =
* SCSI code to reset bus.*/
{"QUANTUM", "LPS525S", "3110", BLIST_NOLUN}, /* Locks sometimes if polled for lun != 0 */
{"QUANTUM", "PD1225S", "3110", BLIST_NOLUN}, /* Locks sometimes if polled for lun != 0 */
{"QUANTUM", "FIREBALL ST4.3S", "0F0C", BLIST_NOLUN}, /* Locks up when polled for lun != 0 */
{"MEDIAVIS", "CDR-H93MV", "1.31", BLIST_NOLUN}, /* Locks up if polled for lun != 0 */
{"SANKYO", "CP525", "6.64", BLIST_NOLUN}, /* causes failed REQ SENSE, extra reset */
{"HP", "C1750A", "3226", BLIST_NOLUN}, /* scanjet iic */
......
......@@ -1333,7 +1333,7 @@ static int cm_mmap(struct file *file, struct vm_area_struct *vma)
db = &s->dma_adc;
} else
return -EINVAL;
if (vma->vm_offset != 0)
if (vma->vm_pgoff != 0)
return -EINVAL;
size = vma->vm_end - vma->vm_start;
if (size > (PAGE_SIZE << db->buforder))
......
......@@ -2339,7 +2339,7 @@ static int ess_mmap(struct file *file, struct vm_area_struct *vma)
db = &s->dma_adc;
} else
return -EINVAL;
if (vma->vm_offset != 0)
if (vma->vm_pgoff != 0)
return -EINVAL;
size = vma->vm_end - vma->vm_start;
if (size > (PAGE_SIZE << db->buforder))
......
This diff is collapsed.
This diff is collapsed.
......@@ -50,15 +50,30 @@
#define USB_REQ_CPIA_GRAB_FRAME 0xC1
#define USB_REQ_CPIA_UPLOAD_FRAME 0xC2
#define WAIT_FOR_NEXT_FRAME 0
#define FORCE_FRAME_UPLOAD 1
#define USB_REQ_CPIA_SET_GRAB_MODE 0xC3
#define USB_REQ_CPIA_INIT_STREAM_CAP 0xC4
#define USB_REQ_CPIA_FINI_STREAM_CAP 0xC5
#define USB_REQ_CPIA_START_STREAM_CAP 0xC6
#define USB_REQ_CPIA_END_STREAM_CAP 0xC7
#define USB_REQ_CPIA_SET_FORMAT 0xC8
#define FORMAT_QCIF 0
#define FORMAT_CIF 1
#define FORMAT_YUYV 0
#define FORMAT_UYVY 1
#define FORMAT_420 0
#define FORMAT_422 1
#define USB_REQ_CPIA_SET_ROI 0xC9
#define USB_REQ_CPIA_SET_COMPRESSION 0xCA
#define COMP_DISABLED 0
#define COMP_AUTO 1
#define COMP_MANUAL 2
#define DONT_DECIMATE 0
#define DECIMATE 1
#define USB_REQ_CPIA_SET_COMPRESSION_TARGET 0xCB
#define TARGET_QUALITY 0
#define TARGET_FRAMERATE 1
#define USB_REQ_CPIA_SET_YUV_THRESH 0xCC
#define USB_REQ_CPIA_SET_COMPRESSION_PARAMS 0xCD
#define USB_REQ_CPIA_DISCARD_FRAME 0xCE
......@@ -72,12 +87,6 @@
#define USB_REQ_CPIA_DOWNLOAD_DRAM 0xEA
/* #define USB_REQ_CPIA_NULL_CMD 0x?? */
#define CPIA_QCIF 0
#define CPIA_CIF 1
#define CPIA_YUYV 0
#define CPIA_UYVY 1
#define STREAM_BUF_SIZE (PAGE_SIZE * 4)
/* #define STREAM_BUF_SIZE (FRAMES_PER_DESC * FRAME_SIZE_PER_DESC) */
......
......@@ -2476,7 +2476,7 @@ static void __init get_of_addrs (const struct device_node *dp,
for (i = 0; i < dp->n_addrs; ++i) {
unsigned long addr = dp->addrs[i].address;
unsigned long size = dp->addrs[i].size;
printk ("dp->addrs[%d].address = $lx, dp->addrs[%d].size = %lx\n",
printk ("dp->addrs[%d].address = %lx, dp->addrs[%d].size = %lx\n",
i, addr, i, size);
if (size >= 0x800000) {
*display = addr;
......
......@@ -455,7 +455,7 @@ static int get_pixel_mac(struct display *p, int pixel_x, int pixel_y)
u8 *dest, bit;
u16 *dest16;
u32 *dest32;
u8 pixel;
u8 pixel=0;
switch (p->var.bits_per_pixel) {
case 1:
......
......@@ -823,7 +823,7 @@ static int balance_dirty_state(kdev_t dev)
unsigned long dirty, tot, hard_dirty_limit, soft_dirty_limit;
dirty = size_buffers_type[BUF_DIRTY] >> PAGE_SHIFT;
tot = nr_lru_pages + nr_free_pages + nr_free_highpages;
tot = nr_lru_pages + nr_free_pages - nr_free_highpages;
hard_dirty_limit = tot * bdf_prm.b_un.nfract / 100;
soft_dirty_limit = hard_dirty_limit >> 1;
......@@ -1294,7 +1294,9 @@ static void unmap_underlying_metadata(struct buffer_head * bh)
{
#if 0
if (buffer_new(bh)) {
struct old_bh = get_hash_table(bh->b_dev, bh->b_blocknr, bh->b_size);
struct buffer_head *old_bh;
old_bh = get_hash_table(bh->b_dev, bh->b_blocknr, bh->b_size);
if (old_bh) {
unmap_buffer(old_bh);
/* Here we could run brelse or bforget. We use
......
......@@ -470,20 +470,14 @@ ncp_dget_fpos(struct dentry *dentry, struct dentry *parent, unsigned long fpos)
static time_t ncp_obtain_mtime(struct dentry *dentry)
{
struct inode *inode = dentry->d_inode;
struct inode *parent = dentry->d_parent->d_inode;
struct ncp_server *server = NCP_SERVER(inode);
struct nw_info_struct i;
int len = dentry->d_name.len;
__u8 __name[len + 1];
if (!ncp_conn_valid(server) ||
(inode == inode->i_sb->s_root->d_inode) ||
ncp_is_server_root(parent))
ncp_is_server_root(inode))
return 0;
memcpy(__name, dentry->d_name.name, len);
io2vol(server, __name, !ncp_preserve_case(parent));
if (ncp_obtain_info(server, parent, __name, &i))
if (ncp_obtain_info(server, inode, NULL, &i))
return 0;
return ncp_date_dos2unix(le16_to_cpu(i.modifyTime),
......@@ -498,7 +492,8 @@ static int ncp_readdir(struct file *filp, void *dirent, filldir_t filldir)
struct ncp_server *server = NCP_SERVER(inode);
union ncp_dir_cache *cache = NULL;
struct ncp_cache_control ctl;
int result;
int result, mtime_valid = 0;
time_t mtime = 0;
ctl.page = NULL;
ctl.cache = NULL;
......@@ -535,12 +530,11 @@ static int ncp_readdir(struct file *filp, void *dirent, filldir_t filldir)
goto init_cache;
if (filp->f_pos == 2) {
time_t mtime;
if (jiffies - ctl.head.time >= NCP_MAX_AGE(server))
goto init_cache;
mtime = ncp_obtain_mtime(dentry);
mtime_valid = 1;
if ((!mtime) || (mtime != ctl.head.mtime))
goto init_cache;
}
......@@ -599,7 +593,11 @@ static int ncp_readdir(struct file *filp, void *dirent, filldir_t filldir)
ctl.cache = cache;
init_cache:
ncp_invalidate_dircache_entries(dentry);
ctl.head.mtime = ncp_obtain_mtime(dentry);
if (!mtime_valid) {
mtime = ncp_obtain_mtime(dentry);
mtime_valid = 1;
}
ctl.head.mtime = mtime;
ctl.head.time = jiffies;
ctl.head.eof = 0;
ctl.fpos = 2;
......
......@@ -387,7 +387,7 @@ ncp_ObtainSpecificDirBase(struct ncp_server *server,
ncp_add_byte(server, 6); /* subfunction */
ncp_add_byte(server, nsSrc);
ncp_add_byte(server, nsDst);
ncp_add_word(server, 0x8006); /* get all */
ncp_add_word(server, htons(0x0680)); /* get all */
ncp_add_dword(server, RIM_ALL);
ncp_add_handle_path(server, vol_num, dir_base, 1, path);
......
......@@ -707,7 +707,7 @@ int get_unused_fd(void)
/* Do we need to expand the fdset array? */
if (fd >= current->files->max_fdset) {
error = expand_fdset(files, 0);
error = expand_fdset(files, fd);
if (!error) {
error = -EMFILE;
goto repeat;
......
......@@ -140,16 +140,16 @@ static int meminfo_read_proc(char *page, char **start, off_t off,
* display in kilobytes.
*/
#define K(x) ((x) << (PAGE_SHIFT - 10))
#define B(x) ((x) << PAGE_SHIFT)
si_meminfo(&i);
si_swapinfo(&i);
len = sprintf(page, " total: used: free: shared: buffers: cached:\n"
"Mem: %8lu %8lu %8lu %8lu %8lu %8u\n"
"Swap: %8lu %8lu %8lu\n",
K(i.totalram), K(i.totalram-i.freeram), K(i.freeram),
K(i.sharedram), K(i.bufferram),
K(atomic_read(&page_cache_size)), K(i.totalswap),
K(i.totalswap-i.freeswap), K(i.freeswap));
B(i.totalram), B(i.totalram-i.freeram), B(i.freeram),
B(i.sharedram), B(i.bufferram),
B(atomic_read(&page_cache_size)), B(i.totalswap),
B(i.totalswap-i.freeswap), B(i.freeswap));
/*
* Tagged format, for easy grepping and expansion.
* The above will go away eventually, once the tools
......@@ -181,7 +181,7 @@ static int meminfo_read_proc(char *page, char **start, off_t off,
if (len>count) len = count;
if (len<0) len = 0;
return len;
#undef B
#undef K
}
......
......@@ -53,6 +53,9 @@
#define ACPI_SLP_TYP2 0x1000
#define ACPI_SLP_EN 0x2000
#define ACPI_SLP_TYP_MASK 0x1c00
#define ACPI_SLP_TYP_SHIFT 10
/* PM_TMR masks */
#define ACPI_TMR_MASK 0x00ffffff
#define ACPI_TMR_HZ 3580000 /* 3.58 MHz */
......@@ -82,6 +85,9 @@
#define ACPI_TMR_VAL_EXT 0x00000100
#define ACPI_DCK_CAP 0x00000200
/* FACS flags */
#define ACPI_S4BIOS 0x00000001
struct acpi_rsdp {
__u32 signature[2];
__u8 checksum;
......@@ -145,6 +151,15 @@ struct acpi_facp {
__u32 flags;
};
struct acpi_facs {
__u32 signature;
__u32 length;
__u32 hw_signature;
__u32 fw_wake_vector;
__u32 global_lock;
__u32 flags;
};
/*
* Sysctl declarations
*/
......@@ -166,8 +181,12 @@ enum
ACPI_P_LVL3,
ACPI_P_LVL2_LAT,
ACPI_P_LVL3_LAT,
ACPI_S5_SLP_TYP
};
#define ACPI_P_LVL_DISABLED 0x80
#define ACPI_SLP_TYP_DISABLED (~0UL)
/*
* PIIX4-specific ACPI info (for systems with PIIX4 but no ACPI tables)
*/
......@@ -208,6 +227,7 @@ enum
#ifdef __KERNEL__
extern void (*acpi_idle)(void);
extern void (*acpi_power_off)(void);
#endif
......
......@@ -83,6 +83,7 @@
#define FB_ACCEL_NV5 29 /* nVidia RIVA TNT2 */
#define FB_ACCEL_CT_6555x 30 /* C&T 6555x */
#define FB_ACCEL_3DFX_BANSHEE 31 /* 3Dfx Banshee */
#define FB_ACCEL_ATI_RAGE128 32 /* ATI Rage128 family */
struct fb_fix_screeninfo {
char id[16]; /* identification string eg "TT Builtin" */
......
......@@ -455,6 +455,7 @@ asmlinkage long sys_wait4(pid_t pid,unsigned int * stat_addr, int options, struc
add_wait_queue(&current->wait_chldexit,&wait);
repeat:
flag = 0;
current->state = TASK_INTERRUPTIBLE;
read_lock(&tasklist_lock);
for (p = current->p_cptr ; p ; p = p->p_osptr) {
if (pid>0) {
......@@ -521,12 +522,12 @@ asmlinkage long sys_wait4(pid_t pid,unsigned int * stat_addr, int options, struc
retval = -ERESTARTSYS;
if (signal_pending(current))
goto end_wait4;
current->state=TASK_INTERRUPTIBLE;
schedule();
goto repeat;
}
retval = -ECHILD;
end_wait4:
current->state = TASK_RUNNING;
remove_wait_queue(&current->wait_chldexit,&wait);
return retval;
}
......
......@@ -243,7 +243,7 @@ static inline void unuse_pte(struct vm_area_struct * vma, unsigned long address,
return;
set_pte(dir, pte_mkdirty(mk_pte(page, vma->vm_page_prot)));
swap_free(entry);
get_page(mem_map + MAP_NR(page));
get_page(page);
++vma->vm_mm->rss;
}
......
......@@ -545,6 +545,7 @@ call_status(struct rpc_task *task)
if (status >= 0) {
task->tk_action = call_decode;
return;
}
task->tk_status = 0;
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment