You've already forked linux-apfs
mirror of
https://github.com/linux-apfs/linux-apfs.git
synced 2026-05-01 15:00:59 -07:00
Merge branch 'master' into gfs2
This commit is contained in:
@@ -120,6 +120,13 @@ Who: Adrian Bunk <bunk@stusta.de>
|
||||
|
||||
---------------------------
|
||||
|
||||
What: drivers depending on OSS_OBSOLETE_DRIVER
|
||||
When: options in 2.6.20, code in 2.6.22
|
||||
Why: OSS drivers with ALSA replacements
|
||||
Who: Adrian Bunk <bunk@stusta.de>
|
||||
|
||||
---------------------------
|
||||
|
||||
What: pci_module_init(driver)
|
||||
When: January 2007
|
||||
Why: Is replaced by pci_register_driver(pci_driver).
|
||||
|
||||
@@ -1183,6 +1183,8 @@ running once the system is up.
|
||||
Mechanism 2.
|
||||
nommconf [IA-32,X86_64] Disable use of MMCONFIG for PCI
|
||||
Configuration
|
||||
mmconf [IA-32,X86_64] Force MMCONFIG. This is useful
|
||||
to override the builtin blacklist.
|
||||
nomsi [MSI] If the PCI_MSI kernel config parameter is
|
||||
enabled, this kernel boot option can be used to
|
||||
disable the use of MSI interrupts system-wide.
|
||||
|
||||
@@ -1136,10 +1136,10 @@ Sense and level information should be encoded as follows:
|
||||
Devices connected to openPIC-compatible controllers should encode
|
||||
sense and polarity as follows:
|
||||
|
||||
0 = high to low edge sensitive type enabled
|
||||
0 = low to high edge sensitive type enabled
|
||||
1 = active low level sensitive type enabled
|
||||
2 = low to high edge sensitive type enabled
|
||||
3 = active high level sensitive type enabled
|
||||
2 = active high level sensitive type enabled
|
||||
3 = high to low edge sensitive type enabled
|
||||
|
||||
ISA PIC interrupt controllers should adhere to the ISA PIC
|
||||
encodings listed below:
|
||||
|
||||
+2
-1
@@ -3314,10 +3314,11 @@ S: Maintained
|
||||
|
||||
XFS FILESYSTEM
|
||||
P: Silicon Graphics Inc
|
||||
P: Tim Shimmin, David Chatterton
|
||||
M: xfs-masters@oss.sgi.com
|
||||
M: nathans@sgi.com
|
||||
L: xfs@oss.sgi.com
|
||||
W: http://oss.sgi.com/projects/xfs
|
||||
T: git git://oss.sgi.com:8090/xfs/xfs-2.6
|
||||
S: Supported
|
||||
|
||||
X86 3-LEVEL PAGING (PAE) SUPPORT
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
VERSION = 2
|
||||
PATCHLEVEL = 6
|
||||
SUBLEVEL = 18
|
||||
EXTRAVERSION = -rc5
|
||||
EXTRAVERSION = -rc6
|
||||
NAME=Crazed Snow-Weasel
|
||||
|
||||
# *DOCUMENTATION*
|
||||
|
||||
@@ -621,9 +621,8 @@ CONFIG_AT91_WATCHDOG=y
|
||||
# USB-based Watchdog Cards
|
||||
#
|
||||
# CONFIG_USBPCWATCHDOG is not set
|
||||
# CONFIG_HW_RANDOM is not set
|
||||
# CONFIG_NVRAM is not set
|
||||
CONFIG_RTC=y
|
||||
# CONFIG_AT91_RTC is not set
|
||||
# CONFIG_DTLK is not set
|
||||
# CONFIG_R3964 is not set
|
||||
|
||||
@@ -956,9 +955,41 @@ CONFIG_USB_AT91=y
|
||||
CONFIG_MMC=y
|
||||
# CONFIG_MMC_DEBUG is not set
|
||||
CONFIG_MMC_BLOCK=y
|
||||
# CONFIG_MMC_WBSD is not set
|
||||
CONFIG_MMC_AT91RM9200=y
|
||||
|
||||
#
|
||||
# Real Time Clock
|
||||
#
|
||||
CONFIG_RTC_LIB=y
|
||||
CONFIG_RTC_CLASS=y
|
||||
CONFIG_RTC_HCTOSYS=y
|
||||
CONFIG_RTC_HCTOSYS_DEVICE="rtc1"
|
||||
|
||||
#
|
||||
# RTC interfaces
|
||||
#
|
||||
# CONFIG_RTC_INTF_SYSFS is not set
|
||||
CONFIG_RTC_INTF_PROC=y
|
||||
CONFIG_RTC_INTF_DEV=y
|
||||
# CONFIG_RTC_INTF_DEV_UIE_EMUL is not set
|
||||
|
||||
#
|
||||
# RTC drivers
|
||||
#
|
||||
# CONFIG_RTC_DRV_X1205 is not set
|
||||
CONFIG_RTC_DRV_DS1307=y
|
||||
# CONFIG_RTC_DRV_DS1553 is not set
|
||||
# CONFIG_RTC_DRV_ISL1208 is not set
|
||||
# CONFIG_RTC_DRV_DS1672 is not set
|
||||
# CONFIG_RTC_DRV_DS1742 is not set
|
||||
# CONFIG_RTC_DRV_PCF8563 is not set
|
||||
# CONFIG_RTC_DRV_PCF8583 is not set
|
||||
# CONFIG_RTC_DRV_RS5C372 is not set
|
||||
# CONFIG_RTC_DRV_M48T86 is not set
|
||||
CONFIG_RTC_DRV_AT91=y
|
||||
# CONFIG_RTC_DRV_TEST is not set
|
||||
# CONFIG_RTC_DRV_V3020 is not set
|
||||
|
||||
#
|
||||
# File systems
|
||||
#
|
||||
|
||||
+44
-44
@@ -60,7 +60,7 @@ static void __iomem *dma_base;
|
||||
static kmem_cache_t *dma_kmem;
|
||||
|
||||
/* dma channel state information */
|
||||
s3c2410_dma_chan_t s3c2410_chans[S3C2410_DMA_CHANNELS];
|
||||
struct s3c2410_dma_chan s3c2410_chans[S3C2410_DMA_CHANNELS];
|
||||
|
||||
/* debugging functions */
|
||||
|
||||
@@ -74,7 +74,7 @@ s3c2410_dma_chan_t s3c2410_chans[S3C2410_DMA_CHANNELS];
|
||||
#define dma_wrreg(chan, reg, val) writel((val), (chan)->regs + (reg))
|
||||
#else
|
||||
static inline void
|
||||
dma_wrreg(s3c2410_dma_chan_t *chan, int reg, unsigned long val)
|
||||
dma_wrreg(struct s3c2410_dma_chan *chan, int reg, unsigned long val)
|
||||
{
|
||||
pr_debug("writing %08x to register %08x\n",(unsigned int)val,reg);
|
||||
writel(val, dma_regaddr(chan, reg));
|
||||
@@ -102,7 +102,7 @@ struct s3c2410_dma_regstate {
|
||||
*/
|
||||
|
||||
static void
|
||||
dmadbg_capture(s3c2410_dma_chan_t *chan, struct s3c2410_dma_regstate *regs)
|
||||
dmadbg_capture(struct s3c2410_dma_chan *chan, struct s3c2410_dma_regstate *regs)
|
||||
{
|
||||
regs->dcsrc = dma_rdreg(chan, S3C2410_DMA_DCSRC);
|
||||
regs->disrc = dma_rdreg(chan, S3C2410_DMA_DISRC);
|
||||
@@ -112,7 +112,7 @@ dmadbg_capture(s3c2410_dma_chan_t *chan, struct s3c2410_dma_regstate *regs)
|
||||
}
|
||||
|
||||
static void
|
||||
dmadbg_dumpregs(const char *fname, int line, s3c2410_dma_chan_t *chan,
|
||||
dmadbg_dumpregs(const char *fname, int line, struct s3c2410_dma_chan *chan,
|
||||
struct s3c2410_dma_regstate *regs)
|
||||
{
|
||||
printk(KERN_DEBUG "dma%d: %s:%d: DCSRC=%08lx, DISRC=%08lx, DSTAT=%08lx DMT=%02lx, DCON=%08lx\n",
|
||||
@@ -122,7 +122,7 @@ dmadbg_dumpregs(const char *fname, int line, s3c2410_dma_chan_t *chan,
|
||||
}
|
||||
|
||||
static void
|
||||
dmadbg_showchan(const char *fname, int line, s3c2410_dma_chan_t *chan)
|
||||
dmadbg_showchan(const char *fname, int line, struct s3c2410_dma_chan *chan)
|
||||
{
|
||||
struct s3c2410_dma_regstate state;
|
||||
|
||||
@@ -136,7 +136,7 @@ dmadbg_showchan(const char *fname, int line, s3c2410_dma_chan_t *chan)
|
||||
}
|
||||
|
||||
static void
|
||||
dmadbg_showregs(const char *fname, int line, s3c2410_dma_chan_t *chan)
|
||||
dmadbg_showregs(const char *fname, int line, struct s3c2410_dma_chan *chan)
|
||||
{
|
||||
struct s3c2410_dma_regstate state;
|
||||
|
||||
@@ -164,7 +164,7 @@ dmadbg_showregs(const char *fname, int line, s3c2410_dma_chan_t *chan)
|
||||
*/
|
||||
|
||||
static void
|
||||
s3c2410_dma_stats_timeout(s3c2410_dma_stats_t *stats, int val)
|
||||
s3c2410_dma_stats_timeout(struct s3c2410_dma_stats *stats, int val)
|
||||
{
|
||||
if (stats == NULL)
|
||||
return;
|
||||
@@ -183,7 +183,7 @@ s3c2410_dma_stats_timeout(s3c2410_dma_stats_t *stats, int val)
|
||||
*/
|
||||
|
||||
static int
|
||||
s3c2410_dma_waitforload(s3c2410_dma_chan_t *chan, int line)
|
||||
s3c2410_dma_waitforload(struct s3c2410_dma_chan *chan, int line)
|
||||
{
|
||||
int timeout = chan->load_timeout;
|
||||
int took;
|
||||
@@ -230,8 +230,8 @@ s3c2410_dma_waitforload(s3c2410_dma_chan_t *chan, int line)
|
||||
*/
|
||||
|
||||
static inline int
|
||||
s3c2410_dma_loadbuffer(s3c2410_dma_chan_t *chan,
|
||||
s3c2410_dma_buf_t *buf)
|
||||
s3c2410_dma_loadbuffer(struct s3c2410_dma_chan *chan,
|
||||
struct s3c2410_dma_buf *buf)
|
||||
{
|
||||
unsigned long reload;
|
||||
|
||||
@@ -304,7 +304,7 @@ s3c2410_dma_loadbuffer(s3c2410_dma_chan_t *chan,
|
||||
*/
|
||||
|
||||
static void
|
||||
s3c2410_dma_call_op(s3c2410_dma_chan_t *chan, s3c2410_chan_op_t op)
|
||||
s3c2410_dma_call_op(struct s3c2410_dma_chan *chan, enum s3c2410_chan_op op)
|
||||
{
|
||||
if (chan->op_fn != NULL) {
|
||||
(chan->op_fn)(chan, op);
|
||||
@@ -318,8 +318,8 @@ s3c2410_dma_call_op(s3c2410_dma_chan_t *chan, s3c2410_chan_op_t op)
|
||||
*/
|
||||
|
||||
static inline void
|
||||
s3c2410_dma_buffdone(s3c2410_dma_chan_t *chan, s3c2410_dma_buf_t *buf,
|
||||
s3c2410_dma_buffresult_t result)
|
||||
s3c2410_dma_buffdone(struct s3c2410_dma_chan *chan, struct s3c2410_dma_buf *buf,
|
||||
enum s3c2410_dma_buffresult result)
|
||||
{
|
||||
pr_debug("callback_fn=%p, buf=%p, id=%p, size=%d, result=%d\n",
|
||||
chan->callback_fn, buf, buf->id, buf->size, result);
|
||||
@@ -334,7 +334,7 @@ s3c2410_dma_buffdone(s3c2410_dma_chan_t *chan, s3c2410_dma_buf_t *buf,
|
||||
* start a dma channel going
|
||||
*/
|
||||
|
||||
static int s3c2410_dma_start(s3c2410_dma_chan_t *chan)
|
||||
static int s3c2410_dma_start(struct s3c2410_dma_chan *chan)
|
||||
{
|
||||
unsigned long tmp;
|
||||
unsigned long flags;
|
||||
@@ -430,7 +430,7 @@ static int s3c2410_dma_start(s3c2410_dma_chan_t *chan)
|
||||
*/
|
||||
|
||||
static int
|
||||
s3c2410_dma_canload(s3c2410_dma_chan_t *chan)
|
||||
s3c2410_dma_canload(struct s3c2410_dma_chan *chan)
|
||||
{
|
||||
if (chan->load_state == S3C2410_DMALOAD_NONE ||
|
||||
chan->load_state == S3C2410_DMALOAD_1RUNNING)
|
||||
@@ -460,8 +460,8 @@ s3c2410_dma_canload(s3c2410_dma_chan_t *chan)
|
||||
int s3c2410_dma_enqueue(unsigned int channel, void *id,
|
||||
dma_addr_t data, int size)
|
||||
{
|
||||
s3c2410_dma_chan_t *chan = &s3c2410_chans[channel];
|
||||
s3c2410_dma_buf_t *buf;
|
||||
struct s3c2410_dma_chan *chan = &s3c2410_chans[channel];
|
||||
struct s3c2410_dma_buf *buf;
|
||||
unsigned long flags;
|
||||
|
||||
check_channel(channel);
|
||||
@@ -540,7 +540,7 @@ int s3c2410_dma_enqueue(unsigned int channel, void *id,
|
||||
EXPORT_SYMBOL(s3c2410_dma_enqueue);
|
||||
|
||||
static inline void
|
||||
s3c2410_dma_freebuf(s3c2410_dma_buf_t *buf)
|
||||
s3c2410_dma_freebuf(struct s3c2410_dma_buf *buf)
|
||||
{
|
||||
int magicok = (buf->magic == BUF_MAGIC);
|
||||
|
||||
@@ -560,7 +560,7 @@ s3c2410_dma_freebuf(s3c2410_dma_buf_t *buf)
|
||||
*/
|
||||
|
||||
static inline void
|
||||
s3c2410_dma_lastxfer(s3c2410_dma_chan_t *chan)
|
||||
s3c2410_dma_lastxfer(struct s3c2410_dma_chan *chan)
|
||||
{
|
||||
pr_debug("dma%d: s3c2410_dma_lastxfer: load_state %d\n",
|
||||
chan->number, chan->load_state);
|
||||
@@ -601,8 +601,8 @@ s3c2410_dma_lastxfer(s3c2410_dma_chan_t *chan)
|
||||
static irqreturn_t
|
||||
s3c2410_dma_irq(int irq, void *devpw, struct pt_regs *regs)
|
||||
{
|
||||
s3c2410_dma_chan_t *chan = (s3c2410_dma_chan_t *)devpw;
|
||||
s3c2410_dma_buf_t *buf;
|
||||
struct s3c2410_dma_chan *chan = (struct s3c2410_dma_chan *)devpw;
|
||||
struct s3c2410_dma_buf *buf;
|
||||
|
||||
buf = chan->curr;
|
||||
|
||||
@@ -731,10 +731,10 @@ s3c2410_dma_irq(int irq, void *devpw, struct pt_regs *regs)
|
||||
* get control of an dma channel
|
||||
*/
|
||||
|
||||
int s3c2410_dma_request(unsigned int channel, s3c2410_dma_client_t *client,
|
||||
int s3c2410_dma_request(unsigned int channel, struct s3c2410_dma_client *client,
|
||||
void *dev)
|
||||
{
|
||||
s3c2410_dma_chan_t *chan = &s3c2410_chans[channel];
|
||||
struct s3c2410_dma_chan *chan = &s3c2410_chans[channel];
|
||||
unsigned long flags;
|
||||
int err;
|
||||
|
||||
@@ -807,9 +807,9 @@ EXPORT_SYMBOL(s3c2410_dma_request);
|
||||
* allowed to go through.
|
||||
*/
|
||||
|
||||
int s3c2410_dma_free(dmach_t channel, s3c2410_dma_client_t *client)
|
||||
int s3c2410_dma_free(dmach_t channel, struct s3c2410_dma_client *client)
|
||||
{
|
||||
s3c2410_dma_chan_t *chan = &s3c2410_chans[channel];
|
||||
struct s3c2410_dma_chan *chan = &s3c2410_chans[channel];
|
||||
unsigned long flags;
|
||||
|
||||
check_channel(channel);
|
||||
@@ -846,7 +846,7 @@ int s3c2410_dma_free(dmach_t channel, s3c2410_dma_client_t *client)
|
||||
|
||||
EXPORT_SYMBOL(s3c2410_dma_free);
|
||||
|
||||
static int s3c2410_dma_dostop(s3c2410_dma_chan_t *chan)
|
||||
static int s3c2410_dma_dostop(struct s3c2410_dma_chan *chan)
|
||||
{
|
||||
unsigned long tmp;
|
||||
unsigned long flags;
|
||||
@@ -880,7 +880,7 @@ static int s3c2410_dma_dostop(s3c2410_dma_chan_t *chan)
|
||||
return 0;
|
||||
}
|
||||
|
||||
void s3c2410_dma_waitforstop(s3c2410_dma_chan_t *chan)
|
||||
void s3c2410_dma_waitforstop(struct s3c2410_dma_chan *chan)
|
||||
{
|
||||
unsigned long tmp;
|
||||
unsigned int timeout = 0x10000;
|
||||
@@ -901,9 +901,9 @@ void s3c2410_dma_waitforstop(s3c2410_dma_chan_t *chan)
|
||||
* stop the channel, and remove all current and pending transfers
|
||||
*/
|
||||
|
||||
static int s3c2410_dma_flush(s3c2410_dma_chan_t *chan)
|
||||
static int s3c2410_dma_flush(struct s3c2410_dma_chan *chan)
|
||||
{
|
||||
s3c2410_dma_buf_t *buf, *next;
|
||||
struct s3c2410_dma_buf *buf, *next;
|
||||
unsigned long flags;
|
||||
|
||||
pr_debug("%s: chan %p (%d)\n", __FUNCTION__, chan, chan->number);
|
||||
@@ -958,7 +958,7 @@ static int s3c2410_dma_flush(s3c2410_dma_chan_t *chan)
|
||||
}
|
||||
|
||||
int
|
||||
s3c2410_dma_started(s3c2410_dma_chan_t *chan)
|
||||
s3c2410_dma_started(struct s3c2410_dma_chan *chan)
|
||||
{
|
||||
unsigned long flags;
|
||||
|
||||
@@ -995,9 +995,9 @@ s3c2410_dma_started(s3c2410_dma_chan_t *chan)
|
||||
}
|
||||
|
||||
int
|
||||
s3c2410_dma_ctrl(dmach_t channel, s3c2410_chan_op_t op)
|
||||
s3c2410_dma_ctrl(dmach_t channel, enum s3c2410_chan_op op)
|
||||
{
|
||||
s3c2410_dma_chan_t *chan = &s3c2410_chans[channel];
|
||||
struct s3c2410_dma_chan *chan = &s3c2410_chans[channel];
|
||||
|
||||
check_channel(channel);
|
||||
|
||||
@@ -1046,7 +1046,7 @@ int s3c2410_dma_config(dmach_t channel,
|
||||
int xferunit,
|
||||
int dcon)
|
||||
{
|
||||
s3c2410_dma_chan_t *chan = &s3c2410_chans[channel];
|
||||
struct s3c2410_dma_chan *chan = &s3c2410_chans[channel];
|
||||
|
||||
pr_debug("%s: chan=%d, xfer_unit=%d, dcon=%08x\n",
|
||||
__FUNCTION__, channel, xferunit, dcon);
|
||||
@@ -1086,7 +1086,7 @@ EXPORT_SYMBOL(s3c2410_dma_config);
|
||||
|
||||
int s3c2410_dma_setflags(dmach_t channel, unsigned int flags)
|
||||
{
|
||||
s3c2410_dma_chan_t *chan = &s3c2410_chans[channel];
|
||||
struct s3c2410_dma_chan *chan = &s3c2410_chans[channel];
|
||||
|
||||
check_channel(channel);
|
||||
|
||||
@@ -1106,7 +1106,7 @@ EXPORT_SYMBOL(s3c2410_dma_setflags);
|
||||
|
||||
int s3c2410_dma_set_opfn(dmach_t channel, s3c2410_dma_opfn_t rtn)
|
||||
{
|
||||
s3c2410_dma_chan_t *chan = &s3c2410_chans[channel];
|
||||
struct s3c2410_dma_chan *chan = &s3c2410_chans[channel];
|
||||
|
||||
check_channel(channel);
|
||||
|
||||
@@ -1121,7 +1121,7 @@ EXPORT_SYMBOL(s3c2410_dma_set_opfn);
|
||||
|
||||
int s3c2410_dma_set_buffdone_fn(dmach_t channel, s3c2410_dma_cbfn_t rtn)
|
||||
{
|
||||
s3c2410_dma_chan_t *chan = &s3c2410_chans[channel];
|
||||
struct s3c2410_dma_chan *chan = &s3c2410_chans[channel];
|
||||
|
||||
check_channel(channel);
|
||||
|
||||
@@ -1149,11 +1149,11 @@ EXPORT_SYMBOL(s3c2410_dma_set_buffdone_fn);
|
||||
*/
|
||||
|
||||
int s3c2410_dma_devconfig(int channel,
|
||||
s3c2410_dmasrc_t source,
|
||||
enum s3c2410_dmasrc source,
|
||||
int hwcfg,
|
||||
unsigned long devaddr)
|
||||
{
|
||||
s3c2410_dma_chan_t *chan = &s3c2410_chans[channel];
|
||||
struct s3c2410_dma_chan *chan = &s3c2410_chans[channel];
|
||||
|
||||
check_channel(channel);
|
||||
|
||||
@@ -1200,7 +1200,7 @@ EXPORT_SYMBOL(s3c2410_dma_devconfig);
|
||||
|
||||
int s3c2410_dma_getposition(dmach_t channel, dma_addr_t *src, dma_addr_t *dst)
|
||||
{
|
||||
s3c2410_dma_chan_t *chan = &s3c2410_chans[channel];
|
||||
struct s3c2410_dma_chan *chan = &s3c2410_chans[channel];
|
||||
|
||||
check_channel(channel);
|
||||
|
||||
@@ -1222,7 +1222,7 @@ EXPORT_SYMBOL(s3c2410_dma_getposition);
|
||||
|
||||
static int s3c2410_dma_suspend(struct sys_device *dev, pm_message_t state)
|
||||
{
|
||||
s3c2410_dma_chan_t *cp = container_of(dev, s3c2410_dma_chan_t, dev);
|
||||
struct s3c2410_dma_chan *cp = container_of(dev, struct s3c2410_dma_chan, dev);
|
||||
|
||||
printk(KERN_DEBUG "suspending dma channel %d\n", cp->number);
|
||||
|
||||
@@ -1262,7 +1262,7 @@ static struct sysdev_class dma_sysclass = {
|
||||
|
||||
static void s3c2410_dma_cache_ctor(void *p, kmem_cache_t *c, unsigned long f)
|
||||
{
|
||||
memset(p, 0, sizeof(s3c2410_dma_buf_t));
|
||||
memset(p, 0, sizeof(struct s3c2410_dma_buf));
|
||||
}
|
||||
|
||||
|
||||
@@ -1270,7 +1270,7 @@ static void s3c2410_dma_cache_ctor(void *p, kmem_cache_t *c, unsigned long f)
|
||||
|
||||
static int __init s3c2410_init_dma(void)
|
||||
{
|
||||
s3c2410_dma_chan_t *cp;
|
||||
struct s3c2410_dma_chan *cp;
|
||||
int channel;
|
||||
int ret;
|
||||
|
||||
@@ -1288,7 +1288,7 @@ static int __init s3c2410_init_dma(void)
|
||||
goto err;
|
||||
}
|
||||
|
||||
dma_kmem = kmem_cache_create("dma_desc", sizeof(s3c2410_dma_buf_t), 0,
|
||||
dma_kmem = kmem_cache_create("dma_desc", sizeof(struct s3c2410_dma_buf), 0,
|
||||
SLAB_HWCACHE_ALIGN,
|
||||
s3c2410_dma_cache_ctor, NULL);
|
||||
|
||||
@@ -1301,7 +1301,7 @@ static int __init s3c2410_init_dma(void)
|
||||
for (channel = 0; channel < S3C2410_DMA_CHANNELS; channel++) {
|
||||
cp = &s3c2410_chans[channel];
|
||||
|
||||
memset(cp, 0, sizeof(s3c2410_dma_chan_t));
|
||||
memset(cp, 0, sizeof(struct s3c2410_dma_chan));
|
||||
|
||||
/* dma channel irqs are in order.. */
|
||||
cp->number = channel;
|
||||
|
||||
@@ -87,6 +87,32 @@ void flush_cache_page(struct vm_area_struct *vma, unsigned long user_addr, unsig
|
||||
if (cache_is_vipt_aliasing())
|
||||
flush_pfn_alias(pfn, user_addr);
|
||||
}
|
||||
|
||||
void flush_ptrace_access(struct vm_area_struct *vma, struct page *page,
|
||||
unsigned long uaddr, void *kaddr,
|
||||
unsigned long len, int write)
|
||||
{
|
||||
if (cache_is_vivt()) {
|
||||
if (cpu_isset(smp_processor_id(), vma->vm_mm->cpu_vm_mask)) {
|
||||
unsigned long addr = (unsigned long)kaddr;
|
||||
__cpuc_coherent_kern_range(addr, addr + len);
|
||||
}
|
||||
return;
|
||||
}
|
||||
|
||||
if (cache_is_vipt_aliasing()) {
|
||||
flush_pfn_alias(page_to_pfn(page), uaddr);
|
||||
return;
|
||||
}
|
||||
|
||||
/* VIPT non-aliasing cache */
|
||||
if (cpu_isset(smp_processor_id(), vma->vm_mm->cpu_vm_mask) &&
|
||||
vma->vm_flags | VM_EXEC) {
|
||||
unsigned long addr = (unsigned long)kaddr;
|
||||
/* only flushing the kernel mapping on non-aliasing VIPT */
|
||||
__cpuc_coherent_kern_range(addr, addr + len);
|
||||
}
|
||||
}
|
||||
#else
|
||||
#define flush_pfn_alias(pfn,vaddr) do { } while (0)
|
||||
#endif
|
||||
|
||||
+2
-8
@@ -156,7 +156,7 @@ struct vfp_single {
|
||||
};
|
||||
|
||||
extern s32 vfp_get_float(unsigned int reg);
|
||||
extern void vfp_put_float(unsigned int reg, s32 val);
|
||||
extern void vfp_put_float(s32 val, unsigned int reg);
|
||||
|
||||
/*
|
||||
* VFP_SINGLE_MANTISSA_BITS - number of bits in the mantissa
|
||||
@@ -267,7 +267,7 @@ struct vfp_double {
|
||||
*/
|
||||
#define VFP_REG_ZERO 16
|
||||
extern u64 vfp_get_double(unsigned int reg);
|
||||
extern void vfp_put_double(unsigned int reg, u64 val);
|
||||
extern void vfp_put_double(u64 val, unsigned int reg);
|
||||
|
||||
#define VFP_DOUBLE_MANTISSA_BITS (52)
|
||||
#define VFP_DOUBLE_EXPONENT_BITS (11)
|
||||
@@ -341,12 +341,6 @@ static inline int vfp_double_type(struct vfp_double *s)
|
||||
|
||||
u32 vfp_double_normaliseround(int dd, struct vfp_double *vd, u32 fpscr, u32 exceptions, const char *func);
|
||||
|
||||
/*
|
||||
* System registers
|
||||
*/
|
||||
extern u32 vfp_get_sys(unsigned int reg);
|
||||
extern void vfp_put_sys(unsigned int reg, u32 val);
|
||||
|
||||
u32 vfp_estimate_sqrt_significand(u32 exponent, u32 significand);
|
||||
|
||||
/*
|
||||
|
||||
+10
-10
@@ -195,7 +195,7 @@ u32 vfp_double_normaliseround(int dd, struct vfp_double *vd, u32 fpscr, u32 exce
|
||||
s64 d = vfp_double_pack(vd);
|
||||
pr_debug("VFP: %s: d(d%d)=%016llx exceptions=%08x\n", func,
|
||||
dd, d, exceptions);
|
||||
vfp_put_double(dd, d);
|
||||
vfp_put_double(d, dd);
|
||||
}
|
||||
return exceptions;
|
||||
}
|
||||
@@ -250,19 +250,19 @@ vfp_propagate_nan(struct vfp_double *vdd, struct vfp_double *vdn,
|
||||
*/
|
||||
static u32 vfp_double_fabs(int dd, int unused, int dm, u32 fpscr)
|
||||
{
|
||||
vfp_put_double(dd, vfp_double_packed_abs(vfp_get_double(dm)));
|
||||
vfp_put_double(vfp_double_packed_abs(vfp_get_double(dm)), dd);
|
||||
return 0;
|
||||
}
|
||||
|
||||
static u32 vfp_double_fcpy(int dd, int unused, int dm, u32 fpscr)
|
||||
{
|
||||
vfp_put_double(dd, vfp_get_double(dm));
|
||||
vfp_put_double(vfp_get_double(dm), dd);
|
||||
return 0;
|
||||
}
|
||||
|
||||
static u32 vfp_double_fneg(int dd, int unused, int dm, u32 fpscr)
|
||||
{
|
||||
vfp_put_double(dd, vfp_double_packed_negate(vfp_get_double(dm)));
|
||||
vfp_put_double(vfp_double_packed_negate(vfp_get_double(dm)), dd);
|
||||
return 0;
|
||||
}
|
||||
|
||||
@@ -287,7 +287,7 @@ static u32 vfp_double_fsqrt(int dd, int unused, int dm, u32 fpscr)
|
||||
vdp = &vfp_double_default_qnan;
|
||||
ret = FPSCR_IOC;
|
||||
}
|
||||
vfp_put_double(dd, vfp_double_pack(vdp));
|
||||
vfp_put_double(vfp_double_pack(vdp), dd);
|
||||
return ret;
|
||||
}
|
||||
|
||||
@@ -476,7 +476,7 @@ static u32 vfp_double_fcvts(int sd, int unused, int dm, u32 fpscr)
|
||||
return vfp_single_normaliseround(sd, &vsd, fpscr, exceptions, "fcvts");
|
||||
|
||||
pack_nan:
|
||||
vfp_put_float(sd, vfp_single_pack(&vsd));
|
||||
vfp_put_float(vfp_single_pack(&vsd), sd);
|
||||
return exceptions;
|
||||
}
|
||||
|
||||
@@ -573,7 +573,7 @@ static u32 vfp_double_ftoui(int sd, int unused, int dm, u32 fpscr)
|
||||
|
||||
pr_debug("VFP: ftoui: d(s%d)=%08x exceptions=%08x\n", sd, d, exceptions);
|
||||
|
||||
vfp_put_float(sd, d);
|
||||
vfp_put_float(d, sd);
|
||||
|
||||
return exceptions;
|
||||
}
|
||||
@@ -648,7 +648,7 @@ static u32 vfp_double_ftosi(int sd, int unused, int dm, u32 fpscr)
|
||||
|
||||
pr_debug("VFP: ftosi: d(s%d)=%08x exceptions=%08x\n", sd, d, exceptions);
|
||||
|
||||
vfp_put_float(sd, (s32)d);
|
||||
vfp_put_float((s32)d, sd);
|
||||
|
||||
return exceptions;
|
||||
}
|
||||
@@ -1084,7 +1084,7 @@ static u32 vfp_double_fdiv(int dd, int dn, int dm, u32 fpscr)
|
||||
vdn_nan:
|
||||
exceptions = vfp_propagate_nan(&vdd, &vdn, &vdm, fpscr);
|
||||
pack:
|
||||
vfp_put_double(dd, vfp_double_pack(&vdd));
|
||||
vfp_put_double(vfp_double_pack(&vdd), dd);
|
||||
return exceptions;
|
||||
|
||||
vdm_nan:
|
||||
@@ -1104,7 +1104,7 @@ static u32 vfp_double_fdiv(int dd, int dn, int dm, u32 fpscr)
|
||||
goto pack;
|
||||
|
||||
invalid:
|
||||
vfp_put_double(dd, vfp_double_pack(&vfp_double_default_qnan));
|
||||
vfp_put_double(vfp_double_pack(&vfp_double_default_qnan), dd);
|
||||
return FPSCR_IOC;
|
||||
}
|
||||
|
||||
|
||||
@@ -178,12 +178,12 @@ vfp_get_float:
|
||||
|
||||
.globl vfp_put_float
|
||||
vfp_put_float:
|
||||
add pc, pc, r0, lsl #3
|
||||
add pc, pc, r1, lsl #3
|
||||
mov r0, r0
|
||||
.irp dr,0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15
|
||||
mcr p10, 0, r1, c\dr, c0, 0 @ fmsr r0, s0
|
||||
mcr p10, 0, r0, c\dr, c0, 0 @ fmsr r0, s0
|
||||
mov pc, lr
|
||||
mcr p10, 0, r1, c\dr, c0, 4 @ fmsr r0, s1
|
||||
mcr p10, 0, r0, c\dr, c0, 4 @ fmsr r0, s1
|
||||
mov pc, lr
|
||||
.endr
|
||||
|
||||
@@ -203,9 +203,9 @@ vfp_get_double:
|
||||
|
||||
.globl vfp_put_double
|
||||
vfp_put_double:
|
||||
add pc, pc, r0, lsl #3
|
||||
add pc, pc, r2, lsl #3
|
||||
mov r0, r0
|
||||
.irp dr,0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15
|
||||
fmdrr d\dr, r1, r2
|
||||
fmdrr d\dr, r0, r1
|
||||
mov pc, lr
|
||||
.endr
|
||||
|
||||
+10
-10
@@ -200,7 +200,7 @@ u32 vfp_single_normaliseround(int sd, struct vfp_single *vs, u32 fpscr, u32 exce
|
||||
s32 d = vfp_single_pack(vs);
|
||||
pr_debug("VFP: %s: d(s%d)=%08x exceptions=%08x\n", func,
|
||||
sd, d, exceptions);
|
||||
vfp_put_float(sd, d);
|
||||
vfp_put_float(d, sd);
|
||||
}
|
||||
|
||||
return exceptions;
|
||||
@@ -257,19 +257,19 @@ vfp_propagate_nan(struct vfp_single *vsd, struct vfp_single *vsn,
|
||||
*/
|
||||
static u32 vfp_single_fabs(int sd, int unused, s32 m, u32 fpscr)
|
||||
{
|
||||
vfp_put_float(sd, vfp_single_packed_abs(m));
|
||||
vfp_put_float(vfp_single_packed_abs(m), sd);
|
||||
return 0;
|
||||
}
|
||||
|
||||
static u32 vfp_single_fcpy(int sd, int unused, s32 m, u32 fpscr)
|
||||
{
|
||||
vfp_put_float(sd, m);
|
||||
vfp_put_float(m, sd);
|
||||
return 0;
|
||||
}
|
||||
|
||||
static u32 vfp_single_fneg(int sd, int unused, s32 m, u32 fpscr)
|
||||
{
|
||||
vfp_put_float(sd, vfp_single_packed_negate(m));
|
||||
vfp_put_float(vfp_single_packed_negate(m), sd);
|
||||
return 0;
|
||||
}
|
||||
|
||||
@@ -333,7 +333,7 @@ static u32 vfp_single_fsqrt(int sd, int unused, s32 m, u32 fpscr)
|
||||
vsp = &vfp_single_default_qnan;
|
||||
ret = FPSCR_IOC;
|
||||
}
|
||||
vfp_put_float(sd, vfp_single_pack(vsp));
|
||||
vfp_put_float(vfp_single_pack(vsp), sd);
|
||||
return ret;
|
||||
}
|
||||
|
||||
@@ -517,7 +517,7 @@ static u32 vfp_single_fcvtd(int dd, int unused, s32 m, u32 fpscr)
|
||||
return vfp_double_normaliseround(dd, &vdd, fpscr, exceptions, "fcvtd");
|
||||
|
||||
pack_nan:
|
||||
vfp_put_double(dd, vfp_double_pack(&vdd));
|
||||
vfp_put_double(vfp_double_pack(&vdd), dd);
|
||||
return exceptions;
|
||||
}
|
||||
|
||||
@@ -613,7 +613,7 @@ static u32 vfp_single_ftoui(int sd, int unused, s32 m, u32 fpscr)
|
||||
|
||||
pr_debug("VFP: ftoui: d(s%d)=%08x exceptions=%08x\n", sd, d, exceptions);
|
||||
|
||||
vfp_put_float(sd, d);
|
||||
vfp_put_float(d, sd);
|
||||
|
||||
return exceptions;
|
||||
}
|
||||
@@ -692,7 +692,7 @@ static u32 vfp_single_ftosi(int sd, int unused, s32 m, u32 fpscr)
|
||||
|
||||
pr_debug("VFP: ftosi: d(s%d)=%08x exceptions=%08x\n", sd, d, exceptions);
|
||||
|
||||
vfp_put_float(sd, (s32)d);
|
||||
vfp_put_float((s32)d, sd);
|
||||
|
||||
return exceptions;
|
||||
}
|
||||
@@ -1127,7 +1127,7 @@ static u32 vfp_single_fdiv(int sd, int sn, s32 m, u32 fpscr)
|
||||
vsn_nan:
|
||||
exceptions = vfp_propagate_nan(&vsd, &vsn, &vsm, fpscr);
|
||||
pack:
|
||||
vfp_put_float(sd, vfp_single_pack(&vsd));
|
||||
vfp_put_float(vfp_single_pack(&vsd), sd);
|
||||
return exceptions;
|
||||
|
||||
vsm_nan:
|
||||
@@ -1147,7 +1147,7 @@ static u32 vfp_single_fdiv(int sd, int sn, s32 m, u32 fpscr)
|
||||
goto pack;
|
||||
|
||||
invalid:
|
||||
vfp_put_float(sd, vfp_single_pack(&vfp_single_default_qnan));
|
||||
vfp_put_float(vfp_single_pack(&vfp_single_default_qnan), sd);
|
||||
return FPSCR_IOC;
|
||||
}
|
||||
|
||||
|
||||
+4
-10
@@ -317,20 +317,14 @@ is386: movl $2,%ecx # set MP
|
||||
movl %eax,%gs
|
||||
lldt %ax
|
||||
cld # gcc2 wants the direction flag cleared at all times
|
||||
pushl %eax # fake return address
|
||||
#ifdef CONFIG_SMP
|
||||
movb ready, %cl
|
||||
movb $1, ready
|
||||
cmpb $0,%cl
|
||||
je 1f # the first CPU calls start_kernel
|
||||
# all other CPUs call initialize_secondary
|
||||
call initialize_secondary
|
||||
jmp L6
|
||||
1:
|
||||
cmpb $0,%cl # the first CPU calls start_kernel
|
||||
jne initialize_secondary # all other CPUs call initialize_secondary
|
||||
#endif /* CONFIG_SMP */
|
||||
call start_kernel
|
||||
L6:
|
||||
jmp L6 # main should never return here, but
|
||||
# just in case, we know what happens.
|
||||
jmp start_kernel
|
||||
|
||||
/*
|
||||
* We depend on ET to be correct. This checks for 287/387.
|
||||
|
||||
@@ -35,7 +35,7 @@ static int __init init_hpet_clocksource(void)
|
||||
void __iomem* hpet_base;
|
||||
u64 tmp;
|
||||
|
||||
if (!hpet_address)
|
||||
if (!is_hpet_enabled())
|
||||
return -ENODEV;
|
||||
|
||||
/* calculate the hpet address: */
|
||||
|
||||
@@ -82,10 +82,6 @@ fastcall unsigned int do_IRQ(struct pt_regs *regs)
|
||||
}
|
||||
#endif
|
||||
|
||||
if (!irq_desc[irq].handle_irq) {
|
||||
__do_IRQ(irq, regs);
|
||||
goto out_exit;
|
||||
}
|
||||
#ifdef CONFIG_4KSTACKS
|
||||
|
||||
curctx = (union irq_ctx *) current_thread_info();
|
||||
@@ -125,7 +121,6 @@ fastcall unsigned int do_IRQ(struct pt_regs *regs)
|
||||
#endif
|
||||
__do_IRQ(irq, regs);
|
||||
|
||||
out_exit:
|
||||
irq_exit();
|
||||
|
||||
return 1;
|
||||
|
||||
@@ -956,38 +956,6 @@ efi_memory_present_wrapper(unsigned long start, unsigned long end, void *arg)
|
||||
return 0;
|
||||
}
|
||||
|
||||
/*
|
||||
* This function checks if the entire range <start,end> is mapped with type.
|
||||
*
|
||||
* Note: this function only works correct if the e820 table is sorted and
|
||||
* not-overlapping, which is the case
|
||||
*/
|
||||
int __init
|
||||
e820_all_mapped(unsigned long s, unsigned long e, unsigned type)
|
||||
{
|
||||
u64 start = s;
|
||||
u64 end = e;
|
||||
int i;
|
||||
for (i = 0; i < e820.nr_map; i++) {
|
||||
struct e820entry *ei = &e820.map[i];
|
||||
if (type && ei->type != type)
|
||||
continue;
|
||||
/* is the region (part) in overlap with the current region ?*/
|
||||
if (ei->addr >= end || ei->addr + ei->size <= start)
|
||||
continue;
|
||||
/* if the region is at the beginning of <start,end> we move
|
||||
* start to the end of the region since it's ok until there
|
||||
*/
|
||||
if (ei->addr <= start)
|
||||
start = ei->addr + ei->size;
|
||||
/* if start is now at or beyond end, we're done, full
|
||||
* coverage */
|
||||
if (start >= end)
|
||||
return 1; /* we're done */
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
|
||||
/*
|
||||
* Find the highest page frame number we have available
|
||||
*/
|
||||
|
||||
+16
-11
@@ -92,7 +92,11 @@ asmlinkage void spurious_interrupt_bug(void);
|
||||
asmlinkage void machine_check(void);
|
||||
|
||||
static int kstack_depth_to_print = 24;
|
||||
#ifdef CONFIG_STACK_UNWIND
|
||||
static int call_trace = 1;
|
||||
#else
|
||||
#define call_trace (-1)
|
||||
#endif
|
||||
ATOMIC_NOTIFIER_HEAD(i386die_chain);
|
||||
|
||||
int register_die_notifier(struct notifier_block *nb)
|
||||
@@ -187,22 +191,21 @@ static void show_trace_log_lvl(struct task_struct *task, struct pt_regs *regs,
|
||||
if (unwind_init_blocked(&info, task) == 0)
|
||||
unw_ret = show_trace_unwind(&info, log_lvl);
|
||||
}
|
||||
if (unw_ret > 0 && !arch_unw_user_mode(&info)) {
|
||||
#ifdef CONFIG_STACK_UNWIND
|
||||
print_symbol("DWARF2 unwinder stuck at %s\n",
|
||||
UNW_PC(&info));
|
||||
if (call_trace == 1) {
|
||||
printk("Leftover inexact backtrace:\n");
|
||||
if (UNW_SP(&info))
|
||||
if (unw_ret > 0) {
|
||||
if (call_trace == 1 && !arch_unw_user_mode(&info)) {
|
||||
print_symbol("DWARF2 unwinder stuck at %s\n",
|
||||
UNW_PC(&info));
|
||||
if (UNW_SP(&info) >= PAGE_OFFSET) {
|
||||
printk("Leftover inexact backtrace:\n");
|
||||
stack = (void *)UNW_SP(&info);
|
||||
} else if (call_trace > 1)
|
||||
} else
|
||||
printk("Full inexact backtrace again:\n");
|
||||
} else if (call_trace >= 1)
|
||||
return;
|
||||
else
|
||||
printk("Full inexact backtrace again:\n");
|
||||
#else
|
||||
} else
|
||||
printk("Inexact backtrace:\n");
|
||||
#endif
|
||||
}
|
||||
}
|
||||
|
||||
if (task == current) {
|
||||
@@ -1241,6 +1244,7 @@ static int __init kstack_setup(char *s)
|
||||
}
|
||||
__setup("kstack=", kstack_setup);
|
||||
|
||||
#ifdef CONFIG_STACK_UNWIND
|
||||
static int __init call_trace_setup(char *s)
|
||||
{
|
||||
if (strcmp(s, "old") == 0)
|
||||
@@ -1254,3 +1258,4 @@ static int __init call_trace_setup(char *s)
|
||||
return 1;
|
||||
}
|
||||
__setup("call_trace=", call_trace_setup);
|
||||
#endif
|
||||
|
||||
@@ -237,6 +237,11 @@ char * __devinit pcibios_setup(char *str)
|
||||
pci_probe &= ~PCI_PROBE_MMCONF;
|
||||
return NULL;
|
||||
}
|
||||
/* override DMI blacklist */
|
||||
else if (!strcmp(str, "mmconf")) {
|
||||
pci_probe |= PCI_PROBE_MMCONF_FORCE;
|
||||
return NULL;
|
||||
}
|
||||
#endif
|
||||
else if (!strcmp(str, "noacpi")) {
|
||||
acpi_noirq_set();
|
||||
|
||||
+24
-10
@@ -12,6 +12,7 @@
|
||||
#include <linux/pci.h>
|
||||
#include <linux/init.h>
|
||||
#include <linux/acpi.h>
|
||||
#include <linux/dmi.h>
|
||||
#include <asm/e820.h>
|
||||
#include "pci.h"
|
||||
|
||||
@@ -187,9 +188,31 @@ static __init void unreachable_devices(void)
|
||||
}
|
||||
}
|
||||
|
||||
static int disable_mcfg(struct dmi_system_id *d)
|
||||
{
|
||||
printk("PCI: %s detected. Disabling MCFG.\n", d->ident);
|
||||
pci_probe &= ~PCI_PROBE_MMCONF;
|
||||
return 0;
|
||||
}
|
||||
|
||||
static struct dmi_system_id __initdata dmi_bad_mcfg[] = {
|
||||
/* Has broken MCFG table that makes the system hang when used */
|
||||
{
|
||||
.callback = disable_mcfg,
|
||||
.ident = "Intel D3C5105 SDV",
|
||||
.matches = {
|
||||
DMI_MATCH(DMI_BIOS_VENDOR, "Intel"),
|
||||
DMI_MATCH(DMI_BOARD_NAME, "D26928"),
|
||||
},
|
||||
},
|
||||
{}
|
||||
};
|
||||
|
||||
void __init pci_mmcfg_init(void)
|
||||
{
|
||||
if ((pci_probe & PCI_PROBE_MMCONF) == 0)
|
||||
dmi_check_system(dmi_bad_mcfg);
|
||||
|
||||
if ((pci_probe & (PCI_PROBE_MMCONF_FORCE|PCI_PROBE_MMCONF)) == 0)
|
||||
return;
|
||||
|
||||
acpi_table_parse(ACPI_MCFG, acpi_parse_mcfg);
|
||||
@@ -198,15 +221,6 @@ void __init pci_mmcfg_init(void)
|
||||
(pci_mmcfg_config[0].base_address == 0))
|
||||
return;
|
||||
|
||||
if (!e820_all_mapped(pci_mmcfg_config[0].base_address,
|
||||
pci_mmcfg_config[0].base_address + MMCONFIG_APER_MIN,
|
||||
E820_RESERVED)) {
|
||||
printk(KERN_ERR "PCI: BIOS Bug: MCFG area at %x is not E820-reserved\n",
|
||||
pci_mmcfg_config[0].base_address);
|
||||
printk(KERN_ERR "PCI: Not using MMCONFIG.\n");
|
||||
return;
|
||||
}
|
||||
|
||||
printk(KERN_INFO "PCI: Using MMCONFIG\n");
|
||||
raw_pci_ops = &pci_mmcfg;
|
||||
pci_probe = (pci_probe & ~PCI_PROBE_MASK) | PCI_PROBE_MMCONF;
|
||||
|
||||
+2
-1
@@ -16,7 +16,8 @@
|
||||
#define PCI_PROBE_CONF1 0x0002
|
||||
#define PCI_PROBE_CONF2 0x0004
|
||||
#define PCI_PROBE_MMCONF 0x0008
|
||||
#define PCI_PROBE_MASK 0x000f
|
||||
#define PCI_PROBE_MMCONF_FORCE 0x0010
|
||||
#define PCI_PROBE_MASK 0x00ff
|
||||
|
||||
#define PCI_NO_SORT 0x0100
|
||||
#define PCI_BIOS_SORT 0x0200
|
||||
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user