linux-pci.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* efi, x86, pci: Improve graphics support on some Apple hardware
@ 2012-07-26 22:02 Matthew Garrett
  2012-07-26 22:02 ` [PATCH 1/4] EFI: Stash ROMs if they're not in the PCI BAR Matthew Garrett
                   ` (4 more replies)
  0 siblings, 5 replies; 8+ messages in thread
From: Matthew Garrett @ 2012-07-26 22:02 UTC (permalink / raw)
  To: matt.fleming; +Cc: linux-efi, linux-kernel, x86, linux-pci, bhelgaas

Some Apple machines only provide their video ROM via an EFI-specific mechanism
and don't permit it to be retrieved from the BAR. Add infrastructure to stash
it and provide access to drivers.


^ permalink raw reply	[flat|nested] 8+ messages in thread

* [PATCH 1/4] EFI: Stash ROMs if they're not in the PCI BAR
  2012-07-26 22:02 efi, x86, pci: Improve graphics support on some Apple hardware Matthew Garrett
@ 2012-07-26 22:02 ` Matthew Garrett
  2012-07-27 15:10   ` Seth Forshee
  2012-07-26 22:02 ` [PATCH 2/4] PCI: Add pcibios_add_device Matthew Garrett
                   ` (3 subsequent siblings)
  4 siblings, 1 reply; 8+ messages in thread
From: Matthew Garrett @ 2012-07-26 22:02 UTC (permalink / raw)
  To: matt.fleming
  Cc: linux-efi, linux-kernel, x86, linux-pci, bhelgaas,
	Matthew Garrett

EFI provides support for providing PCI ROMs via means other than the ROM
BAR. This support vanishes after we've exited boot services, so add support
for stashing copies of the ROMs in setup_data if they're not otherwise
available.
---
 arch/x86/boot/compressed/eboot.c |  118 ++++++++++++++++++++++++++++++++++++++
 arch/x86/include/asm/bootparam.h |    1 +
 arch/x86/include/asm/pci.h       |   12 ++++
 include/linux/efi.h              |   71 +++++++++++++++++++++++
 4 files changed, 202 insertions(+)

diff --git a/arch/x86/boot/compressed/eboot.c b/arch/x86/boot/compressed/eboot.c
index d5e4044..b71c7c8 100644
--- a/arch/x86/boot/compressed/eboot.c
+++ b/arch/x86/boot/compressed/eboot.c
@@ -8,6 +8,7 @@
  * ----------------------------------------------------------------------- */
 
 #include <linux/efi.h>
+#include <linux/pci.h>
 #include <asm/efi.h>
 #include <asm/setup.h>
 #include <asm/desc.h>
@@ -243,6 +244,121 @@ static void find_bits(unsigned long mask, u8 *pos, u8 *size)
 	*size = len;
 }
 
+static efi_status_t setup_efi_pci(struct boot_params *params)
+{
+	efi_pci_io_protocol *pci;
+	efi_status_t status;
+	void **pci_handle;
+	efi_guid_t pci_proto = EFI_PCI_IO_PROTOCOL_GUID;
+	unsigned long nr_pci, size = 0;
+	int i;
+	struct setup_data *data;
+
+	data = (struct setup_data *)params->hdr.setup_data;
+
+	while (data && data->next)
+		data = (struct setup_data *)data->next;
+
+	status = efi_call_phys5(sys_table->boottime->locate_handle,
+				EFI_LOCATE_BY_PROTOCOL, &pci_proto,
+				NULL, &size, pci_handle);
+
+	if (status == EFI_BUFFER_TOO_SMALL) {
+		status = efi_call_phys3(sys_table->boottime->allocate_pool,
+					EFI_LOADER_DATA, size, &pci_handle);
+
+		if (status != EFI_SUCCESS)
+			return status;
+
+		status = efi_call_phys5(sys_table->boottime->locate_handle,
+					EFI_LOCATE_BY_PROTOCOL, &pci_proto,
+					NULL, &size, pci_handle);
+	}
+
+	if (status != EFI_SUCCESS)
+		goto free_handle;
+
+	nr_pci = size / sizeof(void *);
+	for (i = 0; i < nr_pci; i++) {
+		void *h = pci_handle[i];
+		uint64_t attributes;
+		struct pci_setup_rom *rom;
+
+		status = efi_call_phys3(sys_table->boottime->handle_protocol,
+					h, &pci_proto, &pci);
+
+		if (status != EFI_SUCCESS)
+			continue;
+
+		if (!pci)
+			continue;
+
+		status = efi_call_phys4(pci->attributes, pci,
+					EfiPciIoAttributeOperationGet, 0,
+					&attributes);
+
+		if (status != EFI_SUCCESS)
+			continue;
+
+		if (!attributes & EFI_PCI_IO_ATTRIBUTE_EMBEDDED_ROM)
+			continue;
+
+		if (!pci->romimage || !pci->romsize)
+			continue;
+
+		size = pci->romsize + sizeof(*rom);
+
+		status = efi_call_phys3(sys_table->boottime->allocate_pool,
+				EFI_LOADER_DATA, size, &rom);
+
+		if (status != EFI_SUCCESS)
+			continue;
+
+		rom->data.type = SETUP_PCI;
+		rom->data.len = size - sizeof(struct setup_data);
+		rom->data.next = NULL;
+		rom->pcilen = pci->romsize;
+
+		status = efi_call_phys5(pci->pci.read, pci,
+					EfiPciIoWidthUint16, PCI_VENDOR_ID,
+					1, &(rom->vendor));
+
+		if (status != EFI_SUCCESS)
+			goto free_struct;
+
+		status = efi_call_phys5(pci->pci.read, pci,
+					EfiPciIoWidthUint16, PCI_DEVICE_ID,
+					1, &(rom->devid));
+
+		if (status != EFI_SUCCESS)
+			goto free_struct;
+
+		status = efi_call_phys5(pci->get_location, pci,
+					&(rom->segment), &(rom->bus),
+					&(rom->device), &(rom->function));
+
+		if (status != EFI_SUCCESS)
+			goto free_struct;
+
+		memcpy(rom->romdata, pci->romimage, pci->romsize);
+
+		if (data)
+			data->next = (uint64_t)rom;
+		else
+			params->hdr.setup_data = (uint64_t)rom;
+
+		data = (struct setup_data *)rom;
+
+		continue;
+free_struct:
+		efi_call_phys1(sys_table->boottime->free_pool, rom);
+	}
+
+free_handle:
+	efi_call_phys1(sys_table->boottime->free_pool, pci_handle);
+	return status;
+}
+
 /*
  * See if we have Graphics Output Protocol
  */
@@ -1023,6 +1139,8 @@ struct boot_params *efi_main(void *handle, efi_system_table_t *_table,
 
 	setup_graphics(boot_params);
 
+	setup_efi_pci(boot_params);
+
 	status = efi_call_phys3(sys_table->boottime->allocate_pool,
 				EFI_LOADER_DATA, sizeof(*gdt),
 				(void **)&gdt);
diff --git a/arch/x86/include/asm/bootparam.h b/arch/x86/include/asm/bootparam.h
index 2ad874c..92862cd 100644
--- a/arch/x86/include/asm/bootparam.h
+++ b/arch/x86/include/asm/bootparam.h
@@ -13,6 +13,7 @@
 #define SETUP_NONE			0
 #define SETUP_E820_EXT			1
 #define SETUP_DTB			2
+#define SETUP_PCI			3
 
 /* extensible setup data list node */
 struct setup_data {
diff --git a/arch/x86/include/asm/pci.h b/arch/x86/include/asm/pci.h
index df75d07..11491d1 100644
--- a/arch/x86/include/asm/pci.h
+++ b/arch/x86/include/asm/pci.h
@@ -171,4 +171,16 @@ cpumask_of_pcibus(const struct pci_bus *bus)
 }
 #endif
 
+struct pci_setup_rom {
+	struct setup_data data;
+	uint16_t vendor;
+	uint16_t devid;
+	uint64_t pcilen;
+	unsigned long segment;
+	unsigned long bus;
+	unsigned long device;
+	unsigned long function;
+	uint8_t romdata[0];
+};
+
 #endif /* _ASM_X86_PCI_H */
diff --git a/include/linux/efi.h b/include/linux/efi.h
index 103adc6..e4be085 100644
--- a/include/linux/efi.h
+++ b/include/linux/efi.h
@@ -196,6 +196,77 @@ typedef struct {
 	void *create_event_ex;
 } efi_boot_services_t;
 
+typedef enum {
+	EfiPciIoWidthUint8,
+	EfiPciIoWidthUint16,
+	EfiPciIoWidthUint32,
+	EfiPciIoWidthUint64,
+	EfiPciIoWidthFifoUint8,
+	EfiPciIoWidthFifoUint16,
+	EfiPciIoWidthFifoUint32,
+	EfiPciIoWidthFifoUint64,
+	EfiPciIoWidthFillUint8,
+	EfiPciIoWidthFillUint16,
+	EfiPciIoWidthFillUint32,
+	EfiPciIoWidthFillUint64,
+	EfiPciIoWidthMaximum
+} EFI_PCI_IO_PROTOCOL_WIDTH;
+
+typedef enum {
+	EfiPciIoAttributeOperationGet,
+	EfiPciIoAttributeOperationSet,
+	EfiPciIoAttributeOperationEnable,
+	EfiPciIoAttributeOperationDisable,
+	EfiPciIoAttributeOperationSupported,
+	EfiPciIoAttributeOperationMaximum
+} EFI_PCI_IO_PROTOCOL_ATTRIBUTE_OPERATION;
+
+
+typedef struct {
+	void *read;
+	void *write;
+} efi_pci_io_protocol_access_t;
+
+typedef struct {
+	void *poll_mem;
+	void *poll_io;
+	efi_pci_io_protocol_access_t mem;
+	efi_pci_io_protocol_access_t io;
+	efi_pci_io_protocol_access_t pci;
+	void *copy_mem;
+	void *map;
+	void *unmap;
+	void *allocate_buffer;
+	void *free_buffer;
+	void *flush;
+	void *get_location;
+	void *attributes;
+	void *get_bar_attributes;
+	void *set_bar_attributes;
+	uint64_t romsize;
+	void *romimage;
+} efi_pci_io_protocol;
+
+#define EFI_PCI_IO_ATTRIBUTE_ISA_MOTHERBOARD_IO 0x0001
+#define EFI_PCI_IO_ATTRIBUTE_ISA_IO 0x0002
+#define EFI_PCI_IO_ATTRIBUTE_VGA_PALETTE_IO 0x0004
+#define EFI_PCI_IO_ATTRIBUTE_VGA_MEMORY 0x0008
+#define EFI_PCI_IO_ATTRIBUTE_VGA_IO 0x0010
+#define EFI_PCI_IO_ATTRIBUTE_IDE_PRIMARY_IO 0x0020
+#define EFI_PCI_IO_ATTRIBUTE_IDE_SECONDARY_IO 0x0040
+#define EFI_PCI_IO_ATTRIBUTE_MEMORY_WRITE_COMBINE 0x0080
+#define EFI_PCI_IO_ATTRIBUTE_IO 0x0100
+#define EFI_PCI_IO_ATTRIBUTE_MEMORY 0x0200
+#define EFI_PCI_IO_ATTRIBUTE_BUS_MASTER 0x0400
+#define EFI_PCI_IO_ATTRIBUTE_MEMORY_CACHED 0x0800
+#define EFI_PCI_IO_ATTRIBUTE_MEMORY_DISABLE 0x1000
+#define EFI_PCI_IO_ATTRIBUTE_EMBEDDED_DEVICE 0x2000
+#define EFI_PCI_IO_ATTRIBUTE_EMBEDDED_ROM 0x4000
+#define EFI_PCI_IO_ATTRIBUTE_DUAL_ADDRESS_CYCLE 0x8000
+#define EFI_PCI_IO_ATTRIBUTE_ISA_IO_16 0x10000
+#define EFI_PCI_IO_ATTRIBUTE_VGA_PALETTE_IO_16 0x20000
+#define EFI_PCI_IO_ATTRIBUTE_VGA_IO_16 0x40000
+
 /*
  * Types and defines for EFI ResetSystem
  */
-- 
1.7.10.4


^ permalink raw reply related	[flat|nested] 8+ messages in thread

* [PATCH 2/4] PCI: Add pcibios_add_device
  2012-07-26 22:02 efi, x86, pci: Improve graphics support on some Apple hardware Matthew Garrett
  2012-07-26 22:02 ` [PATCH 1/4] EFI: Stash ROMs if they're not in the PCI BAR Matthew Garrett
@ 2012-07-26 22:02 ` Matthew Garrett
  2012-07-26 22:02 ` [PATCH 3/4] PCI: Add support for non-BAR ROMs Matthew Garrett
                   ` (2 subsequent siblings)
  4 siblings, 0 replies; 8+ messages in thread
From: Matthew Garrett @ 2012-07-26 22:02 UTC (permalink / raw)
  To: matt.fleming
  Cc: linux-efi, linux-kernel, x86, linux-pci, bhelgaas,
	Matthew Garrett

Platforms may want to provide architecture-specific functionality during
PCI enumeration. Add a pcibios_add_device() call that architectures can
override to do so.

Signed-off-by: Matthew Garrett <mjg@redhat.com>
---
 drivers/pci/bus.c   |    5 +++++
 drivers/pci/pci.c   |   13 +++++++++++++
 include/linux/pci.h |    1 +
 3 files changed, 19 insertions(+)

diff --git a/drivers/pci/bus.c b/drivers/pci/bus.c
index 4b0970b..e2f447e 100644
--- a/drivers/pci/bus.c
+++ b/drivers/pci/bus.c
@@ -166,6 +166,11 @@ int pci_bus_add_device(struct pci_dev *dev)
 	int retval;
 
 	pci_fixup_device(pci_fixup_final, dev);
+
+	retval = pcibios_add_device(dev);
+	if (retval)
+		return retval;
+
 	retval = device_add(&dev->dev);
 	if (retval)
 		return retval;
diff --git a/drivers/pci/pci.c b/drivers/pci/pci.c
index f3ea977..fec3a92 100644
--- a/drivers/pci/pci.c
+++ b/drivers/pci/pci.c
@@ -1385,6 +1385,19 @@ void pcim_pin_device(struct pci_dev *pdev)
 		dr->pinned = 1;
 }
 
+/*
+ * pcibios_add_device - provide arch specific hooks when adding device dev
+ * @dev: the PCI device being added
+ *
+ * Permits the platform to provide architecture specific functionality when
+ * devices are added. This is the default implementation. Architecture
+ * implementations can override this.
+ */
+int __weak pcibios_add_device(struct pci_dev *dev)
+{
+	return 0;
+}
+
 /**
  * pcibios_disable_device - disable arch specific PCI resources for device dev
  * @dev: the PCI device to disable
diff --git a/include/linux/pci.h b/include/linux/pci.h
index 5faa831..6a2625c 100644
--- a/include/linux/pci.h
+++ b/include/linux/pci.h
@@ -1582,6 +1582,7 @@ void pcibios_disable_device(struct pci_dev *dev);
 void pcibios_set_master(struct pci_dev *dev);
 int pcibios_set_pcie_reset_state(struct pci_dev *dev,
 				 enum pcie_reset_state state);
+int pcibios_add_device(struct pci_dev *dev);
 
 #ifdef CONFIG_PCI_MMCONFIG
 extern void __init pci_mmcfg_early_init(void);
-- 
1.7.10.4


^ permalink raw reply related	[flat|nested] 8+ messages in thread

* [PATCH 3/4] PCI: Add support for non-BAR ROMs
  2012-07-26 22:02 efi, x86, pci: Improve graphics support on some Apple hardware Matthew Garrett
  2012-07-26 22:02 ` [PATCH 1/4] EFI: Stash ROMs if they're not in the PCI BAR Matthew Garrett
  2012-07-26 22:02 ` [PATCH 2/4] PCI: Add pcibios_add_device Matthew Garrett
@ 2012-07-26 22:02 ` Matthew Garrett
  2012-07-27 15:11   ` Seth Forshee
  2012-07-26 22:02 ` [PATCH 4/4] X86: Use PCI setup data Matthew Garrett
  2012-07-27  3:59 ` efi, x86, pci: Improve graphics support on some Apple hardware Seth Forshee
  4 siblings, 1 reply; 8+ messages in thread
From: Matthew Garrett @ 2012-07-26 22:02 UTC (permalink / raw)
  To: matt.fleming
  Cc: linux-efi, linux-kernel, x86, linux-pci, bhelgaas,
	Matthew Garrett

Platforms may provide their own mechanisms for obtaining ROMs. Add support
for using data provided by the platform in that case.

Signed-off-by: Matthew Garrett <mjg@redhat.com>
---
 drivers/pci/rom.c   |    9 ++++++++-
 include/linux/pci.h |    2 ++
 2 files changed, 10 insertions(+), 1 deletion(-)

diff --git a/drivers/pci/rom.c b/drivers/pci/rom.c
index 48ebdb2..7ebaab6 100644
--- a/drivers/pci/rom.c
+++ b/drivers/pci/rom.c
@@ -126,6 +126,12 @@ void __iomem *pci_map_rom(struct pci_dev *pdev, size_t *size)
 		/* primary video rom always starts here */
 		start = (loff_t)0xC0000;
 		*size = 0x20000; /* cover C000:0 through E000:0 */
+	/*
+	 * Some devices may provide ROMs via a source other than the BAR
+	 */
+	} else if (pdev->rom && pdev->romlen) {
+		*size = pdev->romlen;
+		return phys_to_virt(pdev->rom);
 	} else {
 		if (res->flags &
 			(IORESOURCE_ROM_COPY | IORESOURCE_ROM_BIOS_COPY)) {
@@ -219,7 +225,8 @@ void pci_unmap_rom(struct pci_dev *pdev, void __iomem *rom)
 	if (res->flags & (IORESOURCE_ROM_COPY | IORESOURCE_ROM_BIOS_COPY))
 		return;
 
-	iounmap(rom);
+	if (!pdev->rom || !pdev->romlen)
+		iounmap(rom);
 
 	/* Disable again before continuing, leave enabled if pci=rom */
 	if (!(res->flags & (IORESOURCE_ROM_ENABLE | IORESOURCE_ROM_SHADOW)))
diff --git a/include/linux/pci.h b/include/linux/pci.h
index 6a2625c..2668bb9 100644
--- a/include/linux/pci.h
+++ b/include/linux/pci.h
@@ -355,6 +355,8 @@ struct pci_dev {
 	};
 	struct pci_ats	*ats;	/* Address Translation Service */
 #endif
+	void *rom; /* Physical pointer to ROM if it's not from the BAR */
+	size_t romlen; /* Length of ROM if it's not from the BAR */
 };
 
 static inline struct pci_dev *pci_physfn(struct pci_dev *dev)
-- 
1.7.10.4


^ permalink raw reply related	[flat|nested] 8+ messages in thread

* [PATCH 4/4] X86: Use PCI setup data
  2012-07-26 22:02 efi, x86, pci: Improve graphics support on some Apple hardware Matthew Garrett
                   ` (2 preceding siblings ...)
  2012-07-26 22:02 ` [PATCH 3/4] PCI: Add support for non-BAR ROMs Matthew Garrett
@ 2012-07-26 22:02 ` Matthew Garrett
  2012-07-27  3:59 ` efi, x86, pci: Improve graphics support on some Apple hardware Seth Forshee
  4 siblings, 0 replies; 8+ messages in thread
From: Matthew Garrett @ 2012-07-26 22:02 UTC (permalink / raw)
  To: matt.fleming
  Cc: linux-efi, linux-kernel, x86, linux-pci, bhelgaas,
	Matthew Garrett

EFI can provide PCI ROMs out of band via boot services, which may not be
available after boot. Add support for using the data handed off to us by
the boot stub or bootloader.

Signed-off-by: Matthew Garrett <mjg@redhat.com>
---
 arch/x86/pci/common.c |   33 +++++++++++++++++++++++++++++++++
 1 file changed, 33 insertions(+)

diff --git a/arch/x86/pci/common.c b/arch/x86/pci/common.c
index 720e973f..3d2752f 100644
--- a/arch/x86/pci/common.c
+++ b/arch/x86/pci/common.c
@@ -17,6 +17,7 @@
 #include <asm/io.h>
 #include <asm/smp.h>
 #include <asm/pci_x86.h>
+#include <asm/setup.h>
 
 unsigned int pci_probe = PCI_PROBE_BIOS | PCI_PROBE_CONF1 | PCI_PROBE_CONF2 |
 				PCI_PROBE_MMCONF;
@@ -608,6 +609,38 @@ unsigned int pcibios_assign_all_busses(void)
 	return (pci_probe & PCI_ASSIGN_ALL_BUSSES) ? 1 : 0;
 }
 
+int pcibios_add_device(struct pci_dev *dev)
+{
+	struct setup_data *data;
+	struct pci_setup_rom *rom;
+	u64 pa_data;
+
+	if (boot_params.hdr.version < 0x0209)
+		return 0;
+
+	pa_data = boot_params.hdr.setup_data;
+	while (pa_data) {
+		data = phys_to_virt(pa_data);
+
+		if (data->type == SETUP_PCI) {
+			rom = (struct pci_setup_rom *)data;
+
+			if ((pci_domain_nr(dev->bus) == rom->segment) &&
+			    (dev->bus->number == rom->bus) &&
+			    (PCI_SLOT(dev->devfn) == rom->device) &&
+			    (PCI_FUNC(dev->devfn) == rom->function) &&
+			    (dev->vendor == rom->vendor) &&
+			    (dev->device == rom->devid)) {
+				dev->rom = (void *)(pa_data +
+				      offsetof(struct pci_setup_rom, romdata));
+				dev->romlen = rom->pcilen;
+			}
+		}
+		pa_data = data->next;
+	}
+	return 0;
+}
+
 int pcibios_enable_device(struct pci_dev *dev, int mask)
 {
 	int err;
-- 
1.7.10.4


^ permalink raw reply related	[flat|nested] 8+ messages in thread

* Re: efi, x86, pci: Improve graphics support on some Apple hardware
  2012-07-26 22:02 efi, x86, pci: Improve graphics support on some Apple hardware Matthew Garrett
                   ` (3 preceding siblings ...)
  2012-07-26 22:02 ` [PATCH 4/4] X86: Use PCI setup data Matthew Garrett
@ 2012-07-27  3:59 ` Seth Forshee
  4 siblings, 0 replies; 8+ messages in thread
From: Seth Forshee @ 2012-07-27  3:59 UTC (permalink / raw)
  To: Matthew Garrett
  Cc: matt.fleming, linux-efi, linux-kernel, x86, linux-pci, bhelgaas

On Thu, Jul 26, 2012 at 06:02:45PM -0400, Matthew Garrett wrote:
> Some Apple machines only provide their video ROM via an EFI-specific mechanism
> and don't permit it to be retrieved from the BAR. Add infrastructure to stash
> it and provide access to drivers.

I've verified that these patches produce funtioning radeon graphics on
both the Macbook Pro 8,2 and Mac Mini 5,2 under native EFI boot.
Previously the radeon driver did not work on these machines due to
failure to locate the video ROM. So for the whole series:

Tested-by: Seth Forshee <seth.forshee@canonical.com>


^ permalink raw reply	[flat|nested] 8+ messages in thread

* Re: [PATCH 1/4] EFI: Stash ROMs if they're not in the PCI BAR
  2012-07-26 22:02 ` [PATCH 1/4] EFI: Stash ROMs if they're not in the PCI BAR Matthew Garrett
@ 2012-07-27 15:10   ` Seth Forshee
  0 siblings, 0 replies; 8+ messages in thread
From: Seth Forshee @ 2012-07-27 15:10 UTC (permalink / raw)
  To: Matthew Garrett
  Cc: matt.fleming, linux-efi, linux-kernel, x86, linux-pci, bhelgaas

On Thu, Jul 26, 2012 at 06:02:46PM -0400, Matthew Garrett wrote:
> +		rom->data.next = NULL;

Noticed today that I'm getting an "assignment makes integer from pointer
without a cast" warning from this line.


^ permalink raw reply	[flat|nested] 8+ messages in thread

* Re: [PATCH 3/4] PCI: Add support for non-BAR ROMs
  2012-07-26 22:02 ` [PATCH 3/4] PCI: Add support for non-BAR ROMs Matthew Garrett
@ 2012-07-27 15:11   ` Seth Forshee
  0 siblings, 0 replies; 8+ messages in thread
From: Seth Forshee @ 2012-07-27 15:11 UTC (permalink / raw)
  To: Matthew Garrett
  Cc: matt.fleming, linux-efi, linux-kernel, x86, linux-pci, bhelgaas

On Thu, Jul 26, 2012 at 06:02:48PM -0400, Matthew Garrett wrote:
> +		return phys_to_virt(pdev->rom);

This line is giving me a "makes integer from pointer without a cast"
warning.


^ permalink raw reply	[flat|nested] 8+ messages in thread

end of thread, other threads:[~2012-07-27 15:11 UTC | newest]

Thread overview: 8+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2012-07-26 22:02 efi, x86, pci: Improve graphics support on some Apple hardware Matthew Garrett
2012-07-26 22:02 ` [PATCH 1/4] EFI: Stash ROMs if they're not in the PCI BAR Matthew Garrett
2012-07-27 15:10   ` Seth Forshee
2012-07-26 22:02 ` [PATCH 2/4] PCI: Add pcibios_add_device Matthew Garrett
2012-07-26 22:02 ` [PATCH 3/4] PCI: Add support for non-BAR ROMs Matthew Garrett
2012-07-27 15:11   ` Seth Forshee
2012-07-26 22:02 ` [PATCH 4/4] X86: Use PCI setup data Matthew Garrett
2012-07-27  3:59 ` efi, x86, pci: Improve graphics support on some Apple hardware Seth Forshee

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).