hrev52032 adds 3 changesets to branch 'master'
old head: 32b50a8831a959ba74c0df7555301d7a92c381db
new head: abb59d7351c7ddb50c63c40430a82d94fa61917a
overview:
https://git.haiku-os.org/haiku/log/?qt=range&q=abb59d7351c7+%5E32b50a8831a9
----------------------------------------------------------------------------
b31cb92f29fe: 3rdparty/qtcreator: Support for multiple directories in one
project.
14ec6c8b23a5: intel_extreme: Remove some non-Haiku cases from device_ioctl.
abb59d7351c7: intel_extreme: Fix instances of user memory creation and access.
You still cannot boot to desktop under SMAP on intel_extreme, however,
as the agp_gart bus has not been patched properly. Doing so breaks the
intel_extreme accelerant, so more investigation is needed.
[ Augustin Cavalier <waddlesplash@xxxxxxxxx> ]
----------------------------------------------------------------------------
3 files changed, 29 insertions(+), 36 deletions(-)
3rdparty/qtcreator/create_project_file.sh | 21 ++++++++----
.../drivers/graphics/intel_extreme/device.cpp | 36 ++++++--------------
.../graphics/intel_extreme/intel_extreme.cpp | 8 ++---
############################################################################
Commit: b31cb92f29fe89eaca84d173d0f70d38bf0c6a3d
URL: https://git.haiku-os.org/haiku/commit/?id=b31cb92f29fe
Author: Augustin Cavalier <waddlesplash@xxxxxxxxx>
Date: Mon Jun 25 03:13:09 2018 UTC
3rdparty/qtcreator: Support for multiple directories in one project.
----------------------------------------------------------------------------
diff --git a/3rdparty/qtcreator/create_project_file.sh
b/3rdparty/qtcreator/create_project_file.sh
index ce9fb8a857..53f1b5d4ab 100755
--- a/3rdparty/qtcreator/create_project_file.sh
+++ b/3rdparty/qtcreator/create_project_file.sh
@@ -1,27 +1,34 @@
#!/bin/sh
-if [ "$#" -ne 2 ]; then
+if [ "$#" -lt 2 ]; then
echo "This script creates project files for Qt Creator to develop Haiku
with."
echo "It should only be used on a per-project basis, as Qt Creator is
too slow"
echo "when used on all of Haiku at once."
echo ""
echo "THIS SCRIPT *MUST* BE RUN FROM THE REPOSITORY ROOT."
echo ""
- echo "Usage: <script> <project name> <path to project root>"
- echo "e.g: create_project_file.sh Tracker src/kits/tracker/"
+ echo "Usage: <script> <project name> <path 1> <path 2> ..."
+ echo "e.g: create_project_file.sh Tracker src/kits/tracker/
src/apps/tracker/"
exit 1
fi
DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )"
NAME=$1
-ROOTDIR=$2
+ROOTDIRS=${@:2}
printf "// Add predefined macros for your project here. For example:\n//
#define THE_ANSWER 42\n" \
>$DIR/$NAME.config
printf "[General]\n" >$DIR/$NAME.creator
-# Build lists of files
-find $ROOTDIR -type f | sed "s@^@../../@" >$DIR/$NAME.files
-find $ROOTDIR -type d | sed "s@^@../../@" >$DIR/$NAME.includes
+# Clear the old file lists
+echo >$DIR/$NAME.files
+echo >$DIR/$NAME.includes
+
+# Build file lists
+for rootdir in $ROOTDIRS; do
+ find $rootdir -type f | sed "s@^@../../@" >>$DIR/$NAME.files
+ find $rootdir -type d | sed "s@^@../../@" >>$DIR/$NAME.includes
+done
find headers -type d | sed "s@^@../../@" >>$DIR/$NAME.includes
+
echo "Done. Project file: $DIR/$NAME.creator"
############################################################################
Commit: 14ec6c8b23a5a955bab0e60589fff7d316e94d53
URL: https://git.haiku-os.org/haiku/commit/?id=14ec6c8b23a5
Author: Augustin Cavalier <waddlesplash@xxxxxxxxx>
Date: Mon Jun 25 03:14:06 2018 UTC
intel_extreme: Remove some non-Haiku cases from device_ioctl.
----------------------------------------------------------------------------
diff --git a/src/add-ons/kernel/drivers/graphics/intel_extreme/device.cpp
b/src/add-ons/kernel/drivers/graphics/intel_extreme/device.cpp
index 12c6ef8849..fa60cff07e 100644
--- a/src/add-ons/kernel/drivers/graphics/intel_extreme/device.cpp
+++ b/src/add-ons/kernel/drivers/graphics/intel_extreme/device.cpp
@@ -1,5 +1,5 @@
/*
- * Copyright 2006-2009, Haiku, Inc. All Rights Reserved.
+ * Copyright 2006-2018, Haiku, Inc. All Rights Reserved.
* Distributed under the terms of the MIT License.
*
* Authors:
@@ -204,28 +204,18 @@ device_ioctl(void* data, uint32 op, void* buffer, size_t
bufferLength)
// needed for cloning
case INTEL_GET_DEVICE_NAME:
-#ifdef __HAIKU__
if (user_strlcpy((char* )buffer, gDeviceNames[info->id],
B_PATH_NAME_LENGTH) < B_OK)
return B_BAD_ADDRESS;
-#else
- strncpy((char* )buffer, gDeviceNames[info->id],
B_PATH_NAME_LENGTH);
- ((char* )buffer)[B_PATH_NAME_LENGTH - 1] = '\0';
-#endif
return B_OK;
// graphics mem manager
case INTEL_ALLOCATE_GRAPHICS_MEMORY:
{
intel_allocate_graphics_memory allocMemory;
-#ifdef __HAIKU__
if (user_memcpy(&allocMemory, buffer,
sizeof(intel_allocate_graphics_memory))
< B_OK)
return B_BAD_ADDRESS;
-#else
- memcpy(&allocMemory, buffer,
- sizeof(intel_allocate_graphics_memory));
-#endif
if (allocMemory.magic != INTEL_PRIVATE_DATA_MAGIC)
return B_BAD_VALUE;
@@ -235,14 +225,9 @@ device_ioctl(void* data, uint32 op, void* buffer, size_t
bufferLength)
&allocMemory.buffer_base);
if (status == B_OK) {
// copy result
-#ifdef __HAIKU__
if (user_memcpy(buffer, &allocMemory,
sizeof(intel_allocate_graphics_memory)) < B_OK)
return B_BAD_ADDRESS;
-#else
- memcpy(buffer, &allocMemory,
- sizeof(intel_allocate_graphics_memory));
-#endif
}
return status;
}
@@ -250,13 +235,9 @@ device_ioctl(void* data, uint32 op, void* buffer, size_t
bufferLength)
case INTEL_FREE_GRAPHICS_MEMORY:
{
intel_free_graphics_memory freeMemory;
-#ifdef __HAIKU__
if (user_memcpy(&freeMemory, buffer,
sizeof(intel_free_graphics_memory)) <
B_OK)
return B_BAD_ADDRESS;
-#else
- memcpy(&freeMemory, buffer,
sizeof(intel_free_graphics_memory));
-#endif
if (freeMemory.magic == INTEL_PRIVATE_DATA_MAGIC)
return intel_free_memory(*info,
freeMemory.buffer_base);
############################################################################
Revision: hrev52032
Commit: abb59d7351c7ddb50c63c40430a82d94fa61917a
URL: https://git.haiku-os.org/haiku/commit/?id=abb59d7351c7
Author: Augustin Cavalier <waddlesplash@xxxxxxxxx>
Date: Mon Jun 25 03:33:32 2018 UTC
intel_extreme: Fix instances of user memory creation and access.
You still cannot boot to desktop under SMAP on intel_extreme, however,
as the agp_gart bus has not been patched properly. Doing so breaks the
intel_extreme accelerant, so more investigation is needed.
----------------------------------------------------------------------------
diff --git a/src/add-ons/kernel/drivers/graphics/intel_extreme/device.cpp
b/src/add-ons/kernel/drivers/graphics/intel_extreme/device.cpp
index fa60cff07e..6a6fd701a0 100644
--- a/src/add-ons/kernel/drivers/graphics/intel_extreme/device.cpp
+++ b/src/add-ons/kernel/drivers/graphics/intel_extreme/device.cpp
@@ -186,18 +186,23 @@ device_ioctl(void* data, uint32 op, void* buffer, size_t
bufferLength)
switch (op) {
case B_GET_ACCELERANT_SIGNATURE:
- strcpy((char*)buffer, INTEL_ACCELERANT_NAME);
TRACE("accelerant: %s\n", INTEL_ACCELERANT_NAME);
+ if (user_strlcpy((char*)buffer, INTEL_ACCELERANT_NAME,
+ B_FILE_NAME_LENGTH) < B_OK)
+ return B_BAD_ADDRESS;
return B_OK;
// needed to share data between kernel and accelerant
case INTEL_GET_PRIVATE_DATA:
{
- intel_get_private_data* data = (intel_get_private_data*
)buffer;
+ intel_get_private_data data;
+ if (user_memcpy(&data, buffer,
sizeof(intel_get_private_data)) < B_OK)
+ return B_BAD_ADDRESS;
- if (data->magic == INTEL_PRIVATE_DATA_MAGIC) {
- data->shared_info_area = info->shared_area;
- return B_OK;
+ if (data.magic == INTEL_PRIVATE_DATA_MAGIC) {
+ data.shared_info_area = info->shared_area;
+ return user_memcpy(buffer, &data,
+ sizeof(intel_get_private_data));
}
break;
}
diff --git
a/src/add-ons/kernel/drivers/graphics/intel_extreme/intel_extreme.cpp
b/src/add-ons/kernel/drivers/graphics/intel_extreme/intel_extreme.cpp
index 3ff213d82e..cb4159a8dc 100644
--- a/src/add-ons/kernel/drivers/graphics/intel_extreme/intel_extreme.cpp
+++ b/src/add-ons/kernel/drivers/graphics/intel_extreme/intel_extreme.cpp
@@ -212,8 +212,8 @@ init_interrupt_handler(intel_info &info)
// Find the right interrupt vector, using MSIs if available.
info.irq = 0xff;
- info.use_msi = false;
- if (info.pci->u.h0.interrupt_pin != 0x00)
+ info.use_msi = false;
+ if (info.pci->u.h0.interrupt_pin != 0x00)
info.irq = info.pci->u.h0.interrupt_line;
if (gPCIx86Module != NULL && gPCIx86Module->get_msi_count(info.pci->bus,
info.pci->device, info.pci->function) >= 1) {
@@ -316,7 +316,7 @@ intel_extreme_init(intel_info &info)
info.shared_area = sharedCreator.Create("intel extreme shared info",
(void**)&info.shared_info, B_ANY_KERNEL_ADDRESS,
ROUND_TO_PAGE_SIZE(sizeof(intel_shared_info)) + 3 * B_PAGE_SIZE,
- B_FULL_LOCK, 0);
+ B_FULL_LOCK, B_KERNEL_READ_AREA | B_KERNEL_WRITE_AREA |
B_USER_CLONEABLE_AREA);
if (info.shared_area < B_OK) {
ERROR("error: could not create shared area!\n");
gGART->unmap_aperture(info.aperture);
@@ -484,7 +484,7 @@ intel_extreme_init(intel_info &info)
status_t status = intel_allocate_memory(info, B_PAGE_SIZE, 0,
intel_uses_physical_overlay(*info.shared_info)
? B_APERTURE_NEED_PHYSICAL : 0,
- (addr_t*)&info.overlay_registers,
+ (addr_t*)&info.overlay_registers,
&info.shared_info->physical_overlay_registers);
if (status == B_OK) {
info.shared_info->overlay_offset =
(addr_t)info.overlay_registers