mirror of
https://codeberg.org/libreboot/lbmk.git
synced 2026-07-14 07:19:40 +02:00
81dc1a7f89
NOTE: gfxterm_menu module removed, because of this change by upstream: commit ca2a91f43bf6e1df23a07c295534f871ddf2d401 Author: Glenn Washburn <development@efficientek.com> Date: Mon May 5 16:11:36 2025 -0500 tests: Disable gfxterm_menu and cmdline_cat tests This brings in the following changes from upstream: * a68a7dece loader/i386/pc/linux: Fix resource leak * de80acf36 loader/efi/linux: Unload previous Linux kernel/initrd before updating kernel size * 249db11d8 loader/efi/linux: Correctly terminate load_options member * f3b339af1 loader/efi/linux: Use sizeof() instead of constant * c2b2e0dcf loader/efi/linux: Use proper type for len variable * de4e8e2aa loader/efi/linux: Do not pass excessive size for source string * 8c8f96664 loader/efi/linux: Remove useless assignment * 8ebf155af include/grub/charset.h: Update documentation * 2f2ed28d5 Revert "lzma: Make sure we don't dereference past array" * 2539ede82 tests/util/grub-shell: Correct netboot and file_filter test failure * 8c2d4e64f normal/charset: Fix underflow and overflow in loop init * ba8eadde6 dl: Provide a fake grub_dl_set_persistent() and grub_dl_is_persistent() for the emu target * 409e72ced util/grub-protect: Correct uninit "err" variable * 5eca564b1 gnulib: Bring back the fix for resolving unused variable issue * ac1512b87 gnulib: Add patch to allow GRUB w/GCC-15 compile * db506b3b8 gnulib/regexec: Fix resource leak * bba7dd736 gnulib/regcomp: Fix resource leak * 91cb7ff6b tests/tpm2_key_protector_test: Add tests for SHA-384 PCR bank * 451e227e5 tpm2_key_protector: Dump the PCR bank for key unsealing * 11caacdb2 util/grub-protect: Fix the hash algorithm of PCR digest * ce23919ca build: Add new header files to dist to allow building from tar * e3b15bafd build: Remove extra_deps.lst from EXTRA_DIST * 40e261b89 lib/LzmaEnc: Validate "len" before subtracting * 86e8f2c4b osdep/unix/hostdisk: Fix signed integer overflow * 438f05581 disk/luks2: Add attempting to decrypt message to align with luks and geli modules * 20e6d0c4a osdep/linux/getroot: Detect DDF container similar to IMSM * b71bc0f8b fs/fshelp: Avoid possible NULL pointer deference * 272ff81cb fs/ntfs: Correct possible infinite loops/hangs * 8c95307a0 fs/ntfs: Correct possible access violations * 06914b614 fs/ntfs: Correct attribute vs attribute list validation * 0e1762c8a fs/ntfs: Correct regression with run list calculation * be303f8c1 lib/envblk: Ignore empty new lines while parsing env files * 34bd00ee2 fs/zfs: Fix another memory leak in ZFS code * ca2a91f43 tests: Disable gfxterm_menu and cmdline_cat tests Signed-off-by: Leah Rowe <leah@libreboot.org>
122 lines
3.8 KiB
Diff
122 lines
3.8 KiB
Diff
From ea5081844c3112b582f52360cfb14ef95b56f5e1 Mon Sep 17 00:00:00 2001
|
|
From: Patrick Rudolph <patrick.rudolph@9elements.com>
|
|
Date: Sun, 15 Nov 2020 19:51:42 +0100
|
|
Subject: [PATCH 17/26] grub-core/bus/usb: Add function pointer for
|
|
attach/detach events
|
|
|
|
The xHCI code needs to be called for attaching or detaching a device.
|
|
Introduce two functions pointers and call it from the USB hub code.
|
|
|
|
Will be used in future commits, currently this doesn't change any functionality.
|
|
|
|
Signed-off-by: Patrick Rudolph <patrick.rudolph@9elements.com>
|
|
---
|
|
grub-core/bus/usb/ehci.c | 2 ++
|
|
grub-core/bus/usb/ohci.c | 2 ++
|
|
grub-core/bus/usb/uhci.c | 2 ++
|
|
grub-core/bus/usb/usbhub.c | 19 +++++++++++++++++++
|
|
include/grub/usb.h | 4 ++++
|
|
5 files changed, 29 insertions(+)
|
|
|
|
diff --git a/grub-core/bus/usb/ehci.c b/grub-core/bus/usb/ehci.c
|
|
index 2db07c7c0..1ee056015 100644
|
|
--- a/grub-core/bus/usb/ehci.c
|
|
+++ b/grub-core/bus/usb/ehci.c
|
|
@@ -1812,6 +1812,8 @@ static struct grub_usb_controller_dev usb_controller = {
|
|
.hubports = grub_ehci_hubports,
|
|
.portstatus = grub_ehci_portstatus,
|
|
.detect_dev = grub_ehci_detect_dev,
|
|
+ .attach_dev = NULL,
|
|
+ .detach_dev = NULL,
|
|
/* estimated max. count of TDs for one bulk transfer */
|
|
.max_bulk_tds = GRUB_EHCI_N_TD * 3 / 4
|
|
};
|
|
diff --git a/grub-core/bus/usb/ohci.c b/grub-core/bus/usb/ohci.c
|
|
index 5363a61f6..7a3f3e154 100644
|
|
--- a/grub-core/bus/usb/ohci.c
|
|
+++ b/grub-core/bus/usb/ohci.c
|
|
@@ -1440,6 +1440,8 @@ static struct grub_usb_controller_dev usb_controller =
|
|
.hubports = grub_ohci_hubports,
|
|
.portstatus = grub_ohci_portstatus,
|
|
.detect_dev = grub_ohci_detect_dev,
|
|
+ .attach_dev = NULL,
|
|
+ .detach_dev = NULL,
|
|
/* estimated max. count of TDs for one bulk transfer */
|
|
.max_bulk_tds = GRUB_OHCI_TDS * 3 / 4
|
|
};
|
|
diff --git a/grub-core/bus/usb/uhci.c b/grub-core/bus/usb/uhci.c
|
|
index 0fdea4c1e..03c4605b2 100644
|
|
--- a/grub-core/bus/usb/uhci.c
|
|
+++ b/grub-core/bus/usb/uhci.c
|
|
@@ -845,6 +845,8 @@ static struct grub_usb_controller_dev usb_controller =
|
|
.hubports = grub_uhci_hubports,
|
|
.portstatus = grub_uhci_portstatus,
|
|
.detect_dev = grub_uhci_detect_dev,
|
|
+ .attach_dev = NULL,
|
|
+ .detach_dev = NULL,
|
|
/* estimated max. count of TDs for one bulk transfer */
|
|
.max_bulk_tds = N_TD * 3 / 4
|
|
};
|
|
diff --git a/grub-core/bus/usb/usbhub.c b/grub-core/bus/usb/usbhub.c
|
|
index 2ae29cba1..8e963e84b 100644
|
|
--- a/grub-core/bus/usb/usbhub.c
|
|
+++ b/grub-core/bus/usb/usbhub.c
|
|
@@ -66,6 +66,15 @@ grub_usb_hub_add_dev (grub_usb_controller_t controller,
|
|
dev->split_hubport = split_hubport;
|
|
dev->split_hubaddr = split_hubaddr;
|
|
|
|
+ if (controller->dev->attach_dev) {
|
|
+ err = controller->dev->attach_dev (controller, dev);
|
|
+ if (err)
|
|
+ {
|
|
+ grub_free (dev);
|
|
+ return NULL;
|
|
+ }
|
|
+ }
|
|
+
|
|
err = grub_usb_device_initialize (dev);
|
|
if (err)
|
|
{
|
|
@@ -405,6 +414,8 @@ static void
|
|
detach_device (grub_usb_device_t dev)
|
|
{
|
|
unsigned i;
|
|
+ grub_usb_err_t err;
|
|
+
|
|
int k;
|
|
if (!dev)
|
|
return;
|
|
@@ -425,6 +436,14 @@ detach_device (grub_usb_device_t dev)
|
|
if (inter && inter->detach_hook)
|
|
inter->detach_hook (dev, i, k);
|
|
}
|
|
+ if (dev->controller.dev->detach_dev) {
|
|
+ err = dev->controller.dev->detach_dev (&dev->controller, dev);
|
|
+ if (err)
|
|
+ {
|
|
+ // XXX
|
|
+ }
|
|
+ }
|
|
+
|
|
grub_usb_devs[dev->addr] = 0;
|
|
}
|
|
|
|
diff --git a/include/grub/usb.h b/include/grub/usb.h
|
|
index ea6ee8c2c..4dd179db2 100644
|
|
--- a/include/grub/usb.h
|
|
+++ b/include/grub/usb.h
|
|
@@ -126,6 +126,10 @@ struct grub_usb_controller_dev
|
|
|
|
grub_usb_speed_t (*detect_dev) (grub_usb_controller_t dev, int port, int *changed);
|
|
|
|
+ grub_usb_err_t (*attach_dev) (grub_usb_controller_t ctrl, grub_usb_device_t dev);
|
|
+
|
|
+ grub_usb_err_t (*detach_dev) (grub_usb_controller_t ctrl, grub_usb_device_t dev);
|
|
+
|
|
/* Per controller flag - port reset pending, don't do another reset */
|
|
grub_uint64_t pending_reset;
|
|
|
|
--
|
|
2.39.5
|
|
|