Skip to content

Commit

Permalink
---
Browse files Browse the repository at this point in the history
yaml
---
r: 65298
b: refs/heads/master
c: 9f34073
h: refs/heads/master
v: v3
  • Loading branch information
Linus Torvalds committed Oct 5, 2007
1 parent 0ec8f32 commit 9717f12
Show file tree
Hide file tree
Showing 10 changed files with 66 additions and 22 deletions.
2 changes: 1 addition & 1 deletion [refs]
Original file line number Diff line number Diff line change
@@ -1,2 +1,2 @@
---
refs/heads/master: 4afcddae4cc7d8bb36c1d47967d6ede29ea45e1a
refs/heads/master: 9f34073b4e54ad58541e0e2b4a87f4f6c1460e21
4 changes: 2 additions & 2 deletions trunk/arch/sparc64/kernel/pci_common.c
Original file line number Diff line number Diff line change
Expand Up @@ -264,7 +264,7 @@ static int sun4v_read_pci_cfg(struct pci_bus *bus_dev, unsigned int devfn,
unsigned int func = PCI_FUNC(devfn);
unsigned long ret;

if (bus_dev == pbm->pci_bus && devfn == 0x00)
if (!bus && devfn == 0x00)
return pci_host_bridge_read_pci_cfg(bus_dev, devfn, where,
size, value);
if (config_out_of_range(pbm, bus, devfn, where)) {
Expand Down Expand Up @@ -300,7 +300,7 @@ static int sun4v_write_pci_cfg(struct pci_bus *bus_dev, unsigned int devfn,
unsigned int func = PCI_FUNC(devfn);
unsigned long ret;

if (bus_dev == pbm->pci_bus && devfn == 0x00)
if (!bus && devfn == 0x00)
return pci_host_bridge_write_pci_cfg(bus_dev, devfn, where,
size, value);
if (config_out_of_range(pbm, bus, devfn, where)) {
Expand Down
3 changes: 2 additions & 1 deletion trunk/arch/sparc64/kernel/prom.c
Original file line number Diff line number Diff line change
Expand Up @@ -1046,7 +1046,8 @@ static void __init irq_trans_init(struct device_node *dp)
if (!strcmp(dp->name, "fhc") &&
!strcmp(dp->parent->name, "central"))
return central_irq_trans_init(dp);
if (!strcmp(dp->name, "virtual-devices"))
if (!strcmp(dp->name, "virtual-devices") ||
!strcmp(dp->name, "niu"))
return sun4v_vdev_irq_trans_init(dp);
}

Expand Down
2 changes: 2 additions & 0 deletions trunk/arch/sparc64/kernel/smp.c
Original file line number Diff line number Diff line change
Expand Up @@ -353,6 +353,8 @@ static int __devinit smp_boot_one_cpu(unsigned int cpu)
int timeout, ret;

p = fork_idle(cpu);
if (IS_ERR(p))
return PTR_ERR(p);
callin_flag = 0;
cpu_new_thread = task_thread_info(p);

Expand Down
29 changes: 27 additions & 2 deletions trunk/arch/sparc64/kernel/vio.c
Original file line number Diff line number Diff line change
Expand Up @@ -292,7 +292,7 @@ static struct vio_dev *vio_create_one(struct mdesc_handle *hp, u64 mp,
}
vdev->dp = dp;

printk(KERN_ERR "VIO: Adding device %s\n", vdev->dev.bus_id);
printk(KERN_INFO "VIO: Adding device %s\n", vdev->dev.bus_id);

err = device_register(&vdev->dev);
if (err) {
Expand Down Expand Up @@ -342,8 +342,33 @@ static struct mdesc_notifier_client vio_device_notifier = {
.node_name = "virtual-device-port",
};

/* We are only interested in domain service ports under the
* "domain-services" node. On control nodes there is another port
* under "openboot" that we should not mess with as aparently that is
* reserved exclusively for OBP use.
*/
static void vio_add_ds(struct mdesc_handle *hp, u64 node)
{
int found;
u64 a;

found = 0;
mdesc_for_each_arc(a, hp, node, MDESC_ARC_TYPE_BACK) {
u64 target = mdesc_arc_target(hp, a);
const char *name = mdesc_node_name(hp, target);

if (!strcmp(name, "domain-services")) {
found = 1;
break;
}
}

if (found)
(void) vio_create_one(hp, node, &root_vdev->dev);
}

static struct mdesc_notifier_client vio_ds_notifier = {
.add = vio_add,
.add = vio_add_ds,
.remove = vio_remove,
.node_name = "domain-services-port",
};
Expand Down
8 changes: 4 additions & 4 deletions trunk/arch/sparc64/lib/NGmemcpy.S
Original file line number Diff line number Diff line change
Expand Up @@ -321,11 +321,11 @@ FUNC_NAME: /* %i0=dst, %i1=src, %i2=len */
andn %i2, 0xf, %i4
and %i2, 0xf, %i2
1: subcc %i4, 0x10, %i4
EX_LD(LOAD(ldx, %i1, %i5))
EX_LD(LOAD(ldx, %i1, %o4))
add %i1, 0x08, %i1
EX_LD(LOAD(ldx, %i1, %g1))
sub %i1, 0x08, %i1
EX_ST(STORE(stx, %i5, %i1 + %i3))
EX_ST(STORE(stx, %o4, %i1 + %i3))
add %i1, 0x8, %i1
EX_ST(STORE(stx, %g1, %i1 + %i3))
bgu,pt %XCC, 1b
Expand All @@ -334,8 +334,8 @@ FUNC_NAME: /* %i0=dst, %i1=src, %i2=len */
be,pt %XCC, 1f
nop
sub %i2, 0x8, %i2
EX_LD(LOAD(ldx, %i1, %i5))
EX_ST(STORE(stx, %i5, %i1 + %i3))
EX_LD(LOAD(ldx, %i1, %o4))
EX_ST(STORE(stx, %o4, %i1 + %i3))
add %i1, 0x8, %i1
1: andcc %i2, 0x4, %g0
be,pt %XCC, 1f
Expand Down
16 changes: 13 additions & 3 deletions trunk/drivers/net/r8169.c
Original file line number Diff line number Diff line change
Expand Up @@ -1918,7 +1918,11 @@ static void rtl_hw_start_8169(struct net_device *dev)

rtl_set_rx_max_size(ioaddr);

rtl_set_rx_tx_config_registers(tp);
if ((tp->mac_version == RTL_GIGA_MAC_VER_01) ||
(tp->mac_version == RTL_GIGA_MAC_VER_02) ||
(tp->mac_version == RTL_GIGA_MAC_VER_03) ||
(tp->mac_version == RTL_GIGA_MAC_VER_04))
rtl_set_rx_tx_config_registers(tp);

tp->cp_cmd |= rtl_rw_cpluscmd(ioaddr) | PCIMulRW;

Expand All @@ -1941,6 +1945,14 @@ static void rtl_hw_start_8169(struct net_device *dev)

rtl_set_rx_tx_desc_registers(tp, ioaddr);

if ((tp->mac_version != RTL_GIGA_MAC_VER_01) &&
(tp->mac_version != RTL_GIGA_MAC_VER_02) &&
(tp->mac_version != RTL_GIGA_MAC_VER_03) &&
(tp->mac_version != RTL_GIGA_MAC_VER_04)) {
RTL_W8(ChipCmd, CmdTxEnb | CmdRxEnb);
rtl_set_rx_tx_config_registers(tp);
}

RTL_W8(Cfg9346, Cfg9346_Lock);

/* Initially a 10 us delay. Turned it into a PCI commit. - FR */
Expand All @@ -1955,8 +1967,6 @@ static void rtl_hw_start_8169(struct net_device *dev)

/* Enable all known interrupts by setting the interrupt mask. */
RTL_W16(IntrMask, tp->intr_event);

RTL_W8(ChipCmd, CmdTxEnb | CmdRxEnb);
}

static void rtl_hw_start_8168(struct net_device *dev)
Expand Down
8 changes: 8 additions & 0 deletions trunk/drivers/scsi/megaraid.c
Original file line number Diff line number Diff line change
Expand Up @@ -1753,6 +1753,14 @@ mega_build_sglist(adapter_t *adapter, scb_t *scb, u32 *buf, u32 *len)

*len = 0;

if (scsi_sg_count(cmd) == 1 && !adapter->has_64bit_addr) {
sg = scsi_sglist(cmd);
scb->dma_h_bulkdata = sg_dma_address(sg);
*buf = (u32)scb->dma_h_bulkdata;
*len = sg_dma_len(sg);
return 0;
}

scsi_for_each_sg(cmd, sg, sgcnt, idx) {
if (adapter->has_64bit_addr) {
scb->sgl64[idx].address = sg_dma_address(sg);
Expand Down
2 changes: 1 addition & 1 deletion trunk/include/asm-x86_64/processor.h
Original file line number Diff line number Diff line change
Expand Up @@ -371,7 +371,7 @@ static inline void sync_core(void)
#define ARCH_HAS_PREFETCH
static inline void prefetch(void *x)
{
asm volatile("prefetcht0 %0" :: "m" (*(unsigned long *)x));
asm volatile("prefetcht0 (%0)" :: "r" (x));
}

#define ARCH_HAS_PREFETCHW 1
Expand Down
14 changes: 6 additions & 8 deletions trunk/mm/memory.c
Original file line number Diff line number Diff line change
Expand Up @@ -2307,13 +2307,14 @@ static int do_anonymous_page(struct mm_struct *mm, struct vm_area_struct *vma,
* do not need to flush old virtual caches or the TLB.
*
* We enter with non-exclusive mmap_sem (to exclude vma changes,
* but allow concurrent faults), and pte mapped but not yet locked.
* but allow concurrent faults), and pte neither mapped nor locked.
* We return with mmap_sem still held, but pte unmapped and unlocked.
*/
static int __do_fault(struct mm_struct *mm, struct vm_area_struct *vma,
unsigned long address, pte_t *page_table, pmd_t *pmd,
unsigned long address, pmd_t *pmd,
pgoff_t pgoff, unsigned int flags, pte_t orig_pte)
{
pte_t *page_table;
spinlock_t *ptl;
struct page *page;
pte_t entry;
Expand All @@ -2327,7 +2328,6 @@ static int __do_fault(struct mm_struct *mm, struct vm_area_struct *vma,
vmf.flags = flags;
vmf.page = NULL;

pte_unmap(page_table);
BUG_ON(vma->vm_flags & VM_PFNMAP);

if (likely(vma->vm_ops->fault)) {
Expand Down Expand Up @@ -2468,8 +2468,8 @@ static int do_linear_fault(struct mm_struct *mm, struct vm_area_struct *vma,
- vma->vm_start) >> PAGE_CACHE_SHIFT) + vma->vm_pgoff;
unsigned int flags = (write_access ? FAULT_FLAG_WRITE : 0);

return __do_fault(mm, vma, address, page_table, pmd, pgoff,
flags, orig_pte);
pte_unmap(page_table);
return __do_fault(mm, vma, address, pmd, pgoff, flags, orig_pte);
}


Expand Down Expand Up @@ -2552,9 +2552,7 @@ static int do_nonlinear_fault(struct mm_struct *mm, struct vm_area_struct *vma,
}

pgoff = pte_to_pgoff(orig_pte);

return __do_fault(mm, vma, address, page_table, pmd, pgoff,
flags, orig_pte);
return __do_fault(mm, vma, address, pmd, pgoff, flags, orig_pte);
}

/*
Expand Down

0 comments on commit 9717f12

Please sign in to comment.