Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit e9f29c9a authored by Linus Torvalds's avatar Linus Torvalds
Browse files
* 'linux-next' of git://git.kernel.org/pub/scm/linux/kernel/git/jbarnes/pci-2.6: (27 commits)
  x86: allocate space within a region top-down
  x86: update iomem_resource end based on CPU physical address capabilities
  x86/PCI: allocate space from the end of a region, not the beginning
  PCI: allocate bus resources from the top down
  resources: support allocating space within a region from the top down
  resources: handle overflow when aligning start of available area
  resources: ensure callback doesn't allocate outside available space
  resources: factor out resource_clip() to simplify find_resource()
  resources: add a default alignf to simplify find_resource()
  x86/PCI: MMCONFIG: fix region end calculation
  PCI: Add support for polling PME state on suspended legacy PCI devices
  PCI: Export some PCI PM functionality
  PCI: fix message typo
  PCI: log vendor/device ID always
  PCI: update Intel chipset names and defines
  PCI: use new ccflags variable in Makefile
  PCI: add PCI_MSIX_TABLE/PBA defines
  PCI: add PCI vendor id for STmicroelectronics
  x86/PCI: irq and pci_ids patch for Intel Patsburg DeviceIDs
  PCI: OLPC: Only enable PCI configuration type override on XO-1
  ...
parents 800416f7 1af3c2e4
Loading
Loading
Loading
Loading
+5 −0
Original line number Diff line number Diff line
@@ -2175,6 +2175,11 @@ and is between 256 and 4096 characters. It is defined in the file
	reset_devices	[KNL] Force drivers to reset the underlying device
			during initialization.

	resource_alloc_from_bottom
			Allocate new resources from the beginning of available
			space, not the end.  If you need to use this, please
			report a bug.

	resume=		[SWSUSP]
			Specify the partition device for software suspend

+2 −0
Original line number Diff line number Diff line
@@ -769,6 +769,8 @@ void __init setup_arch(char **cmdline_p)

	x86_init.oem.arch_setup();

	resource_alloc_from_bottom = 0;
	iomem_resource.end = (1ULL << boot_cpu_data.x86_phys_bits) - 1;
	setup_memory_map();
	parse_setup_data();
	/* update the e820_saved too */
+11 −6
Original line number Diff line number Diff line
@@ -65,16 +65,21 @@ pcibios_align_resource(void *data, const struct resource *res,
			resource_size_t size, resource_size_t align)
{
	struct pci_dev *dev = data;
	resource_size_t start = res->start;
	resource_size_t start = round_down(res->end - size + 1, align);

	if (res->flags & IORESOURCE_IO) {
		if (skip_isa_ioresource_align(dev))
			return start;
		if (start & 0x300)
			start = (start + 0x3ff) & ~0x3ff;

		/*
		 * If we're avoiding ISA aliases, the largest contiguous I/O
		 * port space is 256 bytes.  Clearing bits 9 and 10 preserves
		 * all 256-byte and smaller alignments, so the result will
		 * still be correctly aligned.
		 */
		if (!skip_isa_ioresource_align(dev))
			start &= ~0x300;
	} else if (res->flags & IORESOURCE_MEM) {
		if (start < BIOS_END)
			start = BIOS_END;
			start = res->end;	/* fail; no space */
	}
	return start;
}
+6 −5
Original line number Diff line number Diff line
@@ -584,27 +584,28 @@ static __init int intel_router_probe(struct irq_router *r, struct pci_dev *route
	case PCI_DEVICE_ID_INTEL_ICH9_3:
	case PCI_DEVICE_ID_INTEL_ICH9_4:
	case PCI_DEVICE_ID_INTEL_ICH9_5:
	case PCI_DEVICE_ID_INTEL_TOLAPAI_0:
	case PCI_DEVICE_ID_INTEL_EP80579_0:
	case PCI_DEVICE_ID_INTEL_ICH10_0:
	case PCI_DEVICE_ID_INTEL_ICH10_1:
	case PCI_DEVICE_ID_INTEL_ICH10_2:
	case PCI_DEVICE_ID_INTEL_ICH10_3:
	case PCI_DEVICE_ID_INTEL_PATSBURG_LPC:
		r->name = "PIIX/ICH";
		r->get = pirq_piix_get;
		r->set = pirq_piix_set;
		return 1;
	}

	if ((device >= PCI_DEVICE_ID_INTEL_PCH_LPC_MIN) && 
		(device <= PCI_DEVICE_ID_INTEL_PCH_LPC_MAX)) {
	if ((device >= PCI_DEVICE_ID_INTEL_5_3400_SERIES_LPC_MIN) && 
		(device <= PCI_DEVICE_ID_INTEL_5_3400_SERIES_LPC_MAX)) {
		r->name = "PIIX/ICH";
		r->get = pirq_piix_get;
		r->set = pirq_piix_set;
		return 1;
	}

	if ((device >= PCI_DEVICE_ID_INTEL_CPT_LPC_MIN) && 
		(device <= PCI_DEVICE_ID_INTEL_CPT_LPC_MAX)) {
	if ((device >= PCI_DEVICE_ID_INTEL_COUGARPOINT_LPC_MIN) && 
		(device <= PCI_DEVICE_ID_INTEL_COUGARPOINT_LPC_MAX)) {
		r->name = "PIIX/ICH";
		r->get = pirq_piix_get;
		r->set = pirq_piix_set;
+1 −3
Original line number Diff line number Diff line
@@ -65,7 +65,6 @@ static __init struct pci_mmcfg_region *pci_mmconfig_add(int segment, int start,
							int end, u64 addr)
{
	struct pci_mmcfg_region *new;
	int num_buses;
	struct resource *res;

	if (addr == 0)
@@ -82,10 +81,9 @@ static __init struct pci_mmcfg_region *pci_mmconfig_add(int segment, int start,

	list_add_sorted(new);

	num_buses = end - start + 1;
	res = &new->res;
	res->start = addr + PCI_MMCFG_BUS_OFFSET(start);
	res->end = addr + PCI_MMCFG_BUS_OFFSET(num_buses) - 1;
	res->end = addr + PCI_MMCFG_BUS_OFFSET(end + 1) - 1;
	res->flags = IORESOURCE_MEM | IORESOURCE_BUSY;
	snprintf(new->name, PCI_MMCFG_RESOURCE_NAME_LEN,
		 "PCI MMCONFIG %04x [bus %02x-%02x]", segment, start, end);
Loading