mirror of
https://github.com/AuxXxilium/linux_dsm_epyc7002.git
synced 2024-11-24 15:50:59 +07:00
Merge branch 'master' of /usr/src/ntfs-2.6/
This commit is contained in:
commit
e087a412b4
30
.gitignore
vendored
Normal file
30
.gitignore
vendored
Normal file
@ -0,0 +1,30 @@
|
||||
#
|
||||
# NOTE! Don't add files that are generated in specific
|
||||
# subdirectories here. Add them in the ".gitignore" file
|
||||
# in that subdirectory instead.
|
||||
#
|
||||
# Normal rules
|
||||
#
|
||||
.*
|
||||
*.o
|
||||
*.a
|
||||
*.s
|
||||
*.ko
|
||||
*.mod.c
|
||||
|
||||
#
|
||||
# Top-level generic files
|
||||
#
|
||||
vmlinux*
|
||||
System.map
|
||||
Module.symvers
|
||||
|
||||
#
|
||||
# Generated include files
|
||||
#
|
||||
include/asm
|
||||
include/config
|
||||
include/linux/autoconf.h
|
||||
include/linux/compile.h
|
||||
include/linux/version.h
|
||||
|
4
Makefile
4
Makefile
@ -660,8 +660,10 @@ quiet_cmd_sysmap = SYSMAP
|
||||
# Link of vmlinux
|
||||
# If CONFIG_KALLSYMS is set .version is already updated
|
||||
# Generate System.map and verify that the content is consistent
|
||||
|
||||
# Use + in front of the vmlinux_version rule to silent warning with make -j2
|
||||
# First command is ':' to allow us to use + in front of the rule
|
||||
define rule_vmlinux__
|
||||
:
|
||||
$(if $(CONFIG_KALLSYMS),,+$(call cmd,vmlinux_version))
|
||||
|
||||
$(call cmd,vmlinux__)
|
||||
|
@ -98,7 +98,10 @@ struct clk *clk_get(struct device *dev, const char *id)
|
||||
struct clk *clk = ERR_PTR(-ENOENT);
|
||||
int idno;
|
||||
|
||||
idno = (dev == NULL) ? -1 : to_platform_device(dev)->id;
|
||||
if (dev == NULL || dev->bus != &platform_bus_type)
|
||||
idno = -1;
|
||||
else
|
||||
idno = to_platform_device(dev)->id;
|
||||
|
||||
down(&clocks_sem);
|
||||
|
||||
|
@ -58,9 +58,8 @@ acpi_system_read_event(struct file *file, char __user * buffer, size_t count,
|
||||
return_VALUE(-EAGAIN);
|
||||
|
||||
result = acpi_bus_receive_event(&event);
|
||||
if (result) {
|
||||
return_VALUE(-EIO);
|
||||
}
|
||||
if (result)
|
||||
return_VALUE(result);
|
||||
|
||||
chars_remaining = sprintf(str, "%s %s %08x %08x\n",
|
||||
event.device_class ? event.
|
||||
|
3
drivers/char/.gitignore
vendored
Normal file
3
drivers/char/.gitignore
vendored
Normal file
@ -0,0 +1,3 @@
|
||||
consolemap_deftbl.c
|
||||
defkeymap.c
|
||||
|
@ -695,7 +695,7 @@ static void receive_char(struct r3964_info *pInfo, const unsigned char c)
|
||||
{
|
||||
TRACE_PE("IDLE - got STX but no space in rx_queue!");
|
||||
pInfo->state=R3964_WAIT_FOR_RX_BUF;
|
||||
mod_timer(&pInfo->tmr, R3964_TO_NO_BUF);
|
||||
mod_timer(&pInfo->tmr, jiffies + R3964_TO_NO_BUF);
|
||||
break;
|
||||
}
|
||||
start_receiving:
|
||||
@ -705,7 +705,7 @@ static void receive_char(struct r3964_info *pInfo, const unsigned char c)
|
||||
pInfo->last_rx = 0;
|
||||
pInfo->flags &= ~R3964_ERROR;
|
||||
pInfo->state=R3964_RECEIVING;
|
||||
mod_timer(&pInfo->tmr, R3964_TO_ZVZ);
|
||||
mod_timer(&pInfo->tmr, jiffies + R3964_TO_ZVZ);
|
||||
pInfo->nRetry = 0;
|
||||
put_char(pInfo, DLE);
|
||||
flush(pInfo);
|
||||
@ -732,7 +732,7 @@ static void receive_char(struct r3964_info *pInfo, const unsigned char c)
|
||||
if(pInfo->flags & R3964_BCC)
|
||||
{
|
||||
pInfo->state = R3964_WAIT_FOR_BCC;
|
||||
mod_timer(&pInfo->tmr, R3964_TO_ZVZ);
|
||||
mod_timer(&pInfo->tmr, jiffies + R3964_TO_ZVZ);
|
||||
}
|
||||
else
|
||||
{
|
||||
@ -744,7 +744,7 @@ static void receive_char(struct r3964_info *pInfo, const unsigned char c)
|
||||
pInfo->last_rx = c;
|
||||
char_to_buf:
|
||||
pInfo->rx_buf[pInfo->rx_position++] = c;
|
||||
mod_timer(&pInfo->tmr, R3964_TO_ZVZ);
|
||||
mod_timer(&pInfo->tmr, jiffies + R3964_TO_ZVZ);
|
||||
}
|
||||
}
|
||||
/* else: overflow-msg? BUF_SIZE>MTU; should not happen? */
|
||||
|
@ -90,11 +90,11 @@ static inline int uinput_request_reserve_slot(struct uinput_device *udev, struct
|
||||
|
||||
static void uinput_request_done(struct uinput_device *udev, struct uinput_request *request)
|
||||
{
|
||||
complete(&request->done);
|
||||
|
||||
/* Mark slot as available */
|
||||
udev->requests[request->id] = NULL;
|
||||
wake_up_interruptible(&udev->requests_waitq);
|
||||
|
||||
complete(&request->done);
|
||||
}
|
||||
|
||||
static int uinput_request_submit(struct input_dev *dev, struct uinput_request *request)
|
||||
|
@ -203,7 +203,7 @@ static const unsigned short init_ntsc[] = {
|
||||
0x8c, 640, /* Horizontal length */
|
||||
0x8d, 640, /* Number of pixels */
|
||||
0x8f, 0xc00, /* Disable window 2 */
|
||||
0xf0, 0x173, /* 13.5 MHz transport, Forced
|
||||
0xf0, 0x73, /* 13.5 MHz transport, Forced
|
||||
* mode, latch windows */
|
||||
0xf2, 0x13, /* NTSC M, composite input */
|
||||
0xe7, 0x1e1, /* Enable vertical standard
|
||||
@ -212,38 +212,36 @@ static const unsigned short init_ntsc[] = {
|
||||
|
||||
static const unsigned short init_pal[] = {
|
||||
0x88, 23, /* Window 1 vertical begin */
|
||||
0x89, 288 + 16, /* Vertical lines in (16 lines
|
||||
0x89, 288, /* Vertical lines in (16 lines
|
||||
* skipped by the VFE) */
|
||||
0x8a, 288 + 16, /* Vertical lines out (16 lines
|
||||
0x8a, 288, /* Vertical lines out (16 lines
|
||||
* skipped by the VFE) */
|
||||
0x8b, 16, /* Horizontal begin */
|
||||
0x8c, 768, /* Horizontal length */
|
||||
0x8d, 784, /* Number of pixels
|
||||
* Must be >= Horizontal begin + Horizontal length */
|
||||
0x8f, 0xc00, /* Disable window 2 */
|
||||
0xf0, 0x177, /* 13.5 MHz transport, Forced
|
||||
0xf0, 0x77, /* 13.5 MHz transport, Forced
|
||||
* mode, latch windows */
|
||||
0xf2, 0x3d1, /* PAL B,G,H,I, composite input */
|
||||
0xe7, 0x261, /* PAL/SECAM set to 288 + 16 lines
|
||||
* change to 0x241 for 288 lines */
|
||||
0xe7, 0x241, /* PAL/SECAM set to 288 lines */
|
||||
};
|
||||
|
||||
static const unsigned short init_secam[] = {
|
||||
0x88, 23 - 16, /* Window 1 vertical begin */
|
||||
0x89, 288 + 16, /* Vertical lines in (16 lines
|
||||
0x88, 23, /* Window 1 vertical begin */
|
||||
0x89, 288, /* Vertical lines in (16 lines
|
||||
* skipped by the VFE) */
|
||||
0x8a, 288 + 16, /* Vertical lines out (16 lines
|
||||
0x8a, 288, /* Vertical lines out (16 lines
|
||||
* skipped by the VFE) */
|
||||
0x8b, 16, /* Horizontal begin */
|
||||
0x8c, 768, /* Horizontal length */
|
||||
0x8d, 784, /* Number of pixels
|
||||
* Must be >= Horizontal begin + Horizontal length */
|
||||
0x8f, 0xc00, /* Disable window 2 */
|
||||
0xf0, 0x177, /* 13.5 MHz transport, Forced
|
||||
0xf0, 0x77, /* 13.5 MHz transport, Forced
|
||||
* mode, latch windows */
|
||||
0xf2, 0x3d5, /* SECAM, composite input */
|
||||
0xe7, 0x261, /* PAL/SECAM set to 288 + 16 lines
|
||||
* change to 0x241 for 288 lines */
|
||||
0xe7, 0x241, /* PAL/SECAM set to 288 lines */
|
||||
};
|
||||
|
||||
static const unsigned char init_common[] = {
|
||||
@ -410,6 +408,12 @@ vpx3220_command (struct i2c_client *client,
|
||||
case DECODER_SET_NORM:
|
||||
{
|
||||
int *iarg = arg, data;
|
||||
int temp_input;
|
||||
|
||||
/* Here we back up the input selection because it gets
|
||||
overwritten when we fill the registers with the
|
||||
choosen video norm */
|
||||
temp_input = vpx3220_fp_read(client, 0xf2);
|
||||
|
||||
dprintk(1, KERN_DEBUG "%s: DECODER_SET_NORM %d\n",
|
||||
I2C_NAME(client), *iarg);
|
||||
@ -449,6 +453,10 @@ vpx3220_command (struct i2c_client *client,
|
||||
|
||||
}
|
||||
decoder->norm = *iarg;
|
||||
|
||||
/* And here we set the backed up video input again */
|
||||
vpx3220_fp_write(client, 0xf2, temp_input | 0x0010);
|
||||
udelay(10);
|
||||
}
|
||||
break;
|
||||
|
||||
|
4
drivers/pci/.gitignore
vendored
Normal file
4
drivers/pci/.gitignore
vendored
Normal file
@ -0,0 +1,4 @@
|
||||
classlist.h
|
||||
devlist.h
|
||||
gen-devlist
|
||||
|
@ -1233,7 +1233,7 @@ static void __init quirk_alder_ioapic(struct pci_dev *pdev)
|
||||
DECLARE_PCI_FIXUP_HEADER(PCI_VENDOR_ID_INTEL, PCI_DEVICE_ID_INTEL_EESSC, quirk_alder_ioapic );
|
||||
#endif
|
||||
|
||||
#ifdef CONFIG_SCSI_SATA
|
||||
#ifdef CONFIG_SCSI_SATA_INTEL_COMBINED
|
||||
static void __devinit quirk_intel_ide_combined(struct pci_dev *pdev)
|
||||
{
|
||||
u8 prog, comb, tmp;
|
||||
@ -1310,7 +1310,7 @@ static void __devinit quirk_intel_ide_combined(struct pci_dev *pdev)
|
||||
request_region(0x170, 8, "libata"); /* port 1 */
|
||||
}
|
||||
DECLARE_PCI_FIXUP_FINAL(PCI_VENDOR_ID_INTEL, PCI_ANY_ID, quirk_intel_ide_combined );
|
||||
#endif /* CONFIG_SCSI_SATA */
|
||||
#endif /* CONFIG_SCSI_SATA_INTEL_COMBINED */
|
||||
|
||||
|
||||
int pcie_mch_quirk;
|
||||
|
@ -553,6 +553,11 @@ config SCSI_SATA_VITESSE
|
||||
|
||||
If unsure, say N.
|
||||
|
||||
config SCSI_SATA_INTEL_COMBINED
|
||||
bool
|
||||
depends on IDE=y && !BLK_DEV_IDE_SATA && (SCSI_SATA_AHCI || SCSI_ATA_PIIX)
|
||||
default y
|
||||
|
||||
config SCSI_BUSLOGIC
|
||||
tristate "BusLogic SCSI support"
|
||||
depends on (PCI || ISA || MCA) && SCSI && ISA_DMA_API
|
||||
|
@ -276,6 +276,8 @@ static const struct pnp_device_id pnp_dev_table[] = {
|
||||
{ "SUP1620", 0 },
|
||||
/* SupraExpress 33.6 Data/Fax PnP modem */
|
||||
{ "SUP1760", 0 },
|
||||
/* SupraExpress 56i Sp Intl */
|
||||
{ "SUP2171", 0 },
|
||||
/* Phoebe Micro */
|
||||
/* Phoebe Micro 33.6 Data Fax 1433VQH Plug & Play */
|
||||
{ "TEX0011", 0 },
|
||||
|
@ -326,7 +326,8 @@ static void postproc_atl_queue(struct isp116x *isp116x)
|
||||
usb_settoggle(udev, ep->epnum,
|
||||
ep->nextpid ==
|
||||
USB_PID_OUT,
|
||||
PTD_GET_TOGGLE(ptd) ^ 1);
|
||||
PTD_GET_TOGGLE(ptd));
|
||||
urb->actual_length += PTD_GET_COUNT(ptd);
|
||||
urb->status = cc_to_error[TD_DATAUNDERRUN];
|
||||
spin_unlock(&urb->lock);
|
||||
continue;
|
||||
|
@ -1702,10 +1702,7 @@ static struct hid_device *usb_hid_configure(struct usb_interface *intf)
|
||||
if ((endpoint->bmAttributes & 3) != 3) /* Not an interrupt endpoint */
|
||||
continue;
|
||||
|
||||
/* handle potential highspeed HID correctly */
|
||||
interval = endpoint->bInterval;
|
||||
if (dev->speed == USB_SPEED_HIGH)
|
||||
interval = 1 << (interval - 1);
|
||||
|
||||
/* Change the polling interval of mice. */
|
||||
if (hid->collection->usage == HID_GD_MOUSE && hid_mousepoll_interval > 0)
|
||||
|
@ -565,7 +565,11 @@ static int vgacon_switch(struct vc_data *c)
|
||||
scr_memcpyw((u16 *) c->vc_origin, (u16 *) c->vc_screenbuf,
|
||||
c->vc_screenbuf_size > vga_vram_size ?
|
||||
vga_vram_size : c->vc_screenbuf_size);
|
||||
vgacon_doresize(c, c->vc_cols, c->vc_rows);
|
||||
if (!(vga_video_num_columns % 2) &&
|
||||
vga_video_num_columns <= ORIG_VIDEO_COLS &&
|
||||
vga_video_num_lines <= (ORIG_VIDEO_LINES *
|
||||
vga_default_font_height) / c->vc_font.height)
|
||||
vgacon_doresize(c, c->vc_cols, c->vc_rows);
|
||||
}
|
||||
|
||||
return 0; /* Redrawing not needed */
|
||||
@ -1023,7 +1027,8 @@ static int vgacon_resize(struct vc_data *c, unsigned int width,
|
||||
if (width % 2 || width > ORIG_VIDEO_COLS ||
|
||||
height > (ORIG_VIDEO_LINES * vga_default_font_height)/
|
||||
c->vc_font.height)
|
||||
return -EINVAL;
|
||||
/* let svgatextmode tinker with video timings */
|
||||
return 0;
|
||||
|
||||
if (CON_IS_VISIBLE(c) && !vga_is_gfx) /* who knows */
|
||||
vgacon_doresize(c, width, height);
|
||||
|
7
drivers/video/logo/.gitignore
vendored
Normal file
7
drivers/video/logo/.gitignore
vendored
Normal file
@ -0,0 +1,7 @@
|
||||
#
|
||||
# Generated files
|
||||
#
|
||||
*_mono.c
|
||||
*_vga16.c
|
||||
*_clut224.c
|
||||
*_gray256.c
|
@ -96,14 +96,14 @@ static int vesafb_blank(int blank, struct fb_info *info)
|
||||
int loop = 10000;
|
||||
u8 seq = 0, crtc17 = 0;
|
||||
|
||||
err = 0;
|
||||
|
||||
if (blank) {
|
||||
if (blank == FB_BLANK_POWERDOWN) {
|
||||
seq = 0x20;
|
||||
crtc17 = 0x00;
|
||||
err = 0;
|
||||
} else {
|
||||
seq = 0x00;
|
||||
crtc17 = 0x80;
|
||||
err = (blank == FB_BLANK_UNBLANK) ? 0 : -EINVAL;
|
||||
}
|
||||
|
||||
vga_wseq(NULL, 0x00, 0x01);
|
||||
|
26
fs/aio.c
26
fs/aio.c
@ -398,7 +398,7 @@ static struct kiocb fastcall *__aio_get_req(struct kioctx *ctx)
|
||||
if (unlikely(!req))
|
||||
return NULL;
|
||||
|
||||
req->ki_flags = 1 << KIF_LOCKED;
|
||||
req->ki_flags = 0;
|
||||
req->ki_users = 2;
|
||||
req->ki_key = 0;
|
||||
req->ki_ctx = ctx;
|
||||
@ -547,25 +547,6 @@ struct kioctx *lookup_ioctx(unsigned long ctx_id)
|
||||
return ioctx;
|
||||
}
|
||||
|
||||
static int lock_kiocb_action(void *param)
|
||||
{
|
||||
schedule();
|
||||
return 0;
|
||||
}
|
||||
|
||||
static inline void lock_kiocb(struct kiocb *iocb)
|
||||
{
|
||||
wait_on_bit_lock(&iocb->ki_flags, KIF_LOCKED, lock_kiocb_action,
|
||||
TASK_UNINTERRUPTIBLE);
|
||||
}
|
||||
|
||||
static inline void unlock_kiocb(struct kiocb *iocb)
|
||||
{
|
||||
kiocbClearLocked(iocb);
|
||||
smp_mb__after_clear_bit();
|
||||
wake_up_bit(&iocb->ki_flags, KIF_LOCKED);
|
||||
}
|
||||
|
||||
/*
|
||||
* use_mm
|
||||
* Makes the calling kernel thread take on the specified
|
||||
@ -796,9 +777,7 @@ static int __aio_run_iocbs(struct kioctx *ctx)
|
||||
* Hold an extra reference while retrying i/o.
|
||||
*/
|
||||
iocb->ki_users++; /* grab extra reference */
|
||||
lock_kiocb(iocb);
|
||||
aio_run_iocb(iocb);
|
||||
unlock_kiocb(iocb);
|
||||
if (__aio_put_req(ctx, iocb)) /* drop extra ref */
|
||||
put_ioctx(ctx);
|
||||
}
|
||||
@ -1542,7 +1521,6 @@ int fastcall io_submit_one(struct kioctx *ctx, struct iocb __user *user_iocb,
|
||||
|
||||
spin_lock_irq(&ctx->ctx_lock);
|
||||
aio_run_iocb(req);
|
||||
unlock_kiocb(req);
|
||||
if (!list_empty(&ctx->run_list)) {
|
||||
/* drain the run list */
|
||||
while (__aio_run_iocbs(ctx))
|
||||
@ -1674,7 +1652,6 @@ asmlinkage long sys_io_cancel(aio_context_t ctx_id, struct iocb __user *iocb,
|
||||
if (NULL != cancel) {
|
||||
struct io_event tmp;
|
||||
pr_debug("calling cancel\n");
|
||||
lock_kiocb(kiocb);
|
||||
memset(&tmp, 0, sizeof(tmp));
|
||||
tmp.obj = (u64)(unsigned long)kiocb->ki_obj.user;
|
||||
tmp.data = kiocb->ki_user_data;
|
||||
@ -1686,7 +1663,6 @@ asmlinkage long sys_io_cancel(aio_context_t ctx_id, struct iocb __user *iocb,
|
||||
if (copy_to_user(result, &tmp, sizeof(tmp)))
|
||||
ret = -EFAULT;
|
||||
}
|
||||
unlock_kiocb(kiocb);
|
||||
} else
|
||||
ret = -EINVAL;
|
||||
|
||||
|
@ -85,6 +85,10 @@ int nfs_inode_set_delegation(struct inode *inode, struct rpc_cred *cred, struct
|
||||
struct nfs_delegation *delegation;
|
||||
int status = 0;
|
||||
|
||||
/* Ensure we first revalidate the attributes and page cache! */
|
||||
if ((nfsi->cache_validity & (NFS_INO_REVAL_PAGECACHE|NFS_INO_INVALID_ATTR)))
|
||||
__nfs_revalidate_inode(NFS_SERVER(inode), inode);
|
||||
|
||||
delegation = nfs_alloc_delegation();
|
||||
if (delegation == NULL)
|
||||
return -ENOMEM;
|
||||
|
@ -137,7 +137,8 @@ static int nfs_revalidate_file(struct inode *inode, struct file *filp)
|
||||
struct nfs_inode *nfsi = NFS_I(inode);
|
||||
int retval = 0;
|
||||
|
||||
if ((nfsi->cache_validity & NFS_INO_REVAL_PAGECACHE) || nfs_attribute_timeout(inode))
|
||||
if ((nfsi->cache_validity & (NFS_INO_REVAL_PAGECACHE|NFS_INO_INVALID_ATTR))
|
||||
|| nfs_attribute_timeout(inode))
|
||||
retval = __nfs_revalidate_inode(NFS_SERVER(inode), inode);
|
||||
nfs_revalidate_mapping(inode, filp->f_mapping);
|
||||
return 0;
|
||||
|
@ -877,12 +877,10 @@ static int nfs_wait_on_inode(struct inode *inode)
|
||||
sigset_t oldmask;
|
||||
int error;
|
||||
|
||||
atomic_inc(&inode->i_count);
|
||||
rpc_clnt_sigmask(clnt, &oldmask);
|
||||
error = wait_on_bit_lock(&nfsi->flags, NFS_INO_REVALIDATING,
|
||||
nfs_wait_schedule, TASK_INTERRUPTIBLE);
|
||||
rpc_clnt_sigunmask(clnt, &oldmask);
|
||||
iput(inode);
|
||||
|
||||
return error;
|
||||
}
|
||||
@ -1226,10 +1224,6 @@ int nfs_refresh_inode(struct inode *inode, struct nfs_fattr *fattr)
|
||||
loff_t cur_size, new_isize;
|
||||
int data_unstable;
|
||||
|
||||
/* Do we hold a delegation? */
|
||||
if (nfs_have_delegation(inode, FMODE_READ))
|
||||
return 0;
|
||||
|
||||
spin_lock(&inode->i_lock);
|
||||
|
||||
/* Are we in the process of updating data on the server? */
|
||||
@ -1350,7 +1344,8 @@ static int nfs_update_inode(struct inode *inode, struct nfs_fattr *fattr, unsign
|
||||
nfsi->read_cache_jiffies = fattr->timestamp;
|
||||
|
||||
/* Are we racing with known updates of the metadata on the server? */
|
||||
data_unstable = ! nfs_verify_change_attribute(inode, verifier);
|
||||
data_unstable = ! (nfs_verify_change_attribute(inode, verifier) ||
|
||||
(nfsi->cache_validity & NFS_INO_REVAL_PAGECACHE));
|
||||
|
||||
/* Check if our cached file size is stale */
|
||||
new_isize = nfs_size_to_loff_t(fattr->size);
|
||||
|
@ -91,6 +91,7 @@ static void *nommu_vma_list_start(struct seq_file *m, loff_t *_pos)
|
||||
next = _rb;
|
||||
break;
|
||||
}
|
||||
pos--;
|
||||
}
|
||||
|
||||
return next;
|
||||
|
@ -15,25 +15,26 @@
|
||||
ldr \irqstat, =(IXP4XX_INTC_BASE_VIRT+IXP4XX_ICIP_OFFSET)
|
||||
ldr \irqstat, [\irqstat] @ get interrupts
|
||||
cmp \irqstat, #0
|
||||
beq 1001f
|
||||
beq 1001f @ upper IRQ?
|
||||
clz \irqnr, \irqstat
|
||||
mov \base, #31
|
||||
subs \irqnr, \base, \irqnr
|
||||
sub \irqnr, \base, \irqnr
|
||||
b 1002f @ lower IRQ being
|
||||
@ handled
|
||||
|
||||
1001:
|
||||
/*
|
||||
* IXP465 has an upper IRQ status register
|
||||
*/
|
||||
#if defined(CONFIG_CPU_IXP46X)
|
||||
bne 1002f
|
||||
ldr \irqstat, =(IXP4XX_INTC_BASE_VIRT+IXP4XX_ICIP2_OFFSET)
|
||||
ldr \irqstat, [\irqstat] @ get upper interrupts
|
||||
mov \irqnr, #63
|
||||
clz \irqstat, \irqstat
|
||||
cmp \irqstat, #32
|
||||
subne \irqnr, \irqnr, \irqstat
|
||||
1002:
|
||||
#endif
|
||||
1002:
|
||||
.endm
|
||||
|
||||
|
||||
|
@ -27,7 +27,7 @@
|
||||
|
||||
#define pcibios_assign_all_busses() 1
|
||||
|
||||
#if defined(CONFIG_CPU_IXP465) && !defined(__ASSEMBLY__)
|
||||
#if defined(CONFIG_CPU_IXP46X) && !defined(__ASSEMBLY__)
|
||||
extern unsigned int processor_id;
|
||||
#define cpu_is_ixp465() ((processor_id & 0xffffffc0) == 0x69054200)
|
||||
#else
|
||||
|
@ -103,7 +103,7 @@
|
||||
({ \
|
||||
smp_mb(); \
|
||||
__asm__ __volatile__( \
|
||||
"@ up_op_read\n" \
|
||||
"@ up_op_write\n" \
|
||||
"1: ldrex lr, [%0]\n" \
|
||||
" adds lr, lr, %1\n" \
|
||||
" strex ip, lr, [%0]\n" \
|
||||
@ -231,7 +231,7 @@
|
||||
#define __up_op_write(ptr,wake) \
|
||||
({ \
|
||||
__asm__ __volatile__( \
|
||||
"@ up_op_read\n" \
|
||||
"@ up_op_write\n" \
|
||||
" mrs ip, cpsr\n" \
|
||||
" orr lr, ip, #128\n" \
|
||||
" msr cpsr_c, lr\n" \
|
||||
|
@ -24,7 +24,12 @@ struct kioctx;
|
||||
#define KIOCB_SYNC_KEY (~0U)
|
||||
|
||||
/* ki_flags bits */
|
||||
#define KIF_LOCKED 0
|
||||
/*
|
||||
* This may be used for cancel/retry serialization in the future, but
|
||||
* for now it's unused and we probably don't want modules to even
|
||||
* think they can use it.
|
||||
*/
|
||||
/* #define KIF_LOCKED 0 */
|
||||
#define KIF_KICKED 1
|
||||
#define KIF_CANCELLED 2
|
||||
|
||||
|
@ -442,12 +442,14 @@ static inline void list_splice_init(struct list_head *list,
|
||||
* as long as the traversal is guarded by rcu_read_lock().
|
||||
*/
|
||||
#define list_for_each_rcu(pos, head) \
|
||||
for (pos = (head)->next; prefetch(pos->next), pos != (head); \
|
||||
pos = rcu_dereference(pos->next))
|
||||
for (pos = (head)->next; \
|
||||
prefetch(rcu_dereference(pos)->next), pos != (head); \
|
||||
pos = pos->next)
|
||||
|
||||
#define __list_for_each_rcu(pos, head) \
|
||||
for (pos = (head)->next; pos != (head); \
|
||||
pos = rcu_dereference(pos->next))
|
||||
for (pos = (head)->next; \
|
||||
rcu_dereference(pos) != (head); \
|
||||
pos = pos->next)
|
||||
|
||||
/**
|
||||
* list_for_each_safe_rcu - iterate over an rcu-protected list safe
|
||||
@ -461,8 +463,9 @@ static inline void list_splice_init(struct list_head *list,
|
||||
* as long as the traversal is guarded by rcu_read_lock().
|
||||
*/
|
||||
#define list_for_each_safe_rcu(pos, n, head) \
|
||||
for (pos = (head)->next, n = pos->next; pos != (head); \
|
||||
pos = rcu_dereference(n), n = pos->next)
|
||||
for (pos = (head)->next; \
|
||||
n = rcu_dereference(pos)->next, pos != (head); \
|
||||
pos = n)
|
||||
|
||||
/**
|
||||
* list_for_each_entry_rcu - iterate over rcu list of given type
|
||||
@ -474,11 +477,11 @@ static inline void list_splice_init(struct list_head *list,
|
||||
* the _rcu list-mutation primitives such as list_add_rcu()
|
||||
* as long as the traversal is guarded by rcu_read_lock().
|
||||
*/
|
||||
#define list_for_each_entry_rcu(pos, head, member) \
|
||||
for (pos = list_entry((head)->next, typeof(*pos), member); \
|
||||
prefetch(pos->member.next), &pos->member != (head); \
|
||||
pos = rcu_dereference(list_entry(pos->member.next, \
|
||||
typeof(*pos), member)))
|
||||
#define list_for_each_entry_rcu(pos, head, member) \
|
||||
for (pos = list_entry((head)->next, typeof(*pos), member); \
|
||||
prefetch(rcu_dereference(pos)->member.next), \
|
||||
&pos->member != (head); \
|
||||
pos = list_entry(pos->member.next, typeof(*pos), member))
|
||||
|
||||
|
||||
/**
|
||||
@ -492,8 +495,9 @@ static inline void list_splice_init(struct list_head *list,
|
||||
* as long as the traversal is guarded by rcu_read_lock().
|
||||
*/
|
||||
#define list_for_each_continue_rcu(pos, head) \
|
||||
for ((pos) = (pos)->next; prefetch((pos)->next), (pos) != (head); \
|
||||
(pos) = rcu_dereference((pos)->next))
|
||||
for ((pos) = (pos)->next; \
|
||||
prefetch(rcu_dereference((pos))->next), (pos) != (head); \
|
||||
(pos) = (pos)->next)
|
||||
|
||||
/*
|
||||
* Double linked lists with a single pointer list head.
|
||||
@ -696,8 +700,9 @@ static inline void hlist_add_after_rcu(struct hlist_node *prev,
|
||||
pos = n)
|
||||
|
||||
#define hlist_for_each_rcu(pos, head) \
|
||||
for ((pos) = (head)->first; pos && ({ prefetch((pos)->next); 1; }); \
|
||||
(pos) = rcu_dereference((pos)->next))
|
||||
for ((pos) = (head)->first; \
|
||||
rcu_dereference((pos)) && ({ prefetch((pos)->next); 1; }); \
|
||||
(pos) = (pos)->next)
|
||||
|
||||
/**
|
||||
* hlist_for_each_entry - iterate over list of given type
|
||||
@ -762,9 +767,9 @@ static inline void hlist_add_after_rcu(struct hlist_node *prev,
|
||||
*/
|
||||
#define hlist_for_each_entry_rcu(tpos, pos, head, member) \
|
||||
for (pos = (head)->first; \
|
||||
pos && ({ prefetch(pos->next); 1;}) && \
|
||||
rcu_dereference(pos) && ({ prefetch(pos->next); 1;}) && \
|
||||
({ tpos = hlist_entry(pos, typeof(*tpos), member); 1;}); \
|
||||
pos = rcu_dereference(pos->next))
|
||||
pos = pos->next)
|
||||
|
||||
#else
|
||||
#warning "don't include kernel headers in userspace"
|
||||
|
@ -94,6 +94,7 @@ struct rcu_data {
|
||||
long batch; /* Batch # for current RCU batch */
|
||||
struct rcu_head *nxtlist;
|
||||
struct rcu_head **nxttail;
|
||||
long count; /* # of queued items */
|
||||
struct rcu_head *curlist;
|
||||
struct rcu_head **curtail;
|
||||
struct rcu_head *donelist;
|
||||
|
@ -424,6 +424,7 @@ static void cleanup_timers(struct list_head *head,
|
||||
cputime_t ptime = cputime_add(utime, stime);
|
||||
|
||||
list_for_each_entry_safe(timer, next, head, entry) {
|
||||
put_task_struct(timer->task);
|
||||
timer->task = NULL;
|
||||
list_del_init(&timer->entry);
|
||||
if (cputime_lt(timer->expires.cpu, ptime)) {
|
||||
@ -436,6 +437,7 @@ static void cleanup_timers(struct list_head *head,
|
||||
|
||||
++head;
|
||||
list_for_each_entry_safe(timer, next, head, entry) {
|
||||
put_task_struct(timer->task);
|
||||
timer->task = NULL;
|
||||
list_del_init(&timer->entry);
|
||||
if (cputime_lt(timer->expires.cpu, utime)) {
|
||||
@ -448,6 +450,7 @@ static void cleanup_timers(struct list_head *head,
|
||||
|
||||
++head;
|
||||
list_for_each_entry_safe(timer, next, head, entry) {
|
||||
put_task_struct(timer->task);
|
||||
timer->task = NULL;
|
||||
list_del_init(&timer->entry);
|
||||
if (timer->expires.sched < sched_time) {
|
||||
|
@ -71,7 +71,7 @@ DEFINE_PER_CPU(struct rcu_data, rcu_bh_data) = { 0L };
|
||||
|
||||
/* Fake initialization required by compiler */
|
||||
static DEFINE_PER_CPU(struct tasklet_struct, rcu_tasklet) = {NULL};
|
||||
static int maxbatch = 10;
|
||||
static int maxbatch = 10000;
|
||||
|
||||
#ifndef __HAVE_ARCH_CMPXCHG
|
||||
/*
|
||||
@ -109,6 +109,10 @@ void fastcall call_rcu(struct rcu_head *head,
|
||||
rdp = &__get_cpu_var(rcu_data);
|
||||
*rdp->nxttail = head;
|
||||
rdp->nxttail = &head->next;
|
||||
|
||||
if (unlikely(++rdp->count > 10000))
|
||||
set_need_resched();
|
||||
|
||||
local_irq_restore(flags);
|
||||
}
|
||||
|
||||
@ -140,6 +144,12 @@ void fastcall call_rcu_bh(struct rcu_head *head,
|
||||
rdp = &__get_cpu_var(rcu_bh_data);
|
||||
*rdp->nxttail = head;
|
||||
rdp->nxttail = &head->next;
|
||||
rdp->count++;
|
||||
/*
|
||||
* Should we directly call rcu_do_batch() here ?
|
||||
* if (unlikely(rdp->count > 10000))
|
||||
* rcu_do_batch(rdp);
|
||||
*/
|
||||
local_irq_restore(flags);
|
||||
}
|
||||
|
||||
@ -157,6 +167,7 @@ static void rcu_do_batch(struct rcu_data *rdp)
|
||||
next = rdp->donelist = list->next;
|
||||
list->func(list);
|
||||
list = next;
|
||||
rdp->count--;
|
||||
if (++count >= maxbatch)
|
||||
break;
|
||||
}
|
||||
|
6
lib/.gitignore
vendored
Normal file
6
lib/.gitignore
vendored
Normal file
@ -0,0 +1,6 @@
|
||||
#
|
||||
# Generated files
|
||||
#
|
||||
gen_crc32table
|
||||
crc32table.h
|
||||
|
4
scripts/.gitignore
vendored
Normal file
4
scripts/.gitignore
vendored
Normal file
@ -0,0 +1,4 @@
|
||||
conmakehash
|
||||
kallsyms
|
||||
pnmtologo
|
||||
|
3
scripts/basic/.gitignore
vendored
Normal file
3
scripts/basic/.gitignore
vendored
Normal file
@ -0,0 +1,3 @@
|
||||
fixdep
|
||||
split-include
|
||||
docproc
|
16
scripts/kconfig/.gitignore
vendored
Normal file
16
scripts/kconfig/.gitignore
vendored
Normal file
@ -0,0 +1,16 @@
|
||||
#
|
||||
# Generated files
|
||||
#
|
||||
config*
|
||||
lex.*.c
|
||||
*.tab.c
|
||||
*.tab.h
|
||||
|
||||
#
|
||||
# configuration programs
|
||||
#
|
||||
conf
|
||||
mconf
|
||||
qconf
|
||||
gconf
|
||||
kxgettext
|
4
scripts/mod/.gitignore
vendored
Normal file
4
scripts/mod/.gitignore
vendored
Normal file
@ -0,0 +1,4 @@
|
||||
elfconfig.h
|
||||
mk_elfconfig
|
||||
modpost
|
||||
|
7
usr/.gitignore
vendored
Normal file
7
usr/.gitignore
vendored
Normal file
@ -0,0 +1,7 @@
|
||||
#
|
||||
# Generated files
|
||||
#
|
||||
gen_init_cpio
|
||||
initramfs_data.cpio
|
||||
initramfs_data.cpio.gz
|
||||
initramfs_list
|
Loading…
Reference in New Issue
Block a user