Skip to content

Commit

Permalink
Merge branch 'merge' of git://git.kernel.org/pub/scm/linux/kernel/git…
Browse files Browse the repository at this point in the history
…/benh/powerpc

* 'merge' of git://git.kernel.org/pub/scm/linux/kernel/git/benh/powerpc:
  powerpc: TIF_ABI_PENDING bit removal
  powerpc/pseries: Fix xics build without CONFIG_SMP
  powerpc/4xx: Add pcix type 1 transactions
  powerpc/pci: Add missing call to header fixup
  powerpc/pci: Add missing hookup to pci_slot
  powerpc/pci: Add calls to set_pcie_port_type() and set_pcie_hotplug_bridge()
  powerpc/40x: Update the PowerPC 40x board defconfigs
  powerpc/44x: Update PowerPC 44x board defconfigs
  • Loading branch information
Linus Torvalds committed Feb 1, 2010
2 parents abe94c7 + 94f28da commit 32337f8
Show file tree
Hide file tree
Showing 28 changed files with 3,412 additions and 1,299 deletions.
241 changes: 177 additions & 64 deletions arch/powerpc/configs/40x/acadia_defconfig

Large diffs are not rendered by default.

307 changes: 237 additions & 70 deletions arch/powerpc/configs/40x/ep405_defconfig

Large diffs are not rendered by default.

256 changes: 190 additions & 66 deletions arch/powerpc/configs/40x/hcu4_defconfig

Large diffs are not rendered by default.

140 changes: 101 additions & 39 deletions arch/powerpc/configs/40x/kilauea_defconfig

Large diffs are not rendered by default.

190 changes: 133 additions & 57 deletions arch/powerpc/configs/40x/makalu_defconfig

Large diffs are not rendered by default.

257 changes: 191 additions & 66 deletions arch/powerpc/configs/40x/walnut_defconfig

Large diffs are not rendered by default.

135 changes: 96 additions & 39 deletions arch/powerpc/configs/44x/arches_defconfig

Large diffs are not rendered by default.

255 changes: 192 additions & 63 deletions arch/powerpc/configs/44x/bamboo_defconfig

Large diffs are not rendered by default.

141 changes: 102 additions & 39 deletions arch/powerpc/configs/44x/canyonlands_defconfig

Large diffs are not rendered by default.

258 changes: 192 additions & 66 deletions arch/powerpc/configs/44x/ebony_defconfig

Large diffs are not rendered by default.

128 changes: 87 additions & 41 deletions arch/powerpc/configs/44x/eiger_defconfig

Large diffs are not rendered by default.

253 changes: 189 additions & 64 deletions arch/powerpc/configs/44x/katmai_defconfig

Large diffs are not rendered by default.

254 changes: 189 additions & 65 deletions arch/powerpc/configs/44x/rainier_defconfig

Large diffs are not rendered by default.

274 changes: 193 additions & 81 deletions arch/powerpc/configs/44x/redwood_defconfig

Large diffs are not rendered by default.

284 changes: 196 additions & 88 deletions arch/powerpc/configs/44x/sam440ep_defconfig

Large diffs are not rendered by default.

202 changes: 146 additions & 56 deletions arch/powerpc/configs/44x/sequoia_defconfig

Large diffs are not rendered by default.

258 changes: 193 additions & 65 deletions arch/powerpc/configs/44x/taishan_defconfig

Large diffs are not rendered by default.

228 changes: 158 additions & 70 deletions arch/powerpc/configs/44x/warp_defconfig

Large diffs are not rendered by default.

292 changes: 209 additions & 83 deletions arch/powerpc/configs/ppc40x_defconfig

Large diffs are not rendered by default.

309 changes: 220 additions & 89 deletions arch/powerpc/configs/ppc44x_defconfig

Large diffs are not rendered by default.

8 changes: 2 additions & 6 deletions arch/powerpc/include/asm/elf.h
Original file line number Diff line number Diff line change
Expand Up @@ -235,14 +235,10 @@ typedef elf_vrregset_t elf_fpxregset_t;
#ifdef __powerpc64__
# define SET_PERSONALITY(ex) \
do { \
unsigned long new_flags = 0; \
if ((ex).e_ident[EI_CLASS] == ELFCLASS32) \
new_flags = _TIF_32BIT; \
if ((current_thread_info()->flags & _TIF_32BIT) \
!= new_flags) \
set_thread_flag(TIF_ABI_PENDING); \
set_thread_flag(TIF_32BIT); \
else \
clear_thread_flag(TIF_ABI_PENDING); \
clear_thread_flag(TIF_32BIT); \
if (personality(current->personality) != PER_LINUX32) \
set_personality(PER_LINUX | \
(current->personality & (~PER_MASK))); \
Expand Down
2 changes: 0 additions & 2 deletions arch/powerpc/include/asm/thread_info.h
Original file line number Diff line number Diff line change
Expand Up @@ -111,7 +111,6 @@ static inline struct thread_info *current_thread_info(void)
#define TIF_NOTIFY_RESUME 13 /* callback before returning to user */
#define TIF_FREEZE 14 /* Freezing for suspend */
#define TIF_RUNLATCH 15 /* Is the runlatch enabled? */
#define TIF_ABI_PENDING 16 /* 32/64 bit switch needed */

/* as above, but as bit values */
#define _TIF_SYSCALL_TRACE (1<<TIF_SYSCALL_TRACE)
Expand All @@ -129,7 +128,6 @@ static inline struct thread_info *current_thread_info(void)
#define _TIF_NOTIFY_RESUME (1<<TIF_NOTIFY_RESUME)
#define _TIF_FREEZE (1<<TIF_FREEZE)
#define _TIF_RUNLATCH (1<<TIF_RUNLATCH)
#define _TIF_ABI_PENDING (1<<TIF_ABI_PENDING)
#define _TIF_SYSCALL_T_OR_A (_TIF_SYSCALL_TRACE|_TIF_SYSCALL_AUDIT|_TIF_SECCOMP)

#define _TIF_USER_WORK_MASK (_TIF_SIGPENDING | _TIF_NEED_RESCHED | \
Expand Down
10 changes: 10 additions & 0 deletions arch/powerpc/kernel/pci_of_scan.c
Original file line number Diff line number Diff line change
Expand Up @@ -123,6 +123,7 @@ struct pci_dev *of_create_pci_dev(struct device_node *node,
{
struct pci_dev *dev;
const char *type;
struct pci_slot *slot;

dev = alloc_pci_dev();
if (!dev)
Expand All @@ -140,6 +141,11 @@ struct pci_dev *of_create_pci_dev(struct device_node *node,
dev->devfn = devfn;
dev->multifunction = 0; /* maybe a lie? */
dev->needs_freset = 0; /* pcie fundamental reset required */
set_pcie_port_type(dev);

list_for_each_entry(slot, &dev->bus->slots, list)
if (PCI_SLOT(dev->devfn) == slot->number)
dev->slot = slot;

dev->vendor = get_int_prop(node, "vendor-id", 0xffff);
dev->device = get_int_prop(node, "device-id", 0xffff);
Expand All @@ -160,10 +166,14 @@ struct pci_dev *of_create_pci_dev(struct device_node *node,
dev->error_state = pci_channel_io_normal;
dev->dma_mask = 0xffffffff;

/* Early fixups, before probing the BARs */
pci_fixup_device(pci_fixup_early, dev);

if (!strcmp(type, "pci") || !strcmp(type, "pciex")) {
/* a PCI-PCI bridge */
dev->hdr_type = PCI_HEADER_TYPE_BRIDGE;
dev->rom_base_reg = PCI_ROM_ADDRESS1;
set_pcie_hotplug_bridge(dev);
} else if (!strcmp(type, "cardbus")) {
dev->hdr_type = PCI_HEADER_TYPE_CARDBUS;
} else {
Expand Down
12 changes: 0 additions & 12 deletions arch/powerpc/kernel/process.c
Original file line number Diff line number Diff line change
Expand Up @@ -554,18 +554,6 @@ void exit_thread(void)

void flush_thread(void)
{
#ifdef CONFIG_PPC64
struct thread_info *t = current_thread_info();

if (test_ti_thread_flag(t, TIF_ABI_PENDING)) {
clear_ti_thread_flag(t, TIF_ABI_PENDING);
if (test_ti_thread_flag(t, TIF_32BIT))
clear_ti_thread_flag(t, TIF_32BIT);
else
set_ti_thread_flag(t, TIF_32BIT);
}
#endif

discard_lazy_cpu_state();

if (current->thread.dabr) {
Expand Down
6 changes: 1 addition & 5 deletions arch/powerpc/platforms/pseries/xics.c
Original file line number Diff line number Diff line change
Expand Up @@ -191,11 +191,7 @@ static int get_irq_server(unsigned int virq, cpumask_t cpumask,
return default_server;
}
#else
static int get_irq_server(unsigned int virq, cpumask_t cpumask,
unsigned int strict_check)
{
return default_server;
}
#define get_irq_server(virq, cpumask, strict_check) (default_server)
#endif

static void xics_unmask_irq(unsigned int virq)
Expand Down
3 changes: 2 additions & 1 deletion arch/powerpc/sysdev/ppc4xx_pci.c
Original file line number Diff line number Diff line change
Expand Up @@ -569,7 +569,8 @@ static void __init ppc4xx_probe_pcix_bridge(struct device_node *np)
hose->last_busno = bus_range ? bus_range[1] : 0xff;

/* Setup config space */
setup_indirect_pci(hose, rsrc_cfg.start, rsrc_cfg.start + 0x4, 0);
setup_indirect_pci(hose, rsrc_cfg.start, rsrc_cfg.start + 0x4,
PPC_INDIRECT_TYPE_SET_CFG_TYPE);

/* Disable all windows */
writel(0, reg + PCIX0_POM0SA);
Expand Down
4 changes: 2 additions & 2 deletions drivers/pci/probe.c
Original file line number Diff line number Diff line change
Expand Up @@ -681,7 +681,7 @@ static void pci_read_irq(struct pci_dev *dev)
dev->irq = irq;
}

static void set_pcie_port_type(struct pci_dev *pdev)
void set_pcie_port_type(struct pci_dev *pdev)
{
int pos;
u16 reg16;
Expand All @@ -695,7 +695,7 @@ static void set_pcie_port_type(struct pci_dev *pdev)
pdev->pcie_type = (reg16 & PCI_EXP_FLAGS_TYPE) >> 4;
}

static void set_pcie_hotplug_bridge(struct pci_dev *pdev)
void set_pcie_hotplug_bridge(struct pci_dev *pdev)
{
int pos;
u16 reg16;
Expand Down
4 changes: 4 additions & 0 deletions include/linux/pci.h
Original file line number Diff line number Diff line change
Expand Up @@ -756,6 +756,10 @@ pci_power_t pci_target_state(struct pci_dev *dev);
int pci_prepare_to_sleep(struct pci_dev *dev);
int pci_back_from_sleep(struct pci_dev *dev);

/* For use by arch with custom probe code */
void set_pcie_port_type(struct pci_dev *pdev);
void set_pcie_hotplug_bridge(struct pci_dev *pdev);

/* Functions for PCI Hotplug drivers to use */
int pci_bus_find_capability(struct pci_bus *bus, unsigned int devfn, int cap);
#ifdef CONFIG_HOTPLUG
Expand Down

0 comments on commit 32337f8

Please sign in to comment.