forked from pool/grub2
Accepting request 593042 from home:michael-chang:branches:Base:System
- Fix Nvidia GPU in legacy I/O slot 2 disappears during system startup (bsc#1082914) * 0001-Fix-PCIe-LER-when-GRUB2-accesses-non-enabled-MMIO-da.patch - Fix packed-not-aligned error on GCC 8 (bsc#1084632) * 0001-Fix-packed-not-aligned-error-on-GCC-8.patch OBS-URL: https://build.opensuse.org/request/show/593042 OBS-URL: https://build.opensuse.org/package/show/Base:System/grub2?expand=0&rev=296
This commit is contained in:
parent
bcd92bd3f1
commit
a0de87febe
@ -0,0 +1,46 @@
|
||||
From 2f06e09673e48f6a91486a8ad38f45c160d537fe Mon Sep 17 00:00:00 2001
|
||||
From: "mike.travis@hpe.com" <mike.travis@hpe.com>
|
||||
Date: Wed, 28 Mar 2018 11:42:18 -0500
|
||||
Subject: Fix PCIe LER when GRUB2 accesses non-enabled MMIO data from VGA
|
||||
|
||||
A GPU inserted into a PCIe I/O slot disappears during system startup.
|
||||
The problem centers around GRUB and a specific VGA init function in
|
||||
efi_uga.c. This causes an LER (link error recorvery) because the MMIO
|
||||
memory has not been enabled before attempting access.
|
||||
|
||||
The fix is to add the same coding used in other VGA drivers, specifically
|
||||
to add a check to insure that it is indeed a VGA controller. And then
|
||||
enable the MMIO address space with the specific bits.
|
||||
|
||||
Signed-off-by: Mike Travis <mike.travis@hpe.com>
|
||||
---
|
||||
grub-core/video/efi_uga.c | 11 ++++++++++-
|
||||
1 file changed, 10 insertions(+), 1 deletion(-)
|
||||
|
||||
diff --git a/grub-core/video/efi_uga.c b/grub-core/video/efi_uga.c
|
||||
index 464ede874..32ef7efbc 100644
|
||||
--- a/grub-core/video/efi_uga.c
|
||||
+++ b/grub-core/video/efi_uga.c
|
||||
@@ -95,9 +95,18 @@ find_card (grub_pci_device_t dev, grub_pci_id_t pciid, void *data)
|
||||
{
|
||||
struct find_framebuf_ctx *ctx = data;
|
||||
grub_pci_address_t addr;
|
||||
+ grub_pci_address_t rcaddr;
|
||||
+ grub_uint32_t subclass;
|
||||
|
||||
addr = grub_pci_make_address (dev, GRUB_PCI_REG_CLASS);
|
||||
- if (grub_pci_read (addr) >> 24 == 0x3)
|
||||
+ subclass = (grub_pci_read (addr) >> 16) & 0xffff;
|
||||
+ if (subclass != GRUB_PCI_CLASS_SUBCLASS_VGA)
|
||||
+ return 0;
|
||||
+
|
||||
+ /* Enable MEM address spaces */
|
||||
+ rcaddr = grub_pci_make_address (dev, GRUB_PCI_REG_COMMAND);
|
||||
+ grub_pci_write_word (rcaddr, grub_pci_read_word (rcaddr) | GRUB_PCI_COMMAND_MEM_ENABLED);
|
||||
+
|
||||
{
|
||||
int i;
|
||||
|
||||
--
|
||||
2.13.6
|
||||
|
67
0001-Fix-packed-not-aligned-error-on-GCC-8.patch
Normal file
67
0001-Fix-packed-not-aligned-error-on-GCC-8.patch
Normal file
@ -0,0 +1,67 @@
|
||||
From 721f75ff7de467717658d2de9c20bbb18145790a Mon Sep 17 00:00:00 2001
|
||||
From: Michael Chang <mchang@suse.com>
|
||||
Date: Mon, 26 Mar 2018 16:52:34 +0800
|
||||
Subject: Fix packed-not-aligned error on GCC 8
|
||||
|
||||
When building with GCC 8, there are several errors regarding packed-not-aligned.
|
||||
|
||||
./include/grub/gpt_partition.h:79:1: error: alignment 1 of 'struct grub_gpt_partentry' is less than 8 [-Werror=packed-not-aligned]
|
||||
|
||||
This patch tries to fix the build error by cleaning up the ambiguity of placing
|
||||
aligned structure in a packed one. In "struct grub_btrfs_time" and "struct
|
||||
grub_gpt_part_type", the aligned attribute seems to be superfluous, and also
|
||||
has to be packed, to ensure the structure is bit-to-bit mapped to the format
|
||||
laid on disk. I think we could blame to copy and paste error here for the
|
||||
mistake. In "struct efi_variable", we have to use grub_efi_packed_guid_t, as
|
||||
the name suggests. :)
|
||||
|
||||
Signed-off-by: Michael Chang <mchang@suse.com>
|
||||
Tested-by: Michael Chang <mchang@suse.com>
|
||||
---
|
||||
grub-core/fs/btrfs.c | 2 +-
|
||||
include/grub/efiemu/runtime.h | 2 +-
|
||||
include/grub/gpt_partition.h | 2 +-
|
||||
3 files changed, 3 insertions(+), 3 deletions(-)
|
||||
|
||||
diff --git a/grub-core/fs/btrfs.c b/grub-core/fs/btrfs.c
|
||||
index 4849c1ceb..be195448d 100644
|
||||
--- a/grub-core/fs/btrfs.c
|
||||
+++ b/grub-core/fs/btrfs.c
|
||||
@@ -175,7 +175,7 @@ struct grub_btrfs_time
|
||||
{
|
||||
grub_int64_t sec;
|
||||
grub_uint32_t nanosec;
|
||||
-} __attribute__ ((aligned (4)));
|
||||
+} GRUB_PACKED;
|
||||
|
||||
struct grub_btrfs_inode
|
||||
{
|
||||
diff --git a/include/grub/efiemu/runtime.h b/include/grub/efiemu/runtime.h
|
||||
index 9b6b729f4..36d2dedf4 100644
|
||||
--- a/include/grub/efiemu/runtime.h
|
||||
+++ b/include/grub/efiemu/runtime.h
|
||||
@@ -29,7 +29,7 @@ struct grub_efiemu_ptv_rel
|
||||
|
||||
struct efi_variable
|
||||
{
|
||||
- grub_efi_guid_t guid;
|
||||
+ grub_efi_packed_guid_t guid;
|
||||
grub_uint32_t namelen;
|
||||
grub_uint32_t size;
|
||||
grub_efi_uint32_t attributes;
|
||||
diff --git a/include/grub/gpt_partition.h b/include/grub/gpt_partition.h
|
||||
index 1b32f6725..9668a68c3 100644
|
||||
--- a/include/grub/gpt_partition.h
|
||||
+++ b/include/grub/gpt_partition.h
|
||||
@@ -28,7 +28,7 @@ struct grub_gpt_part_type
|
||||
grub_uint16_t data2;
|
||||
grub_uint16_t data3;
|
||||
grub_uint8_t data4[8];
|
||||
-} __attribute__ ((aligned(8)));
|
||||
+} GRUB_PACKED;
|
||||
typedef struct grub_gpt_part_type grub_gpt_part_type_t;
|
||||
|
||||
#define GRUB_GPT_PARTITION_TYPE_EMPTY \
|
||||
--
|
||||
2.13.6
|
||||
|
@ -1,3 +1,16 @@
|
||||
-------------------------------------------------------------------
|
||||
Mon Apr 2 08:30:05 UTC 2018 - mchang@suse.com
|
||||
|
||||
- Fix Nvidia GPU in legacy I/O slot 2 disappears during system
|
||||
startup (bsc#1082914)
|
||||
* 0001-Fix-PCIe-LER-when-GRUB2-accesses-non-enabled-MMIO-da.patch
|
||||
|
||||
-------------------------------------------------------------------
|
||||
Fri Mar 30 09:16:06 UTC 2018 - mchang@suse.com
|
||||
|
||||
- Fix packed-not-aligned error on GCC 8 (bsc#1084632)
|
||||
* 0001-Fix-packed-not-aligned-error-on-GCC-8.patch
|
||||
|
||||
-------------------------------------------------------------------
|
||||
Mon Mar 26 11:37:13 UTC 2018 - msuchanek@suse.com
|
||||
|
||||
|
@ -214,6 +214,8 @@ Patch82: grub2-diskfilter-support-pv-without-metadatacopies.patch
|
||||
Patch83: grub2-efi-uga-64bit-fb.patch
|
||||
Patch84: grub2-s390x-09-improve-zipl-setup.patch
|
||||
Patch85: grub2-getroot-scan-disk-pv.patch
|
||||
Patch86: 0001-Fix-packed-not-aligned-error-on-GCC-8.patch
|
||||
Patch87: 0001-Fix-PCIe-LER-when-GRUB2-accesses-non-enabled-MMIO-da.patch
|
||||
# Btrfs snapshot booting related patches
|
||||
Patch101: grub2-btrfs-01-add-ability-to-boot-from-subvolumes.patch
|
||||
Patch102: grub2-btrfs-02-export-subvolume-envvars.patch
|
||||
@ -493,6 +495,8 @@ swap partition while in resuming
|
||||
%patch83 -p1
|
||||
%patch84 -p1
|
||||
%patch85 -p1
|
||||
%patch86 -p1
|
||||
%patch87 -p1
|
||||
%patch101 -p1
|
||||
%patch102 -p1
|
||||
%patch103 -p1
|
||||
|
Loading…
Reference in New Issue
Block a user